@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,14 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://usefragments.com/schemas/contract.v1.json",
|
|
3
3
|
"name": "Skeleton",
|
|
4
|
-
"description": "
|
|
4
|
+
"description": "Holds the shape of content that has not arrived yet.",
|
|
5
5
|
"category": "feedback",
|
|
6
|
-
"tags": [
|
|
7
|
-
"loading",
|
|
8
|
-
"placeholder",
|
|
9
|
-
"skeleton",
|
|
10
|
-
"shimmer"
|
|
11
|
-
],
|
|
6
|
+
"tags": ["loading", "placeholder", "skeleton", "shimmer"],
|
|
12
7
|
"status": "stable",
|
|
13
8
|
"sourcePath": "src/components/Skeleton/index.tsx",
|
|
14
9
|
"exportName": "Skeleton",
|
|
@@ -27,25 +22,14 @@
|
|
|
27
22
|
"description": "Semantic variant that auto-sizes",
|
|
28
23
|
"default": "rect",
|
|
29
24
|
"required": false,
|
|
30
|
-
"values": [
|
|
31
|
-
"text",
|
|
32
|
-
"heading",
|
|
33
|
-
"avatar",
|
|
34
|
-
"button",
|
|
35
|
-
"input",
|
|
36
|
-
"rect"
|
|
37
|
-
]
|
|
25
|
+
"values": ["text", "heading", "avatar", "button", "input", "rect"]
|
|
38
26
|
},
|
|
39
27
|
"size": {
|
|
40
28
|
"type": "enum",
|
|
41
29
|
"description": "Size for avatar/button variants",
|
|
42
30
|
"default": "md",
|
|
43
31
|
"required": false,
|
|
44
|
-
"values": [
|
|
45
|
-
"sm",
|
|
46
|
-
"md",
|
|
47
|
-
"lg"
|
|
48
|
-
]
|
|
32
|
+
"values": ["sm", "md", "lg"]
|
|
49
33
|
},
|
|
50
34
|
"width": {
|
|
51
35
|
"type": "union",
|
|
@@ -67,13 +51,7 @@
|
|
|
67
51
|
"type": "enum",
|
|
68
52
|
"description": "Border radius override",
|
|
69
53
|
"required": false,
|
|
70
|
-
"values": [
|
|
71
|
-
"sm",
|
|
72
|
-
"md",
|
|
73
|
-
"lg",
|
|
74
|
-
"none",
|
|
75
|
-
"full"
|
|
76
|
-
]
|
|
54
|
+
"values": ["sm", "md", "lg", "none", "full"]
|
|
77
55
|
},
|
|
78
56
|
"static": {
|
|
79
57
|
"type": "boolean",
|
|
@@ -84,54 +62,53 @@
|
|
|
84
62
|
},
|
|
85
63
|
"usage": {
|
|
86
64
|
"when": [
|
|
87
|
-
"Content is
|
|
88
|
-
"
|
|
89
|
-
"
|
|
90
|
-
"Improving perceived performance"
|
|
65
|
+
"Content is still being fetched",
|
|
66
|
+
"You want to stop the layout jumping when it lands",
|
|
67
|
+
"Making a wait feel shorter than it is"
|
|
91
68
|
],
|
|
92
69
|
"whenNot": [
|
|
93
|
-
"
|
|
94
|
-
"
|
|
95
|
-
"
|
|
70
|
+
"Waits under about 300ms",
|
|
71
|
+
"A spinner says it better",
|
|
72
|
+
"Work the user cannot see anyway"
|
|
96
73
|
],
|
|
97
74
|
"guidelines": [
|
|
98
|
-
"Match
|
|
99
|
-
"
|
|
100
|
-
"
|
|
101
|
-
"
|
|
102
|
-
"Skeleton and Skeleton.Text forward
|
|
75
|
+
"Match the shape and size of the real content",
|
|
76
|
+
"Prefer the text, heading, and avatar variants over hand-rolled boxes",
|
|
77
|
+
"Give Skeleton.Text an ancestor with a real width — percentage lines collapse without one",
|
|
78
|
+
"A few big shapes beat many small ones",
|
|
79
|
+
"Skeleton and Skeleton.Text forward id, aria-*, data-* and handlers"
|
|
103
80
|
],
|
|
104
81
|
"accessibility": [
|
|
105
|
-
"Skeletons are
|
|
106
|
-
"Announce loading state separately if
|
|
107
|
-
"
|
|
82
|
+
"Skeletons are decoration — hide them with aria-hidden",
|
|
83
|
+
"Announce the loading state separately if it matters",
|
|
84
|
+
"Keep the pulse subtle but visible against the surface"
|
|
108
85
|
]
|
|
109
86
|
},
|
|
110
87
|
"examples": [
|
|
111
88
|
{
|
|
112
89
|
"name": "Default",
|
|
113
|
-
"description": "
|
|
90
|
+
"description": "One rectangle at an explicit size.",
|
|
114
91
|
"code": "<Skeleton width={200} height={20} />"
|
|
115
92
|
},
|
|
116
93
|
{
|
|
117
94
|
"name": "Text Lines",
|
|
118
|
-
"description": "
|
|
119
|
-
"code": "<Skeleton.Text lines={3}
|
|
95
|
+
"description": "Stacked lines that fill the width they are given.",
|
|
96
|
+
"code": "<div style={{ width: 260 }}>\n <Skeleton.Text lines={3} />\n</div>"
|
|
120
97
|
},
|
|
121
98
|
{
|
|
122
99
|
"name": "Semantic Variants",
|
|
123
|
-
"description": "
|
|
124
|
-
"code": "<div
|
|
100
|
+
"description": "Heading sits taller than the body lines under it.",
|
|
101
|
+
"code": "<div\n style={{\n width: 260,\n display: 'flex',\n flexDirection: 'column',\n gap: 'var(--fui-space-2)',\n }}\n>\n <Skeleton variant=\"heading\" width={200} />\n <Skeleton variant=\"text\" width=\"100%\" />\n <Skeleton variant=\"text\" width=\"80%\" />\n</div>"
|
|
125
102
|
},
|
|
126
103
|
{
|
|
127
104
|
"name": "Avatar Skeleton",
|
|
128
|
-
"description": "
|
|
105
|
+
"description": "Circles matching the three avatar sizes.",
|
|
129
106
|
"code": "<div style={{ display: 'flex', gap: 'var(--fui-space-1)', alignItems: 'center' }}>\n <Skeleton.Circle size=\"sm\" />\n <Skeleton.Circle size=\"md\" />\n <Skeleton.Circle size=\"lg\" />\n</div>"
|
|
130
107
|
},
|
|
131
108
|
{
|
|
132
109
|
"name": "Card Skeleton",
|
|
133
|
-
"description": "
|
|
134
|
-
"code": "<div
|
|
110
|
+
"description": "Media, title, then body — the card before it loads.",
|
|
111
|
+
"code": "<div\n style={{\n width: 300,\n padding: 'var(--fui-space-2)',\n border: '1px solid var(--fui-border)',\n borderRadius: 'var(--fui-radius-lg)',\n }}\n>\n <Skeleton variant=\"rect\" height={120} radius=\"md\" />\n <div style={{ marginTop: 'var(--fui-space-2)' }}>\n <Skeleton variant=\"heading\" width=\"60%\" />\n </div>\n <div style={{ marginTop: 'var(--fui-space-1)' }}>\n <Skeleton.Text lines={2} />\n </div>\n</div>"
|
|
135
112
|
}
|
|
136
113
|
],
|
|
137
114
|
"relations": [
|
|
@@ -152,10 +129,7 @@
|
|
|
152
129
|
},
|
|
153
130
|
"ai": {
|
|
154
131
|
"compositionPattern": "compound",
|
|
155
|
-
"subComponents": [
|
|
156
|
-
"Text",
|
|
157
|
-
"Circle"
|
|
158
|
-
]
|
|
132
|
+
"subComponents": ["Text", "Circle"]
|
|
159
133
|
},
|
|
160
134
|
"provenance": {
|
|
161
135
|
"source": "migrated",
|
|
@@ -5,28 +5,44 @@
|
|
|
5
5
|
// Skeleton Component Styles
|
|
6
6
|
// ============================================
|
|
7
7
|
|
|
8
|
-
// Animation
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
8
|
+
// Animation — a highlight travelling across the placeholder, not the whole
|
|
9
|
+
// block fading out. A pulsing opacity spends half its cycle invisible on a
|
|
10
|
+
// light surface; the shimmer keeps the missing fact legible the entire time.
|
|
11
|
+
@keyframes skeleton-shimmer {
|
|
12
|
+
from {
|
|
13
|
+
background-position: 120% 0;
|
|
13
14
|
}
|
|
14
|
-
|
|
15
|
-
|
|
15
|
+
to {
|
|
16
|
+
background-position: -120% 0;
|
|
16
17
|
}
|
|
17
18
|
}
|
|
18
19
|
|
|
19
20
|
// Base skeleton
|
|
20
21
|
.skeleton {
|
|
21
22
|
display: block;
|
|
22
|
-
background-color: var(--fui-
|
|
23
|
-
|
|
23
|
+
background-color: var(--fui-skeleton, #{$fui-bg-tertiary});
|
|
24
|
+
background-image: linear-gradient(
|
|
25
|
+
90deg,
|
|
26
|
+
var(--fui-skeleton, #{$fui-bg-tertiary}) 0%,
|
|
27
|
+
var(--fui-skeleton-hi, #{$fui-bg-secondary}) 45%,
|
|
28
|
+
var(--fui-skeleton, #{$fui-bg-tertiary}) 90%
|
|
29
|
+
);
|
|
30
|
+
background-size: 240% 100%;
|
|
31
|
+
animation: skeleton-shimmer var(--fui-duration-shimmer, $fui-duration-shimmer) linear infinite;
|
|
24
32
|
border-radius: var(--fui-radius-md, #{$fui-radius-md});
|
|
25
33
|
}
|
|
26
34
|
|
|
27
35
|
// Static (no animation)
|
|
28
36
|
.static {
|
|
29
37
|
animation: none;
|
|
38
|
+
background-image: none;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
@media (prefers-reduced-motion: reduce) {
|
|
42
|
+
.skeleton {
|
|
43
|
+
animation: none;
|
|
44
|
+
background-image: none;
|
|
45
|
+
}
|
|
30
46
|
}
|
|
31
47
|
|
|
32
48
|
// Fill parent
|
|
@@ -150,7 +166,8 @@
|
|
|
150
166
|
height: 1em;
|
|
151
167
|
width: 100%;
|
|
152
168
|
background-color: var(--fui-bg-tertiary, #{$fui-bg-tertiary});
|
|
153
|
-
animation: skeleton-pulse
|
|
169
|
+
animation: skeleton-pulse var(--fui-duration-shimmer, $fui-duration-shimmer)
|
|
170
|
+
cubic-bezier(0.4, 0, 0.6, 1) infinite;
|
|
154
171
|
border-radius: var(--fui-radius-sm, #{$fui-radius-sm});
|
|
155
172
|
}
|
|
156
173
|
|
|
@@ -1,15 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://usefragments.com/schemas/contract.v1.json",
|
|
3
3
|
"name": "Slider",
|
|
4
|
-
"description": "
|
|
5
|
-
"category": "
|
|
6
|
-
"tags": [
|
|
7
|
-
"slider",
|
|
8
|
-
"range",
|
|
9
|
-
"input",
|
|
10
|
-
"number",
|
|
11
|
-
"control"
|
|
12
|
-
],
|
|
4
|
+
"description": "Selects a numeric value within a defined range.",
|
|
5
|
+
"category": "inputs",
|
|
6
|
+
"tags": ["slider", "range", "input", "number", "control"],
|
|
13
7
|
"status": "stable",
|
|
14
8
|
"sourcePath": "src/components/Slider/index.tsx",
|
|
15
9
|
"exportName": "Slider",
|
|
@@ -141,63 +135,63 @@
|
|
|
141
135
|
},
|
|
142
136
|
"usage": {
|
|
143
137
|
"when": [
|
|
144
|
-
"
|
|
145
|
-
"Volume
|
|
146
|
-
"Price range filters",
|
|
147
|
-
"
|
|
138
|
+
"Any value along a range, where roughly right is good enough",
|
|
139
|
+
"Volume, brightness, opacity",
|
|
140
|
+
"Price and range filters",
|
|
141
|
+
"The effect is visible as the user drags"
|
|
148
142
|
],
|
|
149
143
|
"whenNot": [
|
|
150
|
-
"
|
|
151
|
-
"
|
|
152
|
-
"
|
|
144
|
+
"An exact number matters (use Input type=\"number\")",
|
|
145
|
+
"A handful of fixed choices (use RadioGroup or Select)",
|
|
146
|
+
"On or off (use Switch)"
|
|
153
147
|
],
|
|
154
148
|
"guidelines": [
|
|
155
|
-
"
|
|
156
|
-
"
|
|
157
|
-
"
|
|
158
|
-
"
|
|
149
|
+
"Label what the track controls",
|
|
150
|
+
"Turn on showValue whenever the number matters",
|
|
151
|
+
"Set min and max to the real limits, not 0-100 by habit",
|
|
152
|
+
"Pick a step the user can actually land on"
|
|
159
153
|
],
|
|
160
154
|
"accessibility": [
|
|
161
|
-
"Label is
|
|
162
|
-
"
|
|
163
|
-
"
|
|
164
|
-
"
|
|
155
|
+
"Label is tied to the track",
|
|
156
|
+
"Arrow keys move the thumb",
|
|
157
|
+
"The current value is announced",
|
|
158
|
+
"Native slider semantics throughout"
|
|
165
159
|
]
|
|
166
160
|
},
|
|
167
161
|
"examples": [
|
|
168
162
|
{
|
|
169
163
|
"name": "Default",
|
|
170
|
-
"description": "
|
|
164
|
+
"description": "0-100 with no number shown.",
|
|
171
165
|
"code": "<div style={{ width: '300px' }}>\n <Slider label=\"Volume\" defaultValue={50} />\n</div>"
|
|
172
166
|
},
|
|
173
167
|
{
|
|
174
168
|
"name": "With Value Display",
|
|
175
|
-
"description": "
|
|
169
|
+
"description": "showValue prints the number opposite the label.",
|
|
176
170
|
"code": "<div style={{ width: '300px' }}>\n <Slider\n label=\"Brightness\"\n defaultValue={75}\n showValue\n valueSuffix=\"%\"\n />\n</div>"
|
|
177
171
|
},
|
|
178
172
|
{
|
|
179
173
|
"name": "Custom Range",
|
|
180
|
-
"description": "
|
|
174
|
+
"description": "min, max and step bound the track to real-world units.",
|
|
181
175
|
"code": "<div style={{ width: '300px', display: 'flex', flexDirection: 'column', gap: '16px' }}>\n <Slider\n label=\"Temperature\"\n min={60}\n max={80}\n step={1}\n defaultValue={72}\n showValue\n valueSuffix=\"°F\"\n />\n <Slider\n label=\"Font Size\"\n min={12}\n max={32}\n step={2}\n defaultValue={16}\n showValue\n valueSuffix=\"px\"\n />\n</div>"
|
|
182
176
|
},
|
|
183
177
|
{
|
|
184
178
|
"name": "Controlled",
|
|
185
|
-
"description": "
|
|
179
|
+
"description": "The parent owns the value and can react to every move.",
|
|
186
180
|
"code": "<ControlledSliderDemo />"
|
|
187
181
|
},
|
|
188
182
|
{
|
|
189
183
|
"name": "Drag Value Bubble",
|
|
190
|
-
"description": "
|
|
184
|
+
"description": "The number floats above the thumb only while dragging.",
|
|
191
185
|
"code": "<div style={{ width: '300px' }}>\n <Slider\n label=\"Mix\"\n defaultValue={40}\n showValueOnDrag\n valueSuffix=\"%\"\n />\n</div>"
|
|
192
186
|
},
|
|
193
187
|
{
|
|
194
188
|
"name": "With Helper Text",
|
|
195
|
-
"description": "
|
|
189
|
+
"description": "A line below the track explains the trade-off.",
|
|
196
190
|
"code": "<div style={{ width: '300px' }}>\n <Slider\n label=\"Quality\"\n defaultValue={80}\n showValue\n valueSuffix=\"%\"\n helperText=\"Higher quality increases file size\"\n />\n</div>"
|
|
197
191
|
},
|
|
198
192
|
{
|
|
199
193
|
"name": "Disabled",
|
|
200
|
-
"description": "
|
|
194
|
+
"description": "Dimmed; the thumb will not move.",
|
|
201
195
|
"code": "<div style={{ width: '300px' }}>\n <Slider\n label=\"Locked Setting\"\n defaultValue={30}\n showValue\n disabled\n />\n</div>"
|
|
202
196
|
}
|
|
203
197
|
],
|
|
@@ -227,17 +221,11 @@
|
|
|
227
221
|
"showValueOnDrag: boolean - show value bubble during drag",
|
|
228
222
|
"valueSuffix: string - unit suffix"
|
|
229
223
|
],
|
|
230
|
-
"a11yRules": [
|
|
231
|
-
"A11Y_LABEL_REQUIRED",
|
|
232
|
-
"A11Y_KEYBOARD_ACCESSIBLE",
|
|
233
|
-
"A11Y_TARGET_SIZE_MIN"
|
|
234
|
-
]
|
|
224
|
+
"a11yRules": ["A11Y_LABEL_REQUIRED", "A11Y_KEYBOARD_ACCESSIBLE", "A11Y_TARGET_SIZE_MIN"]
|
|
235
225
|
},
|
|
236
226
|
"ai": {
|
|
237
227
|
"compositionPattern": "compound",
|
|
238
|
-
"subComponents": [
|
|
239
|
-
"Root"
|
|
240
|
-
]
|
|
228
|
+
"subComponents": ["Root"]
|
|
241
229
|
},
|
|
242
230
|
"provenance": {
|
|
243
231
|
"source": "migrated",
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
position: relative;
|
|
46
46
|
width: 100%;
|
|
47
47
|
background-color: var(--fui-form-group-bg, $fui-bg-secondary);
|
|
48
|
-
box-shadow: inset 0 0 0 1px var(--fui-form-group-border, $fui-border);
|
|
48
|
+
box-shadow: inset 0 0 0 var(--fui-stroke-hairline, 1px) var(--fui-form-group-border, $fui-border);
|
|
49
49
|
border-radius: var(--fui-radius-full, $fui-radius-full);
|
|
50
50
|
cursor: pointer;
|
|
51
51
|
|
|
@@ -58,7 +58,7 @@
|
|
|
58
58
|
.indicator {
|
|
59
59
|
position: absolute;
|
|
60
60
|
height: 100%;
|
|
61
|
-
background-color: var(--fui-
|
|
61
|
+
background-color: var(--fui-color-accent, $fui-color-accent);
|
|
62
62
|
border-radius: var(--fui-radius-full, $fui-radius-full);
|
|
63
63
|
}
|
|
64
64
|
|
|
@@ -67,7 +67,7 @@
|
|
|
67
67
|
@include target.hit-area("compact");
|
|
68
68
|
|
|
69
69
|
background-color: var(--fui-bg-primary, $fui-bg-primary);
|
|
70
|
-
border: var(--fui-stroke-hairline, 1px) solid var(--fui-
|
|
70
|
+
border: var(--fui-stroke-hairline, 1px) solid var(--fui-color-accent, $fui-color-accent);
|
|
71
71
|
border-radius: var(--fui-radius-full, $fui-radius-full);
|
|
72
72
|
box-shadow: var(--fui-shadow-sm, $fui-shadow-sm);
|
|
73
73
|
cursor: grab;
|
|
@@ -1,15 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://usefragments.com/schemas/contract.v1.json",
|
|
3
3
|
"name": "Stack",
|
|
4
|
-
"description": "
|
|
4
|
+
"description": "Stacks children in a row or column with one consistent gap.",
|
|
5
5
|
"category": "layout",
|
|
6
|
-
"tags": [
|
|
7
|
-
"stack",
|
|
8
|
-
"layout",
|
|
9
|
-
"flex",
|
|
10
|
-
"spacing",
|
|
11
|
-
"responsive"
|
|
12
|
-
],
|
|
6
|
+
"tags": ["stack", "layout", "flex", "spacing", "responsive"],
|
|
13
7
|
"status": "stable",
|
|
14
8
|
"sourcePath": "src/components/Stack/index.tsx",
|
|
15
9
|
"exportName": "Stack",
|
|
@@ -47,24 +41,13 @@
|
|
|
47
41
|
"type": "enum",
|
|
48
42
|
"description": "Cross-axis alignment",
|
|
49
43
|
"required": false,
|
|
50
|
-
"values": [
|
|
51
|
-
"start",
|
|
52
|
-
"center",
|
|
53
|
-
"end",
|
|
54
|
-
"stretch",
|
|
55
|
-
"baseline"
|
|
56
|
-
]
|
|
44
|
+
"values": ["start", "center", "end", "stretch", "baseline"]
|
|
57
45
|
},
|
|
58
46
|
"justify": {
|
|
59
47
|
"type": "enum",
|
|
60
48
|
"description": "Main-axis alignment",
|
|
61
49
|
"required": false,
|
|
62
|
-
"values": [
|
|
63
|
-
"start",
|
|
64
|
-
"center",
|
|
65
|
-
"end",
|
|
66
|
-
"between"
|
|
67
|
-
]
|
|
50
|
+
"values": ["start", "center", "end", "between"]
|
|
68
51
|
},
|
|
69
52
|
"wrap": {
|
|
70
53
|
"type": "boolean",
|
|
@@ -108,22 +91,21 @@
|
|
|
108
91
|
},
|
|
109
92
|
"usage": {
|
|
110
93
|
"when": [
|
|
111
|
-
"
|
|
112
|
-
"
|
|
113
|
-
"
|
|
114
|
-
"Simple flexbox-based arrangements"
|
|
94
|
+
"Spacing a short row or column of elements",
|
|
95
|
+
"Any one-directional flexbox arrangement",
|
|
96
|
+
"Layouts that flip direction at a breakpoint"
|
|
115
97
|
],
|
|
116
98
|
"whenNot": [
|
|
117
|
-
"
|
|
118
|
-
"
|
|
119
|
-
"Page
|
|
99
|
+
"Two-dimensional layouts (use Grid)",
|
|
100
|
+
"Grouping buttons into one control (use ButtonGroup)",
|
|
101
|
+
"Page shell regions (use AppShell)"
|
|
120
102
|
],
|
|
121
103
|
"guidelines": [
|
|
122
|
-
"
|
|
123
|
-
"
|
|
124
|
-
"
|
|
125
|
-
"
|
|
126
|
-
"
|
|
104
|
+
"Set gap once on the parent instead of margins on children",
|
|
105
|
+
"Numeric gaps (1-8) map to the same spacing scale as the tokens",
|
|
106
|
+
"direction, gap, and align all accept per-breakpoint objects",
|
|
107
|
+
"Use as=\"nav\" or as=\"ul\" so the markup stays semantic",
|
|
108
|
+
"separator draws dividers without extra elements"
|
|
127
109
|
],
|
|
128
110
|
"accessibility": [
|
|
129
111
|
"Use semantic elements (nav, section, etc.) via \"as\" prop",
|
|
@@ -134,42 +116,37 @@
|
|
|
134
116
|
"examples": [
|
|
135
117
|
{
|
|
136
118
|
"name": "Vertical Stack",
|
|
137
|
-
"description": "
|
|
138
|
-
"code": "<Stack gap=\"sm\">\n <
|
|
119
|
+
"description": "Children flow top to bottom — the default.",
|
|
120
|
+
"code": "import { Box } from '@/components/Box';\nimport { Stack } from '@/components/Stack';\n\n<Stack gap=\"sm\">\n <Box background=\"secondary\" rounded=\"sm\" paddingX=\"md\" paddingY=\"sm\">One</Box>\n <Box background=\"secondary\" rounded=\"sm\" paddingX=\"md\" paddingY=\"sm\">Two</Box>\n <Box background=\"secondary\" rounded=\"sm\" paddingX=\"md\" paddingY=\"sm\">Three</Box>\n</Stack>"
|
|
139
121
|
},
|
|
140
122
|
{
|
|
141
123
|
"name": "Horizontal Stack",
|
|
142
|
-
"description": "
|
|
143
|
-
"code": "<Stack direction=\"row\" gap=\"sm\">\n <
|
|
124
|
+
"description": "Children flow left to right.",
|
|
125
|
+
"code": "import { Box } from '@/components/Box';\nimport { Stack } from '@/components/Stack';\n\n<Stack direction=\"row\" gap=\"sm\">\n <Box background=\"secondary\" rounded=\"sm\" paddingX=\"md\" paddingY=\"sm\">One</Box>\n <Box background=\"secondary\" rounded=\"sm\" paddingX=\"md\" paddingY=\"sm\">Two</Box>\n <Box background=\"secondary\" rounded=\"sm\" paddingX=\"md\" paddingY=\"sm\">Three</Box>\n</Stack>"
|
|
144
126
|
},
|
|
145
127
|
{
|
|
146
128
|
"name": "Gap Sizes",
|
|
147
|
-
"description": "
|
|
148
|
-
"code": "<Stack gap=\"lg\">\n <Stack direction=\"row\" gap=\"xs\">\n <
|
|
149
|
-
},
|
|
150
|
-
{
|
|
151
|
-
"name": "Numeric Gap",
|
|
152
|
-
"description": "Using number values (1-8) mapped to the spacing scale",
|
|
153
|
-
"code": "<Stack gap=\"lg\">\n <Stack direction=\"row\" gap={2}>\n <Badge variant=\"info\">Gap 2</Badge>\n <Badge variant=\"info\">Gap 2</Badge>\n </Stack>\n <Stack direction=\"row\" gap={4}>\n <Badge variant=\"info\">Gap 4</Badge>\n <Badge variant=\"info\">Gap 4</Badge>\n </Stack>\n <Stack direction=\"row\" gap={6}>\n <Badge variant=\"info\">Gap 6</Badge>\n <Badge variant=\"info\">Gap 6</Badge>\n </Stack>\n</Stack>"
|
|
129
|
+
"description": "One spacing token sets every gap in the stack.",
|
|
130
|
+
"code": "import { Box } from '@/components/Box';\nimport { Stack } from '@/components/Stack';\n\n<Stack gap=\"lg\">\n <Stack direction=\"row\" gap=\"xs\">\n <Box background=\"secondary\" rounded=\"sm\" paddingX=\"md\" paddingY=\"sm\">xs</Box>\n <Box background=\"secondary\" rounded=\"sm\" paddingX=\"md\" paddingY=\"sm\">xs</Box>\n </Stack>\n <Stack direction=\"row\" gap=\"sm\">\n <Box background=\"secondary\" rounded=\"sm\" paddingX=\"md\" paddingY=\"sm\">sm</Box>\n <Box background=\"secondary\" rounded=\"sm\" paddingX=\"md\" paddingY=\"sm\">sm</Box>\n </Stack>\n <Stack direction=\"row\" gap=\"md\">\n <Box background=\"secondary\" rounded=\"sm\" paddingX=\"md\" paddingY=\"sm\">md</Box>\n <Box background=\"secondary\" rounded=\"sm\" paddingX=\"md\" paddingY=\"sm\">md</Box>\n </Stack>\n <Stack direction=\"row\" gap=\"lg\">\n <Box background=\"secondary\" rounded=\"sm\" paddingX=\"md\" paddingY=\"sm\">lg</Box>\n <Box background=\"secondary\" rounded=\"sm\" paddingX=\"md\" paddingY=\"sm\">lg</Box>\n </Stack>\n</Stack>"
|
|
154
131
|
},
|
|
155
132
|
{
|
|
156
133
|
"name": "Alignment",
|
|
157
|
-
"description": "
|
|
158
|
-
"code": "<Stack gap=\"md\">\n <Stack direction=\"row\" gap=\"sm\" justify=\"between\"
|
|
134
|
+
"description": "justify positions children along the main axis.",
|
|
135
|
+
"code": "import { Box } from '@/components/Box';\nimport { Stack } from '@/components/Stack';\n\n<Stack gap=\"md\">\n <Box width=\"240px\" border rounded=\"sm\" padding=\"sm\">\n <Stack direction=\"row\" gap=\"sm\" justify=\"between\">\n <Box background=\"secondary\" rounded=\"sm\" paddingX=\"sm\" paddingY=\"xs\">Start</Box>\n <Box background=\"secondary\" rounded=\"sm\" paddingX=\"sm\" paddingY=\"xs\">End</Box>\n </Stack>\n </Box>\n <Box width=\"240px\" border rounded=\"sm\" padding=\"sm\">\n <Stack direction=\"row\" gap=\"sm\" justify=\"center\">\n <Box background=\"secondary\" rounded=\"sm\" paddingX=\"sm\" paddingY=\"xs\">Centered</Box>\n </Stack>\n </Box>\n</Stack>"
|
|
159
136
|
},
|
|
160
137
|
{
|
|
161
138
|
"name": "Responsive",
|
|
162
|
-
"description": "
|
|
139
|
+
"description": "Swap direction and gap per breakpoint with an object value.",
|
|
163
140
|
"code": "<Stack\n direction={{ base: 'column', md: 'row' }}\n gap={{ base: 'sm', md: 'lg' }}\n>\n <Button variant=\"secondary\">First</Button>\n <Button variant=\"secondary\">Second</Button>\n <Button variant=\"secondary\">Third</Button>\n</Stack>"
|
|
164
141
|
},
|
|
165
142
|
{
|
|
166
143
|
"name": "With Separator",
|
|
167
|
-
"description": "
|
|
168
|
-
"code": "<Stack gap=\"md\" separator>\n <
|
|
144
|
+
"description": "Draws a divider between each child.",
|
|
145
|
+
"code": "import { Stack } from '@/components/Stack';\nimport { Text } from '@/components/Text';\n\n<Stack gap=\"md\" separator>\n <Text>Section one</Text>\n <Text>Section two</Text>\n <Text>Section three</Text>\n</Stack>"
|
|
169
146
|
},
|
|
170
147
|
{
|
|
171
148
|
"name": "Semantic Element",
|
|
172
|
-
"description": "
|
|
149
|
+
"description": "The as prop renders a real nav, section, or list element.",
|
|
173
150
|
"code": "<Stack as=\"nav\" direction=\"row\" gap=\"md\">\n <Button variant=\"ghost\" size=\"sm\">Home</Button>\n <Button variant=\"ghost\" size=\"sm\">About</Button>\n <Button variant=\"ghost\" size=\"sm\">Contact</Button>\n</Stack>"
|
|
174
151
|
}
|
|
175
152
|
],
|
|
@@ -201,15 +178,11 @@
|
|
|
201
178
|
"as: string - HTML element",
|
|
202
179
|
"Pass-through DOM props supported on the root (id, role, aria-*, data-*, handlers)"
|
|
203
180
|
],
|
|
204
|
-
"a11yRules": [
|
|
205
|
-
"A11Y_SEMANTIC_ELEMENTS"
|
|
206
|
-
]
|
|
181
|
+
"a11yRules": ["A11Y_SEMANTIC_ELEMENTS"]
|
|
207
182
|
},
|
|
208
183
|
"ai": {
|
|
209
184
|
"compositionPattern": "compound",
|
|
210
|
-
"subComponents": [
|
|
211
|
-
"Root"
|
|
212
|
-
]
|
|
185
|
+
"subComponents": ["Root"]
|
|
213
186
|
},
|
|
214
187
|
"provenance": {
|
|
215
188
|
"source": "migrated",
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
@use "../../recipes/layout";
|
|
2
|
+
@use "../../tokens/mixins" as *;
|
|
2
3
|
@use "../../tokens/variables" as *;
|
|
3
4
|
|
|
4
5
|
.stack {
|
|
@@ -19,18 +20,18 @@
|
|
|
19
20
|
.directionResponsive {
|
|
20
21
|
flex-direction: var(--fui-stack-direction, column);
|
|
21
22
|
|
|
22
|
-
@
|
|
23
|
+
@include breakpoint-sm {
|
|
23
24
|
flex-direction: var(--fui-stack-direction-sm, var(--fui-stack-direction, column));
|
|
24
25
|
}
|
|
25
26
|
|
|
26
|
-
@
|
|
27
|
+
@include breakpoint-md {
|
|
27
28
|
flex-direction: var(
|
|
28
29
|
--fui-stack-direction-md,
|
|
29
30
|
var(--fui-stack-direction-sm, var(--fui-stack-direction, column))
|
|
30
31
|
);
|
|
31
32
|
}
|
|
32
33
|
|
|
33
|
-
@
|
|
34
|
+
@include breakpoint-lg {
|
|
34
35
|
flex-direction: var(
|
|
35
36
|
--fui-stack-direction-lg,
|
|
36
37
|
var(
|
|
@@ -40,7 +41,7 @@
|
|
|
40
41
|
);
|
|
41
42
|
}
|
|
42
43
|
|
|
43
|
-
@
|
|
44
|
+
@include breakpoint-xl {
|
|
44
45
|
flex-direction: var(
|
|
45
46
|
--fui-stack-direction-xl,
|
|
46
47
|
var(
|
|
@@ -58,22 +59,22 @@
|
|
|
58
59
|
.gapResponsive {
|
|
59
60
|
gap: var(--fui-stack-gap, #{layout.gap("none")});
|
|
60
61
|
|
|
61
|
-
@
|
|
62
|
+
@include breakpoint-sm {
|
|
62
63
|
gap: var(--fui-stack-gap-sm, var(--fui-stack-gap, 0));
|
|
63
64
|
}
|
|
64
65
|
|
|
65
|
-
@
|
|
66
|
+
@include breakpoint-md {
|
|
66
67
|
gap: var(--fui-stack-gap-md, var(--fui-stack-gap-sm, var(--fui-stack-gap, 0)));
|
|
67
68
|
}
|
|
68
69
|
|
|
69
|
-
@
|
|
70
|
+
@include breakpoint-lg {
|
|
70
71
|
gap: var(
|
|
71
72
|
--fui-stack-gap-lg,
|
|
72
73
|
var(--fui-stack-gap-md, var(--fui-stack-gap-sm, var(--fui-stack-gap, 0)))
|
|
73
74
|
);
|
|
74
75
|
}
|
|
75
76
|
|
|
76
|
-
@
|
|
77
|
+
@include breakpoint-xl {
|
|
77
78
|
gap: var(
|
|
78
79
|
--fui-stack-gap-xl,
|
|
79
80
|
var(
|
|
@@ -154,7 +155,7 @@
|
|
|
154
155
|
height: var(--fui-stroke-hairline, 1px);
|
|
155
156
|
}
|
|
156
157
|
|
|
157
|
-
@
|
|
158
|
+
@include breakpoint-sm {
|
|
158
159
|
.directionResponsive[data-direction-sm="row"] > .separator {
|
|
159
160
|
width: var(--fui-stroke-hairline, 1px);
|
|
160
161
|
height: auto;
|
|
@@ -167,7 +168,7 @@
|
|
|
167
168
|
}
|
|
168
169
|
}
|
|
169
170
|
|
|
170
|
-
@
|
|
171
|
+
@include breakpoint-md {
|
|
171
172
|
.directionResponsive[data-direction-md="row"] > .separator {
|
|
172
173
|
width: var(--fui-stroke-hairline, 1px);
|
|
173
174
|
height: auto;
|
|
@@ -180,7 +181,7 @@
|
|
|
180
181
|
}
|
|
181
182
|
}
|
|
182
183
|
|
|
183
|
-
@
|
|
184
|
+
@include breakpoint-lg {
|
|
184
185
|
.directionResponsive[data-direction-lg="row"] > .separator {
|
|
185
186
|
width: var(--fui-stroke-hairline, 1px);
|
|
186
187
|
height: auto;
|
|
@@ -193,7 +194,7 @@
|
|
|
193
194
|
}
|
|
194
195
|
}
|
|
195
196
|
|
|
196
|
-
@
|
|
197
|
+
@include breakpoint-xl {
|
|
197
198
|
.directionResponsive[data-direction-xl="row"] > .separator {
|
|
198
199
|
width: var(--fui-stroke-hairline, 1px);
|
|
199
200
|
height: auto;
|