diff --git a/packages/@react-spectrum/s2/src/Avatar.tsx b/packages/@react-spectrum/s2/src/Avatar.tsx index e816cdbfcc6..19935ea2488 100644 --- a/packages/@react-spectrum/s2/src/Avatar.tsx +++ b/packages/@react-spectrum/s2/src/Avatar.tsx @@ -17,6 +17,7 @@ import {DOMProps, DOMRef, DOMRefValue} from '@react-types/shared'; import {filterDOMProps} from '@react-aria/utils'; import {getAllowedOverrides, StylesPropWithoutWidth, UnsafeStyles} from './style-utils' with {type: 'macro'}; import {Image} from './Image'; +import {isDocsEnv} from './macros' with {type: 'macro'}; import {style} from '../style' with { type: 'macro' }; import {useDOMRef} from '@react-spectrum/utils'; import {useSpectrumContextProps} from './useSpectrumContextProps'; @@ -77,7 +78,7 @@ export const Avatar = forwardRef(function Avatar(props: AvatarProps, ref: DOMRef const domProps = filterDOMProps(otherProps); // In the docs build, we need to be able to simulate font scaling. - let remSize = process.env.DOCS_ENV ? `calc(${size / 16} * var(--rem, 1rem))` : `${size / 16}rem`; + let remSize = isDocsEnv() ? `calc(${size / 16} * var(--rem, 1rem))` : `${size / 16}rem`; let isLarge = size >= 64; return ( + {srcProp.map((source, i) => { let {colorScheme: sourceColorScheme, ...sourceProps} = source; if (sourceColorScheme) { diff --git a/packages/@react-spectrum/s2/src/macros.ts b/packages/@react-spectrum/s2/src/macros.ts new file mode 100644 index 00000000000..25e97ac59ad --- /dev/null +++ b/packages/@react-spectrum/s2/src/macros.ts @@ -0,0 +1,15 @@ +/* + * Copyright 2025 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +export function isDocsEnv(): boolean { + return !!process.env.DOCS_ENV; +} diff --git a/packages/dev/docs/pages/react-aria/home/ExampleApp.tsx b/packages/dev/docs/pages/react-aria/home/ExampleApp.tsx index 5fdeae863f8..8ee6bd62a7f 100644 --- a/packages/dev/docs/pages/react-aria/home/ExampleApp.tsx +++ b/packages/dev/docs/pages/react-aria/home/ExampleApp.tsx @@ -209,7 +209,7 @@ export function ExampleApp(): React.ReactNode { - Columns @@ -222,7 +222,7 @@ export function ExampleApp(): React.ReactNode { - @@ -506,7 +506,7 @@ function PlantModal(props: ModalOverlayProps) { // Use position: absolute instead of fixed to avoid // being clipped to the "inner" viewport in iOS 26 className={({isEntering, isExiting}) => ` - absolute top-0 left-0 w-full h-(--page-height) isolate z-20 bg-black/[15%] backdrop-blur-lg + absolute top-0 left-0 w-full h-(--page-height) max-h-[5000px] isolate z-20 bg-black/[15%] backdrop-blur-lg ${isEntering ? 'animate-in fade-in duration-200 ease-out' : ''} ${isExiting ? 'animate-out fade-out duration-200 ease-in' : ''} `}> diff --git a/packages/dev/docs/pages/react-aria/home/components.tsx b/packages/dev/docs/pages/react-aria/home/components.tsx index 13329811e3c..6f26ba0d99a 100644 --- a/packages/dev/docs/pages/react-aria/home/components.tsx +++ b/packages/dev/docs/pages/react-aria/home/components.tsx @@ -10,7 +10,9 @@ * governing permissions and limitations under the License. */ import {ArrowRight} from 'lucide-react'; +import {BaseLink} from '@react-spectrum/s2-docs/src/Link'; import React, {ForwardedRef, HTMLAttributes, ReactNode} from 'react'; +import {twMerge} from 'tailwind-merge'; export function Window({children, className = '', isBackground = false, toolbar}: {children: ReactNode, className?: string, isBackground?: boolean, toolbar: ReactNode}): ReactNode { return ( @@ -33,7 +35,7 @@ export function FileTab({children, className = ''}: {children: ReactNode, classN } export function AddressBar({children}: {children: ReactNode}): ReactNode { - return
{children}
; + return
{children}
; } export function GradientText({children}: {children: ReactNode}): ReactNode { @@ -74,7 +76,7 @@ export function Arrow({href, children, textX, x1, x2, points, y, marker = 'marke ? : } - {children} + {children} ); } @@ -85,8 +87,8 @@ React.forwardRef((props: HTMLAttributes, ref: ForwardedRef; }); -export function LearnMoreLink({href, className}: {href: string, className: string}): ReactNode { - return Learn more; +export function LearnMoreLink({children, href, className}: {children?: string, href: string, className: string}): ReactNode { + return {children || 'Learn more'}; } export function Scrollable({children, className = ''}: {children: ReactNode, className?: string}): ReactNode { diff --git a/packages/dev/docs/pages/react-aria/home/home.css b/packages/dev/docs/pages/react-aria/home/home.css index 8be86213c8a..eff70a47920 100644 --- a/packages/dev/docs/pages/react-aria/home/home.css +++ b/packages/dev/docs/pages/react-aria/home/home.css @@ -14,33 +14,35 @@ @apply outline outline-0 outline-blue-600 dark:outline-blue-500 focus-visible:outline-2; } -body { +.home body { background: var(--page-bg); color-scheme: dark light; @apply [--page-bg:var(--color-zinc-50)] dark:[--page-bg:var(--color-zinc-900)]; } -.header-background { - @apply [--l:91%] [--c:0.11] dark:[--l:32%] dark:[--c:0.13]; - background: linear-gradient(to bottom, transparent 0% 80%, var(--page-bg)), - radial-gradient(circle at 50% 60%, transparent 0% 50%, var(--page-bg)), - conic-gradient(from 30deg at 50% 60%, - oklch(var(--l) var(--c) 220), - oklch(min(var(--l), 86%) var(--c) 260), - oklch(var(--l) var(--c) 300), - oklch(var(--l) var(--c) 340), - oklch(var(--l) var(--c) 0), - oklch(var(--l) var(--c) 40), - oklch(var(--l) var(--c) 60), - oklch(max(var(--l), 44%) var(--c) 100), - oklch(max(var(--l), 38%) var(--c) 140), - oklch(var(--l) var(--c) 180), - oklch(var(--l) var(--c) 220) - ); - background-repeat: no-repeat; -} - -main > section > h2 { +.home .header-background { + --pink: light-dark(oklch(from #DA8DE9 calc(l * 1.25) c h), oklch(from #BF67D0 calc(l * 0.9) c h)); + --orange: light-dark(#FACA85, oklch(from #EDB35F calc(l * 0.82) c h)); + --purple: light-dark(#EDE8FF, #6D33F7); + + background: + linear-gradient(to bottom, transparent 0% 80%, var(--page-bg)), + radial-gradient(50% 22% at 25% 72%, var(--pink), transparent), + radial-gradient(50% 22% at 62% 75%, var(--orange), transparent), + radial-gradient(150% 30% at 50% 70%, var(--purple), transparent), + linear-gradient(to bottom, transparent, light-dark(#EDE8FF, transparent) 60%, transparent); + + @media (width < 768px) { + background: + linear-gradient(to bottom, transparent 0% 87%, var(--page-bg)), + radial-gradient(100% 10% at 45% 71%, var(--pink), transparent), + radial-gradient(100% 10% at 55% 84%, var(--orange), transparent), + radial-gradient(150% 30% at 50% 70%, var(--purple), transparent), + linear-gradient(to bottom, transparent, light-dark(#EDE8FF, transparent) 60%, transparent); + } +} + +.home main > section > h2 { @apply text-4xl md:text-5xl font-semibold m-0 mb-4 pb-2 text-transparent; + p { @@ -49,19 +51,19 @@ main > section > h2 { } } -pre { +.home pre { margin: 0; } -.no-scrollbar::-webkit-scrollbar { +.home .no-scrollbar::-webkit-scrollbar { display: none; } -.no-scrollbar { +.home .no-scrollbar { scrollbar-width: none; } -:root { +.home { --hljs-color: theme(colors.gray.800); --hljs-background: transparent; --hljs-keyword-color: theme(colors.fuchsia.700); @@ -79,7 +81,7 @@ pre { } @media (prefers-color-scheme: dark) { - :root { + .home { --hljs-color: theme(colors.gray.300); --hljs-keyword-color: theme(colors.fuchsia.300); --hljs-section-color: theme(colors.red.400); @@ -95,38 +97,41 @@ pre { } } -pre .source { - @apply p-5 text-xs sm:text-sm min-h-[250px] h-full min-w-fit; +.home pre { font-family: source-code-pro, 'Source Code Pro', Monaco, monospace; } -pre.large { +.home pre .source { + @apply p-5 text-xs sm:text-sm min-h-[250px] h-full min-w-fit; +} + +.home pre.large { @apply hidden lg:block; } -pre.medium { +.home pre.medium { @apply hidden sm:block lg:hidden; } -pre.small { +.home pre.small { @apply sm:hidden } -.card-shadow { +.home .card-shadow { box-shadow: 0 0 2px rgb(0 0 0 / 12%), 0 3px 6px rgb(0 0 0 / 4%), 0 4px 8px 0 rgba(0 0 0 / 8%); outline: 1px solid transparent; /* WHCM */ @apply dark:border dark:border-zinc-200/10 dark:bg-clip-padding; } -.card-shadow-hover:hover { +.home .card-shadow-hover:hover { box-shadow: 0 0 2px rgb(0 0 0 / 18%), 0 3px 8px rgb(0 0 0 / 6%), 0 4px 16px 0 rgba(0 0 0 / 10%); } -.card-shadow-hover:focus-visible { +.home .card-shadow-hover:focus-visible { @apply focus-ring; } -.edge-mask { +.home .edge-mask { mask-image: linear-gradient(to right, transparent, white 8px calc(100% - 8px), transparent); } @@ -258,12 +263,12 @@ pre.small { } } -.iphone-frame { +.home .iphone-frame { background-image: url(../../assets/iphone-frame.webp); background-size: contain; } -.iphone-mask { +.home .iphone-mask { mask-image: url(../../assets/iphone-mask.webp), linear-gradient(#fff 0 0); mask-size: contain; mask-composite: exclude; @@ -297,12 +302,12 @@ pre.small { } } -.cross-fade { +.home .cross-fade { animation: cross-fade 5s infinite; mix-blend-mode: plus-lighter; } -.highlight-tags { +.home .highlight-tags { .tag:nth-child(1 of .tag), .tag:nth-child(n+4 of .tag):nth-child(-n+8 of .tag), .tag:nth-last-child(1 of .tag) { @@ -320,11 +325,11 @@ pre.small { } } -.code-mask { +.home .code-mask { mask: linear-gradient(to bottom, white 0% 70%, transparent); } -.cyan-gradient-background { +.home .cyan-gradient-background { --a: oklch(90% 0.05 200); --a-shape: ellipse 30% 23% at 30% 56%; --b: oklch(94% 0.09 175); @@ -337,7 +342,7 @@ pre.small { } @media (width < 768px) { - .cyan-gradient-background { + .home .cyan-gradient-background { --a-shape: circle 250px at 26% 65%; --b-shape: circle 250px at 73% 64%; --c-shape: circle 250px at 50% 70%; @@ -345,14 +350,14 @@ pre.small { } @media (prefers-color-scheme: dark) { - .cyan-gradient-background { + .home .cyan-gradient-background { --a: oklch(25% 0.1 200); --b: oklch(27% 0.1 175); --c: oklch(26% 0.08 218); } } -.blue-gradient-background { +.home .blue-gradient-background { --a: oklch(94% 0.08 250); --b: oklch(94% 0.12 275); --c: oklch(91% 0.15 290); @@ -362,32 +367,32 @@ pre.small { } @media (prefers-color-scheme: dark) { - .blue-gradient-background { + .home .blue-gradient-background { --a: oklch(25% 0.08 250); --b: oklch(25% 0.07 275); --c: oklch(28% 0.1 280); } } -.orange-gradient-background { +.home .orange-gradient-background { --color: oklch(96% 0.1 75); --shape: ellipse 50% 35% at 50% 58%; background: radial-gradient(var(--shape), var(--color), transparent); } @media (width < 1080px) { - .orange-gradient-background { + .home .orange-gradient-background { --shape: ellipse 60% 40% at 50% 63%; } } @media (prefers-color-scheme: dark) { - .orange-gradient-background { + .home .orange-gradient-background { --color: oklch(27% 0.09 71); } } -.red-gradient-background { +.home .red-gradient-background { --a: oklch(96% 0.1 350); --a-shape: ellipse 30% 30% at 29% 54%; --b: oklch(96% 0.11 6); @@ -400,7 +405,7 @@ pre.small { } @media (width < 768px) { - .red-gradient-background { + .home .red-gradient-background { --a-shape: circle 300px at 20% 72%; --b-shape: circle 300px at 50% 72%; --c-shape: circle 300px at 80% 72%; @@ -408,14 +413,14 @@ pre.small { } @media (prefers-color-scheme: dark) { - .red-gradient-background { + .home .red-gradient-background { --a: oklch(27% 0.11 350); --b: oklch(26% 0.11 6); --c: oklch(26% 0.1 20); } } -.pink-gradient-background { +.home .pink-gradient-background { --a: oklch(92% 0.11 300); --a-shape: ellipse 30% 30% at 29% 57%; --b: oklch(96% 0.11 320); @@ -428,7 +433,7 @@ pre.small { } @media (width < 768px) { - .pink-gradient-background { + .home .pink-gradient-background { --a-shape: circle 400px at 50% 40%; --b-shape: circle 400px at 50% 60%; --c-shape: circle 400px at 50% 80%; @@ -436,7 +441,7 @@ pre.small { } @media (prefers-color-scheme: dark) { - .pink-gradient-background { + .home .pink-gradient-background { --a: oklch(30% 0.11 300); --b: oklch(30% 0.11 320); --c: oklch(27% 0.1 340); @@ -444,7 +449,7 @@ pre.small { } -.green-gradient-background { +.home .green-gradient-background { --a: oklch(96% 0.1 120); --a-shape: ellipse 30% 30% at 29% 54%; --b: oklch(91% 0.12 140); @@ -457,7 +462,7 @@ pre.small { } @media (width < 768px) { - .green-gradient-background { + .home .green-gradient-background { --a-shape: circle 400px at 20% 63%; --b-shape: circle 400px at 50% 63%; --c-shape: circle 400px at 80% 63%; @@ -465,7 +470,7 @@ pre.small { } @media (prefers-color-scheme: dark) { - .green-gradient-background { + .home .green-gradient-background { --a: oklch(28% 0.1 130); --b: oklch(28% 0.12 145); --c: oklch(26% 0.06 150); diff --git a/packages/dev/s2-docs/.parcelrc-s2-docs b/packages/dev/s2-docs/.parcelrc-s2-docs index 26820460399..6440769442d 100644 --- a/packages/dev/s2-docs/.parcelrc-s2-docs +++ b/packages/dev/s2-docs/.parcelrc-s2-docs @@ -8,7 +8,7 @@ "docs:*.{js,ts,tsx,json}": ["parcel-transformer-docs", "@parcel/transformer-inline"], "docs-json:*.{js,ts,tsx,json}": ["parcel-transformer-docs"], "illustration:*.svg": ["@react-spectrum/parcel-transformer-s2-icon"], - "url:*.svg": ["@parcel/transformer-svg"], + "url:*.svg": ["@parcel/transformer-svg", "@parcel/transformer-raw"], "data-url:*.svg": ["@parcel/transformer-svg", "@parcel/transformer-inline-string"], "packages/@react-spectrum/s2/s2wf-icons/**/*.svg": ["@react-spectrum/parcel-transformer-s2-icon"], "packages/*/*/intl/*.json": ["parcel-transformer-intl"], diff --git a/packages/dev/s2-docs/assets/ReactAriaOpenGraph.webp b/packages/dev/s2-docs/assets/ReactAriaOpenGraph.webp index e93039f111d..23516cb7889 100644 Binary files a/packages/dev/s2-docs/assets/ReactAriaOpenGraph.webp and b/packages/dev/s2-docs/assets/ReactAriaOpenGraph.webp differ diff --git a/packages/dev/s2-docs/assets/favicon.ico b/packages/dev/s2-docs/assets/favicon.ico deleted file mode 100644 index 8f9fd41df6f..00000000000 Binary files a/packages/dev/s2-docs/assets/favicon.ico and /dev/null differ diff --git a/packages/dev/s2-docs/assets/internationalized.ico b/packages/dev/s2-docs/assets/internationalized.ico deleted file mode 100644 index 8aec276c938..00000000000 Binary files a/packages/dev/s2-docs/assets/internationalized.ico and /dev/null differ diff --git a/packages/dev/s2-docs/assets/react-aria-favicon.svg b/packages/dev/s2-docs/assets/react-aria-favicon.svg new file mode 100644 index 00000000000..c7a64003dfb --- /dev/null +++ b/packages/dev/s2-docs/assets/react-aria-favicon.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/dev/s2-docs/assets/react-aria.ico b/packages/dev/s2-docs/assets/react-aria.ico deleted file mode 100644 index f2df355f0df..00000000000 Binary files a/packages/dev/s2-docs/assets/react-aria.ico and /dev/null differ diff --git a/packages/dev/s2-docs/assets/rsp-favicon.svg b/packages/dev/s2-docs/assets/rsp-favicon.svg new file mode 100644 index 00000000000..d37852e085c --- /dev/null +++ b/packages/dev/s2-docs/assets/rsp-favicon.svg @@ -0,0 +1,5 @@ + + + diff --git a/packages/dev/s2-docs/package.json b/packages/dev/s2-docs/package.json index 49a7619da5b..adba8bf4fc0 100644 --- a/packages/dev/s2-docs/package.json +++ b/packages/dev/s2-docs/package.json @@ -3,7 +3,7 @@ "version": "1.0.0", "private": true, "scripts": { - "start": "parcel 'pages/**/*.mdx' --config .parcelrc-s2-docs", + "start": "DOCS_ENV=dev parcel 'pages/**/*.mdx' --config .parcelrc-s2-docs", "start:s2": "DOCS_ENV=dev LIBRARY=s2 parcel 'pages/s2/**/*.mdx' -p 4321 --config .parcelrc-s2-docs --dist-dir dist/s2 --cache-dir ../../../.parcel-cache/s2", "start:react-aria": "DOCS_ENV=dev LIBRARY=react-aria parcel 'pages/react-aria/**/*.mdx' -p 1234 --config .parcelrc-s2-docs --dist-dir dist/react-aria --cache-dir ../../../.parcel-cache/react-aria", "build": "yarn build:s2 --public-url $PUBLIC_URL && yarn build:react-aria --public-url $PUBLIC_URL", diff --git a/packages/dev/s2-docs/pages/WelcomeHeader.tsx b/packages/dev/s2-docs/pages/WelcomeHeader.tsx index d9228c53a2b..7e2467e45f0 100644 --- a/packages/dev/s2-docs/pages/WelcomeHeader.tsx +++ b/packages/dev/s2-docs/pages/WelcomeHeader.tsx @@ -56,17 +56,6 @@ export function LibraryCards() { Explore - - - {TAB_DEFS['internationalized'].icon} - - {TAB_DEFS['internationalized'].label} - {TAB_DEFS['internationalized'].description} - -
- Show Packages -
-
); } diff --git a/packages/dev/s2-docs/pages/react-aria/HomeHeader.tsx b/packages/dev/s2-docs/pages/react-aria/HomeHeader.tsx new file mode 100644 index 00000000000..d6b1af71e85 --- /dev/null +++ b/packages/dev/s2-docs/pages/react-aria/HomeHeader.tsx @@ -0,0 +1,149 @@ +'use client'; + +import {CSSProperties, useId, useRef, useState} from 'react'; +import SearchMenuTrigger, {preloadSearchMenu} from '@react-spectrum/s2-docs/src/SearchMenuTrigger'; +import {useLayoutEffect} from '@react-aria/utils'; +import {HeaderLink} from '@react-spectrum/s2-docs/src/Link'; +import { ReactAriaLogo } from '@react-spectrum/s2-docs/src/icons/ReactAriaLogo'; +import { space, style } from '@react-spectrum/s2/style' with {type: 'macro'}; +import GithubLogo from '@react-spectrum/s2-docs/src/icons/GithubLogo'; +import { NpmLogo } from '@react-spectrum/s2-docs/src/icons/NpmLogo'; + +export default function HomeHeader() { + const [searchOpen, setSearchOpen] = useState(false); + const searchMenuId = useId(); + let renderCallback = useRef<(() => void) | null>(null); + let iconRef = useRef(null); + let labelRef = useRef(null); + let searchRef = useRef(null); + + let openSearchMenu = async () => { + if (!document.startViewTransition) { + setSearchOpen((prev) => !prev); + return; + } + + // Preload SearchMenu so it is ready to render immediately. + await preloadSearchMenu(); + + // Don't transition the entire page. + document.documentElement.style.viewTransitionName = 'none'; + if (window.scrollY === 0) { + iconRef.current!.style.viewTransitionName = 'search-menu-icon'; + labelRef.current!.style.viewTransitionName = 'search-menu-label'; + searchRef.current!.style.viewTransitionName = 'search-menu-search-field'; + } + + let viewTransition = document.startViewTransition(() => { + // Wait until next render. Using flushSync causes flickering. + return new Promise(resolve => { + iconRef.current!.style.viewTransitionName = ''; + labelRef.current!.style.viewTransitionName = ''; + searchRef.current!.style.viewTransitionName = ''; + renderCallback.current = resolve; + setSearchOpen((prev) => !prev); + }); + }); + + viewTransition.finished.then(() => { + document.documentElement.style.viewTransitionName = ''; + }); + }; + + let closeSearchMenu = () => { + if (!document.startViewTransition) { + setSearchOpen(false); + return; + } + + document.documentElement.style.viewTransitionName = 'none'; + let viewTransition = document.startViewTransition(() => { + return new Promise(resolve => { + renderCallback.current = resolve; + setSearchOpen(false); + + if (window.scrollY === 0) { + iconRef.current!.style.viewTransitionName = 'search-menu-icon'; + labelRef.current!.style.viewTransitionName = 'search-menu-label'; + searchRef.current!.style.viewTransitionName = 'search-menu-search-field'; + } + }); + }); + + viewTransition.finished.then(() => { + document.documentElement.style.viewTransitionName = ''; + iconRef.current!.style.viewTransitionName = ''; + labelRef.current!.style.viewTransitionName = ''; + searchRef.current!.style.viewTransitionName = ''; + }); + }; + + useLayoutEffect(() => { + renderCallback.current?.(); + renderCallback.current = null; + }); + + return ( + + ); +} diff --git a/packages/dev/s2-docs/pages/react-aria/assets/website.mp4 b/packages/dev/s2-docs/pages/react-aria/assets/website.mp4 new file mode 100644 index 00000000000..ee3840123e4 Binary files /dev/null and b/packages/dev/s2-docs/pages/react-aria/assets/website.mp4 differ diff --git a/packages/dev/s2-docs/pages/react-aria/examples/plants/App.tsx b/packages/dev/s2-docs/pages/react-aria/examples/plants/App.tsx index f3d152ca4d1..8bffeb63f4d 100644 --- a/packages/dev/s2-docs/pages/react-aria/examples/plants/App.tsx +++ b/packages/dev/s2-docs/pages/react-aria/examples/plants/App.tsx @@ -167,7 +167,7 @@ export default function App(): React.ReactNode { {/* Columns */} - Columns @@ -181,7 +181,7 @@ export default function App(): React.ReactNode { - diff --git a/packages/dev/s2-docs/pages/react-aria/index.mdx b/packages/dev/s2-docs/pages/react-aria/index.mdx index d73168747cb..f27c63ac710 100644 --- a/packages/dev/s2-docs/pages/react-aria/index.mdx +++ b/packages/dev/s2-docs/pages/react-aria/index.mdx @@ -1,4 +1,4 @@ -import '../../tailwind/home.global.css'; +import '../../tailwind/tailwind.css'; import '../../src/client'; import '@react-spectrum/docs/src/syntax-highlight.css'; import {Keyboard} from '@react-spectrum/docs/pages/react-aria/home/Keyboard'; @@ -19,11 +19,16 @@ import {TextField} from 'tailwind-starter/TextField'; import {Popover} from 'tailwind-starter/Popover'; import {Button} from 'tailwind-starter/Button'; import ogImage from 'url:../../assets/ReactAriaOpenGraph.webp'; -import reactAriaFavicon from 'url:../../assets/react-aria.ico'; -import SearchMenuWrapperServer from '../../src/SearchMenuWrapperServer'; +import reactAriaFavicon from 'url:../../assets/react-aria-favicon.svg'; +import SearchMenuWrapperServer, {RouterWrapperServer} from '../../src/SearchMenuWrapperServer'; import {SearchMenuButton} from '../../src/SearchMenuWrapper'; import {getCurrentPage, getPages} from '../../src/getPages'; import {getBaseUrl} from '../../src/pageUtils'; +import {Provider, Button as S2Button} from '@react-spectrum/s2'; +import {LinkButton} from '../../src/Link'; +import HomeHeader from './HomeHeader'; +import {Video} from '../../src/Video'; +import videoUrl from 'url:./assets/website.mp4'; export const section = 'Overview'; export const title = 'Home'; @@ -31,632 +36,616 @@ export const omitFromNav = true; export const hideFromSearch = true; export const description = 'Accessible, high quality UI components and hooks for building design systems.'; - - - - - - React Aria - - - - - - - - - - - - -