Skip to content

Commit 7b8f42f

Browse files
committed
Add Search Menu to S2 homepage
1 parent af6355e commit 7b8f42f

File tree

4 files changed

+25
-13
lines changed

4 files changed

+25
-13
lines changed

packages/dev/s2-docs/pages/react-aria/index.mdx

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import {Button} from 'tailwind-starter/Button';
2121
import ogImage from 'url:../../assets/ReactAriaOpenGraph.webp';
2222
import reactAriaFavicon from 'url:../../assets/react-aria.ico';
2323
import SearchMenuWrapperServer from '../../src/SearchMenuWrapperServer';
24+
import {SearchMenuButton} from '../../src/SearchMenuWrapper';
2425
import {getCurrentPage, getPages} from '../../src/getPages';
2526
import {getBaseUrl} from '../../src/pageUtils';
2627

@@ -108,7 +109,7 @@ export const description = 'Accessible, high quality UI components and hooks for
108109
<div className="flex flex-col md:flex-row items-center gap-4 my-10 justify-center">
109110
<a href="getting-started" className="no-underline bg-linear-to-r from-blue-600 to-indigo-600 border border-blue-700 shadow-[inset_0_1px_0_rgba(255,255,255,0.1)] text-base md:text-lg font-bold text-white px-8 py-3 rounded-full transition focus-ring dark:outline-white outline-offset-2 active:scale-95 cursor-pointer">Get Started</a>
110111
<SearchMenuWrapperServer currentPage={props.currentPage}>
111-
<span className="block font-spectrum no-underline bg-white/60 border border-black/10 bg-clip-padding text-base md:text-lg font-bold text-slate-800 px-8 py-3 rounded-full backdrop-saturate-150 backdrop-brightness-125 transition hover:bg-white/60 focus-ring dark:outline-white outline-offset-2 group-pressed:scale-95 cursor-pointer focus-ring group-focus-visible:outline-2">Explore Components</span>
112+
<SearchMenuButton className="block font-spectrum no-underline bg-white/60 border border-black/10 bg-clip-padding text-base md:text-lg font-bold text-slate-800 px-8 py-3 rounded-full backdrop-saturate-150 backdrop-brightness-125 transition hover:bg-white/60 focus-ring dark:outline-white outline-offset-2 pressed:scale-95 focus-ring focus-visible:outline-2">Explore Components</SearchMenuButton>
112113
</SearchMenuWrapperServer>
113114
</div>
114115

@@ -632,10 +633,10 @@ export const description = 'Accessible, high quality UI components and hooks for
632633
</a>
633634

634635
<SearchMenuWrapperServer currentPage={props.currentPage}>
635-
<span className="block text-start no-underline card-shadow bg-white dark:bg-zinc-800 rounded-xl p-6 transition duration-300 card-shadow-hover hover:scale-[101%] cursor-pointer group-focus-visible:!outline-blue-600 group-focus-visible:dark:!outline-blue-500 group-focus-visible:!outline-2">
636+
<SearchMenuButton className="font-[inherit] block text-start no-underline card-shadow bg-white dark:bg-zinc-800 rounded-xl p-6 transition duration-300 card-shadow-hover hover:scale-[101%] cursor-pointer">
636637
<CardTitle>View Components <ArrowRight aria-hidden className="inline w-5 h-5 mb-1 align-middle" /></CardTitle>
637638
<CardDescription>See an overview of all of the components and hooks offered by React Aria.</CardDescription>
638-
</span>
639+
</SearchMenuButton>
639640
</SearchMenuWrapperServer>
640641

641642
<a href="examples/" className="no-underline card-shadow bg-white dark:bg-zinc-800 rounded-xl p-6 transition duration-300 card-shadow-hover hover:scale-[101%]">

packages/dev/s2-docs/pages/s2/home/Home.tsx

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { Pre } from "../../../src/CodePlatter";
55
import { ObjectStyles } from "./ObjectStyles";
66
import { DarkMode } from "./DarkMode";
77
import { AppFrame, ExampleApp } from "./ExampleApp";
8-
import { Divider, Link, LinkButton, Provider, Tab, TabList, TabPanel, Tabs } from "@react-spectrum/s2";
8+
import { Button, Divider, Link, LinkButton, Provider, Tab, TabList, TabPanel, Tabs } from "@react-spectrum/s2";
99
import { Mobile } from "./Mobile";
1010
import { Rems } from "./Rems";
1111
// import { PressAnimation } from "./Press";
@@ -42,6 +42,8 @@ import bg from 'data-url:./bg.svg';
4242
// import { SubmenuAnimation } from "./SubmenuAnimation";
4343
import { keyframes } from "../../../../../@react-spectrum/s2/style/style-macro" with {type: 'macro'};
4444
import { getBaseUrl } from "../../../src/pageUtils";
45+
import SearchMenuWrapperServer from "../../../src/SearchMenuWrapperServer";
46+
import type {Page} from "@parcel/rsc";
4547

