From 63ed5b132632cb0f8c175b33ad89f40cc6d63c38 Mon Sep 17 00:00:00 2001 From: Devon Govett Date: Mon, 27 Oct 2025 10:46:15 -0700 Subject: [PATCH 1/2] docs: Add examples section (#9094) * docs: Add examples section * Support size() macro in CSS strings * Remove font-variation-settings * Support standalone Cards as links * Fix border width of tertiary cards * Fix WaterfallLayout bugs * Add descriptions to search menu cards * Default search menu category to current page category * lint * Fix mobile search menu * Fix mobile --- packages/@react-spectrum/s2/src/Card.tsx | 34 +- packages/@react-spectrum/s2/style/index.ts | 8 +- .../s2/style/spectrum-theme.ts | 5 +- .../layout/src/WaterfallLayout.ts | 8 +- packages/dev/s2-docs/package.json | 1 + packages/dev/s2-docs/pages/error.mdx | 1 + .../s2-docs/pages/react-aria/Autocomplete.mdx | 13 +- .../dev/s2-docs/pages/react-aria/Button.mdx | 4 + .../dev/s2-docs/pages/react-aria/DropZone.mdx | 4 + .../dev/s2-docs/pages/react-aria/Form.mdx | 4 + .../dev/s2-docs/pages/react-aria/GridList.mdx | 4 + .../dev/s2-docs/pages/react-aria/ListBox.mdx | 4 + .../dev/s2-docs/pages/react-aria/Menu.mdx | 4 + .../dev/s2-docs/pages/react-aria/Modal.mdx | 4 + .../dev/s2-docs/pages/react-aria/Popover.mdx | 4 + .../s2-docs/pages/react-aria/SearchField.mdx | 4 + .../dev/s2-docs/pages/react-aria/Select.mdx | 18 +- .../dev/s2-docs/pages/react-aria/Slider.mdx | 4 + .../dev/s2-docs/pages/react-aria/Table.mdx | 4 + .../dev/s2-docs/pages/react-aria/Tabs.mdx | 4 + .../dev/s2-docs/pages/react-aria/TagGroup.mdx | 4 + .../dev/s2-docs/pages/react-aria/Tree.mdx | 4 + .../s2-docs/pages/react-aria/Virtualizer.mdx | 4 + packages/dev/s2-docs/pages/react-aria/dnd.mdx | 4 + .../examples/EmojiPicker/EmojiPicker.css | 60 + .../examples/EmojiPicker/EmojiPicker.tsx | 50 + .../pages/react-aria/examples/crud-dark.png | Bin 0 -> 165802 bytes .../pages/react-aria/examples/crud.mdx | 45 + .../pages/react-aria/examples/crud.png | Bin 0 -> 170506 bytes .../react-aria/examples/emoji-picker-dark.png | Bin 0 -> 96712 bytes .../react-aria/examples/emoji-picker.mdx | 32 + .../react-aria/examples/emoji-picker.png | Bin 0 -> 102942 bytes .../pages/react-aria/examples/index.mdx | 9 + .../react-aria/examples/ios-list-dark.png | Bin 0 -> 84628 bytes .../pages/react-aria/examples/ios-list.mdx | 311 + .../pages/react-aria/examples/kanban-dark.png | Bin 0 -> 229737 bytes .../pages/react-aria/examples/kanban.mdx | 250 + .../pages/react-aria/examples/kanban.png | Bin 0 -> 293589 bytes .../pages/react-aria/examples/photos-dark.png | Bin 0 -> 881493 bytes .../pages/react-aria/examples/photos.mdx | 34 + .../pages/react-aria/examples/photos.png | Bin 0 -> 1025682 bytes .../pages/react-aria/examples/photos/App.css | 131 + .../pages/react-aria/examples/photos/App.tsx | 52 + .../examples/photos/PhotoDetail.css | 35 + .../examples/photos/PhotoDetail.tsx | 53 + .../react-aria/examples/photos/PhotoGrid.css | 116 + .../react-aria/examples/photos/PhotoGrid.tsx | 121 + .../react-aria/examples/photos/Sidebar.css | 98 + .../react-aria/examples/photos/Sidebar.tsx | 59 + .../react-aria/examples/photos/albums.json | 76 + .../react-aria/examples/photos/photos.json | 18786 ++++++++++++++++ .../pages/react-aria/examples/plants/App.tsx | 216 + .../react-aria/examples/plants/Labels.tsx | 55 + .../examples/plants/PlantActionMenu.tsx | 43 + .../examples/plants/PlantDialog.tsx | 88 + .../react-aria/examples/plants/PlantList.tsx | 39 + .../react-aria/examples/plants/PlantTable.tsx | 116 + .../react-aria/examples/ripple-button.mdx | 61 + .../pages/react-aria/examples/ripple.css | 10 + .../pages/react-aria/examples/sheet-dark.png | Bin 0 -> 45071 bytes .../pages/react-aria/examples/sheet.mdx | 151 + .../pages/react-aria/examples/sheet.png | Bin 0 -> 51421 bytes .../examples/swipeable-tabs-dark.png | Bin 0 -> 49482 bytes .../react-aria/examples/swipeable-tabs.mdx | 60 + .../react-aria/examples/swipeable-tabs.png | Bin 0 -> 55138 bytes .../pages/react-aria/examples/tabs/Tab.tsx | 32 + .../react-aria/examples/tabs/TabList.tsx | 23 + .../react-aria/examples/tabs/TabPanel.tsx | 19 + .../examples/tabs/TabPanelCarousel.tsx | 54 + .../examples/tabs/TabSelectionIndicator.tsx | 37 + .../pages/react-aria/examples/tabs/Tabs.tsx | 26 + .../dev/s2-docs/pages/react-aria/index.mdx | 1 + packages/dev/s2-docs/src/Code.tsx | 2 +- packages/dev/s2-docs/src/CodeBlock.tsx | 60 +- packages/dev/s2-docs/src/ComponentCard.tsx | 352 + .../dev/s2-docs/src/ComponentCardView.tsx | 286 +- packages/dev/s2-docs/src/ExampleApp.tsx | 13 + packages/dev/s2-docs/src/ExampleList.tsx | 91 + packages/dev/s2-docs/src/Layout.tsx | 13 +- packages/dev/s2-docs/src/MobileSearchMenu.tsx | 33 +- packages/dev/s2-docs/src/Nav.tsx | 2 +- packages/dev/s2-docs/src/SearchMenu.tsx | 23 +- packages/dev/s2-docs/tailwind/tailwind.css | 2 + starters/docs/src/ComboBox.css | 14 +- starters/docs/src/ComboBox.tsx | 13 +- starters/docs/src/ListBox.css | 20 + starters/docs/src/ListBox.tsx | 21 +- starters/docs/src/Select.css | 19 +- starters/docs/src/Select.tsx | 14 +- starters/docs/src/theme.css | 1 + starters/tailwind/src/Dialog.tsx | 2 +- starters/tailwind/src/GridList.tsx | 2 +- starters/tailwind/src/Modal.tsx | 4 +- starters/tailwind/src/Table.tsx | 14 +- yarn.lock | 10 + 95 files changed, 22086 insertions(+), 426 deletions(-) create mode 100644 packages/dev/s2-docs/pages/react-aria/examples/EmojiPicker/EmojiPicker.css create mode 100644 packages/dev/s2-docs/pages/react-aria/examples/EmojiPicker/EmojiPicker.tsx create mode 100644 packages/dev/s2-docs/pages/react-aria/examples/crud-dark.png create mode 100644 packages/dev/s2-docs/pages/react-aria/examples/crud.mdx create mode 100644 packages/dev/s2-docs/pages/react-aria/examples/crud.png create mode 100644 packages/dev/s2-docs/pages/react-aria/examples/emoji-picker-dark.png create mode 100644 packages/dev/s2-docs/pages/react-aria/examples/emoji-picker.mdx create mode 100644 packages/dev/s2-docs/pages/react-aria/examples/emoji-picker.png create mode 100644 packages/dev/s2-docs/pages/react-aria/examples/index.mdx create mode 100644 packages/dev/s2-docs/pages/react-aria/examples/ios-list-dark.png create mode 100644 packages/dev/s2-docs/pages/react-aria/examples/ios-list.mdx create mode 100644 packages/dev/s2-docs/pages/react-aria/examples/kanban-dark.png create mode 100644 packages/dev/s2-docs/pages/react-aria/examples/kanban.mdx create mode 100644 packages/dev/s2-docs/pages/react-aria/examples/kanban.png create mode 100644 packages/dev/s2-docs/pages/react-aria/examples/photos-dark.png create mode 100644 packages/dev/s2-docs/pages/react-aria/examples/photos.mdx create mode 100644 packages/dev/s2-docs/pages/react-aria/examples/photos.png create mode 100644 packages/dev/s2-docs/pages/react-aria/examples/photos/App.css create mode 100644 packages/dev/s2-docs/pages/react-aria/examples/photos/App.tsx create mode 100644 packages/dev/s2-docs/pages/react-aria/examples/photos/PhotoDetail.css create mode 100644 packages/dev/s2-docs/pages/react-aria/examples/photos/PhotoDetail.tsx create mode 100644 packages/dev/s2-docs/pages/react-aria/examples/photos/PhotoGrid.css create mode 100644 packages/dev/s2-docs/pages/react-aria/examples/photos/PhotoGrid.tsx create mode 100644 packages/dev/s2-docs/pages/react-aria/examples/photos/Sidebar.css create mode 100644 packages/dev/s2-docs/pages/react-aria/examples/photos/Sidebar.tsx create mode 100644 packages/dev/s2-docs/pages/react-aria/examples/photos/albums.json create mode 100644 packages/dev/s2-docs/pages/react-aria/examples/photos/photos.json create mode 100644 packages/dev/s2-docs/pages/react-aria/examples/plants/App.tsx create mode 100644 packages/dev/s2-docs/pages/react-aria/examples/plants/Labels.tsx create mode 100644 packages/dev/s2-docs/pages/react-aria/examples/plants/PlantActionMenu.tsx create mode 100644 packages/dev/s2-docs/pages/react-aria/examples/plants/PlantDialog.tsx create mode 100644 packages/dev/s2-docs/pages/react-aria/examples/plants/PlantList.tsx create mode 100644 packages/dev/s2-docs/pages/react-aria/examples/plants/PlantTable.tsx create mode 100644 packages/dev/s2-docs/pages/react-aria/examples/ripple-button.mdx create mode 100644 packages/dev/s2-docs/pages/react-aria/examples/ripple.css create mode 100644 packages/dev/s2-docs/pages/react-aria/examples/sheet-dark.png create mode 100644 packages/dev/s2-docs/pages/react-aria/examples/sheet.mdx create mode 100644 packages/dev/s2-docs/pages/react-aria/examples/sheet.png create mode 100644 packages/dev/s2-docs/pages/react-aria/examples/swipeable-tabs-dark.png create mode 100644 packages/dev/s2-docs/pages/react-aria/examples/swipeable-tabs.mdx create mode 100644 packages/dev/s2-docs/pages/react-aria/examples/swipeable-tabs.png create mode 100644 packages/dev/s2-docs/pages/react-aria/examples/tabs/Tab.tsx create mode 100644 packages/dev/s2-docs/pages/react-aria/examples/tabs/TabList.tsx create mode 100644 packages/dev/s2-docs/pages/react-aria/examples/tabs/TabPanel.tsx create mode 100644 packages/dev/s2-docs/pages/react-aria/examples/tabs/TabPanelCarousel.tsx create mode 100644 packages/dev/s2-docs/pages/react-aria/examples/tabs/TabSelectionIndicator.tsx create mode 100644 packages/dev/s2-docs/pages/react-aria/examples/tabs/Tabs.tsx create mode 100644 packages/dev/s2-docs/src/ComponentCard.tsx create mode 100644 packages/dev/s2-docs/src/ExampleApp.tsx create mode 100644 packages/dev/s2-docs/src/ExampleList.tsx diff --git a/packages/@react-spectrum/s2/src/Card.tsx b/packages/@react-spectrum/s2/src/Card.tsx index a1d76da9a70..86222fbeea6 100644 --- a/packages/@react-spectrum/s2/src/Card.tsx +++ b/packages/@react-spectrum/s2/src/Card.tsx @@ -15,7 +15,7 @@ import {AvatarContext} from './Avatar'; import {ButtonContext, LinkButtonContext} from './Button'; import {Checkbox} from './Checkbox'; import {color, focusRing, lightDark, space, style} from '../style' with {type: 'macro'}; -import {composeRenderProps, ContextValue, DEFAULT_SLOT, type GridListItem, GridListItemProps, Provider} from 'react-aria-components'; +import {composeRenderProps, ContextValue, DEFAULT_SLOT, type GridListItem, GridListItemProps, Link, Provider} from 'react-aria-components'; import {ContentContext, FooterContext, TextContext} from './Content'; import {createContext, CSSProperties, forwardRef, ReactNode, useContext} from 'react'; import {DividerContext} from './Divider'; @@ -95,11 +95,11 @@ let card = style({ variant: { tertiary: { // Render border with box-shadow to avoid affecting layout. - default: `[0 0 0 1px ${color('gray-100')}]`, - isHovered: `[0 0 0 1px ${color('gray-200')}]`, - isFocusVisible: `[0 0 0 1px ${color('gray-200')}]`, + default: `[0 0 0 2px ${color('gray-100')}]`, + isHovered: `[0 0 0 2px ${color('gray-200')}]`, + isFocusVisible: `[0 0 0 2px ${color('gray-200')}]`, isSelected: 'none', - forcedColors: '[0 0 0 1px ButtonBorder]' + forcedColors: '[0 0 0 2px ButtonBorder]' }, quiet: 'none' } @@ -107,6 +107,7 @@ let card = style({ forcedColorAdjust: 'none', transition: 'default', fontFamily: 'sans', + textDecoration: 'none', overflow: { default: 'clip', variant: { @@ -424,6 +425,28 @@ export const Card = forwardRef(function Card(props: CardProps, ref: DOMRef ); + let press = pressScale(domRef, UNSAFE_style); + if (ElementType === 'div' && !isSkeleton && props.href) { + // Standalone Card that has an href should be rendered as a Link. + // NOTE: In this case, the card must not contain interactive elements. + return ( + UNSAFE_className + card({...renderProps, size, density, variant, isCardView: false, isLink: true}, styles)} + style={renderProps => + // Only the preview in quiet cards scales down on press + variant === 'quiet' ? UNSAFE_style : press(renderProps) + }> + {(renderProps) => ( + + {children} + + )} + + ); + } + if (ElementType === 'div' || isSkeleton) { return (
(['fontWeight', 'fontVariationSettings', 'fontSynthesisWeight'], (value) => { return { - // Set font-variation-settings in addition to font-weight to work around typekit issue. - // (This was fixed, but leaving for backward compatibility for now.) - fontVariationSettings: value === 'inherit' ? 'inherit' : `"wght" ${value}`, fontWeight: value as any, fontSynthesisWeight: 'none' }; diff --git a/packages/@react-stately/layout/src/WaterfallLayout.ts b/packages/@react-stately/layout/src/WaterfallLayout.ts index 437bf9e1c73..e212540d6dc 100644 --- a/packages/@react-stately/layout/src/WaterfallLayout.ts +++ b/packages/@react-stately/layout/src/WaterfallLayout.ts @@ -48,10 +48,12 @@ export interface WaterfallLayoutOptions { class WaterfallLayoutInfo extends LayoutInfo { column = 0; + index = 0; copy(): WaterfallLayoutInfo { let res = super.copy() as WaterfallLayoutInfo; res.column = this.column; + res.index = this.index; return res; } } @@ -123,18 +125,19 @@ export class WaterfallLayout) => { let oldLayoutInfo = this.layoutInfos.get(key); let height = itemHeight; let estimatedSize = true; if (oldLayoutInfo) { - height = oldLayoutInfo.rect.height; + height = oldLayoutInfo.rect.height / oldLayoutInfo.rect.width * itemWidth; estimatedSize = invalidationContext.sizeChanged || oldLayoutInfo.estimatedSize || oldLayoutInfo.content !== node; } // Figure out which column to place the item in, and compute its position. // Preserve the previous column index so items don't jump around during resizing unless the number of columns changed. - let prevColumn = numColumns === this.numColumns && oldLayoutInfo && oldLayoutInfo.rect.y < this.virtualizer!.visibleRect.maxY ? oldLayoutInfo.column : undefined; + let prevColumn = numColumns === this.numColumns && oldLayoutInfo && oldLayoutInfo.index === index && oldLayoutInfo.rect.y < this.virtualizer!.visibleRect.maxY ? oldLayoutInfo.column : undefined; let column = prevColumn ?? columnHeights.reduce((minIndex, h, i) => h < columnHeights[minIndex] ? i : minIndex, 0); let x = horizontalSpacing + column * (itemWidth + horizontalSpacing) + this.margin; let y = columnHeights[column]; @@ -145,6 +148,7 @@ export class WaterfallLayout diff --git a/packages/dev/s2-docs/pages/react-aria/Autocomplete.mdx b/packages/dev/s2-docs/pages/react-aria/Autocomplete.mdx index 105a863d839..73176705766 100644 --- a/packages/dev/s2-docs/pages/react-aria/Autocomplete.mdx +++ b/packages/dev/s2-docs/pages/react-aria/Autocomplete.mdx @@ -160,9 +160,8 @@ function Example(props) { "use client"; import {Select, Label, SelectValue, Autocomplete, useFilter} from 'react-aria-components'; import {Button} from 'vanilla-starter/Button'; -import {SelectItem} from 'vanilla-starter/Select'; +import {SelectListBox, SelectItem} from 'vanilla-starter/Select'; import {Popover} from 'vanilla-starter/Popover'; -import {ListBox} from 'vanilla-starter/ListBox'; import {SearchField} from 'vanilla-starter/SearchField'; import {ChevronDown} from 'lucide-react'; @@ -232,7 +231,7 @@ function Example(props) { - + {/*- begin highlight -*/} {/*- end highlight -*/} @@ -241,12 +240,12 @@ function Example(props) { aria-label="Search states" placeholder="Search states" style={{margin: 4}} /> - 'No results.'} style={{flex: 1}}> {state => {state.name}} - + @@ -1101,6 +1100,10 @@ function AsyncLoadingExample() { } ``` +## Examples + + + ## API ```tsx links={{Autocomplete: '#autocomplete', SearchField: 'SearchField.html', TextField: 'TextField.html', Menu: 'Menu.html', ListBox: 'ListBox.html', TagGroup: 'TagGroup.html', GridList: 'GridList.html', Table: 'Table.html'}} diff --git a/packages/dev/s2-docs/pages/react-aria/Button.mdx b/packages/dev/s2-docs/pages/react-aria/Button.mdx index 452dd693ed5..d2d201213c9 100644 --- a/packages/dev/s2-docs/pages/react-aria/Button.mdx +++ b/packages/dev/s2-docs/pages/react-aria/Button.mdx @@ -120,6 +120,10 @@ import {Link} from 'react-aria-components'; ``` +## Examples + + + ## API diff --git a/packages/dev/s2-docs/pages/react-aria/DropZone.mdx b/packages/dev/s2-docs/pages/react-aria/DropZone.mdx index 18c749f4618..bbba85ff6c2 100644 --- a/packages/dev/s2-docs/pages/react-aria/DropZone.mdx +++ b/packages/dev/s2-docs/pages/react-aria/DropZone.mdx @@ -89,6 +89,10 @@ export const tags = ['file', 'drag', 'dnd', 'upload']; ``` +## Examples + + + ## API ```tsx links={{DropZone: '#dropzone'}} diff --git a/packages/dev/s2-docs/pages/react-aria/Form.mdx b/packages/dev/s2-docs/pages/react-aria/Form.mdx index c0b65dfd57b..7f7098c97c5 100644 --- a/packages/dev/s2-docs/pages/react-aria/Form.mdx +++ b/packages/dev/s2-docs/pages/react-aria/Form.mdx @@ -194,6 +194,10 @@ function Example() { } ``` +## Examples + + + ## API diff --git a/packages/dev/s2-docs/pages/react-aria/GridList.mdx b/packages/dev/s2-docs/pages/react-aria/GridList.mdx index 222e83a6cdd..5f86d9bf1dd 100644 --- a/packages/dev/s2-docs/pages/react-aria/GridList.mdx +++ b/packages/dev/s2-docs/pages/react-aria/GridList.mdx @@ -894,6 +894,10 @@ function Example() { } ``` +## Examples + + + ## API diff --git a/packages/dev/s2-docs/pages/react-aria/ListBox.mdx b/packages/dev/s2-docs/pages/react-aria/ListBox.mdx index b39702a53a1..93fbcd78ccf 100644 --- a/packages/dev/s2-docs/pages/react-aria/ListBox.mdx +++ b/packages/dev/s2-docs/pages/react-aria/ListBox.mdx @@ -377,6 +377,10 @@ function Example() { } ``` +## Examples + + + ## API diff --git a/packages/dev/s2-docs/pages/react-aria/Menu.mdx b/packages/dev/s2-docs/pages/react-aria/Menu.mdx index e58ab58f55a..d20963fb7a2 100644 --- a/packages/dev/s2-docs/pages/react-aria/Menu.mdx +++ b/packages/dev/s2-docs/pages/react-aria/Menu.mdx @@ -523,6 +523,10 @@ import {ChevronDown} from 'lucide-react'; ``` +## Examples + + + ## API diff --git a/packages/dev/s2-docs/pages/react-aria/Modal.mdx b/packages/dev/s2-docs/pages/react-aria/Modal.mdx index 9b317e3048f..4d661b6f9c7 100644 --- a/packages/dev/s2-docs/pages/react-aria/Modal.mdx +++ b/packages/dev/s2-docs/pages/react-aria/Modal.mdx @@ -165,6 +165,10 @@ const CustomTrigger = React.forwardRef((props, ref) => ( )); ``` +## Examples + + + ## API diff --git a/packages/dev/s2-docs/pages/react-aria/Popover.mdx b/packages/dev/s2-docs/pages/react-aria/Popover.mdx index b96e7c50461..fba0b924482 100644 --- a/packages/dev/s2-docs/pages/react-aria/Popover.mdx +++ b/packages/dev/s2-docs/pages/react-aria/Popover.mdx @@ -138,6 +138,10 @@ function Example() { } ``` +## Examples + + + ## API diff --git a/packages/dev/s2-docs/pages/react-aria/SearchField.mdx b/packages/dev/s2-docs/pages/react-aria/SearchField.mdx index 7a56fa880d8..b04f33820e0 100644 --- a/packages/dev/s2-docs/pages/react-aria/SearchField.mdx +++ b/packages/dev/s2-docs/pages/react-aria/SearchField.mdx @@ -93,6 +93,10 @@ function Example(props) { } ``` +## Examples + + + ## API diff --git a/packages/dev/s2-docs/pages/react-aria/Select.mdx b/packages/dev/s2-docs/pages/react-aria/Select.mdx index 4ef5ea06a66..1f60d9f4d2f 100644 --- a/packages/dev/s2-docs/pages/react-aria/Select.mdx +++ b/packages/dev/s2-docs/pages/react-aria/Select.mdx @@ -103,9 +103,8 @@ function Example() { "use client"; import {Select, Label, SelectValue, Autocomplete, useFilter} from 'react-aria-components'; import {Button} from 'vanilla-starter/Button'; -import {SelectItem} from 'vanilla-starter/Select'; +import {SelectListBox, SelectItem} from 'vanilla-starter/Select'; import {Popover} from 'vanilla-starter/Popover'; -import {ListBox} from 'vanilla-starter/ListBox'; import {SearchField} from 'vanilla-starter/SearchField'; import {ChevronDown} from 'lucide-react'; @@ -119,11 +118,11 @@ function Example() { - + {/*- begin highlight -*/} - + {/*- end highlight -*/} News Travel @@ -134,7 +133,7 @@ function Example() { Technology Health Science - + @@ -150,7 +149,7 @@ Use the `SelectValue` render prop function to display the selected items as a [T "use client"; import {Autocomplete, Select, SelectValue, Group, useFilter} from 'react-aria-components'; import {Button} from 'vanilla-starter/Button'; -import {ListBox, DropdownItem} from 'vanilla-starter/ListBox'; +import {SelectListBox, SelectItem} from 'vanilla-starter/Select'; import {Label} from 'vanilla-starter/Form'; import {Popover} from 'vanilla-starter/Popover'; import {Plus} from 'lucide-react'; @@ -247,12 +246,13 @@ function SelectWithTagGroup() { // Position popover relative to the wrapping div instead of the Button triggerRef={triggerRef} hideArrow + className="select-popover" style={{display: 'flex', flexDirection: 'column', width: 250, padding: 4}}> - - {state => {state.name}} - + + {state => {state.name}} + diff --git a/packages/dev/s2-docs/pages/react-aria/Slider.mdx b/packages/dev/s2-docs/pages/react-aria/Slider.mdx index 14200dd2841..218aec786ed 100644 --- a/packages/dev/s2-docs/pages/react-aria/Slider.mdx +++ b/packages/dev/s2-docs/pages/react-aria/Slider.mdx @@ -94,6 +94,10 @@ By default, slider values are percentages between 0 and 100. Use the `minValue`, step: 5 }} /> +## Examples + + + ## API diff --git a/packages/dev/s2-docs/pages/react-aria/Table.mdx b/packages/dev/s2-docs/pages/react-aria/Table.mdx index 74556365ad2..c60bf737500 100644 --- a/packages/dev/s2-docs/pages/react-aria/Table.mdx +++ b/packages/dev/s2-docs/pages/react-aria/Table.mdx @@ -640,6 +640,10 @@ function ReorderableTable() { } ``` +## Examples + + + ## API diff --git a/packages/dev/s2-docs/pages/react-aria/Tabs.mdx b/packages/dev/s2-docs/pages/react-aria/Tabs.mdx index bf01e70ad86..6ca184cd397 100644 --- a/packages/dev/s2-docs/pages/react-aria/Tabs.mdx +++ b/packages/dev/s2-docs/pages/react-aria/Tabs.mdx @@ -269,6 +269,10 @@ function Example() { } ``` +## Examples + + + ## API diff --git a/packages/dev/s2-docs/pages/react-aria/TagGroup.mdx b/packages/dev/s2-docs/pages/react-aria/TagGroup.mdx index 053f1780ec3..b71aa67d962 100644 --- a/packages/dev/s2-docs/pages/react-aria/TagGroup.mdx +++ b/packages/dev/s2-docs/pages/react-aria/TagGroup.mdx @@ -129,6 +129,10 @@ function Example(props) { } ``` +## Examples + + + ## API diff --git a/packages/dev/s2-docs/pages/react-aria/Tree.mdx b/packages/dev/s2-docs/pages/react-aria/Tree.mdx index ad7c3ef923c..dca4d8bb346 100644 --- a/packages/dev/s2-docs/pages/react-aria/Tree.mdx +++ b/packages/dev/s2-docs/pages/react-aria/Tree.mdx @@ -352,6 +352,10 @@ function Example() { } ``` +## Examples + + + ## API diff --git a/packages/dev/s2-docs/pages/react-aria/Virtualizer.mdx b/packages/dev/s2-docs/pages/react-aria/Virtualizer.mdx index dae384deca9..bcc24aa04b2 100644 --- a/packages/dev/s2-docs/pages/react-aria/Virtualizer.mdx +++ b/packages/dev/s2-docs/pages/react-aria/Virtualizer.mdx @@ -468,6 +468,10 @@ for (let i = 0; i < 1000; i++) { ``` +## Examples + + + ## API ### Virtualizer diff --git a/packages/dev/s2-docs/pages/react-aria/dnd.mdx b/packages/dev/s2-docs/pages/react-aria/dnd.mdx index efa29b23691..199bf491a7e 100644 --- a/packages/dev/s2-docs/pages/react-aria/dnd.mdx +++ b/packages/dev/s2-docs/pages/react-aria/dnd.mdx @@ -888,6 +888,10 @@ Draggable elements can sometimes have conflicting keyboard interactions, such as Note that because mouse and touch drag and drop interactions utilize the native browser APIs, they work both within the browser window and with external applications on the user's device. Keyboard and screen reader drag and drop is implemented from scratch, and therefore can only be supported within the browser window. Alternative interactions for operations involving external applications, such as file uploading or copy and paste, should be implemented in addition to drag and drop. +## Examples + + + ## API ### useDragAndDrop diff --git a/packages/dev/s2-docs/pages/react-aria/examples/EmojiPicker/EmojiPicker.css b/packages/dev/s2-docs/pages/react-aria/examples/EmojiPicker/EmojiPicker.css new file mode 100644 index 00000000000..72de46ec56e --- /dev/null +++ b/packages/dev/s2-docs/pages/react-aria/examples/EmojiPicker/EmojiPicker.css @@ -0,0 +1,60 @@ +.emoji-picker { + .react-aria-Button { + width: 40px; + height: 40px; + font-size: 22px; + line-height: 1em; + } +} + +.emoji-picker-popover { + display: flex; + flex-direction: column; + gap: 8px; + width: 280px; + height: 350px; + box-sizing: border-box; + + .react-aria-SearchField { + width: 100%; + } +} + +.emoji-list { + flex: 1; + width: 100%; + max-height: 100%; + overflow: auto; + scroll-padding-top: 4px; + scroll-padding-bottom: 4px; +} + +.emoji-item { + width: 100%; + height: 100%; + border-radius: 8px; + display: flex; + align-items: center; + justify-content: center; + cursor: default; + font-size: 24px; + + &[data-hovered] { + background-color: var(--highlight-hover); + } + + &[data-pressed] { + background-color: var(--highlight-pressed); + } + + &[data-focus-visible] { + outline: 2px solid var(--focus-ring-color); + outline-offset: 2px; + } + + &[data-selected] { + background-color: var(--highlight-background); + color: var(--highlight-foreground); + } +} + diff --git a/packages/dev/s2-docs/pages/react-aria/examples/EmojiPicker/EmojiPicker.tsx b/packages/dev/s2-docs/pages/react-aria/examples/EmojiPicker/EmojiPicker.tsx new file mode 100644 index 00000000000..9ee9068c68e --- /dev/null +++ b/packages/dev/s2-docs/pages/react-aria/examples/EmojiPicker/EmojiPicker.tsx @@ -0,0 +1,50 @@ +"use client"; +import {Autocomplete, GridLayout, ListBox, ListBoxItem, Select, SelectValue, Size, useFilter, Virtualizer} from 'react-aria-components'; +import {Button} from 'vanilla-starter/Button'; +import {Popover} from 'vanilla-starter/Popover'; +import {SearchField} from 'vanilla-starter/SearchField'; +import _emojis from 'emojibase-data/en/compact.json'; +import './EmojiPicker.css'; + +const emojis = _emojis.filter((e) => !e.label.startsWith('regional indicator')); + +export function EmojiPicker() { + let {contains} = useFilter({ sensitivity: 'base' }); + + return ( + + ); +} + +function EmojiItem({ id, item }: { id: string; item: (typeof emojis)[0] }) { + return ( + + {item.unicode} + + ); +} diff --git a/packages/dev/s2-docs/pages/react-aria/examples/crud-dark.png b/packages/dev/s2-docs/pages/react-aria/examples/crud-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..64203222ae77af6c39c2b8fd60340b3ab07ae7e7 GIT binary patch literal 165802 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�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

K%!%}u5Jd{r$Y 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%0Ds*-c4@#owXm*zfcz=Ss>zf} Hz4rTmmG{bN literal 0 HcmV?d00001 diff --git a/packages/dev/s2-docs/pages/react-aria/examples/crud.mdx b/packages/dev/s2-docs/pages/react-aria/examples/crud.mdx new file mode 100644 index 00000000000..9f0ad710b22 --- /dev/null +++ b/packages/dev/s2-docs/pages/react-aria/examples/crud.mdx @@ -0,0 +1,45 @@ +import {Layout} from '../../../src/Layout'; +export default Layout; + +import '../../../tailwind/tailwind.css'; + +import {App} from './plants/App'; +import {ExampleApp} from '../../../src/ExampleApp'; +import {ComponentList} from '../../../src/ComponentCard'; + +export const hideNav = true; +export const section = 'Examples'; +export const keywords = ['react-aria', 'example', 'table', 'search', 'filters', 'taggroup', 'actions', 'form', 'menu', 'popover', 'searchfield', 'dropzone', 'crud']; +export const description = 'Table with search, filters, column resizing, and form validation.'; + +# Filterable CRUD Table + +A plant tracking app with CRUD operations, search, filters, table column resizing, form validation, and more. + + + + + +## Components + + diff --git a/packages/dev/s2-docs/pages/react-aria/examples/crud.png b/packages/dev/s2-docs/pages/react-aria/examples/crud.png new file mode 100644 index 0000000000000000000000000000000000000000..4557d940bee5f605d5b4fbcd1f31219354301b19 GIT binary patch literal 170506 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

diff --git a/packages/dev/s2-docs/src/MobileSearchMenu.tsx b/packages/dev/s2-docs/src/MobileSearchMenu.tsx index 33051304804..684f5a4ada6 100644 --- a/packages/dev/s2-docs/src/MobileSearchMenu.tsx +++ b/packages/dev/s2-docs/src/MobileSearchMenu.tsx @@ -212,7 +212,6 @@ function MobileNav({pages, currentPage}: PageProps) { let overlayTriggerState = useContext(OverlayTriggerStateContext); let [searchFocused, setSearchFocused] = useState(false); let [searchValue, setSearchValue] = useState(''); - let [selectedSection, setSelectedSection] = useState(undefined); let prevSearchWasEmptyRef = useRef(true); let scrollContainerRef = useRef(null); let [selectedLibrary, setSelectedLibrary] = useState(getLibraryFromPage(currentPage)); @@ -245,20 +244,13 @@ function MobileNav({pages, currentPage}: PageProps) { return sectionArray; }, [getSectionsForLibrary, selectedLibrary]); + let [selectedSection, setSelectedSection] = useState(() => currentPage.exports?.section || currentLibrarySectionArray[0]); - useEffect(() => { - // Auto-select first section initially or when library changes - if (currentLibrarySectionArray.length > 0 && !selectedSection) { - setSelectedSection(currentLibrarySectionArray[0]); - } - }, [currentLibrarySectionArray, selectedSection]); - - // Auto-select first section when switching libraries (if not focused on search field) - useEffect(() => { - if (currentLibrarySectionArray.length > 0 && !searchFocused) { - setSelectedSection(currentLibrarySectionArray[0]); - } - }, [selectedLibrary, currentLibrarySectionArray, searchFocused]); + // Ensure selected section is valid for the current library + const sectionIds = searchValue.trim().length > 0 ? ['all', ...currentLibrarySectionArray] : currentLibrarySectionArray; + if (!selectedSection || !sectionIds.includes(selectedSection)) { + setSelectedSection(currentLibrarySectionArray[0] || 'Components'); + } let getOrderedLibraries = () => { let allLibraries = (Object.keys(TAB_DEFS) as Library[]).map(id => ({id, label: TAB_DEFS[id].label, icon: TAB_DEFS[id].icon})); @@ -334,7 +326,7 @@ function MobileNav({pages, currentPage}: PageProps) { return filteredPages .sort((a, b) => title(a).localeCompare(title(b))) - .map(page => ({id: page.url.replace(/^\//, ''), name: title(page), href: page.url})); + .map(page => ({id: page.url.replace(/^\//, ''), name: title(page), href: page.url, description: page.exports?.description})); }; let getAllContent = (libraryId: string, searchValue: string = ''): ComponentCardItem[] => { @@ -343,7 +335,7 @@ function MobileNav({pages, currentPage}: PageProps) { let filteredPages = filterPages(allPages, searchValue); return filteredPages .sort((a, b) => title(a).localeCompare(title(b))) - .map(page => ({id: page.url.replace(/^\//, ''), name: title(page), href: page.url})); + .map(page => ({id: page.url.replace(/^\//, ''), name: title(page), href: page.url, description: page.exports?.description})); }; let getItemsForSelection = (section: string | undefined, libraryId: string, searchValue: string = ''): ComponentCardItem[] => { @@ -404,14 +396,6 @@ function MobileNav({pages, currentPage}: PageProps) { return base; }, [currentLibrarySections, searchValue]); - useEffect(() => { - let baseIds = currentLibrarySections; - let ids = searchValue.trim().length > 0 ? ['all', ...baseIds] : baseIds; - if (!selectedSection || !ids.includes(selectedSection)) { - setSelectedSection(ids[0]); - } - }, [currentLibrarySections, searchValue, selectedSection]); - // Auto-select All when search starts useEffect(() => { let isEmpty = searchValue.trim().length === 0; @@ -477,6 +461,7 @@ function MobileNav({pages, currentPage}: PageProps) { aria-label="Navigation sections" selectionMode="single" selectedKeys={selectedSection ? [selectedSection] : []} + disallowEmptySelection onSelectionChange={handleTagSelection} UNSAFE_style={{whiteSpace: 'nowrap'}} items={tags}> diff --git a/packages/dev/s2-docs/src/Nav.tsx b/packages/dev/s2-docs/src/Nav.tsx index 637d07d4812..1527f5a73cb 100644 --- a/packages/dev/s2-docs/src/Nav.tsx +++ b/packages/dev/s2-docs/src/Nav.tsx @@ -11,7 +11,7 @@ export function Nav({pages, currentPage}: PageProps) { let currentLibrary = getLibraryFromPage(currentPage); let sections = new Map(); for (let page of pages) { - if (page.exports?.hideNav || page.exports?.hideFromSearch) { + if (page.exports?.hideNav) { continue; } diff --git a/packages/dev/s2-docs/src/SearchMenu.tsx b/packages/dev/s2-docs/src/SearchMenu.tsx index 313550cfdfa..55b60679962 100644 --- a/packages/dev/s2-docs/src/SearchMenu.tsx +++ b/packages/dev/s2-docs/src/SearchMenu.tsx @@ -76,14 +76,16 @@ export function SearchMenu(props: SearchMenuProps) { const name = page.url.replace(/^\//, '').replace(/\.html$/, ''); const title = page.tableOfContents?.[0]?.title || name; const section: string = (page.exports?.section as string) || 'Components'; - const tags: string[] = (page.exports?.tags as string[]) || []; + const tags: string[] = (page.exports?.tags || page.exports?.keywords as string[]) || []; + const description: string = page.exports?.description; return { id: name, name: title, href: page.url, section, - tags + tags, + description }; }); @@ -108,17 +110,15 @@ export function SearchMenu(props: SearchMenuProps) { }); }, [transformedComponents]); - const [selectedSectionId, setSelectedSectionId] = useState('components'); + const [selectedSectionId, setSelectedSectionId] = useState(() => currentPage.exports?.section?.toLowerCase() || 'components'); const prevSearchWasEmptyRef = useRef(true); // Ensure selected section is valid for the current library - useEffect(() => { - const baseIds = sections.map(s => s.id); - const sectionIds = searchValue.trim().length > 0 ? ['all', ...baseIds] : baseIds; - if (!selectedSectionId || !sectionIds.includes(selectedSectionId)) { - setSelectedSectionId(sectionIds[0] || 'components'); - } - }, [selectedLibrary, sections, selectedSectionId, searchValue]); + const baseIds = sections.map(s => s.id); + const sectionIds = searchValue.trim().length > 0 ? ['all', ...baseIds] : baseIds; + if (!selectedSectionId || !sectionIds.includes(selectedSectionId)) { + setSelectedSectionId(sectionIds[0] || 'components'); + } // When search starts, auto-select the All tag. useEffect(() => { @@ -314,7 +314,8 @@ export function SearchMenu(props: SearchMenuProps) { items={selectedItems.map(item => ({ id: item.id, name: item.name, - href: item.href ?? `/${tab.id}/${item.name}.html` + href: item.href ?? `/${tab.id}/${item.name}.html`, + description: item.description }))} ariaLabel={selectedSectionName} renderEmptyState={() => ( diff --git a/packages/dev/s2-docs/tailwind/tailwind.css b/packages/dev/s2-docs/tailwind/tailwind.css index fa9afc4c2e3..e6590ca4681 100644 --- a/packages/dev/s2-docs/tailwind/tailwind.css +++ b/packages/dev/s2-docs/tailwind/tailwind.css @@ -3,6 +3,8 @@ @import "tailwindcss/utilities.css" layer(utilities) source(none); @source "../../../../starters/tailwind/src/*.{ts,tsx}"; @source "../pages/**/*.mdx"; +@source "../pages/react-aria/examples/plants/*.tsx"; +@source "../pages/react-aria/examples/tabs/*.tsx"; @plugin 'tailwindcss-react-aria-components'; @plugin 'tailwindcss-animate'; diff --git a/starters/docs/src/ComboBox.css b/starters/docs/src/ComboBox.css index 18b123754c7..2c6eaeb2246 100644 --- a/starters/docs/src/ComboBox.css +++ b/starters/docs/src/ComboBox.css @@ -18,19 +18,7 @@ } } -.react-aria-Popover[data-trigger=ComboBox] { +.combobox-popover[data-trigger=ComboBox] { width: var(--trigger-width); padding: 0; - - .react-aria-ListBox { - display: block; - width: unset; - max-height: inherit; - min-height: unset; - border: none; - - .react-aria-Header { - padding-left: 1.374625rem; - } - } } diff --git a/starters/docs/src/ComboBox.tsx b/starters/docs/src/ComboBox.tsx index ffad81d59ea..6a58164e0ba 100644 --- a/starters/docs/src/ComboBox.tsx +++ b/starters/docs/src/ComboBox.tsx @@ -4,10 +4,11 @@ import { ComboBoxProps as AriaComboBoxProps, Input, ListBoxItemProps, + ListBoxProps, ValidationResult } from 'react-aria-components'; import {Label, FieldError, FieldButton, Description} from './Form'; -import {DropdownItem, ListBox} from './ListBox'; +import {DropdownItem, DropdownListBox} from './ListBox'; import {Popover} from './Popover'; import {ChevronDown} from 'lucide-react'; @@ -33,15 +34,19 @@ export function ComboBox( {description && {description}} {errorMessage} - - + + {children} - + ); } +export function ComboBoxListBox(props: ListBoxProps) { + return ; +} + export function ComboBoxItem(props: ListBoxItemProps) { return ; } diff --git a/starters/docs/src/ListBox.css b/starters/docs/src/ListBox.css index 8cd98703386..e7e82f34ed6 100644 --- a/starters/docs/src/ListBox.css +++ b/starters/docs/src/ListBox.css @@ -258,6 +258,26 @@ width: 100%; } +.dropdown-listbox { + display: block; + max-height: inherit; + overflow: auto; + forced-color-adjust: none; + outline: none; + box-sizing: border-box; + font: var(--font-size) system-ui; + color: var(--text-color); + + &[data-empty] { + min-height: var(--spacing-8); + padding: var(--spacing-2); + } + + .react-aria-Header { + padding-left: var(--spacing-7); + } +} + .dropdown-item { padding: calc((var(--spacing-8) - 1lh) / 2) var(--spacing-3) calc((var(--spacing-8) - 1lh) / 2) var(--spacing-6); box-sizing: border-box; diff --git a/starters/docs/src/ListBox.tsx b/starters/docs/src/ListBox.tsx index 590cee8f358..6c405f34b0e 100644 --- a/starters/docs/src/ListBox.tsx +++ b/starters/docs/src/ListBox.tsx @@ -42,6 +42,19 @@ export function ListBoxSection(props: ListBoxSectionProps) return ; } + +export function ListBoxLoadMoreItem(props: ListBoxLoadMoreItemProps) { + return ( + + + + ); +} + +export function DropdownListBox(props: ListBoxProps) { + return +} + export function DropdownItem(props: ListBoxItemProps) { let textValue = props.textValue || (typeof props.children === 'string' ? props.children : undefined); return ( @@ -53,11 +66,3 @@ export function DropdownItem(props: ListBoxItemProps) { ); } - -export function ListBoxLoadMoreItem(props: ListBoxLoadMoreItemProps) { - return ( - - - - ); -} diff --git a/starters/docs/src/Select.css b/starters/docs/src/Select.css index ffab8a858c9..8b4c45f3eb7 100644 --- a/starters/docs/src/Select.css +++ b/starters/docs/src/Select.css @@ -40,24 +40,7 @@ } } -.react-aria-Popover[data-trigger=Select] { +.select-popover[data-trigger=Select] { width: var(--trigger-width); padding: 0; - - .react-aria-ListBox { - display: block; - width: unset; - max-height: inherit; - min-height: unset; - border: none; - - &[data-empty] { - min-height: var(--spacing-8); - padding: var(--spacing-2); - } - - .react-aria-Header { - padding-left: var(--spacing-7); - } - } } diff --git a/starters/docs/src/Select.tsx b/starters/docs/src/Select.tsx index c8ef0527a06..9d8bae7b804 100644 --- a/starters/docs/src/Select.tsx +++ b/starters/docs/src/Select.tsx @@ -5,10 +5,10 @@ import { SelectProps as AriaSelectProps, SelectValue, ValidationResult, - composeRenderProps + ListBoxProps } from 'react-aria-components'; import {Button} from './Button'; -import {DropdownItem, ListBox} from './ListBox'; +import {DropdownItem, DropdownListBox} from './ListBox'; import {ChevronDown} from 'lucide-react'; import {Popover} from './Popover'; import {Label, FieldError, Description} from './Form'; @@ -38,16 +38,20 @@ export function Select( {description && {description}} {errorMessage} - - + + {children} - + ) ); } +export function SelectListBox(props: ListBoxProps) { + return ; +} + export function SelectItem(props: ListBoxItemProps) { return ; } diff --git a/starters/docs/src/theme.css b/starters/docs/src/theme.css index ed23b038483..3453b27cc6a 100644 --- a/starters/docs/src/theme.css +++ b/starters/docs/src/theme.css @@ -88,6 +88,7 @@ --chroma-800: c; --chroma-900: c; --chroma-1000: c; + --chroma-1100: c; --chroma-1200: c; --chroma-1300: c; --chroma-1400: c; diff --git a/starters/tailwind/src/Dialog.tsx b/starters/tailwind/src/Dialog.tsx index 203f344cd9e..5ff2c9f1fec 100644 --- a/starters/tailwind/src/Dialog.tsx +++ b/starters/tailwind/src/Dialog.tsx @@ -4,5 +4,5 @@ import { DialogProps, Dialog as RACDialog } from 'react-aria-components'; import { twMerge } from 'tailwind-merge'; export function Dialog(props: DialogProps) { - return &]:p-4 max-h-[inherit] overflow-auto relative', props.className)} />; + return &]:p-4 max-h-[inherit] overflow-auto relative', props.className)} />; } diff --git a/starters/tailwind/src/GridList.tsx b/starters/tailwind/src/GridList.tsx index ff0b021d0d8..2a38a7d4374 100644 --- a/starters/tailwind/src/GridList.tsx +++ b/starters/tailwind/src/GridList.tsx @@ -16,7 +16,7 @@ export function GridList( { children, ...props }: GridListProps ) { return ( - + {children} ); diff --git a/starters/tailwind/src/Modal.tsx b/starters/tailwind/src/Modal.tsx index d639592b53b..0384db68b23 100644 --- a/starters/tailwind/src/Modal.tsx +++ b/starters/tailwind/src/Modal.tsx @@ -16,7 +16,7 @@ const overlayStyles = tv({ }); const modalStyles = tv({ - base: 'font-sans w-full max-w-md max-h-full rounded-2xl bg-white dark:bg-zinc-800/70 dark:backdrop-blur-2xl dark:backdrop-saturate-200 forced-colors:bg-[Canvas] text-left align-middle text-slate-700 dark:text-zinc-300 shadow-2xl bg-clip-padding border border-black/10 dark:border-white/10', + base: 'font-sans w-full max-w-[min(90vw,450px)] max-h-[calc(var(--visual-viewport-height)*.9)] rounded-2xl bg-white dark:bg-zinc-800/70 dark:backdrop-blur-2xl dark:backdrop-saturate-200 forced-colors:bg-[Canvas] text-left align-middle text-slate-700 dark:text-zinc-300 shadow-2xl bg-clip-padding border border-black/10 dark:border-white/10', variants: { isEntering: { true: 'animate-in zoom-in-105 ease-out duration-200' @@ -30,7 +30,7 @@ const modalStyles = tv({ export function Modal(props: ModalOverlayProps) { return ( -
+
diff --git a/starters/tailwind/src/Table.tsx b/starters/tailwind/src/Table.tsx index ba2f1cdd9a5..0313fdd8d50 100644 --- a/starters/tailwind/src/Table.tsx +++ b/starters/tailwind/src/Table.tsx @@ -7,6 +7,7 @@ import { Row as AriaRow, Table as AriaTable, TableHeader as AriaTableHeader, + TableBody as AriaTableBody, Button, CellProps, Collection, @@ -18,7 +19,8 @@ import { TableHeaderProps, TableProps as AriaTableProps, composeRenderProps, - useTableOptions + useTableOptions, + TableBodyProps } from 'react-aria-components'; import { twMerge } from 'tailwind-merge'; import { tv } from 'tailwind-variants'; @@ -32,7 +34,7 @@ interface TableProps extends Omit { export function Table(props: TableProps) { return ( - + ); } @@ -94,6 +96,14 @@ export function TableHeader(props: TableHeaderProps) { ); } +export function TableBody(props: TableBodyProps) { + return ( + + ); +} + const rowStyles = tv({ extend: focusRing, base: 'group/row relative cursor-default select-none -outline-offset-2 text-gray-900 disabled:text-gray-300 dark:text-zinc-200 dark:disabled:text-zinc-600 text-sm hover:bg-gray-100 dark:hover:bg-zinc-700/60 selected:bg-blue-100 selected:hover:bg-blue-200 dark:selected:bg-blue-700/30 dark:selected:hover:bg-blue-700/40' diff --git a/yarn.lock b/yarn.lock index b59d47ec636..dbf1c445a80 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7466,6 +7466,7 @@ __metadata: "@react-spectrum/utils": "npm:^3.12.6" "@react-types/shared": "npm:^3.30.0" "@react-types/textfield": "npm:^3.12.3" + emojibase-data: "npm:^16.0.3" fast-glob: "npm:^3.3.3" globals-docs: "npm:^2.4.1" gray-matter: "npm:^4.0.3" @@ -15029,6 +15030,15 @@ __metadata: languageName: node linkType: hard +"emojibase-data@npm:^16.0.3": + version: 16.0.3 + resolution: "emojibase-data@npm:16.0.3" + peerDependencies: + emojibase: "*" + checksum: 10c0/d82520917c2ec326e737da9c5a57472e41a719777fa4770b52b75f0568791613fc94829898831c7b3fff1528134de01019cdf34e571d214fee19e40950d68b7f + languageName: node + linkType: hard + "encodeurl@npm:^2.0.0, encodeurl@npm:~2.0.0": version: 2.0.0 resolution: "encodeurl@npm:2.0.0" From 5c62b4dc43da102ac5bea2b57f189e9c12bb5912 Mon Sep 17 00:00:00 2001 From: Reid Barber Date: Mon, 27 Oct 2025 13:10:30 -0500 Subject: [PATCH 2/2] docs: S2 Guides (#9083) * docs: add S2 Selection guide * add S2 Collections docs * add Forms guide * add Client Side Routing guide --- packages/dev/s2-docs/pages/s2/collections.mdx | 322 +++- packages/dev/s2-docs/pages/s2/forms.mdx | 465 +++++ packages/dev/s2-docs/pages/s2/routing.mdx | 273 +++ packages/dev/s2-docs/pages/s2/selection.mdx | 1564 ++++++++++++++++- 4 files changed, 2613 insertions(+), 11 deletions(-) create mode 100644 packages/dev/s2-docs/pages/s2/forms.mdx create mode 100644 packages/dev/s2-docs/pages/s2/routing.mdx diff --git a/packages/dev/s2-docs/pages/s2/collections.mdx b/packages/dev/s2-docs/pages/s2/collections.mdx index 8c41d643502..f018ba20f4e 100644 --- a/packages/dev/s2-docs/pages/s2/collections.mdx +++ b/packages/dev/s2-docs/pages/s2/collections.mdx @@ -10,9 +10,323 @@ export const description = 'Implementing collections in React Spectrum'; Many components display a collection of items, and provide functionality such as keyboard navigation, selection, and more. React Spectrum has a consistent, compositional API to define the items displayed in these components. +## Static collections + +A **static collection** is a collection that does not change over time (e.g. hard coded). This is common for components like menus where the items are built into the application rather than user data. + +```tsx render type="s2" +"use client"; +import {Menu, MenuTrigger, MenuItem, ActionButton} from '@react-spectrum/s2'; + + + Menu + + Open + Edit + Delete + + +``` + +### Sections + +Sections or groups of items can be constructed by wrapping the items in a section element. A `
` can also be rendered within a section to provide a section title. + + + +```tsx render type="s2" +"use client"; +import {Menu, MenuTrigger, MenuItem, MenuSection, ActionButton, Header, Heading} from '@react-spectrum/s2'; + + + Menu + + {/*- begin highlight -*/} + +
+ Styles +
+ {/*- end highlight -*/} + Bold + Underline +
+ +
+ Align +
+ Left + Middle + Right +
+
+
+``` + +```tsx render type="s2" +"use client"; +import {Picker, PickerSection, PickerItem, Header, Heading} from '@react-spectrum/s2'; + + + {/*- begin highlight -*/} + +
+ Styles +
+ {/*- end highlight -*/} + Bold + Underline +
+ +
+ Align +
+ Left + Middle + Right +
+
+``` + +
+ +## Dynamic collections + +A **dynamic collection** is a collection that is based on external data, for example from an API. In addition, it may change over time as items are added, updated, or removed from the collection by a user. + +Use the `items` prop to provide an array of objects, and a function to render each item as the `children`. This is similar to using `array.map` to render the children, but automatically memoizes the rendering of each item to improve performance. + +```tsx render type="s2" +"use client"; +import {TagGroup, Tag, ActionButton, Text} from '@react-spectrum/s2'; +import {style} from '@react-spectrum/s2/style' with {type: 'macro'}; +import AddIcon from '@react-spectrum/s2/icons/Add'; +import {useState} from 'react'; + +function Example() { + let [animals, setAnimals] = useState([ + {id: 1, name: 'Aardvark'}, + {id: 2, name: 'Kangaroo'}, + {id: 3, name: 'Snake'} + ]); + + let addItem = () => { + setAnimals([ + ...animals, + {id: animals.length + 1, name: 'Lion'} + ]); + }; + + return ( +
+ {/*- begin highlight -*/} + + {item => {item.name}} + + {/*- end highlight -*/} + + + Add item + +
+ ); +} +``` + + + useListData + For convenience, React Spectrum provides a built-in [useListData](https://react-spectrum.adobe.com/react-stately/useListData.html) hook to manage state for an immutable list of items. It includes methods to add, remove, update, and re-order items, and manage corresponding selection state. See the docs for more details. + + +### Unique ids + +All items in a collection must have a unique id, which is used for [selection](selection.html) and to track item updates. By default, React Spectrum looks for an `id` property on each object in the `items` array. You can also specify an `id` prop when rendering each item. This example uses `item.name` as the `id`. + +```tsx +let animals = [ + {name: 'Aardvark'}, + {name: 'Kangaroo'}, + {name: 'Snake'} +]; + + + {item => ( + /*- begin highlight -*/ + + {/*- end highlight -*/} + {item.name} + + )} + +``` + - Coming soon - - This page will cover collection patterns in Spectrum 2. - + React keys + React Spectrum automatically sets the React `key` using `id`. If using `array.map`, you'll need to set both `key` and `id`. + +### Dependencies + +Dynamic collections are automatically memoized to improve performance. Rendered item elements are cached based on the object identity of the list item. If rendering an item depends on additional external state, the `dependencies` prop must be provided. This invalidates rendered elements similar to dependencies in React's `useMemo` hook. + +```tsx render type="s2" +"use client"; +import {CardView, AssetCard, CardPreview, Image, Content, Text} from '@react-spectrum/s2'; +import {style} from '@react-spectrum/s2/style' with {type: 'macro'}; +import {ToggleButtonGroup, ToggleButton} from '@react-spectrum/s2'; +import {useState} from 'react'; + +const items = [ + {id: 1, name: 'Charizard', type: 'Fire, Flying', image: 'https://img.pokemondb.net/sprites/home/normal/2x/avif/charizard.avif'}, + {id: 2, name: 'Blastoise', type: 'Water', image: 'https://img.pokemondb.net/sprites/home/normal/2x/avif/blastoise.avif'}, + {id: 3, name: 'Venusaur', type: 'Grass, Poison', image: 'https://img.pokemondb.net/sprites/home/normal/2x/avif/venusaur.avif'}, + {id: 4, name: 'Pikachu', type: 'Electric', image: 'https://img.pokemondb.net/sprites/home/normal/2x/avif/pikachu.avif'} +]; + +export default function Example() { + let [showType, setShowType] = useState(false); + + return ( +
+ setShowType(keys.has('type'))} + > + Show type + + + {item => ( + + + + + + {item.name} + {/*- begin highlight -*/} + {showType && {item.type}} + {/*- end highlight -*/} + + + )} + +
+ ); +} +``` + +Note that adding dependencies will result in the _entire_ list being invalidated when a dependency changes. To avoid this and invalidate only an individual item, update the item object itself rather than accessing external state. + +### Combining collections + +To combine multiple sources of data, or mix static and dynamic items, use the `` component. + +```tsx render type="s2" +"use client"; +import {Picker, PickerSection, PickerItem, Header, Heading, Collection} from '@react-spectrum/s2'; + +let animals = [ + {id: 1, species: 'Aardvark'}, + {id: 2, species: 'Kangaroo'}, + {id: 3, species: 'Snake'} +]; + +let people = [ + {id: 4, name: 'David'}, + {id: 5, name: 'Mike'}, + {id: 6, name: 'Jane'} +]; + + + +
+ Animals +
+ {/*- begin highlight -*/} + + {item => {item.species}} + + {/*- end highlight -*/} +
+ +
+ People +
+ + {item => {item.name}} + +
+
+``` + + + Globally unique ids + Unlike React keys which must only be unique within each element, the `id` prop must be globally unique across all sections. In the above example, the ids of `animals` and `people` do not conflict. + + +## Asynchronous loading + +Data can be loaded asynchronously using any data fetching library. [useAsyncList](https://react-spectrum.adobe.com/react-stately/useAsyncList.html) is a built-in option. + +Many components support infinite scrolling via the `loadingState` and `onLoadMore` props. These trigger loading of additional pages of items automatically as the user scrolls. + +```tsx render type="s2" +"use client"; +import {TableView, TableHeader, Column, TableBody, Row, Cell} from '@react-spectrum/s2'; +import {style} from '@react-spectrum/s2/style' with {type: 'macro'}; +import {useAsyncList} from 'react-stately'; + +interface Character { + name: string +} + +function AsyncLoadingExample() { + /*- begin focus -*/ + let list = useAsyncList({ + async load({signal, cursor}) { + let res = await fetch( + cursor || `https://pokeapi.co/api/v2/pokemon`, + {signal} + ); + let json = await res.json(); + + return { + items: json.results, + cursor: json.next + }; + } + }); + /*- end focus -*/ + + return ( + + + Name + + + {(item) => ( + + {item.name} + + )} + + + ); +} +``` diff --git a/packages/dev/s2-docs/pages/s2/forms.mdx b/packages/dev/s2-docs/pages/s2/forms.mdx new file mode 100644 index 00000000000..f2a8620ce69 --- /dev/null +++ b/packages/dev/s2-docs/pages/s2/forms.mdx @@ -0,0 +1,465 @@ +import {Layout} from '../../src/Layout'; +export default Layout; + +import docs from 'docs:@react-spectrum/s2'; + +export const section = 'Guides'; +export const tags = ['forms', 'validation']; +export const description = 'Building accessible forms with validation in React Spectrum'; + +# Forms + +Forms allow users to enter and submit data, and provide them with feedback along the way. React Spectrum includes many components that integrate with HTML forms, with support for custom validation, labels, and help text. + +## Labels and help text + +Accessible forms start with clear, descriptive labels for each field. All React Spectrum form components support labeling using the `label` prop. In addition, help text associates additional context with a field such as a description or error message. The label and help text are announced by assistive technology such as screen readers when the user focuses the field. + +```tsx render +import {TextField} from '@react-spectrum/s2'; + + +``` + +Most fields should have a visible label. In rare exceptions, the `aria-label` or `aria-labelledby` attribute must be provided instead to identify the element to screen readers. + +## Submitting data + +How you submit form data depends on your framework, application, and server. By default, HTML forms are submitted by the browser using a full page refresh. You can take control of form submission by calling `preventDefault` during the `onSubmit` event, and make an API call to submit the data however you like. Frameworks like [Next.js](https://nextjs.org/docs/app/building-your-application/data-fetching/forms-and-mutations) and [Remix](https://remix.run/docs/en/main/components/form) also include builtin APIs to manage this for you. + +### Uncontrolled forms + +The simplest way to get data from a form is using the browser's [FormData](https://developer.mozilla.org/en-US/docs/Web/API/FormData) API during the `onSubmit` event. This can be passed directly to [fetch](https://developer.mozilla.org/en-US/docs/Web/API/fetch), or converted into a regular JavaScript object using [Object.fromEntries](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/fromEntries). Each field should have a `name` prop to identify it, and values will be serialized to strings by the browser. + +```tsx render +'use client'; +import {Form, TextField, ButtonGroup, Button} from '@react-spectrum/s2'; +import {style} from '@react-spectrum/s2/style' with {type: 'macro'}; +import {useState} from 'react'; + +function Example() { + let [submitted, setSubmitted] = useState(null); + + /*- begin highlight -*/ + let onSubmit = (e: React.FormEvent) => { + // Prevent default browser page refresh. + e.preventDefault(); + + // Get form data as an object. + let data = Object.fromEntries(new FormData(e.currentTarget)); + + // Submit to your backend API... + setSubmitted(data); + }; + /*- end highlight -*/ + + return ( +
+ + + + + + {submitted &&
You submitted: {JSON.stringify(submitted)}
} + + ); +} +``` + +### Controlled forms + +By default, all React Spectrum components are uncontrolled, which means that the state is stored internally on your behalf. If you need access to the value in realtime, as the user is editing, you can make it controlled. You'll need to manage the state using React's [useState](https://react.dev/reference/react/useState) hook, and pass the current value and a change handler into each form component. + +```tsx render +'use client'; +import {Form, TextField, ButtonGroup, Button} from '@react-spectrum/s2'; +import {useState} from 'react'; +import {style} from '@react-spectrum/s2/style' with {type: 'macro'}; + +function Example() { + /*- begin highlight -*/ + let [name, setName] = useState(''); + /*- end highlight -*/ + + let onSubmit = (e) => { + e.preventDefault(); + + // Submit data to your backend API... + alert(name); + }; + + return ( +
+ {/*- begin highlight -*/} + + {/*- end highlight -*/} +
You entered: {name}
+ + + + + + ); +} +``` + +## Validation + +Form validation is important to ensure user input is in an expected format and meets business requirements. Well-designed form validation assists the user with specific, helpful error messages without confusing and frustrating them with unnecessary errors on partial input. React Spectrum supports native HTML constraint validation with customizable UI, custom validation functions, realtime validation, and integration with server-side validation errors. + +### Built-in validation + +All React Spectrum form components integrate with native HTML [constraint validation](https://developer.mozilla.org/en-US/docs/Web/HTML/Constraint_validation). This allows you to define constraints on each field such as required, minimum and maximum values, text formats such as email addresses, and even custom regular expression patterns. These constraints are checked by the browser when the user commits changes to the value (e.g. on blur) or submits the form. + +To enable native validation, set the `validationBehavior="native"` prop on the [Form](Form.html) component. This example shows a required email field, which is validated by the browser and displayed with Spectrum help text. + +```tsx render +import {Form, TextField, ButtonGroup, Button} from '@react-spectrum/s2'; +import {style} from '@react-spectrum/s2/style' with {type: 'macro'}; + +
+ {/*- begin highlight -*/} + + {/*- end highlight -*/} + + + + + +``` + +Supported constraints include: + +* `isRequired` indicates that a field must have a value before the form can be submitted. +* `minValue` and `maxValue` specify the minimum and maximum value in a date picker or number field. +* `minLength` and `maxLength` specify the minimum and length of text input. +* `pattern` provides a custom [regular expression](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_expressions) that a text input must conform to. +* `type="email"` and `type="url"` provide builtin validation for email addresses and URLs. + +See each component's documentation for more details on the supported validation props. + +### Customizing error messages + +By default, React Spectrum displays the error message provided by the browser, which is localized in the user's preferred language. You can customize these messages by providing a function to the `errorMessage` prop. This receives a list of error strings along with a [ValidityState](https://developer.mozilla.org/en-US/docs/Web/API/ValidityState) object describing why the field is invalid, and should return an error message to display. + +```tsx render +"use client"; +import {Form, TextField, ButtonGroup, Button} from '@react-spectrum/s2'; +import {style} from '@react-spectrum/s2/style' with {type: 'macro'}; + +
+ ( + validationDetails.valueMissing ? 'Please enter a name.' : '' + )} + /*- end highlight -*/ + /> + + + + + +``` + +### Custom validation + +In addition to the built-in constraints, custom validation is supported by providing a function to the `validate` prop. This function receives the current field value, and can return a string or array of strings representing one or more error messages. These are displayed to the user after the value is committed (e.g. on blur) to avoid distracting them on each keystroke. + +```tsx render +"use client"; +import {Form, TextField, ButtonGroup, Button} from '@react-spectrum/s2'; +import {style} from '@react-spectrum/s2/style' with {type: 'macro'}; + +
+ value === 'admin' ? 'Nice try!' : null} + /*- end highlight -*/ + /> + + + + + +``` + +### Realtime validation + +Usually, validation errors should be displayed to the user after the value is committed (e.g. on blur), or when the form is submitted. This avoids confusing the user with irrelevant errors while they are still entering a value. + +In some cases, validating in realtime can be desireable, such as when meeting password requirements. This can be accomplished by making the field value [controlled](#controlled-forms), and setting the `validationState` and `errorMessage` props accordingly. + +```tsx render +'use client'; +import {TextField} from '@react-spectrum/s2'; +import {useState} from 'react'; + +function Example() { + let [password, setPassword] = useState(''); + let error; + if (password.length < 8) { + error = 'Password must be 8 characters or more.'; + } else if ((password.match(/[A-Z]/g) ?? []).length < 2) { + error = 'Password must include at least 2 upper case letters'; + } else if ((password.match(/[^a-z]/ig) ?? []).length < 2) { + error = 'Password must include at least 2 symbols.'; + } + + return ( + + ); +} +``` + +By default, the `validationState="invalid"` prop does not block forms from being submitted. To block form submission, use the `validationBehavior="native"` prop on the [Form](Form.html) component. + +### Server validation + +Client side validation is useful to give the user immediate feedback, but only one half of the validation story. Data should also be validated on the backend for security and reliability, and your business logic may include rules which cannot be validated on the frontend. + +React Spectrum supports displaying server validation errors by passing the `validationErrors` prop to the [Form](Form.html) component. This should be set to an object that maps each field's `name` prop to a string or array of strings representing one or more errors. These are displayed to the user as soon as the `validationErrors` prop is set, and cleared after the user modifies each field's value. + +```tsx render +'use client'; +import {Form, TextField, ButtonGroup, Button} from '@react-spectrum/s2'; +import {useState} from 'react'; +import {style} from '@react-spectrum/s2/style' with {type: 'macro'}; + +function Example() { + /*- begin highlight -*/ + let [errors, setErrors] = useState({}); + /*- end highlight -*/ + let onSubmit = async (e: React.FormEvent) => { + e.preventDefault(); + + let data = Object.fromEntries(new FormData(e.currentTarget)); + let result = await callServer(data) + /*- begin highlight -*/ + setErrors(result.errors); + /*- end highlight -*/ + }; + + return ( +
+ + + + + + + + ); +} + +// Fake server used in this example. +function callServer(data) { + return { + errors: { + username: 'Sorry, this username is taken.' + } + }; +} +``` + +#### Schema validation + +React Spectrum is compatible with errors returned from schema validation libraries like [Zod](https://zod.dev/), which are often used for server-side form validation. Use the [flatten](https://zod.dev/ERROR_HANDLING?id=flattening-errors) method to get a list of errors for each field and return this as part of your HTTP response. + +```tsx +// In your server... +import {z} from 'zod'; + +const schema = z.object({ + name: z.string().min(1), + age: z.coerce.number().positive() +}); + +function handleRequest(formData: FormData) { + let result = schema.safeParse(Object.fromEntries(formData)); + if (!result.success) { + return { + /*- begin highlight -*/ + errors: result.error.flatten().fieldErrors + /*- end highlight -*/ + }; + } + + // Do stuff... + + return { + errors: {} + }; +} +``` + +Note that error message localization is also best done on the server rather than on the client to avoid large bundles. You can submit the user's locale as part of the form data if needed, and use something like [zod-i18n](https://github.com/aiji42/zod-i18n) to translate the errors into the correct language. + +#### React Server Actions + +[Server Actions](https://nextjs.org/docs/app/building-your-application/data-fetching/forms-and-mutations) are a new React feature currently supported by Next.js. They enable the client to seamlessly call the server without setting up any API routes, and integrate with forms via the `action` prop. The [useFormState](https://react.dev/reference/react-dom/hooks/useFormState) hook can be used to get the value returned by a server action after submitting a form, which may include validation errors. + +```tsx +// app/add-form.tsx +'use client'; + +import {useFormState} from 'react-dom'; +import {Form, TextField, ActionButton} from '@react-spectrum/s2'; +import {createTodo} from '@/app/actions'; + +export function AddForm() { + /*- begin highlight -*/ + let [{errors}, formAction] = useFormState(createTodo, {errors: {}}); + /*- end highlight -*/ + + return ( + /*- begin highlight -*/ +
+ {/*- end highlight -*/} + + Add + + ); +} +``` + +```tsx +// app/actions.ts +'use server'; + +export async function createTodo(prevState: any, formData: FormData) { + try { + // Create the todo... + } catch (err) { + return { + errors: { + /*- begin highlight -*/ + todo: 'Invalid todo.' + /*- end highlight -*/ + } + }; + } +} +``` + +#### Remix + +[Remix actions](https://remix.run/docs/en/main/route/action) handle form submissions on the server. The [useSubmit](https://remix.run/docs/en/main/hooks/use-submit) hook can be used to submit data to the server, and the [useActionData](https://remix.run/docs/en/main/hooks/use-action-data) hook can be used to get the value returned by the server, which may include validation errors. + +```tsx +// app/routes/signup.tsx +import type {ActionFunctionArgs} from '@remix-run/node'; +import {useActionData, useSubmit} from '@remix-run/react'; +import {Form, TextField, Button} from '@react-spectrum/s2'; +import React from 'react'; + +export default function SignupForm() { + let submit = useSubmit(); + let onSubmit = (e: React.FormEvent) => { + e.preventDefault(); + submit(e.currentTarget); + }; + + /*- begin highlight -*/ + let actionData = useActionData(); + /*- end highlight -*/ + + return ( +
+ + + + + ); +} + +export async function action({request}: ActionFunctionArgs) { + try { + // Validate data and perform action... + } catch (err) { + return { + errors: { + /*- begin highlight -*/ + username: 'Sorry, this username is taken.' + /*- end highlight -*/ + } + }; + } +} +``` + +## Form libraries + +In most cases, uncontrolled forms with the builtin validation features are enough. However, if you are building a truly complex form, or integrating React Spectrum components into an existing form, a separate form library such as [React Hook Form](https://react-hook-form.com/) or [Formik](https://formik.org/) may be helpful. + +### React Hook Form + +[React Hook Form](https://react-hook-form.com/) is a popular form library for React. It is primarily designed to work directly with plain HTML input elements, but supports custom form components like the ones in React Spectrum as well. + +Since React Spectrum manages the state for components internally, you can use the [Controller](https://react-hook-form.com/docs/usecontroller/controller) component from React Hook Form to integrate React Spectrum components. Pass the props for the `field` render prop through to the React Spectrum component you're using, and use the `fieldState` to get validation errors to display. + +```tsx +import {useForm, Controller} from 'react-hook-form' +import {Form, TextField, Button} from '@react-spectrum/s2'; + +function App() { + let {handleSubmit, control} = useForm({ + defaultValues: { + name: '', + }, + }); + let onSubmit = (data) => { + // Call your API here... + }; + + return ( +
+ ( + + )} + /> + + + ); +} +``` diff --git a/packages/dev/s2-docs/pages/s2/routing.mdx b/packages/dev/s2-docs/pages/s2/routing.mdx new file mode 100644 index 00000000000..b7e5e0ff5a4 --- /dev/null +++ b/packages/dev/s2-docs/pages/s2/routing.mdx @@ -0,0 +1,273 @@ +import {Layout} from '../../src/Layout'; +export default Layout; + +import docs from 'docs:@react-spectrum/s2'; + +export const section = 'Guides'; +export const tags = ['links', 'navigation']; +export const description = 'Integrating client side routing with React Spectrum'; + +# Client Side Routing + +Many React Spectrum components support rendering as HTML links. This page discusses how to set up your app to integrate React Spectrum links with your framework or client side router. + +## Introduction + +React Spectrum components such as [Menu](Menu.html), [Tabs](Tabs.html), [TableView](TableView.html), and many others support rendering elements as links that perform navigation when the user interacts with them. Each component that supports link behavior accepts the `href` prop, which causes the component to render an `
` element. Other link DOM props such as `target` and `download` are also supported. + +By default, links perform native browser navigation when they are interacted with. However, many apps and frameworks use client side routers to avoid a full page reload when navigating between pages. The [Provider](getting-started.html#setting-up-your-app) component can configure all React Spectrum components within it to navigate using the client side router you provide. Set this up once in the root of your app, and any React Spectrum component with the `href` prop will automatically navigate using your router. + +Note that external links to different origins will not trigger client side routing, and will use native browser navigation. Additionally, if the link has a [target](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#target) other than `"_self"`, uses the [download](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#download) attribute, or the user presses modifier keys such as Command or Alt to change the default behavior, browser native navigation will occur instead of client side routing. + +## Provider setup + +The `Provider` component accepts a `router` prop, which can be set to a router object. This should include a `navigate` function received from your router for performing a client side navigation programmatically. It can optionally also include a `useHref` function that converts a router-specific href to a native HTML href, e.g. prepending a base path. The following example shows the general pattern. Framework-specific examples are shown below. + +```tsx +import {Provider} from '@react-spectrum/s2'; +import {useNavigate, useHref} from 'your-router'; + +function App() { + let navigate = useNavigate(); + + return ( + + {/* ... */} + + ); +} +``` + +### Router options + +All React Spectrum link components accept a `routerOptions` prop, which is an object that is passed through to the client side router's `navigate` function as the second argument. This can be used to control any router-specific behaviors, such as scrolling, replacing instead of pushing to the history, etc. + +```tsx +{/* ...*/} +``` + +When using TypeScript, you can configure the `RouterConfig` type globally so that all link components have auto complete and type safety using a type provided by your router. + +```tsx +import type {RouterOptions} from 'your-router'; + +declare module '@react-spectrum/s2' { + interface RouterConfig { + routerOptions: RouterOptions + } +} +``` + +### React Router + +The [useNavigate](https://reactrouter.com/en/main/hooks/use-navigate) hook from `react-router-dom` returns a `navigate` function you can pass to `Provider`. The [useHref](https://reactrouter.com/en/main/hooks/use-href) hook can also be provided if you're using React Router's `basename` option. Ensure that the component that calls `useNavigate` and renders `Provider` is inside the router component (e.g. `BrowserRouter`) so that it has access to React Router's internal context. The React Router `` element should also be defined inside React Spectrum's `` so that links inside the rendered routes have access to the router. + +```tsx +import {BrowserRouter, useNavigate, useHref, type NavigateOptions} from 'react-router-dom'; +import {Provider} from '@react-spectrum/s2'; + +declare module '@react-spectrum/s2' { + interface RouterConfig { + routerOptions: NavigateOptions + } +} + +function App() { + let navigate = useNavigate(); + + return ( + + {/* Your app here... */} + + } /> + {/* ... */} + + + ); +} + + + + +``` + +### Next.js + +#### App router + +The [useRouter](https://nextjs.org/docs/app/api-reference/functions/use-router) hook from `next/navigation` returns a router object that can be used to perform navigation. `Provider` should be rendered from a client component at the root of each page or layout that includes React Spectrum components. You can create a new client component for this, or combine it with other top-level providers as described in the [Next.js docs](https://nextjs.org/docs/app/building-your-application/rendering/composition-patterns#using-context-providers). + +```tsx +// app/provider.tsx +"use client"; + +import {useRouter} from 'next/navigation'; +import {Provider} from '@react-spectrum/s2'; + +declare module '@react-spectrum/s2' { + interface RouterConfig { + routerOptions: NonNullable['push']>[1]> + } +} + +export function ClientProviders({children}) { + let router = useRouter(); + + return ( + + {children} + + ); +} +``` + +Then, in your page or layout server component, wrap your app in the `ClientProviders` component that you defined. + +```tsx +// app/layout.tsx +import {ClientProviders} from './provider'; + +export default function RootLayout({children}) { + return ( + + + {children} + + + ); +} +``` + +If you are using the Next.js [basePath](https://nextjs.org/docs/app/api-reference/next-config-js/basePath) setting, you'll need to configure an environment variable to access it. Then, provide a custom `useHref` function to prepend it to the href for all links. + +```tsx +// next.config.js +const basePath = '...'; +const nextConfig = { + basePath, + env: { + BASE_PATH: basePath + } +}; +``` + +```tsx +// app/provider.tsx +// ... + +export function ClientProviders({children}) { + let router = useRouter(); + /*- begin highlight -*/ + let useHref = (href: string) => process.env.BASE_PATH + href; + /*- end highlight -*/ + + return ( + + {children} + + ); +} +``` + +#### Pages router + +The [useRouter](https://nextjs.org/docs/pages/api-reference/functions/use-router) hook from `next/router` returns a router object that can be used to perform navigation. `Provider` should be rendered at the root of each page that includes React Spectrum components, or in `pages/_app.tsx` to add it to all pages. + +```tsx +// pages/_app.tsx +import type {AppProps} from 'next/app'; +import {useRouter, type NextRouter} from 'next/router'; +import {Provider} from '@react-spectrum/s2'; + +declare module '@react-spectrum/s2' { + interface RouterConfig { + routerOptions: NonNullable[2]> + } +} + +export default function MyApp({Component, pageProps}: AppProps) { + let router = useRouter(); + + return ( + router.push(href, undefined, opts), + }}> + + + ); +} +``` + +When using the [basePath](https://nextjs.org/docs/app/api-reference/next-config-js/basePath) configuration option, provide a `useHref` option to the `router` passed to `Provider` to prepend it to links automatically. + +```tsx +// pages/_app.tsx +// ... + +export default function MyApp({Component, pageProps}: AppProps) { + let router = useRouter(); + + return ( + router.push(href, undefined, opts), + /*- begin highlight -*/ + useHref: (href: string) => router.basePath + href + /*- end highlight -*/ + }}> + + + ); +} +``` + +### Remix + +Remix uses React Router under the hood, so the same [useNavigate](https://reactrouter.com/en/main/hooks/use-navigate) and [useHref](https://reactrouter.com/en/main/hooks/use-href) hooks described above also work in Remix apps. `Provider` should be rendered at the root of each page that includes React Spectrum components, or in `app/root.tsx` to add it to all pages. See the [Remix docs](https://remix.run/docs/en/main/file-conventions/root) for more details. + +```tsx +// app/root.tsx +import {useNavigate, useHref, Outlet} from '@remix-run/react'; +import type {NavigateOptions} from 'react-router-dom'; +import {Provider} from '@react-spectrum/s2'; + +declare module '@react-spectrum/s2' { + interface RouterConfig { + routerOptions: NavigateOptions + } +} + +export default function App() { + let navigate = useNavigate(); + + return ( + + + {/* ... */} + + + + + + {/* ... */} + + + ); +} +``` + +## TanStack Router + +To use [TanStack Router](https://tanstack.com/router) with React Spectrum, use the [createLink](https://tanstack.com/router/latest/docs/framework/react/guide/custom-link) function to wrap each React Spectrum component as a link. `RouterProvider` is not needed. + +```tsx +// src/Link.tsx +import {createLink} from '@tanstack/react-router'; +import {Link as SpectrumLink, MenuItem} from '@react-spectrum/s2'; + +export const Link = createLink(SpectrumLink); +export const MenuItemLink = createLink(MenuItem); +``` + +In your app, use these components instead of importing directly from `@react-spectrum/s2`. diff --git a/packages/dev/s2-docs/pages/s2/selection.mdx b/packages/dev/s2-docs/pages/s2/selection.mdx index 7a54a0897d4..777dce176d8 100644 --- a/packages/dev/s2-docs/pages/s2/selection.mdx +++ b/packages/dev/s2-docs/pages/s2/selection.mdx @@ -1,7 +1,8 @@ import {Layout} from '../../src/Layout'; -import {InlineAlert, Heading, Content} from '@react-spectrum/s2'; export default Layout; +import docs from 'docs:@react-spectrum/s2'; + export const section = 'Guides'; export const tags = ['collections']; export const description = 'Implementing selection in React Spectrum'; @@ -10,9 +11,1558 @@ export const description = 'Implementing selection in React Spectrum'; Many collection components support selecting items by clicking or tapping them, or by using the keyboard. This page discusses how to handle selection events, how to control selection programmatically, and the data structures used to represent a selection. - - Coming soon - - This page will cover selection patterns in Spectrum 2. - - +## Multiple selection + +Most collection components support item selection, which is handled by the `onSelectionChange` event. Use the `selectedKeys` prop to control the selected items programmatically, or `defaultSelectedKeys` for uncontrolled behavior. + +Selection is represented by a [Set](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set) containing the `id` of each selected item. You can also pass any iterable collection (e.g. an array) to the `selectedKeys` and `defaultSelectedKeys` props, but the `onSelectionChange` event will always pass back a Set. + + + +```tsx render type="s2" +"use client"; +import {CardView, AssetCard, CardPreview, Image, Content, Text, type Selection} from '@react-spectrum/s2'; +import {style} from '@react-spectrum/s2/style' with {type: 'macro'}; +import {useState} from 'react'; + +function Example() { + let [selectedKeys, setSelectedKeys] = useState(new Set(['lion'])); + + return ( +
+ + + + + + + Desert Sunset + PNG • 2/3/2024 + + + + + + + + Hiking Trail + JPEG • 1/10/2022 + + + + + + + + Lion + JPEG • 8/28/2021 + + + + + + + + Mountain Sunrise + PNG • 3/15/2015 + + + +

selectedKeys: {selectedKeys === 'all' ? 'all' : [...selectedKeys].join(', ')}

+
+ ); +} +``` + +```tsx render type="s2" +"use client"; +import {Menu, MenuTrigger, MenuItem, ActionButton, type Selection} from '@react-spectrum/s2'; +import {style} from '@react-spectrum/s2/style' with {type: 'macro'}; +import {useState} from 'react'; + +function Example() { + let [selectedKeys, setSelectedKeys] = useState(new Set(['rulers'])); + + return ( +
+ + View + + Pixel grid + Rulers + Layout guides + Toolbar + + +

selectedKeys: {selectedKeys === 'all' ? 'all' : [...selectedKeys].join(', ')}

+
+ ); +} +``` + +```tsx render type="s2" +"use client"; +import {SelectBoxGroup, SelectBox, Text, type Selection} from '@react-spectrum/s2'; +import {style} from '@react-spectrum/s2/style' with {type: 'macro'}; +import {useState} from 'react'; +import Server from '@react-spectrum/s2/illustrations/linear/Server'; +import StarFilled from '@react-spectrum/s2/illustrations/linear/Star'; +import AlertNotice from '@react-spectrum/s2/illustrations/linear/AlertNotice'; +import PaperAirplane from '@react-spectrum/s2/illustrations/linear/Paperairplane'; + +function Example() { + let [selectedKeys, setSelectedKeys] = useState(new Set(['aws'])); + + return ( +
+ + + + Amazon Web Services + + + + Microsoft Azure + + + + Google Cloud Platform + + +

selectedKeys: {selectedKeys === 'all' ? 'all' : [...selectedKeys].join(', ')}

+
+ ); +} +``` + +```tsx render type="s2" +"use client"; +import {TableView, TableHeader, Column, TableBody, Row, Cell, type Selection} from '@react-spectrum/s2'; +import {style} from '@react-spectrum/s2/style' with {type: 'macro'}; +import {useState} from 'react'; + +///- begin collapse -/// +const rows = [ + {id: 'lettuce', name: 'Lettuce', type: 'Vegetable', calories: 4}, + {id: 'tomato', name: 'Tomato', type: 'Vegetable', calories: 5}, + {id: 'cheese', name: 'Cheddar', type: 'Cheese', calories: 113}, + {id: 'tuna', name: 'Tuna salad', type: 'Salad', calories: 187}, + {id: 'egg', name: 'Egg salad', type: 'Salad', calories: 200}, + {id: 'ham', name: 'Ham', type: 'Meat', calories: 205} +]; +///- end collapse -/// + +function Example() { + let [selectedKeys, setSelectedKeys] = useState(new Set(['cheese'])); + + return ( +
+ + + Name + Type + Calories + + + {item => ( + + {item.name} + {item.type} + {item.calories} + + )} + + +

