@usefragments/ui 1.6.0 → 1.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -4
- package/dist/assets/fragments-wordmark.cjs +2 -2
- package/dist/assets/fragments-wordmark.d.ts.map +1 -1
- package/dist/assets/fragments-wordmark.js +2 -2
- package/dist/assets/ui.css +4720 -4159
- package/dist/chart.cjs +24 -6
- package/dist/chart.js +24 -6
- package/dist/codeblock.cjs +55 -29
- package/dist/codeblock.js +55 -29
- package/dist/colorpicker.cjs +3 -1
- package/dist/colorpicker.js +3 -1
- package/dist/components/Accordion/Accordion.module.scss.cjs +8 -8
- package/dist/components/Accordion/Accordion.module.scss.js +8 -8
- package/dist/components/Alert/Alert.module.scss.cjs +15 -12
- package/dist/components/Alert/Alert.module.scss.js +15 -12
- package/dist/components/Alert/index.cjs +7 -1
- package/dist/components/Alert/index.d.ts +12 -6
- package/dist/components/Alert/index.d.ts.map +1 -1
- package/dist/components/Alert/index.js +7 -1
- package/dist/components/AppShell/AppShell.module.scss.cjs +14 -14
- package/dist/components/AppShell/AppShell.module.scss.js +14 -14
- package/dist/components/Avatar/Avatar.module.scss.cjs +14 -14
- package/dist/components/Avatar/Avatar.module.scss.js +14 -14
- package/dist/components/Badge/Badge.module.scss.cjs +19 -19
- package/dist/components/Badge/Badge.module.scss.js +19 -19
- package/dist/components/BentoGrid/BentoGrid.module.scss.cjs +14 -14
- package/dist/components/BentoGrid/BentoGrid.module.scss.js +14 -14
- package/dist/components/Box/Box.module.scss.cjs +152 -152
- package/dist/components/Box/Box.module.scss.js +152 -152
- package/dist/components/Box/index.cjs +64 -75
- package/dist/components/Box/index.d.ts +16 -16
- package/dist/components/Box/index.d.ts.map +1 -1
- package/dist/components/Box/index.js +64 -75
- package/dist/components/Breadcrumbs/Breadcrumbs.module.scss.cjs +8 -8
- package/dist/components/Breadcrumbs/Breadcrumbs.module.scss.js +8 -8
- package/dist/components/Button/Button.module.scss.cjs +14 -14
- package/dist/components/Button/Button.module.scss.js +14 -14
- package/dist/components/Card/Card.module.scss.cjs +29 -17
- package/dist/components/Card/Card.module.scss.js +30 -18
- package/dist/components/Card/index.cjs +8 -0
- package/dist/components/Card/index.d.ts +12 -2
- package/dist/components/Card/index.d.ts.map +1 -1
- package/dist/components/Card/index.js +8 -0
- package/dist/components/Chart/Chart.module.scss.cjs +15 -15
- package/dist/components/Chart/Chart.module.scss.js +15 -15
- package/dist/components/Chart/index.d.ts.map +1 -1
- package/dist/components/Checkbox/Checkbox.module.scss.cjs +9 -9
- package/dist/components/Checkbox/Checkbox.module.scss.js +9 -9
- package/dist/components/Checkbox/index.cjs +2 -2
- package/dist/components/Checkbox/index.d.ts.map +1 -1
- package/dist/components/Checkbox/index.js +2 -2
- package/dist/components/Chip/Chip.module.scss.cjs +15 -15
- package/dist/components/Chip/Chip.module.scss.js +15 -15
- package/dist/components/Chip/index.cjs +2 -1
- package/dist/components/Chip/index.d.ts.map +1 -1
- package/dist/components/Chip/index.js +2 -1
- package/dist/components/CodeBlock/CodeBlock.module.scss.cjs +26 -23
- package/dist/components/CodeBlock/CodeBlock.module.scss.js +26 -23
- package/dist/components/CodeBlock/css-variables-theme.cjs +98 -0
- package/dist/components/CodeBlock/css-variables-theme.d.ts +27 -0
- package/dist/components/CodeBlock/css-variables-theme.d.ts.map +1 -0
- package/dist/components/CodeBlock/css-variables-theme.js +98 -0
- package/dist/components/CodeBlock/index.d.ts +17 -3
- package/dist/components/CodeBlock/index.d.ts.map +1 -1
- package/dist/components/Collapsible/Collapsible.module.scss.cjs +9 -9
- package/dist/components/Collapsible/Collapsible.module.scss.js +9 -9
- package/dist/components/ColorPicker/ColorPicker.module.scss.cjs +14 -14
- package/dist/components/ColorPicker/ColorPicker.module.scss.js +14 -14
- package/dist/components/ColorPicker/index.d.ts.map +1 -1
- package/dist/components/Combobox/Combobox.module.scss.cjs +21 -21
- package/dist/components/Combobox/Combobox.module.scss.js +21 -21
- package/dist/components/Combobox/index.cjs +17 -1
- package/dist/components/Combobox/index.d.ts.map +1 -1
- package/dist/components/Combobox/index.js +17 -1
- package/dist/components/Command/Command.module.scss.cjs +11 -11
- package/dist/components/Command/Command.module.scss.js +11 -11
- package/dist/components/Command/index.cjs +26 -15
- package/dist/components/Command/index.d.ts +2 -2
- package/dist/components/Command/index.d.ts.map +1 -1
- package/dist/components/Command/index.js +26 -15
- package/dist/components/ConversationList/ConversationList.module.scss.cjs +10 -10
- package/dist/components/ConversationList/ConversationList.module.scss.js +10 -10
- package/dist/components/DataTable/DataTable.icons.cjs +6 -33
- package/dist/components/DataTable/DataTable.icons.d.ts.map +1 -1
- package/dist/components/DataTable/DataTable.icons.js +6 -33
- package/dist/components/DataTable/DataTable.module.scss.cjs +27 -27
- package/dist/components/DataTable/DataTable.module.scss.js +27 -27
- package/dist/components/DataTable/index.d.ts.map +1 -1
- package/dist/components/DatePicker/DatePicker.module.scss.cjs +33 -33
- package/dist/components/DatePicker/DatePicker.module.scss.js +33 -33
- package/dist/components/DatePicker/index.d.ts.map +1 -1
- package/dist/components/Dialog/Dialog.module.scss.cjs +14 -14
- package/dist/components/Dialog/Dialog.module.scss.js +14 -14
- package/dist/components/Dialog/index.cjs +11 -14
- package/dist/components/Dialog/index.d.ts +7 -7
- package/dist/components/Dialog/index.d.ts.map +1 -1
- package/dist/components/Dialog/index.js +11 -14
- package/dist/components/Drawer/Drawer.module.scss.cjs +29 -29
- package/dist/components/Drawer/Drawer.module.scss.js +29 -29
- package/dist/components/Editor/Editor.module.scss.cjs +17 -17
- package/dist/components/Editor/Editor.module.scss.js +17 -17
- package/dist/components/Editor/index.d.ts +10 -10
- package/dist/components/Editor/index.d.ts.map +1 -1
- package/dist/components/EmptyState/EmptyState.module.scss.cjs +11 -8
- package/dist/components/EmptyState/EmptyState.module.scss.js +11 -8
- package/dist/components/EmptyState/index.cjs +8 -6
- package/dist/components/EmptyState/index.d.ts +9 -4
- package/dist/components/EmptyState/index.d.ts.map +1 -1
- package/dist/components/EmptyState/index.js +8 -6
- package/dist/components/Field/Field.module.scss.cjs +5 -5
- package/dist/components/Field/Field.module.scss.js +5 -5
- package/dist/components/Field/index.cjs +9 -1
- package/dist/components/Field/index.d.ts.map +1 -1
- package/dist/components/Field/index.js +9 -1
- package/dist/components/Fieldset/Fieldset.module.scss.cjs +3 -3
- package/dist/components/Fieldset/Fieldset.module.scss.js +3 -3
- package/dist/components/Grid/index.cjs +1 -1
- package/dist/components/Grid/index.js +1 -1
- package/dist/components/Header/Header.module.scss.cjs +33 -33
- package/dist/components/Header/Header.module.scss.js +33 -33
- package/dist/components/Header/index.cjs +17 -38
- package/dist/components/Header/index.d.ts +15 -11
- package/dist/components/Header/index.d.ts.map +1 -1
- package/dist/components/Header/index.js +17 -38
- package/dist/components/Icon/Icon.module.scss.cjs +15 -15
- package/dist/components/Icon/Icon.module.scss.js +15 -15
- package/dist/components/IconButton/IconButton.module.scss.cjs +8 -8
- package/dist/components/IconButton/IconButton.module.scss.js +8 -8
- package/dist/components/IconButton/index.cjs +2 -1
- package/dist/components/IconButton/index.d.ts.map +1 -1
- package/dist/components/IconButton/index.js +2 -1
- package/dist/components/Image/Image.module.scss.cjs +27 -27
- package/dist/components/Image/Image.module.scss.js +27 -27
- package/dist/components/Input/Input.module.scss.cjs +17 -17
- package/dist/components/Input/Input.module.scss.js +17 -17
- package/dist/components/Link/Link.module.scss.cjs +14 -10
- package/dist/components/Link/Link.module.scss.js +14 -10
- package/dist/components/Link/index.d.ts +1 -1
- package/dist/components/Link/index.d.ts.map +1 -1
- package/dist/components/List/List.module.scss.cjs +19 -19
- package/dist/components/List/List.module.scss.js +19 -19
- package/dist/components/Listbox/Listbox.module.scss.cjs +8 -8
- package/dist/components/Listbox/Listbox.module.scss.js +8 -8
- package/dist/components/Loading/Loading.module.scss.cjs +34 -34
- package/dist/components/Loading/Loading.module.scss.js +34 -34
- package/dist/components/Loading/index.cjs +1 -1
- package/dist/components/Loading/index.js +1 -1
- package/dist/components/Markdown/Markdown.module.scss.cjs +1 -1
- package/dist/components/Markdown/Markdown.module.scss.js +1 -1
- package/dist/components/Markdown/index.d.ts +2 -2
- package/dist/components/Markdown/index.d.ts.map +1 -1
- package/dist/components/Menu/Menu.module.scss.cjs +14 -14
- package/dist/components/Menu/Menu.module.scss.js +14 -14
- package/dist/components/Message/Message.module.scss.cjs +18 -18
- package/dist/components/Message/Message.module.scss.js +18 -18
- package/dist/components/NavigationMenu/NavigationMenu.module.scss.cjs +34 -31
- package/dist/components/NavigationMenu/NavigationMenu.module.scss.js +34 -31
- package/dist/components/NavigationMenu/index.cjs +32 -15
- package/dist/components/NavigationMenu/index.d.ts +12 -6
- package/dist/components/NavigationMenu/index.d.ts.map +1 -1
- package/dist/components/NavigationMenu/index.js +32 -15
- package/dist/components/Pagination/Pagination.module.scss.cjs +10 -10
- package/dist/components/Pagination/Pagination.module.scss.js +10 -10
- package/dist/components/Popover/Popover.module.scss.cjs +10 -10
- package/dist/components/Popover/Popover.module.scss.js +10 -10
- package/dist/components/Progress/Progress.module.scss.cjs +25 -25
- package/dist/components/Progress/Progress.module.scss.js +25 -25
- package/dist/components/Prompt/Prompt.module.scss.cjs +28 -28
- package/dist/components/Prompt/Prompt.module.scss.js +28 -28
- package/dist/components/RadioGroup/RadioGroup.module.scss.cjs +15 -15
- package/dist/components/RadioGroup/RadioGroup.module.scss.js +15 -15
- package/dist/components/ScrollArea/ScrollArea.module.scss.cjs +5 -5
- package/dist/components/ScrollArea/ScrollArea.module.scss.js +5 -5
- package/dist/components/ScrollArea/index.d.ts +4 -4
- package/dist/components/ScrollArea/index.d.ts.map +1 -1
- package/dist/components/ScrollArea/scroll-state.d.ts +5 -5
- package/dist/components/Select/Select.module.scss.cjs +21 -21
- package/dist/components/Select/Select.module.scss.js +21 -21
- package/dist/components/Separator/Separator.module.scss.cjs +11 -11
- package/dist/components/Separator/Separator.module.scss.js +11 -11
- package/dist/components/Sidebar/Sidebar.module.scss.cjs +43 -43
- package/dist/components/Sidebar/Sidebar.module.scss.js +43 -43
- package/dist/components/Sidebar/index.cjs +12 -35
- package/dist/components/Sidebar/index.d.ts +19 -19
- package/dist/components/Sidebar/index.d.ts.map +1 -1
- package/dist/components/Sidebar/index.js +12 -35
- package/dist/components/Skeleton/Skeleton.module.scss.cjs +50 -46
- package/dist/components/Skeleton/Skeleton.module.scss.js +50 -46
- package/dist/components/Slider/Slider.module.scss.cjs +12 -12
- package/dist/components/Slider/Slider.module.scss.js +12 -12
- package/dist/components/Stack/Stack.module.scss.cjs +25 -25
- package/dist/components/Stack/Stack.module.scss.js +25 -25
- package/dist/components/Stack/index.cjs +1 -1
- package/dist/components/Stack/index.js +1 -1
- package/dist/components/Switch/Switch.module.scss.cjs +9 -9
- package/dist/components/Switch/Switch.module.scss.js +9 -9
- package/dist/components/Table/Table.module.scss.cjs +19 -19
- package/dist/components/Table/Table.module.scss.js +19 -19
- package/dist/components/TableOfContents/TableOfContents.module.scss.cjs +15 -15
- package/dist/components/TableOfContents/TableOfContents.module.scss.js +15 -15
- package/dist/components/TableOfContents/index.cjs +13 -9
- package/dist/components/TableOfContents/index.d.ts +5 -3
- package/dist/components/TableOfContents/index.d.ts.map +1 -1
- package/dist/components/TableOfContents/index.js +13 -9
- package/dist/components/Tabs/Tabs.module.scss.cjs +12 -12
- package/dist/components/Tabs/Tabs.module.scss.js +12 -12
- package/dist/components/Tabs/index.cjs +26 -6
- package/dist/components/Tabs/index.d.ts.map +1 -1
- package/dist/components/Tabs/index.js +26 -6
- package/dist/components/Text/Text.module.scss.cjs +87 -75
- package/dist/components/Text/Text.module.scss.js +87 -75
- package/dist/components/Text/index.cjs +49 -41
- package/dist/components/Text/index.d.ts +12 -11
- package/dist/components/Text/index.d.ts.map +1 -1
- package/dist/components/Text/index.js +49 -41
- package/dist/components/Textarea/Textarea.module.scss.cjs +24 -24
- package/dist/components/Textarea/Textarea.module.scss.js +24 -24
- package/dist/components/Theme/index.cjs +2 -1
- package/dist/components/Theme/index.d.ts.map +1 -1
- package/dist/components/Theme/index.js +2 -1
- package/dist/components/ThemeToggle/ThemeToggle.module.scss.cjs +9 -6
- package/dist/components/ThemeToggle/ThemeToggle.module.scss.js +9 -6
- package/dist/components/ThemeToggle/index.cjs +31 -6
- package/dist/components/ThemeToggle/index.d.ts +7 -2
- package/dist/components/ThemeToggle/index.d.ts.map +1 -1
- package/dist/components/ThemeToggle/index.js +32 -7
- package/dist/components/ThinkingIndicator/ThinkingIndicator.module.scss.cjs +13 -13
- package/dist/components/ThinkingIndicator/ThinkingIndicator.module.scss.js +13 -13
- package/dist/components/Toast/Toast.module.scss.cjs +20 -20
- package/dist/components/Toast/Toast.module.scss.js +20 -20
- package/dist/components/ToggleGroup/ToggleGroup.module.scss.cjs +17 -17
- package/dist/components/ToggleGroup/ToggleGroup.module.scss.js +17 -17
- package/dist/components/Tooltip/Tooltip.module.scss.cjs +3 -3
- package/dist/components/Tooltip/Tooltip.module.scss.js +3 -3
- package/dist/components/Tooltip/index.cjs +24 -40
- package/dist/components/Tooltip/index.d.ts +4 -4
- package/dist/components/Tooltip/index.d.ts.map +1 -1
- package/dist/components/Tooltip/index.js +24 -40
- package/dist/components/VisuallyHidden/index.d.ts +2 -2
- package/dist/data-table.cjs +2 -1
- package/dist/data-table.js +2 -1
- package/dist/datepicker.cjs +3 -2
- package/dist/datepicker.js +3 -2
- package/dist/editor.cjs +68 -28
- package/dist/editor.js +68 -28
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/markdown.cjs +21 -29
- package/dist/markdown.js +21 -29
- package/dist/measurements/generated.cjs +9 -1
- package/dist/measurements/generated.d.ts +7 -0
- package/dist/measurements/generated.d.ts.map +1 -1
- package/dist/measurements/generated.js +9 -1
- package/dist/utils/a11y.cjs +5 -2
- package/dist/utils/a11y.d.ts +5 -5
- package/dist/utils/a11y.d.ts.map +1 -1
- package/dist/utils/a11y.js +5 -2
- package/dist/utils/canonical-stamp.cjs +2 -8
- package/dist/utils/canonical-stamp.d.ts.map +1 -1
- package/dist/utils/canonical-stamp.js +1 -7
- package/dist/utils/css-warning.cjs +1 -1
- package/dist/utils/css-warning.js +1 -1
- package/dist/utils/env.cjs +17 -0
- package/dist/utils/env.d.ts +3 -0
- package/dist/utils/env.d.ts.map +1 -0
- package/dist/utils/env.js +17 -0
- package/dist/utils/keyboard-shortcuts.cjs +3 -10
- package/dist/utils/keyboard-shortcuts.d.ts +4 -4
- package/dist/utils/keyboard-shortcuts.d.ts.map +1 -1
- package/dist/utils/keyboard-shortcuts.js +3 -10
- package/dist/utils/seed-derivation.cjs +10 -6
- package/dist/utils/seed-derivation.d.ts.map +1 -1
- package/dist/utils/seed-derivation.js +10 -6
- package/fragments.json +1 -1
- package/package.json +6 -4
- package/src/assets/fragments-logo.tsx +2 -2
- package/src/assets/fragments-wordmark.tsx +4 -2
- package/src/components/Accordion/Accordion.contract.json +24 -48
- package/src/components/Alert/Alert.contract.json +37 -53
- package/src/components/Alert/Alert.module.scss +24 -0
- package/src/components/Alert/index.tsx +55 -29
- package/src/components/AppShell/AppShell.contract.json +34 -51
- package/src/components/AppShell/AppShell.module.scss +53 -40
- package/src/components/Avatar/Avatar.contract.json +31 -48
- package/src/components/Avatar/Avatar.module.scss +4 -1
- package/src/components/Badge/Badge.contract.json +37 -42
- package/src/components/Badge/Badge.module.scss +9 -2
- package/src/components/BentoGrid/BentoGrid.contract.json +21 -45
- package/src/components/Box/Box.contract.json +40 -148
- package/src/components/Box/index.tsx +92 -99
- package/src/components/Breadcrumbs/Breadcrumbs.contract.json +21 -34
- package/src/components/Breadcrumbs/Breadcrumbs.module.scss +12 -7
- package/src/components/Button/Button.module.scss +8 -7
- package/src/components/ButtonGroup/ButtonGroup.contract.json +32 -47
- package/src/components/Card/Card.module.scss +82 -1
- package/src/components/Card/index.tsx +21 -2
- package/src/components/Chart/Chart.contract.json +21 -29
- package/src/components/Chart/index.tsx +36 -6
- package/src/components/Checkbox/Checkbox.contract.json +24 -24
- package/src/components/Checkbox/Checkbox.module.scss +32 -23
- package/src/components/Checkbox/index.tsx +4 -2
- package/src/components/Chip/Chip.contract.json +33 -40
- package/src/components/Chip/Chip.module.scss +2 -2
- package/src/components/Chip/index.tsx +2 -1
- package/src/components/CodeBlock/CodeBlock.contract.json +46 -76
- package/src/components/CodeBlock/CodeBlock.module.scss +40 -15
- package/src/components/CodeBlock/css-variables-theme.ts +102 -0
- package/src/components/CodeBlock/index.tsx +91 -35
- package/src/components/Collapsible/Collapsible.contract.json +21 -36
- package/src/components/ColorPicker/ColorPicker.contract.json +29 -48
- package/src/components/ColorPicker/ColorPicker.module.scss +15 -12
- package/src/components/ColorPicker/index.tsx +5 -1
- package/src/components/Combobox/Combobox.contract.json +36 -37
- package/src/components/Combobox/Combobox.module.scss +1 -1
- package/src/components/Combobox/index.tsx +31 -5
- package/src/components/Command/Command.contract.json +21 -43
- package/src/components/Command/index.tsx +58 -47
- package/src/components/ConversationList/ConversationList.contract.json +27 -32
- package/src/components/DataTable/DataTable.icons.tsx +4 -21
- package/src/components/DataTable/DataTable.module.scss +12 -8
- package/src/components/DataTable/index.tsx +8 -7
- package/src/components/DatePicker/DatePicker.contract.json +27 -28
- package/src/components/DatePicker/DatePicker.module.scss +12 -5
- package/src/components/DatePicker/index.tsx +5 -2
- package/src/components/Dialog/Dialog.module.scss +3 -3
- package/src/components/Dialog/index.tsx +47 -37
- package/src/components/Drawer/Drawer.contract.json +22 -36
- package/src/components/Editor/Editor.contract.json +31 -48
- package/src/components/Editor/Editor.module.scss +36 -14
- package/src/components/Editor/index.tsx +240 -179
- package/src/components/EmptyState/EmptyState.contract.json +31 -43
- package/src/components/EmptyState/EmptyState.module.scss +8 -0
- package/src/components/EmptyState/index.tsx +48 -23
- package/src/components/Field/Field.contract.json +28 -46
- package/src/components/Field/index.tsx +5 -1
- package/src/components/Fieldset/Fieldset.contract.json +21 -38
- package/src/components/Fieldset/Fieldset.module.scss +10 -3
- package/src/components/Form/Form.contract.json +20 -20
- package/src/components/Grid/Grid.contract.json +28 -64
- package/src/components/Grid/index.tsx +10 -10
- package/src/components/Header/Header.contract.json +31 -67
- package/src/components/Header/Header.module.scss +36 -21
- package/src/components/Header/index.tsx +134 -122
- package/src/components/Icon/Icon.contract.json +22 -62
- package/src/components/IconButton/IconButton.contract.json +34 -18
- package/src/components/IconButton/IconButton.module.scss +6 -7
- package/src/components/IconButton/index.tsx +2 -1
- package/src/components/Image/Image.contract.json +23 -56
- package/src/components/Input/Input.contract.json +26 -32
- package/src/components/Input/Input.module.scss +3 -2
- package/src/components/Link/Link.contract.json +32 -52
- package/src/components/Link/Link.module.scss +23 -6
- package/src/components/Link/index.tsx +1 -1
- package/src/components/List/List.contract.json +23 -52
- package/src/components/List/List.module.scss +1 -1
- package/src/components/Listbox/Listbox.contract.json +21 -37
- package/src/components/Loading/Loading.contract.json +37 -61
- package/src/components/Loading/Loading.module.scss +10 -7
- package/src/components/Loading/index.tsx +2 -2
- package/src/components/Main/Main.contract.json +17 -9
- package/src/components/Markdown/Markdown.contract.json +22 -43
- package/src/components/Markdown/Markdown.module.scss +43 -5
- package/src/components/Markdown/index.tsx +48 -49
- package/src/components/Menu/Menu.contract.json +25 -41
- package/src/components/Menu/Menu.module.scss +23 -8
- package/src/components/Message/Message.contract.json +29 -52
- package/src/components/Message/Message.module.scss +12 -5
- package/src/components/NavigationMenu/NavigationMenu.contract.json +36 -45
- package/src/components/NavigationMenu/NavigationMenu.module.scss +64 -19
- package/src/components/NavigationMenu/index.tsx +105 -81
- package/src/components/Pagination/Pagination.contract.json +22 -40
- package/src/components/Pagination/Pagination.module.scss +2 -2
- package/src/components/Popover/Popover.contract.json +24 -46
- package/src/components/Popover/Popover.module.scss +6 -5
- package/src/components/Progress/Progress.contract.json +32 -28
- package/src/components/Progress/Progress.module.scss +3 -2
- package/src/components/Prompt/Prompt.contract.json +31 -47
- package/src/components/Prompt/Prompt.module.scss +13 -5
- package/src/components/RadioGroup/RadioGroup.contract.json +23 -24
- package/src/components/RadioGroup/RadioGroup.module.scss +13 -14
- package/src/components/ScrollArea/ScrollArea.contract.json +18 -19
- package/src/components/ScrollArea/ScrollArea.module.scss +15 -15
- package/src/components/ScrollArea/index.tsx +16 -16
- package/src/components/ScrollArea/scroll-state.ts +24 -24
- package/src/components/Select/Select.module.scss +2 -2
- package/src/components/Separator/Separator.contract.json +24 -48
- package/src/components/Sidebar/Sidebar.contract.json +35 -67
- package/src/components/Sidebar/Sidebar.module.scss +22 -13
- package/src/components/Sidebar/index.tsx +164 -164
- package/src/components/Skeleton/Skeleton.contract.json +28 -54
- package/src/components/Skeleton/Skeleton.module.scss +27 -10
- package/src/components/Slider/Slider.contract.json +27 -39
- package/src/components/Slider/Slider.module.scss +3 -3
- package/src/components/Stack/Stack.contract.json +29 -56
- package/src/components/Stack/Stack.module.scss +13 -12
- package/src/components/Stack/index.tsx +3 -3
- package/src/components/Switch/Switch.contract.json +33 -46
- package/src/components/Switch/Switch.module.scss +64 -26
- package/src/components/Table/Table.contract.json +28 -46
- package/src/components/Table/Table.module.scss +15 -3
- package/src/components/TableOfContents/TableOfContents.contract.json +34 -21
- package/src/components/TableOfContents/TableOfContents.module.scss +15 -5
- package/src/components/TableOfContents/index.tsx +26 -9
- package/src/components/Tabs/Tabs.contract.json +24 -45
- package/src/components/Tabs/Tabs.module.scss +1 -1
- package/src/components/Tabs/index.tsx +15 -3
- package/src/components/Text/Text.contract.json +30 -72
- package/src/components/Text/Text.module.scss +21 -4
- package/src/components/Text/index.tsx +113 -75
- package/src/components/Textarea/Textarea.contract.json +25 -43
- package/src/components/Textarea/Textarea.module.scss +2 -4
- package/src/components/Theme/Theme.contract.json +32 -51
- package/src/components/Theme/index.tsx +2 -1
- package/src/components/ThemeToggle/ThemeToggle.module.scss +23 -7
- package/src/components/ThemeToggle/index.tsx +43 -7
- package/src/components/ThinkingIndicator/ThinkingIndicator.contract.json +23 -40
- package/src/components/Toast/Toast.contract.json +30 -40
- package/src/components/Toast/Toast.module.scss +1 -1
- package/src/components/ToggleGroup/ToggleGroup.contract.json +29 -30
- package/src/components/ToggleGroup/ToggleGroup.module.scss +38 -5
- package/src/components/Tooltip/Tooltip.contract.json +31 -52
- package/src/components/Tooltip/index.tsx +19 -24
- package/src/components/VisuallyHidden/VisuallyHidden.contract.json +22 -44
- package/src/components/VisuallyHidden/index.tsx +5 -5
- package/src/index.ts +2 -2
- package/src/measurements/generated.ts +9 -2
- package/src/measurements/measurements.json +7 -0
- package/src/recipes/_boolean-range.scss +3 -11
- package/src/recipes/_field.scss +5 -1
- package/src/recipes/_layout.scss +14 -7
- package/src/recipes/_popup.scss +12 -2
- package/src/recipes/_prose.scss +13 -5
- package/src/recipes/_table-chrome.scss +16 -2
- package/src/scss.d.ts +1 -1
- package/src/styles/globals.scss +20 -19
- package/src/tokens/_computed.scss +5 -16
- package/src/tokens/_derive.scss +112 -210
- package/src/tokens/_measurements.catalog.generated.css +6 -1
- package/src/tokens/_measurements.generated.scss +14 -1
- package/src/tokens/_mixins.scss +7 -8
- package/src/tokens/_palettes.scss +39 -167
- package/src/tokens/_seeds.scss +20 -20
- package/src/tokens/_variables.scss +183 -38
- package/src/utils/a11y.tsx +69 -69
- package/src/utils/aria.ts +3 -3
- package/src/utils/canonical-stamp.ts +2 -12
- package/src/utils/css-warning.ts +7 -7
- package/src/utils/env.ts +25 -0
- package/src/utils/keyboard-shortcuts.ts +131 -126
- package/src/utils/seed-derivation.ts +10 -6
- package/src/components/Button/Button.contract.json +0 -218
- package/src/components/Card/Card.contract.json +0 -175
- package/src/components/DataTable/DataTable.contract.json +0 -302
- package/src/components/Dialog/Dialog.contract.json +0 -159
- package/src/components/Select/Select.contract.json +0 -259
|
@@ -1,22 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://usefragments.com/schemas/contract.v1.json",
|
|
3
3
|
"name": "Link",
|
|
4
|
-
"description": "
|
|
4
|
+
"description": "Navigates somewhere else, inline or in chrome, with real link semantics.",
|
|
5
5
|
"category": "navigation",
|
|
6
|
-
"tags": [
|
|
7
|
-
"link",
|
|
8
|
-
"anchor",
|
|
9
|
-
"navigation",
|
|
10
|
-
"href",
|
|
11
|
-
"url"
|
|
12
|
-
],
|
|
6
|
+
"tags": ["link", "anchor", "navigation", "href", "url"],
|
|
13
7
|
"status": "stable",
|
|
14
8
|
"sourcePath": "src/components/Link/index.tsx",
|
|
15
9
|
"exportName": "Link",
|
|
16
10
|
"propsSummary": [
|
|
17
11
|
"children: node (required)",
|
|
18
12
|
"variant: default|subtle|muted (default: default)",
|
|
19
|
-
"underline: always|hover|none (default: hover)",
|
|
13
|
+
"underline: always|hover|none|dotted (default: hover)",
|
|
20
14
|
"external: boolean (default: false)",
|
|
21
15
|
"asChild: boolean (default: false)",
|
|
22
16
|
"className: string",
|
|
@@ -35,22 +29,14 @@
|
|
|
35
29
|
"description": "Visual style variant",
|
|
36
30
|
"default": "default",
|
|
37
31
|
"required": false,
|
|
38
|
-
"values": [
|
|
39
|
-
"default",
|
|
40
|
-
"subtle",
|
|
41
|
-
"muted"
|
|
42
|
-
]
|
|
32
|
+
"values": ["default", "subtle", "muted"]
|
|
43
33
|
},
|
|
44
34
|
"underline": {
|
|
45
35
|
"type": "enum",
|
|
46
36
|
"description": "Underline behavior",
|
|
47
37
|
"default": "hover",
|
|
48
38
|
"required": false,
|
|
49
|
-
"values": [
|
|
50
|
-
"always",
|
|
51
|
-
"hover",
|
|
52
|
-
"none"
|
|
53
|
-
]
|
|
39
|
+
"values": ["always", "hover", "none", "dotted"]
|
|
54
40
|
},
|
|
55
41
|
"external": {
|
|
56
42
|
"type": "boolean",
|
|
@@ -87,56 +73,55 @@
|
|
|
87
73
|
},
|
|
88
74
|
"usage": {
|
|
89
75
|
"when": [
|
|
90
|
-
"Inline
|
|
91
|
-
"
|
|
92
|
-
"\"Forgot password?\"
|
|
93
|
-
"
|
|
76
|
+
"Inline links inside body text",
|
|
77
|
+
"Footer and sidebar navigation",
|
|
78
|
+
"\"Forgot password?\" and \"Sign up\" in forms",
|
|
79
|
+
"Pointing out to docs or external resources"
|
|
94
80
|
],
|
|
95
81
|
"whenNot": [
|
|
96
|
-
"
|
|
97
|
-
"
|
|
98
|
-
"
|
|
99
|
-
"Cards that link to detail pages should still use real link semantics (Link or anchor inside Card)"
|
|
82
|
+
"A main call to action — use Button",
|
|
83
|
+
"Switching views in place — use Tabs",
|
|
84
|
+
"Dropdown items — use Menu"
|
|
100
85
|
],
|
|
101
86
|
"guidelines": [
|
|
102
|
-
"
|
|
103
|
-
"
|
|
104
|
-
"
|
|
105
|
-
"
|
|
106
|
-
"
|
|
87
|
+
"Name the destination; never \"click here\"",
|
|
88
|
+
"external sets target and rel — add your own \"opens in a new tab\" cue",
|
|
89
|
+
"subtle and muted for secondary and contextual links",
|
|
90
|
+
"Links must stay distinguishable from surrounding text",
|
|
91
|
+
"asChild composes handlers with the child rather than replacing them"
|
|
107
92
|
],
|
|
108
93
|
"accessibility": [
|
|
109
|
-
"
|
|
110
|
-
"
|
|
111
|
-
"
|
|
112
|
-
"
|
|
94
|
+
"The link text alone should make sense out of context",
|
|
95
|
+
"Say when a link opens a new window",
|
|
96
|
+
"Focus ring must stay visible",
|
|
97
|
+
"A link that looks like a button still needs link semantics"
|
|
113
98
|
]
|
|
114
99
|
},
|
|
115
100
|
"examples": [
|
|
116
101
|
{
|
|
117
102
|
"name": "Default",
|
|
118
|
-
"description": "
|
|
103
|
+
"description": "Accent text that underlines on hover.",
|
|
119
104
|
"code": "<Link href=\"#\">Learn more about our services</Link>"
|
|
120
105
|
},
|
|
121
106
|
{
|
|
122
107
|
"name": "Variants",
|
|
123
|
-
"description": "
|
|
124
|
-
"code": "
|
|
108
|
+
"description": "Accent, then quieter, then quietest.",
|
|
109
|
+
"code": "import { Stack } from '@/components/Stack';\n\n<Stack direction=\"row\" gap=\"md\" align=\"center\" wrap>\n <Link href=\"#\" variant=\"default\">Default</Link>\n <Link href=\"#\" variant=\"subtle\">Subtle</Link>\n <Link href=\"#\" variant=\"muted\">Muted</Link>\n</Stack>"
|
|
125
110
|
},
|
|
126
111
|
{
|
|
127
112
|
"name": "Underline Styles",
|
|
128
|
-
"description": "
|
|
129
|
-
"code": "
|
|
113
|
+
"description": "Four rules for when the line shows.",
|
|
114
|
+
"code": "import { Stack } from '@/components/Stack';\n\n<Stack direction=\"row\" gap=\"md\" align=\"center\" wrap>\n <Link href=\"#\" underline=\"always\">Always underlined</Link>\n <Link href=\"#\" underline=\"hover\">Underline on hover</Link>\n <Link href=\"#\" underline=\"dotted\">Dotted underline</Link>\n <Link href=\"#\" underline=\"none\">No underline</Link>\n</Stack>"
|
|
130
115
|
},
|
|
131
116
|
{
|
|
132
117
|
"name": "External Link",
|
|
133
|
-
"description": "
|
|
118
|
+
"description": "Sets target and rel; you still supply the visible cue.",
|
|
134
119
|
"code": "<Link href=\"https://example.com\" external>\n View documentation ↗\n</Link>"
|
|
135
120
|
},
|
|
136
121
|
{
|
|
137
122
|
"name": "As Child (Polymorphic)",
|
|
138
|
-
"description": "
|
|
139
|
-
"code": "<Link asChild variant=\"subtle\" onClick={() => {}}>\n <
|
|
123
|
+
"description": "Paints Link styling onto a router link and keeps both click handlers.",
|
|
124
|
+
"code": "<Link asChild variant=\"subtle\" onClick={() => {}}>\n <a href=\"#pricing\" onClick={() => {}}>\n Client-side navigation\n </a>\n</Link>"
|
|
140
125
|
}
|
|
141
126
|
],
|
|
142
127
|
"relations": [
|
|
@@ -156,20 +141,15 @@
|
|
|
156
141
|
"children: ReactNode - link text (required)",
|
|
157
142
|
"href: string - destination URL",
|
|
158
143
|
"variant: default|subtle|muted - visual style",
|
|
159
|
-
"underline: always|hover|none - underline behavior",
|
|
144
|
+
"underline: always|hover|none|dotted - underline behavior",
|
|
160
145
|
"external: boolean - opens in new tab",
|
|
161
146
|
"asChild: boolean - polymorphic child rendering with merged styles and composed event handlers"
|
|
162
147
|
],
|
|
163
|
-
"a11yRules": [
|
|
164
|
-
"A11Y_LINK_TEXT",
|
|
165
|
-
"A11Y_LINK_FOCUS"
|
|
166
|
-
]
|
|
148
|
+
"a11yRules": ["A11Y_LINK_TEXT", "A11Y_LINK_FOCUS"]
|
|
167
149
|
},
|
|
168
150
|
"ai": {
|
|
169
151
|
"compositionPattern": "compound",
|
|
170
|
-
"subComponents": [
|
|
171
|
-
"Root"
|
|
172
|
-
]
|
|
152
|
+
"subComponents": ["Root"]
|
|
173
153
|
},
|
|
174
154
|
"provenance": {
|
|
175
155
|
"source": "migrated",
|
|
@@ -19,10 +19,10 @@
|
|
|
19
19
|
|
|
20
20
|
// Variants
|
|
21
21
|
.default {
|
|
22
|
-
color: var(--fui-color-
|
|
22
|
+
color: var(--fui-link-color, var(--fui-link-ink, #{$fui-link-ink}));
|
|
23
23
|
|
|
24
24
|
&:hover {
|
|
25
|
-
color: var(--fui-color-
|
|
25
|
+
color: var(--fui-link-color-hover, var(--fui-link-ink, #{$fui-link-ink}));
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
28
|
|
|
@@ -45,15 +45,32 @@
|
|
|
45
45
|
// Underline styles
|
|
46
46
|
.underline-always {
|
|
47
47
|
text-decoration: underline;
|
|
48
|
-
text-
|
|
48
|
+
text-decoration-style: var(--fui-link-underline-style, solid);
|
|
49
|
+
text-underline-offset: 0.2em;
|
|
49
50
|
}
|
|
50
51
|
|
|
51
52
|
.underline-hover {
|
|
52
|
-
text-decoration: none;
|
|
53
|
+
text-decoration-line: var(--fui-link-underline-line, none);
|
|
54
|
+
text-decoration-style: var(--fui-link-underline-style, solid);
|
|
55
|
+
text-underline-offset: 0.2em;
|
|
56
|
+
text-decoration-color: color-mix(in srgb, currentColor 55%, transparent);
|
|
57
|
+
|
|
58
|
+
&:hover {
|
|
59
|
+
text-decoration-line: underline;
|
|
60
|
+
text-decoration-style: var(--fui-link-underline-style, solid);
|
|
61
|
+
text-decoration-color: currentColor;
|
|
62
|
+
text-underline-offset: 0.2em;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
.underline-dotted {
|
|
67
|
+
text-decoration: underline dotted;
|
|
68
|
+
text-underline-offset: 0.2em;
|
|
69
|
+
text-decoration-thickness: from-font;
|
|
70
|
+
text-decoration-color: color-mix(in srgb, currentColor 55%, transparent);
|
|
53
71
|
|
|
54
72
|
&:hover {
|
|
55
|
-
text-decoration:
|
|
56
|
-
text-underline-offset: var(--fui-raw-space-2);
|
|
73
|
+
text-decoration-color: currentColor;
|
|
57
74
|
}
|
|
58
75
|
}
|
|
59
76
|
|
|
@@ -18,7 +18,7 @@ export interface LinkProps extends React.AnchorHTMLAttributes<HTMLAnchorElement>
|
|
|
18
18
|
/** Visual variant */
|
|
19
19
|
variant?: 'default' | 'subtle' | 'muted';
|
|
20
20
|
/** Underline style */
|
|
21
|
-
underline?: 'always' | 'hover' | 'none';
|
|
21
|
+
underline?: 'always' | 'hover' | 'none' | 'dotted';
|
|
22
22
|
/** Open in new tab (adds rel="noopener noreferrer") */
|
|
23
23
|
external?: boolean;
|
|
24
24
|
/**
|
|
@@ -1,15 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://usefragments.com/schemas/contract.v1.json",
|
|
3
3
|
"name": "List",
|
|
4
|
-
"description": "
|
|
4
|
+
"description": "Stacks items down the page with evenly spaced bullets, numbers, or icons.",
|
|
5
5
|
"category": "display",
|
|
6
|
-
"tags": [
|
|
7
|
-
"list",
|
|
8
|
-
"items",
|
|
9
|
-
"bullet",
|
|
10
|
-
"ordered",
|
|
11
|
-
"unordered"
|
|
12
|
-
],
|
|
6
|
+
"tags": ["list", "items", "bullet", "ordered", "unordered"],
|
|
13
7
|
"status": "stable",
|
|
14
8
|
"sourcePath": "src/components/List/index.tsx",
|
|
15
9
|
"exportName": "List",
|
|
@@ -31,35 +25,21 @@
|
|
|
31
25
|
"description": "List type",
|
|
32
26
|
"default": "ul",
|
|
33
27
|
"required": false,
|
|
34
|
-
"values": [
|
|
35
|
-
"ul",
|
|
36
|
-
"ol"
|
|
37
|
-
]
|
|
28
|
+
"values": ["ul", "ol"]
|
|
38
29
|
},
|
|
39
30
|
"variant": {
|
|
40
31
|
"type": "enum",
|
|
41
32
|
"description": "List style variant",
|
|
42
33
|
"default": "disc",
|
|
43
34
|
"required": false,
|
|
44
|
-
"values": [
|
|
45
|
-
"none",
|
|
46
|
-
"disc",
|
|
47
|
-
"decimal",
|
|
48
|
-
"icon"
|
|
49
|
-
]
|
|
35
|
+
"values": ["none", "disc", "decimal", "icon"]
|
|
50
36
|
},
|
|
51
37
|
"gap": {
|
|
52
38
|
"type": "enum",
|
|
53
39
|
"description": "Spacing between items",
|
|
54
40
|
"default": "sm",
|
|
55
41
|
"required": false,
|
|
56
|
-
"values": [
|
|
57
|
-
"none",
|
|
58
|
-
"xs",
|
|
59
|
-
"sm",
|
|
60
|
-
"md",
|
|
61
|
-
"lg"
|
|
62
|
-
]
|
|
42
|
+
"values": ["none", "xs", "sm", "md", "lg"]
|
|
63
43
|
},
|
|
64
44
|
"style": {
|
|
65
45
|
"type": "object",
|
|
@@ -69,49 +49,45 @@
|
|
|
69
49
|
},
|
|
70
50
|
"usage": {
|
|
71
51
|
"when": [
|
|
72
|
-
"
|
|
73
|
-
"
|
|
74
|
-
"
|
|
75
|
-
"Pricing plan feature comparisons"
|
|
52
|
+
"Steps, instructions, or anything with an order",
|
|
53
|
+
"Feature and benefit lists",
|
|
54
|
+
"Plain stacks of links in a sidebar"
|
|
76
55
|
],
|
|
77
56
|
"whenNot": [
|
|
78
|
-
"
|
|
79
|
-
"
|
|
80
|
-
"
|
|
81
|
-
"Navigation tabs (use Tabs)"
|
|
57
|
+
"Items are pickable (use Menu or Select)",
|
|
58
|
+
"Items have columns (use Table)",
|
|
59
|
+
"Items need their own surface (use Card in a Grid)"
|
|
82
60
|
],
|
|
83
61
|
"guidelines": [
|
|
84
|
-
"Use as=\"ol\"
|
|
85
|
-
"
|
|
86
|
-
"
|
|
87
|
-
"
|
|
62
|
+
"Order matters? Use as=\"ol\" so the numbers are real",
|
|
63
|
+
"Keep one icon meaning per list — mixing icons reads as noise",
|
|
64
|
+
"Write items in parallel grammar; scanning depends on it",
|
|
65
|
+
"Stop nesting at two levels"
|
|
88
66
|
],
|
|
89
67
|
"accessibility": [
|
|
90
|
-
"
|
|
91
|
-
"
|
|
92
|
-
"Icons are decorative; ensure text conveys meaning",
|
|
93
|
-
"Avoid deeply nested lists (3+ levels)"
|
|
68
|
+
"Real ul/ol markup means screen readers announce the item count",
|
|
69
|
+
"Icons are decorative — the text has to carry the meaning"
|
|
94
70
|
]
|
|
95
71
|
},
|
|
96
72
|
"examples": [
|
|
97
73
|
{
|
|
98
74
|
"name": "Bullet List",
|
|
99
|
-
"description": "
|
|
75
|
+
"description": "The default marker — reach for it when order does not matter.",
|
|
100
76
|
"code": "<List variant=\"disc\">\n <List.Item>First item</List.Item>\n <List.Item>Second item</List.Item>\n <List.Item>Third item</List.Item>\n</List>"
|
|
101
77
|
},
|
|
102
78
|
{
|
|
103
79
|
"name": "Numbered List",
|
|
104
|
-
"description": "
|
|
80
|
+
"description": "as=\"ol\" makes the sequence real, not just visual.",
|
|
105
81
|
"code": "<List as=\"ol\" variant=\"decimal\">\n <List.Item>Create your account</List.Item>\n <List.Item>Configure your settings</List.Item>\n <List.Item>Start building</List.Item>\n</List>"
|
|
106
82
|
},
|
|
107
83
|
{
|
|
108
84
|
"name": "Icon List",
|
|
109
|
-
"description": "
|
|
85
|
+
"description": "Each item takes its own icon — checkmarks sell a feature list.",
|
|
110
86
|
"code": "<List variant=\"icon\">\n <List.Item icon={<Check weight=\"bold\" color=\"var(--fui-color-success)\" />}>\n Unlimited projects\n </List.Item>\n <List.Item icon={<Check weight=\"bold\" color=\"var(--fui-color-success)\" />}>\n Priority support\n </List.Item>\n <List.Item icon={<Check weight=\"bold\" color=\"var(--fui-color-success)\" />}>\n Advanced analytics\n </List.Item>\n</List>"
|
|
111
87
|
},
|
|
112
88
|
{
|
|
113
89
|
"name": "No Style",
|
|
114
|
-
"description": "
|
|
90
|
+
"description": "No markers, wider gap — the shape for stacked nav links.",
|
|
115
91
|
"code": "<List variant=\"none\" gap=\"md\">\n <List.Item>Dashboard</List.Item>\n <List.Item>Settings</List.Item>\n <List.Item>Profile</List.Item>\n</List>"
|
|
116
92
|
}
|
|
117
93
|
],
|
|
@@ -134,16 +110,11 @@
|
|
|
134
110
|
"variant: none|disc|decimal|icon - list style",
|
|
135
111
|
"gap: none|xs|sm|md|lg - item spacing"
|
|
136
112
|
],
|
|
137
|
-
"a11yRules": [
|
|
138
|
-
"A11Y_LIST_SEMANTIC",
|
|
139
|
-
"A11Y_LIST_NESTING"
|
|
140
|
-
]
|
|
113
|
+
"a11yRules": ["A11Y_LIST_SEMANTIC", "A11Y_LIST_NESTING"]
|
|
141
114
|
},
|
|
142
115
|
"ai": {
|
|
143
116
|
"compositionPattern": "compound",
|
|
144
|
-
"subComponents": [
|
|
145
|
-
"Item"
|
|
146
|
-
]
|
|
117
|
+
"subComponents": ["Item"]
|
|
147
118
|
},
|
|
148
119
|
"provenance": {
|
|
149
120
|
"source": "migrated",
|
|
@@ -1,16 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://usefragments.com/schemas/contract.v1.json",
|
|
3
3
|
"name": "Listbox",
|
|
4
|
-
"description": "
|
|
5
|
-
"category": "
|
|
6
|
-
"tags": [
|
|
7
|
-
"listbox",
|
|
8
|
-
"search",
|
|
9
|
-
"autocomplete",
|
|
10
|
-
"combobox",
|
|
11
|
-
"command",
|
|
12
|
-
"dropdown"
|
|
13
|
-
],
|
|
4
|
+
"description": "Shows a keyboard-navigable list of options with no trigger of its own.",
|
|
5
|
+
"category": "inputs",
|
|
6
|
+
"tags": ["listbox", "search", "autocomplete", "combobox", "command", "dropdown"],
|
|
14
7
|
"status": "stable",
|
|
15
8
|
"sourcePath": "src/components/Listbox/index.tsx",
|
|
16
9
|
"exportName": "Listbox",
|
|
@@ -50,22 +43,22 @@
|
|
|
50
43
|
},
|
|
51
44
|
"usage": {
|
|
52
45
|
"when": [
|
|
53
|
-
"
|
|
46
|
+
"Results under a search field",
|
|
54
47
|
"Autocomplete suggestions",
|
|
55
48
|
"Command palette results",
|
|
56
|
-
"
|
|
49
|
+
"Any list the user drives with arrow keys"
|
|
57
50
|
],
|
|
58
51
|
"whenNot": [
|
|
59
|
-
"
|
|
60
|
-
"
|
|
61
|
-
"
|
|
62
|
-
"Navigation
|
|
52
|
+
"A list nobody selects from (use List)",
|
|
53
|
+
"Actions behind a button (use Menu)",
|
|
54
|
+
"A form field (use Select)",
|
|
55
|
+
"Navigation (use Sidebar or Tabs)"
|
|
63
56
|
],
|
|
64
57
|
"guidelines": [
|
|
65
|
-
"
|
|
66
|
-
"
|
|
67
|
-
"
|
|
68
|
-
"Group
|
|
58
|
+
"You own open state — drive it from the input's focus and query",
|
|
59
|
+
"Arrows, Home, End, Enter, and Space are handled for you",
|
|
60
|
+
"Always supply Listbox.Empty",
|
|
61
|
+
"Group once the list draws from more than one source"
|
|
69
62
|
],
|
|
70
63
|
"accessibility": [
|
|
71
64
|
"Uses listbox and option ARIA roles",
|
|
@@ -77,27 +70,27 @@
|
|
|
77
70
|
"examples": [
|
|
78
71
|
{
|
|
79
72
|
"name": "Default",
|
|
80
|
-
"description": "
|
|
73
|
+
"description": "Plain options, one selectable at a time.",
|
|
81
74
|
"code": "<Listbox aria-label=\"Options\">\n <Listbox.Item selected>First option</Listbox.Item>\n <Listbox.Item>Second option</Listbox.Item>\n <Listbox.Item>Third option</Listbox.Item>\n</Listbox>"
|
|
82
75
|
},
|
|
83
76
|
{
|
|
84
77
|
"name": "Search Results",
|
|
85
|
-
"description": "
|
|
78
|
+
"description": "Trailing metadata explains each match.",
|
|
86
79
|
"code": "<Listbox aria-label=\"Search results\">\n <Listbox.Item selected>\n <span style={{ fontWeight: 500 }}>Button</span>\n <span style={{ marginLeft: 'auto', fontSize: '0.75rem', color: 'var(--fui-text-tertiary)' }}>Components</span>\n </Listbox.Item>\n <Listbox.Item>\n <span style={{ fontWeight: 500 }}>Badge</span>\n <span style={{ marginLeft: 'auto', fontSize: '0.75rem', color: 'var(--fui-text-tertiary)' }}>Components</span>\n </Listbox.Item>\n <Listbox.Item>\n <span style={{ fontWeight: 500 }}>Box</span>\n <span style={{ marginLeft: 'auto', fontSize: '0.75rem', color: 'var(--fui-text-tertiary)' }}>Layout</span>\n </Listbox.Item>\n</Listbox>"
|
|
87
80
|
},
|
|
88
81
|
{
|
|
89
82
|
"name": "With Groups",
|
|
90
|
-
"description": "
|
|
83
|
+
"description": "Labels split the list by source.",
|
|
91
84
|
"code": "<Listbox aria-label=\"Commands\">\n <Listbox.Group label=\"Recent\">\n <Listbox.Item selected>Open file...</Listbox.Item>\n <Listbox.Item>Save as...</Listbox.Item>\n </Listbox.Group>\n <Listbox.Group label=\"Actions\">\n <Listbox.Item>Copy</Listbox.Item>\n <Listbox.Item>Paste</Listbox.Item>\n <Listbox.Item disabled>Cut</Listbox.Item>\n </Listbox.Group>\n</Listbox>"
|
|
92
85
|
},
|
|
93
86
|
{
|
|
94
87
|
"name": "Empty State",
|
|
95
|
-
"description": "
|
|
88
|
+
"description": "Says so when nothing matches.",
|
|
96
89
|
"code": "<Listbox aria-label=\"Search results\">\n <Listbox.Empty>No results found</Listbox.Empty>\n</Listbox>"
|
|
97
90
|
},
|
|
98
91
|
{
|
|
99
92
|
"name": "With Disabled Items",
|
|
100
|
-
"description": "
|
|
93
|
+
"description": "Unavailable rows stay visible but inert.",
|
|
101
94
|
"code": "<Listbox aria-label=\"Options\">\n <Listbox.Item>Available option</Listbox.Item>\n <Listbox.Item disabled>Disabled option</Listbox.Item>\n <Listbox.Item>Another option</Listbox.Item>\n</Listbox>"
|
|
102
95
|
}
|
|
103
96
|
],
|
|
@@ -130,21 +123,12 @@
|
|
|
130
123
|
"Listbox.Item selected: boolean - highlight state",
|
|
131
124
|
"Listbox.Item disabled: boolean - non-interactive"
|
|
132
125
|
],
|
|
133
|
-
"a11yRules": [
|
|
134
|
-
"A11Y_LISTBOX_ROLE",
|
|
135
|
-
"A11Y_OPTION_ROLE"
|
|
136
|
-
]
|
|
126
|
+
"a11yRules": ["A11Y_LISTBOX_ROLE", "A11Y_OPTION_ROLE"]
|
|
137
127
|
},
|
|
138
128
|
"ai": {
|
|
139
129
|
"compositionPattern": "compound",
|
|
140
|
-
"subComponents": [
|
|
141
|
-
|
|
142
|
-
"Group",
|
|
143
|
-
"Empty"
|
|
144
|
-
],
|
|
145
|
-
"requiredChildren": [
|
|
146
|
-
"Item"
|
|
147
|
-
],
|
|
130
|
+
"subComponents": ["Item", "Group", "Empty"],
|
|
131
|
+
"requiredChildren": ["Item"],
|
|
148
132
|
"commonPatterns": [
|
|
149
133
|
"<Listbox aria-label=\"Search results\">{results.map(item => <Listbox.Item key={item.id} selected={item.id === selectedId} onClick={() => onSelect(item)}>{item.label}</Listbox.Item>)}</Listbox>"
|
|
150
134
|
]
|