@usefragments/ui 1.5.4 → 1.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -4
- package/dist/assets/fragments-wordmark.cjs +2 -2
- package/dist/assets/fragments-wordmark.d.ts.map +1 -1
- package/dist/assets/fragments-wordmark.js +2 -2
- package/dist/assets/ui.css +10468 -6909
- package/dist/chart.cjs +31 -26
- package/dist/chart.js +31 -26
- package/dist/codeblock.cjs +55 -29
- package/dist/codeblock.js +55 -29
- package/dist/colorpicker.cjs +5 -2
- package/dist/colorpicker.js +5 -2
- package/dist/components/Accordion/Accordion.module.scss.cjs +8 -8
- package/dist/components/Accordion/Accordion.module.scss.js +8 -8
- package/dist/components/Alert/Alert.module.scss.cjs +15 -12
- package/dist/components/Alert/Alert.module.scss.js +15 -12
- package/dist/components/Alert/index.cjs +7 -1
- package/dist/components/Alert/index.d.ts +12 -6
- package/dist/components/Alert/index.d.ts.map +1 -1
- package/dist/components/Alert/index.js +7 -1
- package/dist/components/AppShell/AppShell.module.scss.cjs +14 -14
- package/dist/components/AppShell/AppShell.module.scss.js +14 -14
- package/dist/components/AppShell/index.cjs +5 -3
- package/dist/components/AppShell/index.d.ts +4 -2
- package/dist/components/AppShell/index.d.ts.map +1 -1
- package/dist/components/AppShell/index.js +5 -3
- package/dist/components/Avatar/Avatar.module.scss.cjs +17 -14
- package/dist/components/Avatar/Avatar.module.scss.js +17 -14
- package/dist/components/Avatar/index.cjs +100 -118
- package/dist/components/Avatar/index.d.ts +7 -5
- package/dist/components/Avatar/index.d.ts.map +1 -1
- package/dist/components/Avatar/index.js +100 -118
- package/dist/components/Badge/Badge.module.scss.cjs +19 -19
- package/dist/components/Badge/Badge.module.scss.js +19 -19
- package/dist/components/BentoGrid/BentoGrid.module.scss.cjs +14 -14
- package/dist/components/BentoGrid/BentoGrid.module.scss.js +14 -14
- package/dist/components/Box/Box.module.scss.cjs +152 -152
- package/dist/components/Box/Box.module.scss.js +152 -152
- package/dist/components/Box/index.cjs +64 -75
- package/dist/components/Box/index.d.ts +16 -16
- package/dist/components/Box/index.d.ts.map +1 -1
- package/dist/components/Box/index.js +64 -75
- package/dist/components/Breadcrumbs/Breadcrumbs.module.scss.cjs +8 -8
- package/dist/components/Breadcrumbs/Breadcrumbs.module.scss.js +8 -8
- package/dist/components/Button/Button.module.scss.cjs +14 -14
- package/dist/components/Button/Button.module.scss.js +14 -14
- package/dist/components/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 +30 -18
- package/dist/components/Card/Card.module.scss.js +31 -19
- package/dist/components/Card/index.cjs +8 -0
- package/dist/components/Card/index.d.ts +12 -2
- package/dist/components/Card/index.d.ts.map +1 -1
- package/dist/components/Card/index.js +8 -0
- package/dist/components/Chart/Chart.module.scss.cjs +15 -15
- package/dist/components/Chart/Chart.module.scss.js +15 -15
- package/dist/components/Chart/index.d.ts +7 -7
- package/dist/components/Chart/index.d.ts.map +1 -1
- package/dist/components/Checkbox/Checkbox.module.scss.cjs +9 -15
- package/dist/components/Checkbox/Checkbox.module.scss.js +9 -15
- package/dist/components/Checkbox/index.cjs +6 -8
- package/dist/components/Checkbox/index.d.ts.map +1 -1
- package/dist/components/Checkbox/index.js +6 -8
- package/dist/components/Chip/Chip.module.scss.cjs +15 -15
- package/dist/components/Chip/Chip.module.scss.js +15 -15
- package/dist/components/Chip/index.cjs +6 -6
- package/dist/components/Chip/index.d.ts +1 -1
- package/dist/components/Chip/index.js +4 -4
- package/dist/components/CodeBlock/CodeBlock.module.scss.cjs +27 -24
- package/dist/components/CodeBlock/CodeBlock.module.scss.js +27 -24
- package/dist/components/CodeBlock/css-variables-theme.cjs +98 -0
- package/dist/components/CodeBlock/css-variables-theme.d.ts +27 -0
- package/dist/components/CodeBlock/css-variables-theme.d.ts.map +1 -0
- package/dist/components/CodeBlock/css-variables-theme.js +98 -0
- package/dist/components/CodeBlock/index.d.ts +17 -3
- package/dist/components/CodeBlock/index.d.ts.map +1 -1
- package/dist/components/Collapsible/Collapsible.module.scss.cjs +9 -12
- package/dist/components/Collapsible/Collapsible.module.scss.js +9 -12
- package/dist/components/Collapsible/index.cjs +3 -2
- package/dist/components/Collapsible/index.d.ts +3 -3
- package/dist/components/Collapsible/index.d.ts.map +1 -1
- package/dist/components/Collapsible/index.js +3 -2
- package/dist/components/ColorPicker/ColorPicker.module.scss.cjs +16 -16
- package/dist/components/ColorPicker/ColorPicker.module.scss.js +16 -16
- package/dist/components/ColorPicker/index.d.ts.map +1 -1
- package/dist/components/Combobox/Combobox.module.scss.cjs +21 -27
- package/dist/components/Combobox/Combobox.module.scss.js +21 -27
- package/dist/components/Combobox/index.cjs +21 -5
- package/dist/components/Combobox/index.d.ts.map +1 -1
- package/dist/components/Combobox/index.js +21 -5
- package/dist/components/Command/Command.module.scss.cjs +11 -11
- package/dist/components/Command/Command.module.scss.js +11 -11
- package/dist/components/Command/index.cjs +26 -15
- package/dist/components/Command/index.d.ts +2 -2
- package/dist/components/Command/index.d.ts.map +1 -1
- package/dist/components/Command/index.js +26 -15
- package/dist/components/ConversationList/ConversationList.module.scss.cjs +11 -14
- package/dist/components/ConversationList/ConversationList.module.scss.js +11 -14
- package/dist/components/ConversationList/index.cjs +40 -44
- package/dist/components/ConversationList/index.d.ts +3 -3
- package/dist/components/ConversationList/index.d.ts.map +1 -1
- package/dist/components/ConversationList/index.js +40 -44
- 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 +32 -56
- package/dist/components/DataTable/DataTable.module.scss.js +32 -56
- package/dist/components/DataTable/index.d.ts +5 -4
- package/dist/components/DataTable/index.d.ts.map +1 -1
- package/dist/components/DatePicker/DatePicker.module.scss.cjs +33 -33
- package/dist/components/DatePicker/DatePicker.module.scss.js +33 -33
- package/dist/components/DatePicker/index.d.ts.map +1 -1
- package/dist/components/Dialog/Dialog.module.scss.cjs +14 -14
- package/dist/components/Dialog/Dialog.module.scss.js +14 -14
- package/dist/components/Dialog/index.cjs +11 -14
- package/dist/components/Dialog/index.d.ts +7 -7
- package/dist/components/Dialog/index.d.ts.map +1 -1
- package/dist/components/Dialog/index.js +11 -14
- package/dist/components/Drawer/Drawer.module.scss.cjs +31 -28
- package/dist/components/Drawer/Drawer.module.scss.js +31 -28
- package/dist/components/Drawer/index.cjs +1 -1
- package/dist/components/Drawer/index.js +1 -1
- package/dist/components/Editor/Editor.module.scss.cjs +23 -23
- package/dist/components/Editor/Editor.module.scss.js +23 -23
- 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 +15 -12
- package/dist/components/EmptyState/EmptyState.module.scss.js +15 -12
- package/dist/components/EmptyState/index.cjs +8 -6
- package/dist/components/EmptyState/index.d.ts +9 -4
- package/dist/components/EmptyState/index.d.ts.map +1 -1
- package/dist/components/EmptyState/index.js +8 -6
- package/dist/components/Field/Field.module.scss.cjs +8 -5
- package/dist/components/Field/Field.module.scss.js +8 -5
- package/dist/components/Field/index.cjs +18 -1
- package/dist/components/Field/index.d.ts +9 -2
- package/dist/components/Field/index.d.ts.map +1 -1
- package/dist/components/Field/index.js +18 -1
- package/dist/components/Fieldset/Fieldset.module.scss.cjs +3 -3
- package/dist/components/Fieldset/Fieldset.module.scss.js +3 -3
- package/dist/components/Form/Form.module.scss.cjs +5 -2
- package/dist/components/Form/Form.module.scss.js +5 -2
- package/dist/components/Form/index.cjs +6 -1
- package/dist/components/Form/index.d.ts +8 -3
- package/dist/components/Form/index.d.ts.map +1 -1
- package/dist/components/Form/index.js +6 -1
- package/dist/components/Grid/Grid.module.scss.cjs +54 -72
- package/dist/components/Grid/Grid.module.scss.js +54 -72
- package/dist/components/Grid/index.cjs +57 -77
- package/dist/components/Grid/index.d.ts +11 -11
- package/dist/components/Grid/index.d.ts.map +1 -1
- package/dist/components/Grid/index.js +57 -77
- 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 +18 -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 +18 -38
- package/dist/components/Icon/Icon.module.scss.cjs +29 -8
- package/dist/components/Icon/Icon.module.scss.js +30 -9
- package/dist/components/Icon/index.cjs +30 -48
- package/dist/components/Icon/index.d.ts +6 -6
- package/dist/components/Icon/index.d.ts.map +1 -1
- package/dist/components/Icon/index.js +30 -48
- package/dist/components/IconButton/IconButton.module.scss.cjs +8 -8
- package/dist/components/IconButton/IconButton.module.scss.js +8 -8
- package/dist/components/IconButton/index.cjs +2 -1
- package/dist/components/IconButton/index.d.ts.map +1 -1
- package/dist/components/IconButton/index.js +2 -1
- package/dist/components/Image/Image.module.scss.cjs +27 -27
- package/dist/components/Image/Image.module.scss.js +27 -27
- package/dist/components/Input/Input.module.scss.cjs +19 -25
- package/dist/components/Input/Input.module.scss.js +19 -25
- package/dist/components/Input/index.cjs +1 -2
- package/dist/components/Input/index.d.ts.map +1 -1
- package/dist/components/Input/index.js +1 -2
- package/dist/components/Link/Link.module.scss.cjs +14 -10
- package/dist/components/Link/Link.module.scss.js +14 -10
- package/dist/components/Link/index.d.ts +1 -1
- package/dist/components/Link/index.d.ts.map +1 -1
- package/dist/components/List/List.module.scss.cjs +19 -19
- package/dist/components/List/List.module.scss.js +19 -19
- package/dist/components/List/index.cjs +4 -7
- package/dist/components/List/index.d.ts.map +1 -1
- package/dist/components/List/index.js +4 -7
- package/dist/components/Listbox/Listbox.module.scss.cjs +9 -9
- package/dist/components/Listbox/Listbox.module.scss.js +9 -9
- 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 +39 -67
- package/dist/components/Loading/index.d.ts +6 -6
- package/dist/components/Loading/index.d.ts.map +1 -1
- package/dist/components/Loading/index.js +39 -67
- package/dist/components/Main/Main.module.scss.cjs +7 -7
- package/dist/components/Main/Main.module.scss.js +7 -7
- 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 +16 -16
- package/dist/components/Menu/Menu.module.scss.js +16 -16
- package/dist/components/Menu/index.cjs +19 -61
- package/dist/components/Menu/index.d.ts +10 -10
- package/dist/components/Menu/index.d.ts.map +1 -1
- package/dist/components/Menu/index.js +19 -61
- package/dist/components/Message/Message.module.scss.cjs +18 -21
- package/dist/components/Message/Message.module.scss.js +18 -21
- package/dist/components/Message/index.cjs +15 -2
- package/dist/components/Message/index.d.ts.map +1 -1
- package/dist/components/Message/index.js +15 -2
- 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 +18 -9
- package/dist/components/Pagination/Pagination.module.scss.js +19 -10
- package/dist/components/Pagination/index.cjs +5 -2
- package/dist/components/Pagination/index.d.ts +3 -1
- package/dist/components/Pagination/index.d.ts.map +1 -1
- package/dist/components/Pagination/index.js +5 -2
- 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 +29 -32
- package/dist/components/Progress/Progress.module.scss.js +29 -32
- package/dist/components/Progress/geometry.cjs +30 -0
- package/dist/components/Progress/geometry.d.ts +8 -0
- package/dist/components/Progress/geometry.d.ts.map +1 -0
- package/dist/components/Progress/geometry.js +30 -0
- package/dist/components/Progress/index.cjs +40 -29
- package/dist/components/Progress/index.d.ts +4 -3
- package/dist/components/Progress/index.d.ts.map +1 -1
- package/dist/components/Progress/index.js +40 -29
- package/dist/components/Prompt/Prompt.module.scss.cjs +29 -29
- package/dist/components/Prompt/Prompt.module.scss.js +29 -29
- package/dist/components/Prompt/index.cjs +5 -4
- package/dist/components/Prompt/index.d.ts.map +1 -1
- package/dist/components/Prompt/index.js +5 -4
- package/dist/components/RadioGroup/RadioGroup.module.scss.cjs +15 -21
- package/dist/components/RadioGroup/RadioGroup.module.scss.js +15 -21
- package/dist/components/RadioGroup/index.cjs +7 -6
- package/dist/components/RadioGroup/index.d.ts.map +1 -1
- package/dist/components/RadioGroup/index.js +7 -6
- package/dist/components/ScrollArea/ScrollArea.module.scss.cjs +7 -22
- package/dist/components/ScrollArea/ScrollArea.module.scss.js +7 -22
- package/dist/components/ScrollArea/index.cjs +66 -42
- package/dist/components/ScrollArea/index.d.ts +6 -5
- package/dist/components/ScrollArea/index.d.ts.map +1 -1
- package/dist/components/ScrollArea/index.js +66 -42
- package/dist/components/ScrollArea/scroll-state.cjs +58 -0
- package/dist/components/ScrollArea/scroll-state.d.ts +16 -0
- package/dist/components/ScrollArea/scroll-state.d.ts.map +1 -0
- package/dist/components/ScrollArea/scroll-state.js +58 -0
- 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 +3 -2
- package/dist/components/Select/index.d.ts.map +1 -1
- package/dist/components/Select/index.js +3 -2
- package/dist/components/Separator/Separator.module.scss.cjs +13 -10
- package/dist/components/Separator/Separator.module.scss.js +13 -10
- package/dist/components/Separator/index.cjs +37 -38
- package/dist/components/Separator/index.d.ts +4 -4
- package/dist/components/Separator/index.d.ts.map +1 -1
- package/dist/components/Separator/index.js +37 -38
- 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 +17 -38
- package/dist/components/Sidebar/index.d.ts +23 -18
- package/dist/components/Sidebar/index.d.ts.map +1 -1
- package/dist/components/Sidebar/index.js +17 -38
- package/dist/components/Skeleton/Skeleton.module.scss.cjs +56 -40
- package/dist/components/Skeleton/Skeleton.module.scss.js +56 -40
- package/dist/components/Skeleton/index.cjs +41 -55
- package/dist/components/Skeleton/index.d.ts +7 -7
- package/dist/components/Skeleton/index.d.ts.map +1 -1
- package/dist/components/Skeleton/index.js +41 -55
- 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 -45
- package/dist/components/Stack/Stack.module.scss.js +25 -45
- package/dist/components/Stack/index.cjs +106 -101
- package/dist/components/Stack/index.d.ts +7 -7
- package/dist/components/Stack/index.d.ts.map +1 -1
- package/dist/components/Stack/index.js +106 -101
- package/dist/components/Switch/Switch.module.scss.cjs +32 -0
- package/dist/components/Switch/Switch.module.scss.js +32 -0
- package/dist/components/{Toggle → Switch}/index.cjs +9 -14
- package/dist/components/Switch/index.d.ts +37 -1
- package/dist/components/Switch/index.d.ts.map +1 -1
- package/dist/components/{Toggle → Switch}/index.js +5 -10
- package/dist/components/Table/Table.module.scss.cjs +21 -30
- package/dist/components/Table/Table.module.scss.js +21 -30
- package/dist/components/Table/index.d.ts +6 -5
- package/dist/components/Table/index.d.ts.map +1 -1
- package/dist/components/TableOfContents/TableOfContents.module.scss.cjs +15 -15
- package/dist/components/TableOfContents/TableOfContents.module.scss.js +15 -15
- package/dist/components/TableOfContents/index.cjs +13 -9
- package/dist/components/TableOfContents/index.d.ts +5 -3
- package/dist/components/TableOfContents/index.d.ts.map +1 -1
- package/dist/components/TableOfContents/index.js +13 -9
- package/dist/components/Tabs/Tabs.module.scss.cjs +12 -12
- package/dist/components/Tabs/Tabs.module.scss.js +12 -12
- package/dist/components/Tabs/index.cjs +28 -8
- package/dist/components/Tabs/index.d.ts.map +1 -1
- package/dist/components/Tabs/index.js +28 -8
- package/dist/components/Text/Text.module.scss.cjs +105 -57
- package/dist/components/Text/Text.module.scss.js +105 -57
- package/dist/components/Text/index.cjs +49 -33
- package/dist/components/Text/index.d.ts +30 -19
- package/dist/components/Text/index.d.ts.map +1 -1
- package/dist/components/Text/index.js +49 -33
- package/dist/components/Textarea/Textarea.module.scss.cjs +26 -23
- package/dist/components/Textarea/Textarea.module.scss.js +26 -23
- package/dist/components/Textarea/index.cjs +5 -10
- package/dist/components/Textarea/index.d.ts.map +1 -1
- package/dist/components/Textarea/index.js +5 -10
- package/dist/components/Theme/context.cjs +39 -0
- package/dist/components/Theme/context.d.ts +21 -0
- package/dist/components/Theme/context.d.ts.map +1 -0
- package/dist/components/Theme/context.js +22 -0
- package/dist/components/Theme/index.cjs +16 -210
- package/dist/components/Theme/index.d.ts +4 -37
- package/dist/components/Theme/index.d.ts.map +1 -1
- package/dist/components/Theme/index.js +11 -205
- package/dist/components/{Theme → ThemeToggle}/ThemeToggle.module.scss.cjs +9 -6
- package/dist/components/ThemeToggle/ThemeToggle.module.scss.js +26 -0
- package/dist/components/ThemeToggle/index.cjs +140 -0
- package/dist/components/ThemeToggle/index.d.ts +26 -0
- package/dist/components/ThemeToggle/index.d.ts.map +1 -0
- package/dist/components/ThemeToggle/index.js +140 -0
- package/dist/components/ThinkingIndicator/ThinkingIndicator.module.scss.cjs +13 -13
- package/dist/components/ThinkingIndicator/ThinkingIndicator.module.scss.js +13 -13
- package/dist/components/ThinkingIndicator/index.cjs +34 -41
- package/dist/components/ThinkingIndicator/index.d.ts +4 -4
- package/dist/components/ThinkingIndicator/index.d.ts.map +1 -1
- package/dist/components/ThinkingIndicator/index.js +34 -41
- package/dist/components/Toast/Toast.module.scss.cjs +20 -20
- package/dist/components/Toast/Toast.module.scss.js +20 -20
- package/dist/components/Toggle/index.d.ts +2 -42
- package/dist/components/Toggle/index.d.ts.map +1 -1
- package/dist/components/ToggleGroup/ToggleGroup.module.scss.cjs +20 -20
- package/dist/components/ToggleGroup/ToggleGroup.module.scss.js +20 -20
- package/dist/components/ToggleGroup/index.cjs +3 -2
- package/dist/components/ToggleGroup/index.d.ts +2 -1
- package/dist/components/ToggleGroup/index.d.ts.map +1 -1
- package/dist/components/ToggleGroup/index.js +3 -2
- 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.cjs +14 -10
- package/dist/data-table.js +14 -10
- package/dist/datepicker.cjs +5 -3
- package/dist/datepicker.js +5 -3
- package/dist/editor.cjs +68 -28
- package/dist/editor.js +68 -28
- package/dist/index.cjs +101 -99
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -4
- package/dist/markdown.cjs +21 -29
- package/dist/markdown.js +22 -30
- package/dist/measurements/generated.cjs +304 -0
- package/dist/measurements/generated.d.ts +268 -0
- package/dist/measurements/generated.d.ts.map +1 -0
- package/dist/measurements/generated.js +304 -0
- package/dist/measurements/index.d.ts +2 -0
- package/dist/measurements/index.d.ts.map +1 -0
- package/dist/measurements.cjs +6 -0
- package/dist/measurements.js +6 -0
- package/dist/recipes/popup.cjs +14 -0
- package/dist/recipes/popup.d.ts +4 -0
- package/dist/recipes/popup.d.ts.map +1 -0
- package/dist/recipes/popup.js +14 -0
- package/dist/recipes/table-chrome.cjs +18 -0
- package/dist/recipes/table-chrome.d.ts +10 -0
- package/dist/recipes/table-chrome.d.ts.map +1 -0
- package/dist/recipes/table-chrome.js +18 -0
- package/dist/table.cjs +5 -2
- package/dist/table.js +5 -2
- 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/layout-spacing.cjs +27 -0
- package/dist/utils/layout-spacing.d.ts +5 -0
- package/dist/utils/layout-spacing.d.ts.map +1 -0
- package/dist/utils/layout-spacing.js +27 -0
- package/dist/utils/seed-derivation.cjs +14 -48
- package/dist/utils/seed-derivation.d.ts +4 -3
- package/dist/utils/seed-derivation.d.ts.map +1 -1
- package/dist/utils/seed-derivation.js +14 -48
- package/dist/utils/theme-presets.cjs +1 -0
- package/dist/utils/theme-presets.d.ts +3 -2
- package/dist/utils/theme-presets.d.ts.map +1 -1
- package/dist/utils/theme-presets.js +1 -0
- package/fragments.json +1 -1
- package/package.json +25 -4
- package/src/assets/fragments-logo.tsx +2 -2
- package/src/assets/fragments-wordmark.tsx +4 -2
- package/src/components/Accordion/Accordion.contract.json +24 -48
- package/src/components/Accordion/Accordion.module.scss +31 -52
- package/src/components/Alert/Alert.contract.json +37 -53
- package/src/components/Alert/Alert.module.scss +52 -44
- package/src/components/Alert/index.tsx +55 -29
- package/src/components/AppShell/AppShell.contract.json +34 -51
- package/src/components/AppShell/AppShell.module.scss +59 -43
- package/src/components/AppShell/index.tsx +8 -4
- package/src/components/Avatar/Avatar.contract.json +31 -48
- package/src/components/Avatar/Avatar.module.scss +25 -60
- package/src/components/Avatar/index.tsx +152 -146
- package/src/components/Badge/Badge.contract.json +37 -42
- package/src/components/Badge/Badge.module.scss +59 -47
- package/src/components/BentoGrid/BentoGrid.contract.json +21 -45
- package/src/components/BentoGrid/BentoGrid.module.scss +11 -32
- package/src/components/Box/Box.contract.json +40 -148
- package/src/components/Box/Box.module.scss +253 -81
- package/src/components/Box/index.tsx +92 -99
- package/src/components/Breadcrumbs/Breadcrumbs.contract.json +21 -34
- package/src/components/Breadcrumbs/Breadcrumbs.module.scss +19 -15
- package/src/components/Button/Button.module.scss +60 -64
- package/src/components/ButtonGroup/ButtonGroup.contract.json +32 -47
- package/src/components/ButtonGroup/ButtonGroup.module.scss +5 -5
- package/src/components/Card/Card.consumer-fixture.module.scss +8 -0
- package/src/components/Card/Card.module.scss +284 -167
- package/src/components/Card/index.tsx +21 -2
- package/src/components/Chart/Chart.contract.json +21 -29
- package/src/components/Chart/Chart.module.scss +28 -29
- package/src/components/Chart/index.tsx +72 -55
- package/src/components/Checkbox/Checkbox.contract.json +24 -24
- package/src/components/Checkbox/Checkbox.module.scss +75 -87
- package/src/components/Checkbox/index.tsx +8 -11
- package/src/components/Chip/Chip.contract.json +36 -42
- package/src/components/Chip/Chip.module.scss +25 -36
- package/src/components/Chip/index.tsx +5 -5
- package/src/components/CodeBlock/CodeBlock.contract.json +46 -76
- package/src/components/CodeBlock/CodeBlock.module.scss +129 -217
- package/src/components/CodeBlock/css-variables-theme.ts +102 -0
- package/src/components/CodeBlock/index.tsx +91 -35
- package/src/components/Collapsible/Collapsible.contract.json +21 -36
- package/src/components/Collapsible/Collapsible.module.scss +29 -63
- package/src/components/Collapsible/index.tsx +22 -26
- package/src/components/ColorPicker/ColorPicker.contract.json +29 -48
- package/src/components/ColorPicker/ColorPicker.module.scss +54 -33
- package/src/components/ColorPicker/index.tsx +7 -2
- package/src/components/Combobox/Combobox.contract.json +36 -37
- package/src/components/Combobox/Combobox.module.scss +61 -74
- package/src/components/Combobox/index.tsx +34 -6
- package/src/components/Command/Command.contract.json +21 -43
- package/src/components/Command/Command.module.scss +47 -77
- package/src/components/Command/index.tsx +58 -47
- package/src/components/ConversationList/ConversationList.contract.json +27 -32
- package/src/components/ConversationList/ConversationList.module.scss +20 -78
- package/src/components/ConversationList/index.tsx +55 -59
- package/src/components/DataTable/DataTable.icons.tsx +4 -21
- package/src/components/DataTable/DataTable.module.scss +81 -217
- package/src/components/DataTable/index.tsx +28 -32
- package/src/components/DatePicker/DatePicker.contract.json +27 -28
- package/src/components/DatePicker/DatePicker.module.scss +66 -38
- package/src/components/DatePicker/index.tsx +7 -3
- package/src/components/Dialog/Dialog.module.scss +45 -69
- package/src/components/Dialog/index.tsx +47 -37
- package/src/components/Drawer/Drawer.contract.json +22 -36
- package/src/components/Drawer/Drawer.module.scss +93 -99
- package/src/components/Drawer/index.tsx +1 -1
- package/src/components/Editor/Editor.contract.json +31 -48
- package/src/components/Editor/Editor.module.scss +137 -220
- package/src/components/Editor/index.tsx +240 -179
- package/src/components/EmptyState/EmptyState.contract.json +31 -43
- package/src/components/EmptyState/EmptyState.module.scss +45 -84
- package/src/components/EmptyState/index.tsx +48 -23
- package/src/components/Field/Field.contract.json +28 -45
- package/src/components/Field/Field.module.scss +9 -11
- package/src/components/Field/index.tsx +31 -1
- package/src/components/Fieldset/Fieldset.contract.json +21 -38
- package/src/components/Fieldset/Fieldset.module.scss +23 -8
- package/src/components/Form/Form.contract.json +27 -40
- package/src/components/Form/Form.module.scss +9 -4
- package/src/components/Form/index.tsx +22 -7
- package/src/components/Grid/Grid.contract.json +28 -64
- package/src/components/Grid/Grid.module.scss +159 -63
- package/src/components/Grid/index.tsx +114 -133
- package/src/components/Header/Header.contract.json +31 -67
- package/src/components/Header/Header.module.scss +56 -48
- package/src/components/Header/index.tsx +134 -121
- package/src/components/Icon/Icon.contract.json +22 -62
- package/src/components/Icon/Icon.module.scss +16 -0
- package/src/components/Icon/index.tsx +74 -86
- package/src/components/IconButton/IconButton.contract.json +34 -18
- package/src/components/IconButton/IconButton.module.scss +15 -26
- package/src/components/IconButton/index.tsx +2 -1
- package/src/components/Image/Image.contract.json +23 -56
- package/src/components/Input/Input.contract.json +26 -32
- package/src/components/Input/Input.module.scss +69 -56
- package/src/components/Input/index.tsx +1 -2
- package/src/components/Link/Link.contract.json +32 -52
- package/src/components/Link/Link.module.scss +29 -13
- package/src/components/Link/index.tsx +1 -1
- package/src/components/List/List.contract.json +23 -52
- package/src/components/List/List.module.scss +16 -21
- package/src/components/List/index.tsx +4 -10
- package/src/components/Listbox/Listbox.contract.json +21 -37
- package/src/components/Listbox/Listbox.module.scss +26 -54
- package/src/components/Loading/Loading.contract.json +37 -61
- package/src/components/Loading/Loading.module.scss +33 -40
- package/src/components/Loading/index.tsx +68 -97
- package/src/components/Main/Main.contract.json +17 -9
- package/src/components/Main/Main.module.scss +3 -5
- package/src/components/Markdown/Markdown.contract.json +22 -43
- package/src/components/Markdown/Markdown.module.scss +72 -182
- package/src/components/Markdown/index.tsx +50 -51
- package/src/components/Menu/Menu.contract.json +25 -41
- package/src/components/Menu/Menu.module.scss +63 -133
- package/src/components/Menu/index.tsx +57 -89
- package/src/components/Message/Message.contract.json +29 -52
- package/src/components/Message/Message.module.scss +60 -143
- package/src/components/Message/index.tsx +16 -6
- package/src/components/NavigationMenu/NavigationMenu.contract.json +36 -45
- package/src/components/NavigationMenu/NavigationMenu.module.scss +123 -71
- package/src/components/NavigationMenu/index.tsx +105 -81
- package/src/components/Pagination/Pagination.contract.json +22 -40
- package/src/components/Pagination/Pagination.module.scss +34 -27
- package/src/components/Pagination/index.tsx +7 -2
- package/src/components/Popover/Popover.contract.json +24 -46
- package/src/components/Popover/Popover.module.scss +43 -78
- package/src/components/Progress/Progress.contract.json +32 -28
- package/src/components/Progress/Progress.module.scss +64 -43
- package/src/components/Progress/geometry.ts +41 -0
- package/src/components/Progress/index.tsx +44 -30
- package/src/components/Prompt/Prompt.contract.json +31 -47
- package/src/components/Prompt/Prompt.module.scss +58 -87
- package/src/components/Prompt/index.tsx +6 -5
- package/src/components/RadioGroup/RadioGroup.contract.json +23 -24
- package/src/components/RadioGroup/RadioGroup.module.scss +63 -83
- package/src/components/RadioGroup/index.tsx +7 -9
- package/src/components/ScrollArea/ScrollArea.contract.json +23 -40
- package/src/components/ScrollArea/ScrollArea.module.scss +123 -97
- package/src/components/ScrollArea/index.tsx +85 -67
- package/src/components/ScrollArea/scroll-state.ts +87 -0
- package/src/components/Select/Select.module.scss +55 -43
- package/src/components/Select/index.tsx +6 -2
- package/src/components/Separator/Separator.contract.json +24 -48
- package/src/components/Separator/Separator.module.scss +29 -19
- package/src/components/Separator/index.tsx +55 -51
- package/src/components/Sidebar/Sidebar.contract.json +42 -62
- package/src/components/Sidebar/Sidebar.module.scss +117 -106
- package/src/components/Sidebar/index.tsx +169 -162
- package/src/components/Skeleton/Skeleton.contract.json +28 -54
- package/src/components/Skeleton/Skeleton.module.scss +51 -34
- package/src/components/Skeleton/index.tsx +65 -72
- package/src/components/Slider/Slider.contract.json +27 -39
- package/src/components/Slider/Slider.module.scss +33 -27
- package/src/components/Stack/Stack.contract.json +29 -56
- package/src/components/Stack/Stack.module.scss +110 -38
- package/src/components/Stack/index.tsx +157 -127
- package/src/components/{Toggle/Toggle.contract.json → Switch/Switch.contract.json} +34 -47
- package/src/components/Switch/Switch.module.scss +255 -0
- package/src/components/{Toggle → Switch}/index.tsx +5 -21
- package/src/components/Table/Table.contract.json +28 -46
- package/src/components/Table/Table.module.scss +50 -129
- package/src/components/Table/index.tsx +13 -6
- package/src/components/TableOfContents/TableOfContents.contract.json +34 -21
- package/src/components/TableOfContents/TableOfContents.module.scss +35 -182
- package/src/components/TableOfContents/index.tsx +26 -9
- package/src/components/Tabs/Tabs.contract.json +24 -45
- package/src/components/Tabs/Tabs.module.scss +28 -23
- package/src/components/Tabs/index.tsx +17 -5
- package/src/components/Text/Text.contract.json +30 -72
- package/src/components/Text/Text.module.scss +43 -7
- package/src/components/Text/index.tsx +136 -63
- package/src/components/Textarea/Textarea.contract.json +25 -43
- package/src/components/Textarea/Textarea.module.scss +58 -40
- package/src/components/Textarea/index.tsx +5 -12
- package/src/components/Theme/Theme.contract.json +32 -51
- package/src/components/Theme/context.ts +42 -0
- package/src/components/Theme/index.tsx +16 -310
- package/src/components/ThemeToggle/ThemeToggle.module.scss +89 -0
- package/src/components/ThemeToggle/index.tsx +180 -0
- package/src/components/ThinkingIndicator/ThinkingIndicator.contract.json +23 -40
- package/src/components/ThinkingIndicator/ThinkingIndicator.module.scss +24 -19
- package/src/components/ThinkingIndicator/index.tsx +44 -54
- package/src/components/Toast/Toast.contract.json +35 -61
- package/src/components/Toast/Toast.module.scss +62 -139
- package/src/components/Toggle/index.ts +7 -0
- package/src/components/ToggleGroup/ToggleGroup.contract.json +40 -68
- package/src/components/ToggleGroup/ToggleGroup.module.scss +166 -89
- package/src/components/ToggleGroup/index.tsx +5 -3
- package/src/components/Tooltip/Tooltip.contract.json +31 -52
- package/src/components/Tooltip/Tooltip.module.scss +23 -39
- package/src/components/Tooltip/index.tsx +19 -24
- package/src/components/VisuallyHidden/VisuallyHidden.contract.json +22 -44
- package/src/components/VisuallyHidden/VisuallyHidden.module.scss +3 -0
- package/src/components/VisuallyHidden/index.tsx +5 -5
- package/src/index.ts +4 -3
- package/src/measurements/MeasurementTargets.module.scss +229 -0
- package/src/measurements/generated.ts +324 -0
- package/src/measurements/index.ts +8 -0
- package/src/measurements/measurements.json +368 -0
- package/src/recipes/_action.scss +138 -0
- package/src/recipes/_boolean-range.scss +116 -0
- package/src/recipes/_feedback.scss +171 -0
- package/src/recipes/_field.scss +102 -0
- package/src/recipes/_layout.scss +74 -0
- package/src/recipes/_navigation.scss +110 -0
- package/src/recipes/_overlay.scss +191 -0
- package/src/recipes/_popup.scss +102 -0
- package/src/recipes/_prose.scss +182 -0
- package/src/recipes/_representation.scss +193 -0
- package/src/recipes/_segmented.scss +26 -0
- package/src/recipes/_surface.scss +13 -0
- package/src/recipes/_table-chrome.scss +119 -0
- package/src/recipes/_target.scss +31 -0
- package/src/recipes/_typography.scss +38 -0
- package/src/recipes/popup.ts +12 -0
- package/src/recipes/table-chrome.ts +30 -0
- package/src/scss.d.ts +1 -1
- package/src/styles/globals.scss +21 -20
- package/src/tokens/_component-properties.scss +2 -2
- package/src/tokens/_computed.scss +14 -25
- package/src/tokens/_density.scss +41 -132
- package/src/tokens/_derive.scss +112 -210
- package/src/tokens/_measurements.catalog.generated.css +96 -0
- package/src/tokens/_measurements.generated.scss +617 -0
- package/src/tokens/_mixins.scss +7 -284
- package/src/tokens/_palettes.scss +39 -167
- package/src/tokens/_property-registrations.scss +96 -92
- package/src/tokens/_radius.scss +16 -70
- package/src/tokens/_seeds.scss +24 -23
- package/src/tokens/_variables.scss +338 -178
- 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/layout-spacing.ts +31 -0
- package/src/utils/seed-derivation.ts +144 -178
- package/src/utils/theme-presets.ts +58 -30
- package/dist/components/Theme/ThemeToggle.module.scss.js +0 -23
- package/dist/components/Toggle/Toggle.module.scss.cjs +0 -44
- package/dist/components/Toggle/Toggle.module.scss.js +0 -44
- 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/Switch/index.ts +0 -3
- package/src/components/Theme/ThemeToggle.module.scss +0 -91
- package/src/components/Toggle/Toggle.module.scss +0 -244
|
@@ -6,8 +6,10 @@ import { useState, useCallback, useEffect, useMemo } from "react";
|
|
|
6
6
|
// Lazy-loaded dependency (shiki)
|
|
7
7
|
// ============================================
|
|
8
8
|
|
|
9
|
+
type ShikiThemeInput = string | typeof import("./css-variables-theme").FUI_CSS_VARIABLES_THEME;
|
|
10
|
+
|
|
9
11
|
let _codeToHtml:
|
|
10
|
-
| ((code: string, options: { lang: string; theme:
|
|
12
|
+
| ((code: string, options: { lang: string; theme: ShikiThemeInput }) => Promise<string>)
|
|
11
13
|
| null = null;
|
|
12
14
|
let _shikiLoadPromise: Promise<void> | null = null;
|
|
13
15
|
let _shikiFailed = false;
|
|
@@ -28,7 +30,9 @@ async function loadShikiDeps() {
|
|
|
28
30
|
await _shikiLoadPromise;
|
|
29
31
|
}
|
|
30
32
|
import { TabsRoot, TabsList, Tab, TabsPanel } from "../Tabs";
|
|
33
|
+
import { FUI_CSS_VARIABLES_THEME } from "./css-variables-theme";
|
|
31
34
|
import styles from "./CodeBlock.module.scss";
|
|
35
|
+
import { isDevelopmentBuild, isProductionBuild } from "../../utils/env";
|
|
32
36
|
|
|
33
37
|
export type CodeBlockLanguage =
|
|
34
38
|
| "tsx"
|
|
@@ -76,6 +80,7 @@ const LANGUAGE_ALIASES: Partial<Record<CodeBlockLanguage, string>> = {
|
|
|
76
80
|
|
|
77
81
|
/** Available syntax highlighting themes */
|
|
78
82
|
export type CodeBlockTheme =
|
|
83
|
+
| "css-variables"
|
|
79
84
|
| "synthwave-84"
|
|
80
85
|
| "github-dark"
|
|
81
86
|
| "github-light"
|
|
@@ -95,7 +100,7 @@ export interface CodeBlockProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
|
95
100
|
code: string;
|
|
96
101
|
/** Programming language for syntax highlighting */
|
|
97
102
|
language?: CodeBlockLanguage;
|
|
98
|
-
/** Syntax highlighting theme */
|
|
103
|
+
/** Syntax highlighting theme. Default follows `--fui-code-token-*` via shiki css-variables. */
|
|
99
104
|
theme?: CodeBlockTheme;
|
|
100
105
|
/** Show copy button */
|
|
101
106
|
showCopy?: boolean;
|
|
@@ -125,6 +130,12 @@ export interface CodeBlockProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
|
125
130
|
defaultCollapsed?: boolean;
|
|
126
131
|
/** Number of lines to show when collapsed */
|
|
127
132
|
collapsedLines?: number;
|
|
133
|
+
/**
|
|
134
|
+
* Collapse control copy. `lines` keeps “Show N more lines” / “Show less”
|
|
135
|
+
* (docs prose). `expand` is one right-aligned Expand / Collapse control
|
|
136
|
+
* for preview+code capsules.
|
|
137
|
+
*/
|
|
138
|
+
collapseAction?: "lines" | "expand";
|
|
128
139
|
/** Compact mode with reduced padding */
|
|
129
140
|
compact?: boolean;
|
|
130
141
|
/** Show a persistent copy button (always visible, uses Button component) */
|
|
@@ -547,14 +558,22 @@ function processShikiHtml(html: string, options: ProcessOptions): string {
|
|
|
547
558
|
const lineClass = lineClasses.join(" ");
|
|
548
559
|
const diffMarker = isAdded ? "+" : isRemoved ? "-" : " ";
|
|
549
560
|
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
? `<span class="line-number">${displayLineNum}</span>`
|
|
561
|
+
const lineNumHtml =
|
|
562
|
+
showLineNumbers || hasDiff
|
|
563
|
+
? `${showLineNumbers ? `<span class="line-number">${displayLineNum}</span>` : ""}${
|
|
564
|
+
hasDiff ? `<span class="diff-marker">${diffMarker}</span>` : ""
|
|
565
|
+
}`
|
|
553
566
|
: "";
|
|
554
|
-
|
|
555
|
-
|
|
567
|
+
|
|
568
|
+
// Shiki already wraps each row in <span class="line">; merge into that span
|
|
569
|
+
// instead of nesting a second .line (which breaks the inline-block row layout).
|
|
570
|
+
if (/^<span class="line([^"]*)">/.test(line)) {
|
|
571
|
+
return line.replace(
|
|
572
|
+
/^<span class="line([^"]*)">/,
|
|
573
|
+
`<span class="${lineClass}$1">${lineNumHtml}`
|
|
574
|
+
);
|
|
556
575
|
}
|
|
557
|
-
return `<span class="${lineClass}">${line}</span>`;
|
|
576
|
+
return `<span class="${lineClass}">${lineNumHtml}${line}</span>`;
|
|
558
577
|
});
|
|
559
578
|
|
|
560
579
|
// Reconstruct the HTML
|
|
@@ -565,7 +584,7 @@ const CodeBlockBase = React.forwardRef<HTMLDivElement, CodeBlockProps>(function
|
|
|
565
584
|
{
|
|
566
585
|
code,
|
|
567
586
|
language = "tsx",
|
|
568
|
-
theme = "
|
|
587
|
+
theme = "css-variables",
|
|
569
588
|
showCopy = true,
|
|
570
589
|
title,
|
|
571
590
|
filename,
|
|
@@ -580,6 +599,7 @@ const CodeBlockBase = React.forwardRef<HTMLDivElement, CodeBlockProps>(function
|
|
|
580
599
|
collapsible = false,
|
|
581
600
|
defaultCollapsed = false,
|
|
582
601
|
collapsedLines = 5,
|
|
602
|
+
collapseAction = "lines",
|
|
583
603
|
compact = false,
|
|
584
604
|
persistentCopy = false,
|
|
585
605
|
copyPlacement = "auto",
|
|
@@ -591,7 +611,10 @@ const CodeBlockBase = React.forwardRef<HTMLDivElement, CodeBlockProps>(function
|
|
|
591
611
|
ref
|
|
592
612
|
) {
|
|
593
613
|
const [copied, setCopied] = useState(false);
|
|
594
|
-
const [highlight, setHighlight] = useState<{ html: string; loading: boolean }>({
|
|
614
|
+
const [highlight, setHighlight] = useState<{ html: string; loading: boolean }>({
|
|
615
|
+
html: "",
|
|
616
|
+
loading: true,
|
|
617
|
+
});
|
|
595
618
|
const [isCollapsed, setIsCollapsed] = useState(defaultCollapsed);
|
|
596
619
|
|
|
597
620
|
const trimmedCode = useMemo(() => normalizeCode(code, language), [code, language]);
|
|
@@ -624,7 +647,7 @@ const CodeBlockBase = React.forwardRef<HTMLDivElement, CodeBlockProps>(function
|
|
|
624
647
|
const fallbackHtml = `<pre class="shiki"><code>${escapeHtml(visibleCode)}</code></pre>`;
|
|
625
648
|
|
|
626
649
|
if (_shikiFailed || !_codeToHtml) {
|
|
627
|
-
if (_shikiFailed &&
|
|
650
|
+
if (_shikiFailed && isDevelopmentBuild()) {
|
|
628
651
|
console.warn(
|
|
629
652
|
"[@usefragments/ui] CodeBlock: shiki is not installed. " +
|
|
630
653
|
"Install it with: npm install shiki"
|
|
@@ -635,7 +658,9 @@ const CodeBlockBase = React.forwardRef<HTMLDivElement, CodeBlockProps>(function
|
|
|
635
658
|
|
|
636
659
|
try {
|
|
637
660
|
const resolvedLang = LANGUAGE_ALIASES[language] || language;
|
|
638
|
-
const
|
|
661
|
+
const shikiTheme: ShikiThemeInput =
|
|
662
|
+
theme === "css-variables" ? FUI_CSS_VARIABLES_THEME : theme;
|
|
663
|
+
const html = await _codeToHtml(visibleCode, { lang: resolvedLang, theme: shikiTheme });
|
|
639
664
|
return processShikiHtml(html, {
|
|
640
665
|
showLineNumbers,
|
|
641
666
|
startLineNumber,
|
|
@@ -644,7 +669,7 @@ const CodeBlockBase = React.forwardRef<HTMLDivElement, CodeBlockProps>(function
|
|
|
644
669
|
removedLines: removedSet,
|
|
645
670
|
});
|
|
646
671
|
} catch (err) {
|
|
647
|
-
if (
|
|
672
|
+
if (!isProductionBuild()) {
|
|
648
673
|
console.error("Syntax highlighting failed:", err);
|
|
649
674
|
}
|
|
650
675
|
return fallbackHtml;
|
|
@@ -679,7 +704,7 @@ const CodeBlockBase = React.forwardRef<HTMLDivElement, CodeBlockProps>(function
|
|
|
679
704
|
setTimeout(() => setCopied(false), 2000);
|
|
680
705
|
onCopy?.();
|
|
681
706
|
} catch (err) {
|
|
682
|
-
if (
|
|
707
|
+
if (!isProductionBuild()) {
|
|
683
708
|
console.error("Failed to copy:", err);
|
|
684
709
|
}
|
|
685
710
|
}
|
|
@@ -714,9 +739,13 @@ const CodeBlockBase = React.forwardRef<HTMLDivElement, CodeBlockProps>(function
|
|
|
714
739
|
: undefined;
|
|
715
740
|
|
|
716
741
|
return (
|
|
717
|
-
<div ref={ref} {...htmlProps} className={classNames} data-
|
|
718
|
-
{title &&
|
|
719
|
-
|
|
742
|
+
<div ref={ref} {...htmlProps} className={classNames} data-slot="code-block">
|
|
743
|
+
{title && (
|
|
744
|
+
<div className={styles.title} data-slot="code-block-title">
|
|
745
|
+
{title}
|
|
746
|
+
</div>
|
|
747
|
+
)}
|
|
748
|
+
<div className={wrapperClasses} style={wrapperStyle} data-slot="code-block-frame">
|
|
720
749
|
{shouldRenderHeader && (
|
|
721
750
|
<div className={styles.header}>
|
|
722
751
|
<span className={styles.filename}>{filename ?? ""}</span>
|
|
@@ -773,11 +802,17 @@ const CodeBlockBase = React.forwardRef<HTMLDivElement, CodeBlockProps>(function
|
|
|
773
802
|
<button
|
|
774
803
|
type="button"
|
|
775
804
|
onClick={toggleCollapsed}
|
|
776
|
-
className={
|
|
805
|
+
className={
|
|
806
|
+
collapseAction === "expand"
|
|
807
|
+
? `${styles.collapseButton} ${styles.collapseExpand}`
|
|
808
|
+
: styles.collapseButton
|
|
809
|
+
}
|
|
777
810
|
aria-expanded={!isCollapsed}
|
|
778
811
|
aria-label={isCollapsed ? "Expand code" : "Collapse code"}
|
|
779
812
|
>
|
|
780
|
-
{
|
|
813
|
+
{collapseAction === "expand" ? (
|
|
814
|
+
<span>{isCollapsed ? "Expand" : "Collapse"}</span>
|
|
815
|
+
) : isCollapsed ? (
|
|
781
816
|
<>
|
|
782
817
|
<ChevronDownIcon className={styles.icon} />
|
|
783
818
|
<span>Show {totalLines - collapsedLines} more lines</span>
|
|
@@ -834,6 +869,14 @@ export interface TabbedCodeBlockProps {
|
|
|
834
869
|
wordWrap?: boolean;
|
|
835
870
|
/** Maximum height in pixels (enables scrolling) */
|
|
836
871
|
maxHeight?: number;
|
|
872
|
+
/** Allow collapsing/expanding each tab's code (forwarded to every panel) */
|
|
873
|
+
collapsible?: boolean;
|
|
874
|
+
/** Initial collapsed state (only applies when collapsible is true) */
|
|
875
|
+
defaultCollapsed?: boolean;
|
|
876
|
+
/** Number of lines to show when collapsed */
|
|
877
|
+
collapsedLines?: number;
|
|
878
|
+
/** Forwarded to every panel (see CodeBlock `collapseAction`) */
|
|
879
|
+
collapseAction?: "lines" | "expand";
|
|
837
880
|
/** Additional class name */
|
|
838
881
|
className?: string;
|
|
839
882
|
/** Callback fired when a tab's copy button is clicked. Receives the tab label. */
|
|
@@ -852,6 +895,10 @@ function TabbedCodeBlock({
|
|
|
852
895
|
tabsVariant = "pills",
|
|
853
896
|
wordWrap,
|
|
854
897
|
maxHeight,
|
|
898
|
+
collapsible,
|
|
899
|
+
defaultCollapsed,
|
|
900
|
+
collapsedLines,
|
|
901
|
+
collapseAction,
|
|
855
902
|
className,
|
|
856
903
|
onCopy,
|
|
857
904
|
}: TabbedCodeBlockProps) {
|
|
@@ -864,28 +911,37 @@ function TabbedCodeBlock({
|
|
|
864
911
|
{tabs.map((tab, index) => {
|
|
865
912
|
const tabValue = tab.value ?? tab.label;
|
|
866
913
|
return (
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
914
|
+
<Tab key={`${tabValue}-${index}`} value={tabValue}>
|
|
915
|
+
{tab.label}
|
|
916
|
+
</Tab>
|
|
870
917
|
);
|
|
871
918
|
})}
|
|
872
919
|
</TabsList>
|
|
873
920
|
{tabs.map((tab, index) => {
|
|
874
921
|
const tabValue = tab.value ?? tab.label;
|
|
875
922
|
return (
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
923
|
+
<TabsPanel
|
|
924
|
+
key={`${tabValue}-panel-${index}`}
|
|
925
|
+
value={tabValue}
|
|
926
|
+
flush
|
|
927
|
+
className={styles.tabbedPanel}
|
|
928
|
+
>
|
|
929
|
+
<CodeBlockBase
|
|
930
|
+
code={tab.code}
|
|
931
|
+
language={tab.language}
|
|
932
|
+
theme={theme}
|
|
933
|
+
showCopy={showCopy}
|
|
934
|
+
copyPlacement={copyPlacement}
|
|
935
|
+
showLineNumbers={showLineNumbers}
|
|
936
|
+
wordWrap={wordWrap}
|
|
937
|
+
maxHeight={maxHeight}
|
|
938
|
+
collapsible={collapsible}
|
|
939
|
+
defaultCollapsed={defaultCollapsed}
|
|
940
|
+
collapsedLines={collapsedLines}
|
|
941
|
+
collapseAction={collapseAction}
|
|
942
|
+
onCopy={onCopy ? () => onCopy(tab.label) : undefined}
|
|
943
|
+
/>
|
|
944
|
+
</TabsPanel>
|
|
889
945
|
);
|
|
890
946
|
})}
|
|
891
947
|
</TabsRoot>
|
|
@@ -1,15 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://usefragments.com/schemas/contract.v1.json",
|
|
3
3
|
"name": "Collapsible",
|
|
4
|
-
"description": "
|
|
4
|
+
"description": "Shows or hides one region of content behind a trigger.",
|
|
5
5
|
"category": "layout",
|
|
6
|
-
"tags": [
|
|
7
|
-
"collapsible",
|
|
8
|
-
"expandable",
|
|
9
|
-
"accordion",
|
|
10
|
-
"disclosure",
|
|
11
|
-
"toggle"
|
|
12
|
-
],
|
|
6
|
+
"tags": ["collapsible", "expandable", "accordion", "disclosure", "toggle"],
|
|
13
7
|
"status": "stable",
|
|
14
8
|
"sourcePath": "src/components/Collapsible/index.tsx",
|
|
15
9
|
"exportName": "Collapsible",
|
|
@@ -51,22 +45,21 @@
|
|
|
51
45
|
},
|
|
52
46
|
"usage": {
|
|
53
47
|
"when": [
|
|
54
|
-
"
|
|
55
|
-
"
|
|
56
|
-
"
|
|
57
|
-
"
|
|
58
|
-
"Settings panels with grouped options"
|
|
48
|
+
"Detail most readers do not need",
|
|
49
|
+
"Optional or advanced settings",
|
|
50
|
+
"Navigation sections that fold away",
|
|
51
|
+
"Building a disclosure the other components do not cover"
|
|
59
52
|
],
|
|
60
53
|
"whenNot": [
|
|
61
|
-
"
|
|
62
|
-
"
|
|
63
|
-
"
|
|
54
|
+
"Several sections that should coordinate (use Accordion)",
|
|
55
|
+
"Content that must overlay the page (use Dialog or Popover)",
|
|
56
|
+
"Action lists (use Menu)"
|
|
64
57
|
],
|
|
65
58
|
"guidelines": [
|
|
66
|
-
"
|
|
67
|
-
"
|
|
68
|
-
"Keep trigger
|
|
69
|
-
"
|
|
59
|
+
"The trigger should say what opens, not 'click here'",
|
|
60
|
+
"defaultOpen for content most users want on arrival",
|
|
61
|
+
"Keep the trigger to a short phrase",
|
|
62
|
+
"Keep the chevron direction consistent across the page"
|
|
70
63
|
],
|
|
71
64
|
"accessibility": [
|
|
72
65
|
"Trigger must have aria-expanded to indicate state",
|
|
@@ -78,32 +71,32 @@
|
|
|
78
71
|
"examples": [
|
|
79
72
|
{
|
|
80
73
|
"name": "Default",
|
|
81
|
-
"description": "
|
|
74
|
+
"description": "Starts closed and opens on click.",
|
|
82
75
|
"code": "<Collapsible>\n <Collapsible.Trigger>Click to expand</Collapsible.Trigger>\n <Collapsible.Content>\n <p>This content is hidden by default and revealed when the trigger is clicked.</p>\n </Collapsible.Content>\n</Collapsible>"
|
|
83
76
|
},
|
|
84
77
|
{
|
|
85
78
|
"name": "Default Open",
|
|
86
|
-
"description": "
|
|
79
|
+
"description": "Starts open for content most users want.",
|
|
87
80
|
"code": "<Collapsible defaultOpen>\n <Collapsible.Trigger>Section Title</Collapsible.Trigger>\n <Collapsible.Content>\n <p>This content is visible by default. Click the trigger to collapse.</p>\n </Collapsible.Content>\n</Collapsible>"
|
|
88
81
|
},
|
|
89
82
|
{
|
|
90
83
|
"name": "Chevron Start",
|
|
91
|
-
"description": "
|
|
84
|
+
"description": "Marker leads the label instead of trailing it.",
|
|
92
85
|
"code": "<Collapsible>\n <Collapsible.Trigger chevronPosition=\"start\">Navigation</Collapsible.Trigger>\n <Collapsible.Content>\n <ul style={{ margin: 0, paddingLeft: '1.5rem' }}>\n <li>Dashboard</li>\n <li>Settings</li>\n <li>Profile</li>\n </ul>\n </Collapsible.Content>\n</Collapsible>"
|
|
93
86
|
},
|
|
94
87
|
{
|
|
95
88
|
"name": "No Chevron",
|
|
96
|
-
"description": "
|
|
89
|
+
"description": "Bare trigger when the surrounding layout signals enough.",
|
|
97
90
|
"code": "<Collapsible>\n <Collapsible.Trigger showChevron={false}>Show more details</Collapsible.Trigger>\n <Collapsible.Content>\n <p>Hidden details that appear when triggered.</p>\n </Collapsible.Content>\n</Collapsible>"
|
|
98
91
|
},
|
|
99
92
|
{
|
|
100
93
|
"name": "Disabled",
|
|
101
|
-
"description": "
|
|
94
|
+
"description": "Locked shut and skipped by the keyboard.",
|
|
102
95
|
"code": "<Collapsible disabled>\n <Collapsible.Trigger>Cannot toggle (disabled)</Collapsible.Trigger>\n <Collapsible.Content>\n <p>This content cannot be shown because the collapsible is disabled.</p>\n </Collapsible.Content>\n</Collapsible>"
|
|
103
96
|
},
|
|
104
97
|
{
|
|
105
98
|
"name": "Multiple Sections",
|
|
106
|
-
"description": "
|
|
99
|
+
"description": "Independent regions that ignore each other.",
|
|
107
100
|
"code": "<div style={{ display: 'flex', flexDirection: 'column', gap: '4px' }}>\n <Collapsible defaultOpen>\n <Collapsible.Trigger>Getting Started</Collapsible.Trigger>\n <Collapsible.Content>\n <p>Introduction and setup instructions.</p>\n </Collapsible.Content>\n </Collapsible>\n <Collapsible>\n <Collapsible.Trigger>Advanced Usage</Collapsible.Trigger>\n <Collapsible.Content>\n <p>Advanced configuration options.</p>\n </Collapsible.Content>\n </Collapsible>\n <Collapsible>\n <Collapsible.Trigger>API Reference</Collapsible.Trigger>\n <Collapsible.Content>\n <p>Complete API documentation.</p>\n </Collapsible.Content>\n </Collapsible>\n</div>"
|
|
108
101
|
}
|
|
109
102
|
],
|
|
@@ -131,19 +124,11 @@
|
|
|
131
124
|
"onOpenChange: (open: boolean) => void - state change callback",
|
|
132
125
|
"disabled: boolean - prevents interaction"
|
|
133
126
|
],
|
|
134
|
-
"a11yRules": [
|
|
135
|
-
"A11Y_EXPANDED_STATE",
|
|
136
|
-
"A11Y_REGION_LABEL",
|
|
137
|
-
"A11Y_KEYBOARD_NAV"
|
|
138
|
-
]
|
|
127
|
+
"a11yRules": ["A11Y_EXPANDED_STATE", "A11Y_REGION_LABEL", "A11Y_KEYBOARD_NAV"]
|
|
139
128
|
},
|
|
140
129
|
"ai": {
|
|
141
130
|
"compositionPattern": "compound",
|
|
142
|
-
"subComponents": [
|
|
143
|
-
"Root",
|
|
144
|
-
"Trigger",
|
|
145
|
-
"Content"
|
|
146
|
-
]
|
|
131
|
+
"subComponents": ["Root", "Trigger", "Content"]
|
|
147
132
|
},
|
|
148
133
|
"provenance": {
|
|
149
134
|
"source": "migrated",
|
|
@@ -1,25 +1,22 @@
|
|
|
1
|
-
@use
|
|
2
|
-
@use
|
|
1
|
+
@use "../../tokens/variables" as *;
|
|
2
|
+
@use "../../tokens/mixins" as *;
|
|
3
|
+
@use "../../recipes/feedback" as feedback;
|
|
3
4
|
|
|
4
5
|
.root {
|
|
5
6
|
width: 100%;
|
|
6
7
|
}
|
|
7
8
|
|
|
8
9
|
.trigger {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
border: none;
|
|
10
|
+
@include button-reset;
|
|
11
|
+
@include interactive-base;
|
|
12
|
+
@include feedback.disclosure-row;
|
|
13
|
+
|
|
14
|
+
inline-size: 100%;
|
|
15
15
|
border-radius: var(--fui-radius-md, $fui-radius-md);
|
|
16
16
|
color: var(--fui-text-primary, $fui-text-primary);
|
|
17
|
-
|
|
18
|
-
font-weight: var(--fui-font-weight-medium, $fui-font-weight-medium);
|
|
19
|
-
text-align: left;
|
|
17
|
+
text-align: start;
|
|
20
18
|
cursor: pointer;
|
|
21
19
|
transition: background-color var(--fui-transition-fast, $fui-transition-fast);
|
|
22
|
-
gap: var(--fui-space-2, $fui-space-2);
|
|
23
20
|
|
|
24
21
|
&:hover:not(:disabled) {
|
|
25
22
|
background-color: var(--fui-bg-hover, $fui-bg-hover);
|
|
@@ -37,13 +34,12 @@
|
|
|
37
34
|
|
|
38
35
|
.triggerContent {
|
|
39
36
|
flex: 1;
|
|
40
|
-
min-
|
|
37
|
+
min-inline-size: 0;
|
|
41
38
|
}
|
|
42
39
|
|
|
43
40
|
.chevron {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
height: var(--fui-icon-md, $fui-icon-md);
|
|
41
|
+
@include feedback.disclosure-glyph;
|
|
42
|
+
|
|
47
43
|
color: var(--fui-text-secondary, $fui-text-secondary);
|
|
48
44
|
transition: transform var(--fui-transition-normal, $fui-transition-normal);
|
|
49
45
|
}
|
|
@@ -53,67 +49,37 @@
|
|
|
53
49
|
}
|
|
54
50
|
|
|
55
51
|
.content {
|
|
52
|
+
display: grid;
|
|
53
|
+
grid-template-rows: 0fr;
|
|
56
54
|
overflow: hidden;
|
|
55
|
+
opacity: 0;
|
|
57
56
|
transition:
|
|
58
|
-
|
|
57
|
+
grid-template-rows var(--fui-transition-normal, $fui-transition-normal),
|
|
59
58
|
opacity var(--fui-transition-normal, $fui-transition-normal);
|
|
60
59
|
}
|
|
61
60
|
|
|
62
61
|
.contentOpen {
|
|
63
|
-
|
|
62
|
+
grid-template-rows: 1fr;
|
|
64
63
|
opacity: 1;
|
|
65
64
|
}
|
|
66
65
|
|
|
67
|
-
.contentClosed {
|
|
68
|
-
max-height: 0;
|
|
69
|
-
opacity: 0;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
66
|
.contentInner {
|
|
73
|
-
|
|
74
|
-
}
|
|
67
|
+
@include feedback.disclosure-panel;
|
|
75
68
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
cursor: not-allowed;
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
// Animation variant using CSS animation instead of max-height
|
|
84
|
-
// Can be used with forceMount for smoother animations
|
|
85
|
-
.root[data-animated='true'] {
|
|
86
|
-
// Duration + easing come from --fui-transition-normal (matches the
|
|
87
|
-
// max-height/opacity transition above); fill-mode keeps the end state.
|
|
88
|
-
.contentOpen {
|
|
89
|
-
animation: collapsibleSlideDown var(--fui-transition-normal, $fui-transition-normal)
|
|
90
|
-
forwards;
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
.contentClosed {
|
|
94
|
-
animation: collapsibleSlideUp var(--fui-transition-normal, $fui-transition-normal)
|
|
95
|
-
forwards;
|
|
96
|
-
}
|
|
69
|
+
min-block-size: 0;
|
|
70
|
+
overflow: hidden;
|
|
71
|
+
color: var(--fui-text-secondary, $fui-text-secondary);
|
|
97
72
|
}
|
|
98
73
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
opacity: 0;
|
|
103
|
-
}
|
|
104
|
-
to {
|
|
105
|
-
max-height: var(--collapsible-content-height, 2000px);
|
|
106
|
-
opacity: 1;
|
|
107
|
-
}
|
|
74
|
+
.disabled .trigger {
|
|
75
|
+
opacity: 0.5;
|
|
76
|
+
cursor: not-allowed;
|
|
108
77
|
}
|
|
109
78
|
|
|
110
|
-
@
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
to {
|
|
116
|
-
max-height: 0;
|
|
117
|
-
opacity: 0;
|
|
79
|
+
@media (prefers-reduced-motion: reduce) {
|
|
80
|
+
.trigger,
|
|
81
|
+
.chevron,
|
|
82
|
+
.content {
|
|
83
|
+
transition: none;
|
|
118
84
|
}
|
|
119
85
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
"use client";
|
|
2
2
|
|
|
3
|
-
import React, { useState, useCallback, useId, createContext, useContext } from
|
|
4
|
-
import styles from
|
|
3
|
+
import React, { useState, useCallback, useId, createContext, useContext } from "react";
|
|
4
|
+
import styles from "./Collapsible.module.scss";
|
|
5
5
|
|
|
6
6
|
function composeEventHandlers<E extends { defaultPrevented: boolean }>(
|
|
7
7
|
userHandler: ((event: E) => void) | undefined,
|
|
@@ -28,7 +28,7 @@ const CollapsibleContext = createContext<CollapsibleContextValue | null>(null);
|
|
|
28
28
|
function useCollapsibleContext() {
|
|
29
29
|
const context = useContext(CollapsibleContext);
|
|
30
30
|
if (!context) {
|
|
31
|
-
throw new Error(
|
|
31
|
+
throw new Error("Collapsible compound components must be used within Collapsible.Root");
|
|
32
32
|
}
|
|
33
33
|
return context;
|
|
34
34
|
}
|
|
@@ -89,8 +89,8 @@ function CollapsibleRoot({
|
|
|
89
89
|
<CollapsibleContext.Provider value={contextValue}>
|
|
90
90
|
<div
|
|
91
91
|
{...htmlProps}
|
|
92
|
-
className={`${styles.root} ${isOpen ? styles.open :
|
|
93
|
-
data-state={isOpen ?
|
|
92
|
+
className={`${styles.root} ${isOpen ? styles.open : ""} ${disabled ? styles.disabled : ""} ${className || ""}`}
|
|
93
|
+
data-state={isOpen ? "open" : "closed"}
|
|
94
94
|
data-disabled={disabled || undefined}
|
|
95
95
|
>
|
|
96
96
|
{children}
|
|
@@ -105,7 +105,7 @@ export interface CollapsibleTriggerProps extends React.ButtonHTMLAttributes<HTML
|
|
|
105
105
|
/** Show chevron indicator */
|
|
106
106
|
showChevron?: boolean;
|
|
107
107
|
/** Chevron position */
|
|
108
|
-
chevronPosition?:
|
|
108
|
+
chevronPosition?: "start" | "end";
|
|
109
109
|
/** Render as child element (for custom triggers) */
|
|
110
110
|
asChild?: boolean;
|
|
111
111
|
}
|
|
@@ -114,7 +114,7 @@ function CollapsibleTrigger({
|
|
|
114
114
|
children,
|
|
115
115
|
className,
|
|
116
116
|
showChevron = true,
|
|
117
|
-
chevronPosition =
|
|
117
|
+
chevronPosition = "end",
|
|
118
118
|
asChild = false,
|
|
119
119
|
onClick,
|
|
120
120
|
onKeyDown,
|
|
@@ -123,7 +123,7 @@ function CollapsibleTrigger({
|
|
|
123
123
|
const { isOpen, toggle, contentId, triggerId, disabled } = useCollapsibleContext();
|
|
124
124
|
|
|
125
125
|
const handleKeyDown = (e: React.KeyboardEvent) => {
|
|
126
|
-
if (e.key ===
|
|
126
|
+
if (e.key === "Enter" || e.key === " ") {
|
|
127
127
|
e.preventDefault();
|
|
128
128
|
toggle();
|
|
129
129
|
}
|
|
@@ -135,7 +135,7 @@ function CollapsibleTrigger({
|
|
|
135
135
|
|
|
136
136
|
const chevronIcon = showChevron && (
|
|
137
137
|
<svg
|
|
138
|
-
className={`${styles.chevron} ${isOpen ? styles.chevronOpen :
|
|
138
|
+
className={`${styles.chevron} ${isOpen ? styles.chevronOpen : ""}`}
|
|
139
139
|
viewBox="0 0 16 16"
|
|
140
140
|
fill="none"
|
|
141
141
|
aria-hidden="true"
|
|
@@ -160,9 +160,9 @@ function CollapsibleTrigger({
|
|
|
160
160
|
return React.cloneElement(children as React.ReactElement<any>, {
|
|
161
161
|
...htmlProps,
|
|
162
162
|
id: (htmlProps.id as string | undefined) ?? triggerId,
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
163
|
+
"aria-expanded": isOpen,
|
|
164
|
+
"aria-controls": contentId,
|
|
165
|
+
"aria-disabled": disabled || undefined,
|
|
166
166
|
onClick: composeEventHandlers(
|
|
167
167
|
(event: React.MouseEvent<HTMLElement>) => {
|
|
168
168
|
childProps.onClick?.(event);
|
|
@@ -177,7 +177,7 @@ function CollapsibleTrigger({
|
|
|
177
177
|
},
|
|
178
178
|
(event) => handleKeyDown(event as unknown as React.KeyboardEvent)
|
|
179
179
|
),
|
|
180
|
-
className: [className, childProps.className].filter(Boolean).join(
|
|
180
|
+
className: [styles.trigger, className, childProps.className].filter(Boolean).join(" "),
|
|
181
181
|
});
|
|
182
182
|
}
|
|
183
183
|
|
|
@@ -186,7 +186,7 @@ function CollapsibleTrigger({
|
|
|
186
186
|
{...htmlProps}
|
|
187
187
|
type="button"
|
|
188
188
|
id={(htmlProps.id as string | undefined) ?? triggerId}
|
|
189
|
-
className={`${styles.trigger} ${className ||
|
|
189
|
+
className={`${styles.trigger} ${className || ""}`}
|
|
190
190
|
aria-expanded={isOpen}
|
|
191
191
|
aria-controls={contentId}
|
|
192
192
|
aria-disabled={disabled || undefined}
|
|
@@ -194,9 +194,9 @@ function CollapsibleTrigger({
|
|
|
194
194
|
onKeyDown={composeEventHandlers(onKeyDown, handleKeyDown)}
|
|
195
195
|
disabled={disabled}
|
|
196
196
|
>
|
|
197
|
-
{chevronPosition ===
|
|
197
|
+
{chevronPosition === "start" && chevronIcon}
|
|
198
198
|
<span className={styles.triggerContent}>{children}</span>
|
|
199
|
-
{chevronPosition ===
|
|
199
|
+
{chevronPosition === "end" && chevronIcon}
|
|
200
200
|
</button>
|
|
201
201
|
);
|
|
202
202
|
}
|
|
@@ -227,9 +227,10 @@ function CollapsibleContent({
|
|
|
227
227
|
id={(htmlProps.id as string | undefined) ?? contentId}
|
|
228
228
|
role="region"
|
|
229
229
|
aria-labelledby={triggerId}
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
230
|
+
aria-hidden={!isOpen || undefined}
|
|
231
|
+
inert={!isOpen || undefined}
|
|
232
|
+
className={`${styles.content} ${isOpen ? styles.contentOpen : styles.contentClosed} ${className || ""}`}
|
|
233
|
+
data-state={isOpen ? "open" : "closed"}
|
|
233
234
|
>
|
|
234
235
|
<div className={styles.contentInner}>{children}</div>
|
|
235
236
|
</div>
|
|
@@ -244,11 +245,6 @@ export const Collapsible = Object.assign(CollapsibleRoot, {
|
|
|
244
245
|
});
|
|
245
246
|
|
|
246
247
|
// Named exports for direct imports
|
|
247
|
-
export {
|
|
248
|
-
CollapsibleRoot,
|
|
249
|
-
CollapsibleTrigger,
|
|
250
|
-
CollapsibleContent,
|
|
251
|
-
useCollapsibleContext,
|
|
252
|
-
};
|
|
248
|
+
export { CollapsibleRoot, CollapsibleTrigger, CollapsibleContent, useCollapsibleContext };
|
|
253
249
|
|
|
254
250
|
export type CollapsibleProps = CollapsibleRootProps;
|