selectedKeys: {selectedKeys === 'all' ? 'all' : [...selectedKeys].join(', ')}

+
+ ); +} +``` + +```tsx render type="s2" +"use client"; +import {TagGroup, Tag, type Selection} from '@react-spectrum/s2'; +import {style} from '@react-spectrum/s2/style' with {type: 'macro'}; +import {useState} from 'react'; + +function Example() { + let [selectedKeys, setSelectedKeys] = useState(new Set(['cheese'])); + + return ( +
+ + Lettuce + Tomato + Cheese + Tuna Salad + Egg Salad + Ham + +

selectedKeys: {selectedKeys === 'all' ? 'all' : [...selectedKeys].join(', ')}

+
+ ); +} +``` + +```tsx render type="s2" +"use client"; +import {ToggleButtonGroup, ToggleButton, Text, type Selection} from '@react-spectrum/s2'; +import {style} from '@react-spectrum/s2/style' with {type: 'macro'}; +import {useState} from 'react'; +import TextBold from '@react-spectrum/s2/icons/TextBold'; +import TextItalic from '@react-spectrum/s2/icons/TextItalic'; +import TextUnderline from '@react-spectrum/s2/icons/TextUnderline'; + +function Example() { + let [selectedKeys, setSelectedKeys] = useState(new Set(['bold'])); + + return ( +
+ + + + Bold + + + + Italic + + + + Underline + + +

selectedKeys: {selectedKeys === 'all' ? 'all' : [...selectedKeys].join(', ')}

+
+ ); +} +``` + +```tsx render type="s2" +"use client"; +import {TreeView, TreeViewItem, TreeViewItemContent, type Selection} from '@react-spectrum/s2'; +import {style} from '@react-spectrum/s2/style' with {type: 'macro'}; +import {useState} from 'react'; + +function Example() { + let [selectedKeys, setSelectedKeys] = useState(new Set(['project'])); + + return ( +
+ + + Documents + + Project + + Weekly Report + + + + + Photos + + Image 1 + + + Image 2 + + + +

selectedKeys: {selectedKeys === 'all' ? 'all' : [...selectedKeys].join(', ')}

+
+ ); +} +``` + +
+ +### Select all + +Some components support a checkbox to select all items in the collection, or a keyboard shortcut like ⌘ Cmd + A. This represents a selection of all items in the collection, regardless of whether or not all items have been loaded from the network. For example, when using a component with infinite scrolling support, the user will be unaware that all items are not yet loaded. For this reason, it makes sense for select all to represent all items, not just the loaded ones. + +When a select all event occurs, `onSelectionChange` is called with the string `"all"` rather than a set of selected keys. `selectedKeys` +and `defaultSelectedKeys` can also be set to `"all"` to programmatically select all items. The application must adjust its handling of bulk actions in this case to apply to the entire collection rather than only the keys available to it locally. + +```tsx render type="s2" +"use client"; +import {TableView, TableHeader, Column, TableBody, Row, Cell} from '@react-spectrum/s2'; +import {style} from '@react-spectrum/s2/style' with {type: 'macro'}; +import {useState} from 'react'; + +///- begin collapse -/// +const rows = [ + {name: 'Games', date: '6/7/2020', type: 'File folder'}, + {name: 'Program Files', date: '4/7/2021', type: 'File folder'}, + {name: 'bootmgr', date: '11/20/2010', type: 'System file'}, + {name: 'log.txt', date: '1/18/2016', type: 'Text Document'} +]; +///- end collapse -/// + +function Example() { + let [selectedKeys, setSelectedKeys] = useState(new Set()); + + ///- begin highlight -/// + function performBulkAction() { + if (selectedKeys === 'all') { + // perform action on all items + } else { + // perform action on selected items in selectedKeys + } + } + ///- end highlight -/// + + ///- begin collapse -/// + return ( +
+ + + Name + Type + Date Modified + + + {item => ( + + {item.name} + {item.type} + {item.date} + + )} + + +

