@usefragments/ui 1.6.0 → 2.0.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 +54 -66
- 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/nav-glyph.cjs +139 -0
- package/dist/assets/nav-glyph.d.ts +28 -0
- package/dist/assets/nav-glyph.d.ts.map +1 -0
- package/dist/assets/nav-glyph.js +139 -0
- package/dist/assets/nav-glyph.module.scss.cjs +71 -0
- package/dist/assets/nav-glyph.module.scss.js +71 -0
- package/dist/assets/ui.css +6885 -6308
- package/dist/blocks/components/StatsCard.d.ts +1 -1
- package/dist/blocks/components/StatsCard.d.ts.map +1 -1
- package/dist/chart.cjs +24 -6
- package/dist/chart.js +24 -6
- package/dist/codeblock.cjs +76 -43
- package/dist/codeblock.js +71 -38
- package/dist/colorpicker.cjs +4 -1
- package/dist/colorpicker.js +4 -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 +23 -20
- package/dist/components/Alert/Alert.module.scss.js +23 -20
- package/dist/components/Alert/index.cjs +20 -8
- package/dist/components/Alert/index.d.ts +17 -11
- package/dist/components/Alert/index.d.ts.map +1 -1
- package/dist/components/Alert/index.js +20 -8
- package/dist/components/AppShell/AppShell.module.scss.cjs +14 -14
- package/dist/components/AppShell/AppShell.module.scss.js +14 -14
- package/dist/components/AppShell/index.cjs +2 -2
- package/dist/components/AppShell/index.js +2 -2
- 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 +33 -31
- package/dist/components/Badge/Badge.module.scss.js +33 -31
- package/dist/components/Badge/index.cjs +13 -3
- package/dist/components/Badge/index.d.ts +18 -13
- package/dist/components/Badge/index.d.ts.map +1 -1
- package/dist/components/Badge/index.js +13 -3
- 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 +11 -8
- package/dist/components/Breadcrumbs/Breadcrumbs.module.scss.js +11 -8
- package/dist/components/Breadcrumbs/index.cjs +1 -1
- package/dist/components/Breadcrumbs/index.d.ts.map +1 -1
- package/dist/components/Breadcrumbs/index.js +1 -1
- package/dist/components/Button/Button.module.scss.cjs +36 -27
- package/dist/components/Button/Button.module.scss.js +36 -27
- package/dist/components/Button/index.cjs +20 -4
- package/dist/components/Button/index.d.ts +18 -10
- package/dist/components/Button/index.d.ts.map +1 -1
- package/dist/components/Button/index.js +20 -4
- package/dist/components/ButtonGroup/ButtonGroup.module.scss.cjs +15 -15
- package/dist/components/ButtonGroup/ButtonGroup.module.scss.js +15 -15
- package/dist/components/Card/Card.module.scss.cjs +31 -26
- package/dist/components/Card/Card.module.scss.js +32 -27
- package/dist/components/Card/index.cjs +16 -3
- package/dist/components/Card/index.d.ts +23 -15
- package/dist/components/Card/index.d.ts.map +1 -1
- package/dist/components/Card/index.js +16 -3
- 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 +11 -11
- package/dist/components/Checkbox/Checkbox.module.scss.js +11 -11
- package/dist/components/Checkbox/index.cjs +4 -4
- package/dist/components/Checkbox/index.d.ts +4 -6
- package/dist/components/Checkbox/index.d.ts.map +1 -1
- package/dist/components/Checkbox/index.js +4 -4
- package/dist/components/Chip/Chip.module.scss.cjs +19 -19
- package/dist/components/Chip/Chip.module.scss.js +19 -19
- package/dist/components/Chip/index.cjs +3 -3
- package/dist/components/Chip/index.d.ts +8 -3
- package/dist/components/Chip/index.d.ts.map +1 -1
- package/dist/components/Chip/index.js +3 -3
- 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 +20 -5
- 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 +26 -6
- package/dist/components/Combobox/index.d.ts.map +1 -1
- package/dist/components/Combobox/index.js +26 -6
- package/dist/components/Command/Command.module.scss.cjs +14 -11
- package/dist/components/Command/Command.module.scss.js +14 -11
- package/dist/components/Command/index.cjs +28 -16
- package/dist/components/Command/index.d.ts +8 -3
- package/dist/components/Command/index.d.ts.map +1 -1
- package/dist/components/Command/index.js +28 -16
- package/dist/components/ConversationList/ConversationList.module.scss.cjs +10 -10
- package/dist/components/ConversationList/ConversationList.module.scss.js +10 -10
- package/dist/components/ConversationList/index.cjs +2 -2
- package/dist/components/ConversationList/index.js +2 -2
- 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 +31 -28
- package/dist/components/DataTable/DataTable.module.scss.js +31 -28
- package/dist/components/DataTable/DataTable.virtual.d.ts.map +1 -1
- 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 +13 -16
- package/dist/components/Dialog/index.d.ts +11 -10
- package/dist/components/Dialog/index.d.ts.map +1 -1
- package/dist/components/Dialog/index.js +13 -16
- package/dist/components/Drawer/Drawer.module.scss.cjs +39 -39
- package/dist/components/Drawer/Drawer.module.scss.js +40 -40
- package/dist/components/Drawer/index.cjs +2 -2
- package/dist/components/Drawer/index.d.ts +5 -4
- package/dist/components/Drawer/index.d.ts.map +1 -1
- package/dist/components/Drawer/index.js +2 -2
- 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 +13 -6
- package/dist/components/EmptyState/index.d.ts +13 -5
- package/dist/components/EmptyState/index.d.ts.map +1 -1
- package/dist/components/EmptyState/index.js +13 -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/Grid.module.scss.cjs +54 -54
- package/dist/components/Grid/Grid.module.scss.js +54 -54
- 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 +30 -33
- package/dist/components/Icon/Icon.module.scss.js +30 -33
- package/dist/components/Icon/index.cjs +15 -14
- package/dist/components/Icon/index.d.ts +23 -12
- package/dist/components/Icon/index.d.ts.map +1 -1
- package/dist/components/Icon/index.js +15 -14
- package/dist/components/IconButton/IconButton.module.scss.cjs +12 -12
- package/dist/components/IconButton/IconButton.module.scss.js +12 -12
- package/dist/components/IconButton/index.cjs +2 -1
- package/dist/components/IconButton/index.d.ts +4 -4
- 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 +15 -21
- package/dist/components/Input/Input.module.scss.js +15 -21
- package/dist/components/Input/index.cjs +2 -14
- package/dist/components/Input/index.d.ts +0 -2
- package/dist/components/Input/index.d.ts.map +1 -1
- package/dist/components/Input/index.js +2 -14
- package/dist/components/Link/Link.module.scss.cjs +26 -14
- package/dist/components/Link/Link.module.scss.js +26 -14
- package/dist/components/Link/index.cjs +13 -2
- package/dist/components/Link/index.d.ts +11 -4
- package/dist/components/Link/index.d.ts.map +1 -1
- package/dist/components/Link/index.js +13 -2
- package/dist/components/List/List.module.scss.cjs +23 -19
- package/dist/components/List/List.module.scss.js +23 -19
- package/dist/components/List/index.cjs +7 -7
- package/dist/components/List/index.d.ts +10 -7
- package/dist/components/List/index.d.ts.map +1 -1
- package/dist/components/List/index.js +7 -7
- 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 +5 -5
- package/dist/components/Loading/index.d.ts +8 -7
- package/dist/components/Loading/index.d.ts.map +1 -1
- package/dist/components/Loading/index.js +5 -5
- 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 +20 -20
- package/dist/components/Message/Message.module.scss.js +20 -20
- package/dist/components/Message/index.cjs +1 -1
- package/dist/components/Message/index.d.ts +1 -1
- package/dist/components/Message/index.js +1 -1
- 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 +28 -25
- package/dist/components/Progress/Progress.module.scss.js +28 -25
- package/dist/components/Progress/index.cjs +21 -12
- package/dist/components/Progress/index.d.ts +10 -6
- package/dist/components/Progress/index.d.ts.map +1 -1
- package/dist/components/Progress/index.js +21 -12
- package/dist/components/Prompt/Prompt.module.scss.cjs +30 -30
- package/dist/components/Prompt/Prompt.module.scss.js +30 -30
- package/dist/components/Prompt/index.cjs +7 -7
- package/dist/components/Prompt/index.d.ts +11 -9
- package/dist/components/Prompt/index.d.ts.map +1 -1
- package/dist/components/Prompt/index.js +7 -7
- package/dist/components/RadioGroup/RadioGroup.module.scss.cjs +20 -17
- package/dist/components/RadioGroup/RadioGroup.module.scss.js +20 -17
- package/dist/components/RadioGroup/index.cjs +10 -5
- package/dist/components/RadioGroup/index.d.ts +11 -7
- package/dist/components/RadioGroup/index.d.ts.map +1 -1
- package/dist/components/RadioGroup/index.js +10 -5
- 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/Select/index.cjs +26 -20
- package/dist/components/Select/index.d.ts +5 -5
- package/dist/components/Select/index.d.ts.map +1 -1
- package/dist/components/Select/index.js +26 -20
- package/dist/components/Separator/Separator.module.scss.cjs +25 -19
- package/dist/components/Separator/Separator.module.scss.js +25 -19
- package/dist/components/Separator/index.cjs +10 -8
- package/dist/components/Separator/index.d.ts +4 -2
- package/dist/components/Separator/index.d.ts.map +1 -1
- package/dist/components/Separator/index.js +10 -8
- 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 +15 -38
- 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 +15 -38
- package/dist/components/Skeleton/Skeleton.module.scss.cjs +50 -46
- package/dist/components/Skeleton/Skeleton.module.scss.js +50 -46
- package/dist/components/Skeleton/index.cjs +7 -7
- package/dist/components/Skeleton/index.d.ts +8 -7
- package/dist/components/Skeleton/index.d.ts.map +1 -1
- package/dist/components/Skeleton/index.js +7 -7
- 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 +14 -10
- 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 +14 -10
- package/dist/components/Tabs/Tabs.module.scss.cjs +18 -18
- package/dist/components/Tabs/Tabs.module.scss.js +18 -18
- package/dist/components/Tabs/index.cjs +30 -11
- package/dist/components/Tabs/index.d.ts +8 -6
- package/dist/components/Tabs/index.d.ts.map +1 -1
- package/dist/components/Tabs/index.js +30 -11
- package/dist/components/Text/Text.module.scss.cjs +109 -97
- package/dist/components/Text/Text.module.scss.js +109 -97
- package/dist/components/Text/index.cjs +45 -41
- package/dist/components/Text/index.d.ts +24 -19
- package/dist/components/Text/index.d.ts.map +1 -1
- package/dist/components/Text/index.js +45 -41
- package/dist/components/Textarea/Textarea.module.scss.cjs +22 -28
- package/dist/components/Textarea/Textarea.module.scss.js +22 -28
- package/dist/components/Textarea/index.cjs +3 -10
- package/dist/components/Textarea/index.d.ts +0 -2
- package/dist/components/Textarea/index.d.ts.map +1 -1
- package/dist/components/Textarea/index.js +3 -10
- package/dist/components/Theme/index.cjs +22 -5
- package/dist/components/Theme/index.d.ts +6 -12
- package/dist/components/Theme/index.d.ts.map +1 -1
- package/dist/components/Theme/index.js +22 -5
- package/dist/components/ThemeToggle/ThemeButton.cjs +51 -0
- package/dist/components/ThemeToggle/ThemeButton.d.ts +16 -0
- package/dist/components/ThemeToggle/ThemeButton.d.ts.map +1 -0
- package/dist/components/ThemeToggle/ThemeButton.js +34 -0
- package/dist/components/ThemeToggle/ThemeToggle.module.scss.cjs +6 -6
- package/dist/components/ThemeToggle/ThemeToggle.module.scss.js +6 -6
- package/dist/components/ThemeToggle/icons.cjs +48 -0
- package/dist/components/ThemeToggle/icons.d.ts +10 -0
- package/dist/components/ThemeToggle/icons.d.ts.map +1 -0
- package/dist/components/ThemeToggle/icons.js +48 -0
- package/dist/components/ThemeToggle/index.cjs +6 -50
- package/dist/components/ThemeToggle/index.d.ts +5 -3
- package/dist/components/ThemeToggle/index.d.ts.map +1 -1
- package/dist/components/ThemeToggle/index.js +3 -47
- package/dist/components/ThinkingIndicator/ThinkingIndicator.module.scss.cjs +18 -15
- package/dist/components/ThinkingIndicator/ThinkingIndicator.module.scss.js +18 -15
- package/dist/components/ThinkingIndicator/index.cjs +7 -8
- package/dist/components/ThinkingIndicator/index.d.ts +6 -5
- package/dist/components/ThinkingIndicator/index.d.ts.map +1 -1
- package/dist/components/ThinkingIndicator/index.js +7 -8
- package/dist/components/Toast/Toast.module.scss.cjs +28 -29
- package/dist/components/Toast/Toast.module.scss.js +29 -30
- package/dist/components/Toast/index.cjs +28 -30
- package/dist/components/Toast/index.d.ts +9 -8
- package/dist/components/Toast/index.d.ts.map +1 -1
- package/dist/components/Toast/index.js +28 -30
- package/dist/components/ToggleGroup/ToggleGroup.module.scss.cjs +21 -19
- package/dist/components/ToggleGroup/ToggleGroup.module.scss.js +22 -20
- package/dist/components/ToggleGroup/index.cjs +4 -5
- package/dist/components/ToggleGroup/index.d.ts +7 -6
- package/dist/components/ToggleGroup/index.d.ts.map +1 -1
- package/dist/components/ToggleGroup/index.js +4 -5
- 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/VisuallyHidden.module.scss.cjs +1 -1
- package/dist/components/VisuallyHidden/VisuallyHidden.module.scss.js +1 -1
- package/dist/components/VisuallyHidden/index.d.ts +2 -2
- package/dist/data-table-virtual.cjs +3 -2
- package/dist/data-table-virtual.js +3 -2
- package/dist/data-table.cjs +3 -2
- package/dist/data-table.js +3 -2
- package/dist/datepicker.cjs +26 -13
- package/dist/datepicker.js +26 -13
- package/dist/editor.cjs +68 -28
- package/dist/editor.js +68 -28
- package/dist/index.cjs +6 -2
- package/dist/index.d.ts +9 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -4
- package/dist/markdown.cjs +21 -29
- package/dist/markdown.js +21 -29
- package/dist/measurements/generated.cjs +46 -94
- package/dist/measurements/generated.d.ts +44 -92
- package/dist/measurements/generated.d.ts.map +1 -1
- package/dist/measurements/generated.js +46 -94
- package/dist/measurements/index.d.ts +1 -1
- package/dist/measurements/index.d.ts.map +1 -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 -7
- package/dist/utils/seed-derivation.d.ts +1 -3
- package/dist/utils/seed-derivation.d.ts.map +1 -1
- package/dist/utils/seed-derivation.js +10 -7
- package/dist/utils/theme-presets.cjs +5 -10
- package/dist/utils/theme-presets.d.ts +1 -2
- package/dist/utils/theme-presets.d.ts.map +1 -1
- package/dist/utils/theme-presets.js +5 -10
- package/fragments.json +1 -1
- package/package.json +9 -10
- package/src/assets/fragments-logo.tsx +2 -2
- package/src/assets/fragments-wordmark.tsx +4 -2
- package/src/assets/nav-glyph.module.scss +166 -0
- package/src/assets/nav-glyph.tsx +188 -0
- package/src/components/Accordion/Accordion.contract.json +24 -48
- package/src/components/Accordion/Accordion.module.scss +5 -3
- package/src/components/Alert/Alert.contract.json +49 -65
- package/src/components/Alert/Alert.module.scss +57 -47
- package/src/components/Alert/index.tsx +72 -39
- package/src/components/AppShell/AppShell.contract.json +34 -51
- package/src/components/AppShell/AppShell.module.scss +99 -54
- package/src/components/AppShell/index.tsx +2 -2
- package/src/components/Avatar/Avatar.contract.json +31 -48
- package/src/components/Avatar/Avatar.module.scss +4 -2
- package/src/components/Badge/Badge.contract.json +86 -55
- package/src/components/Badge/Badge.module.scss +80 -48
- package/src/components/Badge/index.tsx +34 -17
- package/src/components/BentoGrid/BentoGrid.contract.json +21 -45
- package/src/components/BentoGrid/BentoGrid.module.scss +4 -8
- package/src/components/Box/Box.contract.json +40 -148
- package/src/components/Box/Box.module.scss +7 -6
- package/src/components/Box/index.tsx +92 -99
- package/src/components/Breadcrumbs/Breadcrumbs.contract.json +21 -34
- package/src/components/Breadcrumbs/Breadcrumbs.module.scss +27 -12
- package/src/components/Breadcrumbs/index.tsx +5 -1
- package/src/components/Button/Button.module.scss +261 -185
- package/src/components/Button/index.tsx +41 -28
- package/src/components/ButtonGroup/ButtonGroup.contract.json +34 -49
- package/src/components/ButtonGroup/ButtonGroup.module.scss +8 -6
- package/src/components/Card/Card.consumer-fixture.module.scss +5 -2
- package/src/components/Card/Card.module.scss +97 -76
- package/src/components/Card/index.tsx +44 -20
- package/src/components/Chart/Chart.contract.json +21 -29
- package/src/components/Chart/Chart.module.scss +6 -5
- package/src/components/Chart/index.tsx +36 -6
- package/src/components/Checkbox/Checkbox.contract.json +28 -27
- package/src/components/Checkbox/Checkbox.module.scss +47 -54
- package/src/components/Checkbox/index.tsx +10 -10
- package/src/components/Chip/Chip.contract.json +38 -45
- package/src/components/Chip/Chip.module.scss +24 -23
- package/src/components/Chip/index.tsx +12 -7
- package/src/components/CodeBlock/CodeBlock.contract.json +46 -76
- package/src/components/CodeBlock/CodeBlock.module.scss +75 -73
- package/src/components/CodeBlock/css-variables-theme.ts +102 -0
- package/src/components/CodeBlock/index.tsx +114 -51
- package/src/components/Collapsible/Collapsible.contract.json +21 -36
- package/src/components/Collapsible/Collapsible.module.scss +1 -7
- package/src/components/ColorPicker/ColorPicker.contract.json +29 -48
- package/src/components/ColorPicker/ColorPicker.module.scss +34 -24
- package/src/components/ColorPicker/index.tsx +6 -1
- package/src/components/Combobox/Combobox.contract.json +36 -37
- package/src/components/Combobox/Combobox.module.scss +16 -19
- package/src/components/Combobox/index.tsx +41 -6
- package/src/components/Command/Command.contract.json +28 -44
- package/src/components/Command/Command.module.scss +19 -21
- package/src/components/Command/index.tsx +64 -47
- package/src/components/ComponentDefaults/ComponentDefaults.contract.json +91 -0
- package/src/components/ConversationList/ConversationList.contract.json +27 -32
- package/src/components/ConversationList/ConversationList.module.scss +2 -3
- package/src/components/ConversationList/index.tsx +2 -2
- package/src/components/DataTable/DataTable.icons.tsx +4 -21
- package/src/components/DataTable/DataTable.module.scss +24 -17
- package/src/components/DataTable/DataTable.virtual.tsx +3 -2
- package/src/components/DataTable/index.tsx +9 -8
- package/src/components/DatePicker/DatePicker.contract.json +27 -28
- package/src/components/DatePicker/DatePicker.module.scss +41 -44
- package/src/components/DatePicker/index.tsx +23 -9
- package/src/components/Dialog/Dialog.module.scss +26 -32
- package/src/components/Dialog/index.tsx +51 -39
- package/src/components/Drawer/Drawer.contract.json +28 -42
- package/src/components/Drawer/Drawer.module.scss +123 -64
- package/src/components/Drawer/index.tsx +7 -5
- package/src/components/Editor/Editor.contract.json +32 -49
- package/src/components/Editor/Editor.module.scss +60 -25
- package/src/components/Editor/index.tsx +240 -179
- package/src/components/EmptyState/EmptyState.contract.json +33 -45
- package/src/components/EmptyState/EmptyState.module.scss +37 -21
- package/src/components/EmptyState/index.tsx +56 -23
- package/src/components/Field/Field.contract.json +28 -46
- package/src/components/Field/Field.module.scss +2 -1
- package/src/components/Field/index.tsx +5 -1
- package/src/components/Fieldset/Fieldset.contract.json +21 -38
- package/src/components/Fieldset/Fieldset.module.scss +15 -7
- package/src/components/Form/Form.contract.json +23 -23
- package/src/components/Grid/Grid.contract.json +28 -64
- package/src/components/Grid/Grid.module.scss +2 -2
- package/src/components/Grid/index.tsx +10 -10
- package/src/components/Header/Header.contract.json +31 -67
- package/src/components/Header/Header.module.scss +57 -54
- package/src/components/Header/index.tsx +134 -122
- package/src/components/Icon/Icon.contract.json +37 -81
- package/src/components/Icon/Icon.module.scss +13 -12
- package/src/components/Icon/index.tsx +31 -31
- package/src/components/IconButton/IconButton.contract.json +37 -21
- package/src/components/IconButton/IconButton.module.scss +19 -11
- package/src/components/IconButton/index.tsx +6 -5
- package/src/components/Image/Image.contract.json +23 -56
- package/src/components/Input/Input.contract.json +25 -44
- package/src/components/Input/Input.module.scss +6 -55
- package/src/components/Input/index.tsx +2 -18
- package/src/components/Link/Link.contract.json +46 -58
- package/src/components/Link/Link.module.scss +41 -10
- package/src/components/Link/index.tsx +27 -6
- package/src/components/List/List.contract.json +33 -62
- package/src/components/List/List.module.scss +10 -5
- package/src/components/List/index.tsx +17 -13
- package/src/components/Listbox/Listbox.contract.json +21 -37
- package/src/components/Listbox/Listbox.module.scss +14 -20
- package/src/components/Loading/Loading.contract.json +41 -65
- package/src/components/Loading/Loading.module.scss +37 -31
- package/src/components/Loading/index.tsx +15 -14
- 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 +45 -6
- package/src/components/Markdown/index.tsx +48 -49
- package/src/components/Menu/Menu.contract.json +30 -46
- package/src/components/Menu/Menu.module.scss +32 -16
- package/src/components/Message/Message.contract.json +31 -54
- package/src/components/Message/Message.module.scss +18 -9
- package/src/components/Message/index.tsx +2 -2
- package/src/components/NavigationMenu/NavigationMenu.contract.json +36 -45
- package/src/components/NavigationMenu/NavigationMenu.module.scss +66 -66
- package/src/components/NavigationMenu/index.tsx +105 -81
- package/src/components/Pagination/Pagination.contract.json +22 -40
- package/src/components/Pagination/Pagination.module.scss +9 -16
- package/src/components/Popover/Popover.contract.json +28 -50
- package/src/components/Popover/Popover.module.scss +30 -28
- package/src/components/Progress/Progress.contract.json +39 -35
- package/src/components/Progress/Progress.module.scss +16 -10
- package/src/components/Progress/index.tsx +34 -16
- package/src/components/Prompt/Prompt.contract.json +40 -56
- package/src/components/Prompt/Prompt.module.scss +49 -48
- package/src/components/Prompt/index.tsx +17 -15
- package/src/components/RadioGroup/RadioGroup.contract.json +29 -28
- package/src/components/RadioGroup/RadioGroup.module.scss +50 -45
- package/src/components/RadioGroup/index.tsx +23 -10
- package/src/components/ScrollArea/ScrollArea.contract.json +18 -19
- package/src/components/ScrollArea/ScrollArea.module.scss +45 -48
- package/src/components/ScrollArea/index.tsx +16 -16
- package/src/components/ScrollArea/scroll-state.ts +24 -24
- package/src/components/Select/Select.module.scss +20 -19
- package/src/components/Select/index.tsx +26 -24
- package/src/components/Separator/Separator.contract.json +29 -53
- package/src/components/Separator/Separator.module.scss +24 -40
- package/src/components/Separator/index.tsx +16 -11
- package/src/components/Sidebar/Sidebar.contract.json +35 -67
- package/src/components/Sidebar/Sidebar.module.scss +94 -88
- package/src/components/Sidebar/index.tsx +167 -167
- package/src/components/Skeleton/Skeleton.contract.json +34 -60
- package/src/components/Skeleton/Skeleton.module.scss +50 -26
- package/src/components/Skeleton/index.tsx +16 -15
- package/src/components/Slider/Slider.contract.json +27 -39
- package/src/components/Slider/Slider.module.scss +9 -22
- package/src/components/Stack/Stack.contract.json +30 -57
- package/src/components/Stack/Stack.module.scss +26 -24
- package/src/components/Stack/index.tsx +3 -3
- package/src/components/Switch/Switch.contract.json +33 -46
- package/src/components/Switch/Switch.module.scss +106 -59
- package/src/components/Table/Table.contract.json +28 -46
- package/src/components/Table/Table.module.scss +24 -16
- package/src/components/TableOfContents/TableOfContents.contract.json +34 -21
- package/src/components/TableOfContents/TableOfContents.module.scss +17 -13
- package/src/components/TableOfContents/index.tsx +27 -10
- package/src/components/Tabs/Tabs.contract.json +35 -56
- package/src/components/Tabs/Tabs.module.scss +27 -31
- package/src/components/Tabs/index.tsx +30 -15
- package/src/components/Text/Text.contract.json +52 -72
- package/src/components/Text/Text.module.scss +34 -18
- package/src/components/Text/index.tsx +123 -83
- package/src/components/Textarea/Textarea.contract.json +24 -55
- package/src/components/Textarea/Textarea.module.scss +22 -52
- package/src/components/Textarea/index.tsx +3 -14
- package/src/components/Theme/Theme.contract.json +35 -53
- package/src/components/Theme/index.tsx +41 -13
- package/src/components/ThemeToggle/ThemeButton.tsx +49 -0
- package/src/components/ThemeToggle/ThemeToggle.module.scss +20 -27
- package/src/components/ThemeToggle/icons.tsx +46 -0
- package/src/components/ThemeToggle/index.tsx +9 -55
- package/src/components/ThinkingIndicator/ThinkingIndicator.contract.json +34 -50
- package/src/components/ThinkingIndicator/ThinkingIndicator.module.scss +9 -7
- package/src/components/ThinkingIndicator/index.tsx +12 -14
- package/src/components/Toast/Toast.contract.json +55 -49
- package/src/components/Toast/Toast.module.scss +50 -105
- package/src/components/Toast/index.tsx +39 -34
- package/src/components/ToggleGroup/ToggleGroup.contract.json +39 -40
- package/src/components/ToggleGroup/ToggleGroup.module.scss +30 -27
- package/src/components/ToggleGroup/index.tsx +11 -11
- package/src/components/Tooltip/Tooltip.contract.json +31 -52
- package/src/components/Tooltip/Tooltip.module.scss +16 -10
- package/src/components/Tooltip/index.tsx +19 -24
- package/src/components/VisuallyHidden/VisuallyHidden.contract.json +22 -44
- package/src/components/VisuallyHidden/VisuallyHidden.module.scss +4 -14
- package/src/components/VisuallyHidden/index.tsx +5 -5
- package/src/index.ts +16 -12
- package/src/measurements/MeasurementTargets.module.scss +6 -7
- package/src/measurements/generated.ts +46 -97
- package/src/measurements/index.ts +0 -1
- package/src/measurements/measurements.json +44 -116
- package/src/recipes/_action.scss +4 -4
- package/src/recipes/_boolean-range.scss +12 -16
- package/src/recipes/_feedback.scss +17 -16
- package/src/recipes/_field.scss +28 -16
- package/src/recipes/_layout.scss +14 -7
- package/src/recipes/_navigation.scss +84 -29
- package/src/recipes/_overlay.scss +143 -43
- package/src/recipes/_popup.scss +54 -34
- package/src/recipes/_prose.scss +48 -28
- package/src/recipes/_representation.scss +10 -9
- package/src/recipes/_segmented.scss +1 -1
- package/src/recipes/_table-chrome.scss +42 -17
- package/src/recipes/_target.scss +2 -4
- package/src/recipes/_typography.scss +10 -0
- package/src/scss.d.ts +1 -1
- package/src/styles/globals.scss +31 -25
- package/src/tokens/_component-properties.scss +19 -1
- package/src/tokens/_computed.scss +32 -49
- package/src/tokens/_derive.scss +112 -210
- package/src/tokens/_measurements.catalog.generated.css +62 -44
- package/src/tokens/_measurements.generated.scss +119 -249
- package/src/tokens/_mixins.scss +49 -48
- package/src/tokens/_palettes.scss +39 -167
- package/src/tokens/_property-registrations.scss +9 -0
- package/src/tokens/_seeds.scss +20 -31
- package/src/tokens/_variables.scss +251 -94
- 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 +11 -14
- package/src/utils/theme-presets.ts +5 -12
- package/dist/blocks/AccountSettings.block.d.ts +0 -3
- package/dist/blocks/AccountSettings.block.d.ts.map +0 -1
- package/dist/blocks/ActivityFeedSkeleton.block.d.ts +0 -3
- package/dist/blocks/ActivityFeedSkeleton.block.d.ts.map +0 -1
- package/dist/blocks/BlogEditor.block.d.ts +0 -3
- package/dist/blocks/BlogEditor.block.d.ts.map +0 -1
- package/dist/blocks/ChatInterface.block.d.ts +0 -3
- package/dist/blocks/ChatInterface.block.d.ts.map +0 -1
- package/dist/blocks/ChatMessages.block.d.ts +0 -3
- package/dist/blocks/ChatMessages.block.d.ts.map +0 -1
- package/dist/blocks/CheckoutForm.block.d.ts +0 -3
- package/dist/blocks/CheckoutForm.block.d.ts.map +0 -1
- package/dist/blocks/CommandPalette.block.d.ts +0 -3
- package/dist/blocks/CommandPalette.block.d.ts.map +0 -1
- package/dist/blocks/ContactForm.block.d.ts +0 -3
- package/dist/blocks/ContactForm.block.d.ts.map +0 -1
- package/dist/blocks/DashboardPage.block.d.ts +0 -3
- package/dist/blocks/DashboardPage.block.d.ts.map +0 -1
- package/dist/blocks/DashboardSkeleton.block.d.ts +0 -3
- package/dist/blocks/DashboardSkeleton.block.d.ts.map +0 -1
- package/dist/blocks/DataTable.block.d.ts +0 -3
- package/dist/blocks/DataTable.block.d.ts.map +0 -1
- package/dist/blocks/EmptyState.block.d.ts +0 -3
- package/dist/blocks/EmptyState.block.d.ts.map +0 -1
- package/dist/blocks/FAQSection.block.d.ts +0 -3
- package/dist/blocks/FAQSection.block.d.ts.map +0 -1
- package/dist/blocks/FeatureGrid.block.d.ts +0 -3
- package/dist/blocks/FeatureGrid.block.d.ts.map +0 -1
- package/dist/blocks/HeroSection.block.d.ts +0 -3
- package/dist/blocks/HeroSection.block.d.ts.map +0 -1
- package/dist/blocks/NavigationHeader.block.d.ts +0 -3
- package/dist/blocks/NavigationHeader.block.d.ts.map +0 -1
- package/dist/blocks/PaginatedTable.block.d.ts +0 -3
- package/dist/blocks/PaginatedTable.block.d.ts.map +0 -1
- package/dist/blocks/PricingComparison.block.d.ts +0 -3
- package/dist/blocks/PricingComparison.block.d.ts.map +0 -1
- package/dist/blocks/ProductCard.block.d.ts +0 -3
- package/dist/blocks/ProductCard.block.d.ts.map +0 -1
- package/dist/blocks/RegistrationForm.block.d.ts +0 -3
- package/dist/blocks/RegistrationForm.block.d.ts.map +0 -1
- package/dist/blocks/SettingsDrawer.block.d.ts +0 -3
- package/dist/blocks/SettingsDrawer.block.d.ts.map +0 -1
- package/dist/blocks/SettingsPanel.block.d.ts +0 -3
- package/dist/blocks/SettingsPanel.block.d.ts.map +0 -1
- package/dist/blocks/ShoppingCart.block.d.ts +0 -3
- package/dist/blocks/ShoppingCart.block.d.ts.map +0 -1
- package/dist/blocks/StatsCardSkeleton.block.d.ts +0 -3
- package/dist/blocks/StatsCardSkeleton.block.d.ts.map +0 -1
- package/dist/blocks/TableSkeleton.block.d.ts +0 -3
- package/dist/blocks/TableSkeleton.block.d.ts.map +0 -1
- package/dist/blocks/ThinkingStates.block.d.ts +0 -3
- package/dist/blocks/ThinkingStates.block.d.ts.map +0 -1
- package/dist/components/Toggle/index.d.ts +0 -3
- package/dist/components/Toggle/index.d.ts.map +0 -1
- 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
- package/src/components/Toggle/index.ts +0 -7
- package/src/tokens/_density.scss +0 -85
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://usefragments.com/schemas/contract.v1.json",
|
|
3
3
|
"name": "RadioGroup",
|
|
4
|
-
"description": "
|
|
5
|
-
"category": "
|
|
4
|
+
"description": "Selects one option from a mutually exclusive set.",
|
|
5
|
+
"category": "inputs",
|
|
6
6
|
"tags": ["form", "radio", "selection", "options"],
|
|
7
7
|
"status": "stable",
|
|
8
8
|
"sourcePath": "src/components/RadioGroup/index.tsx",
|
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
"helperText: string",
|
|
20
20
|
"error: union",
|
|
21
21
|
"size: sm|md|lg (default: md)",
|
|
22
|
+
"variant: outline",
|
|
22
23
|
"wrapperClassName: string",
|
|
23
24
|
"groupClassName: string",
|
|
24
25
|
"groupId: string",
|
|
@@ -87,10 +88,9 @@
|
|
|
87
88
|
},
|
|
88
89
|
"variant": {
|
|
89
90
|
"type": "enum",
|
|
90
|
-
"description": "
|
|
91
|
-
"default": "default",
|
|
91
|
+
"description": "Chrome. Omit for the inline radio beside its label; 'outline' renders each item as a full-width bordered surface with the radio tucked inside.",
|
|
92
92
|
"required": false,
|
|
93
|
-
"values": ["
|
|
93
|
+
"values": ["outline"]
|
|
94
94
|
},
|
|
95
95
|
"wrapperClassName": {
|
|
96
96
|
"type": "string",
|
|
@@ -115,63 +115,62 @@
|
|
|
115
115
|
},
|
|
116
116
|
"usage": {
|
|
117
117
|
"when": [
|
|
118
|
-
"
|
|
119
|
-
"Options
|
|
120
|
-
"
|
|
121
|
-
"2-5 options available"
|
|
118
|
+
"Exactly one answer out of two to five",
|
|
119
|
+
"Options rule each other out",
|
|
120
|
+
"Every option should be visible without opening anything"
|
|
122
121
|
],
|
|
123
122
|
"whenNot": [
|
|
124
|
-
"
|
|
125
|
-
"
|
|
126
|
-
"
|
|
127
|
-
"Options need
|
|
123
|
+
"Several answers allowed (use a Checkbox group)",
|
|
124
|
+
"Long lists (use Select)",
|
|
125
|
+
"A single on/off (use Switch)",
|
|
126
|
+
"Options need searching (use Combobox)"
|
|
128
127
|
],
|
|
129
128
|
"guidelines": [
|
|
130
|
-
"
|
|
131
|
-
"Order options
|
|
132
|
-
"Keep
|
|
133
|
-
"
|
|
129
|
+
"Pre-select a sensible default whenever one exists",
|
|
130
|
+
"Order options predictably: alphabetical, by frequency, or by cost",
|
|
131
|
+
"Keep labels short",
|
|
132
|
+
"Put the trade-off in each item's helperText"
|
|
134
133
|
],
|
|
135
134
|
"accessibility": [
|
|
136
|
-
"
|
|
137
|
-
"
|
|
138
|
-
"
|
|
135
|
+
"The group carries its own label",
|
|
136
|
+
"Arrow keys move between options",
|
|
137
|
+
"The selected option reads as checked"
|
|
139
138
|
]
|
|
140
139
|
},
|
|
141
140
|
"examples": [
|
|
142
141
|
{
|
|
143
142
|
"name": "Default",
|
|
144
|
-
"description": "
|
|
143
|
+
"description": "Three options stacked, the first already chosen.",
|
|
145
144
|
"code": "<RadioGroup defaultValue=\"option1\" label=\"Select an option\">\n <RadioGroup.Item value=\"option1\" label=\"Option 1\" />\n <RadioGroup.Item value=\"option2\" label=\"Option 2\" />\n <RadioGroup.Item value=\"option3\" label=\"Option 3\" />\n</RadioGroup>"
|
|
146
145
|
},
|
|
147
146
|
{
|
|
148
147
|
"name": "With Helper Text",
|
|
149
|
-
"description": "
|
|
148
|
+
"description": "Each option carries the trade-off under its label.",
|
|
150
149
|
"code": "<RadioGroup defaultValue=\"standard\" label=\"Shipping Method\">\n <RadioGroup.Item\n value=\"standard\"\n label=\"Standard\"\n helperText=\"5-7 business days\"\n />\n <RadioGroup.Item\n value=\"express\"\n label=\"Express\"\n helperText=\"2-3 business days\"\n />\n <RadioGroup.Item\n value=\"overnight\"\n label=\"Overnight\"\n helperText=\"Next business day\"\n />\n</RadioGroup>"
|
|
151
150
|
},
|
|
152
151
|
{
|
|
153
152
|
"name": "Horizontal",
|
|
154
|
-
"description": "
|
|
153
|
+
"description": "One row — good for short labels like sizes.",
|
|
155
154
|
"code": "<RadioGroup orientation=\"horizontal\" defaultValue=\"small\" label=\"Size\">\n <RadioGroup.Item value=\"small\" label=\"S\" />\n <RadioGroup.Item value=\"medium\" label=\"M\" />\n <RadioGroup.Item value=\"large\" label=\"L\" />\n <RadioGroup.Item value=\"xlarge\" label=\"XL\" />\n</RadioGroup>"
|
|
156
155
|
},
|
|
157
156
|
{
|
|
158
157
|
"name": "With Group Helper Text",
|
|
159
|
-
"description": "
|
|
158
|
+
"description": "One note under the whole group instead of per option.",
|
|
160
159
|
"code": "<RadioGroup defaultValue=\"standard\" label=\"Plan\" helperText=\"You can change your plan at any time\">\n <RadioGroup.Item value=\"free\" label=\"Free\" />\n <RadioGroup.Item value=\"standard\" label=\"Standard\" />\n <RadioGroup.Item value=\"pro\" label=\"Pro\" />\n</RadioGroup>"
|
|
161
160
|
},
|
|
162
161
|
{
|
|
163
162
|
"name": "With Error",
|
|
164
|
-
"description": "
|
|
163
|
+
"description": "Passing a string to error tints the group and prints the reason.",
|
|
165
164
|
"code": "<RadioGroup label=\"Required selection\" error=\"Please select an option\">\n <RadioGroup.Item value=\"a\" label=\"Option A\" />\n <RadioGroup.Item value=\"b\" label=\"Option B\" />\n</RadioGroup>"
|
|
166
165
|
},
|
|
167
166
|
{
|
|
168
167
|
"name": "Disabled",
|
|
169
|
-
"description": "
|
|
168
|
+
"description": "The choice stays visible but nothing can change it.",
|
|
170
169
|
"code": "<RadioGroup disabled defaultValue=\"locked\" label=\"Locked selection\">\n <RadioGroup.Item value=\"locked\" label=\"This is locked\" />\n <RadioGroup.Item value=\"other\" label=\"Cannot select\" />\n</RadioGroup>"
|
|
171
170
|
},
|
|
172
171
|
{
|
|
173
172
|
"name": "Styling Targets",
|
|
174
|
-
"description": "
|
|
173
|
+
"description": "Named class hooks for the wrapper, the group, and each item.",
|
|
175
174
|
"code": "<RadioGroup\n defaultValue=\"a\"\n label=\"Display mode\"\n wrapperClassName=\"demo-radio-wrapper\"\n groupClassName=\"demo-radio-group\"\n>\n <RadioGroup.Item value=\"a\" label=\"Compact\" controlClassName=\"demo-radio-control\" contentClassName=\"demo-radio-content\" />\n <RadioGroup.Item value=\"b\" label=\"Comfortable\" />\n</RadioGroup>"
|
|
176
175
|
}
|
|
177
176
|
],
|
|
@@ -199,13 +198,15 @@
|
|
|
199
198
|
"onChange: (value: string) => void - alias for onValueChange",
|
|
200
199
|
"orientation: horizontal|vertical (default: vertical)",
|
|
201
200
|
"size: sm|md|lg (default: md)",
|
|
201
|
+
"variant: outline - each item a full-width bordered surface; omit for the inline control",
|
|
202
202
|
"label: string - group label",
|
|
203
203
|
"helperText: string - helper text below the group",
|
|
204
204
|
"error: boolean | string - error styling and message",
|
|
205
205
|
"disabled: boolean - disable all options",
|
|
206
206
|
"wrapperClassName/groupClassName - explicit styling targets for wrapper and group",
|
|
207
207
|
"groupId: string - ID forwarded to the inner radiogroup while id remains on the wrapper",
|
|
208
|
-
"RadioGroup.Item supports helperText (preferred) and description (legacy alias) plus controlClassName/contentClassName for item-level styling"
|
|
208
|
+
"RadioGroup.Item supports helperText (preferred) and description (legacy alias) plus controlClassName/contentClassName for item-level styling",
|
|
209
|
+
"RadioGroup.Item trailing: ReactNode - a short value (price, count) at the end of the row on the label's line; pairs with variant=outline for plan pickers"
|
|
209
210
|
],
|
|
210
211
|
"a11yRules": ["A11Y_RADIO_GROUP", "A11Y_LABEL_REQUIRED", "A11Y_TARGET_SIZE_MIN"]
|
|
211
212
|
},
|
|
@@ -45,11 +45,24 @@
|
|
|
45
45
|
}
|
|
46
46
|
|
|
47
47
|
&[data-disabled] {
|
|
48
|
-
|
|
49
|
-
|
|
48
|
+
@include disabled-state;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
// A trailing value takes a third column so the label and helper keep
|
|
52
|
+
// theirs; it sits on the label's line at the end of the row.
|
|
53
|
+
&[data-has-trailing] {
|
|
54
|
+
grid-template-columns:
|
|
55
|
+
var(--_fui-boolean-mark-size, #{boolean.mark-size("md")}) minmax(0, 1fr)
|
|
56
|
+
auto;
|
|
50
57
|
}
|
|
51
58
|
}
|
|
52
59
|
|
|
60
|
+
.trailing {
|
|
61
|
+
justify-self: end;
|
|
62
|
+
text-align: end;
|
|
63
|
+
white-space: nowrap;
|
|
64
|
+
}
|
|
65
|
+
|
|
53
66
|
// The radio circle
|
|
54
67
|
.radio {
|
|
55
68
|
@include interactive-base;
|
|
@@ -62,39 +75,47 @@
|
|
|
62
75
|
flex-shrink: 0;
|
|
63
76
|
box-sizing: border-box;
|
|
64
77
|
margin-block-start: var(--_fui-boolean-mark-offset, 0);
|
|
65
|
-
background-color: var(--fui-
|
|
66
|
-
border: var(--fui-stroke-hairline, 1px) solid var(--fui-
|
|
78
|
+
background-color: var(--fui-bg-primary, $fui-bg-primary);
|
|
79
|
+
border: var(--fui-stroke-hairline, 1px) solid var(--fui-border-strong, $fui-border-strong);
|
|
67
80
|
border-radius: var(--fui-radius-full, $fui-radius-full);
|
|
68
81
|
cursor: inherit;
|
|
82
|
+
@include high-contrast-outline;
|
|
69
83
|
|
|
70
84
|
&:hover:not([data-disabled]) {
|
|
71
|
-
border-color: var(--fui-
|
|
85
|
+
border-color: var(--fui-text-tertiary, $fui-text-tertiary);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
&:focus-visible {
|
|
89
|
+
@include field.focus-state;
|
|
72
90
|
}
|
|
73
91
|
|
|
74
92
|
&[data-checked] {
|
|
75
93
|
background-color: color-mix(
|
|
76
94
|
in srgb,
|
|
77
|
-
var(--fui-
|
|
78
|
-
var(--fui-
|
|
95
|
+
var(--fui-control-checked-bg, #{$fui-color-accent}) 8%,
|
|
96
|
+
var(--fui-bg-primary, #{$fui-bg-primary})
|
|
79
97
|
);
|
|
80
|
-
border-color: var(--fui-
|
|
81
|
-
box-shadow: inset 0 0 0 1px
|
|
82
|
-
color-mix(in srgb, var(--fui-
|
|
98
|
+
border-color: var(--fui-control-checked-border, $fui-color-accent);
|
|
99
|
+
box-shadow: inset 0 0 0 var(--fui-stroke-hairline, 1px)
|
|
100
|
+
color-mix(in srgb, var(--fui-control-checked-border, #{$fui-color-accent}) 55%, transparent);
|
|
83
101
|
}
|
|
84
102
|
|
|
85
103
|
&[data-checked]:hover:not([data-disabled]) {
|
|
86
104
|
background-color: color-mix(
|
|
87
105
|
in srgb,
|
|
88
|
-
var(--fui-
|
|
89
|
-
var(--fui-
|
|
106
|
+
var(--fui-control-checked-bg-hover, #{$fui-color-accent-hover}) 12%,
|
|
107
|
+
var(--fui-bg-primary, #{$fui-bg-primary})
|
|
90
108
|
);
|
|
91
|
-
border-color: var(--fui-
|
|
109
|
+
border-color: var(--fui-control-checked-border-hover, $fui-color-accent-hover);
|
|
92
110
|
}
|
|
93
111
|
|
|
94
112
|
&[data-invalid] {
|
|
95
|
-
|
|
96
|
-
}
|
|
113
|
+
@include field.invalid-state;
|
|
97
114
|
|
|
115
|
+
&:focus-visible {
|
|
116
|
+
@include field.invalid-focus-state;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
98
119
|
}
|
|
99
120
|
|
|
100
121
|
// Size variants
|
|
@@ -114,7 +135,7 @@
|
|
|
114
135
|
left: 50%;
|
|
115
136
|
width: var(--fui-raw-space-8, 8px);
|
|
116
137
|
height: var(--fui-raw-space-8, 8px);
|
|
117
|
-
background-color: var(--fui-
|
|
138
|
+
background-color: var(--fui-control-checked-bg, $fui-color-accent);
|
|
118
139
|
border-radius: var(--fui-radius-full, $fui-radius-full);
|
|
119
140
|
|
|
120
141
|
// Animation - use translate for centering combined with scale
|
|
@@ -161,16 +182,16 @@
|
|
|
161
182
|
}
|
|
162
183
|
|
|
163
184
|
// ============================================
|
|
164
|
-
//
|
|
185
|
+
// Outline variant: each item is a full-width bordered surface that signals
|
|
165
186
|
// selection via background + border tint while keeping the inline radio
|
|
166
187
|
// circle as the canonical control. The `:has([data-checked])` selector is
|
|
167
188
|
// the source of truth for selected styling — no extra attribute plumbing
|
|
168
189
|
// required from JS.
|
|
169
190
|
// ============================================
|
|
170
|
-
//
|
|
171
|
-
// as a deliberate state change rather than a small shift between two
|
|
172
|
-
// surfaces. Mirrors the pattern used by the Checkbox
|
|
173
|
-
.
|
|
191
|
+
// The outline variant uses a transparent base so the selected accent tint
|
|
192
|
+
// reads as a deliberate state change rather than a small shift between two
|
|
193
|
+
// grey surfaces. Mirrors the pattern used by the Checkbox outline variant.
|
|
194
|
+
.itemWrapperOutline {
|
|
174
195
|
width: 100%;
|
|
175
196
|
border-radius: var(--fui-radius-md, $fui-radius-md);
|
|
176
197
|
border: var(--fui-stroke-hairline, 1px) solid var(--fui-border-default, $fui-border-default);
|
|
@@ -186,23 +207,23 @@
|
|
|
186
207
|
}
|
|
187
208
|
|
|
188
209
|
&:focus-within:not([data-disabled]) {
|
|
189
|
-
border-color: var(--fui-
|
|
210
|
+
border-color: var(--fui-control-checked-border, $fui-color-accent);
|
|
190
211
|
@include focus-ring;
|
|
191
212
|
}
|
|
192
213
|
|
|
193
214
|
&:has([data-checked]) {
|
|
194
215
|
background: color-mix(
|
|
195
216
|
in srgb,
|
|
196
|
-
var(--fui-
|
|
217
|
+
var(--fui-control-checked-bg, #{$fui-color-accent}) 13%,
|
|
197
218
|
transparent
|
|
198
219
|
);
|
|
199
220
|
border-color: color-mix(
|
|
200
221
|
in srgb,
|
|
201
|
-
var(--fui-
|
|
222
|
+
var(--fui-control-checked-border, #{$fui-color-accent}) 62%,
|
|
202
223
|
transparent
|
|
203
224
|
);
|
|
204
|
-
box-shadow: 0 0 0 1px
|
|
205
|
-
color-mix(in srgb, var(--fui-
|
|
225
|
+
box-shadow: 0 0 0 var(--fui-stroke-hairline, 1px)
|
|
226
|
+
color-mix(in srgb, var(--fui-control-checked-border, #{$fui-color-accent}) 28%, transparent);
|
|
206
227
|
}
|
|
207
228
|
|
|
208
229
|
&[data-size="sm"] {
|
|
@@ -219,26 +240,10 @@
|
|
|
219
240
|
}
|
|
220
241
|
|
|
221
242
|
.group[data-invalid] .radio {
|
|
222
|
-
|
|
223
|
-
}
|
|
224
|
-
|
|
225
|
-
// ============================================
|
|
226
|
-
// Accessibility: High Contrast Mode
|
|
227
|
-
// ============================================
|
|
243
|
+
@include field.invalid-state;
|
|
228
244
|
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
border-color: var(--fui-text-primary, $fui-text-primary);
|
|
232
|
-
outline: var(--fui-stroke-hairline, 1px) solid var(--fui-text-primary, $fui-text-primary);
|
|
233
|
-
outline-offset: calc(-1 * var(--fui-stroke-default, 2px));
|
|
234
|
-
|
|
235
|
-
&[data-checked] {
|
|
236
|
-
border-color: var(--fui-button-primary-base, $fui-color-accent);
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
&[data-invalid] {
|
|
240
|
-
border-color: var(--fui-color-danger-text, $fui-color-danger-text);
|
|
241
|
-
}
|
|
245
|
+
&:focus-visible {
|
|
246
|
+
@include field.invalid-focus-state;
|
|
242
247
|
}
|
|
243
248
|
}
|
|
244
249
|
|
|
@@ -50,13 +50,11 @@ export interface RadioGroupProps extends Omit<
|
|
|
50
50
|
/** Size variant */
|
|
51
51
|
size?: "sm" | "md" | "lg";
|
|
52
52
|
/**
|
|
53
|
-
*
|
|
54
|
-
*
|
|
55
|
-
*
|
|
56
|
-
* tucked inside. Useful for high-stakes choices, surveys, plan pickers.
|
|
57
|
-
* @default "default"
|
|
53
|
+
* Chrome. Omit it for the inline radio circle next to a label (form-control
|
|
54
|
+
* style); `outline` renders each item as a full-width bordered surface with
|
|
55
|
+
* the radio circle tucked inside — high-stakes choices, surveys, plan pickers.
|
|
58
56
|
*/
|
|
59
|
-
variant?: "
|
|
57
|
+
variant?: "outline";
|
|
60
58
|
/** Class applied to the outer wrapper (label + group + error) */
|
|
61
59
|
wrapperClassName?: string;
|
|
62
60
|
/** Class applied to the inner radio group container */
|
|
@@ -76,6 +74,12 @@ export interface RadioItemProps {
|
|
|
76
74
|
helperText?: string;
|
|
77
75
|
/** @deprecated Use helperText instead. Description text below the label. */
|
|
78
76
|
description?: string;
|
|
77
|
+
/**
|
|
78
|
+
* A value at the end of the row, on the label's line — a price, a count,
|
|
79
|
+
* a date. Read by the label's accessible name, so keep it short and put
|
|
80
|
+
* the explanation in `helperText`.
|
|
81
|
+
*/
|
|
82
|
+
trailing?: React.ReactNode;
|
|
79
83
|
/** Whether this item is disabled */
|
|
80
84
|
disabled?: boolean;
|
|
81
85
|
/** Accessible name for icon-only mode */
|
|
@@ -97,7 +101,7 @@ export interface RadioItemProps {
|
|
|
97
101
|
// ============================================
|
|
98
102
|
|
|
99
103
|
const RadioSizeContext = React.createContext<ControlSize>("md");
|
|
100
|
-
const RadioVariantContext = React.createContext<"
|
|
104
|
+
const RadioVariantContext = React.createContext<"outline" | undefined>(undefined);
|
|
101
105
|
|
|
102
106
|
// ============================================
|
|
103
107
|
// Radio Item Component
|
|
@@ -108,6 +112,7 @@ function RadioItem({
|
|
|
108
112
|
label,
|
|
109
113
|
helperText,
|
|
110
114
|
description,
|
|
115
|
+
trailing,
|
|
111
116
|
disabled = false,
|
|
112
117
|
"aria-label": ariaLabel,
|
|
113
118
|
"aria-labelledby": ariaLabelledBy,
|
|
@@ -122,6 +127,7 @@ function RadioItem({
|
|
|
122
127
|
const id = React.useId();
|
|
123
128
|
const labelId = label ? `radio-label-${id}` : undefined;
|
|
124
129
|
const descriptionId = resolvedHelperText ? `radio-desc-${id}` : undefined;
|
|
130
|
+
const trailingId = trailing != null ? `radio-trailing-${id}` : undefined;
|
|
125
131
|
|
|
126
132
|
const radioClasses = [
|
|
127
133
|
styles.radio,
|
|
@@ -134,7 +140,7 @@ function RadioItem({
|
|
|
134
140
|
|
|
135
141
|
const wrapperClasses = [
|
|
136
142
|
styles.itemWrapper,
|
|
137
|
-
variant === "
|
|
143
|
+
variant === "outline" && styles.itemWrapperOutline,
|
|
138
144
|
className,
|
|
139
145
|
]
|
|
140
146
|
.filter(Boolean)
|
|
@@ -162,13 +168,14 @@ function RadioItem({
|
|
|
162
168
|
className={wrapperClasses}
|
|
163
169
|
data-disabled={disabled || undefined}
|
|
164
170
|
data-has-description={resolvedHelperText ? true : undefined}
|
|
171
|
+
data-has-trailing={trailing != null ? true : undefined}
|
|
165
172
|
data-size={size}
|
|
166
173
|
>
|
|
167
174
|
<BaseRadio.Root
|
|
168
175
|
value={value}
|
|
169
176
|
disabled={disabled}
|
|
170
177
|
aria-label={ariaLabel}
|
|
171
|
-
aria-labelledby={mergeAriaIds(ariaLabelledBy, labelId)}
|
|
178
|
+
aria-labelledby={mergeAriaIds(ariaLabelledBy, labelId, trailingId)}
|
|
172
179
|
aria-describedby={mergeAriaIds(ariaDescribedBy, descriptionId)}
|
|
173
180
|
data-size={size}
|
|
174
181
|
className={radioClasses}
|
|
@@ -185,6 +192,11 @@ function RadioItem({
|
|
|
185
192
|
</span>
|
|
186
193
|
)}
|
|
187
194
|
</div>
|
|
195
|
+
{trailing != null && (
|
|
196
|
+
<span id={trailingId} className={styles.trailing}>
|
|
197
|
+
{trailing}
|
|
198
|
+
</span>
|
|
199
|
+
)}
|
|
188
200
|
</label>
|
|
189
201
|
);
|
|
190
202
|
}
|
|
@@ -210,7 +222,7 @@ const RadioGroupRoot = React.forwardRef<HTMLDivElement, RadioGroupProps>(functio
|
|
|
210
222
|
helperText,
|
|
211
223
|
error,
|
|
212
224
|
size: sizeProp,
|
|
213
|
-
variant
|
|
225
|
+
variant,
|
|
214
226
|
wrapperClassName,
|
|
215
227
|
groupClassName,
|
|
216
228
|
groupId,
|
|
@@ -266,6 +278,7 @@ const RadioGroupRoot = React.forwardRef<HTMLDivElement, RadioGroupProps>(functio
|
|
|
266
278
|
aria-describedby={mergeAriaIds(ariaDescribedBy, errorId, helperId)}
|
|
267
279
|
data-size={size}
|
|
268
280
|
data-invalid={hasError || undefined}
|
|
281
|
+
aria-invalid={hasError || undefined}
|
|
269
282
|
className={groupClasses}
|
|
270
283
|
>
|
|
271
284
|
{children}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://usefragments.com/schemas/contract.v1.json",
|
|
3
3
|
"name": "ScrollArea",
|
|
4
|
-
"description": "
|
|
4
|
+
"description": "Scrolls overflowing content with a slim scrollbar and optional edge fades.",
|
|
5
5
|
"category": "layout",
|
|
6
6
|
"tags": ["scroll", "overflow", "scrollbar", "container", "layout"],
|
|
7
7
|
"status": "stable",
|
|
@@ -48,20 +48,19 @@
|
|
|
48
48
|
},
|
|
49
49
|
"usage": {
|
|
50
50
|
"when": [
|
|
51
|
-
"Content overflows
|
|
52
|
-
"
|
|
53
|
-
"Scrollable panels, sidebars,
|
|
54
|
-
"Any area where native scrollbars look too heavy"
|
|
51
|
+
"Content that overflows a fixed-size container",
|
|
52
|
+
"Tab bars or chip rows that may run past the edge",
|
|
53
|
+
"Scrollable panels, sidebars, and menu content"
|
|
55
54
|
],
|
|
56
55
|
"whenNot": [
|
|
57
|
-
"
|
|
58
|
-
"
|
|
56
|
+
"Whole-page scrolling (use the native body scroll)",
|
|
57
|
+
"Content that can never overflow"
|
|
59
58
|
],
|
|
60
59
|
"guidelines": [
|
|
61
|
-
"
|
|
62
|
-
"
|
|
63
|
-
"
|
|
64
|
-
"
|
|
60
|
+
"orientation constrains which axis can scroll",
|
|
61
|
+
"showFades hints at hidden content when nothing else does",
|
|
62
|
+
"scrollbarVisibility=\"hover\" hides the thumb without shifting layout",
|
|
63
|
+
"The container needs a fixed height or the area cannot scroll"
|
|
65
64
|
],
|
|
66
65
|
"accessibility": [
|
|
67
66
|
"Preserves native scroll behavior and keyboard support across both axes",
|
|
@@ -72,23 +71,23 @@
|
|
|
72
71
|
"examples": [
|
|
73
72
|
{
|
|
74
73
|
"name": "Vertical",
|
|
75
|
-
"description": "
|
|
76
|
-
"code": "<ScrollArea style={{ height: '200px' }}>\n
|
|
74
|
+
"description": "Scrolls down with a thin, always-visible thumb.",
|
|
75
|
+
"code": "import { Box } from '@/components/Box';\nimport { ScrollArea } from '@/components/ScrollArea';\nimport { Stack } from '@/components/Stack';\nimport { Text } from '@/components/Text';\n\n<Box width=\"100%\">\n <ScrollArea style={{ height: '200px' }}>\n <Box padding=\"sm\">\n <Stack gap=\"sm\">\n <Text>Row 1</Text>\n <Text>Row 2</Text>\n <Text>Row 3</Text>\n <Text>Row 4</Text>\n <Text>Row 5</Text>\n <Text>Row 6</Text>\n <Text>Row 7</Text>\n <Text>Row 8</Text>\n <Text>Row 9</Text>\n <Text>Row 10</Text>\n <Text>Row 11</Text>\n <Text>Row 12</Text>\n </Stack>\n </Box>\n </ScrollArea>\n</Box>"
|
|
77
76
|
},
|
|
78
77
|
{
|
|
79
78
|
"name": "Horizontal",
|
|
80
|
-
"description": "
|
|
81
|
-
"code": "
|
|
79
|
+
"description": "Keeps an overflowing row of chips on one line.",
|
|
80
|
+
"code": "import { Box } from '@/components/Box';\nimport { Chip } from '@/components/Chip';\nimport { ScrollArea } from '@/components/ScrollArea';\nimport { Stack } from '@/components/Stack';\n\n<Box width=\"100%\">\n <ScrollArea orientation=\"horizontal\">\n <Stack direction=\"row\" gap=\"sm\">\n <Chip>React</Chip>\n <Chip>TypeScript</Chip>\n <Chip>Accessibility</Chip>\n <Chip>Docs</Chip>\n <Chip>Playground</Chip>\n <Chip>CLI</Chip>\n <Chip>Tokens</Chip>\n <Chip>Governance</Chip>\n <Chip>Contracts</Chip>\n <Chip>Registry</Chip>\n </Stack>\n </ScrollArea>\n</Box>"
|
|
82
81
|
},
|
|
83
82
|
{
|
|
84
83
|
"name": "With Fades",
|
|
85
|
-
"description": "
|
|
86
|
-
"code": "<ScrollArea orientation=\"horizontal\" showFades>\n
|
|
84
|
+
"description": "Edge fades signal there is more content each way.",
|
|
85
|
+
"code": "import { Box } from '@/components/Box';\nimport { Chip } from '@/components/Chip';\nimport { ScrollArea } from '@/components/ScrollArea';\nimport { Stack } from '@/components/Stack';\n\n<Box width=\"100%\">\n <ScrollArea orientation=\"horizontal\" showFades>\n <Stack direction=\"row\" gap=\"sm\">\n <Chip>React</Chip>\n <Chip>TypeScript</Chip>\n <Chip>Accessibility</Chip>\n <Chip>Docs</Chip>\n <Chip>Playground</Chip>\n <Chip>CLI</Chip>\n <Chip>Tokens</Chip>\n <Chip>Governance</Chip>\n <Chip>Contracts</Chip>\n <Chip>Registry</Chip>\n </Stack>\n </ScrollArea>\n</Box>"
|
|
87
86
|
},
|
|
88
87
|
{
|
|
89
88
|
"name": "Hover Scrollbar",
|
|
90
|
-
"description": "
|
|
91
|
-
"code": "<ScrollArea scrollbarVisibility=\"hover\" style={{ height: '200px' }}>\n
|
|
89
|
+
"description": "Thumb stays invisible until hover or keyboard focus.",
|
|
90
|
+
"code": "import { Box } from '@/components/Box';\nimport { ScrollArea } from '@/components/ScrollArea';\nimport { Stack } from '@/components/Stack';\nimport { Text } from '@/components/Text';\n\n<Box width=\"100%\">\n <ScrollArea scrollbarVisibility=\"hover\" style={{ height: '200px' }}>\n <Box padding=\"sm\">\n <Stack gap=\"sm\">\n <Text>Row 1</Text>\n <Text>Row 2</Text>\n <Text>Row 3</Text>\n <Text>Row 4</Text>\n <Text>Row 5</Text>\n <Text>Row 6</Text>\n <Text>Row 7</Text>\n <Text>Row 8</Text>\n <Text>Row 9</Text>\n <Text>Row 10</Text>\n <Text>Row 11</Text>\n <Text>Row 12</Text>\n </Stack>\n </Box>\n </ScrollArea>\n</Box>"
|
|
92
91
|
}
|
|
93
92
|
],
|
|
94
93
|
"contract": {
|