@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,24 +1,24 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
3
|
-
const container = "
|
|
4
|
-
const topleft = "
|
|
5
|
-
const topcenter = "
|
|
6
|
-
const topright = "
|
|
7
|
-
const bottomleft = "
|
|
8
|
-
const bottomcenter = "
|
|
9
|
-
const bottomright = "
|
|
10
|
-
const toast = "
|
|
11
|
-
const toastEnter = "
|
|
12
|
-
const icon = "
|
|
13
|
-
const success = "
|
|
14
|
-
const error = "
|
|
15
|
-
const warning = "
|
|
16
|
-
const info = "
|
|
17
|
-
const content = "
|
|
18
|
-
const title = "
|
|
19
|
-
const description = "
|
|
20
|
-
const action = "
|
|
21
|
-
const close = "
|
|
3
|
+
const container = "_container_1cd0d_1";
|
|
4
|
+
const topleft = "_topleft_1cd0d_15";
|
|
5
|
+
const topcenter = "_topcenter_1cd0d_20";
|
|
6
|
+
const topright = "_topright_1cd0d_26";
|
|
7
|
+
const bottomleft = "_bottomleft_1cd0d_31";
|
|
8
|
+
const bottomcenter = "_bottomcenter_1cd0d_37";
|
|
9
|
+
const bottomright = "_bottomright_1cd0d_44";
|
|
10
|
+
const toast = "_toast_1cd0d_50";
|
|
11
|
+
const toastEnter = "_toastEnter_1cd0d_1";
|
|
12
|
+
const icon = "_icon_1cd0d_73";
|
|
13
|
+
const success = "_success_1cd0d_77";
|
|
14
|
+
const error = "_error_1cd0d_84";
|
|
15
|
+
const warning = "_warning_1cd0d_91";
|
|
16
|
+
const info = "_info_1cd0d_98";
|
|
17
|
+
const content = "_content_1cd0d_116";
|
|
18
|
+
const title = "_title_1cd0d_121";
|
|
19
|
+
const description = "_description_1cd0d_128";
|
|
20
|
+
const action = "_action_1cd0d_135";
|
|
21
|
+
const close = "_close_1cd0d_160";
|
|
22
22
|
const styles = {
|
|
23
23
|
container,
|
|
24
24
|
topleft,
|
|
@@ -29,7 +29,7 @@ const styles = {
|
|
|
29
29
|
bottomright,
|
|
30
30
|
toast,
|
|
31
31
|
toastEnter,
|
|
32
|
-
"default": "
|
|
32
|
+
"default": "_default_1cd0d_73",
|
|
33
33
|
icon,
|
|
34
34
|
success,
|
|
35
35
|
error,
|
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
const container = "
|
|
2
|
-
const topleft = "
|
|
3
|
-
const topcenter = "
|
|
4
|
-
const topright = "
|
|
5
|
-
const bottomleft = "
|
|
6
|
-
const bottomcenter = "
|
|
7
|
-
const bottomright = "
|
|
8
|
-
const toast = "
|
|
9
|
-
const toastEnter = "
|
|
10
|
-
const icon = "
|
|
11
|
-
const success = "
|
|
12
|
-
const error = "
|
|
13
|
-
const warning = "
|
|
14
|
-
const info = "
|
|
15
|
-
const content = "
|
|
16
|
-
const title = "
|
|
17
|
-
const description = "
|
|
18
|
-
const action = "
|
|
19
|
-
const close = "
|
|
1
|
+
const container = "_container_1cd0d_1";
|
|
2
|
+
const topleft = "_topleft_1cd0d_15";
|
|
3
|
+
const topcenter = "_topcenter_1cd0d_20";
|
|
4
|
+
const topright = "_topright_1cd0d_26";
|
|
5
|
+
const bottomleft = "_bottomleft_1cd0d_31";
|
|
6
|
+
const bottomcenter = "_bottomcenter_1cd0d_37";
|
|
7
|
+
const bottomright = "_bottomright_1cd0d_44";
|
|
8
|
+
const toast = "_toast_1cd0d_50";
|
|
9
|
+
const toastEnter = "_toastEnter_1cd0d_1";
|
|
10
|
+
const icon = "_icon_1cd0d_73";
|
|
11
|
+
const success = "_success_1cd0d_77";
|
|
12
|
+
const error = "_error_1cd0d_84";
|
|
13
|
+
const warning = "_warning_1cd0d_91";
|
|
14
|
+
const info = "_info_1cd0d_98";
|
|
15
|
+
const content = "_content_1cd0d_116";
|
|
16
|
+
const title = "_title_1cd0d_121";
|
|
17
|
+
const description = "_description_1cd0d_128";
|
|
18
|
+
const action = "_action_1cd0d_135";
|
|
19
|
+
const close = "_close_1cd0d_160";
|
|
20
20
|
const styles = {
|
|
21
21
|
container,
|
|
22
22
|
topleft,
|
|
@@ -27,7 +27,7 @@ const styles = {
|
|
|
27
27
|
bottomright,
|
|
28
28
|
toast,
|
|
29
29
|
toastEnter,
|
|
30
|
-
"default": "
|
|
30
|
+
"default": "_default_1cd0d_73",
|
|
31
31
|
icon,
|
|
32
32
|
success,
|
|
33
33
|
error,
|
|
@@ -29,18 +29,19 @@ function useToast() {
|
|
|
29
29
|
const toast = React__namespace.useCallback((options) => {
|
|
30
30
|
return context.addToast(options);
|
|
31
31
|
}, [context]);
|
|
32
|
-
const
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
const
|
|
42
|
-
|
|
43
|
-
|
|
32
|
+
const makeVariantHelper = React__namespace.useCallback(
|
|
33
|
+
(variant) => (titleOrOptions, description) => {
|
|
34
|
+
if (typeof titleOrOptions === "string") {
|
|
35
|
+
return context.addToast({ title: titleOrOptions, description, variant });
|
|
36
|
+
}
|
|
37
|
+
return context.addToast({ ...titleOrOptions, variant });
|
|
38
|
+
},
|
|
39
|
+
[context]
|
|
40
|
+
);
|
|
41
|
+
const success = React__namespace.useMemo(() => makeVariantHelper("success"), [makeVariantHelper]);
|
|
42
|
+
const error = React__namespace.useMemo(() => makeVariantHelper("error"), [makeVariantHelper]);
|
|
43
|
+
const warning = React__namespace.useMemo(() => makeVariantHelper("warning"), [makeVariantHelper]);
|
|
44
|
+
const info = React__namespace.useMemo(() => makeVariantHelper("info"), [makeVariantHelper]);
|
|
44
45
|
return {
|
|
45
46
|
toast,
|
|
46
47
|
success,
|
|
@@ -193,7 +194,6 @@ function ToastContainer({
|
|
|
193
194
|
toast.id
|
|
194
195
|
)) });
|
|
195
196
|
}
|
|
196
|
-
let toastCounter = 0;
|
|
197
197
|
function ToastProvider({
|
|
198
198
|
position = "bottom-right",
|
|
199
199
|
duration = 8e3,
|
|
@@ -201,6 +201,7 @@ function ToastProvider({
|
|
|
201
201
|
children
|
|
202
202
|
}) {
|
|
203
203
|
const [toasts, setToasts] = React__namespace.useState([]);
|
|
204
|
+
const idCounterRef = React__namespace.useRef(0);
|
|
204
205
|
const timeoutRef = React__namespace.useRef(/* @__PURE__ */ new Map());
|
|
205
206
|
const remainingRef = React__namespace.useRef(/* @__PURE__ */ new Map());
|
|
206
207
|
const startTimeRef = React__namespace.useRef(/* @__PURE__ */ new Map());
|
|
@@ -228,7 +229,7 @@ function ToastProvider({
|
|
|
228
229
|
[clearRemovalTimer]
|
|
229
230
|
);
|
|
230
231
|
const addToast = React__namespace.useCallback((toast) => {
|
|
231
|
-
const id = `toast-${++
|
|
232
|
+
const id = toast.id ?? `toast-${++idCounterRef.current}`;
|
|
232
233
|
const toastDuration = toast.duration ?? (toast.action ? 0 : duration);
|
|
233
234
|
setToasts((prev) => {
|
|
234
235
|
const nextToasts = [...prev, { ...toast, id }];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../../src/components/Toast/index.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport styles from './Toast.module.scss';\n\n// ============================================\n// Types\n// ============================================\n\nexport type ToastVariant = 'default' | 'success' | 'error' | 'warning' | 'info';\nexport type ToastPosition =\n | 'top-left'\n | 'top-center'\n | 'top-right'\n | 'bottom-left'\n | 'bottom-center'\n | 'bottom-right';\n\nexport interface ToastData {\n id: string;\n title?: string;\n description?: string;\n variant?: ToastVariant;\n duration?: number;\n action?: {\n label: string;\n onClick: () => void;\n };\n}\n\nexport interface ToastProps extends Omit<ToastData, 'id'>, Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> {\n /** Callback when toast should be dismissed */\n onDismiss?: () => void;\n}\n\nexport interface ToastProviderProps {\n /** Position of the toast container */\n position?: ToastPosition;\n /** Default duration in ms (0 = no auto-dismiss) */\n duration?: number;\n /** Maximum number of toasts to show */\n max?: number;\n /** Children */\n children: React.ReactNode;\n}\n\n// ============================================\n// Context\n// ============================================\n\ninterface ToastContextValue {\n toasts: ToastData[];\n addToast: (toast: Omit<ToastData, 'id'>) => string;\n removeToast: (id: string) => void;\n clearToasts: () => void;\n}\n\nconst ToastContext = React.createContext<ToastContextValue | null>(null);\n\n// ============================================\n// Hook to use toast\n// ============================================\n\nexport function useToast() {\n const context = React.useContext(ToastContext);\n if (!context) {\n throw new Error('useToast must be used within a ToastProvider');\n }\n\n const toast = React.useCallback((options: Omit<ToastData, 'id'>) => {\n return context.addToast(options);\n }, [context]);\n\n const success = React.useCallback((title: string, description?: string) => {\n return context.addToast({ title, description, variant: 'success' });\n }, [context]);\n\n const error = React.useCallback((title: string, description?: string) => {\n return context.addToast({ title, description, variant: 'error' });\n }, [context]);\n\n const warning = React.useCallback((title: string, description?: string) => {\n return context.addToast({ title, description, variant: 'warning' });\n }, [context]);\n\n const info = React.useCallback((title: string, description?: string) => {\n return context.addToast({ title, description, variant: 'info' });\n }, [context]);\n\n return {\n toast,\n success,\n error,\n warning,\n info,\n dismiss: context.removeToast,\n dismissAll: context.clearToasts,\n };\n}\n\n// ============================================\n// Icons\n// ============================================\n\nfunction SuccessIcon() {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden=\"true\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"m9 12 2 2 4-4\" />\n </svg>\n );\n}\n\nfunction ErrorIcon() {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden=\"true\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <line x1=\"15\" y1=\"9\" x2=\"9\" y2=\"15\" />\n <line x1=\"9\" y1=\"9\" x2=\"15\" y2=\"15\" />\n </svg>\n );\n}\n\nfunction WarningIcon() {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden=\"true\">\n <path d=\"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3\" />\n <line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\" />\n <line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\" />\n </svg>\n );\n}\n\nfunction InfoIcon() {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden=\"true\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <line x1=\"12\" y1=\"16\" x2=\"12\" y2=\"12\" />\n <line x1=\"12\" y1=\"8\" x2=\"12.01\" y2=\"8\" />\n </svg>\n );\n}\n\nfunction CloseIcon() {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden=\"true\">\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n );\n}\n\nconst variantIcons: Record<ToastVariant, React.ComponentType | null> = {\n default: null,\n success: SuccessIcon,\n error: ErrorIcon,\n warning: WarningIcon,\n info: InfoIcon,\n};\n\n// ============================================\n// Toast Component\n// ============================================\n\nfunction ToastItem({\n id,\n title,\n description,\n variant = 'default',\n action,\n onDismiss,\n onPause,\n onResume,\n className,\n ...htmlProps\n}: ToastProps & {\n id?: string;\n onPause?: () => void;\n onResume?: () => void;\n}) {\n const Icon = variantIcons[variant];\n const uniqueId = React.useId();\n const toastRef = React.useRef<HTMLDivElement>(null);\n const titleId = title ? `toast-title-${id || uniqueId}` : undefined;\n const descId = description ? `toast-desc-${id || uniqueId}` : undefined;\n const liveRole = variant === 'error' || variant === 'warning' ? 'alert' : 'status';\n\n const toastClasses = [\n styles.toast,\n styles[variant],\n className,\n ].filter(Boolean).join(' ');\n\n return (\n <div\n ref={toastRef}\n {...htmlProps}\n className={toastClasses}\n role={liveRole}\n aria-atomic=\"true\"\n aria-labelledby={titleId}\n aria-describedby={descId}\n onMouseEnter={onPause}\n onMouseLeave={() => {\n requestAnimationFrame(() => {\n if (!toastRef.current?.contains(document.activeElement)) {\n onResume?.();\n }\n });\n }}\n onFocusCapture={onPause}\n onBlurCapture={() => {\n requestAnimationFrame(() => {\n if (!toastRef.current?.contains(document.activeElement)) {\n onResume?.();\n }\n });\n }}\n >\n {Icon && (\n <span className={styles.icon}>\n <Icon />\n </span>\n )}\n <div className={styles.content}>\n {title && <div id={titleId} className={styles.title}>{title}</div>}\n {description && <div id={descId} className={styles.description}>{description}</div>}\n </div>\n {action && (\n <button\n type=\"button\"\n className={styles.action}\n onClick={action.onClick}\n >\n {action.label}\n </button>\n )}\n {onDismiss && (\n <button\n type=\"button\"\n className={styles.close}\n onClick={onDismiss}\n aria-label=\"Dismiss notification\"\n >\n <CloseIcon />\n </button>\n )}\n </div>\n );\n}\n\n// ============================================\n// Toast Container\n// ============================================\n\nfunction ToastContainer({\n toasts,\n position,\n onDismiss,\n onPause,\n onResume,\n}: {\n toasts: ToastData[];\n position: ToastPosition;\n onDismiss: (id: string) => void;\n onPause: (id: string) => void;\n onResume: (id: string) => void;\n}) {\n const containerClasses = [\n styles.container,\n styles[position.replace('-', '')],\n ].filter(Boolean).join(' ');\n\n // Always render the container for screen reader live region to work properly\n // The live region must exist before announcements are made\n return (\n <div className={containerClasses} role=\"region\" aria-label=\"Notifications\">\n {toasts.map((toast) => (\n <ToastItem\n key={toast.id}\n {...toast}\n onDismiss={() => onDismiss(toast.id)}\n onPause={() => onPause(toast.id)}\n onResume={() => onResume(toast.id)}\n />\n ))}\n </div>\n );\n}\n\n// ============================================\n// Toast Provider\n// ============================================\n\nlet toastCounter = 0;\n\nexport function ToastProvider({\n position = 'bottom-right',\n duration = 8000,\n max = 5,\n children,\n}: ToastProviderProps) {\n const [toasts, setToasts] = React.useState<ToastData[]>([]);\n const timeoutRef = React.useRef(new Map<string, ReturnType<typeof setTimeout>>());\n const remainingRef = React.useRef(new Map<string, number>());\n const startTimeRef = React.useRef(new Map<string, number>());\n\n const clearRemovalTimer = React.useCallback((id: string) => {\n const timeout = timeoutRef.current.get(id);\n if (timeout) {\n clearTimeout(timeout);\n timeoutRef.current.delete(id);\n }\n }, []);\n\n const scheduleRemoval = React.useCallback(\n (id: string, delay: number) => {\n if (delay <= 0) return;\n clearRemovalTimer(id);\n remainingRef.current.set(id, delay);\n startTimeRef.current.set(id, Date.now());\n\n const timeout = setTimeout(() => {\n setToasts((prev) => prev.filter((t) => t.id !== id));\n clearRemovalTimer(id);\n remainingRef.current.delete(id);\n startTimeRef.current.delete(id);\n }, delay);\n\n timeoutRef.current.set(id, timeout);\n },\n [clearRemovalTimer]\n );\n\n const addToast = React.useCallback((toast: Omit<ToastData, 'id'>) => {\n const id = `toast-${++toastCounter}`;\n const toastDuration = toast.duration ?? (toast.action ? 0 : duration);\n\n setToasts((prev) => {\n const nextToasts = [...prev, { ...toast, id }];\n const overflowCount = Math.max(0, nextToasts.length - max);\n\n if (overflowCount > 0) {\n const removedToasts = nextToasts.slice(0, overflowCount);\n removedToasts.forEach((removedToast) => {\n clearRemovalTimer(removedToast.id);\n remainingRef.current.delete(removedToast.id);\n startTimeRef.current.delete(removedToast.id);\n });\n }\n\n return overflowCount > 0 ? nextToasts.slice(overflowCount) : nextToasts;\n });\n\n // Auto-dismiss\n if (toastDuration > 0) {\n scheduleRemoval(id, toastDuration);\n }\n\n return id;\n }, [clearRemovalTimer, duration, max, scheduleRemoval]);\n\n const removeToast = React.useCallback((id: string) => {\n clearRemovalTimer(id);\n remainingRef.current.delete(id);\n startTimeRef.current.delete(id);\n setToasts((prev) => prev.filter((t) => t.id !== id));\n }, [clearRemovalTimer]);\n\n const pauseToast = React.useCallback((id: string) => {\n const remaining = remainingRef.current.get(id);\n if (remaining === undefined) return;\n\n const startedAt = startTimeRef.current.get(id);\n if (startedAt) {\n const elapsed = Date.now() - startedAt;\n remainingRef.current.set(id, Math.max(remaining - elapsed, 0));\n }\n clearRemovalTimer(id);\n }, [clearRemovalTimer]);\n\n const resumeToast = React.useCallback((id: string) => {\n const remaining = remainingRef.current.get(id);\n if (remaining === undefined || remaining <= 0) return;\n scheduleRemoval(id, remaining);\n }, [scheduleRemoval]);\n\n const clearToasts = React.useCallback(() => {\n timeoutRef.current.forEach((timeout) => {\n clearTimeout(timeout);\n });\n timeoutRef.current.clear();\n remainingRef.current.clear();\n startTimeRef.current.clear();\n setToasts([]);\n }, []);\n\n React.useEffect(\n () => () => {\n timeoutRef.current.forEach((timeout) => {\n clearTimeout(timeout);\n });\n timeoutRef.current.clear();\n remainingRef.current.clear();\n startTimeRef.current.clear();\n },\n []\n );\n\n const value = React.useMemo(\n () => ({ toasts, addToast, removeToast, clearToasts }),\n [toasts, addToast, removeToast, clearToasts]\n );\n\n return (\n <ToastContext.Provider value={value}>\n {children}\n <ToastContainer\n toasts={toasts}\n position={position}\n onDismiss={removeToast}\n onPause={pauseToast}\n onResume={resumeToast}\n />\n </ToastContext.Provider>\n );\n}\n\n// ============================================\n// Export Toast as compound component\n// ============================================\n\nexport const Toast = Object.assign(ToastItem, {\n Provider: ToastProvider,\n});\n"],"names":["React","jsx","styles","jsxs"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../src/components/Toast/index.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport styles from './Toast.module.scss';\n\n// ============================================\n// Types\n// ============================================\n\nexport type ToastVariant = 'default' | 'success' | 'error' | 'warning' | 'info';\nexport type ToastPosition =\n | 'top-left'\n | 'top-center'\n | 'top-right'\n | 'bottom-left'\n | 'bottom-center'\n | 'bottom-right';\n\nexport interface ToastData {\n id: string;\n title?: string;\n description?: string;\n variant?: ToastVariant;\n duration?: number;\n action?: {\n label: string;\n onClick: () => void;\n };\n}\n\nexport interface ToastInput extends Omit<ToastData, 'id'> {\n /** Optional explicit id (useful for deterministic tests / replacing a known toast) */\n id?: string;\n}\n\nexport interface ToastProps extends Omit<ToastData, 'id'>, Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> {\n /** Callback when toast should be dismissed */\n onDismiss?: () => void;\n}\n\nexport interface ToastProviderProps {\n /** Position of the toast container */\n position?: ToastPosition;\n /** Default duration in ms (0 = no auto-dismiss) */\n duration?: number;\n /** Maximum number of toasts to show */\n max?: number;\n /** Children */\n children: React.ReactNode;\n}\n\n// ============================================\n// Context\n// ============================================\n\ninterface ToastContextValue {\n toasts: ToastData[];\n addToast: (toast: ToastInput) => string;\n removeToast: (id: string) => void;\n clearToasts: () => void;\n}\n\nconst ToastContext = React.createContext<ToastContextValue | null>(null);\n\n// ============================================\n// Hook to use toast\n// ============================================\n\nexport function useToast() {\n const context = React.useContext(ToastContext);\n if (!context) {\n throw new Error('useToast must be used within a ToastProvider');\n }\n\n const toast = React.useCallback((options: ToastInput) => {\n return context.addToast(options);\n }, [context]);\n\n const makeVariantHelper = React.useCallback(\n (variant: ToastVariant) =>\n (titleOrOptions: string | Omit<ToastInput, 'variant'>, description?: string) => {\n if (typeof titleOrOptions === 'string') {\n return context.addToast({ title: titleOrOptions, description, variant });\n }\n return context.addToast({ ...titleOrOptions, variant });\n },\n [context]\n );\n\n const success = React.useMemo(() => makeVariantHelper('success'), [makeVariantHelper]);\n const error = React.useMemo(() => makeVariantHelper('error'), [makeVariantHelper]);\n const warning = React.useMemo(() => makeVariantHelper('warning'), [makeVariantHelper]);\n const info = React.useMemo(() => makeVariantHelper('info'), [makeVariantHelper]);\n\n return {\n toast,\n success,\n error,\n warning,\n info,\n dismiss: context.removeToast,\n dismissAll: context.clearToasts,\n };\n}\n\n// ============================================\n// Icons\n// ============================================\n\nfunction SuccessIcon() {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden=\"true\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"m9 12 2 2 4-4\" />\n </svg>\n );\n}\n\nfunction ErrorIcon() {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden=\"true\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <line x1=\"15\" y1=\"9\" x2=\"9\" y2=\"15\" />\n <line x1=\"9\" y1=\"9\" x2=\"15\" y2=\"15\" />\n </svg>\n );\n}\n\nfunction WarningIcon() {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden=\"true\">\n <path d=\"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3\" />\n <line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\" />\n <line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\" />\n </svg>\n );\n}\n\nfunction InfoIcon() {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden=\"true\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <line x1=\"12\" y1=\"16\" x2=\"12\" y2=\"12\" />\n <line x1=\"12\" y1=\"8\" x2=\"12.01\" y2=\"8\" />\n </svg>\n );\n}\n\nfunction CloseIcon() {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden=\"true\">\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n );\n}\n\nconst variantIcons: Record<ToastVariant, React.ComponentType | null> = {\n default: null,\n success: SuccessIcon,\n error: ErrorIcon,\n warning: WarningIcon,\n info: InfoIcon,\n};\n\n// ============================================\n// Toast Component\n// ============================================\n\nfunction ToastItem({\n id,\n title,\n description,\n variant = 'default',\n action,\n onDismiss,\n onPause,\n onResume,\n className,\n ...htmlProps\n}: ToastProps & {\n id?: string;\n onPause?: () => void;\n onResume?: () => void;\n}) {\n const Icon = variantIcons[variant];\n const uniqueId = React.useId();\n const toastRef = React.useRef<HTMLDivElement>(null);\n const titleId = title ? `toast-title-${id || uniqueId}` : undefined;\n const descId = description ? `toast-desc-${id || uniqueId}` : undefined;\n const liveRole = variant === 'error' || variant === 'warning' ? 'alert' : 'status';\n\n const toastClasses = [\n styles.toast,\n styles[variant],\n className,\n ].filter(Boolean).join(' ');\n\n return (\n <div\n ref={toastRef}\n {...htmlProps}\n className={toastClasses}\n role={liveRole}\n aria-atomic=\"true\"\n aria-labelledby={titleId}\n aria-describedby={descId}\n onMouseEnter={onPause}\n onMouseLeave={() => {\n requestAnimationFrame(() => {\n if (!toastRef.current?.contains(document.activeElement)) {\n onResume?.();\n }\n });\n }}\n onFocusCapture={onPause}\n onBlurCapture={() => {\n requestAnimationFrame(() => {\n if (!toastRef.current?.contains(document.activeElement)) {\n onResume?.();\n }\n });\n }}\n >\n {Icon && (\n <span className={styles.icon}>\n <Icon />\n </span>\n )}\n <div className={styles.content}>\n {title && <div id={titleId} className={styles.title}>{title}</div>}\n {description && <div id={descId} className={styles.description}>{description}</div>}\n </div>\n {action && (\n <button\n type=\"button\"\n className={styles.action}\n onClick={action.onClick}\n >\n {action.label}\n </button>\n )}\n {onDismiss && (\n <button\n type=\"button\"\n className={styles.close}\n onClick={onDismiss}\n aria-label=\"Dismiss notification\"\n >\n <CloseIcon />\n </button>\n )}\n </div>\n );\n}\n\n// ============================================\n// Toast Container\n// ============================================\n\nfunction ToastContainer({\n toasts,\n position,\n onDismiss,\n onPause,\n onResume,\n}: {\n toasts: ToastData[];\n position: ToastPosition;\n onDismiss: (id: string) => void;\n onPause: (id: string) => void;\n onResume: (id: string) => void;\n}) {\n const containerClasses = [\n styles.container,\n styles[position.replace('-', '')],\n ].filter(Boolean).join(' ');\n\n // Always render the container for screen reader live region to work properly\n // The live region must exist before announcements are made\n return (\n <div className={containerClasses} role=\"region\" aria-label=\"Notifications\">\n {toasts.map((toast) => (\n <ToastItem\n key={toast.id}\n {...toast}\n onDismiss={() => onDismiss(toast.id)}\n onPause={() => onPause(toast.id)}\n onResume={() => onResume(toast.id)}\n />\n ))}\n </div>\n );\n}\n\n// ============================================\n// Toast Provider\n// ============================================\n\nexport function ToastProvider({\n position = 'bottom-right',\n duration = 8000,\n max = 5,\n children,\n}: ToastProviderProps) {\n const [toasts, setToasts] = React.useState<ToastData[]>([]);\n const idCounterRef = React.useRef(0);\n const timeoutRef = React.useRef(new Map<string, ReturnType<typeof setTimeout>>());\n const remainingRef = React.useRef(new Map<string, number>());\n const startTimeRef = React.useRef(new Map<string, number>());\n\n const clearRemovalTimer = React.useCallback((id: string) => {\n const timeout = timeoutRef.current.get(id);\n if (timeout) {\n clearTimeout(timeout);\n timeoutRef.current.delete(id);\n }\n }, []);\n\n const scheduleRemoval = React.useCallback(\n (id: string, delay: number) => {\n if (delay <= 0) return;\n clearRemovalTimer(id);\n remainingRef.current.set(id, delay);\n startTimeRef.current.set(id, Date.now());\n\n const timeout = setTimeout(() => {\n setToasts((prev) => prev.filter((t) => t.id !== id));\n clearRemovalTimer(id);\n remainingRef.current.delete(id);\n startTimeRef.current.delete(id);\n }, delay);\n\n timeoutRef.current.set(id, timeout);\n },\n [clearRemovalTimer]\n );\n\n const addToast = React.useCallback((toast: ToastInput) => {\n const id = toast.id ?? `toast-${++idCounterRef.current}`;\n const toastDuration = toast.duration ?? (toast.action ? 0 : duration);\n\n setToasts((prev) => {\n const nextToasts = [...prev, { ...toast, id }];\n const overflowCount = Math.max(0, nextToasts.length - max);\n\n if (overflowCount > 0) {\n const removedToasts = nextToasts.slice(0, overflowCount);\n removedToasts.forEach((removedToast) => {\n clearRemovalTimer(removedToast.id);\n remainingRef.current.delete(removedToast.id);\n startTimeRef.current.delete(removedToast.id);\n });\n }\n\n return overflowCount > 0 ? nextToasts.slice(overflowCount) : nextToasts;\n });\n\n // Auto-dismiss\n if (toastDuration > 0) {\n scheduleRemoval(id, toastDuration);\n }\n\n return id;\n }, [clearRemovalTimer, duration, max, scheduleRemoval]);\n\n const removeToast = React.useCallback((id: string) => {\n clearRemovalTimer(id);\n remainingRef.current.delete(id);\n startTimeRef.current.delete(id);\n setToasts((prev) => prev.filter((t) => t.id !== id));\n }, [clearRemovalTimer]);\n\n const pauseToast = React.useCallback((id: string) => {\n const remaining = remainingRef.current.get(id);\n if (remaining === undefined) return;\n\n const startedAt = startTimeRef.current.get(id);\n if (startedAt) {\n const elapsed = Date.now() - startedAt;\n remainingRef.current.set(id, Math.max(remaining - elapsed, 0));\n }\n clearRemovalTimer(id);\n }, [clearRemovalTimer]);\n\n const resumeToast = React.useCallback((id: string) => {\n const remaining = remainingRef.current.get(id);\n if (remaining === undefined || remaining <= 0) return;\n scheduleRemoval(id, remaining);\n }, [scheduleRemoval]);\n\n const clearToasts = React.useCallback(() => {\n timeoutRef.current.forEach((timeout) => {\n clearTimeout(timeout);\n });\n timeoutRef.current.clear();\n remainingRef.current.clear();\n startTimeRef.current.clear();\n setToasts([]);\n }, []);\n\n React.useEffect(\n () => () => {\n timeoutRef.current.forEach((timeout) => {\n clearTimeout(timeout);\n });\n timeoutRef.current.clear();\n remainingRef.current.clear();\n startTimeRef.current.clear();\n },\n []\n );\n\n const value = React.useMemo(\n () => ({ toasts, addToast, removeToast, clearToasts }),\n [toasts, addToast, removeToast, clearToasts]\n );\n\n return (\n <ToastContext.Provider value={value}>\n {children}\n <ToastContainer\n toasts={toasts}\n position={position}\n onDismiss={removeToast}\n onPause={pauseToast}\n onResume={resumeToast}\n />\n </ToastContext.Provider>\n );\n}\n\n// ============================================\n// Export Toast as compound component\n// ============================================\n\nexport const Toast = Object.assign(ToastItem, {\n Provider: ToastProvider,\n});\n"],"names":["React","jsx","styles","jsxs"],"mappings":"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"}
|
|
@@ -12,6 +12,10 @@ export interface ToastData {
|
|
|
12
12
|
onClick: () => void;
|
|
13
13
|
};
|
|
14
14
|
}
|
|
15
|
+
export interface ToastInput extends Omit<ToastData, 'id'> {
|
|
16
|
+
/** Optional explicit id (useful for deterministic tests / replacing a known toast) */
|
|
17
|
+
id?: string;
|
|
18
|
+
}
|
|
15
19
|
export interface ToastProps extends Omit<ToastData, 'id'>, Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> {
|
|
16
20
|
/** Callback when toast should be dismissed */
|
|
17
21
|
onDismiss?: () => void;
|
|
@@ -27,11 +31,11 @@ export interface ToastProviderProps {
|
|
|
27
31
|
children: React.ReactNode;
|
|
28
32
|
}
|
|
29
33
|
export declare function useToast(): {
|
|
30
|
-
toast: (options:
|
|
31
|
-
success: (
|
|
32
|
-
error: (
|
|
33
|
-
warning: (
|
|
34
|
-
info: (
|
|
34
|
+
toast: (options: ToastInput) => string;
|
|
35
|
+
success: (titleOrOptions: string | Omit<ToastInput, "variant">, description?: string) => string;
|
|
36
|
+
error: (titleOrOptions: string | Omit<ToastInput, "variant">, description?: string) => string;
|
|
37
|
+
warning: (titleOrOptions: string | Omit<ToastInput, "variant">, description?: string) => string;
|
|
38
|
+
info: (titleOrOptions: string | Omit<ToastInput, "variant">, description?: string) => string;
|
|
35
39
|
dismiss: (id: string) => void;
|
|
36
40
|
dismissAll: () => void;
|
|
37
41
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Toast/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AAChF,MAAM,MAAM,aAAa,GACrB,UAAU,GACV,YAAY,GACZ,WAAW,GACX,aAAa,GACb,eAAe,GACf,cAAc,CAAC;AAEnB,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,IAAI,CAAC;KACrB,CAAC;CACH;AAED,MAAM,WAAW,UAAW,SAAQ,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAC5G,8CAA8C;IAC9C,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;CACxB;AAED,MAAM,WAAW,kBAAkB;IACjC,sCAAsC;IACtC,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,mDAAmD;IACnD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uCAAuC;IACvC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,eAAe;IACf,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAmBD,wBAAgB,QAAQ;qBAMoB,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Toast/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AAChF,MAAM,MAAM,aAAa,GACrB,UAAU,GACV,YAAY,GACZ,WAAW,GACX,aAAa,GACb,eAAe,GACf,cAAc,CAAC;AAEnB,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,IAAI,CAAC;KACrB,CAAC;CACH;AAED,MAAM,WAAW,UAAW,SAAQ,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC;IACvD,sFAAsF;IACtF,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,UAAW,SAAQ,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAC5G,8CAA8C;IAC9C,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;CACxB;AAED,MAAM,WAAW,kBAAkB;IACjC,sCAAsC;IACtC,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,mDAAmD;IACnD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uCAAuC;IACvC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,eAAe;IACf,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAmBD,wBAAgB,QAAQ;qBAMoB,UAAU;8BAM/B,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,gBAAgB,MAAM;4BAA1D,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,gBAAgB,MAAM;8BAA1D,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,gBAAgB,MAAM;2BAA1D,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,gBAAgB,MAAM;kBAtB7D,MAAM,KAAK,IAAI;sBACd,IAAI;EA4CxB;AAkED,iBAAS,SAAS,CAAC,EACjB,EAAE,EACF,KAAK,EACL,WAAW,EACX,OAAmB,EACnB,MAAM,EACN,SAAS,EACT,OAAO,EACP,QAAQ,EACR,SAAS,EACT,GAAG,SAAS,EACb,EAAE,UAAU,GAAG;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACvB,2CAsEA;AA6CD,wBAAgB,aAAa,CAAC,EAC5B,QAAyB,EACzB,QAAe,EACf,GAAO,EACP,QAAQ,GACT,EAAE,kBAAkB,2CA8HpB;AAMD,eAAO,MAAM,KAAK;;CAEhB,CAAC"}
|
|
@@ -10,18 +10,19 @@ function useToast() {
|
|
|
10
10
|
const toast = React.useCallback((options) => {
|
|
11
11
|
return context.addToast(options);
|
|
12
12
|
}, [context]);
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
const
|
|
23
|
-
|
|
24
|
-
|
|
13
|
+
const makeVariantHelper = React.useCallback(
|
|
14
|
+
(variant) => (titleOrOptions, description) => {
|
|
15
|
+
if (typeof titleOrOptions === "string") {
|
|
16
|
+
return context.addToast({ title: titleOrOptions, description, variant });
|
|
17
|
+
}
|
|
18
|
+
return context.addToast({ ...titleOrOptions, variant });
|
|
19
|
+
},
|
|
20
|
+
[context]
|
|
21
|
+
);
|
|
22
|
+
const success = React.useMemo(() => makeVariantHelper("success"), [makeVariantHelper]);
|
|
23
|
+
const error = React.useMemo(() => makeVariantHelper("error"), [makeVariantHelper]);
|
|
24
|
+
const warning = React.useMemo(() => makeVariantHelper("warning"), [makeVariantHelper]);
|
|
25
|
+
const info = React.useMemo(() => makeVariantHelper("info"), [makeVariantHelper]);
|
|
25
26
|
return {
|
|
26
27
|
toast,
|
|
27
28
|
success,
|
|
@@ -174,7 +175,6 @@ function ToastContainer({
|
|
|
174
175
|
toast.id
|
|
175
176
|
)) });
|
|
176
177
|
}
|
|
177
|
-
let toastCounter = 0;
|
|
178
178
|
function ToastProvider({
|
|
179
179
|
position = "bottom-right",
|
|
180
180
|
duration = 8e3,
|
|
@@ -182,6 +182,7 @@ function ToastProvider({
|
|
|
182
182
|
children
|
|
183
183
|
}) {
|
|
184
184
|
const [toasts, setToasts] = React.useState([]);
|
|
185
|
+
const idCounterRef = React.useRef(0);
|
|
185
186
|
const timeoutRef = React.useRef(/* @__PURE__ */ new Map());
|
|
186
187
|
const remainingRef = React.useRef(/* @__PURE__ */ new Map());
|
|
187
188
|
const startTimeRef = React.useRef(/* @__PURE__ */ new Map());
|
|
@@ -209,7 +210,7 @@ function ToastProvider({
|
|
|
209
210
|
[clearRemovalTimer]
|
|
210
211
|
);
|
|
211
212
|
const addToast = React.useCallback((toast) => {
|
|
212
|
-
const id = `toast-${++
|
|
213
|
+
const id = toast.id ?? `toast-${++idCounterRef.current}`;
|
|
213
214
|
const toastDuration = toast.duration ?? (toast.action ? 0 : duration);
|
|
214
215
|
setToasts((prev) => {
|
|
215
216
|
const nextToasts = [...prev, { ...toast, id }];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/Toast/index.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport styles from './Toast.module.scss';\n\n// ============================================\n// Types\n// ============================================\n\nexport type ToastVariant = 'default' | 'success' | 'error' | 'warning' | 'info';\nexport type ToastPosition =\n | 'top-left'\n | 'top-center'\n | 'top-right'\n | 'bottom-left'\n | 'bottom-center'\n | 'bottom-right';\n\nexport interface ToastData {\n id: string;\n title?: string;\n description?: string;\n variant?: ToastVariant;\n duration?: number;\n action?: {\n label: string;\n onClick: () => void;\n };\n}\n\nexport interface ToastProps extends Omit<ToastData, 'id'>, Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> {\n /** Callback when toast should be dismissed */\n onDismiss?: () => void;\n}\n\nexport interface ToastProviderProps {\n /** Position of the toast container */\n position?: ToastPosition;\n /** Default duration in ms (0 = no auto-dismiss) */\n duration?: number;\n /** Maximum number of toasts to show */\n max?: number;\n /** Children */\n children: React.ReactNode;\n}\n\n// ============================================\n// Context\n// ============================================\n\ninterface ToastContextValue {\n toasts: ToastData[];\n addToast: (toast: Omit<ToastData, 'id'>) => string;\n removeToast: (id: string) => void;\n clearToasts: () => void;\n}\n\nconst ToastContext = React.createContext<ToastContextValue | null>(null);\n\n// ============================================\n// Hook to use toast\n// ============================================\n\nexport function useToast() {\n const context = React.useContext(ToastContext);\n if (!context) {\n throw new Error('useToast must be used within a ToastProvider');\n }\n\n const toast = React.useCallback((options: Omit<ToastData, 'id'>) => {\n return context.addToast(options);\n }, [context]);\n\n const success = React.useCallback((title: string, description?: string) => {\n return context.addToast({ title, description, variant: 'success' });\n }, [context]);\n\n const error = React.useCallback((title: string, description?: string) => {\n return context.addToast({ title, description, variant: 'error' });\n }, [context]);\n\n const warning = React.useCallback((title: string, description?: string) => {\n return context.addToast({ title, description, variant: 'warning' });\n }, [context]);\n\n const info = React.useCallback((title: string, description?: string) => {\n return context.addToast({ title, description, variant: 'info' });\n }, [context]);\n\n return {\n toast,\n success,\n error,\n warning,\n info,\n dismiss: context.removeToast,\n dismissAll: context.clearToasts,\n };\n}\n\n// ============================================\n// Icons\n// ============================================\n\nfunction SuccessIcon() {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden=\"true\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"m9 12 2 2 4-4\" />\n </svg>\n );\n}\n\nfunction ErrorIcon() {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden=\"true\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <line x1=\"15\" y1=\"9\" x2=\"9\" y2=\"15\" />\n <line x1=\"9\" y1=\"9\" x2=\"15\" y2=\"15\" />\n </svg>\n );\n}\n\nfunction WarningIcon() {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden=\"true\">\n <path d=\"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3\" />\n <line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\" />\n <line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\" />\n </svg>\n );\n}\n\nfunction InfoIcon() {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden=\"true\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <line x1=\"12\" y1=\"16\" x2=\"12\" y2=\"12\" />\n <line x1=\"12\" y1=\"8\" x2=\"12.01\" y2=\"8\" />\n </svg>\n );\n}\n\nfunction CloseIcon() {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden=\"true\">\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n );\n}\n\nconst variantIcons: Record<ToastVariant, React.ComponentType | null> = {\n default: null,\n success: SuccessIcon,\n error: ErrorIcon,\n warning: WarningIcon,\n info: InfoIcon,\n};\n\n// ============================================\n// Toast Component\n// ============================================\n\nfunction ToastItem({\n id,\n title,\n description,\n variant = 'default',\n action,\n onDismiss,\n onPause,\n onResume,\n className,\n ...htmlProps\n}: ToastProps & {\n id?: string;\n onPause?: () => void;\n onResume?: () => void;\n}) {\n const Icon = variantIcons[variant];\n const uniqueId = React.useId();\n const toastRef = React.useRef<HTMLDivElement>(null);\n const titleId = title ? `toast-title-${id || uniqueId}` : undefined;\n const descId = description ? `toast-desc-${id || uniqueId}` : undefined;\n const liveRole = variant === 'error' || variant === 'warning' ? 'alert' : 'status';\n\n const toastClasses = [\n styles.toast,\n styles[variant],\n className,\n ].filter(Boolean).join(' ');\n\n return (\n <div\n ref={toastRef}\n {...htmlProps}\n className={toastClasses}\n role={liveRole}\n aria-atomic=\"true\"\n aria-labelledby={titleId}\n aria-describedby={descId}\n onMouseEnter={onPause}\n onMouseLeave={() => {\n requestAnimationFrame(() => {\n if (!toastRef.current?.contains(document.activeElement)) {\n onResume?.();\n }\n });\n }}\n onFocusCapture={onPause}\n onBlurCapture={() => {\n requestAnimationFrame(() => {\n if (!toastRef.current?.contains(document.activeElement)) {\n onResume?.();\n }\n });\n }}\n >\n {Icon && (\n <span className={styles.icon}>\n <Icon />\n </span>\n )}\n <div className={styles.content}>\n {title && <div id={titleId} className={styles.title}>{title}</div>}\n {description && <div id={descId} className={styles.description}>{description}</div>}\n </div>\n {action && (\n <button\n type=\"button\"\n className={styles.action}\n onClick={action.onClick}\n >\n {action.label}\n </button>\n )}\n {onDismiss && (\n <button\n type=\"button\"\n className={styles.close}\n onClick={onDismiss}\n aria-label=\"Dismiss notification\"\n >\n <CloseIcon />\n </button>\n )}\n </div>\n );\n}\n\n// ============================================\n// Toast Container\n// ============================================\n\nfunction ToastContainer({\n toasts,\n position,\n onDismiss,\n onPause,\n onResume,\n}: {\n toasts: ToastData[];\n position: ToastPosition;\n onDismiss: (id: string) => void;\n onPause: (id: string) => void;\n onResume: (id: string) => void;\n}) {\n const containerClasses = [\n styles.container,\n styles[position.replace('-', '')],\n ].filter(Boolean).join(' ');\n\n // Always render the container for screen reader live region to work properly\n // The live region must exist before announcements are made\n return (\n <div className={containerClasses} role=\"region\" aria-label=\"Notifications\">\n {toasts.map((toast) => (\n <ToastItem\n key={toast.id}\n {...toast}\n onDismiss={() => onDismiss(toast.id)}\n onPause={() => onPause(toast.id)}\n onResume={() => onResume(toast.id)}\n />\n ))}\n </div>\n );\n}\n\n// ============================================\n// Toast Provider\n// ============================================\n\nlet toastCounter = 0;\n\nexport function ToastProvider({\n position = 'bottom-right',\n duration = 8000,\n max = 5,\n children,\n}: ToastProviderProps) {\n const [toasts, setToasts] = React.useState<ToastData[]>([]);\n const timeoutRef = React.useRef(new Map<string, ReturnType<typeof setTimeout>>());\n const remainingRef = React.useRef(new Map<string, number>());\n const startTimeRef = React.useRef(new Map<string, number>());\n\n const clearRemovalTimer = React.useCallback((id: string) => {\n const timeout = timeoutRef.current.get(id);\n if (timeout) {\n clearTimeout(timeout);\n timeoutRef.current.delete(id);\n }\n }, []);\n\n const scheduleRemoval = React.useCallback(\n (id: string, delay: number) => {\n if (delay <= 0) return;\n clearRemovalTimer(id);\n remainingRef.current.set(id, delay);\n startTimeRef.current.set(id, Date.now());\n\n const timeout = setTimeout(() => {\n setToasts((prev) => prev.filter((t) => t.id !== id));\n clearRemovalTimer(id);\n remainingRef.current.delete(id);\n startTimeRef.current.delete(id);\n }, delay);\n\n timeoutRef.current.set(id, timeout);\n },\n [clearRemovalTimer]\n );\n\n const addToast = React.useCallback((toast: Omit<ToastData, 'id'>) => {\n const id = `toast-${++toastCounter}`;\n const toastDuration = toast.duration ?? (toast.action ? 0 : duration);\n\n setToasts((prev) => {\n const nextToasts = [...prev, { ...toast, id }];\n const overflowCount = Math.max(0, nextToasts.length - max);\n\n if (overflowCount > 0) {\n const removedToasts = nextToasts.slice(0, overflowCount);\n removedToasts.forEach((removedToast) => {\n clearRemovalTimer(removedToast.id);\n remainingRef.current.delete(removedToast.id);\n startTimeRef.current.delete(removedToast.id);\n });\n }\n\n return overflowCount > 0 ? nextToasts.slice(overflowCount) : nextToasts;\n });\n\n // Auto-dismiss\n if (toastDuration > 0) {\n scheduleRemoval(id, toastDuration);\n }\n\n return id;\n }, [clearRemovalTimer, duration, max, scheduleRemoval]);\n\n const removeToast = React.useCallback((id: string) => {\n clearRemovalTimer(id);\n remainingRef.current.delete(id);\n startTimeRef.current.delete(id);\n setToasts((prev) => prev.filter((t) => t.id !== id));\n }, [clearRemovalTimer]);\n\n const pauseToast = React.useCallback((id: string) => {\n const remaining = remainingRef.current.get(id);\n if (remaining === undefined) return;\n\n const startedAt = startTimeRef.current.get(id);\n if (startedAt) {\n const elapsed = Date.now() - startedAt;\n remainingRef.current.set(id, Math.max(remaining - elapsed, 0));\n }\n clearRemovalTimer(id);\n }, [clearRemovalTimer]);\n\n const resumeToast = React.useCallback((id: string) => {\n const remaining = remainingRef.current.get(id);\n if (remaining === undefined || remaining <= 0) return;\n scheduleRemoval(id, remaining);\n }, [scheduleRemoval]);\n\n const clearToasts = React.useCallback(() => {\n timeoutRef.current.forEach((timeout) => {\n clearTimeout(timeout);\n });\n timeoutRef.current.clear();\n remainingRef.current.clear();\n startTimeRef.current.clear();\n setToasts([]);\n }, []);\n\n React.useEffect(\n () => () => {\n timeoutRef.current.forEach((timeout) => {\n clearTimeout(timeout);\n });\n timeoutRef.current.clear();\n remainingRef.current.clear();\n startTimeRef.current.clear();\n },\n []\n );\n\n const value = React.useMemo(\n () => ({ toasts, addToast, removeToast, clearToasts }),\n [toasts, addToast, removeToast, clearToasts]\n );\n\n return (\n <ToastContext.Provider value={value}>\n {children}\n <ToastContainer\n toasts={toasts}\n position={position}\n onDismiss={removeToast}\n onPause={pauseToast}\n onResume={resumeToast}\n />\n </ToastContext.Provider>\n );\n}\n\n// ============================================\n// Export Toast as compound component\n// ============================================\n\nexport const Toast = Object.assign(ToastItem, {\n Provider: ToastProvider,\n});\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/Toast/index.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport styles from './Toast.module.scss';\n\n// ============================================\n// Types\n// ============================================\n\nexport type ToastVariant = 'default' | 'success' | 'error' | 'warning' | 'info';\nexport type ToastPosition =\n | 'top-left'\n | 'top-center'\n | 'top-right'\n | 'bottom-left'\n | 'bottom-center'\n | 'bottom-right';\n\nexport interface ToastData {\n id: string;\n title?: string;\n description?: string;\n variant?: ToastVariant;\n duration?: number;\n action?: {\n label: string;\n onClick: () => void;\n };\n}\n\nexport interface ToastInput extends Omit<ToastData, 'id'> {\n /** Optional explicit id (useful for deterministic tests / replacing a known toast) */\n id?: string;\n}\n\nexport interface ToastProps extends Omit<ToastData, 'id'>, Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> {\n /** Callback when toast should be dismissed */\n onDismiss?: () => void;\n}\n\nexport interface ToastProviderProps {\n /** Position of the toast container */\n position?: ToastPosition;\n /** Default duration in ms (0 = no auto-dismiss) */\n duration?: number;\n /** Maximum number of toasts to show */\n max?: number;\n /** Children */\n children: React.ReactNode;\n}\n\n// ============================================\n// Context\n// ============================================\n\ninterface ToastContextValue {\n toasts: ToastData[];\n addToast: (toast: ToastInput) => string;\n removeToast: (id: string) => void;\n clearToasts: () => void;\n}\n\nconst ToastContext = React.createContext<ToastContextValue | null>(null);\n\n// ============================================\n// Hook to use toast\n// ============================================\n\nexport function useToast() {\n const context = React.useContext(ToastContext);\n if (!context) {\n throw new Error('useToast must be used within a ToastProvider');\n }\n\n const toast = React.useCallback((options: ToastInput) => {\n return context.addToast(options);\n }, [context]);\n\n const makeVariantHelper = React.useCallback(\n (variant: ToastVariant) =>\n (titleOrOptions: string | Omit<ToastInput, 'variant'>, description?: string) => {\n if (typeof titleOrOptions === 'string') {\n return context.addToast({ title: titleOrOptions, description, variant });\n }\n return context.addToast({ ...titleOrOptions, variant });\n },\n [context]\n );\n\n const success = React.useMemo(() => makeVariantHelper('success'), [makeVariantHelper]);\n const error = React.useMemo(() => makeVariantHelper('error'), [makeVariantHelper]);\n const warning = React.useMemo(() => makeVariantHelper('warning'), [makeVariantHelper]);\n const info = React.useMemo(() => makeVariantHelper('info'), [makeVariantHelper]);\n\n return {\n toast,\n success,\n error,\n warning,\n info,\n dismiss: context.removeToast,\n dismissAll: context.clearToasts,\n };\n}\n\n// ============================================\n// Icons\n// ============================================\n\nfunction SuccessIcon() {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden=\"true\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"m9 12 2 2 4-4\" />\n </svg>\n );\n}\n\nfunction ErrorIcon() {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden=\"true\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <line x1=\"15\" y1=\"9\" x2=\"9\" y2=\"15\" />\n <line x1=\"9\" y1=\"9\" x2=\"15\" y2=\"15\" />\n </svg>\n );\n}\n\nfunction WarningIcon() {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden=\"true\">\n <path d=\"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3\" />\n <line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\" />\n <line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\" />\n </svg>\n );\n}\n\nfunction InfoIcon() {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden=\"true\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <line x1=\"12\" y1=\"16\" x2=\"12\" y2=\"12\" />\n <line x1=\"12\" y1=\"8\" x2=\"12.01\" y2=\"8\" />\n </svg>\n );\n}\n\nfunction CloseIcon() {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden=\"true\">\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n );\n}\n\nconst variantIcons: Record<ToastVariant, React.ComponentType | null> = {\n default: null,\n success: SuccessIcon,\n error: ErrorIcon,\n warning: WarningIcon,\n info: InfoIcon,\n};\n\n// ============================================\n// Toast Component\n// ============================================\n\nfunction ToastItem({\n id,\n title,\n description,\n variant = 'default',\n action,\n onDismiss,\n onPause,\n onResume,\n className,\n ...htmlProps\n}: ToastProps & {\n id?: string;\n onPause?: () => void;\n onResume?: () => void;\n}) {\n const Icon = variantIcons[variant];\n const uniqueId = React.useId();\n const toastRef = React.useRef<HTMLDivElement>(null);\n const titleId = title ? `toast-title-${id || uniqueId}` : undefined;\n const descId = description ? `toast-desc-${id || uniqueId}` : undefined;\n const liveRole = variant === 'error' || variant === 'warning' ? 'alert' : 'status';\n\n const toastClasses = [\n styles.toast,\n styles[variant],\n className,\n ].filter(Boolean).join(' ');\n\n return (\n <div\n ref={toastRef}\n {...htmlProps}\n className={toastClasses}\n role={liveRole}\n aria-atomic=\"true\"\n aria-labelledby={titleId}\n aria-describedby={descId}\n onMouseEnter={onPause}\n onMouseLeave={() => {\n requestAnimationFrame(() => {\n if (!toastRef.current?.contains(document.activeElement)) {\n onResume?.();\n }\n });\n }}\n onFocusCapture={onPause}\n onBlurCapture={() => {\n requestAnimationFrame(() => {\n if (!toastRef.current?.contains(document.activeElement)) {\n onResume?.();\n }\n });\n }}\n >\n {Icon && (\n <span className={styles.icon}>\n <Icon />\n </span>\n )}\n <div className={styles.content}>\n {title && <div id={titleId} className={styles.title}>{title}</div>}\n {description && <div id={descId} className={styles.description}>{description}</div>}\n </div>\n {action && (\n <button\n type=\"button\"\n className={styles.action}\n onClick={action.onClick}\n >\n {action.label}\n </button>\n )}\n {onDismiss && (\n <button\n type=\"button\"\n className={styles.close}\n onClick={onDismiss}\n aria-label=\"Dismiss notification\"\n >\n <CloseIcon />\n </button>\n )}\n </div>\n );\n}\n\n// ============================================\n// Toast Container\n// ============================================\n\nfunction ToastContainer({\n toasts,\n position,\n onDismiss,\n onPause,\n onResume,\n}: {\n toasts: ToastData[];\n position: ToastPosition;\n onDismiss: (id: string) => void;\n onPause: (id: string) => void;\n onResume: (id: string) => void;\n}) {\n const containerClasses = [\n styles.container,\n styles[position.replace('-', '')],\n ].filter(Boolean).join(' ');\n\n // Always render the container for screen reader live region to work properly\n // The live region must exist before announcements are made\n return (\n <div className={containerClasses} role=\"region\" aria-label=\"Notifications\">\n {toasts.map((toast) => (\n <ToastItem\n key={toast.id}\n {...toast}\n onDismiss={() => onDismiss(toast.id)}\n onPause={() => onPause(toast.id)}\n onResume={() => onResume(toast.id)}\n />\n ))}\n </div>\n );\n}\n\n// ============================================\n// Toast Provider\n// ============================================\n\nexport function ToastProvider({\n position = 'bottom-right',\n duration = 8000,\n max = 5,\n children,\n}: ToastProviderProps) {\n const [toasts, setToasts] = React.useState<ToastData[]>([]);\n const idCounterRef = React.useRef(0);\n const timeoutRef = React.useRef(new Map<string, ReturnType<typeof setTimeout>>());\n const remainingRef = React.useRef(new Map<string, number>());\n const startTimeRef = React.useRef(new Map<string, number>());\n\n const clearRemovalTimer = React.useCallback((id: string) => {\n const timeout = timeoutRef.current.get(id);\n if (timeout) {\n clearTimeout(timeout);\n timeoutRef.current.delete(id);\n }\n }, []);\n\n const scheduleRemoval = React.useCallback(\n (id: string, delay: number) => {\n if (delay <= 0) return;\n clearRemovalTimer(id);\n remainingRef.current.set(id, delay);\n startTimeRef.current.set(id, Date.now());\n\n const timeout = setTimeout(() => {\n setToasts((prev) => prev.filter((t) => t.id !== id));\n clearRemovalTimer(id);\n remainingRef.current.delete(id);\n startTimeRef.current.delete(id);\n }, delay);\n\n timeoutRef.current.set(id, timeout);\n },\n [clearRemovalTimer]\n );\n\n const addToast = React.useCallback((toast: ToastInput) => {\n const id = toast.id ?? `toast-${++idCounterRef.current}`;\n const toastDuration = toast.duration ?? (toast.action ? 0 : duration);\n\n setToasts((prev) => {\n const nextToasts = [...prev, { ...toast, id }];\n const overflowCount = Math.max(0, nextToasts.length - max);\n\n if (overflowCount > 0) {\n const removedToasts = nextToasts.slice(0, overflowCount);\n removedToasts.forEach((removedToast) => {\n clearRemovalTimer(removedToast.id);\n remainingRef.current.delete(removedToast.id);\n startTimeRef.current.delete(removedToast.id);\n });\n }\n\n return overflowCount > 0 ? nextToasts.slice(overflowCount) : nextToasts;\n });\n\n // Auto-dismiss\n if (toastDuration > 0) {\n scheduleRemoval(id, toastDuration);\n }\n\n return id;\n }, [clearRemovalTimer, duration, max, scheduleRemoval]);\n\n const removeToast = React.useCallback((id: string) => {\n clearRemovalTimer(id);\n remainingRef.current.delete(id);\n startTimeRef.current.delete(id);\n setToasts((prev) => prev.filter((t) => t.id !== id));\n }, [clearRemovalTimer]);\n\n const pauseToast = React.useCallback((id: string) => {\n const remaining = remainingRef.current.get(id);\n if (remaining === undefined) return;\n\n const startedAt = startTimeRef.current.get(id);\n if (startedAt) {\n const elapsed = Date.now() - startedAt;\n remainingRef.current.set(id, Math.max(remaining - elapsed, 0));\n }\n clearRemovalTimer(id);\n }, [clearRemovalTimer]);\n\n const resumeToast = React.useCallback((id: string) => {\n const remaining = remainingRef.current.get(id);\n if (remaining === undefined || remaining <= 0) return;\n scheduleRemoval(id, remaining);\n }, [scheduleRemoval]);\n\n const clearToasts = React.useCallback(() => {\n timeoutRef.current.forEach((timeout) => {\n clearTimeout(timeout);\n });\n timeoutRef.current.clear();\n remainingRef.current.clear();\n startTimeRef.current.clear();\n setToasts([]);\n }, []);\n\n React.useEffect(\n () => () => {\n timeoutRef.current.forEach((timeout) => {\n clearTimeout(timeout);\n });\n timeoutRef.current.clear();\n remainingRef.current.clear();\n startTimeRef.current.clear();\n },\n []\n );\n\n const value = React.useMemo(\n () => ({ toasts, addToast, removeToast, clearToasts }),\n [toasts, addToast, removeToast, clearToasts]\n );\n\n return (\n <ToastContext.Provider value={value}>\n {children}\n <ToastContainer\n toasts={toasts}\n position={position}\n onDismiss={removeToast}\n onPause={pauseToast}\n onResume={resumeToast}\n />\n </ToastContext.Provider>\n );\n}\n\n// ============================================\n// Export Toast as compound component\n// ============================================\n\nexport const Toast = Object.assign(ToastItem, {\n Provider: ToastProvider,\n});\n"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
3
|
-
const root = "
|
|
4
|
-
const rootWithDescription = "
|
|
5
|
-
const track = "
|
|
6
|
-
const trackSm = "
|
|
7
|
-
const trackMd = "
|
|
8
|
-
const thumb = "
|
|
9
|
-
const content = "
|
|
10
|
-
const label = "
|
|
11
|
-
const labelSm = "
|
|
12
|
-
const description = "
|
|
13
|
-
const descriptionSm = "
|
|
3
|
+
const root = "_root_1199k_1";
|
|
4
|
+
const rootWithDescription = "_rootWithDescription_1199k_14";
|
|
5
|
+
const track = "_track_1199k_17";
|
|
6
|
+
const trackSm = "_trackSm_1199k_47";
|
|
7
|
+
const trackMd = "_trackMd_1199k_59";
|
|
8
|
+
const thumb = "_thumb_1199k_71";
|
|
9
|
+
const content = "_content_1199k_95";
|
|
10
|
+
const label = "_label_1199k_99";
|
|
11
|
+
const labelSm = "_labelSm_1199k_106";
|
|
12
|
+
const description = "_description_1199k_110";
|
|
13
|
+
const descriptionSm = "_descriptionSm_1199k_118";
|
|
14
14
|
const styles = {
|
|
15
15
|
root,
|
|
16
16
|
rootWithDescription,
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
const root = "
|
|
2
|
-
const rootWithDescription = "
|
|
3
|
-
const track = "
|
|
4
|
-
const trackSm = "
|
|
5
|
-
const trackMd = "
|
|
6
|
-
const thumb = "
|
|
7
|
-
const content = "
|
|
8
|
-
const label = "
|
|
9
|
-
const labelSm = "
|
|
10
|
-
const description = "
|
|
11
|
-
const descriptionSm = "
|
|
1
|
+
const root = "_root_1199k_1";
|
|
2
|
+
const rootWithDescription = "_rootWithDescription_1199k_14";
|
|
3
|
+
const track = "_track_1199k_17";
|
|
4
|
+
const trackSm = "_trackSm_1199k_47";
|
|
5
|
+
const trackMd = "_trackMd_1199k_59";
|
|
6
|
+
const thumb = "_thumb_1199k_71";
|
|
7
|
+
const content = "_content_1199k_95";
|
|
8
|
+
const label = "_label_1199k_99";
|
|
9
|
+
const labelSm = "_labelSm_1199k_106";
|
|
10
|
+
const description = "_description_1199k_110";
|
|
11
|
+
const descriptionSm = "_descriptionSm_1199k_118";
|
|
12
12
|
const styles = {
|
|
13
13
|
root,
|
|
14
14
|
rootWithDescription,
|
|
@@ -68,7 +68,7 @@ const SwitchRoot = React__namespace.forwardRef(
|
|
|
68
68
|
"aria-labelledby": ariaLabelledBy,
|
|
69
69
|
"aria-describedby": ariaDescribedBy,
|
|
70
70
|
children: [
|
|
71
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
71
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: trackClasses, "aria-hidden": "true", children: /* @__PURE__ */ jsxRuntime.jsx(_switch.Switch.Thumb, { className: thumbClasses }) }),
|
|
72
72
|
(label || description) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: Toggle_module.default.content, children: [
|
|
73
73
|
label && /* @__PURE__ */ jsxRuntime.jsx("span", { className: labelClasses, children: label }),
|
|
74
74
|
description && /* @__PURE__ */ jsxRuntime.jsx("span", { className: descClasses, children: description })
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../../src/components/Toggle/index.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { Switch as BaseSwitch } from '@base-ui/react/switch';\nimport styles from './Toggle.module.scss';\n\n/**\n * Binary on/off switch for settings and preferences.\n * @see https://usefragments.com/components/switch\n */\nexport interface SwitchProps {\n /** Whether the switch is on */\n checked?: boolean;\n /** Default checked state (uncontrolled) */\n defaultChecked?: boolean;\n /** Called when the switch is toggled */\n onChange?: (checked: boolean) => void;\n /** Alias for onChange (Radix convention) */\n onCheckedChange?: (checked: boolean) => void;\n label?: string;\n description?: string;\n disabled?: boolean;\n size?: 'sm' | 'md';\n className?: string;\n name?: string;\n id?: string;\n 'aria-label'?: string;\n 'aria-labelledby'?: string;\n 'aria-describedby'?: string;\n}\n\nexport type ToggleProps = SwitchProps;\n\nconst SwitchRoot = React.forwardRef<HTMLButtonElement, SwitchProps>(\n function Switch(\n {\n checked,\n defaultChecked,\n onChange,\n onCheckedChange,\n label,\n description,\n disabled = false,\n size = 'md',\n className,\n name,\n id,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n 'aria-describedby': ariaDescribedBy,\n },\n ref\n ) {\n const trackClasses = [\n styles.track,\n size === 'sm' ? styles.trackSm : styles.trackMd,\n ].join(' ');\n\n const thumbClasses = styles.thumb;\n\n const labelClasses = [styles.label, size === 'sm' && styles.labelSm]\n .filter(Boolean)\n .join(' ');\n\n const descClasses = [\n styles.description,\n size === 'sm' && styles.descriptionSm,\n ]\n .filter(Boolean)\n .join(' ');\n\n const rootClasses = [\n styles.root,\n description && styles.rootWithDescription,\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <BaseSwitch.Root\n ref={ref}\n id={id}\n checked={checked}\n defaultChecked={defaultChecked}\n onCheckedChange={onChange ?? onCheckedChange}\n disabled={disabled}\n name={name}\n className={rootClasses}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n aria-describedby={ariaDescribedBy}\n >\n <
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../src/components/Toggle/index.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { Switch as BaseSwitch } from '@base-ui/react/switch';\nimport styles from './Toggle.module.scss';\n\n/**\n * Binary on/off switch for settings and preferences.\n * @see https://usefragments.com/components/switch\n */\nexport interface SwitchProps {\n /** Whether the switch is on */\n checked?: boolean;\n /** Default checked state (uncontrolled) */\n defaultChecked?: boolean;\n /** Called when the switch is toggled */\n onChange?: (checked: boolean) => void;\n /** Alias for onChange (Radix convention) */\n onCheckedChange?: (checked: boolean) => void;\n label?: string;\n description?: string;\n disabled?: boolean;\n size?: 'sm' | 'md';\n className?: string;\n name?: string;\n id?: string;\n 'aria-label'?: string;\n 'aria-labelledby'?: string;\n 'aria-describedby'?: string;\n}\n\nexport type ToggleProps = SwitchProps;\n\nconst SwitchRoot = React.forwardRef<HTMLButtonElement, SwitchProps>(\n function Switch(\n {\n checked,\n defaultChecked,\n onChange,\n onCheckedChange,\n label,\n description,\n disabled = false,\n size = 'md',\n className,\n name,\n id,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n 'aria-describedby': ariaDescribedBy,\n },\n ref\n ) {\n const trackClasses = [\n styles.track,\n size === 'sm' ? styles.trackSm : styles.trackMd,\n ].join(' ');\n\n const thumbClasses = styles.thumb;\n\n const labelClasses = [styles.label, size === 'sm' && styles.labelSm]\n .filter(Boolean)\n .join(' ');\n\n const descClasses = [\n styles.description,\n size === 'sm' && styles.descriptionSm,\n ]\n .filter(Boolean)\n .join(' ');\n\n const rootClasses = [\n styles.root,\n description && styles.rootWithDescription,\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <BaseSwitch.Root\n ref={ref}\n id={id}\n checked={checked}\n defaultChecked={defaultChecked}\n onCheckedChange={onChange ?? onCheckedChange}\n disabled={disabled}\n name={name}\n className={rootClasses}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n aria-describedby={ariaDescribedBy}\n >\n <span className={trackClasses} aria-hidden=\"true\">\n <BaseSwitch.Thumb className={thumbClasses} />\n </span>\n\n {(label || description) && (\n <div className={styles.content}>\n {label && <span className={labelClasses}>{label}</span>}\n {description && <span className={descClasses}>{description}</span>}\n </div>\n )}\n </BaseSwitch.Root>\n );\n }\n);\n\nexport const Switch = Object.assign(SwitchRoot, {\n Root: SwitchRoot,\n});\n\n/** @deprecated Use `Switch` instead. */\nexport const Toggle = Switch;\n"],"names":["React","Switch","styles","jsxs","BaseSwitch","jsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAiCA,MAAM,aAAaA,iBAAM;AAAA,EACvB,SAASC,QACP;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,WAAW;AAAA,IACX,OAAO;AAAA,IACP;AAAA,IACA;AAAA,IACA;AAAA,IACA,cAAc;AAAA,IACd,mBAAmB;AAAA,IACnB,oBAAoB;AAAA,EAAA,GAEtB,KACA;AACA,UAAM,eAAe;AAAA,MACnBC,cAAAA,QAAO;AAAA,MACP,SAAS,OAAOA,sBAAO,UAAUA,cAAAA,QAAO;AAAA,IAAA,EACxC,KAAK,GAAG;AAEV,UAAM,eAAeA,cAAAA,QAAO;AAE5B,UAAM,eAAe,CAACA,cAAAA,QAAO,OAAO,SAAS,QAAQA,sBAAO,OAAO,EAChE,OAAO,OAAO,EACd,KAAK,GAAG;AAEX,UAAM,cAAc;AAAA,MAClBA,cAAAA,QAAO;AAAA,MACP,SAAS,QAAQA,sBAAO;AAAA,IAAA,EAEvB,OAAO,OAAO,EACd,KAAK,GAAG;AAEX,UAAM,cAAc;AAAA,MAClBA,cAAAA,QAAO;AAAA,MACP,eAAeA,cAAAA,QAAO;AAAA,MACtB;AAAA,IAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG;AAEX,WACEC,2BAAAA;AAAAA,MAACC,QAAAA,OAAW;AAAA,MAAX;AAAA,QACC;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,iBAAiB,YAAY;AAAA,QAC7B;AAAA,QACA;AAAA,QACA,WAAW;AAAA,QACX,cAAY;AAAA,QACZ,mBAAiB;AAAA,QACjB,oBAAkB;AAAA,QAElB,UAAA;AAAA,UAAAC,2BAAAA,IAAC,QAAA,EAAK,WAAW,cAAc,eAAY,QACzC,UAAAA,2BAAAA,IAACD,QAAAA,OAAW,OAAX,EAAiB,WAAW,aAAA,CAAc,EAAA,CAC7C;AAAA,WAEE,SAAS,gBACTD,gCAAC,OAAA,EAAI,WAAWD,cAAAA,QAAO,SACpB,UAAA;AAAA,YAAA,SAASG,2BAAAA,IAAC,QAAA,EAAK,WAAW,cAAe,UAAA,OAAM;AAAA,YAC/C,eAAeA,2BAAAA,IAAC,QAAA,EAAK,WAAW,aAAc,UAAA,YAAA,CAAY;AAAA,UAAA,EAAA,CAC7D;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAIR;AACF;AAEO,MAAM,SAAS,OAAO,OAAO,YAAY;AAAA,EAC9C,MAAM;AACR,CAAC;;"}
|
|
@@ -49,7 +49,7 @@ const SwitchRoot = React.forwardRef(
|
|
|
49
49
|
"aria-labelledby": ariaLabelledBy,
|
|
50
50
|
"aria-describedby": ariaDescribedBy,
|
|
51
51
|
children: [
|
|
52
|
-
/* @__PURE__ */ jsx(
|
|
52
|
+
/* @__PURE__ */ jsx("span", { className: trackClasses, "aria-hidden": "true", children: /* @__PURE__ */ jsx(Switch$1.Thumb, { className: thumbClasses }) }),
|
|
53
53
|
(label || description) && /* @__PURE__ */ jsxs("div", { className: styles.content, children: [
|
|
54
54
|
label && /* @__PURE__ */ jsx("span", { className: labelClasses, children: label }),
|
|
55
55
|
description && /* @__PURE__ */ jsx("span", { className: descClasses, children: description })
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/Toggle/index.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { Switch as BaseSwitch } from '@base-ui/react/switch';\nimport styles from './Toggle.module.scss';\n\n/**\n * Binary on/off switch for settings and preferences.\n * @see https://usefragments.com/components/switch\n */\nexport interface SwitchProps {\n /** Whether the switch is on */\n checked?: boolean;\n /** Default checked state (uncontrolled) */\n defaultChecked?: boolean;\n /** Called when the switch is toggled */\n onChange?: (checked: boolean) => void;\n /** Alias for onChange (Radix convention) */\n onCheckedChange?: (checked: boolean) => void;\n label?: string;\n description?: string;\n disabled?: boolean;\n size?: 'sm' | 'md';\n className?: string;\n name?: string;\n id?: string;\n 'aria-label'?: string;\n 'aria-labelledby'?: string;\n 'aria-describedby'?: string;\n}\n\nexport type ToggleProps = SwitchProps;\n\nconst SwitchRoot = React.forwardRef<HTMLButtonElement, SwitchProps>(\n function Switch(\n {\n checked,\n defaultChecked,\n onChange,\n onCheckedChange,\n label,\n description,\n disabled = false,\n size = 'md',\n className,\n name,\n id,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n 'aria-describedby': ariaDescribedBy,\n },\n ref\n ) {\n const trackClasses = [\n styles.track,\n size === 'sm' ? styles.trackSm : styles.trackMd,\n ].join(' ');\n\n const thumbClasses = styles.thumb;\n\n const labelClasses = [styles.label, size === 'sm' && styles.labelSm]\n .filter(Boolean)\n .join(' ');\n\n const descClasses = [\n styles.description,\n size === 'sm' && styles.descriptionSm,\n ]\n .filter(Boolean)\n .join(' ');\n\n const rootClasses = [\n styles.root,\n description && styles.rootWithDescription,\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <BaseSwitch.Root\n ref={ref}\n id={id}\n checked={checked}\n defaultChecked={defaultChecked}\n onCheckedChange={onChange ?? onCheckedChange}\n disabled={disabled}\n name={name}\n className={rootClasses}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n aria-describedby={ariaDescribedBy}\n >\n <
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/Toggle/index.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { Switch as BaseSwitch } from '@base-ui/react/switch';\nimport styles from './Toggle.module.scss';\n\n/**\n * Binary on/off switch for settings and preferences.\n * @see https://usefragments.com/components/switch\n */\nexport interface SwitchProps {\n /** Whether the switch is on */\n checked?: boolean;\n /** Default checked state (uncontrolled) */\n defaultChecked?: boolean;\n /** Called when the switch is toggled */\n onChange?: (checked: boolean) => void;\n /** Alias for onChange (Radix convention) */\n onCheckedChange?: (checked: boolean) => void;\n label?: string;\n description?: string;\n disabled?: boolean;\n size?: 'sm' | 'md';\n className?: string;\n name?: string;\n id?: string;\n 'aria-label'?: string;\n 'aria-labelledby'?: string;\n 'aria-describedby'?: string;\n}\n\nexport type ToggleProps = SwitchProps;\n\nconst SwitchRoot = React.forwardRef<HTMLButtonElement, SwitchProps>(\n function Switch(\n {\n checked,\n defaultChecked,\n onChange,\n onCheckedChange,\n label,\n description,\n disabled = false,\n size = 'md',\n className,\n name,\n id,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n 'aria-describedby': ariaDescribedBy,\n },\n ref\n ) {\n const trackClasses = [\n styles.track,\n size === 'sm' ? styles.trackSm : styles.trackMd,\n ].join(' ');\n\n const thumbClasses = styles.thumb;\n\n const labelClasses = [styles.label, size === 'sm' && styles.labelSm]\n .filter(Boolean)\n .join(' ');\n\n const descClasses = [\n styles.description,\n size === 'sm' && styles.descriptionSm,\n ]\n .filter(Boolean)\n .join(' ');\n\n const rootClasses = [\n styles.root,\n description && styles.rootWithDescription,\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <BaseSwitch.Root\n ref={ref}\n id={id}\n checked={checked}\n defaultChecked={defaultChecked}\n onCheckedChange={onChange ?? onCheckedChange}\n disabled={disabled}\n name={name}\n className={rootClasses}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n aria-describedby={ariaDescribedBy}\n >\n <span className={trackClasses} aria-hidden=\"true\">\n <BaseSwitch.Thumb className={thumbClasses} />\n </span>\n\n {(label || description) && (\n <div className={styles.content}>\n {label && <span className={labelClasses}>{label}</span>}\n {description && <span className={descClasses}>{description}</span>}\n </div>\n )}\n </BaseSwitch.Root>\n );\n }\n);\n\nexport const Switch = Object.assign(SwitchRoot, {\n Root: SwitchRoot,\n});\n\n/** @deprecated Use `Switch` instead. */\nexport const Toggle = Switch;\n"],"names":["Switch","BaseSwitch"],"mappings":";;;;AAiCA,MAAM,aAAa,MAAM;AAAA,EACvB,SAASA,QACP;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,WAAW;AAAA,IACX,OAAO;AAAA,IACP;AAAA,IACA;AAAA,IACA;AAAA,IACA,cAAc;AAAA,IACd,mBAAmB;AAAA,IACnB,oBAAoB;AAAA,EAAA,GAEtB,KACA;AACA,UAAM,eAAe;AAAA,MACnB,OAAO;AAAA,MACP,SAAS,OAAO,OAAO,UAAU,OAAO;AAAA,IAAA,EACxC,KAAK,GAAG;AAEV,UAAM,eAAe,OAAO;AAE5B,UAAM,eAAe,CAAC,OAAO,OAAO,SAAS,QAAQ,OAAO,OAAO,EAChE,OAAO,OAAO,EACd,KAAK,GAAG;AAEX,UAAM,cAAc;AAAA,MAClB,OAAO;AAAA,MACP,SAAS,QAAQ,OAAO;AAAA,IAAA,EAEvB,OAAO,OAAO,EACd,KAAK,GAAG;AAEX,UAAM,cAAc;AAAA,MAClB,OAAO;AAAA,MACP,eAAe,OAAO;AAAA,MACtB;AAAA,IAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG;AAEX,WACE;AAAA,MAACC,SAAW;AAAA,MAAX;AAAA,QACC;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,iBAAiB,YAAY;AAAA,QAC7B;AAAA,QACA;AAAA,QACA,WAAW;AAAA,QACX,cAAY;AAAA,QACZ,mBAAiB;AAAA,QACjB,oBAAkB;AAAA,QAElB,UAAA;AAAA,UAAA,oBAAC,QAAA,EAAK,WAAW,cAAc,eAAY,QACzC,UAAA,oBAACA,SAAW,OAAX,EAAiB,WAAW,aAAA,CAAc,EAAA,CAC7C;AAAA,WAEE,SAAS,gBACT,qBAAC,OAAA,EAAI,WAAW,OAAO,SACpB,UAAA;AAAA,YAAA,SAAS,oBAAC,QAAA,EAAK,WAAW,cAAe,UAAA,OAAM;AAAA,YAC/C,eAAe,oBAAC,QAAA,EAAK,WAAW,aAAc,UAAA,YAAA,CAAY;AAAA,UAAA,EAAA,CAC7D;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAIR;AACF;AAEO,MAAM,SAAS,OAAO,OAAO,YAAY;AAAA,EAC9C,MAAM;AACR,CAAC;"}
|