@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,5 +1,6 @@
|
|
|
1
1
|
@use "../../tokens/variables" as *;
|
|
2
2
|
@use "../../tokens/mixins" as *;
|
|
3
|
+
@use "../../tokens/measurements.generated" as measurements;
|
|
3
4
|
@use "../../recipes/action" as action;
|
|
4
5
|
@use "../../recipes/table-chrome" as table-chrome;
|
|
5
6
|
@use "../../recipes/target" as target;
|
|
@@ -45,6 +46,7 @@
|
|
|
45
46
|
.headerRow,
|
|
46
47
|
.row {
|
|
47
48
|
@include table-chrome.row;
|
|
49
|
+
@include high-contrast-outline;
|
|
48
50
|
}
|
|
49
51
|
|
|
50
52
|
.headerRow {
|
|
@@ -66,7 +68,7 @@
|
|
|
66
68
|
.sortButton {
|
|
67
69
|
display: flex;
|
|
68
70
|
align-items: center;
|
|
69
|
-
gap: var(--fui-raw-space-4);
|
|
71
|
+
gap: var(--fui-raw-space-4, 4px);
|
|
70
72
|
}
|
|
71
73
|
|
|
72
74
|
.sortButton {
|
|
@@ -75,7 +77,7 @@
|
|
|
75
77
|
|
|
76
78
|
justify-content: space-between;
|
|
77
79
|
inline-size: 100%;
|
|
78
|
-
padding: 0;
|
|
80
|
+
padding: var(--fui-raw-space-0, #{measurements.raw-space(0)});
|
|
79
81
|
color: inherit;
|
|
80
82
|
text-align: start;
|
|
81
83
|
transition: color var(--fui-transition-fast, $fui-transition-fast);
|
|
@@ -148,12 +150,13 @@
|
|
|
148
150
|
);
|
|
149
151
|
|
|
150
152
|
.td:first-child {
|
|
151
|
-
box-shadow: inset var(--fui-table-divider-size
|
|
152
|
-
var(--fui-table-row-selected-border, var(--fui-border-strong, #{$fui-border-strong}));
|
|
153
|
+
box-shadow: inset var(--fui-table-divider-size, var(--fui-stroke-hairline, #{$fui-stroke-hairline}))
|
|
154
|
+
0 0 var(--fui-table-row-selected-border, var(--fui-border-strong, #{$fui-border-strong}));
|
|
153
155
|
}
|
|
154
156
|
|
|
155
157
|
&:dir(rtl) .td:first-child {
|
|
156
|
-
box-shadow: inset
|
|
158
|
+
box-shadow: inset
|
|
159
|
+
calc(-1 * var(--fui-table-divider-size, var(--fui-stroke-hairline, #{$fui-stroke-hairline}))) 0 0
|
|
157
160
|
var(--fui-table-row-selected-border, var(--fui-border-strong, #{$fui-border-strong}));
|
|
158
161
|
}
|
|
159
162
|
}
|
|
@@ -176,8 +179,11 @@
|
|
|
176
179
|
}
|
|
177
180
|
|
|
178
181
|
.bordered {
|
|
179
|
-
|
|
180
|
-
|
|
182
|
+
/* Keep the rounded corners clipping the table, but never trap the
|
|
183
|
+
horizontal scroll the wrapper needs for wide tables. */
|
|
184
|
+
overflow-x: auto;
|
|
185
|
+
overflow-y: hidden;
|
|
186
|
+
border: var(--fui-table-divider-size, var(--fui-stroke-hairline, $fui-stroke-hairline)) solid
|
|
181
187
|
var(--fui-table-border, var(--fui-border, #{$fui-border}));
|
|
182
188
|
border-radius: var(--fui-radius-md, $fui-radius-md);
|
|
183
189
|
background: var(--fui-data-table-bg, var(--fui-bg-primary, #{$fui-bg-primary}));
|
|
@@ -215,7 +221,7 @@
|
|
|
215
221
|
|
|
216
222
|
.skeletonBar {
|
|
217
223
|
display: block;
|
|
218
|
-
block-size: var(--fui-raw-space-10);
|
|
224
|
+
block-size: var(--fui-raw-space-10, 10px);
|
|
219
225
|
border-radius: var(--fui-radius-sm, $fui-radius-sm);
|
|
220
226
|
background: linear-gradient(
|
|
221
227
|
90deg,
|
|
@@ -224,7 +230,8 @@
|
|
|
224
230
|
color-mix(in srgb, currentColor 8%, transparent) 75%
|
|
225
231
|
);
|
|
226
232
|
background-size: 200% 100%;
|
|
227
|
-
animation: dataTableShimmer
|
|
233
|
+
animation: dataTableShimmer var(--fui-duration-shimmer, $fui-duration-shimmer) ease-in-out
|
|
234
|
+
infinite;
|
|
228
235
|
}
|
|
229
236
|
|
|
230
237
|
@keyframes dataTableShimmer {
|
|
@@ -246,7 +253,7 @@
|
|
|
246
253
|
.expandCell {
|
|
247
254
|
display: inline-flex;
|
|
248
255
|
align-items: center;
|
|
249
|
-
gap: var(--fui-raw-space-4);
|
|
256
|
+
gap: var(--fui-raw-space-4, 4px);
|
|
250
257
|
}
|
|
251
258
|
|
|
252
259
|
.expandButton {
|
|
@@ -286,8 +293,8 @@
|
|
|
286
293
|
display: flex;
|
|
287
294
|
align-items: center;
|
|
288
295
|
justify-content: center;
|
|
289
|
-
padding-block: var(--fui-raw-space-48);
|
|
290
|
-
padding-inline: var(--fui-raw-space-24);
|
|
296
|
+
padding-block: var(--fui-raw-space-48, 48px);
|
|
297
|
+
padding-inline: var(--fui-raw-space-24, 24px);
|
|
291
298
|
}
|
|
292
299
|
|
|
293
300
|
.emptyMessage {
|
|
@@ -296,11 +303,11 @@
|
|
|
296
303
|
color: var(--fui-text-tertiary, $fui-text-tertiary);
|
|
297
304
|
}
|
|
298
305
|
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
306
|
+
// Virtualizer spacer rows: height is measured state set inline; the chrome
|
|
307
|
+
// reset lives here so the spacer never paints a cell.
|
|
308
|
+
.virtualSpacer {
|
|
309
|
+
padding: var(--fui-raw-space-0, #{measurements.raw-space(0)});
|
|
310
|
+
border: 0;
|
|
304
311
|
}
|
|
305
312
|
|
|
306
313
|
@media (prefers-reduced-motion: reduce) {
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
import * as React from "react";
|
|
4
4
|
import { useVirtualizer, type Virtualizer } from "@tanstack/react-virtual";
|
|
5
5
|
import { Table, type TableProps } from "../Table";
|
|
6
|
+
import styles from "./DataTable.module.scss";
|
|
6
7
|
|
|
7
8
|
// ============================================
|
|
8
9
|
// Dependency (@tanstack/react-virtual)
|
|
@@ -86,13 +87,13 @@ function DataTableVirtualRoot<TItem>({
|
|
|
86
87
|
<Table.Body>
|
|
87
88
|
{paddingTop > 0 ? (
|
|
88
89
|
<tr aria-hidden="true">
|
|
89
|
-
<td colSpan={colSpan} style={{ height: paddingTop
|
|
90
|
+
<td colSpan={colSpan} className={styles.virtualSpacer} style={{ height: paddingTop }} />
|
|
90
91
|
</tr>
|
|
91
92
|
) : null}
|
|
92
93
|
{virtualRows.map((row) => renderRow(row))}
|
|
93
94
|
{paddingBottom > 0 ? (
|
|
94
95
|
<tr aria-hidden="true">
|
|
95
|
-
<td colSpan={colSpan} style={{ height: paddingBottom
|
|
96
|
+
<td colSpan={colSpan} className={styles.virtualSpacer} style={{ height: paddingBottom }} />
|
|
96
97
|
</tr>
|
|
97
98
|
) : null}
|
|
98
99
|
</Table.Body>
|
|
@@ -6,6 +6,7 @@ import styles from "./DataTable.module.scss";
|
|
|
6
6
|
import { Checkbox } from "../Checkbox";
|
|
7
7
|
import { ExpandIcon, SortAscIcon, SortDescIcon, SortIcon } from "./DataTable.icons";
|
|
8
8
|
import { DataTableSkeletonRows, useArrowKeyRowNav } from "./DataTable.support";
|
|
9
|
+
import { isDevelopmentBuild } from "../../utils/env";
|
|
9
10
|
|
|
10
11
|
// ============================================
|
|
11
12
|
// Dependency (@tanstack/react-table) — lazy import()
|
|
@@ -36,7 +37,7 @@ function loadReactTable(): Promise<void> {
|
|
|
36
37
|
_reactTable = (await import("@tanstack/react-table")) as unknown as ReactTableModule;
|
|
37
38
|
} catch {
|
|
38
39
|
_reactTableFailed = true;
|
|
39
|
-
if (
|
|
40
|
+
if (isDevelopmentBuild()) {
|
|
40
41
|
console.warn(
|
|
41
42
|
"[@usefragments/ui] DataTable: @tanstack/react-table is not installed. " +
|
|
42
43
|
"Rendering a static table without sorting, selection, or expansion. " +
|
|
@@ -469,9 +470,9 @@ function DataTableLive<T>({
|
|
|
469
470
|
<DataTableSkeletonRows
|
|
470
471
|
rowCount={skeletonRows}
|
|
471
472
|
columnCount={columns.length}
|
|
472
|
-
rowClassName={styles.row}
|
|
473
|
-
cellClassName={styles.td}
|
|
474
|
-
barClassName={styles.skeletonBar}
|
|
473
|
+
rowClassName={styles.row ?? ""}
|
|
474
|
+
cellClassName={styles.td ?? ""}
|
|
475
|
+
barClassName={styles.skeletonBar ?? ""}
|
|
475
476
|
/>
|
|
476
477
|
) : (
|
|
477
478
|
table.getRowModel().rows.map((row: any) => {
|
|
@@ -546,7 +547,7 @@ function DataTableLive<T>({
|
|
|
546
547
|
style={{
|
|
547
548
|
...getColumnSizeStyle(cell.column),
|
|
548
549
|
...(isFirstDataCell
|
|
549
|
-
? ({ "--
|
|
550
|
+
? ({ "--fui-table-tree-depth": depth } as React.CSSProperties)
|
|
550
551
|
: undefined),
|
|
551
552
|
}}
|
|
552
553
|
>
|
|
@@ -711,9 +712,9 @@ function DataTableStatic<T>({
|
|
|
711
712
|
<DataTableSkeletonRows
|
|
712
713
|
rowCount={skeletonRows}
|
|
713
714
|
columnCount={columnCount}
|
|
714
|
-
rowClassName={styles.row}
|
|
715
|
-
cellClassName={styles.td}
|
|
716
|
-
barClassName={styles.skeletonBar}
|
|
715
|
+
rowClassName={styles.row ?? ""}
|
|
716
|
+
cellClassName={styles.td ?? ""}
|
|
717
|
+
barClassName={styles.skeletonBar ?? ""}
|
|
717
718
|
/>
|
|
718
719
|
) : isEmpty ? (
|
|
719
720
|
<tr className={styles.row}>
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://usefragments.com/schemas/contract.v1.json",
|
|
3
3
|
"name": "DatePicker",
|
|
4
|
-
"description": "
|
|
5
|
-
"category": "
|
|
4
|
+
"description": "Selects a date or date range from a calendar.",
|
|
5
|
+
"category": "inputs",
|
|
6
6
|
"tags": ["date", "picker", "calendar", "range", "form", "input"],
|
|
7
7
|
"status": "stable",
|
|
8
8
|
"dependencies": [
|
|
@@ -165,75 +165,74 @@
|
|
|
165
165
|
},
|
|
166
166
|
"usage": {
|
|
167
167
|
"when": [
|
|
168
|
-
"
|
|
169
|
-
"
|
|
170
|
-
"
|
|
171
|
-
"Filtering by date or date range"
|
|
168
|
+
"A date the user picks off a calendar",
|
|
169
|
+
"A start and end date together",
|
|
170
|
+
"Filtering by date"
|
|
172
171
|
],
|
|
173
172
|
"whenNot": [
|
|
174
|
-
"Time
|
|
175
|
-
"
|
|
176
|
-
"
|
|
173
|
+
"Time on its own (use a dedicated TimePicker)",
|
|
174
|
+
"A handful of known dates (use Select)",
|
|
175
|
+
"Typed date entry (use Input with a date mask)"
|
|
177
176
|
],
|
|
178
177
|
"guidelines": [
|
|
179
|
-
"
|
|
180
|
-
"
|
|
181
|
-
"
|
|
182
|
-
"
|
|
183
|
-
"
|
|
184
|
-
"DatePicker.Trigger
|
|
178
|
+
"Pair range mode with numberOfMonths={2} so both ends are visible",
|
|
179
|
+
"size=\"sm\" lines the trigger up with other dense toolbar controls",
|
|
180
|
+
"Offer presets for the common ranges: Today, Last 7 days, Last 30 days",
|
|
181
|
+
"disabledDates blocks past or unavailable days before the user tries",
|
|
182
|
+
"Placeholder names the date, not the action",
|
|
183
|
+
"DatePicker.Trigger defaults to type=\"button\", so it is safe inside a form"
|
|
185
184
|
],
|
|
186
185
|
"accessibility": [
|
|
187
|
-
"
|
|
188
|
-
"Arrow keys
|
|
186
|
+
"The calendar grid is fully keyboard navigable",
|
|
187
|
+
"Arrow keys move between days",
|
|
189
188
|
"Escape closes the calendar",
|
|
190
|
-
"Focus returns to trigger on close"
|
|
189
|
+
"Focus returns to the trigger on close"
|
|
191
190
|
]
|
|
192
191
|
},
|
|
193
192
|
"examples": [
|
|
194
193
|
{
|
|
195
194
|
"name": "Default",
|
|
196
|
-
"description": "
|
|
195
|
+
"description": "Trigger opens one month; today is outlined.",
|
|
197
196
|
"code": "<StatefulDatePicker placeholder=\"Pick a date\">\n <DatePicker.Trigger />\n <DatePicker.Content>\n <DatePicker.Calendar />\n </DatePicker.Content>\n</StatefulDatePicker>"
|
|
198
197
|
},
|
|
199
198
|
{
|
|
200
199
|
"name": "Small Trigger",
|
|
201
|
-
"description": "
|
|
200
|
+
"description": "Matches the height of other sm toolbar controls.",
|
|
202
201
|
"code": "<StatefulDatePicker size=\"sm\" placeholder=\"Last scanned\">\n <DatePicker.Trigger />\n <DatePicker.Content>\n <DatePicker.Calendar />\n </DatePicker.Content>\n</StatefulDatePicker>"
|
|
203
202
|
},
|
|
204
203
|
{
|
|
205
204
|
"name": "Date Range",
|
|
206
|
-
"description": "
|
|
205
|
+
"description": "Two months side by side so both ends of the range are visible.",
|
|
207
206
|
"code": "<StatefulRangePicker placeholder=\"Select date range\" numberOfMonths={2}>\n <DatePicker.Trigger />\n <DatePicker.Content>\n <DatePicker.Calendar />\n </DatePicker.Content>\n</StatefulRangePicker>"
|
|
208
207
|
},
|
|
209
208
|
{
|
|
210
209
|
"name": "Multi-Month",
|
|
211
|
-
"description": "
|
|
210
|
+
"description": "Three months at once, for dates far from today.",
|
|
212
211
|
"code": "<StatefulDatePicker placeholder=\"Pick a date\" numberOfMonths={3}>\n <DatePicker.Trigger />\n <DatePicker.Content>\n <DatePicker.Calendar />\n </DatePicker.Content>\n</StatefulDatePicker>"
|
|
213
212
|
},
|
|
214
213
|
{
|
|
215
214
|
"name": "Disabled Dates",
|
|
216
|
-
"description": "
|
|
215
|
+
"description": "Everything before today is greyed out and unclickable.",
|
|
217
216
|
"code": "<StatefulDatePicker\n placeholder=\"Select a future date\"\n disabledDates={{ before: new Date() }}\n>\n <DatePicker.Trigger />\n <DatePicker.Content>\n <DatePicker.Calendar />\n </DatePicker.Content>\n</StatefulDatePicker>"
|
|
218
217
|
},
|
|
219
218
|
{
|
|
220
219
|
"name": "With Presets",
|
|
221
|
-
"description": "
|
|
220
|
+
"description": "Shortcut buttons beside the calendar skip the common ranges.",
|
|
222
221
|
"code": "<StatefulRangePicker placeholder=\"Select date range\" numberOfMonths={2}>\n <DatePicker.Trigger />\n <DatePicker.Content>\n <div style={{ display: 'flex', gap: '1rem' }}>\n <div style={{ display: 'flex', flexDirection: 'column', gap: '0.25rem', minWidth: '8rem' }}>\n <DatePicker.Preset range={{ from: today, to: today }}>Today</DatePicker.Preset>\n <DatePicker.Preset range={{ from: subDays(today, 7), to: today }}>Last 7 days</DatePicker.Preset>\n <DatePicker.Preset range={{ from: subDays(today, 30), to: today }}>Last 30 days</DatePicker.Preset>\n <DatePicker.Preset range={{ from: subDays(today, 90), to: today }}>Last 90 days</DatePicker.Preset>\n </div>\n <DatePicker.Calendar />\n </div>\n </DatePicker.Content>\n</StatefulRangePicker>"
|
|
223
222
|
},
|
|
224
223
|
{
|
|
225
224
|
"name": "With Label and Helper Text",
|
|
226
|
-
"description": "
|
|
227
|
-
"code": "<StatefulDatePicker placeholder=\"Pick a date\">\n <DatePicker.Trigger />\n <DatePicker.Content>\n <DatePicker.Calendar />\n </DatePicker.Content>\n</StatefulDatePicker>"
|
|
225
|
+
"description": "Label above the trigger, supporting text below it.",
|
|
226
|
+
"code": "<StatefulDatePicker\n label=\"Renewal date\"\n placeholder=\"Pick a date\"\n helperText=\"Billing restarts on this day each month.\"\n>\n <DatePicker.Trigger />\n <DatePicker.Content>\n <DatePicker.Calendar />\n </DatePicker.Content>\n</StatefulDatePicker>"
|
|
228
227
|
},
|
|
229
228
|
{
|
|
230
229
|
"name": "Error State",
|
|
231
|
-
"description": "
|
|
230
|
+
"description": "Red border on the trigger, and the reason below it.",
|
|
232
231
|
"code": "<DatePicker\n label=\"Start Date\"\n placeholder=\"Pick a date\"\n error=\"Please select a start date\"\n>\n <DatePicker.Trigger />\n <DatePicker.Content>\n <DatePicker.Calendar />\n </DatePicker.Content>\n</DatePicker>"
|
|
233
232
|
},
|
|
234
233
|
{
|
|
235
234
|
"name": "Disabled",
|
|
236
|
-
"description": "
|
|
235
|
+
"description": "Dimmed; the calendar will not open.",
|
|
237
236
|
"code": "<StatefulDatePicker placeholder=\"Pick a date\" disabled>\n <DatePicker.Trigger />\n <DatePicker.Content>\n <DatePicker.Calendar />\n </DatePicker.Content>\n</StatefulDatePicker>"
|
|
238
237
|
}
|
|
239
238
|
],
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
@use "../../tokens/variables" as *;
|
|
2
2
|
@use "../../tokens/mixins" as *;
|
|
3
|
+
@use "../../tokens/measurements.generated" as measurements;
|
|
3
4
|
@use "../../recipes/action";
|
|
4
5
|
@use "../../recipes/field";
|
|
5
6
|
@use "../../recipes/layout";
|
|
6
7
|
@use "../../recipes/popup";
|
|
8
|
+
@use "../../recipes/surface";
|
|
7
9
|
@use "../../recipes/typography";
|
|
8
10
|
|
|
9
11
|
.wrapper {
|
|
@@ -40,9 +42,25 @@
|
|
|
40
42
|
min-width: layout.measure("field-minimum");
|
|
41
43
|
text-align: left;
|
|
42
44
|
|
|
45
|
+
&:focus-visible,
|
|
43
46
|
&[data-popup-open] {
|
|
44
|
-
|
|
47
|
+
@include field.focus-state;
|
|
45
48
|
}
|
|
49
|
+
|
|
50
|
+
// Error border, matching Input. Set from the wrapper's data-invalid so the
|
|
51
|
+
// control reads as failed, not just the message beneath it.
|
|
52
|
+
.wrapper[data-invalid] & {
|
|
53
|
+
@include field.invalid-state;
|
|
54
|
+
|
|
55
|
+
// Focused while invalid keeps the danger edge and takes the danger ring,
|
|
56
|
+
// the same pairing Input and Textarea render.
|
|
57
|
+
&:focus-visible,
|
|
58
|
+
&[data-popup-open] {
|
|
59
|
+
@include field.invalid-focus-state;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
@include high-contrast-outline;
|
|
46
64
|
}
|
|
47
65
|
|
|
48
66
|
.triggerSm {
|
|
@@ -98,16 +116,14 @@
|
|
|
98
116
|
// ============================================
|
|
99
117
|
|
|
100
118
|
.positioner {
|
|
101
|
-
z-index:
|
|
119
|
+
z-index: var(--fui-overlay-layer-anchored, #{$fui-overlay-layer-anchored});
|
|
102
120
|
outline: none;
|
|
103
121
|
}
|
|
104
122
|
|
|
105
123
|
.popup {
|
|
106
|
-
@include
|
|
124
|
+
@include popup.container;
|
|
107
125
|
|
|
108
|
-
|
|
109
|
-
padding: var(--fui-surface-inset-compact, 12px);
|
|
110
|
-
box-shadow: var(--fui-shadow-md, $fui-shadow-md);
|
|
126
|
+
padding: surface.inset("compact");
|
|
111
127
|
|
|
112
128
|
// Animation
|
|
113
129
|
opacity: 0;
|
|
@@ -176,7 +192,7 @@
|
|
|
176
192
|
top: 0;
|
|
177
193
|
left: 0;
|
|
178
194
|
right: 0;
|
|
179
|
-
padding: 0;
|
|
195
|
+
padding: var(--fui-raw-space-0, #{measurements.raw-space(0)});
|
|
180
196
|
}
|
|
181
197
|
|
|
182
198
|
.navButton {
|
|
@@ -218,9 +234,9 @@
|
|
|
218
234
|
.weekday {
|
|
219
235
|
@include typography.role("ui-compact");
|
|
220
236
|
|
|
221
|
-
width: var(--_day-size);
|
|
222
|
-
height: var(--_day-size);
|
|
223
|
-
padding: 0;
|
|
237
|
+
width: var(--_day-size, #{action.track("md")});
|
|
238
|
+
height: var(--_day-size, #{action.track("md")});
|
|
239
|
+
padding: var(--fui-raw-space-0, #{measurements.raw-space(0)});
|
|
224
240
|
color: var(--fui-text-tertiary, $fui-text-tertiary);
|
|
225
241
|
text-align: center;
|
|
226
242
|
vertical-align: middle;
|
|
@@ -239,9 +255,9 @@
|
|
|
239
255
|
// ============================================
|
|
240
256
|
|
|
241
257
|
.day {
|
|
242
|
-
width: var(--_day-size);
|
|
243
|
-
height: var(--_day-size);
|
|
244
|
-
padding: 0;
|
|
258
|
+
width: var(--_day-size, #{action.track("md")});
|
|
259
|
+
height: var(--_day-size, #{action.track("md")});
|
|
260
|
+
padding: var(--fui-raw-space-0, #{measurements.raw-space(0)});
|
|
245
261
|
text-align: center;
|
|
246
262
|
vertical-align: middle;
|
|
247
263
|
position: relative;
|
|
@@ -253,8 +269,8 @@
|
|
|
253
269
|
display: inline-flex;
|
|
254
270
|
align-items: center;
|
|
255
271
|
justify-content: center;
|
|
256
|
-
width: var(--_day-size);
|
|
257
|
-
height: var(--_day-size);
|
|
272
|
+
width: var(--_day-size, #{action.track("md")});
|
|
273
|
+
height: var(--_day-size, #{action.track("md")});
|
|
258
274
|
border-radius: var(--fui-radius-md, $fui-radius-md);
|
|
259
275
|
font-size: var(--fui-font-size-sm, $fui-font-size-sm);
|
|
260
276
|
color: var(--fui-text-primary, $fui-text-primary);
|
|
@@ -276,7 +292,8 @@
|
|
|
276
292
|
// ============================================
|
|
277
293
|
|
|
278
294
|
.today > .dayButton {
|
|
279
|
-
box-shadow: inset 0 0 0
|
|
295
|
+
box-shadow: inset 0 0 0 var(--fui-stroke-hairline, 1px)
|
|
296
|
+
var(--fui-border-strong, $fui-border-strong);
|
|
280
297
|
background-color: color-mix(in srgb, var(--fui-bg-hover, $fui-bg-hover) 55%, transparent);
|
|
281
298
|
}
|
|
282
299
|
|
|
@@ -289,14 +306,17 @@
|
|
|
289
306
|
}
|
|
290
307
|
}
|
|
291
308
|
|
|
309
|
+
// Days outside the visible month recede but stay clickable; they borrow the
|
|
310
|
+
// disabled opacity because the kit has no separate muted-opacity token yet.
|
|
292
311
|
.outside > .dayButton {
|
|
293
312
|
color: var(--fui-text-tertiary, $fui-text-tertiary);
|
|
294
|
-
opacity:
|
|
313
|
+
opacity: var(--fui-opacity-disabled, #{$fui-opacity-disabled});
|
|
295
314
|
}
|
|
296
315
|
|
|
297
316
|
.disabled > .dayButton {
|
|
317
|
+
@include disabled-state;
|
|
318
|
+
|
|
298
319
|
color: var(--fui-text-tertiary, $fui-text-tertiary);
|
|
299
|
-
opacity: 0.5;
|
|
300
320
|
pointer-events: none;
|
|
301
321
|
}
|
|
302
322
|
|
|
@@ -318,7 +338,7 @@
|
|
|
318
338
|
&::before {
|
|
319
339
|
content: "";
|
|
320
340
|
position: absolute;
|
|
321
|
-
inset: 2px 0;
|
|
341
|
+
inset: var(--fui-raw-space-2, 2px) 0;
|
|
322
342
|
background-color: color-mix(
|
|
323
343
|
in srgb,
|
|
324
344
|
var(--fui-color-accent, $fui-color-accent) 10%,
|
|
@@ -339,7 +359,7 @@
|
|
|
339
359
|
&::before {
|
|
340
360
|
content: "";
|
|
341
361
|
position: absolute;
|
|
342
|
-
inset: 2px 0 2px 50%;
|
|
362
|
+
inset: var(--fui-raw-space-2, 2px) 0 var(--fui-raw-space-2, 2px) 50%;
|
|
343
363
|
background-color: color-mix(
|
|
344
364
|
in srgb,
|
|
345
365
|
var(--fui-color-accent, $fui-color-accent) 10%,
|
|
@@ -369,7 +389,7 @@
|
|
|
369
389
|
&::before {
|
|
370
390
|
content: "";
|
|
371
391
|
position: absolute;
|
|
372
|
-
inset: 2px 50% 2px 0;
|
|
392
|
+
inset: var(--fui-raw-space-2, 2px) 50% var(--fui-raw-space-2, 2px) 0;
|
|
373
393
|
background-color: color-mix(
|
|
374
394
|
in srgb,
|
|
375
395
|
var(--fui-color-accent, $fui-color-accent) 10%,
|
|
@@ -413,29 +433,6 @@
|
|
|
413
433
|
}
|
|
414
434
|
}
|
|
415
435
|
|
|
416
|
-
// ============================================
|
|
417
|
-
// Accessibility: High Contrast Mode
|
|
418
|
-
// ============================================
|
|
419
|
-
|
|
420
|
-
@media (prefers-contrast: more) {
|
|
421
|
-
.trigger {
|
|
422
|
-
border-width: 2px;
|
|
423
|
-
border-color: var(--fui-text-primary, $fui-text-primary);
|
|
424
|
-
|
|
425
|
-
&[data-popup-open] {
|
|
426
|
-
border-color: var(--fui-color-accent, $fui-color-accent);
|
|
427
|
-
}
|
|
428
|
-
}
|
|
429
|
-
|
|
430
|
-
.dayButton {
|
|
431
|
-
border: var(--fui-stroke-hairline, 1px) solid transparent;
|
|
432
|
-
|
|
433
|
-
&:focus-visible {
|
|
434
|
-
border-color: var(--fui-text-primary, $fui-text-primary);
|
|
435
|
-
}
|
|
436
|
-
}
|
|
437
|
-
}
|
|
438
|
-
|
|
439
436
|
// ============================================
|
|
440
437
|
// Reduced motion
|
|
441
438
|
// ============================================
|
|
@@ -6,6 +6,7 @@ import { useFormFieldIds, type FormFieldProps } from "../../utils/aria";
|
|
|
6
6
|
import { POPUP_OFFSET_PX } from "../../recipes/popup";
|
|
7
7
|
import { useResolvedControlSize } from "../ComponentDefaults";
|
|
8
8
|
import styles from "./DatePicker.module.scss";
|
|
9
|
+
import { isDevelopmentBuild } from "../../utils/env";
|
|
9
10
|
|
|
10
11
|
// ============================================
|
|
11
12
|
// Types (self-owned — no external dependency for types)
|
|
@@ -170,6 +171,9 @@ interface DatePickerContextValue {
|
|
|
170
171
|
isControlledOpen: boolean;
|
|
171
172
|
size: "sm" | "md" | "lg";
|
|
172
173
|
name?: string;
|
|
174
|
+
/** Mirrors the wrapper's `data-invalid` onto the trigger as `aria-invalid`,
|
|
175
|
+
* so assistive tech hears the state the danger edge is painting. */
|
|
176
|
+
invalid?: boolean;
|
|
173
177
|
}
|
|
174
178
|
|
|
175
179
|
const DatePickerContext = React.createContext<DatePickerContextValue | null>(null);
|
|
@@ -249,7 +253,7 @@ function loadDayPickerDeps(): Promise<void> {
|
|
|
249
253
|
_DayFlag = rdp.DayFlag as unknown as RdpEnum;
|
|
250
254
|
} catch {
|
|
251
255
|
_rdpFailed = true;
|
|
252
|
-
if (
|
|
256
|
+
if (isDevelopmentBuild()) {
|
|
253
257
|
console.warn(
|
|
254
258
|
"[@usefragments/ui] DatePicker: react-day-picker is not installed. " +
|
|
255
259
|
"Install it with: npm install react-day-picker"
|
|
@@ -419,6 +423,12 @@ const DatePickerRoot = React.forwardRef<HTMLDivElement, DatePickerProps>(functio
|
|
|
419
423
|
|
|
420
424
|
const defaultPlaceholder = mode === "range" ? "Select date range" : "Pick a date";
|
|
421
425
|
|
|
426
|
+
const { labelId, helperId, errorId, hasError, errorMessage } = useFormFieldIds("datepicker", {
|
|
427
|
+
label,
|
|
428
|
+
helperText,
|
|
429
|
+
error,
|
|
430
|
+
});
|
|
431
|
+
|
|
422
432
|
const contextValue = React.useMemo<DatePickerContextValue>(
|
|
423
433
|
() => ({
|
|
424
434
|
mode,
|
|
@@ -439,6 +449,7 @@ const DatePickerRoot = React.forwardRef<HTMLDivElement, DatePickerProps>(functio
|
|
|
439
449
|
isControlledOpen,
|
|
440
450
|
size,
|
|
441
451
|
name,
|
|
452
|
+
invalid: hasError,
|
|
442
453
|
}),
|
|
443
454
|
[
|
|
444
455
|
mode,
|
|
@@ -462,21 +473,18 @@ const DatePickerRoot = React.forwardRef<HTMLDivElement, DatePickerProps>(functio
|
|
|
462
473
|
isControlledOpen,
|
|
463
474
|
size,
|
|
464
475
|
name,
|
|
476
|
+
hasError,
|
|
465
477
|
]
|
|
466
478
|
);
|
|
467
479
|
|
|
468
|
-
const { labelId, helperId, errorId, hasError, errorMessage } = useFormFieldIds("datepicker", {
|
|
469
|
-
label,
|
|
470
|
-
helperText,
|
|
471
|
-
error,
|
|
472
|
-
});
|
|
473
|
-
|
|
474
480
|
const wrapperClasses = [styles.wrapper, className].filter(Boolean).join(" ");
|
|
475
481
|
const helperClasses = [styles.helper, hasError && styles.helperError].filter(Boolean).join(" ");
|
|
476
482
|
|
|
477
483
|
return (
|
|
478
484
|
<DatePickerContext.Provider value={contextValue}>
|
|
479
|
-
|
|
485
|
+
{/* data-invalid lets the trigger pick up the error border; without it only
|
|
486
|
+
the message turns red and the control still looks valid. */}
|
|
487
|
+
<div ref={ref} className={wrapperClasses} data-invalid={hasError || undefined}>
|
|
480
488
|
{label && (
|
|
481
489
|
<span id={labelId} className={styles.label}>
|
|
482
490
|
{label}
|
|
@@ -540,7 +548,13 @@ function DatePickerTrigger({
|
|
|
540
548
|
}
|
|
541
549
|
|
|
542
550
|
return (
|
|
543
|
-
<BasePopover.Trigger
|
|
551
|
+
<BasePopover.Trigger
|
|
552
|
+
{...htmlProps}
|
|
553
|
+
type={type}
|
|
554
|
+
className={classes}
|
|
555
|
+
disabled={ctx.disabled}
|
|
556
|
+
aria-invalid={ctx.invalid || undefined}
|
|
557
|
+
>
|
|
544
558
|
{children ?? (
|
|
545
559
|
<>
|
|
546
560
|
<span className={styles.triggerIcon}>
|