4648
const container = style({
4749
backgroundColor: 'layer-2/80',
@@ -186,7 +188,7 @@ const swapSpeed = style({
186188
animationIterationCount: 'infinite'
187189
});
188190

189-
export function Home() {
191+
export function Home({currentPage}: {currentPage: Page}) {
190192
let headingId = useId();
191193
return (
192194
<body
@@ -259,7 +261,9 @@ export function Home() {
259261
<p className={style({font: 'body-3xl', marginY: 0, color: 'white', textWrap: 'balance'})}>React Spectrum empowers you to build high quality, accessible, cohesive apps with Adobe's signature design.</p>
260262
<div className={style({display: 'flex', gap: 16, flexDirection: {default: 'column', sm: 'row'}, marginTop: 32, marginBottom: 96})}>
261263
<LinkButton size="XL" staticColor="white" href="getting-started">Get started</LinkButton>
262-
<LinkButton size="XL" staticColor="white" variant="secondary" href="react-spectrum">Explore components</LinkButton>
264+
<SearchMenuWrapperServer currentPage={currentPage}>
265+
<Button size="XL" staticColor="white" variant="secondary">Explore components</Button>
266+
</SearchMenuWrapperServer>
263267
</div>
264268
<section aria-label="Example app" className={style({height: 'calc(100svh - 24px)', maxHeight: size(600)})}>
265269
<ExampleApp showArrows />
@@ -504,7 +508,9 @@ const buttonStyle = style({
504508
<h2 className={style({font: 'heading-2xl', color: 'white'})}>Ready to get started?</h2>
505509
<div className={style({display: 'flex', gap: 16, flexDirection: {default: 'column', sm: 'row'}})}>
506510
<LinkButton size="XL" staticColor="white" href="getting-started">Install and setup</LinkButton>
507-
<LinkButton size="XL" staticColor="white" variant="secondary" href="react-spectrum">Explore components</LinkButton>
511+
<SearchMenuWrapperServer currentPage={currentPage}>
512+
<Button size="XL" staticColor="white">Explore components</Button>
513+
</SearchMenuWrapperServer>
508514
</div>
509515
</section>
510516
</main>

packages/dev/s2-docs/pages/s2/index.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,5 +46,5 @@ export const hideFromSearch = true;
4646
}
4747
)}} />
4848
</head>
49-
<Home />
49+
<Home currentPage={props.currentPage} />
5050
</Provider>

packages/dev/s2-docs/src/SearchMenuWrapper.tsx

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
'use client';
22

3-
import '../tailwind/home.global.css';
4-
import {Button, DialogTrigger, Modal, ModalOverlay} from 'react-aria-components';
3+
import {Button, ButtonContext, ButtonProps, DialogTrigger, Modal, ModalOverlay} from 'react-aria-components';
54
import {flushSync} from 'react-dom';
65
import {preloadSearchMenu} from './SearchMenuTrigger';
76
import React, {lazy, ReactNode, useState} from 'react';
@@ -86,8 +85,10 @@ export default function SearchMenuWrapper({children}: {children: ReactNode}) {
8685
return (
8786
<>
8887
<div className={style({display: {default: 'none', lg: 'flex'}})}>
89-
<DialogTrigger isOpen={searchOpen} onOpenChange={() => {openSearchMenu();}} >
90-
<Button onHoverStart={() => preloadSearchMenu()} className="bg-transparent border-0 p-0 group font-[inherit] outline-0">{children}</Button>
88+
<DialogTrigger isOpen={searchOpen} onOpenChange={() => {openSearchMenu();}}>
89+
<ButtonContext value={{onHoverStart: () => preloadSearchMenu()}}>
90+
{children}
91+
</ButtonContext>
9192
<ModalOverlay
9293
style={{
9394
zIndex: 21,
@@ -108,7 +109,7 @@ export default function SearchMenuWrapper({children}: {children: ReactNode}) {
108109
</div>
109110
<div className={style({display: {default: 'flex', lg: 'none'}})}>
110111
<DialogTrigger>
111-
<Button className="bg-transparent border-0 p-0 group font-[inherit] outline-0">{children}</Button>
112+
{children}
112113
<S2Modal size="fullscreenTakeover">
113114
<MobileSearchMenu initialTag="components" />
114115
</S2Modal>
@@ -117,3 +118,7 @@ export default function SearchMenuWrapper({children}: {children: ReactNode}) {
117118
</>
118119
);
119120
}
121+
122+
export function SearchMenuButton(props: ButtonProps) {
123+
return <Button {...props} />;
124+
}

0 commit comments

Comments
 (0)