@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,4 +1,6 @@
|
|
|
1
1
|
@use "../../tokens/variables" as *;
|
|
2
|
+
@use "../../tokens/mixins" as *;
|
|
3
|
+
@use "../../tokens/measurements.generated" as measurements;
|
|
2
4
|
@use "../../recipes/action" as action;
|
|
3
5
|
@use "../../recipes/field" as field;
|
|
4
6
|
@use "../../recipes/popup" as popup;
|
|
@@ -10,6 +12,16 @@
|
|
|
10
12
|
display: flex;
|
|
11
13
|
flex-direction: column;
|
|
12
14
|
overflow: hidden;
|
|
15
|
+
@include high-contrast-outline;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
// Hosted: the surrounding surface is the frame; the pick list keeps only its
|
|
19
|
+
// own inset.
|
|
20
|
+
.hosted {
|
|
21
|
+
background: transparent;
|
|
22
|
+
border: 0;
|
|
23
|
+
border-radius: var(--fui-raw-space-0, #{measurements.raw-space(0)});
|
|
24
|
+
box-shadow: none;
|
|
13
25
|
}
|
|
14
26
|
|
|
15
27
|
.inputWrapper {
|
|
@@ -18,8 +30,8 @@
|
|
|
18
30
|
|
|
19
31
|
display: flex;
|
|
20
32
|
align-items: center;
|
|
21
|
-
gap: var(--fui-popup-row-content-gap);
|
|
22
|
-
margin-block-end: var(--fui-popup-container-inset);
|
|
33
|
+
gap: var(--fui-popup-row-content-gap, var(--fui-raw-space-8, #{measurements.raw-space(8)}));
|
|
34
|
+
margin-block-end: var(--fui-popup-container-inset, var(--fui-raw-space-4, #{measurements.raw-space(4)}));
|
|
23
35
|
|
|
24
36
|
&:focus-within {
|
|
25
37
|
@include field.focus-state;
|
|
@@ -36,7 +48,7 @@
|
|
|
36
48
|
.input {
|
|
37
49
|
flex: 1;
|
|
38
50
|
min-inline-size: 0;
|
|
39
|
-
padding: 0;
|
|
51
|
+
padding: var(--fui-raw-space-0, #{measurements.raw-space(0)});
|
|
40
52
|
border: none;
|
|
41
53
|
outline: none;
|
|
42
54
|
color: var(--fui-text-primary, $fui-text-primary);
|
|
@@ -69,8 +81,8 @@
|
|
|
69
81
|
}
|
|
70
82
|
|
|
71
83
|
> svg {
|
|
72
|
-
inline-size: var(--fui-popup-indicator-box);
|
|
73
|
-
block-size: var(--fui-popup-indicator-box);
|
|
84
|
+
inline-size: var(--fui-popup-indicator-box, var(--fui-raw-space-16, #{measurements.raw-space(16)}));
|
|
85
|
+
block-size: var(--fui-popup-indicator-box, var(--fui-raw-space-16, #{measurements.raw-space(16)}));
|
|
74
86
|
flex: 0 0 auto;
|
|
75
87
|
}
|
|
76
88
|
}
|
|
@@ -97,8 +109,8 @@
|
|
|
97
109
|
.empty {
|
|
98
110
|
@include typography.role("body-compact");
|
|
99
111
|
|
|
100
|
-
padding-block: var(--fui-popup-row-block-inset);
|
|
101
|
-
padding-inline: var(--fui-popup-row-inline-inset);
|
|
112
|
+
padding-block: var(--fui-popup-row-block-inset, var(--fui-raw-space-8, #{measurements.raw-space(8)}));
|
|
113
|
+
padding-inline: var(--fui-popup-row-inline-inset, var(--fui-raw-space-8, #{measurements.raw-space(8)}));
|
|
102
114
|
color: var(--fui-text-secondary, $fui-text-secondary);
|
|
103
115
|
text-align: center;
|
|
104
116
|
}
|
|
@@ -106,17 +118,3 @@
|
|
|
106
118
|
.separator {
|
|
107
119
|
@include popup.group-separator;
|
|
108
120
|
}
|
|
109
|
-
|
|
110
|
-
@media (prefers-contrast: more) {
|
|
111
|
-
.command {
|
|
112
|
-
border-color: var(--fui-text-primary, $fui-text-primary);
|
|
113
|
-
outline: var(--fui-stroke-hairline, 1px) solid var(--fui-text-primary, $fui-text-primary);
|
|
114
|
-
outline-offset: calc(-1 * var(--fui-stroke-default, 2px));
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
.itemActive {
|
|
118
|
-
outline: var(--fui-focus-ring-width, $fui-focus-ring-width) solid
|
|
119
|
-
var(--fui-color-accent, $fui-color-accent);
|
|
120
|
-
outline-offset: calc(-1 * var(--fui-focus-ring-width, $fui-focus-ring-width));
|
|
121
|
-
}
|
|
122
|
-
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
"use client";
|
|
2
2
|
|
|
3
|
-
import * as React from
|
|
4
|
-
import styles from
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import styles from "./Command.module.scss";
|
|
5
5
|
|
|
6
6
|
// ============================================
|
|
7
7
|
// Types
|
|
@@ -20,6 +20,11 @@ export interface CommandProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
|
20
20
|
filter?: (value: string, search: string, keywords?: string[]) => number;
|
|
21
21
|
/** Whether to loop keyboard navigation. Default: true */
|
|
22
22
|
loop?: boolean;
|
|
23
|
+
/**
|
|
24
|
+
* The Command sits inside another surface (a Popover, a Dialog) that draws
|
|
25
|
+
* the frame, so it draws none of its own.
|
|
26
|
+
*/
|
|
27
|
+
hosted?: boolean;
|
|
23
28
|
}
|
|
24
29
|
|
|
25
30
|
export interface CommandInputProps extends React.InputHTMLAttributes<HTMLInputElement> {
|
|
@@ -30,7 +35,7 @@ export interface CommandListProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
|
30
35
|
children: React.ReactNode;
|
|
31
36
|
}
|
|
32
37
|
|
|
33
|
-
export interface CommandItemProps extends Omit<React.HTMLAttributes<HTMLDivElement>,
|
|
38
|
+
export interface CommandItemProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "onSelect"> {
|
|
34
39
|
children: React.ReactNode;
|
|
35
40
|
/** Value used for filtering (falls back to text content) */
|
|
36
41
|
value?: string;
|
|
@@ -78,13 +83,13 @@ function defaultFilter(value: string, search: string, keywords?: string[]): numb
|
|
|
78
83
|
}
|
|
79
84
|
|
|
80
85
|
function getTextContent(node: React.ReactNode): string {
|
|
81
|
-
if (typeof node ===
|
|
82
|
-
if (Array.isArray(node)) return node.map(getTextContent).join(
|
|
86
|
+
if (typeof node === "string" || typeof node === "number") return String(node);
|
|
87
|
+
if (Array.isArray(node)) return node.map(getTextContent).join(" ");
|
|
83
88
|
if (React.isValidElement(node)) {
|
|
84
89
|
const childProps = node.props as { children?: React.ReactNode };
|
|
85
90
|
return getTextContent(childProps.children);
|
|
86
91
|
}
|
|
87
|
-
return
|
|
92
|
+
return "";
|
|
88
93
|
}
|
|
89
94
|
|
|
90
95
|
// ============================================
|
|
@@ -115,7 +120,7 @@ const CommandContext = React.createContext<CommandContextValue | null>(null);
|
|
|
115
120
|
|
|
116
121
|
function useCommandContext() {
|
|
117
122
|
const ctx = React.useContext(CommandContext);
|
|
118
|
-
if (!ctx) throw new Error(
|
|
123
|
+
if (!ctx) throw new Error("Command sub-components must be used within <Command>");
|
|
119
124
|
return ctx;
|
|
120
125
|
}
|
|
121
126
|
|
|
@@ -150,10 +155,11 @@ function SearchIcon() {
|
|
|
150
155
|
function CommandRoot({
|
|
151
156
|
children,
|
|
152
157
|
search: controlledSearch,
|
|
153
|
-
defaultSearch =
|
|
158
|
+
defaultSearch = "",
|
|
154
159
|
onSearchChange,
|
|
155
160
|
filter = defaultFilter,
|
|
156
161
|
loop = true,
|
|
162
|
+
hosted = false,
|
|
157
163
|
className,
|
|
158
164
|
...htmlProps
|
|
159
165
|
}: CommandProps) {
|
|
@@ -231,14 +237,25 @@ function CommandRoot({
|
|
|
231
237
|
visibleCount,
|
|
232
238
|
listId,
|
|
233
239
|
}),
|
|
234
|
-
[
|
|
240
|
+
[
|
|
241
|
+
search,
|
|
242
|
+
setSearch,
|
|
243
|
+
filter,
|
|
244
|
+
scores,
|
|
245
|
+
registerItem,
|
|
246
|
+
unregisterItem,
|
|
247
|
+
activeId,
|
|
248
|
+
loop,
|
|
249
|
+
visibleCount,
|
|
250
|
+
listId,
|
|
251
|
+
]
|
|
235
252
|
);
|
|
236
253
|
|
|
237
254
|
return (
|
|
238
255
|
<CommandContext.Provider value={contextValue}>
|
|
239
256
|
<div
|
|
240
257
|
{...htmlProps}
|
|
241
|
-
className={[styles.command, className].filter(Boolean).join(
|
|
258
|
+
className={[styles.command, hosted && styles.hosted, className].filter(Boolean).join(" ")}
|
|
242
259
|
role="search"
|
|
243
260
|
>
|
|
244
261
|
{children}
|
|
@@ -247,12 +264,7 @@ function CommandRoot({
|
|
|
247
264
|
);
|
|
248
265
|
}
|
|
249
266
|
|
|
250
|
-
function CommandInput({
|
|
251
|
-
className,
|
|
252
|
-
onChange,
|
|
253
|
-
onKeyDown,
|
|
254
|
-
...htmlProps
|
|
255
|
-
}: CommandInputProps) {
|
|
267
|
+
function CommandInput({ className, onChange, onKeyDown, ...htmlProps }: CommandInputProps) {
|
|
256
268
|
const { search, setSearch, listRef, setActiveId, activeId, loop, listId } = useCommandContext();
|
|
257
269
|
const inputRef = React.useRef<HTMLInputElement>(null);
|
|
258
270
|
|
|
@@ -261,7 +273,7 @@ function CommandInput({
|
|
|
261
273
|
if (!list) return [];
|
|
262
274
|
return Array.from(
|
|
263
275
|
list.querySelectorAll<HTMLElement>('[data-command-item]:not([data-disabled="true"])')
|
|
264
|
-
).filter((el) => el.style.display !==
|
|
276
|
+
).filter((el) => el.style.display !== "none");
|
|
265
277
|
}, [listRef]);
|
|
266
278
|
|
|
267
279
|
const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {
|
|
@@ -270,45 +282,48 @@ function CommandInput({
|
|
|
270
282
|
|
|
271
283
|
const items = getEnabledItems();
|
|
272
284
|
if (items.length === 0) return;
|
|
285
|
+
const firstItem = items[0];
|
|
286
|
+
const lastItem = items.at(-1);
|
|
287
|
+
if (!firstItem || !lastItem) return;
|
|
273
288
|
|
|
274
|
-
const currentIndex = activeId
|
|
275
|
-
? items.findIndex((item) => item.id === activeId)
|
|
276
|
-
: -1;
|
|
289
|
+
const currentIndex = activeId ? items.findIndex((item) => item.id === activeId) : -1;
|
|
277
290
|
|
|
278
291
|
switch (event.key) {
|
|
279
|
-
case
|
|
292
|
+
case "ArrowDown": {
|
|
280
293
|
event.preventDefault();
|
|
281
294
|
if (currentIndex < 0) {
|
|
282
|
-
setActiveId(
|
|
295
|
+
setActiveId(firstItem.id);
|
|
283
296
|
} else if (currentIndex < items.length - 1) {
|
|
284
|
-
|
|
297
|
+
const nextItem = items[currentIndex + 1];
|
|
298
|
+
if (nextItem) setActiveId(nextItem.id);
|
|
285
299
|
} else if (loop) {
|
|
286
|
-
setActiveId(
|
|
300
|
+
setActiveId(firstItem.id);
|
|
287
301
|
}
|
|
288
302
|
break;
|
|
289
303
|
}
|
|
290
|
-
case
|
|
304
|
+
case "ArrowUp": {
|
|
291
305
|
event.preventDefault();
|
|
292
306
|
if (currentIndex < 0) {
|
|
293
|
-
setActiveId(
|
|
307
|
+
setActiveId(lastItem.id);
|
|
294
308
|
} else if (currentIndex > 0) {
|
|
295
|
-
|
|
309
|
+
const previousItem = items[currentIndex - 1];
|
|
310
|
+
if (previousItem) setActiveId(previousItem.id);
|
|
296
311
|
} else if (loop) {
|
|
297
|
-
setActiveId(
|
|
312
|
+
setActiveId(lastItem.id);
|
|
298
313
|
}
|
|
299
314
|
break;
|
|
300
315
|
}
|
|
301
|
-
case
|
|
316
|
+
case "Home": {
|
|
302
317
|
event.preventDefault();
|
|
303
|
-
setActiveId(
|
|
318
|
+
setActiveId(firstItem.id);
|
|
304
319
|
break;
|
|
305
320
|
}
|
|
306
|
-
case
|
|
321
|
+
case "End": {
|
|
307
322
|
event.preventDefault();
|
|
308
|
-
setActiveId(
|
|
323
|
+
setActiveId(lastItem.id);
|
|
309
324
|
break;
|
|
310
325
|
}
|
|
311
|
-
case
|
|
326
|
+
case "Enter": {
|
|
312
327
|
event.preventDefault();
|
|
313
328
|
if (activeId) {
|
|
314
329
|
const activeItem = items.find((item) => item.id === activeId);
|
|
@@ -343,7 +358,7 @@ function CommandInput({
|
|
|
343
358
|
setSearch(e.target.value);
|
|
344
359
|
}}
|
|
345
360
|
onKeyDown={handleKeyDown}
|
|
346
|
-
className={[styles.input, className].filter(Boolean).join(
|
|
361
|
+
className={[styles.input, className].filter(Boolean).join(" ")}
|
|
347
362
|
/>
|
|
348
363
|
</div>
|
|
349
364
|
);
|
|
@@ -358,7 +373,7 @@ function CommandList({ children, className, ...htmlProps }: CommandListProps) {
|
|
|
358
373
|
{...htmlProps}
|
|
359
374
|
id={listId}
|
|
360
375
|
role="listbox"
|
|
361
|
-
className={[styles.list, className].filter(Boolean).join(
|
|
376
|
+
className={[styles.list, className].filter(Boolean).join(" ")}
|
|
362
377
|
>
|
|
363
378
|
{children}
|
|
364
379
|
</div>
|
|
@@ -402,11 +417,13 @@ function CommandItem({
|
|
|
402
417
|
// Scroll active item into view
|
|
403
418
|
React.useEffect(() => {
|
|
404
419
|
if (isActive && itemRef.current) {
|
|
405
|
-
itemRef.current.scrollIntoView({ block:
|
|
420
|
+
itemRef.current.scrollIntoView({ block: "nearest" });
|
|
406
421
|
}
|
|
407
422
|
}, [isActive]);
|
|
408
423
|
|
|
409
|
-
const activateItem = (
|
|
424
|
+
const activateItem = (
|
|
425
|
+
event: React.MouseEvent<HTMLDivElement> | React.KeyboardEvent<HTMLDivElement>
|
|
426
|
+
) => {
|
|
410
427
|
if (disabled) return;
|
|
411
428
|
onItemSelect?.(textValue, event);
|
|
412
429
|
};
|
|
@@ -440,7 +457,7 @@ function CommandItem({
|
|
|
440
457
|
onKeyDown={(e) => {
|
|
441
458
|
onKeyDown?.(e);
|
|
442
459
|
if (e.defaultPrevented) return;
|
|
443
|
-
if (e.key ===
|
|
460
|
+
if (e.key === "Enter" || e.key === " ") {
|
|
444
461
|
e.preventDefault();
|
|
445
462
|
activateItem(e);
|
|
446
463
|
}
|
|
@@ -453,8 +470,8 @@ function CommandItem({
|
|
|
453
470
|
className,
|
|
454
471
|
]
|
|
455
472
|
.filter(Boolean)
|
|
456
|
-
.join(
|
|
457
|
-
style={{ ...style, display: isVisible ? undefined :
|
|
473
|
+
.join(" ")}
|
|
474
|
+
style={{ ...style, display: isVisible ? undefined : "none" }}
|
|
458
475
|
>
|
|
459
476
|
{children}
|
|
460
477
|
</div>
|
|
@@ -470,8 +487,8 @@ function CommandGroup({ children, heading, className, ...htmlProps }: CommandGro
|
|
|
470
487
|
// Check if any children are visible after each score update
|
|
471
488
|
React.useEffect(() => {
|
|
472
489
|
if (!groupRef.current) return;
|
|
473
|
-
const items = groupRef.current.querySelectorAll<HTMLElement>(
|
|
474
|
-
const anyVisible = Array.from(items).some((item) => item.style.display !==
|
|
490
|
+
const items = groupRef.current.querySelectorAll<HTMLElement>("[data-command-item]");
|
|
491
|
+
const anyVisible = Array.from(items).some((item) => item.style.display !== "none");
|
|
475
492
|
setHasVisibleChildren(anyVisible);
|
|
476
493
|
}, [scores]);
|
|
477
494
|
|
|
@@ -483,8 +500,8 @@ function CommandGroup({ children, heading, className, ...htmlProps }: CommandGro
|
|
|
483
500
|
{...restHtmlProps}
|
|
484
501
|
role="group"
|
|
485
502
|
aria-labelledby={heading ? labelId : undefined}
|
|
486
|
-
className={[styles.group, className].filter(Boolean).join(
|
|
487
|
-
style={{ ...style, display: hasVisibleChildren ? undefined :
|
|
503
|
+
className={[styles.group, className].filter(Boolean).join(" ")}
|
|
504
|
+
style={{ ...style, display: hasVisibleChildren ? undefined : "none" }}
|
|
488
505
|
>
|
|
489
506
|
{heading && (
|
|
490
507
|
<div id={labelId} className={styles.groupHeading}>
|
|
@@ -507,7 +524,7 @@ function CommandEmpty({ children, className, ...htmlProps }: CommandEmptyProps)
|
|
|
507
524
|
role="option"
|
|
508
525
|
aria-disabled="true"
|
|
509
526
|
aria-selected="false"
|
|
510
|
-
className={[styles.empty, className].filter(Boolean).join(
|
|
527
|
+
className={[styles.empty, className].filter(Boolean).join(" ")}
|
|
511
528
|
>
|
|
512
529
|
{children}
|
|
513
530
|
</div>
|
|
@@ -519,7 +536,7 @@ function CommandSeparator({ className, ...htmlProps }: CommandSeparatorProps) {
|
|
|
519
536
|
<div
|
|
520
537
|
{...htmlProps}
|
|
521
538
|
role="separator"
|
|
522
|
-
className={[styles.separator, className].filter(Boolean).join(
|
|
539
|
+
className={[styles.separator, className].filter(Boolean).join(" ")}
|
|
523
540
|
/>
|
|
524
541
|
);
|
|
525
542
|
}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://usefragments.com/schemas/contract.v1.json",
|
|
3
|
+
"name": "ComponentDefaults",
|
|
4
|
+
"description": "Utility provider that sets the default control size for every control below it.",
|
|
5
|
+
"category": "utilities",
|
|
6
|
+
"tags": ["provider", "defaults", "size", "utility"],
|
|
7
|
+
"status": "stable",
|
|
8
|
+
"sourcePath": "src/components/ComponentDefaults/index.tsx",
|
|
9
|
+
"exportName": "ComponentDefaultsProvider",
|
|
10
|
+
"propsSummary": [
|
|
11
|
+
"children: node (required)",
|
|
12
|
+
"controlSize: sm|md|lg",
|
|
13
|
+
"value: { controlSize?: sm|md|lg }"
|
|
14
|
+
],
|
|
15
|
+
"props": {
|
|
16
|
+
"children": {
|
|
17
|
+
"type": "node",
|
|
18
|
+
"description": "Subtree that inherits the defaults",
|
|
19
|
+
"required": true
|
|
20
|
+
},
|
|
21
|
+
"controlSize": {
|
|
22
|
+
"type": "enum",
|
|
23
|
+
"description": "Default size for controls that do not pass their own size prop",
|
|
24
|
+
"required": false,
|
|
25
|
+
"values": ["sm", "md", "lg"]
|
|
26
|
+
},
|
|
27
|
+
"value": {
|
|
28
|
+
"type": "object",
|
|
29
|
+
"description": "Full defaults object; explicit controlSize wins over value.controlSize",
|
|
30
|
+
"required": false
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
"usage": {
|
|
34
|
+
"when": [
|
|
35
|
+
"A region needs every control at one size (dense table toolbars, compact sidebars)",
|
|
36
|
+
"A ThemeProvider subtree should default to sm or lg controls"
|
|
37
|
+
],
|
|
38
|
+
"whenNot": [
|
|
39
|
+
"Sizing a single control (pass its size prop)",
|
|
40
|
+
"Changing spacing or typography (use tokens, not control size)"
|
|
41
|
+
],
|
|
42
|
+
"guidelines": [
|
|
43
|
+
"Renders no chrome: it only supplies context read through useResolvedControlSize",
|
|
44
|
+
"Nest providers to override the size for a smaller region",
|
|
45
|
+
"An explicit size prop on a control always wins over the provider default",
|
|
46
|
+
"ThemeProvider componentDefaults wires this provider for you at the root"
|
|
47
|
+
],
|
|
48
|
+
"accessibility": [
|
|
49
|
+
"sm controls still meet the kit's minimum target size through the action recipe"
|
|
50
|
+
]
|
|
51
|
+
},
|
|
52
|
+
"examples": [
|
|
53
|
+
{
|
|
54
|
+
"name": "Dense Toolbar",
|
|
55
|
+
"description": "Every control in the toolbar defaults to sm without repeating the prop.",
|
|
56
|
+
"code": "<ComponentDefaultsProvider controlSize=\"sm\">\n <div style={{ display: 'flex', gap: '8px' }}>\n <Button variant=\"soft\">Filter</Button>\n <Button variant=\"ghost\">Export</Button>\n </div>\n</ComponentDefaultsProvider>"
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"name": "Nested Override",
|
|
60
|
+
"description": "A nested provider narrows the default for one region.",
|
|
61
|
+
"code": "<ComponentDefaultsProvider controlSize=\"lg\">\n <Button>Large by default</Button>\n <ComponentDefaultsProvider controlSize=\"sm\">\n <Button>Small in this region</Button>\n </ComponentDefaultsProvider>\n</ComponentDefaultsProvider>"
|
|
62
|
+
}
|
|
63
|
+
],
|
|
64
|
+
"relations": [
|
|
65
|
+
{
|
|
66
|
+
"component": "Theme",
|
|
67
|
+
"relationship": "parent",
|
|
68
|
+
"note": "ThemeProvider accepts componentDefaults and mounts this provider"
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
"component": "Button",
|
|
72
|
+
"relationship": "child",
|
|
73
|
+
"note": "Controls resolve their size through useResolvedControlSize"
|
|
74
|
+
}
|
|
75
|
+
],
|
|
76
|
+
"contract": {
|
|
77
|
+
"propsSummary": [
|
|
78
|
+
"controlSize: sm|md|lg - default size for controls below the provider",
|
|
79
|
+
"value: { controlSize } - defaults object, explicit controlSize wins",
|
|
80
|
+
"useComponentDefaults() - read the merged defaults",
|
|
81
|
+
"useResolvedControlSize(explicit, fallback) - explicit > provider > fallback (md)"
|
|
82
|
+
],
|
|
83
|
+
"a11yRules": []
|
|
84
|
+
},
|
|
85
|
+
"provenance": {
|
|
86
|
+
"source": "manual",
|
|
87
|
+
"verified": false,
|
|
88
|
+
"frameworkSupport": "native",
|
|
89
|
+
"extractedAt": "2026-09-03T00:00:00.000Z"
|
|
90
|
+
}
|
|
91
|
+
}
|
|
@@ -1,16 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://usefragments.com/schemas/contract.v1.json",
|
|
3
3
|
"name": "ConversationList",
|
|
4
|
-
"description": "
|
|
4
|
+
"description": "Stacks chat messages in a scroller that follows new arrivals.",
|
|
5
5
|
"category": "ai",
|
|
6
|
-
"tags": [
|
|
7
|
-
"conversation",
|
|
8
|
-
"chat",
|
|
9
|
-
"messages",
|
|
10
|
-
"scroll",
|
|
11
|
-
"ai",
|
|
12
|
-
"list"
|
|
13
|
-
],
|
|
6
|
+
"tags": ["conversation", "chat", "messages", "scroll", "ai", "list"],
|
|
14
7
|
"status": "stable",
|
|
15
8
|
"sourcePath": "src/components/ConversationList/index.tsx",
|
|
16
9
|
"exportName": "ConversationList",
|
|
@@ -73,24 +66,24 @@
|
|
|
73
66
|
},
|
|
74
67
|
"usage": {
|
|
75
68
|
"when": [
|
|
76
|
-
"
|
|
77
|
-
"
|
|
78
|
-
"
|
|
79
|
-
"
|
|
69
|
+
"Chat interfaces holding many messages",
|
|
70
|
+
"Transcripts that should follow new arrivals",
|
|
71
|
+
"Paging back through older message history",
|
|
72
|
+
"Runs of messages grouped day by day"
|
|
80
73
|
],
|
|
81
74
|
"whenNot": [
|
|
82
|
-
"
|
|
83
|
-
"
|
|
84
|
-
"
|
|
75
|
+
"Plain item lists with no chat context (use List)",
|
|
76
|
+
"A single message (use Message directly)",
|
|
77
|
+
"Layouts that never scroll"
|
|
85
78
|
],
|
|
86
79
|
"guidelines": [
|
|
87
|
-
"
|
|
88
|
-
"
|
|
89
|
-
"
|
|
90
|
-
"Implement onScrollTop
|
|
91
|
-
"
|
|
92
|
-
"
|
|
93
|
-
"
|
|
80
|
+
"autoScroll=\"smart\" follows only when the reader is already near the bottom",
|
|
81
|
+
"showAvatars={false} drops the avatar gutter and the inset that goes with it",
|
|
82
|
+
"Chrome stays on neutral surfaces; reserve accent for actions and semantic state",
|
|
83
|
+
"Implement onScrollTop to page in older messages",
|
|
84
|
+
"Your onScroll handler composes with the internal auto-scroll and history logic",
|
|
85
|
+
"Give new conversations an emptyState",
|
|
86
|
+
"Put a DateSeparator between messages from different days"
|
|
94
87
|
],
|
|
95
88
|
"accessibility": [
|
|
96
89
|
"Uses proper ARIA roles for separators",
|
|
@@ -102,28 +95,33 @@
|
|
|
102
95
|
"examples": [
|
|
103
96
|
{
|
|
104
97
|
"name": "Basic",
|
|
105
|
-
"description": "
|
|
98
|
+
"description": "Three turns stacked in reading order.",
|
|
106
99
|
"code": "<ConversationList>\n <Message role=\"user\">\n <Message.Content>Hello!</Message.Content>\n </Message>\n <Message role=\"assistant\">\n <Message.Content>Hi there! How can I help you today?</Message.Content>\n </Message>\n <Message role=\"user\">\n <Message.Content>Can you explain React hooks?</Message.Content>\n </Message>\n</ConversationList>"
|
|
107
100
|
},
|
|
108
101
|
{
|
|
109
102
|
"name": "With Date Separators",
|
|
110
|
-
"description": "
|
|
103
|
+
"description": "A labelled rule marks where one day ends.",
|
|
111
104
|
"code": "<ConversationList>\n <ConversationList.DateSeparator date={new Date(Date.now() - 86400000)} />\n <Message role=\"user\">\n <Message.Content>A message from yesterday</Message.Content>\n </Message>\n <ConversationList.DateSeparator date={new Date()} />\n <Message role=\"assistant\">\n <Message.Content>And a message from today!</Message.Content>\n </Message>\n</ConversationList>"
|
|
112
105
|
},
|
|
113
106
|
{
|
|
114
107
|
"name": "Without Avatars",
|
|
115
|
-
"description": "
|
|
108
|
+
"description": "Turns sit flush when nothing needs an avatar gutter.",
|
|
116
109
|
"code": "<ConversationList showAvatars={false}>\n <Message role=\"user\">\n <Message.Content>Hello!</Message.Content>\n </Message>\n <Message role=\"assistant\">\n <Message.Content>How can I help?</Message.Content>\n </Message>\n</ConversationList>"
|
|
117
110
|
},
|
|
118
111
|
{
|
|
119
112
|
"name": "With Typing Indicator",
|
|
120
|
-
"description": "
|
|
113
|
+
"description": "Animated dots hold the reply's place before it lands.",
|
|
121
114
|
"code": "<ConversationList>\n <Message role=\"user\">\n <Message.Content>What is TypeScript?</Message.Content>\n </Message>\n <ConversationList.TypingIndicator name=\"Assistant\" />\n</ConversationList>"
|
|
122
115
|
},
|
|
123
116
|
{
|
|
124
117
|
"name": "Loading History",
|
|
125
|
-
"description": "
|
|
118
|
+
"description": "A spinner pins to the top while older turns load.",
|
|
126
119
|
"code": "<ConversationList loadingHistory>\n <Message role=\"user\">\n <Message.Content>This is the latest message</Message.Content>\n </Message>\n</ConversationList>"
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
"name": "Empty",
|
|
123
|
+
"description": "A fresh conversation shows its placeholder instead of blank space.",
|
|
124
|
+
"code": "<ConversationList\n emptyState={\n <EmptyState>\n <EmptyState.Title>No messages yet</EmptyState.Title>\n <EmptyState.Description>\n Ask a question to get started.\n </EmptyState.Description>\n </EmptyState>\n }\n/>"
|
|
127
125
|
}
|
|
128
126
|
],
|
|
129
127
|
"relations": [
|
|
@@ -152,10 +150,7 @@
|
|
|
152
150
|
"loadingHistory: boolean - show history loading spinner",
|
|
153
151
|
"emptyState: ReactNode - empty conversation content"
|
|
154
152
|
],
|
|
155
|
-
"a11yRules": [
|
|
156
|
-
"A11Y_ARIA_ROLES",
|
|
157
|
-
"A11Y_MOTION_PREFERENCE"
|
|
158
|
-
]
|
|
153
|
+
"a11yRules": ["A11Y_ARIA_ROLES", "A11Y_MOTION_PREFERENCE"]
|
|
159
154
|
},
|
|
160
155
|
"provenance": {
|
|
161
156
|
"source": "migrated",
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
@use "../../tokens/variables" as *;
|
|
2
|
+
@use "../../tokens/measurements.generated" as measurements;
|
|
2
3
|
@use "../../recipes/layout" as layout;
|
|
3
4
|
@use "../../recipes/representation" as representation;
|
|
4
5
|
@use "../../recipes/typography" as typography;
|
|
@@ -64,7 +65,7 @@
|
|
|
64
65
|
|
|
65
66
|
.dateSeparatorLine {
|
|
66
67
|
flex: 1;
|
|
67
|
-
height: var(--fui-stroke-hairline,
|
|
68
|
+
height: var(--fui-stroke-hairline, #{$fui-stroke-hairline});
|
|
68
69
|
background-color: var(--fui-border, $fui-border);
|
|
69
70
|
}
|
|
70
71
|
|
|
@@ -73,8 +74,6 @@
|
|
|
73
74
|
|
|
74
75
|
color: var(--fui-text-secondary, $fui-text-secondary);
|
|
75
76
|
white-space: nowrap;
|
|
76
|
-
text-transform: uppercase;
|
|
77
|
-
letter-spacing: var(--fui-letter-spacing-wide, $fui-letter-spacing-wide);
|
|
78
77
|
}
|
|
79
78
|
|
|
80
79
|
// ============================================
|
|
@@ -130,7 +130,7 @@ function TypingIndicator({
|
|
|
130
130
|
<div className={styles.typingContent}>
|
|
131
131
|
<Loading
|
|
132
132
|
size="sm"
|
|
133
|
-
|
|
133
|
+
kind="dots"
|
|
134
134
|
color="muted"
|
|
135
135
|
label=""
|
|
136
136
|
role="presentation"
|
|
@@ -242,7 +242,7 @@ function ConversationListRoot({
|
|
|
242
242
|
<div {...htmlProps} ref={containerRef} className={classes} onScroll={handleScroll}>
|
|
243
243
|
{loadingHistory && (
|
|
244
244
|
<div className={styles.loadingHistory}>
|
|
245
|
-
<Loading size="md"
|
|
245
|
+
<Loading size="md" kind="spinner" color="muted" label="Loading history" />
|
|
246
246
|
<span>Loading history...</span>
|
|
247
247
|
</div>
|
|
248
248
|
)}
|
|
@@ -5,9 +5,7 @@ import styles from "./DataTable.module.scss";
|
|
|
5
5
|
export function ExpandIcon({ expanded }: { expanded: boolean }) {
|
|
6
6
|
return (
|
|
7
7
|
<svg
|
|
8
|
-
className={[styles.expandIcon, expanded && styles.expandIconOpen]
|
|
9
|
-
.filter(Boolean)
|
|
10
|
-
.join(" ")}
|
|
8
|
+
className={[styles.expandIcon, expanded && styles.expandIconOpen].filter(Boolean).join(" ")}
|
|
11
9
|
viewBox="0 0 12 12"
|
|
12
10
|
fill="none"
|
|
13
11
|
xmlns="http://www.w3.org/2000/svg"
|
|
@@ -28,12 +26,7 @@ export function ExpandIcon({ expanded }: { expanded: boolean }) {
|
|
|
28
26
|
// (--fui-icon-xs) in CSS so all sort glyphs share the icon ladder.
|
|
29
27
|
export function SortIcon() {
|
|
30
28
|
return (
|
|
31
|
-
<svg
|
|
32
|
-
viewBox="0 0 12 12"
|
|
33
|
-
fill="none"
|
|
34
|
-
xmlns="http://www.w3.org/2000/svg"
|
|
35
|
-
aria-hidden="true"
|
|
36
|
-
>
|
|
29
|
+
<svg viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
|
|
37
30
|
<path d="M6 2L8.5 5H3.5L6 2Z" fill="currentColor" opacity="0.3" />
|
|
38
31
|
<path d="M6 10L3.5 7H8.5L6 10Z" fill="currentColor" opacity="0.3" />
|
|
39
32
|
</svg>
|
|
@@ -42,12 +35,7 @@ export function SortIcon() {
|
|
|
42
35
|
|
|
43
36
|
export function SortAscIcon() {
|
|
44
37
|
return (
|
|
45
|
-
<svg
|
|
46
|
-
viewBox="0 0 12 12"
|
|
47
|
-
fill="none"
|
|
48
|
-
xmlns="http://www.w3.org/2000/svg"
|
|
49
|
-
aria-hidden="true"
|
|
50
|
-
>
|
|
38
|
+
<svg viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
|
|
51
39
|
<path d="M6 2L8.5 5H3.5L6 2Z" fill="currentColor" />
|
|
52
40
|
</svg>
|
|
53
41
|
);
|
|
@@ -55,12 +43,7 @@ export function SortAscIcon() {
|
|
|
55
43
|
|
|
56
44
|
export function SortDescIcon() {
|
|
57
45
|
return (
|
|
58
|
-
<svg
|
|
59
|
-
viewBox="0 0 12 12"
|
|
60
|
-
fill="none"
|
|
61
|
-
xmlns="http://www.w3.org/2000/svg"
|
|
62
|
-
aria-hidden="true"
|
|
63
|
-
>
|
|
46
|
+
<svg viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
|
|
64
47
|
<path d="M6 10L3.5 7H8.5L6 10Z" fill="currentColor" />
|
|
65
48
|
</svg>
|
|
66
49
|
);
|