@fragments-sdk/ui 0.12.0 → 0.14.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/dist/assets/ui.css +1642 -1679
- package/dist/chart.cjs.map +1 -1
- package/dist/chart.js.map +1 -1
- package/dist/codeblock.cjs +26 -18
- package/dist/codeblock.cjs.map +1 -1
- package/dist/codeblock.js +26 -18
- package/dist/codeblock.js.map +1 -1
- package/dist/components/Accordion/Accordion.module.scss.cjs +8 -8
- package/dist/components/Accordion/Accordion.module.scss.js +8 -8
- package/dist/components/Accordion/index.cjs +17 -6
- package/dist/components/Accordion/index.cjs.map +1 -1
- package/dist/components/Accordion/index.d.ts +25 -12
- package/dist/components/Accordion/index.d.ts.map +1 -1
- package/dist/components/Accordion/index.js +17 -6
- package/dist/components/Accordion/index.js.map +1 -1
- package/dist/components/Alert/Alert.module.scss.cjs +12 -12
- package/dist/components/Alert/Alert.module.scss.js +12 -12
- package/dist/components/Alert/index.cjs +37 -15
- package/dist/components/Alert/index.cjs.map +1 -1
- package/dist/components/Alert/index.d.ts +15 -22
- package/dist/components/Alert/index.d.ts.map +1 -1
- package/dist/components/Alert/index.js +37 -15
- package/dist/components/Alert/index.js.map +1 -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 +3 -1
- package/dist/components/AppShell/index.cjs.map +1 -1
- package/dist/components/AppShell/index.d.ts.map +1 -1
- package/dist/components/AppShell/index.js +3 -1
- package/dist/components/AppShell/index.js.map +1 -1
- package/dist/components/Avatar/index.cjs +9 -1
- package/dist/components/Avatar/index.cjs.map +1 -1
- package/dist/components/Avatar/index.d.ts +2 -0
- package/dist/components/Avatar/index.d.ts.map +1 -1
- package/dist/components/Avatar/index.js +9 -1
- package/dist/components/Avatar/index.js.map +1 -1
- package/dist/components/Badge/index.cjs +4 -2
- package/dist/components/Badge/index.cjs.map +1 -1
- package/dist/components/Badge/index.d.ts +3 -0
- package/dist/components/Badge/index.d.ts.map +1 -1
- package/dist/components/Badge/index.js +4 -2
- package/dist/components/Badge/index.js.map +1 -1
- package/dist/components/BentoGrid/BentoGrid.module.scss.cjs +11 -11
- package/dist/components/BentoGrid/BentoGrid.module.scss.js +11 -11
- package/dist/components/BentoGrid/index.cjs +8 -5
- package/dist/components/BentoGrid/index.cjs.map +1 -1
- package/dist/components/BentoGrid/index.d.ts +2 -8
- package/dist/components/BentoGrid/index.d.ts.map +1 -1
- package/dist/components/BentoGrid/index.js +8 -5
- package/dist/components/BentoGrid/index.js.map +1 -1
- package/dist/components/Box/index.cjs +12 -2
- package/dist/components/Box/index.cjs.map +1 -1
- package/dist/components/Box/index.d.ts +1 -1
- package/dist/components/Box/index.d.ts.map +1 -1
- package/dist/components/Box/index.js +12 -2
- package/dist/components/Box/index.js.map +1 -1
- package/dist/components/Breadcrumbs/index.cjs +3 -1
- package/dist/components/Breadcrumbs/index.cjs.map +1 -1
- package/dist/components/Breadcrumbs/index.d.ts +3 -1
- package/dist/components/Breadcrumbs/index.d.ts.map +1 -1
- package/dist/components/Breadcrumbs/index.js +3 -1
- package/dist/components/Breadcrumbs/index.js.map +1 -1
- package/dist/components/Button/Button.module.scss.cjs +11 -11
- package/dist/components/Button/Button.module.scss.js +11 -11
- package/dist/components/Button/index.cjs +5 -2
- package/dist/components/Button/index.cjs.map +1 -1
- package/dist/components/Button/index.d.ts +3 -3
- package/dist/components/Button/index.d.ts.map +1 -1
- package/dist/components/Button/index.js +5 -2
- package/dist/components/Button/index.js.map +1 -1
- package/dist/components/ButtonGroup/index.cjs +3 -2
- package/dist/components/ButtonGroup/index.cjs.map +1 -1
- package/dist/components/ButtonGroup/index.d.ts +1 -2
- package/dist/components/ButtonGroup/index.d.ts.map +1 -1
- package/dist/components/ButtonGroup/index.js +3 -2
- package/dist/components/ButtonGroup/index.js.map +1 -1
- package/dist/components/Card/Card.module.scss.cjs +14 -14
- package/dist/components/Card/Card.module.scss.js +14 -14
- package/dist/components/Card/index.cjs +3 -22
- package/dist/components/Card/index.cjs.map +1 -1
- package/dist/components/Card/index.d.ts +6 -11
- package/dist/components/Card/index.d.ts.map +1 -1
- package/dist/components/Card/index.js +3 -22
- package/dist/components/Card/index.js.map +1 -1
- 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 +3 -3
- package/dist/components/Chart/index.d.ts.map +1 -1
- package/dist/components/Checkbox/Checkbox.module.scss.cjs +10 -10
- package/dist/components/Checkbox/Checkbox.module.scss.js +10 -10
- package/dist/components/Checkbox/index.cjs +11 -4
- package/dist/components/Checkbox/index.cjs.map +1 -1
- package/dist/components/Checkbox/index.d.ts +6 -0
- package/dist/components/Checkbox/index.d.ts.map +1 -1
- package/dist/components/Checkbox/index.js +11 -4
- package/dist/components/Checkbox/index.js.map +1 -1
- package/dist/components/Chip/index.cjs +11 -3
- package/dist/components/Chip/index.cjs.map +1 -1
- package/dist/components/Chip/index.d.ts +1 -2
- package/dist/components/Chip/index.d.ts.map +1 -1
- package/dist/components/Chip/index.js +11 -3
- package/dist/components/Chip/index.js.map +1 -1
- package/dist/components/CodeBlock/CodeBlock.module.scss.cjs +20 -20
- package/dist/components/CodeBlock/CodeBlock.module.scss.js +20 -20
- package/dist/components/CodeBlock/index.d.ts +8 -2
- package/dist/components/CodeBlock/index.d.ts.map +1 -1
- package/dist/components/Collapsible/Collapsible.module.scss.cjs +10 -10
- package/dist/components/Collapsible/Collapsible.module.scss.js +10 -10
- package/dist/components/Collapsible/index.cjs +45 -10
- package/dist/components/Collapsible/index.cjs.map +1 -1
- package/dist/components/Collapsible/index.d.ts +6 -12
- package/dist/components/Collapsible/index.d.ts.map +1 -1
- package/dist/components/Collapsible/index.js +45 -10
- package/dist/components/Collapsible/index.js.map +1 -1
- package/dist/components/Combobox/Combobox.module.scss.cjs +15 -15
- package/dist/components/Combobox/Combobox.module.scss.js +15 -15
- package/dist/components/Combobox/index.cjs +86 -27
- package/dist/components/Combobox/index.cjs.map +1 -1
- package/dist/components/Combobox/index.d.ts +40 -23
- package/dist/components/Combobox/index.d.ts.map +1 -1
- package/dist/components/Combobox/index.js +86 -27
- package/dist/components/Combobox/index.js.map +1 -1
- package/dist/components/Command/Command.module.scss.cjs +11 -11
- package/dist/components/Command/Command.module.scss.js +11 -11
- package/dist/components/Command/index.cjs +55 -22
- package/dist/components/Command/index.cjs.map +1 -1
- package/dist/components/Command/index.d.ts +3 -3
- package/dist/components/Command/index.d.ts.map +1 -1
- package/dist/components/Command/index.js +55 -22
- package/dist/components/Command/index.js.map +1 -1
- 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 +6 -3
- package/dist/components/ConversationList/index.cjs.map +1 -1
- package/dist/components/ConversationList/index.d.ts +1 -1
- package/dist/components/ConversationList/index.d.ts.map +1 -1
- package/dist/components/ConversationList/index.js +6 -3
- package/dist/components/ConversationList/index.js.map +1 -1
- package/dist/components/DataTable/DataTable.module.scss.cjs +26 -26
- package/dist/components/DataTable/DataTable.module.scss.js +26 -26
- package/dist/components/DataTable/index.cjs +25 -4
- package/dist/components/DataTable/index.cjs.map +1 -1
- package/dist/components/DataTable/index.d.ts +7 -2
- package/dist/components/DataTable/index.d.ts.map +1 -1
- package/dist/components/DataTable/index.js +25 -4
- package/dist/components/DataTable/index.js.map +1 -1
- package/dist/components/DatePicker/DatePicker.module.scss.cjs +26 -26
- package/dist/components/DatePicker/DatePicker.module.scss.js +26 -26
- package/dist/components/DatePicker/index.d.ts +4 -5
- 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 +14 -10
- package/dist/components/Dialog/index.cjs.map +1 -1
- package/dist/components/Dialog/index.d.ts +26 -17
- package/dist/components/Dialog/index.d.ts.map +1 -1
- package/dist/components/Dialog/index.js +14 -10
- package/dist/components/Dialog/index.js.map +1 -1
- package/dist/components/Drawer/Drawer.module.scss.cjs +26 -26
- package/dist/components/Drawer/Drawer.module.scss.js +26 -26
- package/dist/components/Drawer/index.cjs +41 -11
- package/dist/components/Drawer/index.cjs.map +1 -1
- package/dist/components/Drawer/index.d.ts +11 -13
- package/dist/components/Drawer/index.d.ts.map +1 -1
- package/dist/components/Drawer/index.js +24 -11
- package/dist/components/Drawer/index.js.map +1 -1
- 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.cjs +32 -7
- package/dist/components/Editor/index.cjs.map +1 -1
- package/dist/components/Editor/index.d.ts +16 -3
- package/dist/components/Editor/index.d.ts.map +1 -1
- package/dist/components/Editor/index.js +32 -7
- package/dist/components/Editor/index.js.map +1 -1
- package/dist/components/EmptyState/EmptyState.module.scss.cjs +8 -8
- package/dist/components/EmptyState/EmptyState.module.scss.js +8 -8
- package/dist/components/EmptyState/index.cjs +12 -8
- package/dist/components/EmptyState/index.cjs.map +1 -1
- package/dist/components/EmptyState/index.d.ts +8 -12
- package/dist/components/EmptyState/index.d.ts.map +1 -1
- package/dist/components/EmptyState/index.js +12 -8
- package/dist/components/EmptyState/index.js.map +1 -1
- package/dist/components/Fieldset/index.cjs +2 -2
- package/dist/components/Fieldset/index.cjs.map +1 -1
- package/dist/components/Fieldset/index.d.ts +2 -3
- package/dist/components/Fieldset/index.d.ts.map +1 -1
- package/dist/components/Fieldset/index.js +2 -2
- package/dist/components/Fieldset/index.js.map +1 -1
- package/dist/components/Form/index.cjs +13 -13
- package/dist/components/Form/index.cjs.map +1 -1
- package/dist/components/Form/index.d.ts +5 -2
- package/dist/components/Form/index.d.ts.map +1 -1
- package/dist/components/Form/index.js +13 -13
- package/dist/components/Form/index.js.map +1 -1
- package/dist/components/Grid/Grid.module.scss.cjs +57 -57
- package/dist/components/Grid/Grid.module.scss.js +57 -57
- package/dist/components/Grid/index.cjs +7 -4
- package/dist/components/Grid/index.cjs.map +1 -1
- package/dist/components/Grid/index.d.ts +5 -3
- package/dist/components/Grid/index.d.ts.map +1 -1
- package/dist/components/Grid/index.js +7 -4
- package/dist/components/Grid/index.js.map +1 -1
- package/dist/components/Header/Header.module.scss.cjs +21 -21
- package/dist/components/Header/Header.module.scss.js +21 -21
- package/dist/components/Header/index.cjs +61 -23
- package/dist/components/Header/index.cjs.map +1 -1
- package/dist/components/Header/index.d.ts +27 -34
- package/dist/components/Header/index.d.ts.map +1 -1
- package/dist/components/Header/index.js +61 -23
- package/dist/components/Header/index.js.map +1 -1
- package/dist/components/Icon/index.cjs +11 -1
- package/dist/components/Icon/index.cjs.map +1 -1
- package/dist/components/Icon/index.d.ts +28 -9
- package/dist/components/Icon/index.d.ts.map +1 -1
- package/dist/components/Icon/index.js +11 -1
- package/dist/components/Icon/index.js.map +1 -1
- package/dist/components/Image/index.cjs +15 -4
- package/dist/components/Image/index.cjs.map +1 -1
- package/dist/components/Image/index.d.ts +7 -1
- package/dist/components/Image/index.d.ts.map +1 -1
- package/dist/components/Image/index.js +15 -4
- package/dist/components/Image/index.js.map +1 -1
- package/dist/components/Input/Input.module.scss.cjs +13 -13
- package/dist/components/Input/Input.module.scss.js +13 -13
- package/dist/components/Input/index.cjs +79 -31
- package/dist/components/Input/index.cjs.map +1 -1
- package/dist/components/Input/index.d.ts +17 -3
- package/dist/components/Input/index.d.ts.map +1 -1
- package/dist/components/Input/index.js +79 -31
- package/dist/components/Input/index.js.map +1 -1
- package/dist/components/Link/index.cjs +17 -0
- package/dist/components/Link/index.cjs.map +1 -1
- package/dist/components/Link/index.d.ts.map +1 -1
- package/dist/components/Link/index.js +17 -0
- package/dist/components/Link/index.js.map +1 -1
- package/dist/components/Listbox/Listbox.module.scss.cjs +8 -8
- package/dist/components/Listbox/Listbox.module.scss.js +8 -8
- package/dist/components/Listbox/index.cjs +10 -6
- package/dist/components/Listbox/index.cjs.map +1 -1
- package/dist/components/Listbox/index.d.ts +2 -2
- package/dist/components/Listbox/index.d.ts.map +1 -1
- package/dist/components/Listbox/index.js +10 -6
- package/dist/components/Listbox/index.js.map +1 -1
- package/dist/components/Markdown/Markdown.module.scss.cjs +1 -1
- package/dist/components/Markdown/Markdown.module.scss.js +1 -1
- package/dist/components/Markdown/index.d.ts +4 -2
- package/dist/components/Markdown/index.d.ts.map +1 -1
- package/dist/components/Menu/Menu.module.scss.cjs +13 -13
- package/dist/components/Menu/Menu.module.scss.js +13 -13
- package/dist/components/Menu/index.cjs +41 -16
- package/dist/components/Menu/index.cjs.map +1 -1
- package/dist/components/Menu/index.d.ts +24 -27
- package/dist/components/Menu/index.d.ts.map +1 -1
- package/dist/components/Menu/index.js +41 -16
- package/dist/components/Menu/index.js.map +1 -1
- package/dist/components/Message/Message.module.scss.cjs +18 -18
- package/dist/components/Message/Message.module.scss.js +18 -18
- package/dist/components/NavigationMenu/NavigationMenu.module.scss.cjs +28 -28
- package/dist/components/NavigationMenu/NavigationMenu.module.scss.js +28 -28
- package/dist/components/NavigationMenu/NavigationMenuContext.cjs.map +1 -1
- package/dist/components/NavigationMenu/NavigationMenuContext.d.ts +9 -0
- package/dist/components/NavigationMenu/NavigationMenuContext.d.ts.map +1 -1
- package/dist/components/NavigationMenu/NavigationMenuContext.js.map +1 -1
- package/dist/components/NavigationMenu/index.cjs +92 -21
- package/dist/components/NavigationMenu/index.cjs.map +1 -1
- package/dist/components/NavigationMenu/index.d.ts +5 -1
- package/dist/components/NavigationMenu/index.d.ts.map +1 -1
- package/dist/components/NavigationMenu/index.js +92 -21
- package/dist/components/NavigationMenu/index.js.map +1 -1
- package/dist/components/NavigationMenu/useNavigationMenu.cjs +2 -0
- package/dist/components/NavigationMenu/useNavigationMenu.cjs.map +1 -1
- package/dist/components/NavigationMenu/useNavigationMenu.d.ts +1 -0
- package/dist/components/NavigationMenu/useNavigationMenu.d.ts.map +1 -1
- package/dist/components/NavigationMenu/useNavigationMenu.js +2 -0
- package/dist/components/NavigationMenu/useNavigationMenu.js.map +1 -1
- package/dist/components/Pagination/index.cjs +37 -9
- package/dist/components/Pagination/index.cjs.map +1 -1
- package/dist/components/Pagination/index.d.ts +2 -3
- package/dist/components/Pagination/index.d.ts.map +1 -1
- package/dist/components/Pagination/index.js +37 -9
- package/dist/components/Pagination/index.js.map +1 -1
- package/dist/components/Popover/Popover.module.scss.cjs +10 -10
- package/dist/components/Popover/Popover.module.scss.js +10 -10
- package/dist/components/Popover/index.cjs +52 -10
- package/dist/components/Popover/index.cjs.map +1 -1
- package/dist/components/Popover/index.d.ts +22 -16
- package/dist/components/Popover/index.d.ts.map +1 -1
- package/dist/components/Popover/index.js +35 -10
- package/dist/components/Popover/index.js.map +1 -1
- package/dist/components/Progress/index.cjs +3 -1
- package/dist/components/Progress/index.cjs.map +1 -1
- package/dist/components/Progress/index.d.ts.map +1 -1
- package/dist/components/Progress/index.js +3 -1
- package/dist/components/Progress/index.js.map +1 -1
- package/dist/components/Prompt/Prompt.module.scss.cjs +14 -14
- package/dist/components/Prompt/Prompt.module.scss.js +14 -14
- package/dist/components/Prompt/index.cjs +14 -2
- package/dist/components/Prompt/index.cjs.map +1 -1
- package/dist/components/Prompt/index.d.ts +8 -5
- package/dist/components/Prompt/index.d.ts.map +1 -1
- package/dist/components/Prompt/index.js +14 -2
- package/dist/components/Prompt/index.js.map +1 -1
- package/dist/components/RadioGroup/index.cjs +14 -6
- package/dist/components/RadioGroup/index.cjs.map +1 -1
- package/dist/components/RadioGroup/index.d.ts +12 -2
- package/dist/components/RadioGroup/index.d.ts.map +1 -1
- package/dist/components/RadioGroup/index.js +14 -6
- package/dist/components/RadioGroup/index.js.map +1 -1
- package/dist/components/Select/Select.module.scss.cjs +10 -10
- package/dist/components/Select/Select.module.scss.js +10 -10
- package/dist/components/Select/index.cjs +43 -29
- package/dist/components/Select/index.cjs.map +1 -1
- package/dist/components/Select/index.d.ts +12 -11
- package/dist/components/Select/index.d.ts.map +1 -1
- package/dist/components/Select/index.js +43 -29
- package/dist/components/Select/index.js.map +1 -1
- package/dist/components/Sidebar/Sidebar.module.scss.cjs +42 -42
- package/dist/components/Sidebar/Sidebar.module.scss.js +42 -42
- package/dist/components/Sidebar/index.cjs +73 -26
- package/dist/components/Sidebar/index.cjs.map +1 -1
- package/dist/components/Sidebar/index.d.ts +23 -35
- package/dist/components/Sidebar/index.d.ts.map +1 -1
- package/dist/components/Sidebar/index.js +73 -26
- package/dist/components/Sidebar/index.js.map +1 -1
- package/dist/components/Skeleton/index.cjs +6 -3
- package/dist/components/Skeleton/index.cjs.map +1 -1
- package/dist/components/Skeleton/index.d.ts +3 -7
- package/dist/components/Skeleton/index.d.ts.map +1 -1
- package/dist/components/Skeleton/index.js +6 -3
- package/dist/components/Skeleton/index.js.map +1 -1
- package/dist/components/Slider/Slider.module.scss.cjs +13 -10
- package/dist/components/Slider/Slider.module.scss.cjs.map +1 -1
- package/dist/components/Slider/Slider.module.scss.js +13 -10
- package/dist/components/Slider/Slider.module.scss.js.map +1 -1
- package/dist/components/Slider/index.cjs +33 -1
- package/dist/components/Slider/index.cjs.map +1 -1
- package/dist/components/Slider/index.d.ts +2 -0
- package/dist/components/Slider/index.d.ts.map +1 -1
- package/dist/components/Slider/index.js +33 -1
- package/dist/components/Slider/index.js.map +1 -1
- package/dist/components/Stack/index.cjs +12 -2
- package/dist/components/Stack/index.cjs.map +1 -1
- package/dist/components/Stack/index.d.ts +3 -2
- package/dist/components/Stack/index.d.ts.map +1 -1
- package/dist/components/Stack/index.js +12 -2
- package/dist/components/Stack/index.js.map +1 -1
- package/dist/components/Table/Table.module.scss.cjs +16 -16
- package/dist/components/Table/Table.module.scss.js +16 -16
- package/dist/components/Table/index.d.ts +10 -4
- package/dist/components/Table/index.d.ts.map +1 -1
- package/dist/components/TableOfContents/index.cjs +8 -5
- package/dist/components/TableOfContents/index.cjs.map +1 -1
- package/dist/components/TableOfContents/index.d.ts +2 -2
- package/dist/components/TableOfContents/index.d.ts.map +1 -1
- package/dist/components/TableOfContents/index.js +8 -5
- package/dist/components/TableOfContents/index.js.map +1 -1
- package/dist/components/Tabs/Tabs.module.scss.cjs +9 -9
- package/dist/components/Tabs/Tabs.module.scss.js +9 -9
- package/dist/components/Tabs/index.cjs +9 -6
- package/dist/components/Tabs/index.cjs.map +1 -1
- package/dist/components/Tabs/index.d.ts +4 -1
- package/dist/components/Tabs/index.d.ts.map +1 -1
- package/dist/components/Tabs/index.js +9 -6
- package/dist/components/Tabs/index.js.map +1 -1
- package/dist/components/Textarea/index.cjs +61 -43
- package/dist/components/Textarea/index.cjs.map +1 -1
- package/dist/components/Textarea/index.d.ts +9 -1
- package/dist/components/Textarea/index.d.ts.map +1 -1
- package/dist/components/Textarea/index.js +61 -43
- package/dist/components/Textarea/index.js.map +1 -1
- package/dist/components/Theme/index.cjs +3 -1
- package/dist/components/Theme/index.cjs.map +1 -1
- package/dist/components/Theme/index.d.ts +2 -4
- package/dist/components/Theme/index.d.ts.map +1 -1
- package/dist/components/Theme/index.js +3 -1
- package/dist/components/Theme/index.js.map +1 -1
- package/dist/components/ThinkingIndicator/ThinkingIndicator.module.scss.cjs +22 -22
- package/dist/components/ThinkingIndicator/ThinkingIndicator.module.scss.js +22 -22
- package/dist/components/Toast/Toast.module.scss.cjs +20 -20
- package/dist/components/Toast/Toast.module.scss.js +20 -20
- package/dist/components/Toast/index.cjs +15 -14
- package/dist/components/Toast/index.cjs.map +1 -1
- package/dist/components/Toast/index.d.ts +9 -5
- package/dist/components/Toast/index.d.ts.map +1 -1
- package/dist/components/Toast/index.js +15 -14
- package/dist/components/Toast/index.js.map +1 -1
- package/dist/components/Toggle/Toggle.module.scss.cjs +11 -11
- package/dist/components/Toggle/Toggle.module.scss.js +11 -11
- package/dist/components/Toggle/index.cjs +1 -1
- package/dist/components/Toggle/index.cjs.map +1 -1
- package/dist/components/Toggle/index.js +1 -1
- package/dist/components/Toggle/index.js.map +1 -1
- package/dist/components/ToggleGroup/ToggleGroup.module.scss.cjs +17 -17
- package/dist/components/ToggleGroup/ToggleGroup.module.scss.js +17 -17
- package/dist/components/ToggleGroup/index.cjs +27 -8
- package/dist/components/ToggleGroup/index.cjs.map +1 -1
- package/dist/components/ToggleGroup/index.d.ts +8 -3
- package/dist/components/ToggleGroup/index.d.ts.map +1 -1
- package/dist/components/ToggleGroup/index.js +27 -8
- package/dist/components/ToggleGroup/index.js.map +1 -1
- 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 +32 -10
- package/dist/components/Tooltip/index.cjs.map +1 -1
- package/dist/components/Tooltip/index.d.ts +3 -1
- package/dist/components/Tooltip/index.d.ts.map +1 -1
- package/dist/components/Tooltip/index.js +32 -10
- package/dist/components/Tooltip/index.js.map +1 -1
- package/dist/components/VisuallyHidden/index.cjs +10 -2
- package/dist/components/VisuallyHidden/index.cjs.map +1 -1
- package/dist/components/VisuallyHidden/index.d.ts +1 -1
- package/dist/components/VisuallyHidden/index.d.ts.map +1 -1
- package/dist/components/VisuallyHidden/index.js +10 -2
- package/dist/components/VisuallyHidden/index.js.map +1 -1
- package/dist/datepicker.cjs +32 -11
- package/dist/datepicker.cjs.map +1 -1
- package/dist/datepicker.js +32 -11
- package/dist/datepicker.js.map +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/markdown.cjs +5 -5
- package/dist/markdown.cjs.map +1 -1
- package/dist/markdown.js +5 -5
- package/dist/markdown.js.map +1 -1
- package/dist/table.cjs +19 -3
- package/dist/table.cjs.map +1 -1
- package/dist/table.js +19 -3
- package/dist/table.js.map +1 -1
- package/fragments.json +1 -1
- package/package.json +2 -2
- package/src/blocks/AccountSettings.block.ts +1 -1
- package/src/blocks/ActivityFeed.block.ts +1 -1
- package/src/blocks/ActivityFeedSkeleton.block.ts +1 -1
- package/src/blocks/BlogEditor.block.ts +1 -1
- package/src/blocks/ChatInterface.block.ts +1 -1
- package/src/blocks/ChatMessages.block.ts +1 -1
- package/src/blocks/CheckoutForm.block.ts +1 -1
- package/src/blocks/CommandPalette.block.ts +1 -1
- package/src/blocks/ContactForm.block.ts +1 -1
- package/src/blocks/DashboardLayout.block.ts +1 -1
- package/src/blocks/DashboardPage.block.ts +1 -1
- package/src/blocks/DashboardSkeleton.block.ts +1 -1
- package/src/blocks/DataTable.block.ts +1 -1
- package/src/blocks/EmptyState.block.ts +1 -1
- package/src/blocks/FAQSection.block.ts +1 -1
- package/src/blocks/FeatureGrid.block.ts +1 -1
- package/src/blocks/HeroSection.block.ts +1 -1
- package/src/blocks/LoginForm.block.ts +1 -1
- package/src/blocks/NavigationHeader.block.ts +1 -1
- package/src/blocks/PaginatedTable.block.ts +1 -1
- package/src/blocks/PricingComparison.block.ts +1 -1
- package/src/blocks/ProductCard.block.ts +1 -1
- package/src/blocks/RegistrationForm.block.ts +1 -1
- package/src/blocks/SettingsDrawer.block.ts +1 -1
- package/src/blocks/SettingsPanel.block.ts +1 -1
- package/src/blocks/ShoppingCart.block.ts +1 -1
- package/src/blocks/StatsCard.block.ts +1 -1
- package/src/blocks/StatsCardSkeleton.block.ts +1 -1
- package/src/blocks/TableSkeleton.block.ts +1 -1
- package/src/blocks/ThinkingStates.block.ts +1 -1
- package/src/components/Accordion/Accordion.fragment.tsx +7 -7
- package/src/components/Accordion/Accordion.module.scss +2 -2
- package/src/components/Accordion/Accordion.test.tsx +41 -5
- package/src/components/Accordion/index.tsx +41 -14
- package/src/components/Alert/Alert.fragment.tsx +5 -1
- package/src/components/Alert/Alert.module.scss +1 -1
- package/src/components/Alert/Alert.test.tsx +25 -0
- package/src/components/Alert/index.tsx +49 -30
- package/src/components/AppShell/AppShell.fragment.tsx +1 -1
- package/src/components/AppShell/AppShell.module.scss +5 -5
- package/src/components/AppShell/AppShell.test.tsx +12 -0
- package/src/components/AppShell/index.tsx +2 -0
- package/src/components/Avatar/Avatar.fragment.tsx +7 -1
- package/src/components/Avatar/Avatar.test.tsx +24 -2
- package/src/components/Avatar/index.tsx +13 -1
- package/src/components/Badge/Badge.fragment.tsx +16 -1
- package/src/components/Badge/Badge.test.tsx +8 -1
- package/src/components/Badge/index.tsx +7 -2
- package/src/components/BentoGrid/BentoGrid.fragment.tsx +3 -1
- package/src/components/BentoGrid/BentoGrid.module.scss +52 -16
- package/src/components/BentoGrid/BentoGrid.test.tsx +20 -0
- package/src/components/BentoGrid/index.tsx +9 -12
- package/src/components/Box/Box.fragment.tsx +3 -1
- package/src/components/Box/Box.test.tsx +14 -0
- package/src/components/Box/index.tsx +8 -2
- package/src/components/Breadcrumbs/Breadcrumbs.fragment.tsx +19 -1
- package/src/components/Breadcrumbs/Breadcrumbs.test.tsx +13 -0
- package/src/components/Breadcrumbs/index.tsx +5 -1
- package/src/components/Button/Button.fragment.tsx +28 -6
- package/src/components/Button/Button.module.scss +3 -3
- package/src/components/Button/Button.test.tsx +11 -0
- package/src/components/Button/index.tsx +16 -6
- package/src/components/ButtonGroup/ButtonGroup.fragment.tsx +4 -2
- package/src/components/ButtonGroup/ButtonGroup.test.tsx +10 -0
- package/src/components/ButtonGroup/index.tsx +3 -3
- package/src/components/Card/Card.fragment.tsx +24 -9
- package/src/components/Card/Card.module.scss +8 -8
- package/src/components/Card/Card.test.tsx +4 -5
- package/src/components/Card/index.tsx +8 -38
- package/src/components/Chart/Chart.fragment.tsx +5 -3
- package/src/components/Chart/Chart.module.scss +1 -1
- package/src/components/Chart/index.tsx +12 -10
- package/src/components/Checkbox/Checkbox.fragment.tsx +27 -1
- package/src/components/Checkbox/Checkbox.module.scss +3 -3
- package/src/components/Checkbox/index.tsx +16 -3
- package/src/components/Chip/Chip.fragment.tsx +20 -3
- package/src/components/Chip/Chip.test.tsx +28 -0
- package/src/components/Chip/index.tsx +14 -6
- package/src/components/CodeBlock/CodeBlock.fragment.tsx +3 -1
- package/src/components/CodeBlock/CodeBlock.module.scss +9 -9
- package/src/components/CodeBlock/CodeBlock.test.tsx +21 -0
- package/src/components/CodeBlock/index.tsx +23 -9
- package/src/components/Collapsible/Collapsible.fragment.tsx +1 -1
- package/src/components/Collapsible/Collapsible.module.scss +1 -1
- package/src/components/Collapsible/Collapsible.test.tsx +41 -0
- package/src/components/Collapsible/index.tsx +53 -16
- package/src/components/ColorPicker/ColorPicker.fragment.tsx +1 -1
- package/src/components/Combobox/Combobox.fragment.tsx +63 -9
- package/src/components/Combobox/Combobox.module.scss +4 -7
- package/src/components/Combobox/Combobox.test.tsx +79 -3
- package/src/components/Combobox/index.tsx +140 -51
- package/src/components/Command/Command.fragment.tsx +3 -3
- package/src/components/Command/Command.module.scss +5 -5
- package/src/components/Command/Command.test.tsx +110 -0
- package/src/components/Command/index.tsx +66 -20
- package/src/components/ConversationList/ConversationList.fragment.tsx +4 -3
- package/src/components/ConversationList/ConversationList.module.scss +5 -5
- package/src/components/ConversationList/ConversationList.test.tsx +21 -0
- package/src/components/ConversationList/index.tsx +8 -4
- package/src/components/DataTable/DataTable.fragment.tsx +12 -2
- package/src/components/DataTable/DataTable.module.scss +3 -3
- package/src/components/DataTable/DataTable.test.tsx +34 -4
- package/src/components/DataTable/index.tsx +44 -6
- package/src/components/DatePicker/DatePicker.fragment.tsx +3 -1
- package/src/components/DatePicker/DatePicker.module.scss +1 -1
- package/src/components/DatePicker/DatePicker.test.tsx +96 -0
- package/src/components/DatePicker/index.tsx +38 -16
- package/src/components/Dialog/Dialog.fragment.tsx +28 -1
- package/src/components/Dialog/Dialog.module.scss +6 -6
- package/src/components/Dialog/Dialog.test.tsx +23 -0
- package/src/components/Dialog/index.tsx +38 -21
- package/src/components/Drawer/Drawer.fragment.tsx +4 -1
- package/src/components/Drawer/Drawer.module.scss +3 -3
- package/src/components/Drawer/Drawer.test.tsx +35 -0
- package/src/components/Drawer/index.tsx +29 -18
- package/src/components/Editor/Editor.fragment.tsx +10 -3
- package/src/components/Editor/Editor.module.scss +4 -4
- package/src/components/Editor/Editor.test.tsx +68 -1
- package/src/components/Editor/index.tsx +60 -9
- package/src/components/EmptyState/EmptyState.fragment.tsx +3 -1
- package/src/components/EmptyState/EmptyState.module.scss +3 -3
- package/src/components/EmptyState/EmptyState.test.tsx +18 -0
- package/src/components/EmptyState/index.tsx +16 -16
- package/src/components/Field/Field.fragment.tsx +1 -1
- package/src/components/Fieldset/Fieldset.fragment.tsx +3 -1
- package/src/components/Fieldset/Fieldset.test.tsx +14 -0
- package/src/components/Fieldset/index.tsx +3 -4
- package/src/components/Form/Form.fragment.tsx +12 -7
- package/src/components/Form/index.tsx +13 -17
- package/src/components/Grid/Grid.fragment.tsx +4 -3
- package/src/components/Grid/Grid.module.scss +3 -3
- package/src/components/Grid/index.tsx +11 -6
- package/src/components/Header/Header.fragment.tsx +31 -1
- package/src/components/Header/Header.module.scss +6 -6
- package/src/components/Header/Header.test.tsx +95 -1
- package/src/components/Header/index.tsx +95 -46
- package/src/components/Icon/Icon.fragment.tsx +21 -8
- package/src/components/Icon/Icon.test.tsx +27 -3
- package/src/components/Icon/index.tsx +39 -15
- package/src/components/Image/Image.fragment.tsx +15 -1
- package/src/components/Image/Image.test.tsx +32 -1
- package/src/components/Image/index.tsx +24 -4
- package/src/components/Input/Input.fragment.tsx +49 -1
- package/src/components/Input/Input.module.scss +4 -2
- package/src/components/Input/Input.test.tsx +3 -3
- package/src/components/Input/index.tsx +103 -37
- package/src/components/Link/Link.fragment.tsx +7 -6
- package/src/components/Link/Link.test.tsx +17 -1
- package/src/components/Link/index.tsx +22 -0
- package/src/components/List/List.fragment.tsx +1 -1
- package/src/components/Listbox/Listbox.fragment.tsx +3 -3
- package/src/components/Listbox/Listbox.module.scss +4 -4
- package/src/components/Listbox/Listbox.test.tsx +14 -0
- package/src/components/Listbox/index.tsx +12 -2
- package/src/components/Loading/Loading.fragment.tsx +1 -1
- package/src/components/Markdown/Markdown.fragment.tsx +5 -3
- package/src/components/Markdown/Markdown.module.scss +5 -5
- package/src/components/Markdown/Markdown.test.tsx +6 -0
- package/src/components/Markdown/index.tsx +12 -9
- package/src/components/Menu/Menu.fragment.tsx +19 -1
- package/src/components/Menu/Menu.module.scss +11 -11
- package/src/components/Menu/index.tsx +50 -33
- package/src/components/Message/Message.fragment.tsx +1 -1
- package/src/components/Message/Message.module.scss +3 -3
- package/src/components/NavigationMenu/NavigationMenu.fragment.tsx +10 -2
- package/src/components/NavigationMenu/NavigationMenu.module.scss +7 -7
- package/src/components/NavigationMenu/NavigationMenu.test.tsx +88 -4
- package/src/components/NavigationMenu/NavigationMenuContext.ts +17 -0
- package/src/components/NavigationMenu/index.tsx +119 -20
- package/src/components/NavigationMenu/useNavigationMenu.ts +4 -0
- package/src/components/Pagination/Pagination.fragment.tsx +4 -1
- package/src/components/Pagination/Pagination.test.tsx +39 -0
- package/src/components/Pagination/index.tsx +36 -10
- package/src/components/Popover/Popover.fragment.tsx +18 -1
- package/src/components/Popover/Popover.module.scss +13 -13
- package/src/components/Popover/Popover.test.tsx +23 -0
- package/src/components/Popover/index.tsx +44 -22
- package/src/components/Progress/Progress.fragment.tsx +3 -1
- package/src/components/Progress/Progress.test.tsx +8 -0
- package/src/components/Progress/index.tsx +9 -1
- package/src/components/Prompt/Prompt.fragment.tsx +4 -1
- package/src/components/Prompt/Prompt.module.scss +3 -3
- package/src/components/Prompt/Prompt.test.tsx +19 -0
- package/src/components/Prompt/index.tsx +24 -6
- package/src/components/RadioGroup/RadioGroup.fragment.tsx +31 -1
- package/src/components/RadioGroup/index.tsx +22 -3
- package/src/components/ScrollArea/ScrollArea.fragment.tsx +1 -1
- package/src/components/Select/Select.fragment.tsx +30 -3
- package/src/components/Select/Select.module.scss +3 -3
- package/src/components/Select/Select.test.tsx +41 -0
- package/src/components/Select/index.tsx +55 -44
- package/src/components/Separator/Separator.fragment.tsx +1 -1
- package/src/components/Sidebar/Sidebar.fragment.tsx +3 -1
- package/src/components/Sidebar/Sidebar.module.scss +20 -20
- package/src/components/Sidebar/Sidebar.test.tsx +108 -4
- package/src/components/Sidebar/index.tsx +93 -51
- package/src/components/Skeleton/Skeleton.fragment.tsx +3 -1
- package/src/components/Skeleton/Skeleton.test.tsx +12 -0
- package/src/components/Skeleton/index.tsx +6 -7
- package/src/components/Slider/Slider.fragment.tsx +21 -1
- package/src/components/Slider/Slider.module.scss +31 -0
- package/src/components/Slider/Slider.test.tsx +16 -0
- package/src/components/Slider/index.tsx +40 -1
- package/src/components/Stack/Stack.fragment.tsx +3 -1
- package/src/components/Stack/index.tsx +13 -6
- package/src/components/Table/Table.fragment.tsx +43 -2
- package/src/components/Table/Table.module.scss +2 -2
- package/src/components/Table/index.tsx +23 -5
- package/src/components/TableOfContents/TableOfContents.fragment.tsx +4 -2
- package/src/components/TableOfContents/TableOfContents.test.tsx +34 -9
- package/src/components/TableOfContents/index.tsx +9 -5
- package/src/components/Tabs/Tabs.fragment.tsx +33 -8
- package/src/components/Tabs/Tabs.module.scss +8 -8
- package/src/components/Tabs/index.tsx +22 -14
- package/src/components/Text/Text.fragment.tsx +1 -1
- package/src/components/Textarea/Textarea.fragment.tsx +27 -1
- package/src/components/Textarea/index.tsx +39 -14
- package/src/components/Theme/Theme.fragment.tsx +3 -1
- package/src/components/Theme/Theme.test.tsx +11 -0
- package/src/components/Theme/index.tsx +3 -3
- package/src/components/ThinkingIndicator/ThinkingIndicator.fragment.tsx +1 -1
- package/src/components/ThinkingIndicator/ThinkingIndicator.module.scss +1 -1
- package/src/components/Toast/Toast.fragment.tsx +6 -3
- package/src/components/Toast/Toast.module.scss +8 -6
- package/src/components/Toast/index.tsx +24 -20
- package/src/components/Toggle/Toggle.fragment.tsx +1 -1
- package/src/components/Toggle/Toggle.module.scss +61 -21
- package/src/components/Toggle/index.tsx +3 -3
- package/src/components/ToggleGroup/ToggleGroup.fragment.tsx +33 -8
- package/src/components/ToggleGroup/ToggleGroup.module.scss +3 -3
- package/src/components/ToggleGroup/index.tsx +29 -9
- package/src/components/Tooltip/Tooltip.fragment.tsx +16 -1
- package/src/components/Tooltip/Tooltip.module.scss +1 -1
- package/src/components/Tooltip/Tooltip.test.tsx +17 -0
- package/src/components/Tooltip/index.tsx +60 -31
- package/src/components/VisuallyHidden/VisuallyHidden.fragment.tsx +3 -1
- package/src/components/VisuallyHidden/VisuallyHidden.test.tsx +12 -0
- package/src/components/VisuallyHidden/index.tsx +7 -3
- package/src/index.ts +3 -2
- package/src/tokens/_computed.scss +1 -19
- package/src/tokens/_density.scss +0 -42
- package/src/tokens/_mixins.scss +4 -0
- package/src/tokens/_variables.scss +12 -114
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../../src/components/Slider/index.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { Field } from '@base-ui/react/field';\nimport { Slider as BaseSlider } from '@base-ui/react/slider';\nimport styles from './Slider.module.scss';\n\n/**\n * Range slider for selecting a numeric value within a defined range.\n * @see https://usefragments.com/components/slider\n */\nexport interface SliderProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange' | 'defaultValue'> {\n /** Visible label text */\n label?: string;\n /** Controlled value */\n value?: number;\n /** Default value for uncontrolled usage */\n defaultValue?: number;\n /** Called when the slider value changes */\n onChange?: (value: number) => void;\n /** Alias for onChange (Radix convention) */\n onValueChange?: (value: number) => void;\n min?: number;\n max?: number;\n step?: number;\n showValue?: boolean;\n valueSuffix?: string;\n disabled?: boolean;\n name?: string;\n /** Accessible label when visible label is omitted */\n 'aria-label'?: string;\n /** Accessible labelled-by relationship */\n 'aria-labelledby'?: string;\n /** Accessible described-by relationship */\n 'aria-describedby'?: string;\n}\n\nconst SliderRoot = React.forwardRef<HTMLDivElement, SliderProps>(\n function Slider(\n {\n label,\n value,\n defaultValue,\n onChange,\n onValueChange,\n min = 0,\n max = 100,\n step = 1,\n showValue = false,\n valueSuffix = '',\n disabled = false,\n className,\n name,\n id,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n 'aria-describedby': ariaDescribedBy,\n ...htmlProps\n },\n ref\n ) {\n // For controlled component, use value; otherwise track internal state for display\n const [internalValue, setInternalValue] = React.useState(defaultValue ?? min);\n const displayValue = value !== undefined ? value : internalValue;\n\n const resolvedOnChange = onChange ?? onValueChange;\n const handleChange = (newValue: number | number[]) => {\n const val = Array.isArray(newValue) ? newValue[0] : newValue;\n setInternalValue(val);\n resolvedOnChange?.(val);\n };\n\n return (\n <Field.Root {...htmlProps} disabled={disabled} className={[styles.wrapper, className].filter(Boolean).join(' ')}>\n {(label || showValue) && (\n <div className={styles.header}>\n {label && <Field.Label className={styles.label}>{label}</Field.Label>}\n {showValue && (\n <span className={styles.value}>\n {displayValue}{valueSuffix}\n </span>\n )}\n </div>\n )}\n <BaseSlider.Root\n ref={ref}\n value={value !== undefined ? [value] : undefined}\n defaultValue={defaultValue !== undefined ? [defaultValue] : undefined}\n onValueChange={handleChange}\n min={min}\n max={max}\n step={step}\n disabled={disabled}\n name={name}\n id={id}\n aria-label={ariaLabel || (label ? undefined : 'Slider')}\n aria-labelledby={ariaLabelledBy}\n aria-describedby={ariaDescribedBy}\n className={styles.root}\n >\n <BaseSlider.Control className={styles.control}>\n <BaseSlider.Track className={styles.track}>\n <BaseSlider.Indicator className={styles.indicator} />\n <BaseSlider.Thumb
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../src/components/Slider/index.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { Field } from '@base-ui/react/field';\nimport { Slider as BaseSlider } from '@base-ui/react/slider';\nimport styles from './Slider.module.scss';\n\n/**\n * Range slider for selecting a numeric value within a defined range.\n * @see https://usefragments.com/components/slider\n */\nexport interface SliderProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange' | 'defaultValue'> {\n /** Visible label text */\n label?: string;\n /** Controlled value */\n value?: number;\n /** Default value for uncontrolled usage */\n defaultValue?: number;\n /** Called when the slider value changes */\n onChange?: (value: number) => void;\n /** Alias for onChange (Radix convention) */\n onValueChange?: (value: number) => void;\n min?: number;\n max?: number;\n step?: number;\n showValue?: boolean;\n /** Show a value bubble above the thumb while dragging */\n showValueOnDrag?: boolean;\n valueSuffix?: string;\n disabled?: boolean;\n name?: string;\n /** Accessible label when visible label is omitted */\n 'aria-label'?: string;\n /** Accessible labelled-by relationship */\n 'aria-labelledby'?: string;\n /** Accessible described-by relationship */\n 'aria-describedby'?: string;\n}\n\nconst SliderRoot = React.forwardRef<HTMLDivElement, SliderProps>(\n function Slider(\n {\n label,\n value,\n defaultValue,\n onChange,\n onValueChange,\n min = 0,\n max = 100,\n step = 1,\n showValue = false,\n showValueOnDrag = false,\n valueSuffix = '',\n disabled = false,\n className,\n name,\n id,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n 'aria-describedby': ariaDescribedBy,\n ...htmlProps\n },\n ref\n ) {\n // For controlled component, use value; otherwise track internal state for display\n const [internalValue, setInternalValue] = React.useState(defaultValue ?? min);\n const [isDragging, setIsDragging] = React.useState(false);\n const displayValue = value !== undefined ? value : internalValue;\n\n const resolvedOnChange = onChange ?? onValueChange;\n const handleChange = (newValue: number | number[]) => {\n const val = Array.isArray(newValue) ? newValue[0] : newValue;\n setInternalValue(val);\n resolvedOnChange?.(val);\n };\n\n const handleDragStart = () => {\n if (!disabled && showValueOnDrag) {\n setIsDragging(true);\n }\n };\n\n React.useEffect(() => {\n if (!isDragging) return;\n\n const handlePointerEnd = () => setIsDragging(false);\n window.addEventListener('pointerup', handlePointerEnd);\n window.addEventListener('pointercancel', handlePointerEnd);\n\n return () => {\n window.removeEventListener('pointerup', handlePointerEnd);\n window.removeEventListener('pointercancel', handlePointerEnd);\n };\n }, [isDragging]);\n\n React.useEffect(() => {\n if (disabled && isDragging) {\n setIsDragging(false);\n }\n }, [disabled, isDragging]);\n\n return (\n <Field.Root {...htmlProps} disabled={disabled} className={[styles.wrapper, className].filter(Boolean).join(' ')}>\n {(label || showValue) && (\n <div className={styles.header}>\n {label && <Field.Label className={styles.label}>{label}</Field.Label>}\n {showValue && (\n <span className={styles.value}>\n {displayValue}{valueSuffix}\n </span>\n )}\n </div>\n )}\n <BaseSlider.Root\n ref={ref}\n value={value !== undefined ? [value] : undefined}\n defaultValue={defaultValue !== undefined ? [defaultValue] : undefined}\n onValueChange={handleChange}\n min={min}\n max={max}\n step={step}\n disabled={disabled}\n name={name}\n id={id}\n aria-label={ariaLabel || (label ? undefined : 'Slider')}\n aria-labelledby={ariaLabelledBy}\n aria-describedby={ariaDescribedBy}\n className={styles.root}\n onPointerDownCapture={handleDragStart}\n >\n <BaseSlider.Control className={styles.control}>\n <BaseSlider.Track className={styles.track}>\n <BaseSlider.Indicator className={styles.indicator} />\n <BaseSlider.Thumb\n className={styles.thumb}\n >\n {showValueOnDrag && isDragging && (\n <span className={styles.dragValueBubble} aria-hidden=\"true\">\n {displayValue}\n {valueSuffix}\n </span>\n )}\n </BaseSlider.Thumb>\n </BaseSlider.Track>\n </BaseSlider.Control>\n </BaseSlider.Root>\n </Field.Root>\n );\n }\n);\n\nexport const Slider = Object.assign(SliderRoot, {\n Root: SliderRoot,\n});\n"],"names":["React","Slider","Field","styles","jsxs","jsx","BaseSlider"],"mappings":"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"}
|
|
@@ -18,6 +18,8 @@ export interface SliderProps extends Omit<React.HTMLAttributes<HTMLDivElement>,
|
|
|
18
18
|
max?: number;
|
|
19
19
|
step?: number;
|
|
20
20
|
showValue?: boolean;
|
|
21
|
+
/** Show a value bubble above the thumb while dragging */
|
|
22
|
+
showValueOnDrag?: boolean;
|
|
21
23
|
valueSuffix?: string;
|
|
22
24
|
disabled?: boolean;
|
|
23
25
|
name?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Slider/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B;;;GAGG;AACH,MAAM,WAAW,WAAY,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,GAAG,cAAc,CAAC;IAC1G,yBAAyB;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uBAAuB;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2CAA2C;IAC3C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,4CAA4C;IAC5C,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qDAAqD;IACrD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,0CAA0C;IAC1C,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,2CAA2C;IAC3C,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Slider/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B;;;GAGG;AACH,MAAM,WAAW,WAAY,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,GAAG,cAAc,CAAC;IAC1G,yBAAyB;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uBAAuB;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2CAA2C;IAC3C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,4CAA4C;IAC5C,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,yDAAyD;IACzD,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qDAAqD;IACrD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,0CAA0C;IAC1C,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,2CAA2C;IAC3C,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAkHD,eAAO,MAAM,MAAM;;CAEjB,CAAC"}
|
|
@@ -14,6 +14,7 @@ const SliderRoot = React.forwardRef(
|
|
|
14
14
|
max = 100,
|
|
15
15
|
step = 1,
|
|
16
16
|
showValue = false,
|
|
17
|
+
showValueOnDrag = false,
|
|
17
18
|
valueSuffix = "",
|
|
18
19
|
disabled = false,
|
|
19
20
|
className,
|
|
@@ -25,6 +26,7 @@ const SliderRoot = React.forwardRef(
|
|
|
25
26
|
...htmlProps
|
|
26
27
|
}, ref) {
|
|
27
28
|
const [internalValue, setInternalValue] = React.useState(defaultValue ?? min);
|
|
29
|
+
const [isDragging, setIsDragging] = React.useState(false);
|
|
28
30
|
const displayValue = value !== void 0 ? value : internalValue;
|
|
29
31
|
const resolvedOnChange = onChange ?? onValueChange;
|
|
30
32
|
const handleChange = (newValue) => {
|
|
@@ -32,6 +34,26 @@ const SliderRoot = React.forwardRef(
|
|
|
32
34
|
setInternalValue(val);
|
|
33
35
|
resolvedOnChange == null ? void 0 : resolvedOnChange(val);
|
|
34
36
|
};
|
|
37
|
+
const handleDragStart = () => {
|
|
38
|
+
if (!disabled && showValueOnDrag) {
|
|
39
|
+
setIsDragging(true);
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
React.useEffect(() => {
|
|
43
|
+
if (!isDragging) return;
|
|
44
|
+
const handlePointerEnd = () => setIsDragging(false);
|
|
45
|
+
window.addEventListener("pointerup", handlePointerEnd);
|
|
46
|
+
window.addEventListener("pointercancel", handlePointerEnd);
|
|
47
|
+
return () => {
|
|
48
|
+
window.removeEventListener("pointerup", handlePointerEnd);
|
|
49
|
+
window.removeEventListener("pointercancel", handlePointerEnd);
|
|
50
|
+
};
|
|
51
|
+
}, [isDragging]);
|
|
52
|
+
React.useEffect(() => {
|
|
53
|
+
if (disabled && isDragging) {
|
|
54
|
+
setIsDragging(false);
|
|
55
|
+
}
|
|
56
|
+
}, [disabled, isDragging]);
|
|
35
57
|
return /* @__PURE__ */ jsxs(Field.Root, { ...htmlProps, disabled, className: [styles.wrapper, className].filter(Boolean).join(" "), children: [
|
|
36
58
|
(label || showValue) && /* @__PURE__ */ jsxs("div", { className: styles.header, children: [
|
|
37
59
|
label && /* @__PURE__ */ jsx(Field.Label, { className: styles.label, children: label }),
|
|
@@ -57,9 +79,19 @@ const SliderRoot = React.forwardRef(
|
|
|
57
79
|
"aria-labelledby": ariaLabelledBy,
|
|
58
80
|
"aria-describedby": ariaDescribedBy,
|
|
59
81
|
className: styles.root,
|
|
82
|
+
onPointerDownCapture: handleDragStart,
|
|
60
83
|
children: /* @__PURE__ */ jsx(Slider$1.Control, { className: styles.control, children: /* @__PURE__ */ jsxs(Slider$1.Track, { className: styles.track, children: [
|
|
61
84
|
/* @__PURE__ */ jsx(Slider$1.Indicator, { className: styles.indicator }),
|
|
62
|
-
/* @__PURE__ */ jsx(
|
|
85
|
+
/* @__PURE__ */ jsx(
|
|
86
|
+
Slider$1.Thumb,
|
|
87
|
+
{
|
|
88
|
+
className: styles.thumb,
|
|
89
|
+
children: showValueOnDrag && isDragging && /* @__PURE__ */ jsxs("span", { className: styles.dragValueBubble, "aria-hidden": "true", children: [
|
|
90
|
+
displayValue,
|
|
91
|
+
valueSuffix
|
|
92
|
+
] })
|
|
93
|
+
}
|
|
94
|
+
)
|
|
63
95
|
] }) })
|
|
64
96
|
}
|
|
65
97
|
)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/Slider/index.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { Field } from '@base-ui/react/field';\nimport { Slider as BaseSlider } from '@base-ui/react/slider';\nimport styles from './Slider.module.scss';\n\n/**\n * Range slider for selecting a numeric value within a defined range.\n * @see https://usefragments.com/components/slider\n */\nexport interface SliderProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange' | 'defaultValue'> {\n /** Visible label text */\n label?: string;\n /** Controlled value */\n value?: number;\n /** Default value for uncontrolled usage */\n defaultValue?: number;\n /** Called when the slider value changes */\n onChange?: (value: number) => void;\n /** Alias for onChange (Radix convention) */\n onValueChange?: (value: number) => void;\n min?: number;\n max?: number;\n step?: number;\n showValue?: boolean;\n valueSuffix?: string;\n disabled?: boolean;\n name?: string;\n /** Accessible label when visible label is omitted */\n 'aria-label'?: string;\n /** Accessible labelled-by relationship */\n 'aria-labelledby'?: string;\n /** Accessible described-by relationship */\n 'aria-describedby'?: string;\n}\n\nconst SliderRoot = React.forwardRef<HTMLDivElement, SliderProps>(\n function Slider(\n {\n label,\n value,\n defaultValue,\n onChange,\n onValueChange,\n min = 0,\n max = 100,\n step = 1,\n showValue = false,\n valueSuffix = '',\n disabled = false,\n className,\n name,\n id,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n 'aria-describedby': ariaDescribedBy,\n ...htmlProps\n },\n ref\n ) {\n // For controlled component, use value; otherwise track internal state for display\n const [internalValue, setInternalValue] = React.useState(defaultValue ?? min);\n const displayValue = value !== undefined ? value : internalValue;\n\n const resolvedOnChange = onChange ?? onValueChange;\n const handleChange = (newValue: number | number[]) => {\n const val = Array.isArray(newValue) ? newValue[0] : newValue;\n setInternalValue(val);\n resolvedOnChange?.(val);\n };\n\n return (\n <Field.Root {...htmlProps} disabled={disabled} className={[styles.wrapper, className].filter(Boolean).join(' ')}>\n {(label || showValue) && (\n <div className={styles.header}>\n {label && <Field.Label className={styles.label}>{label}</Field.Label>}\n {showValue && (\n <span className={styles.value}>\n {displayValue}{valueSuffix}\n </span>\n )}\n </div>\n )}\n <BaseSlider.Root\n ref={ref}\n value={value !== undefined ? [value] : undefined}\n defaultValue={defaultValue !== undefined ? [defaultValue] : undefined}\n onValueChange={handleChange}\n min={min}\n max={max}\n step={step}\n disabled={disabled}\n name={name}\n id={id}\n aria-label={ariaLabel || (label ? undefined : 'Slider')}\n aria-labelledby={ariaLabelledBy}\n aria-describedby={ariaDescribedBy}\n className={styles.root}\n >\n <BaseSlider.Control className={styles.control}>\n <BaseSlider.Track className={styles.track}>\n <BaseSlider.Indicator className={styles.indicator} />\n <BaseSlider.Thumb
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/Slider/index.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { Field } from '@base-ui/react/field';\nimport { Slider as BaseSlider } from '@base-ui/react/slider';\nimport styles from './Slider.module.scss';\n\n/**\n * Range slider for selecting a numeric value within a defined range.\n * @see https://usefragments.com/components/slider\n */\nexport interface SliderProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange' | 'defaultValue'> {\n /** Visible label text */\n label?: string;\n /** Controlled value */\n value?: number;\n /** Default value for uncontrolled usage */\n defaultValue?: number;\n /** Called when the slider value changes */\n onChange?: (value: number) => void;\n /** Alias for onChange (Radix convention) */\n onValueChange?: (value: number) => void;\n min?: number;\n max?: number;\n step?: number;\n showValue?: boolean;\n /** Show a value bubble above the thumb while dragging */\n showValueOnDrag?: boolean;\n valueSuffix?: string;\n disabled?: boolean;\n name?: string;\n /** Accessible label when visible label is omitted */\n 'aria-label'?: string;\n /** Accessible labelled-by relationship */\n 'aria-labelledby'?: string;\n /** Accessible described-by relationship */\n 'aria-describedby'?: string;\n}\n\nconst SliderRoot = React.forwardRef<HTMLDivElement, SliderProps>(\n function Slider(\n {\n label,\n value,\n defaultValue,\n onChange,\n onValueChange,\n min = 0,\n max = 100,\n step = 1,\n showValue = false,\n showValueOnDrag = false,\n valueSuffix = '',\n disabled = false,\n className,\n name,\n id,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n 'aria-describedby': ariaDescribedBy,\n ...htmlProps\n },\n ref\n ) {\n // For controlled component, use value; otherwise track internal state for display\n const [internalValue, setInternalValue] = React.useState(defaultValue ?? min);\n const [isDragging, setIsDragging] = React.useState(false);\n const displayValue = value !== undefined ? value : internalValue;\n\n const resolvedOnChange = onChange ?? onValueChange;\n const handleChange = (newValue: number | number[]) => {\n const val = Array.isArray(newValue) ? newValue[0] : newValue;\n setInternalValue(val);\n resolvedOnChange?.(val);\n };\n\n const handleDragStart = () => {\n if (!disabled && showValueOnDrag) {\n setIsDragging(true);\n }\n };\n\n React.useEffect(() => {\n if (!isDragging) return;\n\n const handlePointerEnd = () => setIsDragging(false);\n window.addEventListener('pointerup', handlePointerEnd);\n window.addEventListener('pointercancel', handlePointerEnd);\n\n return () => {\n window.removeEventListener('pointerup', handlePointerEnd);\n window.removeEventListener('pointercancel', handlePointerEnd);\n };\n }, [isDragging]);\n\n React.useEffect(() => {\n if (disabled && isDragging) {\n setIsDragging(false);\n }\n }, [disabled, isDragging]);\n\n return (\n <Field.Root {...htmlProps} disabled={disabled} className={[styles.wrapper, className].filter(Boolean).join(' ')}>\n {(label || showValue) && (\n <div className={styles.header}>\n {label && <Field.Label className={styles.label}>{label}</Field.Label>}\n {showValue && (\n <span className={styles.value}>\n {displayValue}{valueSuffix}\n </span>\n )}\n </div>\n )}\n <BaseSlider.Root\n ref={ref}\n value={value !== undefined ? [value] : undefined}\n defaultValue={defaultValue !== undefined ? [defaultValue] : undefined}\n onValueChange={handleChange}\n min={min}\n max={max}\n step={step}\n disabled={disabled}\n name={name}\n id={id}\n aria-label={ariaLabel || (label ? undefined : 'Slider')}\n aria-labelledby={ariaLabelledBy}\n aria-describedby={ariaDescribedBy}\n className={styles.root}\n onPointerDownCapture={handleDragStart}\n >\n <BaseSlider.Control className={styles.control}>\n <BaseSlider.Track className={styles.track}>\n <BaseSlider.Indicator className={styles.indicator} />\n <BaseSlider.Thumb\n className={styles.thumb}\n >\n {showValueOnDrag && isDragging && (\n <span className={styles.dragValueBubble} aria-hidden=\"true\">\n {displayValue}\n {valueSuffix}\n </span>\n )}\n </BaseSlider.Thumb>\n </BaseSlider.Track>\n </BaseSlider.Control>\n </BaseSlider.Root>\n </Field.Root>\n );\n }\n);\n\nexport const Slider = Object.assign(SliderRoot, {\n Root: SliderRoot,\n});\n"],"names":["Slider","BaseSlider"],"mappings":"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"}
|
|
@@ -40,7 +40,8 @@ const StackRoot = React__namespace.forwardRef(
|
|
|
40
40
|
separator,
|
|
41
41
|
as: Component = "div",
|
|
42
42
|
className,
|
|
43
|
-
style
|
|
43
|
+
style,
|
|
44
|
+
...htmlProps
|
|
44
45
|
}, ref) {
|
|
45
46
|
let directionClass;
|
|
46
47
|
let gapClass;
|
|
@@ -108,7 +109,16 @@ const StackRoot = React__namespace.forwardRef(
|
|
|
108
109
|
content = items;
|
|
109
110
|
}
|
|
110
111
|
}
|
|
111
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
112
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
113
|
+
Component,
|
|
114
|
+
{
|
|
115
|
+
...htmlProps,
|
|
116
|
+
ref,
|
|
117
|
+
className: classes,
|
|
118
|
+
style: mergedStyle,
|
|
119
|
+
children: content
|
|
120
|
+
}
|
|
121
|
+
);
|
|
112
122
|
}
|
|
113
123
|
);
|
|
114
124
|
function gapToSpace(gap) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../../src/components/Stack/index.tsx"],"sourcesContent":["import * as React from 'react';\nimport styles from './Stack.module.scss';\n\ntype Direction = 'row' | 'column';\ntype GapToken = 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n/** Gap accepts string tokens or numbers (1-8) mapping to the spacing scale */\ntype Gap = GapToken |
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../src/components/Stack/index.tsx"],"sourcesContent":["import * as React from 'react';\nimport styles from './Stack.module.scss';\n\ntype Direction = 'row' | 'column';\ntype GapToken = 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n/** Gap accepts string tokens or numbers (1-8) mapping to the spacing scale */\ntype GapScale = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8;\ntype Gap = GapToken | GapScale;\n\n/** Responsive value — either a single value or per-breakpoint overrides */\nexport interface ResponsiveDirection {\n /** Default (mobile-first) */\n base?: Direction;\n /** ≥640px */\n sm?: Direction;\n /** ≥768px */\n md?: Direction;\n /** ≥1024px */\n lg?: Direction;\n /** ≥1280px */\n xl?: Direction;\n}\n\n/** Responsive gap value */\nexport interface ResponsiveGap {\n /** Default (mobile-first) */\n base?: GapToken;\n /** ≥640px */\n sm?: GapToken;\n /** ≥768px */\n md?: GapToken;\n /** ≥1024px */\n lg?: GapToken;\n /** ≥1280px */\n xl?: GapToken;\n}\n\n/**\n * Flexbox layout component for vertical or horizontal stacking with consistent spacing.\n * @see https://usefragments.com/components/stack\n */\nexport interface StackProps extends Omit<React.HTMLAttributes<HTMLElement>, 'children' | 'style' | 'className'> {\n children: React.ReactNode;\n /**\n * Stack direction.\n * - A string for fixed direction: `\"row\"` or `\"column\"`\n * - An object for responsive direction: `{ base: \"column\", md: \"row\" }`\n */\n direction?: Direction | ResponsiveDirection;\n /**\n * Gap between items.\n * - A string for fixed gap: `\"sm\"`, `\"md\"`, etc.\n * - An object for responsive gap: `{ base: \"sm\", md: \"lg\" }`\n */\n gap?: Gap | ResponsiveGap;\n align?: 'start' | 'center' | 'end' | 'stretch' | 'baseline';\n justify?: 'start' | 'center' | 'end' | 'between';\n wrap?: boolean;\n /**\n * Render a separator between each child.\n * - `true` renders a default 1px border line\n * - A ReactNode renders custom content between children\n */\n separator?: boolean | React.ReactNode;\n as?: 'div' | 'section' | 'nav' | 'article' | 'aside' | 'header' | 'footer' | 'main' | 'ul' | 'ol';\n className?: string;\n style?: React.CSSProperties;\n}\n\nfunction isResponsiveDirection(\n direction: StackProps['direction']\n): direction is ResponsiveDirection {\n return typeof direction === 'object' && direction !== null;\n}\n\nfunction isResponsiveGap(gap: StackProps['gap']): gap is ResponsiveGap {\n return typeof gap === 'object' && gap !== null;\n}\n\nfunction isNumericGap(gap: StackProps['gap']): gap is GapScale {\n return typeof gap === 'number';\n}\n\nconst StackRoot = React.forwardRef<HTMLElement, StackProps>(\n function Stack(\n {\n children,\n direction = 'column',\n gap = 'md',\n align,\n justify,\n wrap = false,\n separator,\n as: Component = 'div',\n className,\n style,\n ...htmlProps\n },\n ref\n ) {\n let directionClass: string;\n let gapClass: string | false;\n let inlineStyle: React.CSSProperties | undefined;\n\n // Handle responsive direction\n if (isResponsiveDirection(direction)) {\n directionClass = styles.directionResponsive;\n const vars: Record<string, string> = {};\n if (direction.base) vars['--fui-stack-direction'] = direction.base;\n if (direction.sm) vars['--fui-stack-direction-sm'] = direction.sm;\n if (direction.md) vars['--fui-stack-direction-md'] = direction.md;\n if (direction.lg) vars['--fui-stack-direction-lg'] = direction.lg;\n if (direction.xl) vars['--fui-stack-direction-xl'] = direction.xl;\n inlineStyle = vars as unknown as React.CSSProperties;\n } else {\n directionClass = styles[direction];\n }\n\n // Handle responsive gap\n if (isResponsiveGap(gap)) {\n gapClass = styles.gapResponsive;\n const gapVars: Record<string, string> = {};\n if (gap.base && gap.base !== 'none') gapVars['--fui-stack-gap'] = `var(--fui-space-${gapToSpace(gap.base)})`;\n if (gap.sm && gap.sm !== 'none') gapVars['--fui-stack-gap-sm'] = `var(--fui-space-${gapToSpace(gap.sm)})`;\n if (gap.md && gap.md !== 'none') gapVars['--fui-stack-gap-md'] = `var(--fui-space-${gapToSpace(gap.md)})`;\n if (gap.lg && gap.lg !== 'none') gapVars['--fui-stack-gap-lg'] = `var(--fui-space-${gapToSpace(gap.lg)})`;\n if (gap.xl && gap.xl !== 'none') gapVars['--fui-stack-gap-xl'] = `var(--fui-space-${gapToSpace(gap.xl)})`;\n inlineStyle = { ...inlineStyle, ...gapVars } as React.CSSProperties;\n } else if (isNumericGap(gap)) {\n // Numeric gap: maps to space scale tokens (e.g. gap={2} → var(--fui-space-2))\n gapClass = false;\n inlineStyle = { ...inlineStyle, gap: `var(--fui-space-${gap})` } as React.CSSProperties;\n } else {\n gapClass = gap !== 'none' && styles[`gap-${gap}`];\n }\n\n const classes = [\n styles.stack,\n directionClass,\n gapClass,\n align && styles[`align-${align}`],\n justify && styles[`justify-${justify}`],\n wrap && styles.wrap,\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const mergedStyle = inlineStyle ? { ...inlineStyle, ...style } : style;\n\n // Interleave separator between children when provided\n let content: React.ReactNode = children;\n if (separator) {\n const validChildren = React.Children.toArray(children).filter(Boolean);\n if (validChildren.length > 1) {\n const resolvedDir = isResponsiveDirection(direction) ? (direction.base ?? 'column') : direction;\n const separatorEl = separator === true ? (\n <div\n className={styles.separator}\n data-orientation={resolvedDir === 'row' ? 'vertical' : 'horizontal'}\n role=\"separator\"\n />\n ) : separator;\n\n const items: React.ReactNode[] = [];\n validChildren.forEach((child, idx) => {\n items.push(child);\n if (idx < validChildren.length - 1) {\n const childKey = React.isValidElement(child) && child.key != null ? child.key : `idx-${idx}`;\n items.push(\n <React.Fragment key={`sep-${childKey}`}>{separatorEl}</React.Fragment>\n );\n }\n });\n content = items;\n }\n }\n\n return (\n <Component\n {...htmlProps}\n ref={ref as React.Ref<never>}\n className={classes}\n style={mergedStyle}\n >\n {content}\n </Component>\n );\n }\n);\n\n// Map gap prop values to space variable numbers\nfunction gapToSpace(gap: GapToken): string {\n const map: Record<GapToken, string> = {\n none: '0',\n xs: '1',\n sm: '2',\n md: '3',\n lg: '4',\n xl: '6',\n };\n return map[gap];\n}\n\nexport const Stack = Object.assign(StackRoot, {\n Root: StackRoot,\n});\n"],"names":["React","Stack","styles","jsx"],"mappings":"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"}
|
|
@@ -2,7 +2,8 @@ import * as React from 'react';
|
|
|
2
2
|
type Direction = 'row' | 'column';
|
|
3
3
|
type GapToken = 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl';
|
|
4
4
|
/** Gap accepts string tokens or numbers (1-8) mapping to the spacing scale */
|
|
5
|
-
type
|
|
5
|
+
type GapScale = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8;
|
|
6
|
+
type Gap = GapToken | GapScale;
|
|
6
7
|
/** Responsive value — either a single value or per-breakpoint overrides */
|
|
7
8
|
export interface ResponsiveDirection {
|
|
8
9
|
/** Default (mobile-first) */
|
|
@@ -33,7 +34,7 @@ export interface ResponsiveGap {
|
|
|
33
34
|
* Flexbox layout component for vertical or horizontal stacking with consistent spacing.
|
|
34
35
|
* @see https://usefragments.com/components/stack
|
|
35
36
|
*/
|
|
36
|
-
export interface StackProps {
|
|
37
|
+
export interface StackProps extends Omit<React.HTMLAttributes<HTMLElement>, 'children' | 'style' | 'className'> {
|
|
37
38
|
children: React.ReactNode;
|
|
38
39
|
/**
|
|
39
40
|
* Stack direction.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Stack/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,KAAK,SAAS,GAAG,KAAK,GAAG,QAAQ,CAAC;AAClC,KAAK,QAAQ,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAC1D,8EAA8E;AAC9E,KAAK,GAAG,GAAG,QAAQ,GAAG,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Stack/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,KAAK,SAAS,GAAG,KAAK,GAAG,QAAQ,CAAC;AAClC,KAAK,QAAQ,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAC1D,8EAA8E;AAC9E,KAAK,QAAQ,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC9C,KAAK,GAAG,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE/B,2EAA2E;AAC3E,MAAM,WAAW,mBAAmB;IAClC,6BAA6B;IAC7B,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,aAAa;IACb,EAAE,CAAC,EAAE,SAAS,CAAC;IACf,aAAa;IACb,EAAE,CAAC,EAAE,SAAS,CAAC;IACf,cAAc;IACd,EAAE,CAAC,EAAE,SAAS,CAAC;IACf,cAAc;IACd,EAAE,CAAC,EAAE,SAAS,CAAC;CAChB;AAED,2BAA2B;AAC3B,MAAM,WAAW,aAAa;IAC5B,6BAA6B;IAC7B,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,aAAa;IACb,EAAE,CAAC,EAAE,QAAQ,CAAC;IACd,aAAa;IACb,EAAE,CAAC,EAAE,QAAQ,CAAC;IACd,cAAc;IACd,EAAE,CAAC,EAAE,QAAQ,CAAC;IACd,cAAc;IACd,EAAE,CAAC,EAAE,QAAQ,CAAC;CACf;AAED;;;GAGG;AACH,MAAM,WAAW,UAAW,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,UAAU,GAAG,OAAO,GAAG,WAAW,CAAC;IAC7G,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B;;;;OAIG;IACH,SAAS,CAAC,EAAE,SAAS,GAAG,mBAAmB,CAAC;IAC5C;;;;OAIG;IACH,GAAG,CAAC,EAAE,GAAG,GAAG,aAAa,CAAC;IAC1B,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,GAAG,UAAU,CAAC;IAC5D,OAAO,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,CAAC;IACjD,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC;IACtC,EAAE,CAAC,EAAE,KAAK,GAAG,SAAS,GAAG,KAAK,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IAClG,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAyID,eAAO,MAAM,KAAK;;CAEhB,CAAC"}
|
|
@@ -21,7 +21,8 @@ const StackRoot = React.forwardRef(
|
|
|
21
21
|
separator,
|
|
22
22
|
as: Component = "div",
|
|
23
23
|
className,
|
|
24
|
-
style
|
|
24
|
+
style,
|
|
25
|
+
...htmlProps
|
|
25
26
|
}, ref) {
|
|
26
27
|
let directionClass;
|
|
27
28
|
let gapClass;
|
|
@@ -89,7 +90,16 @@ const StackRoot = React.forwardRef(
|
|
|
89
90
|
content = items;
|
|
90
91
|
}
|
|
91
92
|
}
|
|
92
|
-
return /* @__PURE__ */ jsx(
|
|
93
|
+
return /* @__PURE__ */ jsx(
|
|
94
|
+
Component,
|
|
95
|
+
{
|
|
96
|
+
...htmlProps,
|
|
97
|
+
ref,
|
|
98
|
+
className: classes,
|
|
99
|
+
style: mergedStyle,
|
|
100
|
+
children: content
|
|
101
|
+
}
|
|
102
|
+
);
|
|
93
103
|
}
|
|
94
104
|
);
|
|
95
105
|
function gapToSpace(gap) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/Stack/index.tsx"],"sourcesContent":["import * as React from 'react';\nimport styles from './Stack.module.scss';\n\ntype Direction = 'row' | 'column';\ntype GapToken = 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n/** Gap accepts string tokens or numbers (1-8) mapping to the spacing scale */\ntype Gap = GapToken |
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/Stack/index.tsx"],"sourcesContent":["import * as React from 'react';\nimport styles from './Stack.module.scss';\n\ntype Direction = 'row' | 'column';\ntype GapToken = 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n/** Gap accepts string tokens or numbers (1-8) mapping to the spacing scale */\ntype GapScale = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8;\ntype Gap = GapToken | GapScale;\n\n/** Responsive value — either a single value or per-breakpoint overrides */\nexport interface ResponsiveDirection {\n /** Default (mobile-first) */\n base?: Direction;\n /** ≥640px */\n sm?: Direction;\n /** ≥768px */\n md?: Direction;\n /** ≥1024px */\n lg?: Direction;\n /** ≥1280px */\n xl?: Direction;\n}\n\n/** Responsive gap value */\nexport interface ResponsiveGap {\n /** Default (mobile-first) */\n base?: GapToken;\n /** ≥640px */\n sm?: GapToken;\n /** ≥768px */\n md?: GapToken;\n /** ≥1024px */\n lg?: GapToken;\n /** ≥1280px */\n xl?: GapToken;\n}\n\n/**\n * Flexbox layout component for vertical or horizontal stacking with consistent spacing.\n * @see https://usefragments.com/components/stack\n */\nexport interface StackProps extends Omit<React.HTMLAttributes<HTMLElement>, 'children' | 'style' | 'className'> {\n children: React.ReactNode;\n /**\n * Stack direction.\n * - A string for fixed direction: `\"row\"` or `\"column\"`\n * - An object for responsive direction: `{ base: \"column\", md: \"row\" }`\n */\n direction?: Direction | ResponsiveDirection;\n /**\n * Gap between items.\n * - A string for fixed gap: `\"sm\"`, `\"md\"`, etc.\n * - An object for responsive gap: `{ base: \"sm\", md: \"lg\" }`\n */\n gap?: Gap | ResponsiveGap;\n align?: 'start' | 'center' | 'end' | 'stretch' | 'baseline';\n justify?: 'start' | 'center' | 'end' | 'between';\n wrap?: boolean;\n /**\n * Render a separator between each child.\n * - `true` renders a default 1px border line\n * - A ReactNode renders custom content between children\n */\n separator?: boolean | React.ReactNode;\n as?: 'div' | 'section' | 'nav' | 'article' | 'aside' | 'header' | 'footer' | 'main' | 'ul' | 'ol';\n className?: string;\n style?: React.CSSProperties;\n}\n\nfunction isResponsiveDirection(\n direction: StackProps['direction']\n): direction is ResponsiveDirection {\n return typeof direction === 'object' && direction !== null;\n}\n\nfunction isResponsiveGap(gap: StackProps['gap']): gap is ResponsiveGap {\n return typeof gap === 'object' && gap !== null;\n}\n\nfunction isNumericGap(gap: StackProps['gap']): gap is GapScale {\n return typeof gap === 'number';\n}\n\nconst StackRoot = React.forwardRef<HTMLElement, StackProps>(\n function Stack(\n {\n children,\n direction = 'column',\n gap = 'md',\n align,\n justify,\n wrap = false,\n separator,\n as: Component = 'div',\n className,\n style,\n ...htmlProps\n },\n ref\n ) {\n let directionClass: string;\n let gapClass: string | false;\n let inlineStyle: React.CSSProperties | undefined;\n\n // Handle responsive direction\n if (isResponsiveDirection(direction)) {\n directionClass = styles.directionResponsive;\n const vars: Record<string, string> = {};\n if (direction.base) vars['--fui-stack-direction'] = direction.base;\n if (direction.sm) vars['--fui-stack-direction-sm'] = direction.sm;\n if (direction.md) vars['--fui-stack-direction-md'] = direction.md;\n if (direction.lg) vars['--fui-stack-direction-lg'] = direction.lg;\n if (direction.xl) vars['--fui-stack-direction-xl'] = direction.xl;\n inlineStyle = vars as unknown as React.CSSProperties;\n } else {\n directionClass = styles[direction];\n }\n\n // Handle responsive gap\n if (isResponsiveGap(gap)) {\n gapClass = styles.gapResponsive;\n const gapVars: Record<string, string> = {};\n if (gap.base && gap.base !== 'none') gapVars['--fui-stack-gap'] = `var(--fui-space-${gapToSpace(gap.base)})`;\n if (gap.sm && gap.sm !== 'none') gapVars['--fui-stack-gap-sm'] = `var(--fui-space-${gapToSpace(gap.sm)})`;\n if (gap.md && gap.md !== 'none') gapVars['--fui-stack-gap-md'] = `var(--fui-space-${gapToSpace(gap.md)})`;\n if (gap.lg && gap.lg !== 'none') gapVars['--fui-stack-gap-lg'] = `var(--fui-space-${gapToSpace(gap.lg)})`;\n if (gap.xl && gap.xl !== 'none') gapVars['--fui-stack-gap-xl'] = `var(--fui-space-${gapToSpace(gap.xl)})`;\n inlineStyle = { ...inlineStyle, ...gapVars } as React.CSSProperties;\n } else if (isNumericGap(gap)) {\n // Numeric gap: maps to space scale tokens (e.g. gap={2} → var(--fui-space-2))\n gapClass = false;\n inlineStyle = { ...inlineStyle, gap: `var(--fui-space-${gap})` } as React.CSSProperties;\n } else {\n gapClass = gap !== 'none' && styles[`gap-${gap}`];\n }\n\n const classes = [\n styles.stack,\n directionClass,\n gapClass,\n align && styles[`align-${align}`],\n justify && styles[`justify-${justify}`],\n wrap && styles.wrap,\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const mergedStyle = inlineStyle ? { ...inlineStyle, ...style } : style;\n\n // Interleave separator between children when provided\n let content: React.ReactNode = children;\n if (separator) {\n const validChildren = React.Children.toArray(children).filter(Boolean);\n if (validChildren.length > 1) {\n const resolvedDir = isResponsiveDirection(direction) ? (direction.base ?? 'column') : direction;\n const separatorEl = separator === true ? (\n <div\n className={styles.separator}\n data-orientation={resolvedDir === 'row' ? 'vertical' : 'horizontal'}\n role=\"separator\"\n />\n ) : separator;\n\n const items: React.ReactNode[] = [];\n validChildren.forEach((child, idx) => {\n items.push(child);\n if (idx < validChildren.length - 1) {\n const childKey = React.isValidElement(child) && child.key != null ? child.key : `idx-${idx}`;\n items.push(\n <React.Fragment key={`sep-${childKey}`}>{separatorEl}</React.Fragment>\n );\n }\n });\n content = items;\n }\n }\n\n return (\n <Component\n {...htmlProps}\n ref={ref as React.Ref<never>}\n className={classes}\n style={mergedStyle}\n >\n {content}\n </Component>\n );\n }\n);\n\n// Map gap prop values to space variable numbers\nfunction gapToSpace(gap: GapToken): string {\n const map: Record<GapToken, string> = {\n none: '0',\n xs: '1',\n sm: '2',\n md: '3',\n lg: '4',\n xl: '6',\n };\n return map[gap];\n}\n\nexport const Stack = Object.assign(StackRoot, {\n Root: StackRoot,\n});\n"],"names":["Stack"],"mappings":"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"}
|
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
3
|
-
const wrapper = "
|
|
4
|
-
const table = "
|
|
5
|
-
const caption = "
|
|
6
|
-
const captionHidden = "
|
|
7
|
-
const sm = "
|
|
8
|
-
const th = "
|
|
9
|
-
const td = "
|
|
10
|
-
const md = "
|
|
11
|
-
const thead = "
|
|
12
|
-
const headerContent = "
|
|
13
|
-
const row = "
|
|
14
|
-
const selected = "
|
|
15
|
-
const tfoot = "
|
|
16
|
-
const striped = "
|
|
17
|
-
const tbody = "
|
|
18
|
-
const bordered = "
|
|
3
|
+
const wrapper = "_wrapper_cobfm_1";
|
|
4
|
+
const table = "_table_cobfm_6";
|
|
5
|
+
const caption = "_caption_cobfm_14";
|
|
6
|
+
const captionHidden = "_captionHidden_cobfm_23";
|
|
7
|
+
const sm = "_sm_cobfm_35";
|
|
8
|
+
const th = "_th_cobfm_35";
|
|
9
|
+
const td = "_td_cobfm_36";
|
|
10
|
+
const md = "_md_cobfm_41";
|
|
11
|
+
const thead = "_thead_cobfm_47";
|
|
12
|
+
const headerContent = "_headerContent_cobfm_70";
|
|
13
|
+
const row = "_row_cobfm_76";
|
|
14
|
+
const selected = "_selected_cobfm_87";
|
|
15
|
+
const tfoot = "_tfoot_cobfm_100";
|
|
16
|
+
const striped = "_striped_cobfm_108";
|
|
17
|
+
const tbody = "_tbody_cobfm_108";
|
|
18
|
+
const bordered = "_bordered_cobfm_118";
|
|
19
19
|
const styles = {
|
|
20
20
|
wrapper,
|
|
21
21
|
table,
|
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
const wrapper = "
|
|
2
|
-
const table = "
|
|
3
|
-
const caption = "
|
|
4
|
-
const captionHidden = "
|
|
5
|
-
const sm = "
|
|
6
|
-
const th = "
|
|
7
|
-
const td = "
|
|
8
|
-
const md = "
|
|
9
|
-
const thead = "
|
|
10
|
-
const headerContent = "
|
|
11
|
-
const row = "
|
|
12
|
-
const selected = "
|
|
13
|
-
const tfoot = "
|
|
14
|
-
const striped = "
|
|
15
|
-
const tbody = "
|
|
16
|
-
const bordered = "
|
|
1
|
+
const wrapper = "_wrapper_cobfm_1";
|
|
2
|
+
const table = "_table_cobfm_6";
|
|
3
|
+
const caption = "_caption_cobfm_14";
|
|
4
|
+
const captionHidden = "_captionHidden_cobfm_23";
|
|
5
|
+
const sm = "_sm_cobfm_35";
|
|
6
|
+
const th = "_th_cobfm_35";
|
|
7
|
+
const td = "_td_cobfm_36";
|
|
8
|
+
const md = "_md_cobfm_41";
|
|
9
|
+
const thead = "_thead_cobfm_47";
|
|
10
|
+
const headerContent = "_headerContent_cobfm_70";
|
|
11
|
+
const row = "_row_cobfm_76";
|
|
12
|
+
const selected = "_selected_cobfm_87";
|
|
13
|
+
const tfoot = "_tfoot_cobfm_100";
|
|
14
|
+
const striped = "_striped_cobfm_108";
|
|
15
|
+
const tbody = "_tbody_cobfm_108";
|
|
16
|
+
const bordered = "_bordered_cobfm_118";
|
|
17
17
|
const styles = {
|
|
18
18
|
wrapper,
|
|
19
19
|
table,
|
|
@@ -7,6 +7,10 @@ export interface TableProps extends React.HTMLAttributes<HTMLTableElement> {
|
|
|
7
7
|
striped?: boolean;
|
|
8
8
|
/** Wrap table in a bordered container */
|
|
9
9
|
bordered?: boolean;
|
|
10
|
+
/** Class applied to the outer wrapper element */
|
|
11
|
+
wrapperClassName?: string;
|
|
12
|
+
/** Props applied to the outer wrapper element */
|
|
13
|
+
wrapperProps?: React.HTMLAttributes<HTMLDivElement>;
|
|
10
14
|
children?: React.ReactNode;
|
|
11
15
|
}
|
|
12
16
|
export interface TableRowProps extends React.HTMLAttributes<HTMLTableRowElement> {
|
|
@@ -17,13 +21,15 @@ export interface TableRowProps extends React.HTMLAttributes<HTMLTableRowElement>
|
|
|
17
21
|
export interface TableCellProps extends React.TdHTMLAttributes<HTMLTableCellElement> {
|
|
18
22
|
children?: React.ReactNode;
|
|
19
23
|
}
|
|
20
|
-
export interface TableHeaderCellProps extends React.ThHTMLAttributes<
|
|
24
|
+
export interface TableHeaderCellProps extends React.ThHTMLAttributes<HTMLTableHeaderCellElement> {
|
|
21
25
|
/** Scope for the header cell */
|
|
22
26
|
scope?: string;
|
|
23
27
|
children?: React.ReactNode;
|
|
24
28
|
}
|
|
25
|
-
export interface TableCaptionProps extends React.HTMLAttributes<HTMLTableCaptionElement> {
|
|
29
|
+
export interface TableCaptionProps extends Omit<React.HTMLAttributes<HTMLTableCaptionElement>, 'hidden'> {
|
|
26
30
|
/** Visually hide the caption (screen readers only) */
|
|
31
|
+
visuallyHidden?: boolean;
|
|
32
|
+
/** @deprecated Use visuallyHidden */
|
|
27
33
|
hidden?: boolean;
|
|
28
34
|
children?: React.ReactNode;
|
|
29
35
|
}
|
|
@@ -33,8 +39,8 @@ declare function TableFooter({ className, children, ...props }: React.HTMLAttrib
|
|
|
33
39
|
declare function TableRow({ className, selected, children, ...props }: TableRowProps): import("react/jsx-runtime").JSX.Element;
|
|
34
40
|
declare function TableCell({ className, children, ...props }: TableCellProps): import("react/jsx-runtime").JSX.Element;
|
|
35
41
|
declare function TableHeaderCell({ className, scope, children, ...props }: TableHeaderCellProps): import("react/jsx-runtime").JSX.Element;
|
|
36
|
-
declare function TableCaption({ className,
|
|
37
|
-
declare function TableRoot({ size, striped, bordered, className, children, ...htmlProps }: TableProps): import("react/jsx-runtime").JSX.Element;
|
|
42
|
+
declare function TableCaption({ className, visuallyHidden, hidden, children, ...props }: TableCaptionProps): import("react/jsx-runtime").JSX.Element;
|
|
43
|
+
declare function TableRoot({ size, striped, bordered, wrapperClassName, wrapperProps, className, children, ...htmlProps }: TableProps): import("react/jsx-runtime").JSX.Element;
|
|
38
44
|
export declare const Table: typeof TableRoot & {
|
|
39
45
|
Root: typeof TableRoot;
|
|
40
46
|
Head: typeof TableHead;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Table/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,2BAA2B,CAAC;AAOnC,MAAM,WAAW,UAAW,SAAQ,KAAK,CAAC,cAAc,CAAC,gBAAgB,CAAC;IACxE,mBAAmB;IACnB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB,uCAAuC;IACvC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,yCAAyC;IACzC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,MAAM,WAAW,aAAc,SAAQ,KAAK,CAAC,cAAc,CAAC,mBAAmB,CAAC;IAC9E,2BAA2B;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,MAAM,WAAW,cAAe,SAAQ,KAAK,CAAC,gBAAgB,CAAC,oBAAoB,CAAC;IAClF,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,MAAM,WAAW,oBAAqB,SAAQ,KAAK,CAAC,gBAAgB,CAAC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Table/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,2BAA2B,CAAC;AAOnC,MAAM,WAAW,UAAW,SAAQ,KAAK,CAAC,cAAc,CAAC,gBAAgB,CAAC;IACxE,mBAAmB;IACnB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB,uCAAuC;IACvC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,yCAAyC;IACzC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iDAAiD;IACjD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iDAAiD;IACjD,YAAY,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;IACpD,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,MAAM,WAAW,aAAc,SAAQ,KAAK,CAAC,cAAc,CAAC,mBAAmB,CAAC;IAC9E,2BAA2B;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,MAAM,WAAW,cAAe,SAAQ,KAAK,CAAC,gBAAgB,CAAC,oBAAoB,CAAC;IAClF,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,MAAM,WAAW,oBAAqB,SAAQ,KAAK,CAAC,gBAAgB,CAAC,0BAA0B,CAAC;IAC9F,gCAAgC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,MAAM,WAAW,iBAAkB,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,uBAAuB,CAAC,EAAE,QAAQ,CAAC;IACtG,sDAAsD;IACtD,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,qCAAqC;IACrC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAMD,iBAAS,SAAS,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,uBAAuB,CAAC,2CAMlG;AAED,iBAAS,SAAS,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,uBAAuB,CAAC,2CAMlG;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,uBAAuB,CAAC,2CAMpG;AAED,iBAAS,QAAQ,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,aAAa,2CAU3E;AAED,iBAAS,SAAS,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,cAAc,2CAMnE;AAED,iBAAS,eAAe,CAAC,EAAE,SAAS,EAAE,KAAa,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,oBAAoB,2CAM9F;AAED,iBAAS,YAAY,CAAC,EACpB,SAAS,EACT,cAAc,EACd,MAAM,EACN,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,iBAAiB,2CAUnB;AAMD,iBAAS,SAAS,CAAC,EACjB,IAAW,EACX,OAAe,EACf,QAAgB,EAChB,gBAAgB,EAChB,YAAY,EACZ,SAAS,EACT,QAAQ,EACR,GAAG,SAAS,EACb,EAAE,UAAU,2CAoBZ;AAMD,eAAO,MAAM,KAAK;;;;;;;;;CAShB,CAAC"}
|
|
@@ -9,10 +9,11 @@ function TableOfContentsRoot({
|
|
|
9
9
|
title = "On This Page",
|
|
10
10
|
hideTitle = false,
|
|
11
11
|
className,
|
|
12
|
+
"aria-label": ariaLabel,
|
|
12
13
|
...htmlProps
|
|
13
14
|
}) {
|
|
14
15
|
const classes = [TableOfContents_module.default.root, className].filter(Boolean).join(" ");
|
|
15
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("nav", { "aria-label": label, className: classes,
|
|
16
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("nav", { ...htmlProps, "aria-label": ariaLabel ?? label, className: classes, children: [
|
|
16
17
|
!hideTitle && /* @__PURE__ */ jsxRuntime.jsx(index.Text, { as: "p", variant: "section-label", className: TableOfContents_module.default.title, children: title }),
|
|
17
18
|
/* @__PURE__ */ jsxRuntime.jsx("ul", { className: TableOfContents_module.default.list, children })
|
|
18
19
|
] });
|
|
@@ -24,6 +25,7 @@ function TableOfContentsItem({
|
|
|
24
25
|
indent = false,
|
|
25
26
|
className,
|
|
26
27
|
onClick,
|
|
28
|
+
href: _href,
|
|
27
29
|
...htmlProps
|
|
28
30
|
}) {
|
|
29
31
|
const linkClasses = [
|
|
@@ -33,22 +35,23 @@ function TableOfContentsItem({
|
|
|
33
35
|
className
|
|
34
36
|
].filter(Boolean).join(" ");
|
|
35
37
|
const handleClick = (e) => {
|
|
38
|
+
onClick == null ? void 0 : onClick(e);
|
|
39
|
+
if (e.defaultPrevented) return;
|
|
36
40
|
e.preventDefault();
|
|
37
41
|
const el = document.getElementById(id);
|
|
38
42
|
if (el) {
|
|
39
43
|
el.scrollIntoView({ behavior: "smooth" });
|
|
40
|
-
history.replaceState(null, "", `#${id}`);
|
|
44
|
+
window.history.replaceState(null, "", `#${id}`);
|
|
41
45
|
}
|
|
42
|
-
onClick == null ? void 0 : onClick(e);
|
|
43
46
|
};
|
|
44
47
|
return /* @__PURE__ */ jsxRuntime.jsx("li", { className: TableOfContents_module.default.item, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
45
48
|
"a",
|
|
46
49
|
{
|
|
50
|
+
...htmlProps,
|
|
47
51
|
href: `#${id}`,
|
|
48
52
|
className: linkClasses,
|
|
49
53
|
onClick: handleClick,
|
|
50
|
-
"aria-current": active ? "
|
|
51
|
-
...htmlProps,
|
|
54
|
+
"aria-current": active ? "location" : void 0,
|
|
52
55
|
children
|
|
53
56
|
}
|
|
54
57
|
) });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../../src/components/TableOfContents/index.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport styles from './TableOfContents.module.scss';\nimport { Text } from '../Text';\n\n// ============================================\n// Types\n// ============================================\n\nexport interface TableOfContentsProps extends React.HTMLAttributes<HTMLElement> {\n children: React.ReactNode;\n /** Label for the nav landmark (default: \"Table of contents\") */\n label?: string;\n /** Title displayed above the list (default: \"On This Page\") */\n title?: string;\n /** Hide the title */\n hideTitle?: boolean;\n}\n\nexport interface TableOfContentsItemProps extends Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, 'children'> {\n children: React.ReactNode;\n /** The heading ID to link to */\n id: string;\n /** Whether this item is currently active/visible */\n active?: boolean;\n /** Indent level — use for sub-headings (h3, h4, etc.) */\n indent?: boolean;\n}\n\n// ============================================\n// Components\n// ============================================\n\nfunction TableOfContentsRoot({\n children,\n label = 'Table of contents',\n title = 'On This Page',\n hideTitle = false,\n className,\n ...htmlProps\n}: TableOfContentsProps) {\n const classes = [styles.root, className].filter(Boolean).join(' ');\n\n return (\n <nav aria-label={label} className={classes}
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../src/components/TableOfContents/index.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport styles from './TableOfContents.module.scss';\nimport { Text } from '../Text';\n\n// ============================================\n// Types\n// ============================================\n\nexport interface TableOfContentsProps extends React.HTMLAttributes<HTMLElement> {\n children: React.ReactNode;\n /** Label for the nav landmark (default: \"Table of contents\") */\n label?: string;\n /** Title displayed above the list (default: \"On This Page\") */\n title?: string;\n /** Hide the title */\n hideTitle?: boolean;\n}\n\nexport interface TableOfContentsItemProps extends Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, 'children'> {\n children: React.ReactNode;\n /** The heading ID to link to */\n id: string;\n /** Whether this item is currently active/visible */\n active?: boolean;\n /** Indent level — use for sub-headings (h3, h4, etc.) */\n indent?: boolean;\n}\n\n// ============================================\n// Components\n// ============================================\n\nfunction TableOfContentsRoot({\n children,\n label = 'Table of contents',\n title = 'On This Page',\n hideTitle = false,\n className,\n 'aria-label': ariaLabel,\n ...htmlProps\n}: TableOfContentsProps) {\n const classes = [styles.root, className].filter(Boolean).join(' ');\n\n return (\n <nav {...htmlProps} aria-label={ariaLabel ?? label} className={classes}>\n {!hideTitle && (\n <Text as=\"p\" variant=\"section-label\" className={styles.title}>\n {title}\n </Text>\n )}\n <ul className={styles.list}>\n {children}\n </ul>\n </nav>\n );\n}\n\nfunction TableOfContentsItem({\n children,\n id,\n active = false,\n indent = false,\n className,\n onClick,\n href: _href,\n ...htmlProps\n}: TableOfContentsItemProps) {\n const linkClasses = [\n styles.link,\n indent && styles.indent,\n active && styles.active,\n className,\n ].filter(Boolean).join(' ');\n\n const handleClick = (e: React.MouseEvent<HTMLAnchorElement>) => {\n onClick?.(e);\n if (e.defaultPrevented) return;\n\n e.preventDefault();\n const el = document.getElementById(id);\n if (el) {\n el.scrollIntoView({ behavior: 'smooth' });\n window.history.replaceState(null, '', `#${id}`);\n }\n };\n\n return (\n <li className={styles.item}>\n <a\n {...htmlProps}\n href={`#${id}`}\n className={linkClasses}\n onClick={handleClick}\n aria-current={active ? 'location' : undefined}\n >\n {children}\n </a>\n </li>\n );\n}\n\n// ============================================\n// Export compound component\n// ============================================\n\nexport const TableOfContents = Object.assign(TableOfContentsRoot, {\n Item: TableOfContentsItem,\n});\n\n// Re-export individual components\nexport { TableOfContentsRoot, TableOfContentsItem };\n"],"names":["styles","jsxs","jsx","Text"],"mappings":";;;;;AAkCA,SAAS,oBAAoB;AAAA,EAC3B;AAAA,EACA,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ;AAAA,EACA,cAAc;AAAA,EACd,GAAG;AACL,GAAyB;AACvB,QAAM,UAAU,CAACA,uBAAAA,QAAO,MAAM,SAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAEjE,SACEC,gCAAC,SAAK,GAAG,WAAW,cAAY,aAAa,OAAO,WAAW,SAC5D,UAAA;AAAA,IAAA,CAAC,aACAC,2BAAAA,IAACC,MAAAA,MAAA,EAAK,IAAG,KAAI,SAAQ,iBAAgB,WAAWH,uBAAAA,QAAO,OACpD,UAAA,MAAA,CACH;AAAA,IAEFE,2BAAAA,IAAC,MAAA,EAAG,WAAWF,uBAAAA,QAAO,MACnB,SAAA,CACH;AAAA,EAAA,GACF;AAEJ;AAEA,SAAS,oBAAoB;AAAA,EAC3B;AAAA,EACA;AAAA,EACA,SAAS;AAAA,EACT,SAAS;AAAA,EACT;AAAA,EACA;AAAA,EACA,MAAM;AAAA,EACN,GAAG;AACL,GAA6B;AAC3B,QAAM,cAAc;AAAA,IAClBA,uBAAAA,QAAO;AAAA,IACP,UAAUA,uBAAAA,QAAO;AAAA,IACjB,UAAUA,uBAAAA,QAAO;AAAA,IACjB;AAAA,EAAA,EACA,OAAO,OAAO,EAAE,KAAK,GAAG;AAE1B,QAAM,cAAc,CAAC,MAA2C;AAC9D,uCAAU;AACV,QAAI,EAAE,iBAAkB;AAExB,MAAE,eAAA;AACF,UAAM,KAAK,SAAS,eAAe,EAAE;AACrC,QAAI,IAAI;AACN,SAAG,eAAe,EAAE,UAAU,SAAA,CAAU;AACxC,aAAO,QAAQ,aAAa,MAAM,IAAI,IAAI,EAAE,EAAE;AAAA,IAChD;AAAA,EACF;AAEA,SACEE,2BAAAA,IAAC,MAAA,EAAG,WAAWF,uBAAAA,QAAO,MACpB,UAAAE,2BAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACE,GAAG;AAAA,MACJ,MAAM,IAAI,EAAE;AAAA,MACZ,WAAW;AAAA,MACX,SAAS;AAAA,MACT,gBAAc,SAAS,aAAa;AAAA,MAEnC;AAAA,IAAA;AAAA,EAAA,GAEL;AAEJ;AAMO,MAAM,kBAAkB,OAAO,OAAO,qBAAqB;AAAA,EAChE,MAAM;AACR,CAAC;;;;"}
|
|
@@ -17,8 +17,8 @@ export interface TableOfContentsItemProps extends Omit<React.AnchorHTMLAttribute
|
|
|
17
17
|
/** Indent level — use for sub-headings (h3, h4, etc.) */
|
|
18
18
|
indent?: boolean;
|
|
19
19
|
}
|
|
20
|
-
declare function TableOfContentsRoot({ children, label, title, hideTitle, className, ...htmlProps }: TableOfContentsProps): import("react/jsx-runtime").JSX.Element;
|
|
21
|
-
declare function TableOfContentsItem({ children, id, active, indent, className, onClick, ...htmlProps }: TableOfContentsItemProps): import("react/jsx-runtime").JSX.Element;
|
|
20
|
+
declare function TableOfContentsRoot({ children, label, title, hideTitle, className, 'aria-label': ariaLabel, ...htmlProps }: TableOfContentsProps): import("react/jsx-runtime").JSX.Element;
|
|
21
|
+
declare function TableOfContentsItem({ children, id, active, indent, className, onClick, href: _href, ...htmlProps }: TableOfContentsItemProps): import("react/jsx-runtime").JSX.Element;
|
|
22
22
|
export declare const TableOfContents: typeof TableOfContentsRoot & {
|
|
23
23
|
Item: typeof TableOfContentsItem;
|
|
24
24
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/TableOfContents/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAQ/B,MAAM,WAAW,oBAAqB,SAAQ,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC;IAC7E,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,gEAAgE;IAChE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+DAA+D;IAC/D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qBAAqB;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,wBAAyB,SAAQ,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,UAAU,CAAC;IAC/G,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,gCAAgC;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,oDAAoD;IACpD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,yDAAyD;IACzD,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAMD,iBAAS,mBAAmB,CAAC,EAC3B,QAAQ,EACR,KAA2B,EAC3B,KAAsB,EACtB,SAAiB,EACjB,SAAS,EACT,GAAG,SAAS,EACb,EAAE,oBAAoB,2CAetB;AAED,iBAAS,mBAAmB,CAAC,EAC3B,QAAQ,EACR,EAAE,EACF,MAAc,EACd,MAAc,EACd,SAAS,EACT,OAAO,EACP,GAAG,SAAS,EACb,EAAE,wBAAwB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/TableOfContents/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAQ/B,MAAM,WAAW,oBAAqB,SAAQ,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC;IAC7E,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,gEAAgE;IAChE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+DAA+D;IAC/D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qBAAqB;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,wBAAyB,SAAQ,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,UAAU,CAAC;IAC/G,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,gCAAgC;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,oDAAoD;IACpD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,yDAAyD;IACzD,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAMD,iBAAS,mBAAmB,CAAC,EAC3B,QAAQ,EACR,KAA2B,EAC3B,KAAsB,EACtB,SAAiB,EACjB,SAAS,EACT,YAAY,EAAE,SAAS,EACvB,GAAG,SAAS,EACb,EAAE,oBAAoB,2CAetB;AAED,iBAAS,mBAAmB,CAAC,EAC3B,QAAQ,EACR,EAAE,EACF,MAAc,EACd,MAAc,EACd,SAAS,EACT,OAAO,EACP,IAAI,EAAE,KAAK,EACX,GAAG,SAAS,EACb,EAAE,wBAAwB,2CAiC1B;AAMD,eAAO,MAAM,eAAe;;CAE1B,CAAC;AAGH,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,CAAC"}
|