selectedKeys: {selectedKeys === 'all' ? 'all' : [...selectedKeys].join(', ')}

+
+ ); + ///- end collapse -/// +} +``` + +## Single selection + +In components which support multiple selection, you can limit the selection to a single item using the +`selectionMode` prop. This continues to accept `selectedKeys` and `defaultSelectedKeys` as a `Set`, but it will +only contain a single id at a time. + +ComboBox, SegmentedControl, and Tabs only support single selection and use the `selectedKey` prop (singular) rather than `selectedKeys`. + + + +```tsx render type="s2" +"use client"; +import {CardView, AssetCard, CardPreview, Image, Content, Text, type Selection} from '@react-spectrum/s2'; +import {style} from '@react-spectrum/s2/style' with {type: 'macro'}; +import {useState} from 'react'; + +function Example() { + let [selectedKeys, setSelectedKeys] = useState(new Set(['lion'])); + + return ( +
+ + + + + + + Desert Sunset + PNG • 2/3/2024 + + + + + + + + Hiking Trail + JPEG • 1/10/2022 + + + + + + + + Lion + JPEG • 8/28/2021 + + + + + + + + Mountain Sunrise + PNG • 3/15/2015 + + + +

selectedKeys: {selectedKeys === 'all' ? 'all' : [...selectedKeys].join(', ')}

