@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,15 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://usefragments.com/schemas/contract.v1.json",
|
|
3
3
|
"name": "Tooltip",
|
|
4
|
-
"description": "
|
|
5
|
-
"category": "
|
|
6
|
-
"tags": [
|
|
7
|
-
"tooltip",
|
|
8
|
-
"hint",
|
|
9
|
-
"help",
|
|
10
|
-
"hover",
|
|
11
|
-
"contextual"
|
|
12
|
-
],
|
|
4
|
+
"description": "Shows a one-line hint when a control is hovered or focused.",
|
|
5
|
+
"category": "overlays",
|
|
6
|
+
"tags": ["tooltip", "hint", "help", "hover", "contextual"],
|
|
13
7
|
"status": "stable",
|
|
14
8
|
"sourcePath": "src/components/Tooltip/index.tsx",
|
|
15
9
|
"exportName": "Tooltip",
|
|
@@ -45,23 +39,14 @@
|
|
|
45
39
|
"description": "Which side to show the tooltip",
|
|
46
40
|
"default": "top",
|
|
47
41
|
"required": false,
|
|
48
|
-
"values": [
|
|
49
|
-
"top",
|
|
50
|
-
"bottom",
|
|
51
|
-
"left",
|
|
52
|
-
"right"
|
|
53
|
-
]
|
|
42
|
+
"values": ["top", "bottom", "left", "right"]
|
|
54
43
|
},
|
|
55
44
|
"align": {
|
|
56
45
|
"type": "enum",
|
|
57
46
|
"description": "Alignment along the side",
|
|
58
47
|
"default": "center",
|
|
59
48
|
"required": false,
|
|
60
|
-
"values": [
|
|
61
|
-
"start",
|
|
62
|
-
"center",
|
|
63
|
-
"end"
|
|
64
|
-
]
|
|
49
|
+
"values": ["start", "center", "end"]
|
|
65
50
|
},
|
|
66
51
|
"sideOffset": {
|
|
67
52
|
"type": "number",
|
|
@@ -122,55 +107,55 @@
|
|
|
122
107
|
},
|
|
123
108
|
"usage": {
|
|
124
109
|
"when": [
|
|
125
|
-
"
|
|
126
|
-
"Showing
|
|
127
|
-
"
|
|
128
|
-
"
|
|
110
|
+
"Naming icon-only buttons",
|
|
111
|
+
"Showing text that had to be truncated",
|
|
112
|
+
"Surfacing a keyboard shortcut",
|
|
113
|
+
"One line of help, no more"
|
|
129
114
|
],
|
|
130
115
|
"whenNot": [
|
|
131
|
-
"
|
|
132
|
-
"
|
|
133
|
-
"
|
|
134
|
-
"
|
|
116
|
+
"Help longer than a line — use Popover",
|
|
117
|
+
"Anything the user must not miss — use Alert",
|
|
118
|
+
"Content they need to click — use Popover or Menu",
|
|
119
|
+
"Touch-first screens, where there is no hover"
|
|
135
120
|
],
|
|
136
121
|
"guidelines": [
|
|
137
|
-
"
|
|
138
|
-
"
|
|
139
|
-
"
|
|
140
|
-
"
|
|
141
|
-
"
|
|
122
|
+
"Under 80 characters",
|
|
123
|
+
"Sentence case, no trailing period",
|
|
124
|
+
"Never just repeat the visible label",
|
|
125
|
+
"Always leave a non-hover path to the same information",
|
|
126
|
+
"contentProps sets attributes and styling on the popup"
|
|
142
127
|
],
|
|
143
128
|
"accessibility": [
|
|
144
|
-
"
|
|
145
|
-
"
|
|
146
|
-
"
|
|
129
|
+
"Opens on keyboard focus, not only hover",
|
|
130
|
+
"The open delay stops tooltips flashing while the pointer crosses the screen",
|
|
131
|
+
"Do not put anything critical here — treat it as a hint, not a label"
|
|
147
132
|
]
|
|
148
133
|
},
|
|
149
134
|
"examples": [
|
|
150
135
|
{
|
|
151
136
|
"name": "Default",
|
|
152
|
-
"description": "
|
|
137
|
+
"description": "Appears after a short delay above the trigger.",
|
|
153
138
|
"code": "<Tooltip content=\"Save your changes\">\n <Button>Save</Button>\n</Tooltip>"
|
|
154
139
|
},
|
|
155
140
|
{
|
|
156
141
|
"name": "Positions",
|
|
157
|
-
"description": "
|
|
158
|
-
"code": "
|
|
142
|
+
"description": "Four sides; it flips if the edge is too close.",
|
|
143
|
+
"code": "import { Stack } from '@/components/Stack';\n\n<Stack direction=\"row\" gap=\"md\" align=\"center\" wrap>\n <Tooltip content=\"Top tooltip\" side=\"top\">\n <Button variant=\"secondary\">Top</Button>\n </Tooltip>\n <Tooltip content=\"Bottom tooltip\" side=\"bottom\">\n <Button variant=\"secondary\">Bottom</Button>\n </Tooltip>\n <Tooltip content=\"Left tooltip\" side=\"left\">\n <Button variant=\"secondary\">Left</Button>\n </Tooltip>\n <Tooltip content=\"Right tooltip\" side=\"right\">\n <Button variant=\"secondary\">Right</Button>\n </Tooltip>\n</Stack>"
|
|
159
144
|
},
|
|
160
145
|
{
|
|
161
146
|
"name": "With Shortcut",
|
|
162
|
-
"description": "
|
|
147
|
+
"description": "Spells out the key combination the icon implies.",
|
|
163
148
|
"code": "<Tooltip content=\"Undo (Ctrl+Z)\">\n <Button variant=\"ghost\">Undo</Button>\n</Tooltip>"
|
|
164
149
|
},
|
|
165
150
|
{
|
|
166
151
|
"name": "No Arrow",
|
|
167
|
-
"description": "
|
|
168
|
-
"code": "<Tooltip content=\"
|
|
152
|
+
"description": "Drops the pointer for tooltips packed into dense chrome.",
|
|
153
|
+
"code": "<Tooltip content=\"No arrow on this one\" arrow={false}>\n <Button variant=\"secondary\">Arrowless</Button>\n</Tooltip>"
|
|
169
154
|
},
|
|
170
155
|
{
|
|
171
156
|
"name": "With Content Props",
|
|
172
|
-
"description": "
|
|
173
|
-
"code": "<Tooltip
|
|
157
|
+
"description": "contentProps lands on the popup element itself.",
|
|
158
|
+
"code": "<Tooltip\n content=\"Styled through contentProps\"\n contentProps={{ id: 'custom-tooltip-popup' }}\n>\n <Button variant=\"secondary\">Custom popup</Button>\n</Tooltip>"
|
|
174
159
|
}
|
|
175
160
|
],
|
|
176
161
|
"relations": [
|
|
@@ -193,17 +178,11 @@
|
|
|
193
178
|
"arrow: boolean - show arrow (default: true)",
|
|
194
179
|
"contentProps: HTMLAttributes<HTMLDivElement> - popup element props"
|
|
195
180
|
],
|
|
196
|
-
"a11yRules": [
|
|
197
|
-
"A11Y_TOOLTIP_FOCUS",
|
|
198
|
-
"A11Y_TOOLTIP_ROLE"
|
|
199
|
-
]
|
|
181
|
+
"a11yRules": ["A11Y_TOOLTIP_FOCUS", "A11Y_TOOLTIP_ROLE"]
|
|
200
182
|
},
|
|
201
183
|
"ai": {
|
|
202
184
|
"compositionPattern": "compound",
|
|
203
|
-
"subComponents": [
|
|
204
|
-
"Root",
|
|
205
|
-
"Provider"
|
|
206
|
-
]
|
|
185
|
+
"subComponents": ["Root", "Provider"]
|
|
207
186
|
},
|
|
208
187
|
"provenance": {
|
|
209
188
|
"source": "migrated",
|
|
@@ -1,17 +1,20 @@
|
|
|
1
|
-
|
|
1
|
+
"use client";
|
|
2
2
|
|
|
3
|
-
import * as React from
|
|
4
|
-
import { Tooltip as BaseTooltip } from
|
|
5
|
-
import styles from
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { Tooltip as BaseTooltip } from "@base-ui/react/tooltip";
|
|
5
|
+
import styles from "./Tooltip.module.scss";
|
|
6
6
|
|
|
7
7
|
// ============================================
|
|
8
8
|
// Types
|
|
9
9
|
// ============================================
|
|
10
10
|
|
|
11
|
-
export type TooltipSide =
|
|
12
|
-
export type TooltipAlign =
|
|
11
|
+
export type TooltipSide = "top" | "bottom" | "left" | "right";
|
|
12
|
+
export type TooltipAlign = "start" | "center" | "end";
|
|
13
13
|
|
|
14
|
-
export interface TooltipProps extends Omit<
|
|
14
|
+
export interface TooltipProps extends Omit<
|
|
15
|
+
React.HTMLAttributes<HTMLDivElement>,
|
|
16
|
+
"content" | "defaultChecked"
|
|
17
|
+
> {
|
|
15
18
|
/** The element that triggers the tooltip */
|
|
16
19
|
children: React.ReactElement;
|
|
17
20
|
/** Content to display in the tooltip */
|
|
@@ -76,8 +79,8 @@ const TooltipProviderContext = React.createContext(false);
|
|
|
76
79
|
function TooltipRoot({
|
|
77
80
|
children,
|
|
78
81
|
content,
|
|
79
|
-
side =
|
|
80
|
-
align =
|
|
82
|
+
side = "top",
|
|
83
|
+
align = "center",
|
|
81
84
|
sideOffset = 6,
|
|
82
85
|
delay,
|
|
83
86
|
closeDelay,
|
|
@@ -101,9 +104,9 @@ function TooltipRoot({
|
|
|
101
104
|
for (const [key, triggerHandler] of Object.entries(triggerProps)) {
|
|
102
105
|
const childHandler = childProps[key];
|
|
103
106
|
if (
|
|
104
|
-
key.startsWith(
|
|
105
|
-
typeof triggerHandler ===
|
|
106
|
-
typeof childHandler ===
|
|
107
|
+
key.startsWith("on") &&
|
|
108
|
+
typeof triggerHandler === "function" &&
|
|
109
|
+
typeof childHandler === "function"
|
|
107
110
|
) {
|
|
108
111
|
mergedProps[key] = (...args: unknown[]) => {
|
|
109
112
|
(childHandler as (...event: unknown[]) => void)(...args);
|
|
@@ -114,7 +117,7 @@ function TooltipRoot({
|
|
|
114
117
|
|
|
115
118
|
return React.cloneElement(children, mergedProps);
|
|
116
119
|
},
|
|
117
|
-
[children]
|
|
120
|
+
[children]
|
|
118
121
|
);
|
|
119
122
|
|
|
120
123
|
if (disabled || !children) {
|
|
@@ -128,11 +131,7 @@ function TooltipRoot({
|
|
|
128
131
|
} = contentProps ?? {};
|
|
129
132
|
|
|
130
133
|
const tooltipNode = (
|
|
131
|
-
<BaseTooltip.Root
|
|
132
|
-
open={open}
|
|
133
|
-
defaultOpen={defaultOpen}
|
|
134
|
-
onOpenChange={onOpenChange}
|
|
135
|
-
>
|
|
134
|
+
<BaseTooltip.Root open={open} defaultOpen={defaultOpen} onOpenChange={onOpenChange}>
|
|
136
135
|
<BaseTooltip.Trigger closeOnClick={closeOnClick} render={renderTrigger} />
|
|
137
136
|
<BaseTooltip.Portal>
|
|
138
137
|
<BaseTooltip.Positioner
|
|
@@ -144,7 +143,7 @@ function TooltipRoot({
|
|
|
144
143
|
<BaseTooltip.Popup
|
|
145
144
|
{...htmlProps}
|
|
146
145
|
{...contentHtmlProps}
|
|
147
|
-
className={[styles.popup, className, contentClassName].filter(Boolean).join(
|
|
146
|
+
className={[styles.popup, className, contentClassName].filter(Boolean).join(" ")}
|
|
148
147
|
style={{ ...(style ?? {}), ...(contentStyle ?? {}) }}
|
|
149
148
|
>
|
|
150
149
|
{content}
|
|
@@ -192,11 +191,7 @@ export function TooltipProvider({
|
|
|
192
191
|
|
|
193
192
|
return (
|
|
194
193
|
<TooltipProviderContext.Provider value={true}>
|
|
195
|
-
<BaseTooltip.Provider
|
|
196
|
-
delay={resolvedDelay}
|
|
197
|
-
closeDelay={closeDelay}
|
|
198
|
-
timeout={resolvedTimeout}
|
|
199
|
-
>
|
|
194
|
+
<BaseTooltip.Provider delay={resolvedDelay} closeDelay={closeDelay} timeout={resolvedTimeout}>
|
|
200
195
|
{children}
|
|
201
196
|
</BaseTooltip.Provider>
|
|
202
197
|
</TooltipProviderContext.Provider>
|
|
@@ -1,22 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://usefragments.com/schemas/contract.v1.json",
|
|
3
3
|
"name": "VisuallyHidden",
|
|
4
|
-
"description": "
|
|
5
|
-
"category": "
|
|
6
|
-
"tags": [
|
|
7
|
-
"accessibility",
|
|
8
|
-
"a11y",
|
|
9
|
-
"screen-reader",
|
|
10
|
-
"hidden",
|
|
11
|
-
"sr-only"
|
|
12
|
-
],
|
|
4
|
+
"description": "Keeps text in the accessibility tree while taking it off the screen.",
|
|
5
|
+
"category": "utilities",
|
|
6
|
+
"tags": ["accessibility", "a11y", "screen-reader", "hidden", "sr-only"],
|
|
13
7
|
"status": "stable",
|
|
14
8
|
"sourcePath": "src/components/VisuallyHidden/index.tsx",
|
|
15
9
|
"exportName": "VisuallyHidden",
|
|
16
|
-
"propsSummary": [
|
|
17
|
-
"children: node (required)",
|
|
18
|
-
"as: span|div (default: span)"
|
|
19
|
-
],
|
|
10
|
+
"propsSummary": ["children: node (required)", "as: span|div (default: span)"],
|
|
20
11
|
"props": {
|
|
21
12
|
"children": {
|
|
22
13
|
"type": "node",
|
|
@@ -28,53 +19,45 @@
|
|
|
28
19
|
"description": "HTML element to render",
|
|
29
20
|
"default": "span",
|
|
30
21
|
"required": false,
|
|
31
|
-
"values": [
|
|
32
|
-
"span",
|
|
33
|
-
"div"
|
|
34
|
-
]
|
|
22
|
+
"values": ["span", "div"]
|
|
35
23
|
}
|
|
36
24
|
},
|
|
37
25
|
"usage": {
|
|
38
26
|
"when": [
|
|
39
|
-
"
|
|
40
|
-
"
|
|
41
|
-
"
|
|
42
|
-
"Skip links for keyboard navigation"
|
|
27
|
+
"An icon-only control needs a name",
|
|
28
|
+
"A link's text is vague out of context",
|
|
29
|
+
"A skip link needs to hide until focused"
|
|
43
30
|
],
|
|
44
31
|
"whenNot": [
|
|
45
|
-
"
|
|
46
|
-
"
|
|
47
|
-
"Temporarily hidden content (use proper ARIA attributes)",
|
|
48
|
-
"Lazy-loaded content (use suspense or loading states)"
|
|
32
|
+
"Nobody should see or hear it (render nothing)",
|
|
33
|
+
"The content is just collapsed (use aria-expanded)"
|
|
49
34
|
],
|
|
50
35
|
"guidelines": [
|
|
51
|
-
"
|
|
52
|
-
"
|
|
53
|
-
"
|
|
54
|
-
"
|
|
55
|
-
"VisuallyHidden forwards DOM props and className to the rendered element"
|
|
36
|
+
"Every icon-only button gets one",
|
|
37
|
+
"Say the action, not the icon: \"Search\", not \"magnifier\"",
|
|
38
|
+
"Keep it short — it is read aloud",
|
|
39
|
+
"Visible text beats hidden text whenever there is room"
|
|
56
40
|
],
|
|
57
41
|
"accessibility": [
|
|
58
|
-
"
|
|
59
|
-
"
|
|
60
|
-
"
|
|
61
|
-
"Must convey equivalent information to visual content"
|
|
42
|
+
"Screen readers announce it; the layout never moves",
|
|
43
|
+
"Focusable children inside still receive focus",
|
|
44
|
+
"Required for WCAG 2.1 on icon-only controls"
|
|
62
45
|
]
|
|
63
46
|
},
|
|
64
47
|
"examples": [
|
|
65
48
|
{
|
|
66
49
|
"name": "Icon Button Label",
|
|
67
|
-
"description": "
|
|
50
|
+
"description": "The only thing telling a screen reader what this button does.",
|
|
68
51
|
"code": "<button style={{\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: '40px',\n height: '40px',\n border: '1px solid var(--fui-border-default)',\n borderRadius: '8px',\n background: 'var(--fui-color-surface-primary)',\n cursor: 'pointer'\n}}>\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n <path d=\"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z\" />\n </svg>\n <VisuallyHidden>Search</VisuallyHidden>\n</button>"
|
|
69
52
|
},
|
|
70
53
|
{
|
|
71
54
|
"name": "Supplementary Text",
|
|
72
|
-
"description": "
|
|
55
|
+
"description": "Gives a vague link the context sighted readers get from layout.",
|
|
73
56
|
"code": "<a href=\"#\" style={{ color: 'var(--fui-color-accent)' }}>\n Read more\n <VisuallyHidden> about our accessibility features</VisuallyHidden>\n</a>"
|
|
74
57
|
},
|
|
75
58
|
{
|
|
76
59
|
"name": "Skip Link",
|
|
77
|
-
"description": "
|
|
60
|
+
"description": "Hidden until focused, then it jumps keyboard users past the nav.",
|
|
78
61
|
"code": "<div>\n <VisuallyHidden as=\"div\">\n <a\n href=\"#main-content\"\n style={{\n position: 'absolute',\n padding: '8px 16px',\n background: 'var(--fui-color-accent)',\n color: 'white'\n }}\n >\n Skip to main content\n </a>\n </VisuallyHidden>\n <p style={{ color: 'var(--fui-color-text-tertiary)', fontSize: '14px' }}>\n (Screen reader only: \"Skip to main content\" link)\n </p>\n</div>"
|
|
79
62
|
}
|
|
80
63
|
],
|
|
@@ -96,16 +79,11 @@
|
|
|
96
79
|
"as: span|div - HTML element",
|
|
97
80
|
"Forwards standard DOM props (id, aria-*, data-*, className, handlers)"
|
|
98
81
|
],
|
|
99
|
-
"a11yRules": [
|
|
100
|
-
"A11Y_SR_ONLY",
|
|
101
|
-
"A11Y_ICON_LABEL"
|
|
102
|
-
]
|
|
82
|
+
"a11yRules": ["A11Y_SR_ONLY", "A11Y_ICON_LABEL"]
|
|
103
83
|
},
|
|
104
84
|
"ai": {
|
|
105
85
|
"compositionPattern": "compound",
|
|
106
|
-
"subComponents": [
|
|
107
|
-
"Root"
|
|
108
|
-
]
|
|
86
|
+
"subComponents": ["Root"]
|
|
109
87
|
},
|
|
110
88
|
"provenance": {
|
|
111
89
|
"source": "migrated",
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import * as React from
|
|
2
|
-
import styles from
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import styles from "./VisuallyHidden.module.scss";
|
|
3
3
|
|
|
4
4
|
export interface VisuallyHiddenProps extends React.HTMLAttributes<HTMLElement> {
|
|
5
5
|
children: React.ReactNode;
|
|
6
6
|
/** HTML element to render */
|
|
7
|
-
as?:
|
|
7
|
+
as?: "span" | "div";
|
|
8
8
|
}
|
|
9
9
|
|
|
10
10
|
/**
|
|
@@ -19,12 +19,12 @@ export interface VisuallyHiddenProps extends React.HTMLAttributes<HTMLElement> {
|
|
|
19
19
|
* </Button>
|
|
20
20
|
*/
|
|
21
21
|
const VisuallyHiddenRoot = React.forwardRef<HTMLElement, VisuallyHiddenProps>(
|
|
22
|
-
function VisuallyHidden({ children, as: Component =
|
|
22
|
+
function VisuallyHidden({ children, as: Component = "span", className, ...htmlProps }, ref) {
|
|
23
23
|
return (
|
|
24
24
|
<Component
|
|
25
25
|
ref={ref as React.Ref<never>}
|
|
26
26
|
{...htmlProps}
|
|
27
|
-
className={[styles.visuallyHidden, className].filter(Boolean).join(
|
|
27
|
+
className={[styles.visuallyHidden, className].filter(Boolean).join(" ")}
|
|
28
28
|
>
|
|
29
29
|
{children}
|
|
30
30
|
</Component>
|
package/src/index.ts
CHANGED
|
@@ -678,8 +678,8 @@ export {
|
|
|
678
678
|
usePrefersContrast,
|
|
679
679
|
useFocusTrap,
|
|
680
680
|
handleArrowNavigation,
|
|
681
|
-
|
|
682
|
-
type
|
|
681
|
+
A11yVisuallyHidden,
|
|
682
|
+
type A11yVisuallyHiddenProps,
|
|
683
683
|
} from "./utils/a11y";
|
|
684
684
|
|
|
685
685
|
// Keyboard Shortcuts
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// This file is generated by scripts/generate-measurements.mjs. Do not edit.
|
|
2
|
-
// Source SHA-256:
|
|
2
|
+
// Source SHA-256: deb4b375de296c627460bd2d99618182ae0fa21768c26b2037d549cd84a7a0c8
|
|
3
3
|
|
|
4
4
|
export const MEASUREMENT_PROFILES = {
|
|
5
5
|
density: {
|
|
@@ -182,6 +182,7 @@ export const MEASUREMENT_PROFILES = {
|
|
|
182
182
|
"field-minimum": "140px",
|
|
183
183
|
"inline-floor": "56px",
|
|
184
184
|
"compact-content": "168px",
|
|
185
|
+
"menu-min": "192px",
|
|
185
186
|
"grid-cell": "224px",
|
|
186
187
|
"composer-item": "210px",
|
|
187
188
|
"page-narrow": "800px",
|
|
@@ -218,6 +219,12 @@ export const MEASUREMENT_PROFILES = {
|
|
|
218
219
|
weight: 400,
|
|
219
220
|
tracking: "0",
|
|
220
221
|
},
|
|
222
|
+
display: {
|
|
223
|
+
size: "32px",
|
|
224
|
+
line: "40px",
|
|
225
|
+
weight: 600,
|
|
226
|
+
tracking: "-0.02em",
|
|
227
|
+
},
|
|
221
228
|
"title-sm": {
|
|
222
229
|
size: "16px",
|
|
223
230
|
line: "24px",
|
|
@@ -311,7 +318,7 @@ export function applyMeasurementSelection(
|
|
|
311
318
|
if (cleaned) return;
|
|
312
319
|
cleaned = true;
|
|
313
320
|
for (let index = restore.length - 1; index >= 0; index -= 1) {
|
|
314
|
-
restore[index]();
|
|
321
|
+
restore[index]?.();
|
|
315
322
|
}
|
|
316
323
|
};
|
|
317
324
|
}
|
|
@@ -181,6 +181,7 @@
|
|
|
181
181
|
"field-minimum": "140px",
|
|
182
182
|
"inline-floor": "56px",
|
|
183
183
|
"compact-content": "168px",
|
|
184
|
+
"menu-min": "192px",
|
|
184
185
|
"grid-cell": "224px",
|
|
185
186
|
"composer-item": "210px",
|
|
186
187
|
"page-narrow": "800px"
|
|
@@ -217,6 +218,12 @@
|
|
|
217
218
|
"weight": 400,
|
|
218
219
|
"tracking": "0"
|
|
219
220
|
},
|
|
221
|
+
"display": {
|
|
222
|
+
"size": "32px",
|
|
223
|
+
"line": "40px",
|
|
224
|
+
"weight": 600,
|
|
225
|
+
"tracking": "-0.02em"
|
|
226
|
+
},
|
|
220
227
|
"title-sm": {
|
|
221
228
|
"size": "16px",
|
|
222
229
|
"line": "24px",
|
|
@@ -32,10 +32,7 @@
|
|
|
32
32
|
|
|
33
33
|
@function switch-inline-size($size) {
|
|
34
34
|
@if $size == "sm" or $size == "md" or $size == "lg" {
|
|
35
|
-
@return var(
|
|
36
|
-
--fui-control-track-#{$size},
|
|
37
|
-
#{measurements.target-value("controlTrack", $size)}
|
|
38
|
-
);
|
|
35
|
+
@return var(--fui-control-track-#{$size}, #{measurements.target-value("controlTrack", $size)});
|
|
39
36
|
}
|
|
40
37
|
|
|
41
38
|
@error "Unknown boolean size '#{$size}'. Expected sm, md, or lg.";
|
|
@@ -102,13 +99,8 @@
|
|
|
102
99
|
--_fui-switch-inline-size: #{switch-inline-size($size)};
|
|
103
100
|
--_fui-switch-block-size: #{switch-block-size($size)};
|
|
104
101
|
--_fui-switch-thumb-size: #{switch-thumb-size($size)};
|
|
105
|
-
--_fui-switch-inset: var(
|
|
106
|
-
|
|
107
|
-
#{measurements.target-value("stroke", "default")}
|
|
108
|
-
);
|
|
109
|
-
--_fui-switch-travel: calc(
|
|
110
|
-
var(--_fui-switch-inline-size) - var(--_fui-switch-block-size)
|
|
111
|
-
);
|
|
102
|
+
--_fui-switch-inset: var(--fui-stroke-default, #{measurements.target-value("stroke", "default")});
|
|
103
|
+
--_fui-switch-travel: calc(var(--_fui-switch-inline-size) - var(--_fui-switch-block-size));
|
|
112
104
|
|
|
113
105
|
inline-size: var(--_fui-switch-inline-size);
|
|
114
106
|
block-size: var(--_fui-switch-block-size);
|
package/src/recipes/_field.scss
CHANGED
|
@@ -80,7 +80,11 @@
|
|
|
80
80
|
@mixin focus-state {
|
|
81
81
|
border-color: var(--fui-color-accent, #{tokens.$fui-color-accent});
|
|
82
82
|
outline: var(--fui-focus-ring-width, #{tokens.$fui-focus-ring-width}) solid
|
|
83
|
-
color-mix(
|
|
83
|
+
color-mix(
|
|
84
|
+
in srgb,
|
|
85
|
+
var(--fui-focus-ring-color, #{tokens.$fui-focus-ring-color}) 34%,
|
|
86
|
+
transparent
|
|
87
|
+
);
|
|
84
88
|
outline-offset: var(--fui-focus-ring-offset, #{tokens.$fui-focus-ring-offset});
|
|
85
89
|
}
|
|
86
90
|
|
package/src/recipes/_layout.scss
CHANGED
|
@@ -49,13 +49,20 @@
|
|
|
49
49
|
}
|
|
50
50
|
|
|
51
51
|
@function measure($role) {
|
|
52
|
-
@if
|
|
53
|
-
|
|
54
|
-
$role ==
|
|
55
|
-
|
|
56
|
-
$role ==
|
|
57
|
-
|
|
58
|
-
$role ==
|
|
52
|
+
@if $role ==
|
|
53
|
+
"field-minimum" or
|
|
54
|
+
$role ==
|
|
55
|
+
"inline-floor" or
|
|
56
|
+
$role ==
|
|
57
|
+
"compact-content" or
|
|
58
|
+
$role ==
|
|
59
|
+
"menu-min" or
|
|
60
|
+
$role ==
|
|
61
|
+
"grid-cell" or
|
|
62
|
+
$role ==
|
|
63
|
+
"composer-item" or
|
|
64
|
+
$role ==
|
|
65
|
+
"page-narrow"
|
|
59
66
|
{
|
|
60
67
|
@return var(
|
|
61
68
|
--fui-layout-measure-#{$role},
|
package/src/recipes/_popup.scss
CHANGED
|
@@ -8,7 +8,10 @@
|
|
|
8
8
|
--fui-popup-row-block-inset: var(--fui-raw-space-8, #{measurements.raw-space(8)});
|
|
9
9
|
--fui-popup-row-inline-inset: var(--fui-raw-space-8, #{measurements.raw-space(8)});
|
|
10
10
|
--fui-popup-row-content-gap: var(--fui-raw-space-8, #{measurements.raw-space(8)});
|
|
11
|
-
--fui-popup-row-gap: var(
|
|
11
|
+
--fui-popup-row-gap: var(
|
|
12
|
+
--fui-stroke-hairline,
|
|
13
|
+
#{measurements.target-value("stroke", "hairline")}
|
|
14
|
+
);
|
|
12
15
|
--fui-popup-indicator-box: var(--fui-raw-space-16, #{measurements.raw-space(16)});
|
|
13
16
|
--fui-popup-separator-size: var(
|
|
14
17
|
--fui-stroke-hairline,
|
|
@@ -52,6 +55,10 @@
|
|
|
52
55
|
@include typography.role("ui-compact");
|
|
53
56
|
|
|
54
57
|
box-sizing: border-box;
|
|
58
|
+
// Rows are pick targets: rapid pointer travel must never start a text
|
|
59
|
+
// selection, and touch taps get no highlight flash.
|
|
60
|
+
user-select: none;
|
|
61
|
+
-webkit-tap-highlight-color: transparent;
|
|
55
62
|
display: flex;
|
|
56
63
|
align-items: center;
|
|
57
64
|
min-block-size: var(--_fui-popup-effective-row-pitch);
|
|
@@ -65,7 +72,10 @@
|
|
|
65
72
|
}
|
|
66
73
|
|
|
67
74
|
@mixin selected-state {
|
|
68
|
-
background: var(
|
|
75
|
+
background: var(
|
|
76
|
+
--fui-field-selection-bg,
|
|
77
|
+
var(--fui-control-selected-bg, #{tokens.$fui-bg-active})
|
|
78
|
+
);
|
|
69
79
|
color: var(--fui-text-primary, #{tokens.$fui-text-primary});
|
|
70
80
|
}
|
|
71
81
|
|
package/src/recipes/_prose.scss
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
|
+
@use "../tokens/mixins" as mixins;
|
|
1
2
|
@use "typography" as typography;
|
|
2
3
|
|
|
4
|
+
// Block rhythm is owned by the container (owl selectors below). The element
|
|
5
|
+
// mixins reset inline margins only, so a `.x p { @include paragraph }` rule
|
|
6
|
+
// (specificity 0,1,1) cannot out-rank the owl (0,1,0) and glue the flow.
|
|
3
7
|
@mixin root {
|
|
4
8
|
@include typography.role("body-relaxed");
|
|
5
9
|
|
|
@@ -19,7 +23,7 @@
|
|
|
19
23
|
@mixin paragraph {
|
|
20
24
|
@include typography.role("body-relaxed");
|
|
21
25
|
|
|
22
|
-
margin: 0;
|
|
26
|
+
margin-inline: 0;
|
|
23
27
|
}
|
|
24
28
|
|
|
25
29
|
@mixin heading($level) {
|
|
@@ -35,7 +39,7 @@
|
|
|
35
39
|
@error "Unknown prose heading '#{$level}'. Expected 1 through 6.";
|
|
36
40
|
}
|
|
37
41
|
|
|
38
|
-
margin: 0;
|
|
42
|
+
margin-inline: 0;
|
|
39
43
|
}
|
|
40
44
|
|
|
41
45
|
@mixin list($kind) {
|
|
@@ -152,12 +156,16 @@
|
|
|
152
156
|
@mixin link {
|
|
153
157
|
color: inherit;
|
|
154
158
|
text-decoration: underline;
|
|
155
|
-
|
|
159
|
+
// Em offset scales with the inherited font size (prose links render at
|
|
160
|
+
// several sizes); matches the Link component's hover/dotted variants.
|
|
161
|
+
text-underline-offset: 0.2em;
|
|
156
162
|
overflow-wrap: anywhere;
|
|
157
163
|
|
|
158
164
|
&:focus-visible {
|
|
159
|
-
|
|
160
|
-
|
|
165
|
+
// The previous hand-rolled outline referenced --fui-focus-ring, which is
|
|
166
|
+
// never defined — the whole declaration was invalid and prose links had
|
|
167
|
+
// no visible ring at all.
|
|
168
|
+
@include mixins.focus-ring;
|
|
161
169
|
}
|
|
162
170
|
}
|
|
163
171
|
|