@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,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 { Box } from '.';
|
|
4
4
|
|
|
5
5
|
export default defineFragment({
|
|
@@ -32,6 +32,7 @@ export default defineFragment({
|
|
|
32
32
|
'Choose semantic HTML elements (section, article) where appropriate',
|
|
33
33
|
'Combine with Stack or Grid for complex layouts',
|
|
34
34
|
'Use background variants from the design system, not custom colors',
|
|
35
|
+
'Box forwards DOM props (id, role, aria-*, data-*, event handlers) to the rendered element',
|
|
35
36
|
],
|
|
36
37
|
accessibility: [
|
|
37
38
|
'Choose semantic as prop values for proper document structure',
|
|
@@ -189,6 +190,7 @@ export default defineFragment({
|
|
|
189
190
|
'color: primary|secondary|tertiary|accent|inverse - text color',
|
|
190
191
|
'width/minWidth/maxWidth: string|number - sizing',
|
|
191
192
|
'height/minHeight/maxHeight: string|number - sizing',
|
|
193
|
+
'All standard HTMLElement props are forwarded to the rendered element',
|
|
192
194
|
],
|
|
193
195
|
scenarioTags: [
|
|
194
196
|
'layout.container',
|
|
@@ -40,4 +40,18 @@ describe('Box', () => {
|
|
|
40
40
|
const { container } = render(<Box>Accessible</Box>);
|
|
41
41
|
await expectNoA11yViolations(container);
|
|
42
42
|
});
|
|
43
|
+
|
|
44
|
+
it('forwards DOM props and event handlers', () => {
|
|
45
|
+
const onClick = vi.fn();
|
|
46
|
+
render(
|
|
47
|
+
<Box data-testid="box" id="box-id" aria-label="Box label" onClick={onClick}>
|
|
48
|
+
Content
|
|
49
|
+
</Box>
|
|
50
|
+
);
|
|
51
|
+
const el = screen.getByTestId('box');
|
|
52
|
+
el.click();
|
|
53
|
+
expect(el).toHaveAttribute('id', 'box-id');
|
|
54
|
+
expect(el).toHaveAttribute('aria-label', 'Box label');
|
|
55
|
+
expect(onClick).toHaveBeenCalledTimes(1);
|
|
56
|
+
});
|
|
43
57
|
});
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import styles from './Box.module.scss';
|
|
3
3
|
|
|
4
|
-
export interface BoxProps {
|
|
4
|
+
export interface BoxProps extends Omit<React.HTMLAttributes<HTMLElement>, 'color'> {
|
|
5
5
|
children?: React.ReactNode;
|
|
6
6
|
/** HTML element to render */
|
|
7
7
|
as?: 'div' | 'section' | 'article' | 'aside' | 'main' | 'header' | 'footer' | 'nav' | 'span';
|
|
@@ -95,6 +95,7 @@ const BoxRoot = React.forwardRef<HTMLElement, BoxProps>(
|
|
|
95
95
|
maxHeight,
|
|
96
96
|
className,
|
|
97
97
|
style,
|
|
98
|
+
...htmlProps
|
|
98
99
|
},
|
|
99
100
|
ref
|
|
100
101
|
) {
|
|
@@ -136,7 +137,12 @@ const BoxRoot = React.forwardRef<HTMLElement, BoxProps>(
|
|
|
136
137
|
const mergedStyle = hasSizing ? { ...sizingStyle, ...style } : style;
|
|
137
138
|
|
|
138
139
|
return (
|
|
139
|
-
<Component
|
|
140
|
+
<Component
|
|
141
|
+
ref={ref as React.Ref<never>}
|
|
142
|
+
{...htmlProps}
|
|
143
|
+
className={classes}
|
|
144
|
+
style={mergedStyle}
|
|
145
|
+
>
|
|
140
146
|
{children}
|
|
141
147
|
</Component>
|
|
142
148
|
);
|
|
@@ -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 { Breadcrumbs } from '.';
|
|
4
4
|
|
|
5
5
|
export default defineFragment({
|
|
@@ -30,6 +30,7 @@ export default defineFragment({
|
|
|
30
30
|
'Keep labels short and descriptive',
|
|
31
31
|
'Use maxItems to collapse long paths, keeping first and last visible',
|
|
32
32
|
'The separator defaults to "/" but can be customized',
|
|
33
|
+
'Use the label prop to customize the nav landmark name (defaults to "Breadcrumb")',
|
|
33
34
|
],
|
|
34
35
|
accessibility: [
|
|
35
36
|
'Uses <nav aria-label="Breadcrumb"> for landmark navigation',
|
|
@@ -54,6 +55,11 @@ export default defineFragment({
|
|
|
54
55
|
type: 'number',
|
|
55
56
|
description: 'Maximum visible items before collapsing middle items with ellipsis',
|
|
56
57
|
},
|
|
58
|
+
label: {
|
|
59
|
+
type: 'string',
|
|
60
|
+
description: 'Custom aria-label for the breadcrumb nav landmark',
|
|
61
|
+
default: '"Breadcrumb"',
|
|
62
|
+
},
|
|
57
63
|
},
|
|
58
64
|
|
|
59
65
|
relations: [
|
|
@@ -65,6 +71,7 @@ export default defineFragment({
|
|
|
65
71
|
propsSummary: [
|
|
66
72
|
'separator: ReactNode - custom separator (default "/")',
|
|
67
73
|
'maxItems: number - collapse middle items with ellipsis',
|
|
74
|
+
'label: string - nav landmark label (default "Breadcrumb")',
|
|
68
75
|
'Breadcrumbs.Item href: string - makes item a link',
|
|
69
76
|
'Breadcrumbs.Item current: boolean - marks current page',
|
|
70
77
|
'Breadcrumbs.Item icon: ReactNode - icon before label',
|
|
@@ -158,5 +165,16 @@ export default defineFragment({
|
|
|
158
165
|
</Breadcrumbs>
|
|
159
166
|
),
|
|
160
167
|
},
|
|
168
|
+
{
|
|
169
|
+
name: 'Custom Landmark Label',
|
|
170
|
+
description: 'Override the nav landmark label for screen readers',
|
|
171
|
+
render: () => (
|
|
172
|
+
<Breadcrumbs label="Documentation breadcrumbs">
|
|
173
|
+
<Breadcrumbs.Item href="#">Docs</Breadcrumbs.Item>
|
|
174
|
+
<Breadcrumbs.Item href="#">Components</Breadcrumbs.Item>
|
|
175
|
+
<Breadcrumbs.Item current>Breadcrumbs</Breadcrumbs.Item>
|
|
176
|
+
</Breadcrumbs>
|
|
177
|
+
),
|
|
178
|
+
},
|
|
161
179
|
],
|
|
162
180
|
});
|
|
@@ -13,6 +13,19 @@ describe('Breadcrumbs', () => {
|
|
|
13
13
|
expect(screen.getByRole('navigation', { name: 'Breadcrumb' })).toBeInTheDocument();
|
|
14
14
|
});
|
|
15
15
|
|
|
16
|
+
it('supports custom breadcrumb nav label and root props', () => {
|
|
17
|
+
render(
|
|
18
|
+
<Breadcrumbs label="Path" id="crumbs" data-testid="crumbs">
|
|
19
|
+
<Breadcrumbs.Item href="/">Home</Breadcrumbs.Item>
|
|
20
|
+
<Breadcrumbs.Item current>Page</Breadcrumbs.Item>
|
|
21
|
+
</Breadcrumbs>
|
|
22
|
+
);
|
|
23
|
+
|
|
24
|
+
const nav = screen.getByRole('navigation', { name: 'Path' });
|
|
25
|
+
expect(nav).toHaveAttribute('id', 'crumbs');
|
|
26
|
+
expect(nav).toHaveAttribute('data-testid', 'crumbs');
|
|
27
|
+
});
|
|
28
|
+
|
|
16
29
|
it('marks current page with aria-current="page"', () => {
|
|
17
30
|
render(
|
|
18
31
|
<Breadcrumbs>
|
|
@@ -13,6 +13,8 @@ export interface BreadcrumbsProps extends React.HTMLAttributes<HTMLElement> {
|
|
|
13
13
|
separator?: React.ReactNode;
|
|
14
14
|
/** Maximum visible items before collapsing middle items with ellipsis */
|
|
15
15
|
maxItems?: number;
|
|
16
|
+
/** Accessible label for the breadcrumb nav landmark (default: "Breadcrumb") */
|
|
17
|
+
label?: string;
|
|
16
18
|
}
|
|
17
19
|
|
|
18
20
|
export interface BreadcrumbsItemProps extends React.HTMLAttributes<HTMLLIElement> {
|
|
@@ -44,7 +46,9 @@ function BreadcrumbsRoot({
|
|
|
44
46
|
children,
|
|
45
47
|
separator = '/',
|
|
46
48
|
maxItems,
|
|
49
|
+
label = 'Breadcrumb',
|
|
47
50
|
className,
|
|
51
|
+
'aria-label': ariaLabel,
|
|
48
52
|
...htmlProps
|
|
49
53
|
}: BreadcrumbsProps) {
|
|
50
54
|
const classes = [styles.root, className].filter(Boolean).join(' ');
|
|
@@ -64,7 +68,7 @@ function BreadcrumbsRoot({
|
|
|
64
68
|
|
|
65
69
|
return (
|
|
66
70
|
<BreadcrumbsSeparatorContext.Provider value={separator}>
|
|
67
|
-
<nav aria-label=
|
|
71
|
+
<nav {...htmlProps} aria-label={ariaLabel ?? label} className={classes}>
|
|
68
72
|
<ol className={styles.list}>
|
|
69
73
|
{items.map((item, index) => {
|
|
70
74
|
const isFirst = index === 0;
|
|
@@ -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 { Button } from '.';
|
|
4
4
|
|
|
5
5
|
export default defineFragment({
|
|
@@ -30,6 +30,8 @@ export default defineFragment({
|
|
|
30
30
|
'Only one Primary button per section/form',
|
|
31
31
|
'Use Danger variant for destructive actions',
|
|
32
32
|
'Loading state should disable the button',
|
|
33
|
+
'When using asChild, pass interaction and accessibility props directly on Button (they are forwarded to the child element)',
|
|
34
|
+
'Use variant="icon" for the default icon-only action button, or combine icon={true} with another visual variant when needed',
|
|
33
35
|
],
|
|
34
36
|
accessibility: [
|
|
35
37
|
'Button text should describe the action',
|
|
@@ -46,9 +48,9 @@ export default defineFragment({
|
|
|
46
48
|
},
|
|
47
49
|
variant: {
|
|
48
50
|
type: 'enum',
|
|
49
|
-
values: ['primary', 'secondary', 'ghost', 'danger', 'outlined', 'outline'],
|
|
51
|
+
values: ['primary', 'secondary', 'ghost', 'danger', 'outlined', 'outline', 'icon'],
|
|
50
52
|
default: 'primary',
|
|
51
|
-
description: 'Visual style variant',
|
|
53
|
+
description: 'Visual style variant ("icon" is a convenience alias for ghost + icon-only layout)',
|
|
52
54
|
constraints: ['Only one primary button per context'],
|
|
53
55
|
},
|
|
54
56
|
size: {
|
|
@@ -71,7 +73,7 @@ export default defineFragment({
|
|
|
71
73
|
icon: {
|
|
72
74
|
type: 'boolean',
|
|
73
75
|
default: 'false',
|
|
74
|
-
description: 'Render as icon-only button (square aspect ratio)',
|
|
76
|
+
description: 'Render as icon-only button (square aspect ratio). Useful with any visual variant; variant="icon" is the default ghost icon-only shortcut.',
|
|
75
77
|
},
|
|
76
78
|
fullWidth: {
|
|
77
79
|
type: 'boolean',
|
|
@@ -100,11 +102,13 @@ export default defineFragment({
|
|
|
100
102
|
|
|
101
103
|
contract: {
|
|
102
104
|
propsSummary: [
|
|
103
|
-
'variant: primary|secondary|ghost|danger|outlined|outline (default: primary)',
|
|
105
|
+
'variant: primary|secondary|ghost|danger|outlined|outline|icon (default: primary, icon = ghost + icon-only)',
|
|
104
106
|
'size: sm|md|lg (default: md)',
|
|
105
107
|
'disabled: boolean - disables interaction',
|
|
106
108
|
'type: button|submit|reset (default: button)',
|
|
107
|
-
'onClick: () => void - action handler',
|
|
109
|
+
'onClick: (event) => void - action handler',
|
|
110
|
+
'asChild: boolean - composes styles/props onto a child element (links/router links)',
|
|
111
|
+
'icon: boolean - icon-only square layout (can be combined with visual variants)',
|
|
108
112
|
],
|
|
109
113
|
scenarioTags: [
|
|
110
114
|
'form.submit',
|
|
@@ -150,6 +154,15 @@ export default defineFragment({
|
|
|
150
154
|
description: 'Bordered button with transparent background',
|
|
151
155
|
render: () => <Button variant="outline">View Details</Button>,
|
|
152
156
|
},
|
|
157
|
+
{
|
|
158
|
+
name: 'Icon',
|
|
159
|
+
description: 'Convenience icon-only button alias (ghost + square icon sizing)',
|
|
160
|
+
render: () => (
|
|
161
|
+
<Button variant="icon" aria-label="Add item">
|
|
162
|
+
<span aria-hidden>+</span>
|
|
163
|
+
</Button>
|
|
164
|
+
),
|
|
165
|
+
},
|
|
153
166
|
{
|
|
154
167
|
name: 'Sizes',
|
|
155
168
|
description: 'Available size options',
|
|
@@ -166,5 +179,14 @@ export default defineFragment({
|
|
|
166
179
|
description: 'Non-interactive state',
|
|
167
180
|
render: () => <Button disabled>Cannot Click</Button>,
|
|
168
181
|
},
|
|
182
|
+
{
|
|
183
|
+
name: 'As Child',
|
|
184
|
+
description: 'Compose button styles onto another interactive element while preserving forwarded props',
|
|
185
|
+
render: () => (
|
|
186
|
+
<Button asChild variant="outlined" aria-label="Open billing settings">
|
|
187
|
+
<a href="#billing-settings">Billing Settings</a>
|
|
188
|
+
</Button>
|
|
189
|
+
),
|
|
190
|
+
},
|
|
169
191
|
],
|
|
170
192
|
});
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
@use
|
|
2
|
-
@use
|
|
1
|
+
@use "../../tokens/variables" as *;
|
|
2
|
+
@use "../../tokens/mixins" as *;
|
|
3
3
|
|
|
4
4
|
.button {
|
|
5
5
|
@include button-reset;
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
display: inline-flex;
|
|
10
10
|
align-items: center;
|
|
11
11
|
justify-content: center;
|
|
12
|
-
gap: var(--fui-space-
|
|
12
|
+
gap: var(--fui-space-1, $fui-space-1);
|
|
13
13
|
border-radius: var(--fui-radius-md, $fui-radius-md);
|
|
14
14
|
font-weight: var(--fui-font-weight-medium, $fui-font-weight-medium);
|
|
15
15
|
white-space: nowrap;
|
|
@@ -51,6 +51,17 @@ describe('Button', () => {
|
|
|
51
51
|
expect(screen.getByRole('button')).toHaveClass('outlined');
|
|
52
52
|
});
|
|
53
53
|
|
|
54
|
+
it('resolves variant="icon" to a ghost icon-only button', () => {
|
|
55
|
+
render(
|
|
56
|
+
<Button variant="icon" aria-label="Icon action">
|
|
57
|
+
<span aria-hidden>+</span>
|
|
58
|
+
</Button>
|
|
59
|
+
);
|
|
60
|
+
const button = screen.getByRole('button', { name: 'Icon action' });
|
|
61
|
+
expect(button).toHaveClass('ghost');
|
|
62
|
+
expect(button).toHaveClass('icon');
|
|
63
|
+
});
|
|
64
|
+
|
|
54
65
|
it('renders as child element when asChild is true', () => {
|
|
55
66
|
render(
|
|
56
67
|
<Button asChild>
|
|
@@ -10,15 +10,15 @@ import styles from './Button.module.scss';
|
|
|
10
10
|
*/
|
|
11
11
|
type ButtonBaseProps = {
|
|
12
12
|
children: React.ReactNode;
|
|
13
|
-
/** Visual style variant. `"outline"` is an alias for `"outlined"`.
|
|
13
|
+
/** Visual style variant. `"outline"` is an alias for `"outlined"`. `"icon"` is a convenience alias for a ghost icon-only button.
|
|
14
14
|
* @default "primary"
|
|
15
15
|
* @see https://usefragments.com/components/button#variants */
|
|
16
|
-
variant?: 'primary' | 'secondary' | 'ghost' | 'danger' | 'outlined' | 'outline';
|
|
16
|
+
variant?: 'primary' | 'secondary' | 'ghost' | 'danger' | 'outlined' | 'outline' | 'icon';
|
|
17
17
|
/** Button size.
|
|
18
18
|
* @default "md"
|
|
19
19
|
* @see https://usefragments.com/components/button#sizes */
|
|
20
20
|
size?: 'sm' | 'md' | 'lg';
|
|
21
|
-
/** Render as icon-only button (square aspect ratio) */
|
|
21
|
+
/** Render as icon-only button (square aspect ratio). Prefer `variant="icon"` for the default ghost icon button. */
|
|
22
22
|
icon?: boolean;
|
|
23
23
|
/** Make button full width of container */
|
|
24
24
|
fullWidth?: boolean;
|
|
@@ -58,14 +58,22 @@ const ButtonRoot = React.forwardRef<
|
|
|
58
58
|
...rest
|
|
59
59
|
} = props;
|
|
60
60
|
|
|
61
|
-
|
|
62
|
-
|
|
61
|
+
const iconOnly = icon || variantProp === 'icon';
|
|
62
|
+
|
|
63
|
+
// Resolve aliases:
|
|
64
|
+
// "outline" → "outlined"
|
|
65
|
+
// "icon" → visual "ghost" + icon-only sizing
|
|
66
|
+
const variant = variantProp === 'outline'
|
|
67
|
+
? 'outlined'
|
|
68
|
+
: variantProp === 'icon'
|
|
69
|
+
? 'ghost'
|
|
70
|
+
: variantProp;
|
|
63
71
|
|
|
64
72
|
const classNames = [
|
|
65
73
|
styles.button,
|
|
66
74
|
styles[size],
|
|
67
75
|
styles[variant],
|
|
68
|
-
|
|
76
|
+
iconOnly && styles.icon,
|
|
69
77
|
fullWidth && styles.fullWidth,
|
|
70
78
|
className,
|
|
71
79
|
]
|
|
@@ -74,7 +82,9 @@ const ButtonRoot = React.forwardRef<
|
|
|
74
82
|
|
|
75
83
|
// asChild: merge button styling onto child element (e.g. Next.js Link)
|
|
76
84
|
if (asChild && React.isValidElement(children)) {
|
|
85
|
+
const { as: _as, ...childProps } = rest as ButtonProps & { as?: 'a' | 'button' };
|
|
77
86
|
return React.cloneElement(children as React.ReactElement<Record<string, unknown>>, {
|
|
87
|
+
...childProps,
|
|
78
88
|
className: [classNames, (children.props as Record<string, unknown>).className].filter(Boolean).join(' '),
|
|
79
89
|
ref,
|
|
80
90
|
});
|
|
@@ -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 { ButtonGroup } from '.';
|
|
4
4
|
import { Button } from '../Button';
|
|
5
5
|
|
|
@@ -32,6 +32,7 @@ export default defineFragment({
|
|
|
32
32
|
'Use consistent button variants within a group',
|
|
33
33
|
'Consider visual hierarchy - primary action should stand out',
|
|
34
34
|
'Limit to 2-4 buttons per group for clarity',
|
|
35
|
+
'Pass role/aria-label/id/data-* directly to ButtonGroup when you need semantic grouping hooks',
|
|
35
36
|
],
|
|
36
37
|
accessibility: [
|
|
37
38
|
'Group provides semantic relationship between buttons',
|
|
@@ -75,6 +76,7 @@ export default defineFragment({
|
|
|
75
76
|
'gap: none|xs|sm|md - spacing between buttons',
|
|
76
77
|
'wrap: boolean - allow wrapping',
|
|
77
78
|
'align: start|center|end - alignment',
|
|
79
|
+
'Pass-through DOM props supported on root (id, role, aria-*, data-*, handlers)',
|
|
78
80
|
],
|
|
79
81
|
scenarioTags: [
|
|
80
82
|
'layout.group',
|
|
@@ -143,7 +145,7 @@ export default defineFragment({
|
|
|
143
145
|
name: 'Form Actions',
|
|
144
146
|
description: 'Common pattern for form submit/cancel',
|
|
145
147
|
render: () => (
|
|
146
|
-
<ButtonGroup align="end">
|
|
148
|
+
<ButtonGroup align="end" role="group" aria-label="Form actions">
|
|
147
149
|
<Button variant="ghost">Cancel</Button>
|
|
148
150
|
<Button variant="primary">Submit</Button>
|
|
149
151
|
</ButtonGroup>
|
|
@@ -32,6 +32,16 @@ describe('ButtonGroup', () => {
|
|
|
32
32
|
expect(container.firstElementChild).toHaveClass('wrap');
|
|
33
33
|
});
|
|
34
34
|
|
|
35
|
+
it('forwards DOM props to the group root', () => {
|
|
36
|
+
render(
|
|
37
|
+
<ButtonGroup data-testid="group" role="group" aria-label="Actions">
|
|
38
|
+
<button>Save</button>
|
|
39
|
+
</ButtonGroup>
|
|
40
|
+
);
|
|
41
|
+
expect(screen.getByTestId('group')).toHaveAttribute('aria-label', 'Actions');
|
|
42
|
+
expect(screen.getByTestId('group')).toHaveAttribute('role', 'group');
|
|
43
|
+
});
|
|
44
|
+
|
|
35
45
|
it('has no accessibility violations', async () => {
|
|
36
46
|
const { container } = render(
|
|
37
47
|
<ButtonGroup>
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import styles from './ButtonGroup.module.scss';
|
|
3
3
|
|
|
4
|
-
export interface ButtonGroupProps {
|
|
4
|
+
export interface ButtonGroupProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'children'> {
|
|
5
5
|
children: React.ReactNode;
|
|
6
6
|
gap?: 'none' | 'xs' | 'sm' | 'md';
|
|
7
7
|
wrap?: boolean;
|
|
8
8
|
align?: 'start' | 'center' | 'end';
|
|
9
|
-
className?: string;
|
|
10
9
|
}
|
|
11
10
|
|
|
12
11
|
const ButtonGroupRoot = React.forwardRef<HTMLDivElement, ButtonGroupProps>(
|
|
@@ -17,6 +16,7 @@ const ButtonGroupRoot = React.forwardRef<HTMLDivElement, ButtonGroupProps>(
|
|
|
17
16
|
wrap = false,
|
|
18
17
|
align,
|
|
19
18
|
className,
|
|
19
|
+
...htmlProps
|
|
20
20
|
},
|
|
21
21
|
ref
|
|
22
22
|
) {
|
|
@@ -31,7 +31,7 @@ const ButtonGroupRoot = React.forwardRef<HTMLDivElement, ButtonGroupProps>(
|
|
|
31
31
|
.join(' ');
|
|
32
32
|
|
|
33
33
|
return (
|
|
34
|
-
<div ref={ref} className={classes}>
|
|
34
|
+
<div ref={ref} {...htmlProps} className={classes}>
|
|
35
35
|
{children}
|
|
36
36
|
</div>
|
|
37
37
|
);
|
|
@@ -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 { Card } from '.';
|
|
4
4
|
|
|
5
5
|
export default defineFragment({
|
|
@@ -29,10 +29,10 @@ export default defineFragment({
|
|
|
29
29
|
'Use consistent card variants within the same context',
|
|
30
30
|
'Cards in a grid should have uniform sizing',
|
|
31
31
|
'Use elevated variant sparingly for emphasis',
|
|
32
|
-
'
|
|
32
|
+
'If a card is clickable, provide clear hover/focus affordances and prefer explicit buttons/links inside the card',
|
|
33
33
|
],
|
|
34
34
|
accessibility: [
|
|
35
|
-
'
|
|
35
|
+
'Card is a semantic container (article/div/section); onClick does not automatically add button semantics',
|
|
36
36
|
'Card titles should be appropriate heading levels',
|
|
37
37
|
],
|
|
38
38
|
},
|
|
@@ -55,9 +55,11 @@ export default defineFragment({
|
|
|
55
55
|
default: 'md',
|
|
56
56
|
description: 'Internal padding size',
|
|
57
57
|
},
|
|
58
|
-
|
|
59
|
-
type: '
|
|
60
|
-
|
|
58
|
+
as: {
|
|
59
|
+
type: 'enum',
|
|
60
|
+
values: ['article', 'div', 'section'],
|
|
61
|
+
default: 'article',
|
|
62
|
+
description: 'Semantic HTML element for the card root',
|
|
61
63
|
},
|
|
62
64
|
},
|
|
63
65
|
|
|
@@ -78,7 +80,8 @@ export default defineFragment({
|
|
|
78
80
|
propsSummary: [
|
|
79
81
|
'variant: default|outlined|outline|elevated (default: default)',
|
|
80
82
|
'padding: none|sm|md|lg (default: md)',
|
|
81
|
-
'
|
|
83
|
+
'as: article|div|section (default: article) - card root element',
|
|
84
|
+
'onClick: (event) => void - click handler on root (semantics unchanged)',
|
|
82
85
|
'Sub-components: Card.Header, Card.Title, Card.Description, Card.Body, Card.Footer',
|
|
83
86
|
],
|
|
84
87
|
scenarioTags: [
|
|
@@ -156,9 +159,9 @@ export default defineFragment({
|
|
|
156
159
|
},
|
|
157
160
|
{
|
|
158
161
|
name: 'Interactive',
|
|
159
|
-
description: 'Clickable card',
|
|
162
|
+
description: 'Clickable card surface (root stays a semantic container)',
|
|
160
163
|
render: () => (
|
|
161
|
-
<Card onClick={() => alert('Card clicked!')}>
|
|
164
|
+
<Card as="section" onClick={() => alert('Card clicked!')}>
|
|
162
165
|
<Card.Header>
|
|
163
166
|
<Card.Title>Click Me</Card.Title>
|
|
164
167
|
<Card.Description>This card is interactive</Card.Description>
|
|
@@ -167,6 +170,18 @@ export default defineFragment({
|
|
|
167
170
|
</Card>
|
|
168
171
|
),
|
|
169
172
|
},
|
|
173
|
+
{
|
|
174
|
+
name: 'Section Root',
|
|
175
|
+
description: 'Use the as prop to match the surrounding document semantics',
|
|
176
|
+
render: () => (
|
|
177
|
+
<Card as="section" aria-labelledby="billing-card-title">
|
|
178
|
+
<Card.Header>
|
|
179
|
+
<Card.Title id="billing-card-title">Billing Summary</Card.Title>
|
|
180
|
+
</Card.Header>
|
|
181
|
+
<Card.Body>Section semantics can improve document structure for grouped content.</Card.Body>
|
|
182
|
+
</Card>
|
|
183
|
+
),
|
|
184
|
+
},
|
|
170
185
|
{
|
|
171
186
|
name: 'With Footer',
|
|
172
187
|
description: 'Card with header, body, and footer',
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
@use
|
|
2
|
-
@use
|
|
1
|
+
@use "../../tokens/variables" as *;
|
|
2
|
+
@use "../../tokens/mixins" as *;
|
|
3
3
|
|
|
4
4
|
.card {
|
|
5
5
|
@include surface-elevated;
|
|
@@ -30,15 +30,15 @@
|
|
|
30
30
|
}
|
|
31
31
|
|
|
32
32
|
.paddingSm {
|
|
33
|
-
padding: var(--fui-
|
|
33
|
+
padding: var(--fui-space-1, $fui-space-1);
|
|
34
34
|
}
|
|
35
35
|
|
|
36
36
|
.paddingMd {
|
|
37
|
-
padding: var(--fui-
|
|
37
|
+
padding: var(--fui-space-2, $fui-space-2);
|
|
38
38
|
}
|
|
39
39
|
|
|
40
40
|
.paddingLg {
|
|
41
|
-
padding: var(--fui-
|
|
41
|
+
padding: var(--fui-space-4, $fui-space-4);
|
|
42
42
|
}
|
|
43
43
|
|
|
44
44
|
// Interactive card (when onClick is provided)
|
|
@@ -64,7 +64,7 @@
|
|
|
64
64
|
}
|
|
65
65
|
|
|
66
66
|
.header {
|
|
67
|
-
margin-bottom: var(--fui-space-
|
|
67
|
+
margin-bottom: var(--fui-space-2, $fui-space-2);
|
|
68
68
|
}
|
|
69
69
|
|
|
70
70
|
.title {
|
|
@@ -92,8 +92,8 @@
|
|
|
92
92
|
display: flex;
|
|
93
93
|
align-items: center;
|
|
94
94
|
gap: var(--fui-space-2, $fui-space-2);
|
|
95
|
-
margin-top: var(--fui-space-
|
|
96
|
-
padding-top: var(--fui-space-
|
|
95
|
+
margin-top: var(--fui-space-2, $fui-space-2);
|
|
96
|
+
padding-top: var(--fui-space-2, $fui-space-2);
|
|
97
97
|
border-top: 1px solid var(--fui-border, $fui-border);
|
|
98
98
|
}
|
|
99
99
|
|
|
@@ -8,10 +8,9 @@ describe('Card', () => {
|
|
|
8
8
|
expect(screen.getByRole('article')).toBeInTheDocument();
|
|
9
9
|
});
|
|
10
10
|
|
|
11
|
-
it('
|
|
11
|
+
it('stays as <article> with interactive class when onClick is provided', () => {
|
|
12
12
|
render(<Card onClick={() => {}}>Click me</Card>);
|
|
13
|
-
expect(screen.getByRole('
|
|
14
|
-
expect(screen.queryByRole('article')).not.toBeInTheDocument();
|
|
13
|
+
expect(screen.getByRole('article')).toHaveClass('interactive');
|
|
15
14
|
});
|
|
16
15
|
|
|
17
16
|
it('applies variant classes', () => {
|
|
@@ -31,7 +30,7 @@ describe('Card', () => {
|
|
|
31
30
|
const handleClick = vi.fn();
|
|
32
31
|
const user = userEvent.setup();
|
|
33
32
|
render(<Card onClick={handleClick}>Click me</Card>);
|
|
34
|
-
await user.click(screen.getByRole('
|
|
33
|
+
await user.click(screen.getByRole('article'));
|
|
35
34
|
expect(handleClick).toHaveBeenCalledTimes(1);
|
|
36
35
|
});
|
|
37
36
|
|
|
@@ -54,7 +53,7 @@ describe('Card', () => {
|
|
|
54
53
|
|
|
55
54
|
it('adds interactive class when onClick is provided', () => {
|
|
56
55
|
render(<Card onClick={() => {}}>Content</Card>);
|
|
57
|
-
expect(screen.getByRole('
|
|
56
|
+
expect(screen.getByRole('article')).toHaveClass('interactive');
|
|
58
57
|
});
|
|
59
58
|
|
|
60
59
|
it('resolves variant="outline" to "outlined"', () => {
|