+
+ ); +} +``` + +```tsx render type="s2" +"use client"; +import {ComboBox, ComboBoxItem, type Key} from '@react-spectrum/s2'; +import {style} from '@react-spectrum/s2/style' with {type: 'macro'}; +import {useState} from 'react'; + +function Example() { + let [selectedKey, setSelectedKey] = useState('kangaroo'); + + return ( +
+ + Koala + Kangaroo + Platypus + Bald Eagle + Bison + Skunk + +

selectedKey: {selectedKey}

+
+ ); +} +``` + +```tsx render type="s2" +"use client"; +import {Menu, MenuTrigger, MenuItem, ActionButton, type Selection} from '@react-spectrum/s2'; +import {style} from '@react-spectrum/s2/style' with {type: 'macro'}; +import {useState} from 'react'; + +function Example() { + let [selectedKeys, setSelectedKeys] = useState(new Set(['grid'])); + + return ( +
+ + View + + Pixel grid + Rulers + Layout guides + Toolbar + + +

selectedKeys: {selectedKeys === 'all' ? 'all' : [...selectedKeys].join(', ')}

+
+ ); +} +``` + +```tsx render type="s2" +"use client"; +import {SegmentedControl, SegmentedControlItem, type Key} from '@react-spectrum/s2'; +import {style} from '@react-spectrum/s2/style' with {type: 'macro'}; +import {useState} from 'react'; + +function Example() { + let [selectedKey, setSelectedKey] = useState('month'); + + return ( +
+ + Day + Week + Month + Year + +

selectedKey: {selectedKey}

+
+ ); +} +``` + +```tsx render type="s2" +"use client"; +import {SelectBoxGroup, SelectBox, Text, type Selection} from '@react-spectrum/s2'; +import {style} from '@react-spectrum/s2/style' with {type: 'macro'}; +import {useState} from 'react'; +import Server from '@react-spectrum/s2/illustrations/linear/Server'; +import StarFilled from '@react-spectrum/s2/illustrations/linear/Star'; +import AlertNotice from '@react-spectrum/s2/illustrations/linear/AlertNotice'; + +function Example() { + let [selectedKeys, setSelectedKeys] = useState(new Set(['aws'])); + + return ( +
+ + + + Amazon Web Services + + + + Microsoft Azure + + + + Google Cloud Platform + + +

selectedKeys: {selectedKeys === 'all' ? 'all' : [...selectedKeys].join(', ')}

+
+ ); +} +``` + +```tsx render type="s2" +"use client"; +import {TableView, TableHeader, Column, TableBody, Row, Cell, type Selection} from '@react-spectrum/s2'; +import {style} from '@react-spectrum/s2/style' with {type: 'macro'}; +import {useState} from 'react'; + +///- begin collapse -/// +const rows = [ + {id: 'lettuce', name: 'Lettuce', type: 'Vegetable'}, + {id: 'tomato', name: 'Tomato', type: 'Vegetable'}, + {id: 'cheese', name: 'Cheddar', type: 'Cheese'}, + {id: 'tuna', name: 'Tuna salad', type: 'Salad'} +]; +///- end collapse -/// + +function Example() { + let [selectedKeys, setSelectedKeys] = useState(new Set(['cheese'])); + + return ( +
+ + + Name + Type + + + {item => ( + + {item.name} + {item.type} + + )} + + +

