@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
|
@@ -22,40 +22,33 @@ export interface AlertProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
|
22
22
|
severity?: AlertSeverity;
|
|
23
23
|
}
|
|
24
24
|
|
|
25
|
-
export interface AlertIconProps {
|
|
25
|
+
export interface AlertIconProps extends React.HTMLAttributes<HTMLSpanElement> {
|
|
26
26
|
children?: React.ReactNode;
|
|
27
|
-
className?: string;
|
|
28
27
|
}
|
|
29
28
|
|
|
30
|
-
export interface AlertTitleProps {
|
|
29
|
+
export interface AlertTitleProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
31
30
|
children: React.ReactNode;
|
|
32
|
-
className?: string;
|
|
33
31
|
}
|
|
34
32
|
|
|
35
|
-
export interface AlertContentProps {
|
|
33
|
+
export interface AlertContentProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
36
34
|
children: React.ReactNode;
|
|
37
|
-
className?: string;
|
|
38
35
|
}
|
|
39
36
|
|
|
40
|
-
export interface AlertActionsProps {
|
|
37
|
+
export interface AlertActionsProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
41
38
|
children: React.ReactNode;
|
|
42
|
-
className?: string;
|
|
43
39
|
}
|
|
44
40
|
|
|
45
|
-
export interface AlertActionProps {
|
|
41
|
+
export interface AlertActionProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'onClick'> {
|
|
46
42
|
children: React.ReactNode;
|
|
47
|
-
onClick
|
|
48
|
-
className?: string;
|
|
43
|
+
onClick?: React.MouseEventHandler<HTMLButtonElement>;
|
|
49
44
|
}
|
|
50
45
|
|
|
51
|
-
export interface AlertCloseProps {
|
|
46
|
+
export interface AlertCloseProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'children'> {
|
|
52
47
|
children?: React.ReactNode;
|
|
53
|
-
className?: string;
|
|
54
48
|
}
|
|
55
49
|
|
|
56
|
-
export interface AlertBodyProps {
|
|
50
|
+
export interface AlertBodyProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
57
51
|
children: React.ReactNode;
|
|
58
|
-
className?: string;
|
|
59
52
|
}
|
|
60
53
|
|
|
61
54
|
// ============================================
|
|
@@ -79,6 +72,17 @@ function useAlertContext() {
|
|
|
79
72
|
return context;
|
|
80
73
|
}
|
|
81
74
|
|
|
75
|
+
function composeEventHandlers<E extends { defaultPrevented: boolean }>(
|
|
76
|
+
userHandler?: (event: E) => void,
|
|
77
|
+
internalHandler?: (event: E) => void
|
|
78
|
+
) {
|
|
79
|
+
return (event: E) => {
|
|
80
|
+
userHandler?.(event);
|
|
81
|
+
if (event.defaultPrevented) return;
|
|
82
|
+
internalHandler?.(event);
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
|
|
82
86
|
// ============================================
|
|
83
87
|
// Severity Icons
|
|
84
88
|
// ============================================
|
|
@@ -136,64 +140,79 @@ function AlertRoot({
|
|
|
136
140
|
);
|
|
137
141
|
}
|
|
138
142
|
|
|
139
|
-
function AlertIcon({ children, className }: AlertIconProps) {
|
|
143
|
+
function AlertIcon({ children, className, ...htmlProps }: AlertIconProps) {
|
|
140
144
|
const { severity } = useAlertContext();
|
|
141
145
|
const classes = [styles.icon, className].filter(Boolean).join(' ');
|
|
142
146
|
|
|
143
147
|
return (
|
|
144
|
-
<span className={classes} aria-hidden="true">
|
|
148
|
+
<span {...htmlProps} className={classes} aria-hidden="true">
|
|
145
149
|
{children ?? severityIcons[severity]}
|
|
146
150
|
</span>
|
|
147
151
|
);
|
|
148
152
|
}
|
|
149
153
|
|
|
150
|
-
function AlertBody({ children, className }: AlertBodyProps) {
|
|
154
|
+
function AlertBody({ children, className, ...htmlProps }: AlertBodyProps) {
|
|
151
155
|
const classes = [styles.body, className].filter(Boolean).join(' ');
|
|
152
|
-
return <div className={classes}>{children}</div>;
|
|
156
|
+
return <div {...htmlProps} className={classes}>{children}</div>;
|
|
153
157
|
}
|
|
154
158
|
|
|
155
|
-
function AlertTitle({ children, className }: AlertTitleProps) {
|
|
159
|
+
function AlertTitle({ children, className, ...htmlProps }: AlertTitleProps) {
|
|
156
160
|
const { titleId } = useAlertContext();
|
|
157
161
|
const classes = [styles.title, className].filter(Boolean).join(' ');
|
|
158
162
|
return (
|
|
159
|
-
<div id={titleId} className={classes}>
|
|
163
|
+
<div {...htmlProps} id={htmlProps.id ?? titleId} className={classes}>
|
|
160
164
|
{children}
|
|
161
165
|
</div>
|
|
162
166
|
);
|
|
163
167
|
}
|
|
164
168
|
|
|
165
|
-
function AlertContent({ children, className }: AlertContentProps) {
|
|
169
|
+
function AlertContent({ children, className, ...htmlProps }: AlertContentProps) {
|
|
166
170
|
const { descId } = useAlertContext();
|
|
167
171
|
const classes = [styles.content, className].filter(Boolean).join(' ');
|
|
168
172
|
return (
|
|
169
|
-
<div id={descId} className={classes}>
|
|
173
|
+
<div {...htmlProps} id={htmlProps.id ?? descId} className={classes}>
|
|
170
174
|
{children}
|
|
171
175
|
</div>
|
|
172
176
|
);
|
|
173
177
|
}
|
|
174
178
|
|
|
175
|
-
function AlertActions({ children, className }: AlertActionsProps) {
|
|
179
|
+
function AlertActions({ children, className, ...htmlProps }: AlertActionsProps) {
|
|
176
180
|
const classes = [styles.actions, className].filter(Boolean).join(' ');
|
|
177
|
-
return <div className={classes}>{children}</div>;
|
|
181
|
+
return <div {...htmlProps} className={classes}>{children}</div>;
|
|
178
182
|
}
|
|
179
183
|
|
|
180
|
-
function AlertAction({
|
|
184
|
+
function AlertAction({
|
|
185
|
+
children,
|
|
186
|
+
onClick,
|
|
187
|
+
type = 'button',
|
|
188
|
+
className,
|
|
189
|
+
...htmlProps
|
|
190
|
+
}: AlertActionProps) {
|
|
181
191
|
const classes = [styles.action, className].filter(Boolean).join(' ');
|
|
182
192
|
return (
|
|
183
|
-
<BaseButton onClick={onClick} className={classes}>
|
|
193
|
+
<BaseButton {...htmlProps} onClick={onClick} type={type} className={classes}>
|
|
184
194
|
{children}
|
|
185
195
|
</BaseButton>
|
|
186
196
|
);
|
|
187
197
|
}
|
|
188
198
|
|
|
189
|
-
function AlertClose({
|
|
199
|
+
function AlertClose({
|
|
200
|
+
children,
|
|
201
|
+
className,
|
|
202
|
+
onClick,
|
|
203
|
+
type = 'button',
|
|
204
|
+
'aria-label': ariaLabel = 'Dismiss alert',
|
|
205
|
+
...htmlProps
|
|
206
|
+
}: AlertCloseProps) {
|
|
190
207
|
const { dismiss } = useAlertContext();
|
|
191
208
|
const classes = [styles.close, className].filter(Boolean).join(' ');
|
|
192
209
|
|
|
193
210
|
return (
|
|
194
211
|
<BaseButton
|
|
195
|
-
|
|
196
|
-
|
|
212
|
+
{...htmlProps}
|
|
213
|
+
onClick={composeEventHandlers(onClick, dismiss)}
|
|
214
|
+
type={type}
|
|
215
|
+
aria-label={ariaLabel}
|
|
197
216
|
className={classes}
|
|
198
217
|
>
|
|
199
218
|
{children ?? '\u00D7'}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { ChartBar, Gear, House, MagnifyingGlass } from '@phosphor-icons/react';
|
|
3
|
-
import { defineFragment } from '@fragments-sdk/
|
|
3
|
+
import { defineFragment } from '@fragments-sdk/core';
|
|
4
4
|
import { AppShell } from '.';
|
|
5
5
|
import { Box } from '../Box';
|
|
6
6
|
import { Header } from '../Header';
|
|
@@ -173,22 +173,22 @@
|
|
|
173
173
|
|
|
174
174
|
// Padding variants
|
|
175
175
|
.paddingSm {
|
|
176
|
-
padding: var(--fui-
|
|
176
|
+
padding: var(--fui-space-3);
|
|
177
177
|
}
|
|
178
178
|
|
|
179
179
|
.paddingMd {
|
|
180
|
-
padding: var(--fui-
|
|
180
|
+
padding: var(--fui-space-4);
|
|
181
181
|
|
|
182
182
|
@include breakpoint-md {
|
|
183
|
-
padding: var(--fui-
|
|
183
|
+
padding: var(--fui-space-6);
|
|
184
184
|
}
|
|
185
185
|
}
|
|
186
186
|
|
|
187
187
|
.paddingLg {
|
|
188
|
-
padding: var(--fui-
|
|
188
|
+
padding: var(--fui-space-6);
|
|
189
189
|
|
|
190
190
|
@include breakpoint-md {
|
|
191
|
-
padding: var(--fui-
|
|
191
|
+
padding: var(--fui-space-8);
|
|
192
192
|
}
|
|
193
193
|
}
|
|
194
194
|
|
|
@@ -77,4 +77,16 @@ describe('AppShell', () => {
|
|
|
77
77
|
);
|
|
78
78
|
await expectNoA11yViolations(container);
|
|
79
79
|
});
|
|
80
|
+
|
|
81
|
+
it('preserves root style props while applying internal CSS variables', () => {
|
|
82
|
+
const { container } = render(
|
|
83
|
+
<AppShell style={{ backgroundColor: 'rgb(1, 2, 3)' }}>
|
|
84
|
+
<AppShell.Main>Content</AppShell.Main>
|
|
85
|
+
</AppShell>
|
|
86
|
+
);
|
|
87
|
+
|
|
88
|
+
const root = container.firstElementChild as HTMLElement;
|
|
89
|
+
expect(root.style.backgroundColor).toBe('rgb(1, 2, 3)');
|
|
90
|
+
expect(root.style.getPropertyValue('--appshell-header-height')).toBe('56px');
|
|
91
|
+
});
|
|
80
92
|
});
|
|
@@ -190,6 +190,7 @@ function AppShellInner({
|
|
|
190
190
|
children,
|
|
191
191
|
className,
|
|
192
192
|
layout,
|
|
193
|
+
style: styleProp,
|
|
193
194
|
...htmlProps
|
|
194
195
|
}: {
|
|
195
196
|
children: React.ReactNode;
|
|
@@ -221,6 +222,7 @@ function AppShellInner({
|
|
|
221
222
|
'--appshell-sidebar-expanded-width': appShell.sidebarWidth,
|
|
222
223
|
'--appshell-sidebar-collapsed-width': appShell.sidebarCollapsedWidth,
|
|
223
224
|
'--appshell-aside-width': appShell.asideVisible ? appShell.asideWidth : '0px',
|
|
225
|
+
...styleProp,
|
|
224
226
|
} as React.CSSProperties;
|
|
225
227
|
|
|
226
228
|
return (
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { defineFragment } from '@fragments-sdk/
|
|
2
|
+
import { defineFragment } from '@fragments-sdk/core';
|
|
3
3
|
import { Avatar } from '.';
|
|
4
4
|
import { Stack } from '../Stack';
|
|
5
5
|
|
|
@@ -31,6 +31,7 @@ export default defineFragment({
|
|
|
31
31
|
'Use consistent sizes within the same context',
|
|
32
32
|
'Provide fallback initials when image may not load',
|
|
33
33
|
'Use Avatar.Group for multiple avatars in a row',
|
|
34
|
+
'Use imageProps for advanced img attributes (loading, decoding, referrerPolicy, etc.)',
|
|
34
35
|
],
|
|
35
36
|
accessibility: [
|
|
36
37
|
'Include meaningful alt text describing the user',
|
|
@@ -80,6 +81,10 @@ export default defineFragment({
|
|
|
80
81
|
type: 'string',
|
|
81
82
|
description: 'Inline style object applied to the underlying image element',
|
|
82
83
|
},
|
|
84
|
+
imageProps: {
|
|
85
|
+
type: 'object',
|
|
86
|
+
description: 'Additional props for the underlying img element (except src/alt/className/style)',
|
|
87
|
+
},
|
|
83
88
|
},
|
|
84
89
|
|
|
85
90
|
relations: [
|
|
@@ -97,6 +102,7 @@ export default defineFragment({
|
|
|
97
102
|
'size: xs|sm|md|lg|xl (default: md)',
|
|
98
103
|
'customSize: number|string - custom size override',
|
|
99
104
|
'imageStyle: CSSProperties - inline image styling',
|
|
105
|
+
'imageProps: ImgHTMLAttributes - advanced img attributes',
|
|
100
106
|
'shape: circle|square (default: circle)',
|
|
101
107
|
],
|
|
102
108
|
scenarioTags: [
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { describe, it, expect } from 'vitest';
|
|
2
|
-
import { render, screen, expectNoA11yViolations } from '../../test/utils';
|
|
1
|
+
import { describe, it, expect, vi } from 'vitest';
|
|
2
|
+
import { render, screen, act, expectNoA11yViolations } from '../../test/utils';
|
|
3
3
|
import { Avatar } from './index';
|
|
4
4
|
|
|
5
5
|
describe('Avatar', () => {
|
|
@@ -51,6 +51,28 @@ describe('Avatar', () => {
|
|
|
51
51
|
expect(img).toHaveStyle({ objectPosition: 'center 24%', transform: 'scale(1.4)' });
|
|
52
52
|
});
|
|
53
53
|
|
|
54
|
+
it('forwards imageProps to the underlying img and respects prevented onError', () => {
|
|
55
|
+
const onError = vi.fn((event: Event) => event.preventDefault());
|
|
56
|
+
render(
|
|
57
|
+
<Avatar
|
|
58
|
+
src="https://example.com/photo.jpg"
|
|
59
|
+
alt="Jane Doe"
|
|
60
|
+
imageProps={{ loading: 'lazy', referrerPolicy: 'no-referrer', onError }}
|
|
61
|
+
/>
|
|
62
|
+
);
|
|
63
|
+
|
|
64
|
+
const img = screen.getByRole('img');
|
|
65
|
+
expect(img).toHaveAttribute('loading', 'lazy');
|
|
66
|
+
expect(img).toHaveAttribute('referrerpolicy', 'no-referrer');
|
|
67
|
+
|
|
68
|
+
act(() => {
|
|
69
|
+
img.dispatchEvent(new Event('error', { bubbles: false, cancelable: true }));
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
expect(onError).toHaveBeenCalledTimes(1);
|
|
73
|
+
expect(screen.queryByText('JD')).not.toBeInTheDocument();
|
|
74
|
+
});
|
|
75
|
+
|
|
54
76
|
it('has no accessibility violations', async () => {
|
|
55
77
|
const { container } = render(<Avatar name="Jane Doe" />);
|
|
56
78
|
await expectNoA11yViolations(container);
|
|
@@ -32,6 +32,11 @@ export interface AvatarProps extends Omit<React.HTMLAttributes<HTMLDivElement>,
|
|
|
32
32
|
color?: string;
|
|
33
33
|
/** Inline style for the underlying image element */
|
|
34
34
|
imageStyle?: React.CSSProperties;
|
|
35
|
+
/** Additional props for the underlying img element */
|
|
36
|
+
imageProps?: Omit<
|
|
37
|
+
React.ImgHTMLAttributes<HTMLImageElement>,
|
|
38
|
+
'src' | 'alt' | 'className' | 'style'
|
|
39
|
+
>;
|
|
35
40
|
}
|
|
36
41
|
|
|
37
42
|
export interface AvatarGroupProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
@@ -113,6 +118,7 @@ const AvatarBase = React.forwardRef<HTMLDivElement, AvatarProps>(
|
|
|
113
118
|
shape = 'circle',
|
|
114
119
|
color,
|
|
115
120
|
imageStyle,
|
|
121
|
+
imageProps,
|
|
116
122
|
className,
|
|
117
123
|
style: styleProp,
|
|
118
124
|
...htmlProps
|
|
@@ -175,10 +181,16 @@ const AvatarBase = React.forwardRef<HTMLDivElement, AvatarProps>(
|
|
|
175
181
|
{!showFallback && (
|
|
176
182
|
<img
|
|
177
183
|
ref={imgRef}
|
|
184
|
+
{...imageProps}
|
|
178
185
|
src={src}
|
|
179
186
|
alt={alt}
|
|
180
187
|
className={styles.image}
|
|
181
|
-
onError={() =>
|
|
188
|
+
onError={(event) => {
|
|
189
|
+
imageProps?.onError?.(event);
|
|
190
|
+
if (!event.defaultPrevented) {
|
|
191
|
+
setImageError(true);
|
|
192
|
+
}
|
|
193
|
+
}}
|
|
182
194
|
style={{ ...imageStyle }}
|
|
183
195
|
/>
|
|
184
196
|
)}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { defineFragment } from '@fragments-sdk/
|
|
2
|
+
import { defineFragment } from '@fragments-sdk/core';
|
|
3
3
|
import { Badge } from '.';
|
|
4
4
|
import { Stack } from '../Stack';
|
|
5
5
|
|
|
@@ -33,6 +33,7 @@ export default defineFragment({
|
|
|
33
33
|
'Use dot variant for live status indicators',
|
|
34
34
|
'Pair success/error variants with meaningful labels, not just colors',
|
|
35
35
|
'Use onRemove for user-created tags only, not system-generated badges',
|
|
36
|
+
'Badges are not announced as live status updates by default; use announce for screen-reader status announcements when appropriate',
|
|
36
37
|
],
|
|
37
38
|
accessibility: [
|
|
38
39
|
'Badge text must be meaningful without relying on color alone',
|
|
@@ -72,6 +73,11 @@ export default defineFragment({
|
|
|
72
73
|
type: 'function',
|
|
73
74
|
description: 'Makes the badge removable. Called when X is clicked.',
|
|
74
75
|
},
|
|
76
|
+
announce: {
|
|
77
|
+
type: 'boolean',
|
|
78
|
+
description: 'Opt into role="status" live announcement semantics',
|
|
79
|
+
default: 'false',
|
|
80
|
+
},
|
|
75
81
|
},
|
|
76
82
|
|
|
77
83
|
relations: [
|
|
@@ -86,6 +92,7 @@ export default defineFragment({
|
|
|
86
92
|
'size: sm|md - badge size',
|
|
87
93
|
'dot: boolean - show status dot indicator',
|
|
88
94
|
'onRemove: () => void - makes badge removable',
|
|
95
|
+
'announce: boolean - opt into role="status" + auto status aria-label',
|
|
89
96
|
],
|
|
90
97
|
scenarioTags: [
|
|
91
98
|
'feedback.status',
|
|
@@ -147,6 +154,14 @@ import { Stack } from '@/components/Stack';
|
|
|
147
154
|
</Stack>
|
|
148
155
|
),
|
|
149
156
|
},
|
|
157
|
+
{
|
|
158
|
+
name: 'Announced Status',
|
|
159
|
+
description: 'Opt into screen-reader status announcement behavior',
|
|
160
|
+
code: `import { Badge } from '@/components/Badge';
|
|
161
|
+
|
|
162
|
+
<Badge variant="success" announce>Saved</Badge>`,
|
|
163
|
+
render: () => <Badge variant="success" announce>Saved</Badge>,
|
|
164
|
+
},
|
|
150
165
|
{
|
|
151
166
|
name: 'Outline',
|
|
152
167
|
description: 'Minimal bordered badge for neutral emphasis',
|
|
@@ -44,9 +44,16 @@ describe('Badge', () => {
|
|
|
44
44
|
expect(onRemove).toHaveBeenCalledOnce();
|
|
45
45
|
});
|
|
46
46
|
|
|
47
|
-
it('
|
|
47
|
+
it('does not implicitly announce status variants', () => {
|
|
48
48
|
const { container } = render(<Badge variant="error">Failed</Badge>);
|
|
49
49
|
const badge = container.firstChild as HTMLElement;
|
|
50
|
+
expect(badge).not.toHaveAttribute('role');
|
|
51
|
+
expect(badge).not.toHaveAttribute('aria-label', 'error: Failed');
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
it('announces badge content when announce is enabled', () => {
|
|
55
|
+
const { container } = render(<Badge variant="error" announce>Failed</Badge>);
|
|
56
|
+
const badge = container.firstChild as HTMLElement;
|
|
50
57
|
expect(badge).toHaveAttribute('role', 'status');
|
|
51
58
|
expect(badge).toHaveAttribute('aria-label', 'error: Failed');
|
|
52
59
|
});
|
|
@@ -23,6 +23,9 @@ export interface BadgeProps extends React.HTMLAttributes<HTMLSpanElement> {
|
|
|
23
23
|
icon?: React.ReactNode;
|
|
24
24
|
/** Makes the badge removable. Called when dismiss button is clicked. */
|
|
25
25
|
onRemove?: () => void;
|
|
26
|
+
/** Announce badge content as status to assistive tech (opt-in).
|
|
27
|
+
* @default false */
|
|
28
|
+
announce?: boolean;
|
|
26
29
|
}
|
|
27
30
|
|
|
28
31
|
const BadgeRoot = React.forwardRef<HTMLSpanElement, BadgeProps>(
|
|
@@ -34,8 +37,10 @@ const BadgeRoot = React.forwardRef<HTMLSpanElement, BadgeProps>(
|
|
|
34
37
|
dot = false,
|
|
35
38
|
icon,
|
|
36
39
|
onRemove,
|
|
40
|
+
announce = false,
|
|
37
41
|
className,
|
|
38
42
|
'aria-label': ariaLabel,
|
|
43
|
+
role,
|
|
39
44
|
...htmlProps
|
|
40
45
|
},
|
|
41
46
|
ref
|
|
@@ -46,7 +51,7 @@ const BadgeRoot = React.forwardRef<HTMLSpanElement, BadgeProps>(
|
|
|
46
51
|
|
|
47
52
|
// For status badges, include the status in the aria-label if not provided
|
|
48
53
|
const effectiveAriaLabel = ariaLabel || (
|
|
49
|
-
variant !== 'default' && variant !== 'outline'
|
|
54
|
+
announce && variant !== 'default' && variant !== 'outline'
|
|
50
55
|
? `${variant}: ${typeof children === 'string' ? children : ''}`
|
|
51
56
|
: undefined
|
|
52
57
|
);
|
|
@@ -56,7 +61,7 @@ const BadgeRoot = React.forwardRef<HTMLSpanElement, BadgeProps>(
|
|
|
56
61
|
ref={ref}
|
|
57
62
|
{...htmlProps}
|
|
58
63
|
className={classes}
|
|
59
|
-
role={
|
|
64
|
+
role={role ?? (announce ? 'status' : undefined)}
|
|
60
65
|
aria-label={effectiveAriaLabel}
|
|
61
66
|
>
|
|
62
67
|
{dot && <span className={styles.dot} aria-hidden="true" />}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { defineFragment } from '@fragments-sdk/
|
|
2
|
+
import { defineFragment } from '@fragments-sdk/core';
|
|
3
3
|
import { BentoGrid } from '.';
|
|
4
4
|
|
|
5
5
|
export default defineFragment({
|
|
@@ -30,6 +30,7 @@ export default defineFragment({
|
|
|
30
30
|
'The hero item typically uses colSpan={2} rowSpan={2} at lg and above',
|
|
31
31
|
'Items include built-in surface styling — no need to wrap children in Card',
|
|
32
32
|
'Grid auto-collapses: 3→2 columns below lg, all→1 column below sm',
|
|
33
|
+
'Root and Item forward DOM props (aria-*, data-*, handlers), and Item style merges with span CSS vars',
|
|
33
34
|
],
|
|
34
35
|
accessibility: [
|
|
35
36
|
'Grid is purely visual — it does not affect reading order or semantics',
|
|
@@ -77,6 +78,7 @@ export default defineFragment({
|
|
|
77
78
|
'gap: none|xs|sm|md|lg|xl (default: md)',
|
|
78
79
|
'BentoGrid.Item colSpan: 1|2|3 | { base, sm, md, lg, xl }',
|
|
79
80
|
'BentoGrid.Item rowSpan: 1|2|3 | { base, sm, md, lg, xl }',
|
|
81
|
+
'BentoGrid and BentoGrid.Item forward div DOM props; Item style is merged with generated span vars',
|
|
80
82
|
],
|
|
81
83
|
scenarioTags: [
|
|
82
84
|
'layout.bento',
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
@use
|
|
2
|
-
@use
|
|
1
|
+
@use "../../tokens/variables" as *;
|
|
2
|
+
@use "../../tokens/mixins" as *;
|
|
3
3
|
|
|
4
4
|
// ============================================
|
|
5
5
|
// BentoGrid Container
|
|
@@ -15,9 +15,15 @@
|
|
|
15
15
|
// Column counts
|
|
16
16
|
// ============================================
|
|
17
17
|
|
|
18
|
-
.columns2 {
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
.columns2 {
|
|
19
|
+
grid-template-columns: repeat(2, 1fr);
|
|
20
|
+
}
|
|
21
|
+
.columns3 {
|
|
22
|
+
grid-template-columns: repeat(3, 1fr);
|
|
23
|
+
}
|
|
24
|
+
.columns4 {
|
|
25
|
+
grid-template-columns: repeat(4, 1fr);
|
|
26
|
+
}
|
|
21
27
|
|
|
22
28
|
// ============================================
|
|
23
29
|
// Responsive collapse
|
|
@@ -42,12 +48,24 @@
|
|
|
42
48
|
// Gap
|
|
43
49
|
// ============================================
|
|
44
50
|
|
|
45
|
-
.gapNone {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
.
|
|
49
|
-
|
|
50
|
-
|
|
51
|
+
.gapNone {
|
|
52
|
+
gap: 0;
|
|
53
|
+
}
|
|
54
|
+
.gapXs {
|
|
55
|
+
gap: var(--fui-space-1, $fui-space-1);
|
|
56
|
+
}
|
|
57
|
+
.gapSm {
|
|
58
|
+
gap: var(--fui-space-2, $fui-space-2);
|
|
59
|
+
}
|
|
60
|
+
.gapMd {
|
|
61
|
+
gap: var(--fui-space-4, $fui-space-4);
|
|
62
|
+
}
|
|
63
|
+
.gapLg {
|
|
64
|
+
gap: var(--fui-space-6, $fui-space-6);
|
|
65
|
+
}
|
|
66
|
+
.gapXl {
|
|
67
|
+
gap: var(--fui-space-8, $fui-space-8);
|
|
68
|
+
}
|
|
51
69
|
|
|
52
70
|
// ============================================
|
|
53
71
|
// BentoGrid Item
|
|
@@ -57,7 +75,7 @@
|
|
|
57
75
|
@include surface-elevated;
|
|
58
76
|
|
|
59
77
|
min-width: 0;
|
|
60
|
-
padding: var(--fui-
|
|
78
|
+
padding: var(--fui-space-2, $fui-space-2);
|
|
61
79
|
transition:
|
|
62
80
|
box-shadow var(--fui-transition-fast, $fui-transition-fast),
|
|
63
81
|
border-color var(--fui-transition-fast, $fui-transition-fast),
|
|
@@ -87,13 +105,31 @@
|
|
|
87
105
|
}
|
|
88
106
|
|
|
89
107
|
@include breakpoint-lg {
|
|
90
|
-
--_col-span: var(
|
|
91
|
-
|
|
108
|
+
--_col-span: var(
|
|
109
|
+
--bento-col-span-lg,
|
|
110
|
+
var(--bento-col-span-md, var(--bento-col-span-sm, var(--bento-col-span, 1)))
|
|
111
|
+
);
|
|
112
|
+
--_row-span: var(
|
|
113
|
+
--bento-row-span-lg,
|
|
114
|
+
var(--bento-row-span-md, var(--bento-row-span-sm, var(--bento-row-span, 1)))
|
|
115
|
+
);
|
|
92
116
|
}
|
|
93
117
|
|
|
94
118
|
@include breakpoint-xl {
|
|
95
|
-
--_col-span: var(
|
|
96
|
-
|
|
119
|
+
--_col-span: var(
|
|
120
|
+
--bento-col-span-xl,
|
|
121
|
+
var(
|
|
122
|
+
--bento-col-span-lg,
|
|
123
|
+
var(--bento-col-span-md, var(--bento-col-span-sm, var(--bento-col-span, 1)))
|
|
124
|
+
)
|
|
125
|
+
);
|
|
126
|
+
--_row-span: var(
|
|
127
|
+
--bento-row-span-xl,
|
|
128
|
+
var(
|
|
129
|
+
--bento-row-span-lg,
|
|
130
|
+
var(--bento-row-span-md, var(--bento-row-span-sm, var(--bento-row-span, 1)))
|
|
131
|
+
)
|
|
132
|
+
);
|
|
97
133
|
}
|
|
98
134
|
}
|
|
99
135
|
|
|
@@ -125,6 +125,26 @@ describe('BentoGrid', () => {
|
|
|
125
125
|
expect(item).toBeInTheDocument();
|
|
126
126
|
});
|
|
127
127
|
|
|
128
|
+
it('forwards DOM props on root and item and merges item style with span vars', () => {
|
|
129
|
+
const { container } = render(
|
|
130
|
+
<BentoGrid data-testid="grid" aria-label="Bento grid">
|
|
131
|
+
<BentoGrid.Item
|
|
132
|
+
data-testid="item"
|
|
133
|
+
colSpan={2}
|
|
134
|
+
style={{ backgroundColor: 'rgb(1, 2, 3)' }}
|
|
135
|
+
>
|
|
136
|
+
Content
|
|
137
|
+
</BentoGrid.Item>
|
|
138
|
+
</BentoGrid>
|
|
139
|
+
);
|
|
140
|
+
|
|
141
|
+
expect(screen.getByTestId('grid')).toHaveAttribute('aria-label', 'Bento grid');
|
|
142
|
+
const item = screen.getByTestId('item');
|
|
143
|
+
expect(item).toHaveStyle({ backgroundColor: 'rgb(1, 2, 3)' });
|
|
144
|
+
expect(item.style.getPropertyValue('--bento-col-span')).toBe('2');
|
|
145
|
+
expect(container.querySelector('[data-testid=\"item\"]')).toBe(item);
|
|
146
|
+
});
|
|
147
|
+
|
|
128
148
|
it('has no accessibility violations', async () => {
|
|
129
149
|
const { container } = render(
|
|
130
150
|
<BentoGrid columns={3}>
|
|
@@ -20,26 +20,20 @@ export interface ResponsiveSpan {
|
|
|
20
20
|
xl?: SpanValue;
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
-
export interface BentoGridProps {
|
|
23
|
+
export interface BentoGridProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
24
24
|
children?: React.ReactNode;
|
|
25
25
|
/** Number of columns (default: 3) — auto-collapses responsively */
|
|
26
26
|
columns?: 2 | 3 | 4;
|
|
27
27
|
/** Gap between grid items */
|
|
28
28
|
gap?: 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl';
|
|
29
|
-
/** Additional class name */
|
|
30
|
-
className?: string;
|
|
31
|
-
/** Inline styles */
|
|
32
|
-
style?: React.CSSProperties;
|
|
33
29
|
}
|
|
34
30
|
|
|
35
|
-
export interface BentoGridItemProps {
|
|
31
|
+
export interface BentoGridItemProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
36
32
|
children?: React.ReactNode;
|
|
37
33
|
/** Columns to span — number for all breakpoints, object for per-breakpoint */
|
|
38
34
|
colSpan?: SpanValue | ResponsiveSpan;
|
|
39
35
|
/** Rows to span — number for all breakpoints, object for per-breakpoint */
|
|
40
36
|
rowSpan?: SpanValue | ResponsiveSpan;
|
|
41
|
-
/** Additional class name */
|
|
42
|
-
className?: string;
|
|
43
37
|
}
|
|
44
38
|
|
|
45
39
|
// ============================================
|
|
@@ -82,6 +76,7 @@ export const BentoGrid = React.forwardRef<HTMLDivElement, BentoGridProps>(
|
|
|
82
76
|
gap = 'md',
|
|
83
77
|
className,
|
|
84
78
|
style,
|
|
79
|
+
...htmlProps
|
|
85
80
|
},
|
|
86
81
|
ref
|
|
87
82
|
) {
|
|
@@ -95,7 +90,7 @@ export const BentoGrid = React.forwardRef<HTMLDivElement, BentoGridProps>(
|
|
|
95
90
|
.join(' ');
|
|
96
91
|
|
|
97
92
|
return (
|
|
98
|
-
<div ref={ref} className={classes} style={style}>
|
|
93
|
+
<div ref={ref} {...htmlProps} className={classes} style={style}>
|
|
99
94
|
{children}
|
|
100
95
|
</div>
|
|
101
96
|
);
|
|
@@ -113,6 +108,8 @@ const BentoGridItem = React.forwardRef<HTMLDivElement, BentoGridItemProps>(
|
|
|
113
108
|
colSpan,
|
|
114
109
|
rowSpan,
|
|
115
110
|
className,
|
|
111
|
+
style,
|
|
112
|
+
...htmlProps
|
|
116
113
|
},
|
|
117
114
|
ref
|
|
118
115
|
) {
|
|
@@ -123,13 +120,13 @@ const BentoGridItem = React.forwardRef<HTMLDivElement, BentoGridItemProps>(
|
|
|
123
120
|
|
|
124
121
|
const hasVars = Object.keys(spanVars).length > 0;
|
|
125
122
|
const inlineStyle = hasVars
|
|
126
|
-
? (spanVars as unknown as React.CSSProperties)
|
|
127
|
-
:
|
|
123
|
+
? ({ ...(spanVars as unknown as React.CSSProperties), ...style } as React.CSSProperties)
|
|
124
|
+
: style;
|
|
128
125
|
|
|
129
126
|
const classes = [styles.item, className].filter(Boolean).join(' ');
|
|
130
127
|
|
|
131
128
|
return (
|
|
132
|
-
<div ref={ref} className={classes} style={inlineStyle}>
|
|
129
|
+
<div ref={ref} {...htmlProps} className={classes} style={inlineStyle}>
|
|
133
130
|
{children}
|
|
134
131
|
</div>
|
|
135
132
|
);
|