@usefragments/ui 1.6.0 → 1.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -4
- package/dist/assets/fragments-wordmark.cjs +2 -2
- package/dist/assets/fragments-wordmark.d.ts.map +1 -1
- package/dist/assets/fragments-wordmark.js +2 -2
- package/dist/assets/ui.css +4720 -4159
- package/dist/chart.cjs +24 -6
- package/dist/chart.js +24 -6
- package/dist/codeblock.cjs +55 -29
- package/dist/codeblock.js +55 -29
- package/dist/colorpicker.cjs +3 -1
- package/dist/colorpicker.js +3 -1
- package/dist/components/Accordion/Accordion.module.scss.cjs +8 -8
- package/dist/components/Accordion/Accordion.module.scss.js +8 -8
- package/dist/components/Alert/Alert.module.scss.cjs +15 -12
- package/dist/components/Alert/Alert.module.scss.js +15 -12
- package/dist/components/Alert/index.cjs +7 -1
- package/dist/components/Alert/index.d.ts +12 -6
- package/dist/components/Alert/index.d.ts.map +1 -1
- package/dist/components/Alert/index.js +7 -1
- package/dist/components/AppShell/AppShell.module.scss.cjs +14 -14
- package/dist/components/AppShell/AppShell.module.scss.js +14 -14
- package/dist/components/Avatar/Avatar.module.scss.cjs +14 -14
- package/dist/components/Avatar/Avatar.module.scss.js +14 -14
- package/dist/components/Badge/Badge.module.scss.cjs +19 -19
- package/dist/components/Badge/Badge.module.scss.js +19 -19
- package/dist/components/BentoGrid/BentoGrid.module.scss.cjs +14 -14
- package/dist/components/BentoGrid/BentoGrid.module.scss.js +14 -14
- package/dist/components/Box/Box.module.scss.cjs +152 -152
- package/dist/components/Box/Box.module.scss.js +152 -152
- package/dist/components/Box/index.cjs +64 -75
- package/dist/components/Box/index.d.ts +16 -16
- package/dist/components/Box/index.d.ts.map +1 -1
- package/dist/components/Box/index.js +64 -75
- package/dist/components/Breadcrumbs/Breadcrumbs.module.scss.cjs +8 -8
- package/dist/components/Breadcrumbs/Breadcrumbs.module.scss.js +8 -8
- package/dist/components/Button/Button.module.scss.cjs +14 -14
- package/dist/components/Button/Button.module.scss.js +14 -14
- package/dist/components/Card/Card.module.scss.cjs +29 -17
- package/dist/components/Card/Card.module.scss.js +30 -18
- package/dist/components/Card/index.cjs +8 -0
- package/dist/components/Card/index.d.ts +12 -2
- package/dist/components/Card/index.d.ts.map +1 -1
- package/dist/components/Card/index.js +8 -0
- package/dist/components/Chart/Chart.module.scss.cjs +15 -15
- package/dist/components/Chart/Chart.module.scss.js +15 -15
- package/dist/components/Chart/index.d.ts.map +1 -1
- package/dist/components/Checkbox/Checkbox.module.scss.cjs +9 -9
- package/dist/components/Checkbox/Checkbox.module.scss.js +9 -9
- package/dist/components/Checkbox/index.cjs +2 -2
- package/dist/components/Checkbox/index.d.ts.map +1 -1
- package/dist/components/Checkbox/index.js +2 -2
- package/dist/components/Chip/Chip.module.scss.cjs +15 -15
- package/dist/components/Chip/Chip.module.scss.js +15 -15
- package/dist/components/Chip/index.cjs +2 -1
- package/dist/components/Chip/index.d.ts.map +1 -1
- package/dist/components/Chip/index.js +2 -1
- package/dist/components/CodeBlock/CodeBlock.module.scss.cjs +26 -23
- package/dist/components/CodeBlock/CodeBlock.module.scss.js +26 -23
- package/dist/components/CodeBlock/css-variables-theme.cjs +98 -0
- package/dist/components/CodeBlock/css-variables-theme.d.ts +27 -0
- package/dist/components/CodeBlock/css-variables-theme.d.ts.map +1 -0
- package/dist/components/CodeBlock/css-variables-theme.js +98 -0
- package/dist/components/CodeBlock/index.d.ts +17 -3
- package/dist/components/CodeBlock/index.d.ts.map +1 -1
- package/dist/components/Collapsible/Collapsible.module.scss.cjs +9 -9
- package/dist/components/Collapsible/Collapsible.module.scss.js +9 -9
- package/dist/components/ColorPicker/ColorPicker.module.scss.cjs +14 -14
- package/dist/components/ColorPicker/ColorPicker.module.scss.js +14 -14
- package/dist/components/ColorPicker/index.d.ts.map +1 -1
- package/dist/components/Combobox/Combobox.module.scss.cjs +21 -21
- package/dist/components/Combobox/Combobox.module.scss.js +21 -21
- package/dist/components/Combobox/index.cjs +17 -1
- package/dist/components/Combobox/index.d.ts.map +1 -1
- package/dist/components/Combobox/index.js +17 -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 +26 -15
- package/dist/components/Command/index.d.ts +2 -2
- package/dist/components/Command/index.d.ts.map +1 -1
- package/dist/components/Command/index.js +26 -15
- package/dist/components/ConversationList/ConversationList.module.scss.cjs +10 -10
- package/dist/components/ConversationList/ConversationList.module.scss.js +10 -10
- package/dist/components/DataTable/DataTable.icons.cjs +6 -33
- package/dist/components/DataTable/DataTable.icons.d.ts.map +1 -1
- package/dist/components/DataTable/DataTable.icons.js +6 -33
- package/dist/components/DataTable/DataTable.module.scss.cjs +27 -27
- package/dist/components/DataTable/DataTable.module.scss.js +27 -27
- package/dist/components/DataTable/index.d.ts.map +1 -1
- package/dist/components/DatePicker/DatePicker.module.scss.cjs +33 -33
- package/dist/components/DatePicker/DatePicker.module.scss.js +33 -33
- package/dist/components/DatePicker/index.d.ts.map +1 -1
- package/dist/components/Dialog/Dialog.module.scss.cjs +14 -14
- package/dist/components/Dialog/Dialog.module.scss.js +14 -14
- package/dist/components/Dialog/index.cjs +11 -14
- package/dist/components/Dialog/index.d.ts +7 -7
- package/dist/components/Dialog/index.d.ts.map +1 -1
- package/dist/components/Dialog/index.js +11 -14
- package/dist/components/Drawer/Drawer.module.scss.cjs +29 -29
- package/dist/components/Drawer/Drawer.module.scss.js +29 -29
- 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.d.ts +10 -10
- package/dist/components/Editor/index.d.ts.map +1 -1
- package/dist/components/EmptyState/EmptyState.module.scss.cjs +11 -8
- package/dist/components/EmptyState/EmptyState.module.scss.js +11 -8
- package/dist/components/EmptyState/index.cjs +8 -6
- package/dist/components/EmptyState/index.d.ts +9 -4
- package/dist/components/EmptyState/index.d.ts.map +1 -1
- package/dist/components/EmptyState/index.js +8 -6
- package/dist/components/Field/Field.module.scss.cjs +5 -5
- package/dist/components/Field/Field.module.scss.js +5 -5
- package/dist/components/Field/index.cjs +9 -1
- package/dist/components/Field/index.d.ts.map +1 -1
- package/dist/components/Field/index.js +9 -1
- package/dist/components/Fieldset/Fieldset.module.scss.cjs +3 -3
- package/dist/components/Fieldset/Fieldset.module.scss.js +3 -3
- package/dist/components/Grid/index.cjs +1 -1
- package/dist/components/Grid/index.js +1 -1
- package/dist/components/Header/Header.module.scss.cjs +33 -33
- package/dist/components/Header/Header.module.scss.js +33 -33
- package/dist/components/Header/index.cjs +17 -38
- package/dist/components/Header/index.d.ts +15 -11
- package/dist/components/Header/index.d.ts.map +1 -1
- package/dist/components/Header/index.js +17 -38
- package/dist/components/Icon/Icon.module.scss.cjs +15 -15
- package/dist/components/Icon/Icon.module.scss.js +15 -15
- package/dist/components/IconButton/IconButton.module.scss.cjs +8 -8
- package/dist/components/IconButton/IconButton.module.scss.js +8 -8
- package/dist/components/IconButton/index.cjs +2 -1
- package/dist/components/IconButton/index.d.ts.map +1 -1
- package/dist/components/IconButton/index.js +2 -1
- package/dist/components/Image/Image.module.scss.cjs +27 -27
- package/dist/components/Image/Image.module.scss.js +27 -27
- package/dist/components/Input/Input.module.scss.cjs +17 -17
- package/dist/components/Input/Input.module.scss.js +17 -17
- package/dist/components/Link/Link.module.scss.cjs +14 -10
- package/dist/components/Link/Link.module.scss.js +14 -10
- package/dist/components/Link/index.d.ts +1 -1
- package/dist/components/Link/index.d.ts.map +1 -1
- package/dist/components/List/List.module.scss.cjs +19 -19
- package/dist/components/List/List.module.scss.js +19 -19
- package/dist/components/Listbox/Listbox.module.scss.cjs +8 -8
- package/dist/components/Listbox/Listbox.module.scss.js +8 -8
- package/dist/components/Loading/Loading.module.scss.cjs +34 -34
- package/dist/components/Loading/Loading.module.scss.js +34 -34
- package/dist/components/Loading/index.cjs +1 -1
- package/dist/components/Loading/index.js +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 +2 -2
- package/dist/components/Markdown/index.d.ts.map +1 -1
- package/dist/components/Menu/Menu.module.scss.cjs +14 -14
- package/dist/components/Menu/Menu.module.scss.js +14 -14
- 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 +34 -31
- package/dist/components/NavigationMenu/NavigationMenu.module.scss.js +34 -31
- package/dist/components/NavigationMenu/index.cjs +32 -15
- package/dist/components/NavigationMenu/index.d.ts +12 -6
- package/dist/components/NavigationMenu/index.d.ts.map +1 -1
- package/dist/components/NavigationMenu/index.js +32 -15
- package/dist/components/Pagination/Pagination.module.scss.cjs +10 -10
- package/dist/components/Pagination/Pagination.module.scss.js +10 -10
- package/dist/components/Popover/Popover.module.scss.cjs +10 -10
- package/dist/components/Popover/Popover.module.scss.js +10 -10
- package/dist/components/Progress/Progress.module.scss.cjs +25 -25
- package/dist/components/Progress/Progress.module.scss.js +25 -25
- package/dist/components/Prompt/Prompt.module.scss.cjs +28 -28
- package/dist/components/Prompt/Prompt.module.scss.js +28 -28
- package/dist/components/RadioGroup/RadioGroup.module.scss.cjs +15 -15
- package/dist/components/RadioGroup/RadioGroup.module.scss.js +15 -15
- package/dist/components/ScrollArea/ScrollArea.module.scss.cjs +5 -5
- package/dist/components/ScrollArea/ScrollArea.module.scss.js +5 -5
- package/dist/components/ScrollArea/index.d.ts +4 -4
- package/dist/components/ScrollArea/index.d.ts.map +1 -1
- package/dist/components/ScrollArea/scroll-state.d.ts +5 -5
- package/dist/components/Select/Select.module.scss.cjs +21 -21
- package/dist/components/Select/Select.module.scss.js +21 -21
- package/dist/components/Separator/Separator.module.scss.cjs +11 -11
- package/dist/components/Separator/Separator.module.scss.js +11 -11
- package/dist/components/Sidebar/Sidebar.module.scss.cjs +43 -43
- package/dist/components/Sidebar/Sidebar.module.scss.js +43 -43
- package/dist/components/Sidebar/index.cjs +12 -35
- package/dist/components/Sidebar/index.d.ts +19 -19
- package/dist/components/Sidebar/index.d.ts.map +1 -1
- package/dist/components/Sidebar/index.js +12 -35
- package/dist/components/Skeleton/Skeleton.module.scss.cjs +50 -46
- package/dist/components/Skeleton/Skeleton.module.scss.js +50 -46
- package/dist/components/Slider/Slider.module.scss.cjs +12 -12
- package/dist/components/Slider/Slider.module.scss.js +12 -12
- package/dist/components/Stack/Stack.module.scss.cjs +25 -25
- package/dist/components/Stack/Stack.module.scss.js +25 -25
- package/dist/components/Stack/index.cjs +1 -1
- package/dist/components/Stack/index.js +1 -1
- package/dist/components/Switch/Switch.module.scss.cjs +9 -9
- package/dist/components/Switch/Switch.module.scss.js +9 -9
- package/dist/components/Table/Table.module.scss.cjs +19 -19
- package/dist/components/Table/Table.module.scss.js +19 -19
- package/dist/components/TableOfContents/TableOfContents.module.scss.cjs +15 -15
- package/dist/components/TableOfContents/TableOfContents.module.scss.js +15 -15
- package/dist/components/TableOfContents/index.cjs +13 -9
- package/dist/components/TableOfContents/index.d.ts +5 -3
- package/dist/components/TableOfContents/index.d.ts.map +1 -1
- package/dist/components/TableOfContents/index.js +13 -9
- package/dist/components/Tabs/Tabs.module.scss.cjs +12 -12
- package/dist/components/Tabs/Tabs.module.scss.js +12 -12
- package/dist/components/Tabs/index.cjs +26 -6
- package/dist/components/Tabs/index.d.ts.map +1 -1
- package/dist/components/Tabs/index.js +26 -6
- package/dist/components/Text/Text.module.scss.cjs +87 -75
- package/dist/components/Text/Text.module.scss.js +87 -75
- package/dist/components/Text/index.cjs +49 -41
- package/dist/components/Text/index.d.ts +12 -11
- package/dist/components/Text/index.d.ts.map +1 -1
- package/dist/components/Text/index.js +49 -41
- package/dist/components/Textarea/Textarea.module.scss.cjs +24 -24
- package/dist/components/Textarea/Textarea.module.scss.js +24 -24
- package/dist/components/Theme/index.cjs +2 -1
- package/dist/components/Theme/index.d.ts.map +1 -1
- package/dist/components/Theme/index.js +2 -1
- package/dist/components/ThemeToggle/ThemeToggle.module.scss.cjs +9 -6
- package/dist/components/ThemeToggle/ThemeToggle.module.scss.js +9 -6
- package/dist/components/ThemeToggle/index.cjs +31 -6
- package/dist/components/ThemeToggle/index.d.ts +7 -2
- package/dist/components/ThemeToggle/index.d.ts.map +1 -1
- package/dist/components/ThemeToggle/index.js +32 -7
- package/dist/components/ThinkingIndicator/ThinkingIndicator.module.scss.cjs +13 -13
- package/dist/components/ThinkingIndicator/ThinkingIndicator.module.scss.js +13 -13
- package/dist/components/Toast/Toast.module.scss.cjs +20 -20
- package/dist/components/Toast/Toast.module.scss.js +20 -20
- package/dist/components/ToggleGroup/ToggleGroup.module.scss.cjs +17 -17
- package/dist/components/ToggleGroup/ToggleGroup.module.scss.js +17 -17
- package/dist/components/Tooltip/Tooltip.module.scss.cjs +3 -3
- package/dist/components/Tooltip/Tooltip.module.scss.js +3 -3
- package/dist/components/Tooltip/index.cjs +24 -40
- package/dist/components/Tooltip/index.d.ts +4 -4
- package/dist/components/Tooltip/index.d.ts.map +1 -1
- package/dist/components/Tooltip/index.js +24 -40
- package/dist/components/VisuallyHidden/index.d.ts +2 -2
- package/dist/data-table.cjs +2 -1
- package/dist/data-table.js +2 -1
- package/dist/datepicker.cjs +3 -2
- package/dist/datepicker.js +3 -2
- package/dist/editor.cjs +68 -28
- package/dist/editor.js +68 -28
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/markdown.cjs +21 -29
- package/dist/markdown.js +21 -29
- package/dist/measurements/generated.cjs +9 -1
- package/dist/measurements/generated.d.ts +7 -0
- package/dist/measurements/generated.d.ts.map +1 -1
- package/dist/measurements/generated.js +9 -1
- package/dist/utils/a11y.cjs +5 -2
- package/dist/utils/a11y.d.ts +5 -5
- package/dist/utils/a11y.d.ts.map +1 -1
- package/dist/utils/a11y.js +5 -2
- package/dist/utils/canonical-stamp.cjs +2 -8
- package/dist/utils/canonical-stamp.d.ts.map +1 -1
- package/dist/utils/canonical-stamp.js +1 -7
- package/dist/utils/css-warning.cjs +1 -1
- package/dist/utils/css-warning.js +1 -1
- package/dist/utils/env.cjs +17 -0
- package/dist/utils/env.d.ts +3 -0
- package/dist/utils/env.d.ts.map +1 -0
- package/dist/utils/env.js +17 -0
- package/dist/utils/keyboard-shortcuts.cjs +3 -10
- package/dist/utils/keyboard-shortcuts.d.ts +4 -4
- package/dist/utils/keyboard-shortcuts.d.ts.map +1 -1
- package/dist/utils/keyboard-shortcuts.js +3 -10
- package/dist/utils/seed-derivation.cjs +10 -6
- package/dist/utils/seed-derivation.d.ts.map +1 -1
- package/dist/utils/seed-derivation.js +10 -6
- package/fragments.json +1 -1
- package/package.json +6 -4
- package/src/assets/fragments-logo.tsx +2 -2
- package/src/assets/fragments-wordmark.tsx +4 -2
- package/src/components/Accordion/Accordion.contract.json +24 -48
- package/src/components/Alert/Alert.contract.json +37 -53
- package/src/components/Alert/Alert.module.scss +24 -0
- package/src/components/Alert/index.tsx +55 -29
- package/src/components/AppShell/AppShell.contract.json +34 -51
- package/src/components/AppShell/AppShell.module.scss +53 -40
- package/src/components/Avatar/Avatar.contract.json +31 -48
- package/src/components/Avatar/Avatar.module.scss +4 -1
- package/src/components/Badge/Badge.contract.json +37 -42
- package/src/components/Badge/Badge.module.scss +9 -2
- package/src/components/BentoGrid/BentoGrid.contract.json +21 -45
- package/src/components/Box/Box.contract.json +40 -148
- package/src/components/Box/index.tsx +92 -99
- package/src/components/Breadcrumbs/Breadcrumbs.contract.json +21 -34
- package/src/components/Breadcrumbs/Breadcrumbs.module.scss +12 -7
- package/src/components/Button/Button.module.scss +8 -7
- package/src/components/ButtonGroup/ButtonGroup.contract.json +32 -47
- package/src/components/Card/Card.module.scss +82 -1
- package/src/components/Card/index.tsx +21 -2
- package/src/components/Chart/Chart.contract.json +21 -29
- package/src/components/Chart/index.tsx +36 -6
- package/src/components/Checkbox/Checkbox.contract.json +24 -24
- package/src/components/Checkbox/Checkbox.module.scss +32 -23
- package/src/components/Checkbox/index.tsx +4 -2
- package/src/components/Chip/Chip.contract.json +33 -40
- package/src/components/Chip/Chip.module.scss +2 -2
- package/src/components/Chip/index.tsx +2 -1
- package/src/components/CodeBlock/CodeBlock.contract.json +46 -76
- package/src/components/CodeBlock/CodeBlock.module.scss +40 -15
- package/src/components/CodeBlock/css-variables-theme.ts +102 -0
- package/src/components/CodeBlock/index.tsx +91 -35
- package/src/components/Collapsible/Collapsible.contract.json +21 -36
- package/src/components/ColorPicker/ColorPicker.contract.json +29 -48
- package/src/components/ColorPicker/ColorPicker.module.scss +15 -12
- package/src/components/ColorPicker/index.tsx +5 -1
- package/src/components/Combobox/Combobox.contract.json +36 -37
- package/src/components/Combobox/Combobox.module.scss +1 -1
- package/src/components/Combobox/index.tsx +31 -5
- package/src/components/Command/Command.contract.json +21 -43
- package/src/components/Command/index.tsx +58 -47
- package/src/components/ConversationList/ConversationList.contract.json +27 -32
- package/src/components/DataTable/DataTable.icons.tsx +4 -21
- package/src/components/DataTable/DataTable.module.scss +12 -8
- package/src/components/DataTable/index.tsx +8 -7
- package/src/components/DatePicker/DatePicker.contract.json +27 -28
- package/src/components/DatePicker/DatePicker.module.scss +12 -5
- package/src/components/DatePicker/index.tsx +5 -2
- package/src/components/Dialog/Dialog.module.scss +3 -3
- package/src/components/Dialog/index.tsx +47 -37
- package/src/components/Drawer/Drawer.contract.json +22 -36
- package/src/components/Editor/Editor.contract.json +31 -48
- package/src/components/Editor/Editor.module.scss +36 -14
- package/src/components/Editor/index.tsx +240 -179
- package/src/components/EmptyState/EmptyState.contract.json +31 -43
- package/src/components/EmptyState/EmptyState.module.scss +8 -0
- package/src/components/EmptyState/index.tsx +48 -23
- package/src/components/Field/Field.contract.json +28 -46
- package/src/components/Field/index.tsx +5 -1
- package/src/components/Fieldset/Fieldset.contract.json +21 -38
- package/src/components/Fieldset/Fieldset.module.scss +10 -3
- package/src/components/Form/Form.contract.json +20 -20
- package/src/components/Grid/Grid.contract.json +28 -64
- package/src/components/Grid/index.tsx +10 -10
- package/src/components/Header/Header.contract.json +31 -67
- package/src/components/Header/Header.module.scss +36 -21
- package/src/components/Header/index.tsx +134 -122
- package/src/components/Icon/Icon.contract.json +22 -62
- package/src/components/IconButton/IconButton.contract.json +34 -18
- package/src/components/IconButton/IconButton.module.scss +6 -7
- package/src/components/IconButton/index.tsx +2 -1
- package/src/components/Image/Image.contract.json +23 -56
- package/src/components/Input/Input.contract.json +26 -32
- package/src/components/Input/Input.module.scss +3 -2
- package/src/components/Link/Link.contract.json +32 -52
- package/src/components/Link/Link.module.scss +23 -6
- package/src/components/Link/index.tsx +1 -1
- package/src/components/List/List.contract.json +23 -52
- package/src/components/List/List.module.scss +1 -1
- package/src/components/Listbox/Listbox.contract.json +21 -37
- package/src/components/Loading/Loading.contract.json +37 -61
- package/src/components/Loading/Loading.module.scss +10 -7
- package/src/components/Loading/index.tsx +2 -2
- package/src/components/Main/Main.contract.json +17 -9
- package/src/components/Markdown/Markdown.contract.json +22 -43
- package/src/components/Markdown/Markdown.module.scss +43 -5
- package/src/components/Markdown/index.tsx +48 -49
- package/src/components/Menu/Menu.contract.json +25 -41
- package/src/components/Menu/Menu.module.scss +23 -8
- package/src/components/Message/Message.contract.json +29 -52
- package/src/components/Message/Message.module.scss +12 -5
- package/src/components/NavigationMenu/NavigationMenu.contract.json +36 -45
- package/src/components/NavigationMenu/NavigationMenu.module.scss +64 -19
- package/src/components/NavigationMenu/index.tsx +105 -81
- package/src/components/Pagination/Pagination.contract.json +22 -40
- package/src/components/Pagination/Pagination.module.scss +2 -2
- package/src/components/Popover/Popover.contract.json +24 -46
- package/src/components/Popover/Popover.module.scss +6 -5
- package/src/components/Progress/Progress.contract.json +32 -28
- package/src/components/Progress/Progress.module.scss +3 -2
- package/src/components/Prompt/Prompt.contract.json +31 -47
- package/src/components/Prompt/Prompt.module.scss +13 -5
- package/src/components/RadioGroup/RadioGroup.contract.json +23 -24
- package/src/components/RadioGroup/RadioGroup.module.scss +13 -14
- package/src/components/ScrollArea/ScrollArea.contract.json +18 -19
- package/src/components/ScrollArea/ScrollArea.module.scss +15 -15
- package/src/components/ScrollArea/index.tsx +16 -16
- package/src/components/ScrollArea/scroll-state.ts +24 -24
- package/src/components/Select/Select.module.scss +2 -2
- package/src/components/Separator/Separator.contract.json +24 -48
- package/src/components/Sidebar/Sidebar.contract.json +35 -67
- package/src/components/Sidebar/Sidebar.module.scss +22 -13
- package/src/components/Sidebar/index.tsx +164 -164
- package/src/components/Skeleton/Skeleton.contract.json +28 -54
- package/src/components/Skeleton/Skeleton.module.scss +27 -10
- package/src/components/Slider/Slider.contract.json +27 -39
- package/src/components/Slider/Slider.module.scss +3 -3
- package/src/components/Stack/Stack.contract.json +29 -56
- package/src/components/Stack/Stack.module.scss +13 -12
- package/src/components/Stack/index.tsx +3 -3
- package/src/components/Switch/Switch.contract.json +33 -46
- package/src/components/Switch/Switch.module.scss +64 -26
- package/src/components/Table/Table.contract.json +28 -46
- package/src/components/Table/Table.module.scss +15 -3
- package/src/components/TableOfContents/TableOfContents.contract.json +34 -21
- package/src/components/TableOfContents/TableOfContents.module.scss +15 -5
- package/src/components/TableOfContents/index.tsx +26 -9
- package/src/components/Tabs/Tabs.contract.json +24 -45
- package/src/components/Tabs/Tabs.module.scss +1 -1
- package/src/components/Tabs/index.tsx +15 -3
- package/src/components/Text/Text.contract.json +30 -72
- package/src/components/Text/Text.module.scss +21 -4
- package/src/components/Text/index.tsx +113 -75
- package/src/components/Textarea/Textarea.contract.json +25 -43
- package/src/components/Textarea/Textarea.module.scss +2 -4
- package/src/components/Theme/Theme.contract.json +32 -51
- package/src/components/Theme/index.tsx +2 -1
- package/src/components/ThemeToggle/ThemeToggle.module.scss +23 -7
- package/src/components/ThemeToggle/index.tsx +43 -7
- package/src/components/ThinkingIndicator/ThinkingIndicator.contract.json +23 -40
- package/src/components/Toast/Toast.contract.json +30 -40
- package/src/components/Toast/Toast.module.scss +1 -1
- package/src/components/ToggleGroup/ToggleGroup.contract.json +29 -30
- package/src/components/ToggleGroup/ToggleGroup.module.scss +38 -5
- package/src/components/Tooltip/Tooltip.contract.json +31 -52
- package/src/components/Tooltip/index.tsx +19 -24
- package/src/components/VisuallyHidden/VisuallyHidden.contract.json +22 -44
- package/src/components/VisuallyHidden/index.tsx +5 -5
- package/src/index.ts +2 -2
- package/src/measurements/generated.ts +9 -2
- package/src/measurements/measurements.json +7 -0
- package/src/recipes/_boolean-range.scss +3 -11
- package/src/recipes/_field.scss +5 -1
- package/src/recipes/_layout.scss +14 -7
- package/src/recipes/_popup.scss +12 -2
- package/src/recipes/_prose.scss +13 -5
- package/src/recipes/_table-chrome.scss +16 -2
- package/src/scss.d.ts +1 -1
- package/src/styles/globals.scss +20 -19
- package/src/tokens/_computed.scss +5 -16
- package/src/tokens/_derive.scss +112 -210
- package/src/tokens/_measurements.catalog.generated.css +6 -1
- package/src/tokens/_measurements.generated.scss +14 -1
- package/src/tokens/_mixins.scss +7 -8
- package/src/tokens/_palettes.scss +39 -167
- package/src/tokens/_seeds.scss +20 -20
- package/src/tokens/_variables.scss +183 -38
- package/src/utils/a11y.tsx +69 -69
- package/src/utils/aria.ts +3 -3
- package/src/utils/canonical-stamp.ts +2 -12
- package/src/utils/css-warning.ts +7 -7
- package/src/utils/env.ts +25 -0
- package/src/utils/keyboard-shortcuts.ts +131 -126
- package/src/utils/seed-derivation.ts +10 -6
- package/src/components/Button/Button.contract.json +0 -218
- package/src/components/Card/Card.contract.json +0 -175
- package/src/components/DataTable/DataTable.contract.json +0 -302
- package/src/components/Dialog/Dialog.contract.json +0 -159
- package/src/components/Select/Select.contract.json +0 -259
|
@@ -1,302 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "https://usefragments.com/schemas/contract.v1.json",
|
|
3
|
-
"name": "DataTable",
|
|
4
|
-
"description": "Data table with sorting, selection, and column management. Powered by TanStack Table.",
|
|
5
|
-
"category": "display",
|
|
6
|
-
"tags": ["table", "data", "grid", "list", "sorting", "tanstack"],
|
|
7
|
-
"status": "stable",
|
|
8
|
-
"dependencies": [
|
|
9
|
-
{
|
|
10
|
-
"name": "@tanstack/react-table",
|
|
11
|
-
"version": ">=8.0.0",
|
|
12
|
-
"reason": "Optional — powers sorting, selection, and expansion; without it DataTable renders a static, non-interactive table."
|
|
13
|
-
}
|
|
14
|
-
],
|
|
15
|
-
"sourcePath": "src/components/DataTable/index.tsx",
|
|
16
|
-
"exportName": "DataTable",
|
|
17
|
-
"propsSummary": [
|
|
18
|
-
"columns: array (required)",
|
|
19
|
-
"data: array (required)",
|
|
20
|
-
"getRowId: function",
|
|
21
|
-
"sortable: boolean (default: false)",
|
|
22
|
-
"sorting: array",
|
|
23
|
-
"onSortingChange: function",
|
|
24
|
-
"selectable: boolean (default: false)",
|
|
25
|
-
"showCheckbox: boolean (default: false)",
|
|
26
|
-
"rowSelection: object",
|
|
27
|
-
"onRowSelectionChange: function",
|
|
28
|
-
"onRowClick: function",
|
|
29
|
-
"getRowProps: function",
|
|
30
|
-
"getSubRows: function",
|
|
31
|
-
"expanded: union",
|
|
32
|
-
"onExpandedChange: function",
|
|
33
|
-
"emptyMessage: string (default: No data available)",
|
|
34
|
-
"size: sm|md (default: md)",
|
|
35
|
-
"caption: string",
|
|
36
|
-
"captionHidden: boolean (default: false)",
|
|
37
|
-
"striped: boolean (default: false)",
|
|
38
|
-
"bordered: boolean (default: false)",
|
|
39
|
-
"wrapperClassName: string",
|
|
40
|
-
"wrapperProps: object"
|
|
41
|
-
],
|
|
42
|
-
"props": {
|
|
43
|
-
"columns": {
|
|
44
|
-
"type": "array",
|
|
45
|
-
"description": "Column definitions",
|
|
46
|
-
"required": true
|
|
47
|
-
},
|
|
48
|
-
"data": {
|
|
49
|
-
"type": "array",
|
|
50
|
-
"description": "Data rows to display",
|
|
51
|
-
"required": true
|
|
52
|
-
},
|
|
53
|
-
"getRowId": {
|
|
54
|
-
"type": "function",
|
|
55
|
-
"description": "Unique key extractor for each row",
|
|
56
|
-
"required": false
|
|
57
|
-
},
|
|
58
|
-
"sortable": {
|
|
59
|
-
"type": "boolean",
|
|
60
|
-
"description": "Enable column sorting",
|
|
61
|
-
"default": "false",
|
|
62
|
-
"required": false
|
|
63
|
-
},
|
|
64
|
-
"sorting": {
|
|
65
|
-
"type": "array",
|
|
66
|
-
"description": "Controlled sorting state",
|
|
67
|
-
"required": false
|
|
68
|
-
},
|
|
69
|
-
"onSortingChange": {
|
|
70
|
-
"type": "function",
|
|
71
|
-
"description": "Sorting change handler",
|
|
72
|
-
"required": false
|
|
73
|
-
},
|
|
74
|
-
"selectable": {
|
|
75
|
-
"type": "boolean",
|
|
76
|
-
"description": "Enable row selection",
|
|
77
|
-
"default": "false",
|
|
78
|
-
"required": false
|
|
79
|
-
},
|
|
80
|
-
"showCheckbox": {
|
|
81
|
-
"type": "boolean",
|
|
82
|
-
"description": "Show checkbox column for row selection (requires selectable)",
|
|
83
|
-
"default": "false",
|
|
84
|
-
"required": false
|
|
85
|
-
},
|
|
86
|
-
"rowSelection": {
|
|
87
|
-
"type": "object",
|
|
88
|
-
"description": "Controlled row selection state",
|
|
89
|
-
"required": false
|
|
90
|
-
},
|
|
91
|
-
"onRowSelectionChange": {
|
|
92
|
-
"type": "function",
|
|
93
|
-
"description": "Row selection change handler",
|
|
94
|
-
"required": false
|
|
95
|
-
},
|
|
96
|
-
"onRowClick": {
|
|
97
|
-
"type": "function",
|
|
98
|
-
"description": "Handler for row clicks/keyboard activation. Called as (row, event)",
|
|
99
|
-
"required": false
|
|
100
|
-
},
|
|
101
|
-
"getRowProps": {
|
|
102
|
-
"type": "function",
|
|
103
|
-
"description": "Returns row-level HTML, ARIA, data, class, and event props for each rendered data row",
|
|
104
|
-
"required": false
|
|
105
|
-
},
|
|
106
|
-
"getSubRows": {
|
|
107
|
-
"type": "function",
|
|
108
|
-
"description": "Extract sub-rows for expandable tree tables",
|
|
109
|
-
"required": false
|
|
110
|
-
},
|
|
111
|
-
"expanded": {
|
|
112
|
-
"type": "union",
|
|
113
|
-
"description": "Controlled expanded state",
|
|
114
|
-
"required": false
|
|
115
|
-
},
|
|
116
|
-
"onExpandedChange": {
|
|
117
|
-
"type": "function",
|
|
118
|
-
"description": "Expanded state change handler",
|
|
119
|
-
"required": false
|
|
120
|
-
},
|
|
121
|
-
"emptyMessage": {
|
|
122
|
-
"type": "string",
|
|
123
|
-
"description": "Message when no data",
|
|
124
|
-
"default": "No data available",
|
|
125
|
-
"required": false
|
|
126
|
-
},
|
|
127
|
-
"size": {
|
|
128
|
-
"type": "enum",
|
|
129
|
-
"description": "Table density",
|
|
130
|
-
"default": "md",
|
|
131
|
-
"required": false,
|
|
132
|
-
"values": ["sm", "md"]
|
|
133
|
-
},
|
|
134
|
-
"caption": {
|
|
135
|
-
"type": "string",
|
|
136
|
-
"description": "Visible caption for the table",
|
|
137
|
-
"required": false
|
|
138
|
-
},
|
|
139
|
-
"captionHidden": {
|
|
140
|
-
"type": "boolean",
|
|
141
|
-
"description": "Hide caption visually but keep it for screen readers",
|
|
142
|
-
"default": "false",
|
|
143
|
-
"required": false
|
|
144
|
-
},
|
|
145
|
-
"striped": {
|
|
146
|
-
"type": "boolean",
|
|
147
|
-
"description": "Show alternating row backgrounds",
|
|
148
|
-
"default": "false",
|
|
149
|
-
"required": false
|
|
150
|
-
},
|
|
151
|
-
"bordered": {
|
|
152
|
-
"type": "boolean",
|
|
153
|
-
"description": "Wrap table in a bordered container",
|
|
154
|
-
"default": "false",
|
|
155
|
-
"required": false
|
|
156
|
-
},
|
|
157
|
-
"wrapperClassName": {
|
|
158
|
-
"type": "string",
|
|
159
|
-
"description": "Additional class name for the outer wrapper div",
|
|
160
|
-
"required": false
|
|
161
|
-
},
|
|
162
|
-
"wrapperProps": {
|
|
163
|
-
"type": "object",
|
|
164
|
-
"description": "Props forwarded to the outer wrapper div (id, aria-*, data-*, handlers)",
|
|
165
|
-
"required": false
|
|
166
|
-
}
|
|
167
|
-
},
|
|
168
|
-
"usage": {
|
|
169
|
-
"when": [
|
|
170
|
-
"Displaying structured, tabular data with sorting",
|
|
171
|
-
"Data that users need to scan, compare, and act upon",
|
|
172
|
-
"Lists with multiple attributes per item that need sorting or selection",
|
|
173
|
-
"Data-rich tables requiring column sizing and row clicks",
|
|
174
|
-
"Hierarchical data with expandable sub-rows"
|
|
175
|
-
],
|
|
176
|
-
"whenNot": [
|
|
177
|
-
"Simple static tables (use Table component)",
|
|
178
|
-
"Simple lists (use List component)",
|
|
179
|
-
"Card-based layouts (use Grid with Cards)",
|
|
180
|
-
"Small screens (consider card or list view)"
|
|
181
|
-
],
|
|
182
|
-
"guidelines": [
|
|
183
|
-
"Keep columns to a reasonable number (5-7 max)",
|
|
184
|
-
"Use consistent alignment (numbers right, text left)",
|
|
185
|
-
"Provide meaningful empty states",
|
|
186
|
-
"Consider mobile responsiveness",
|
|
187
|
-
"Use showCheckbox for bulk selection workflows",
|
|
188
|
-
"Use getRowProps to provide an accessible name and intentional semantics for clickable rows"
|
|
189
|
-
],
|
|
190
|
-
"accessibility": [
|
|
191
|
-
"Proper table semantics with headers",
|
|
192
|
-
"Sortable columns are keyboard accessible",
|
|
193
|
-
"Row selection checkboxes include aria-labels",
|
|
194
|
-
"Expand/collapse buttons have aria-expanded state",
|
|
195
|
-
"Clickable rows expose an accessible action label through getRowProps"
|
|
196
|
-
]
|
|
197
|
-
},
|
|
198
|
-
"examples": [
|
|
199
|
-
{
|
|
200
|
-
"name": "Default",
|
|
201
|
-
"description": "Basic data table with status badges and role columns",
|
|
202
|
-
"code": "<DataTable\n columns={basicColumns}\n data={sampleUsers}\n aria-label=\"Team members\"\n/>"
|
|
203
|
-
},
|
|
204
|
-
{
|
|
205
|
-
"name": "Rich Cells",
|
|
206
|
-
"description": "Custom cells with avatars, stacked text, and column sizing",
|
|
207
|
-
"code": "<DataTable\n columns={richColumns}\n data={sampleUsers}\n bordered\n aria-label=\"Team members\"\n/>"
|
|
208
|
-
},
|
|
209
|
-
{
|
|
210
|
-
"name": "Sortable",
|
|
211
|
-
"description": "Click column headers to sort ascending or descending",
|
|
212
|
-
"code": "<DataTable\n columns={transactionColumns}\n data={sampleTransactions}\n sortable\n bordered\n caption=\"Recent transactions\"\n captionHidden\n aria-label=\"Transactions\"\n/>"
|
|
213
|
-
},
|
|
214
|
-
{
|
|
215
|
-
"name": "Checkbox Selection",
|
|
216
|
-
"description": "Select rows with header checkbox for select-all and individual row checkboxes",
|
|
217
|
-
"code": "function TeamTable() {\n const [selection, setSelection] = useState({});\n const selectedCount = Object.values(selection).filter(Boolean).length;\n\n return (\n <Stack gap=\"sm\">\n <Stack direction=\"row\" justify=\"between\" align=\"center\">\n <Text size=\"sm\" color=\"secondary\">\n {selectedCount > 0 ? `${selectedCount} selected` : 'Select rows with checkboxes'}\n </Text>\n {selectedCount > 0 && (\n <Button size=\"sm\" variant=\"ghost\" onClick={() => setSelection({})}>\n Clear\n </Button>\n )}\n </Stack>\n <DataTable\n columns={columns}\n data={users}\n selectable\n showCheckbox\n rowSelection={selection}\n onRowSelectionChange={setSelection}\n getRowId={(row) => row.id}\n bordered\n aria-label=\"Team members\"\n />\n </Stack>\n );\n}"
|
|
218
|
-
},
|
|
219
|
-
{
|
|
220
|
-
"name": "Expandable Rows",
|
|
221
|
-
"description": "Hierarchical data with collapsible sub-rows, like a file tree",
|
|
222
|
-
"code": "const fileTreeData = [\n {\n id: '1', name: 'src', type: 'folder', modified: 'Feb 18, 2026',\n subRows: [\n { id: '1.1', name: 'components', type: 'folder', modified: 'Feb 18, 2026',\n subRows: [\n { id: '1.1.1', name: 'Button.tsx', type: 'file', size: '4.2 KB', modified: 'Feb 17, 2026' },\n { id: '1.1.2', name: 'Card.tsx', type: 'file', size: '3.8 KB', modified: 'Feb 16, 2026' },\n ],\n },\n ],\n },\n { id: '2', name: 'package.json', type: 'file', size: '1.2 KB', modified: 'Feb 18, 2026' },\n];\n\n<DataTable\n columns={fileColumns}\n data={fileTreeData}\n getSubRows={(row) => row.subRows}\n getRowId={(row) => row.id}\n bordered\n size=\"sm\"\n aria-label=\"File tree\"\n/>"
|
|
223
|
-
},
|
|
224
|
-
{
|
|
225
|
-
"name": "With Filters",
|
|
226
|
-
"description": "Combine with search input and menu dropdowns for filtered views",
|
|
227
|
-
"code": "function FilteredTable() {\n const [search, setSearch] = useState('');\n const [statusFilter, setStatusFilter] = useState(null);\n\n const filteredData = useMemo(() => {\n return users.filter((user) => {\n if (search && !user.name.toLowerCase().includes(search.toLowerCase())) return false;\n if (statusFilter && user.status !== statusFilter) return false;\n return true;\n });\n }, [search, statusFilter]);\n\n return (\n <Stack gap=\"sm\">\n <Stack direction=\"row\" gap=\"sm\" align=\"center\">\n <Input placeholder=\"Search...\" size=\"sm\" value={search} onChange={(e) => setSearch(e.target.value)} />\n <Menu>\n <Menu.Trigger asChild>\n <Button variant=\"secondary\" size=\"sm\">Status</Button>\n </Menu.Trigger>\n <Menu.Content>\n <Menu.Item onClick={() => setStatusFilter(null)}>All</Menu.Item>\n <Menu.Item onClick={() => setStatusFilter('active')}>Active</Menu.Item>\n <Menu.Item onClick={() => setStatusFilter('pending')}>Pending</Menu.Item>\n </Menu.Content>\n </Menu>\n </Stack>\n <DataTable\n columns={columns}\n data={filteredData}\n sortable\n bordered\n emptyMessage=\"No users match the current filters\"\n aria-label=\"Filtered team members\"\n />\n </Stack>\n );\n}"
|
|
228
|
-
},
|
|
229
|
-
{
|
|
230
|
-
"name": "Clickable Rows",
|
|
231
|
-
"description": "Rows respond to click and keyboard activation",
|
|
232
|
-
"code": "<DataTable\n columns={endpointColumns}\n data={sampleEndpoints}\n getRowProps={(row) => ({\n role: 'button',\n 'aria-label': `Open ${row.method} ${row.path}`,\n })}\n onRowClick={(row) => alert(`${row.method} ${row.path}`)}\n size=\"sm\"\n aria-label=\"API endpoints\"\n/>"
|
|
233
|
-
},
|
|
234
|
-
{
|
|
235
|
-
"name": "Striped",
|
|
236
|
-
"description": "Alternating row backgrounds for dense data",
|
|
237
|
-
"code": "<DataTable\n columns={endpointColumns}\n data={sampleEndpoints}\n striped\n size=\"sm\"\n sortable\n aria-label=\"API endpoints\"\n/>"
|
|
238
|
-
},
|
|
239
|
-
{
|
|
240
|
-
"name": "Empty State",
|
|
241
|
-
"description": "Display when no data matches the current filters",
|
|
242
|
-
"code": "<DataTable\n columns={basicColumns}\n data={[]}\n emptyMessage=\"No users match your search criteria\"\n aria-label=\"Search results\"\n/>"
|
|
243
|
-
}
|
|
244
|
-
],
|
|
245
|
-
"relations": [
|
|
246
|
-
{
|
|
247
|
-
"component": "Table",
|
|
248
|
-
"relationship": "alternative",
|
|
249
|
-
"note": "Use Table for simple semantic HTML tables"
|
|
250
|
-
},
|
|
251
|
-
{
|
|
252
|
-
"component": "EmptyState",
|
|
253
|
-
"relationship": "sibling",
|
|
254
|
-
"note": "Use EmptyState for empty table states"
|
|
255
|
-
},
|
|
256
|
-
{
|
|
257
|
-
"component": "Badge",
|
|
258
|
-
"relationship": "sibling",
|
|
259
|
-
"note": "Use Badge for status columns"
|
|
260
|
-
},
|
|
261
|
-
{
|
|
262
|
-
"component": "Menu",
|
|
263
|
-
"relationship": "sibling",
|
|
264
|
-
"note": "Use Menu for filter dropdowns"
|
|
265
|
-
},
|
|
266
|
-
{
|
|
267
|
-
"component": "Checkbox",
|
|
268
|
-
"relationship": "sibling",
|
|
269
|
-
"note": "Built-in checkbox selection via showCheckbox"
|
|
270
|
-
}
|
|
271
|
-
],
|
|
272
|
-
"contract": {
|
|
273
|
-
"propsSummary": [
|
|
274
|
-
"columns: ColumnDef[] - column definitions",
|
|
275
|
-
"data: T[] - row data array",
|
|
276
|
-
"sortable: boolean - enable sorting",
|
|
277
|
-
"selectable: boolean - enable row selection",
|
|
278
|
-
"showCheckbox: boolean - add checkbox column",
|
|
279
|
-
"getSubRows: (row) => T[] - enable expandable rows",
|
|
280
|
-
"onRowClick: (row, event) => void - row activation handler with event access",
|
|
281
|
-
"getRowProps: (row) => HTMLAttributes<HTMLTableRowElement> - row-level ARIA, role, data, class, and event props",
|
|
282
|
-
"size: sm|md - table density",
|
|
283
|
-
"striped: boolean - alternating row backgrounds",
|
|
284
|
-
"bordered: boolean - bordered container",
|
|
285
|
-
"wrapperClassName / wrapperProps - style and configure the outer wrapper div"
|
|
286
|
-
],
|
|
287
|
-
"a11yRules": ["A11Y_TABLE_HEADERS", "A11Y_TABLE_SORT"]
|
|
288
|
-
},
|
|
289
|
-
"ai": {
|
|
290
|
-
"compositionPattern": "simple",
|
|
291
|
-
"subComponents": ["Root", "Columns", "preload"],
|
|
292
|
-
"commonPatterns": [
|
|
293
|
-
"<DataTable columns={createColumns([{key:\"name\",header:\"Name\"},{key:\"status\",header:\"Status\"}])} data={[{name:\"Item 1\",status:\"Active\"}]} />"
|
|
294
|
-
]
|
|
295
|
-
},
|
|
296
|
-
"provenance": {
|
|
297
|
-
"source": "migrated",
|
|
298
|
-
"verified": false,
|
|
299
|
-
"frameworkSupport": "native",
|
|
300
|
-
"extractedAt": "2026-03-13T23:18:54.097Z"
|
|
301
|
-
}
|
|
302
|
-
}
|
|
@@ -1,159 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "https://usefragments.com/schemas/contract.v1.json",
|
|
3
|
-
"name": "Dialog",
|
|
4
|
-
"description": "Modal overlay for focused user interactions. Use for confirmations, forms, or content requiring full attention.",
|
|
5
|
-
"category": "feedback",
|
|
6
|
-
"tags": [
|
|
7
|
-
"modal",
|
|
8
|
-
"dialog",
|
|
9
|
-
"overlay",
|
|
10
|
-
"popup",
|
|
11
|
-
"confirmation"
|
|
12
|
-
],
|
|
13
|
-
"status": "stable",
|
|
14
|
-
"sourcePath": "src/components/Dialog/index.tsx",
|
|
15
|
-
"exportName": "Dialog",
|
|
16
|
-
"propsSummary": [
|
|
17
|
-
"children: node (required)",
|
|
18
|
-
"open: boolean",
|
|
19
|
-
"defaultOpen: boolean",
|
|
20
|
-
"onOpenChange: function",
|
|
21
|
-
"modal: boolean (default: true)"
|
|
22
|
-
],
|
|
23
|
-
"props": {
|
|
24
|
-
"children": {
|
|
25
|
-
"type": "node",
|
|
26
|
-
"description": "Dialog content (use Dialog.Content, Dialog.Header, etc.)",
|
|
27
|
-
"required": true
|
|
28
|
-
},
|
|
29
|
-
"open": {
|
|
30
|
-
"type": "boolean",
|
|
31
|
-
"description": "Controlled open state",
|
|
32
|
-
"required": false
|
|
33
|
-
},
|
|
34
|
-
"defaultOpen": {
|
|
35
|
-
"type": "boolean",
|
|
36
|
-
"description": "Default open state (uncontrolled)",
|
|
37
|
-
"default": "false",
|
|
38
|
-
"required": false
|
|
39
|
-
},
|
|
40
|
-
"onOpenChange": {
|
|
41
|
-
"type": "function",
|
|
42
|
-
"description": "Called when open state changes",
|
|
43
|
-
"required": false
|
|
44
|
-
},
|
|
45
|
-
"modal": {
|
|
46
|
-
"type": "boolean",
|
|
47
|
-
"description": "Whether to render as modal (blocks interaction with rest of page)",
|
|
48
|
-
"default": "true",
|
|
49
|
-
"required": false
|
|
50
|
-
}
|
|
51
|
-
},
|
|
52
|
-
"usage": {
|
|
53
|
-
"when": [
|
|
54
|
-
"Confirming destructive actions (delete, discard changes)",
|
|
55
|
-
"Collecting focused input (forms, settings)",
|
|
56
|
-
"Displaying content that requires acknowledgment",
|
|
57
|
-
"Multi-step workflows that need isolation"
|
|
58
|
-
],
|
|
59
|
-
"whenNot": [
|
|
60
|
-
"Simple tooltips or hints (use Tooltip)",
|
|
61
|
-
"Contextual menus (use Menu or Popover)",
|
|
62
|
-
"Non-blocking notifications (use Toast or Alert)",
|
|
63
|
-
"Simple confirmation that can be inline (use Alert)"
|
|
64
|
-
],
|
|
65
|
-
"guidelines": [
|
|
66
|
-
"Keep dialog content focused on a single task",
|
|
67
|
-
"Provide clear primary and secondary actions",
|
|
68
|
-
"Use descriptive title that explains the purpose",
|
|
69
|
-
"Allow dismissal via backdrop click or close button for non-critical dialogs",
|
|
70
|
-
"Trap focus within the dialog for accessibility",
|
|
71
|
-
"Dialog.Trigger and Dialog.Close support asChild for buttons, links, and router link components"
|
|
72
|
-
],
|
|
73
|
-
"accessibility": [
|
|
74
|
-
"Automatically traps focus within the dialog",
|
|
75
|
-
"Closes on Escape key press",
|
|
76
|
-
"Returns focus to trigger element on close",
|
|
77
|
-
"Uses role=\"dialog\" with proper aria attributes"
|
|
78
|
-
]
|
|
79
|
-
},
|
|
80
|
-
"examples": [
|
|
81
|
-
{
|
|
82
|
-
"name": "Default",
|
|
83
|
-
"description": "Basic dialog with header, body, and footer",
|
|
84
|
-
"code": "<Dialog>\n <Dialog.Trigger asChild>\n <Button>Open Dialog</Button>\n </Dialog.Trigger>\n <Dialog.Content>\n <Dialog.Close />\n <Dialog.Header>\n <Dialog.Title>Dialog Title</Dialog.Title>\n <Dialog.Description>\n A brief description of what this dialog is for.\n </Dialog.Description>\n </Dialog.Header>\n <Dialog.Body>\n <p>Dialog content goes here. You can include forms, text, or any other content.</p>\n </Dialog.Body>\n <Dialog.Footer>\n <Dialog.Close asChild>\n <Button variant=\"secondary\">Cancel</Button>\n </Dialog.Close>\n <Button variant=\"primary\">Confirm</Button>\n </Dialog.Footer>\n </Dialog.Content>\n</Dialog>"
|
|
85
|
-
},
|
|
86
|
-
{
|
|
87
|
-
"name": "Confirmation",
|
|
88
|
-
"description": "Destructive action confirmation",
|
|
89
|
-
"code": "<Dialog>\n <Dialog.Trigger asChild>\n <Button variant=\"danger\">Delete Item</Button>\n </Dialog.Trigger>\n <Dialog.Content size=\"sm\">\n <Dialog.Header>\n <Dialog.Title>Delete item?</Dialog.Title>\n <Dialog.Description>\n This action cannot be undone. The item will be permanently removed.\n </Dialog.Description>\n </Dialog.Header>\n <Dialog.Footer>\n <Dialog.Close asChild>\n <Button variant=\"secondary\">Cancel</Button>\n </Dialog.Close>\n <Button variant=\"danger\">Delete</Button>\n </Dialog.Footer>\n </Dialog.Content>\n</Dialog>"
|
|
90
|
-
},
|
|
91
|
-
{
|
|
92
|
-
"name": "Large",
|
|
93
|
-
"description": "Large dialog for complex content",
|
|
94
|
-
"code": "<Dialog>\n <Dialog.Trigger asChild>\n <Button>Open Large Dialog</Button>\n </Dialog.Trigger>\n <Dialog.Content size=\"lg\">\n <Dialog.Close />\n <Dialog.Header>\n <Dialog.Title>Settings</Dialog.Title>\n <Dialog.Description>\n Configure your application preferences.\n </Dialog.Description>\n </Dialog.Header>\n <Dialog.Body>\n <p>This dialog has more space for complex forms or content layouts.</p>\n </Dialog.Body>\n <Dialog.Footer>\n <Dialog.Close asChild>\n <Button variant=\"secondary\">Cancel</Button>\n </Dialog.Close>\n <Button variant=\"primary\">Save Changes</Button>\n </Dialog.Footer>\n </Dialog.Content>\n</Dialog>"
|
|
95
|
-
},
|
|
96
|
-
{
|
|
97
|
-
"name": "Link Trigger + No Initial Focus",
|
|
98
|
-
"description": "Use asChild with a link trigger and disable automatic initial focus when needed",
|
|
99
|
-
"code": "<Dialog>\n <Dialog.Trigger asChild>\n <a href=\"#dialog-demo\">Open via link</a>\n </Dialog.Trigger>\n <Dialog.Content size=\"sm\" initialFocus={false}>\n <Dialog.Header>\n <Dialog.Title>Linked Trigger</Dialog.Title>\n <Dialog.Description>\n Example using asChild with an anchor element and manual focus behavior.\n </Dialog.Description>\n </Dialog.Header>\n <Dialog.Footer>\n <Dialog.Close asChild>\n <Button variant=\"secondary\">Close</Button>\n </Dialog.Close>\n </Dialog.Footer>\n </Dialog.Content>\n</Dialog>"
|
|
100
|
-
}
|
|
101
|
-
],
|
|
102
|
-
"relations": [
|
|
103
|
-
{
|
|
104
|
-
"component": "Popover",
|
|
105
|
-
"relationship": "alternative",
|
|
106
|
-
"note": "Use Popover for non-modal contextual content"
|
|
107
|
-
},
|
|
108
|
-
{
|
|
109
|
-
"component": "Menu",
|
|
110
|
-
"relationship": "alternative",
|
|
111
|
-
"note": "Use Menu for action lists"
|
|
112
|
-
},
|
|
113
|
-
{
|
|
114
|
-
"component": "Alert",
|
|
115
|
-
"relationship": "sibling",
|
|
116
|
-
"note": "Use Alert for inline notifications"
|
|
117
|
-
}
|
|
118
|
-
],
|
|
119
|
-
"contract": {
|
|
120
|
-
"propsSummary": [
|
|
121
|
-
"open: boolean - controlled open state",
|
|
122
|
-
"onOpenChange: (open) => void - open state handler",
|
|
123
|
-
"modal: boolean - blocks page interaction (default: true)",
|
|
124
|
-
"Dialog.Content initialFocus?: boolean - control auto-focus on open (default: true)",
|
|
125
|
-
"Dialog.Content size: sm|md|lg|xl|full - dialog width"
|
|
126
|
-
],
|
|
127
|
-
"a11yRules": [
|
|
128
|
-
"A11Y_DIALOG_FOCUS",
|
|
129
|
-
"A11Y_DIALOG_ESCAPE",
|
|
130
|
-
"A11Y_DIALOG_LABEL"
|
|
131
|
-
]
|
|
132
|
-
},
|
|
133
|
-
"ai": {
|
|
134
|
-
"compositionPattern": "compound",
|
|
135
|
-
"subComponents": [
|
|
136
|
-
"Trigger",
|
|
137
|
-
"Content",
|
|
138
|
-
"Close",
|
|
139
|
-
"Header",
|
|
140
|
-
"Title",
|
|
141
|
-
"Description",
|
|
142
|
-
"Body",
|
|
143
|
-
"Footer"
|
|
144
|
-
],
|
|
145
|
-
"requiredChildren": [
|
|
146
|
-
"Content"
|
|
147
|
-
],
|
|
148
|
-
"commonPatterns": [
|
|
149
|
-
"<Dialog><Dialog.Trigger><Button>Open</Button></Dialog.Trigger><Dialog.Content><Dialog.Header><Dialog.Title>{title}</Dialog.Title></Dialog.Header><Dialog.Body>{content}</Dialog.Body><Dialog.Footer><Dialog.Close><Button variant=\"secondary\">Cancel</Button></Dialog.Close><Button>Confirm</Button></Dialog.Footer></Dialog.Content></Dialog>",
|
|
150
|
-
"<Dialog><Dialog.Trigger asChild><a href=\"/settings\">Open settings</a></Dialog.Trigger><Dialog.Content initialFocus={false}>...</Dialog.Content></Dialog>"
|
|
151
|
-
]
|
|
152
|
-
},
|
|
153
|
-
"provenance": {
|
|
154
|
-
"source": "migrated",
|
|
155
|
-
"verified": false,
|
|
156
|
-
"frameworkSupport": "native",
|
|
157
|
-
"extractedAt": "2026-03-13T23:18:55.179Z"
|
|
158
|
-
}
|
|
159
|
-
}
|