selectedKeys: {selectedKeys === 'all' ? 'all' : [...selectedKeys].join(', ')}

+
+ ); +} +``` + +```tsx render type="s2" +"use client"; +import {Tabs, TabList, Tab, TabPanel, type Key} from '@react-spectrum/s2'; +import {style} from '@react-spectrum/s2/style' with {type: 'macro'}; +import {useState} from 'react'; + +function Example() { + let [selectedKey, setSelectedKey] = useState('files'); + + return ( +
+ + + Home + Files + Settings + + Home content + Files content + Settings content + +

selectedKey: {selectedKey}

+
+ ); +} +``` + +```tsx render type="s2" +"use client"; +import {TagGroup, Tag, type Selection} from '@react-spectrum/s2'; +import {style} from '@react-spectrum/s2/style' with {type: 'macro'}; +import {useState} from 'react'; + +function Example() { + let [selectedKeys, setSelectedKeys] = useState(new Set(['cheese'])); + + return ( +
+ + Lettuce + Tomato + Cheese + Tuna Salad + +

selectedKeys: {selectedKeys === 'all' ? 'all' : [...selectedKeys].join(', ')}

+
+ ); +} +``` + +```tsx render type="s2" +"use client"; +import {ToggleButtonGroup, ToggleButton, Text, type Selection} from '@react-spectrum/s2'; +import {style} from '@react-spectrum/s2/style' with {type: 'macro'}; +import {useState} from 'react'; +import AlignLeft from '@react-spectrum/s2/icons/AlignLeft'; +import AlignCenter from '@react-spectrum/s2/icons/AlignCenter'; +import AlignRight from '@react-spectrum/s2/icons/AlignRight'; + +function Example() { + let [selectedKeys, setSelectedKeys] = useState(new Set(['left'])); + + return ( +
+ + + + Left + + + + Center + + + + Right + + +

selectedKeys: {selectedKeys === 'all' ? 'all' : [...selectedKeys].join(', ')}

+
+ ); +} +``` + +```tsx render type="s2" +"use client"; +import {TreeView, TreeViewItem, TreeViewItemContent, type Selection} from '@react-spectrum/s2'; +import {style} from '@react-spectrum/s2/style' with {type: 'macro'}; +import {useState} from 'react'; + +function Example() { + let [selectedKeys, setSelectedKeys] = useState(new Set(['documents'])); + + return ( +
+ + + Documents + + Project + + + + Photos + + Image 1 + + + +

selectedKeys: {selectedKeys === 'all' ? 'all' : [...selectedKeys].join(', ')}

+
+ ); +} +``` + +
+ +## Item actions + +In addition to selection, some collection components support item actions via the `onAction` prop. When nothing is selected, clicking, tapping, or pressing the Enter key triggers the item action. Items may be selected using the checkbox, or by pressing the Space key. When at least one item is selected, clicking or tapping a row toggles the selection. + +On touch devices, actions are the primary tap interaction. Long pressing enters selection mode, which temporarily swaps the selection behavior to where tapping toggles the selection. Deselecting all items exits selection mode and reverts the selection behavior back to where tapping triggers the action. Keyboard behaviors are unaffected. + + + +```tsx render wide type="s2" +"use client"; +import {CardView, AssetCard, CardPreview, Image, Content, Text} from '@react-spectrum/s2'; +import {style} from '@react-spectrum/s2/style' with {type: 'macro'}; + + + alert('Opening Desert Sunset')}> + {/*- end highlight -*/} + + + + + Desert Sunset + PNG • 2/3/2024 + + + alert('Opening Hiking Trail')}> + + + + + Hiking Trail + JPEG • 1/10/2022 + + + alert('Opening Lion')}> + + + + + Lion + JPEG • 8/28/2021 + + + +``` + +```tsx render wide type="s2" +"use client"; +import {TableView, TableHeader, Column, Row, TableBody, Cell} from '@react-spectrum/s2'; +import {style} from '@react-spectrum/s2/style' with {type: 'macro'}; +import {useState} from 'react'; + + + + Name + Type + Date Modified + + + {/*- begin highlight -*/} + alert('Opening Games')}> + {/*- end highlight -*/} + Games + File folder + 6/7/2020 + + alert('Opening Documents')}> + Documents + File folder + 4/7/2021 + + alert('Opening Photos')}> + Photos + File folder + 11/20/2010 + + + +``` + +```tsx render wide type="s2" +"use client"; +import {TreeView, TreeViewItem, TreeViewItemContent} from '@react-spectrum/s2'; +import {style} from '@react-spectrum/s2/style' with {type: 'macro'}; + + + + My Computer + alert('Opening Games')} > + {/*- end highlight -*/} + Games + + alert('Opening Documents')} > + Documents + + alert('Opening Photos')} > + Photos + + + +``` + + + +In dynamic collections, it may be more convenient to use the `onAction` prop at the collection level instead of on individual items. This receives the id of the pressed item. + + + +```tsx render wide type="s2" +"use client"; +import {CardView, AssetCard, CardPreview, Image, Content, Text} from '@react-spectrum/s2'; +import {style} from '@react-spectrum/s2/style' with {type: 'macro'}; + +///- begin collapse -/// +const photos = [ + {id: 'desert', title: 'Desert Sunset', description: 'PNG • 2/3/2024', image: 'https://images.unsplash.com/photo-1705034598432-1694e203cdf3?q=80&w=600&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', width: 600, height: 400}, + {id: 'hiking', title: 'Hiking Trail', description: 'JPEG • 1/10/2022', image: 'https://images.unsplash.com/photo-1722233987129-61dc344db8b6?q=80&w=600&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', width: 600, height: 900}, + {id: 'lion', title: 'Lion', description: 'JPEG • 8/28/2021', image: 'https://images.unsplash.com/photo-1629812456605-4a044aa38fbc?q=80&w=600&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', width: 600, height: 899} +]; +///- end collapse -/// + + alert(`Opening ${id}`)} + /*- end highlight -*/ + styles={style({width: 'full', height: 320})} + items={photos}> + {photo => ( + + + + + + {photo.title} + {photo.description} + + + )} + +``` + +```tsx render wide type="s2" +"use client"; +import {TableView, TableHeader, Column, Row, TableBody, Cell} from '@react-spectrum/s2'; +import {style} from '@react-spectrum/s2/style' with {type: 'macro'}; +import {useState} from 'react'; + +///- begin collapse -/// +const files = [ + {id: 'games', name: 'Games', type: 'Folder', date: '6/7/2020'}, + {id: 'documents', name: 'Documents', type: 'Folder', date: '4/7/2021'}, + {id: 'photos', name: 'Photos', type: 'Folder', date: '11/20/2010'} +]; +///- end collapse -/// + + alert(`Opening ${id}`)} + /*- end highlight -*/ + styles={style({width: 'full'})}> + + Name + Type + Date Modified + + + {item => ( + + {item.name} + {item.type} + {item.date} + + )} + + +``` + +```tsx render wide type="s2" +"use client"; +import {TreeView, TreeViewItem, TreeViewItemContent, Collection} from '@react-spectrum/s2'; +import {style} from '@react-spectrum/s2/style' with {type: 'macro'}; + +///- begin collapse -/// +const files = [ + {id: 'games', name: 'Games'}, + {id: 'documents', name: 'Documents'}, + {id: 'photos', name: 'Photos'} +]; +///- end collapse -/// + + alert(`Opening ${id}`)} + /*- end highlight -*/ + styles={style({height: 250, width: 360})}> + + My Computer + + {item => ( + + {item.name} + + )} + + + +``` + + + +## Disabled items + +An item can be disabled with the `isDisabled` prop. By default, disabled items are not focusable, selectable, or actionable. When `disabledBehavior="selection"`, only selection is disabled. + + + +```tsx render wide type="s2" +"use client"; +import {CardView, AssetCard, CardPreview, Image, Content, Text} from '@react-spectrum/s2'; +import {style} from '@react-spectrum/s2/style' with {type: 'macro'}; + + + + + + + + Charizard + Fire, Flying • Level 67 + + + + + + + + Blastoise + Water • Level 56 + + + {/*- begin highlight -*/} + + {/*- end highlight -*/} + + + + + Venusaur + Grass, Poison • Level 83 + + + + + + + + Pikachu + Electric • Level 100 + + + +``` + +```tsx render wide type="s2" +"use client"; +import {ComboBox, ComboBoxItem} from '@react-spectrum/s2'; + + + Charizard + Blastoise + {/*- begin highlight -*/} + Venusaur + {/*- end highlight -*/} + Pikachu + +``` + +```tsx render wide type="s2" +"use client"; +import {Menu, MenuTrigger, MenuItem, ActionButton} from '@react-spectrum/s2'; + + + Pokemon + + Charizard + Blastoise + {/*- begin highlight -*/} + Venusaur + {/*- end highlight -*/} + Pikachu + + +``` + +```tsx render wide type="s2" +"use client"; +import {SegmentedControl, SegmentedControlItem} from '@react-spectrum/s2'; + + + Day + {/*- begin highlight -*/} + Week + {/*- end highlight -*/} + Month + Year + +``` + +```tsx render wide type="s2" +"use client"; +import {SelectBoxGroup, SelectBox, Text} from '@react-spectrum/s2'; +import {style} from '@react-spectrum/s2/style' with {type: 'macro'}; +import Server from '@react-spectrum/s2/illustrations/linear/Server'; +import StarFilled from '@react-spectrum/s2/illustrations/linear/Star'; +import AlertNotice from '@react-spectrum/s2/illustrations/linear/AlertNotice'; +import PaperAirplane from '@react-spectrum/s2/illustrations/linear/Paperairplane'; + + + + + Amazon Web Services + + + + Microsoft Azure + + {/*- begin highlight -*/} + + {/*- end highlight -*/} + + Google Cloud Platform + + +``` + +```tsx render wide type="s2" +import {TableView, TableHeader, Column, Row, TableBody, Cell} from '@react-spectrum/s2'; +import {style} from '@react-spectrum/s2/style' with {type: 'macro'}; + + + + Name + Type + Level + + + + Charizard + Fire, Flying + 67 + + + Blastoise + Water + 56 + + {/*- begin highlight -*/} + + {/*- end highlight -*/} + Venusaur + Grass, Poison + 83 + + + Pikachu + Electric + 100 + + + +``` + +```tsx render wide type="s2" +"use client"; +import {Tabs, TabList, Tab, TabPanel} from '@react-spectrum/s2'; + + + + Home + Files + {/*- begin highlight -*/} + Search + {/*- end highlight -*/} + Settings + + Home content + Files content + Search content + Settings content + +``` + +```tsx render wide type="s2" +"use client"; +import {TagGroup, Tag} from '@react-spectrum/s2'; + + + Charizard + Blastoise + {/*- begin highlight -*/} + Venusaur + {/*- end highlight -*/} + Pikachu + +``` + +```tsx render wide type="s2" +"use client"; +import {ToggleButtonGroup, ToggleButton, Text} from '@react-spectrum/s2'; +import TextBold from '@react-spectrum/s2/icons/TextBold'; +import TextItalic from '@react-spectrum/s2/icons/TextItalic'; +import TextUnderline from '@react-spectrum/s2/icons/TextUnderline'; + + + + + Bold + + {/*- begin highlight -*/} + + {/*- end highlight -*/} + + Italic + + + + Underline + + +``` + +```tsx render wide type="s2" +"use client"; +import {TreeView, TreeViewItem, TreeViewItemContent} from '@react-spectrum/s2'; +import {style} from '@react-spectrum/s2/style' with {type: 'macro'}; + + + + Bulbasaur + + Ivysaur + {/*- begin highlight -*/} + + Venusaur + + {/*- end highlight -*/} + + + + Charmander + + Charmeleon + + Charizard + + + + + Squirtle + + Wartortle + + Blastoise + + + + +``` + + + +In dynamic collections, it may be more convenient to use the `disabledKeys` prop at the collection level instead of `isDisabled` on individual items. This accepts a list of item ids that are disabled. + + + +```tsx render wide type="s2" +"use client"; +import {CardView, AssetCard, CardPreview, Image, Content, Text} from '@react-spectrum/s2'; +import {style} from '@react-spectrum/s2/style' with {type: 'macro'}; + +///- begin collapse -/// +const items = [ + {id: 1, name: 'Charizard', type: 'Fire, Flying', level: 67}, + {id: 2, name: 'Blastoise', type: 'Water', level: 56}, + {id: 3, name: 'Venusaur', type: 'Grass, Poison', level: 83}, + {id: 4, name: 'Pikachu', type: 'Electric', level: 100} +]; +///- end collapse -/// + + + {item => ( + + + + + + {item.name} + {item.type} • Level {item.level} + + + )} + +``` + +```tsx render wide type="s2" +"use client"; +import {ComboBox, ComboBoxItem} from '@react-spectrum/s2'; + +///- begin collapse -/// +const items = [ + {id: 1, name: 'Charizard'}, + {id: 2, name: 'Blastoise'}, + {id: 3, name: 'Venusaur'}, + {id: 4, name: 'Pikachu'} +]; +///- end collapse -/// + + + {item => {item.name}} + +``` + +```tsx render wide type="s2" +"use client"; +import {Menu, MenuTrigger, MenuItem, ActionButton} from '@react-spectrum/s2'; + +///- begin collapse -/// +const items = [ + {id: 1, name: 'Charizard'}, + {id: 2, name: 'Blastoise'}, + {id: 3, name: 'Venusaur'}, + {id: 4, name: 'Pikachu'} +]; +///- end collapse -/// + + + Pokemon + + {item => {item.name}} + + +``` + +```tsx render wide type="s2" +"use client"; +import {SelectBoxGroup, SelectBox, Text} from '@react-spectrum/s2'; +import {style} from '@react-spectrum/s2/style' with {type: 'macro'}; +import Server from '@react-spectrum/s2/illustrations/linear/Server'; +import StarFilled from '@react-spectrum/s2/illustrations/linear/Star'; +import AlertNotice from '@react-spectrum/s2/illustrations/linear/AlertNotice'; +import PaperAirplane from '@react-spectrum/s2/illustrations/linear/Paperairplane'; + +///- begin collapse -/// +const items = [ + {id: 1, name: 'AWS', illustration: }, + {id: 2, name: 'Azure', illustration: }, + {id: 3, name: 'GCP', illustration: } +]; +///- end collapse -/// + + + {item => ( + + {item.illustration} + {item.name} + + )} + +``` + +```tsx render wide type="s2" +"use client"; +import {TableView, TableHeader, Column, Row, TableBody, Cell} from '@react-spectrum/s2'; +import {style} from '@react-spectrum/s2/style' with {type: 'macro'}; + +///- begin collapse -/// +let items = [ + {id: 1, name: 'Charizard', type: 'Fire, Flying', level: 67}, + {id: 2, name: 'Blastoise', type: 'Water', level: 56}, + {id: 3, name: 'Venusaur', type: 'Grass, Poison', level: 83}, + {id: 4, name: 'Pikachu', type: 'Electric', level: 100} +]; +///- end collapse -/// + + + + Name + Type + Level + + + {item => ( + + {item.name} + {item.type} + {item.level} + + )} + + +``` + +```tsx render wide type="s2" +"use client"; +import {TagGroup, Tag} from '@react-spectrum/s2'; + +///- begin collapse -/// +const items = [ + {id: 1, name: 'Charizard'}, + {id: 2, name: 'Blastoise'}, + {id: 3, name: 'Venusaur'}, + {id: 4, name: 'Pikachu'} +]; +///- end collapse -/// + + + {item => {item.name}} + +``` + +```tsx render wide type="s2" +"use client"; +import {TreeView, TreeViewItem, TreeViewItemContent, Collection} from '@react-spectrum/s2'; +import {style} from '@react-spectrum/s2/style' with {type: 'macro'}; + +///- begin collapse -/// +let items = [ + {id: 1, name: 'Bulbasaur', type: 'Grass', level: 14, children: [ + {id: 2, name: 'Ivysaur', type: 'Grass', level: 30, children: [ + {id: 3, name: 'Venusaur', type: 'Grass', level: 83} + ]} + ]}, + {id: 4, name: 'Charmander', type: 'Fire', level: 16, children: [ + {id: 5, name: 'Charmeleon', type: 'Fire', level: 32, children: [ + {id: 6, name: 'Charizard', type: 'Fire, Flying', level: 67} + ]} + ]}, + {id: 7, name: 'Squirtle', type: 'Water', level: 8, children: [ + {id: 8, name: 'Wartortle', type: 'Water', level: 34, children: [ + {id: 9, name: 'Blastoise', type: 'Water', level: 56} + ]} + ]} +]; +///- end collapse -/// + + + {function renderItem(item) { + return ( + + {item.name} + + {renderItem} + + + ) + }} + +``` + +