@usefragments/ui 1.7.0 → 2.0.1
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 +54 -66
- package/dist/assets/nav-glyph.cjs +139 -0
- package/dist/assets/nav-glyph.d.ts +28 -0
- package/dist/assets/nav-glyph.d.ts.map +1 -0
- package/dist/assets/nav-glyph.js +139 -0
- package/dist/assets/nav-glyph.module.scss.cjs +71 -0
- package/dist/assets/nav-glyph.module.scss.js +71 -0
- package/dist/assets/ui.css +4975 -4959
- package/dist/blocks/components/StatsCard.d.ts +1 -1
- package/dist/blocks/components/StatsCard.d.ts.map +1 -1
- package/dist/codeblock.cjs +23 -16
- package/dist/codeblock.js +16 -9
- package/dist/colorpicker.cjs +1 -0
- package/dist/colorpicker.js +1 -0
- 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 +21 -21
- package/dist/components/Alert/Alert.module.scss.js +21 -21
- package/dist/components/Alert/index.cjs +14 -8
- package/dist/components/Alert/index.d.ts +9 -9
- package/dist/components/Alert/index.d.ts.map +1 -1
- package/dist/components/Alert/index.js +14 -8
- package/dist/components/AppShell/AppShell.module.scss.cjs +14 -14
- package/dist/components/AppShell/AppShell.module.scss.js +14 -14
- package/dist/components/AppShell/index.cjs +2 -2
- package/dist/components/AppShell/index.js +2 -2
- 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 +33 -31
- package/dist/components/Badge/Badge.module.scss.js +33 -31
- package/dist/components/Badge/index.cjs +13 -3
- package/dist/components/Badge/index.d.ts +18 -13
- package/dist/components/Badge/index.d.ts.map +1 -1
- package/dist/components/Badge/index.js +13 -3
- 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/Breadcrumbs/Breadcrumbs.module.scss.cjs +11 -8
- package/dist/components/Breadcrumbs/Breadcrumbs.module.scss.js +11 -8
- package/dist/components/Breadcrumbs/index.cjs +1 -1
- package/dist/components/Breadcrumbs/index.d.ts.map +1 -1
- package/dist/components/Breadcrumbs/index.js +1 -1
- package/dist/components/Button/Button.module.scss.cjs +36 -27
- package/dist/components/Button/Button.module.scss.js +36 -27
- package/dist/components/Button/index.cjs +20 -4
- package/dist/components/Button/index.d.ts +18 -10
- package/dist/components/Button/index.d.ts.map +1 -1
- package/dist/components/Button/index.js +20 -4
- package/dist/components/ButtonGroup/ButtonGroup.module.scss.cjs +15 -15
- package/dist/components/ButtonGroup/ButtonGroup.module.scss.js +15 -15
- package/dist/components/Card/Card.module.scss.cjs +27 -34
- package/dist/components/Card/Card.module.scss.js +27 -34
- package/dist/components/Card/index.cjs +13 -8
- package/dist/components/Card/index.d.ts +23 -25
- package/dist/components/Card/index.d.ts.map +1 -1
- package/dist/components/Card/index.js +13 -8
- package/dist/components/Chart/Chart.module.scss.cjs +15 -15
- package/dist/components/Chart/Chart.module.scss.js +15 -15
- package/dist/components/Checkbox/Checkbox.module.scss.cjs +11 -11
- package/dist/components/Checkbox/Checkbox.module.scss.js +11 -11
- package/dist/components/Checkbox/index.cjs +2 -2
- package/dist/components/Checkbox/index.d.ts +4 -6
- 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 +19 -19
- package/dist/components/Chip/Chip.module.scss.js +19 -19
- package/dist/components/Chip/index.cjs +1 -2
- package/dist/components/Chip/index.d.ts +8 -3
- package/dist/components/Chip/index.d.ts.map +1 -1
- package/dist/components/Chip/index.js +1 -2
- package/dist/components/CodeBlock/CodeBlock.module.scss.cjs +22 -22
- package/dist/components/CodeBlock/CodeBlock.module.scss.js +22 -22
- package/dist/components/CodeBlock/index.d.ts +3 -2
- 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 +9 -5
- package/dist/components/Combobox/index.d.ts.map +1 -1
- package/dist/components/Combobox/index.js +9 -5
- package/dist/components/Command/Command.module.scss.cjs +14 -11
- package/dist/components/Command/Command.module.scss.js +14 -11
- package/dist/components/Command/index.cjs +2 -1
- package/dist/components/Command/index.d.ts +6 -1
- package/dist/components/Command/index.d.ts.map +1 -1
- package/dist/components/Command/index.js +2 -1
- package/dist/components/ConversationList/ConversationList.module.scss.cjs +10 -10
- package/dist/components/ConversationList/ConversationList.module.scss.js +10 -10
- package/dist/components/ConversationList/index.cjs +2 -2
- package/dist/components/ConversationList/index.js +2 -2
- package/dist/components/DataTable/DataTable.module.scss.cjs +31 -28
- package/dist/components/DataTable/DataTable.module.scss.js +31 -28
- package/dist/components/DataTable/DataTable.virtual.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 +2 -2
- package/dist/components/Dialog/index.d.ts +5 -4
- package/dist/components/Dialog/index.d.ts.map +1 -1
- package/dist/components/Dialog/index.js +2 -2
- package/dist/components/Drawer/Drawer.module.scss.cjs +39 -39
- package/dist/components/Drawer/Drawer.module.scss.js +40 -40
- package/dist/components/Drawer/index.cjs +2 -2
- package/dist/components/Drawer/index.d.ts +5 -4
- package/dist/components/Drawer/index.d.ts.map +1 -1
- package/dist/components/Drawer/index.js +2 -2
- package/dist/components/Editor/Editor.module.scss.cjs +17 -17
- package/dist/components/Editor/Editor.module.scss.js +17 -17
- package/dist/components/EmptyState/EmptyState.module.scss.cjs +11 -11
- package/dist/components/EmptyState/EmptyState.module.scss.js +11 -11
- package/dist/components/EmptyState/index.cjs +9 -4
- package/dist/components/EmptyState/index.d.ts +8 -5
- package/dist/components/EmptyState/index.d.ts.map +1 -1
- package/dist/components/EmptyState/index.js +9 -4
- package/dist/components/Field/Field.module.scss.cjs +5 -5
- package/dist/components/Field/Field.module.scss.js +5 -5
- package/dist/components/Fieldset/Fieldset.module.scss.cjs +3 -3
- package/dist/components/Fieldset/Fieldset.module.scss.js +3 -3
- package/dist/components/Grid/Grid.module.scss.cjs +54 -54
- package/dist/components/Grid/Grid.module.scss.js +54 -54
- package/dist/components/Header/Header.module.scss.cjs +33 -33
- package/dist/components/Header/Header.module.scss.js +33 -33
- package/dist/components/Icon/Icon.module.scss.cjs +30 -33
- package/dist/components/Icon/Icon.module.scss.js +30 -33
- package/dist/components/Icon/index.cjs +15 -14
- package/dist/components/Icon/index.d.ts +23 -12
- package/dist/components/Icon/index.d.ts.map +1 -1
- package/dist/components/Icon/index.js +15 -14
- package/dist/components/IconButton/IconButton.module.scss.cjs +12 -12
- package/dist/components/IconButton/IconButton.module.scss.js +12 -12
- package/dist/components/IconButton/index.d.ts +4 -4
- package/dist/components/IconButton/index.d.ts.map +1 -1
- package/dist/components/Input/Input.module.scss.cjs +15 -21
- package/dist/components/Input/Input.module.scss.js +15 -21
- package/dist/components/Input/index.cjs +2 -14
- package/dist/components/Input/index.d.ts +0 -2
- package/dist/components/Input/index.d.ts.map +1 -1
- package/dist/components/Input/index.js +2 -14
- package/dist/components/Link/Link.module.scss.cjs +24 -16
- package/dist/components/Link/Link.module.scss.js +24 -16
- package/dist/components/Link/index.cjs +13 -2
- package/dist/components/Link/index.d.ts +10 -3
- package/dist/components/Link/index.d.ts.map +1 -1
- package/dist/components/Link/index.js +13 -2
- package/dist/components/List/List.module.scss.cjs +23 -19
- package/dist/components/List/List.module.scss.js +23 -19
- package/dist/components/List/index.cjs +7 -7
- package/dist/components/List/index.d.ts +10 -7
- package/dist/components/List/index.d.ts.map +1 -1
- package/dist/components/List/index.js +7 -7
- 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 +30 -30
- package/dist/components/Loading/Loading.module.scss.js +30 -30
- package/dist/components/Loading/index.cjs +5 -5
- package/dist/components/Loading/index.d.ts +8 -7
- package/dist/components/Loading/index.d.ts.map +1 -1
- package/dist/components/Loading/index.js +5 -5
- package/dist/components/Markdown/Markdown.module.scss.cjs +1 -1
- package/dist/components/Markdown/Markdown.module.scss.js +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 +20 -20
- package/dist/components/Message/Message.module.scss.js +20 -20
- package/dist/components/Message/index.cjs +1 -1
- package/dist/components/Message/index.d.ts +1 -1
- package/dist/components/Message/index.js +1 -1
- package/dist/components/NavigationMenu/NavigationMenu.module.scss.cjs +29 -29
- package/dist/components/NavigationMenu/NavigationMenu.module.scss.js +29 -29
- 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 +28 -25
- package/dist/components/Progress/Progress.module.scss.js +28 -25
- package/dist/components/Progress/index.cjs +21 -12
- package/dist/components/Progress/index.d.ts +10 -6
- package/dist/components/Progress/index.d.ts.map +1 -1
- package/dist/components/Progress/index.js +21 -12
- package/dist/components/Prompt/Prompt.module.scss.cjs +30 -30
- package/dist/components/Prompt/Prompt.module.scss.js +30 -30
- package/dist/components/Prompt/index.cjs +7 -7
- package/dist/components/Prompt/index.d.ts +11 -9
- package/dist/components/Prompt/index.d.ts.map +1 -1
- package/dist/components/Prompt/index.js +7 -7
- package/dist/components/RadioGroup/RadioGroup.module.scss.cjs +20 -17
- package/dist/components/RadioGroup/RadioGroup.module.scss.js +20 -17
- package/dist/components/RadioGroup/index.cjs +10 -5
- package/dist/components/RadioGroup/index.d.ts +11 -7
- package/dist/components/RadioGroup/index.d.ts.map +1 -1
- package/dist/components/RadioGroup/index.js +10 -5
- package/dist/components/ScrollArea/ScrollArea.module.scss.cjs +5 -5
- package/dist/components/ScrollArea/ScrollArea.module.scss.js +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/Select/index.cjs +26 -20
- package/dist/components/Select/index.d.ts +5 -5
- package/dist/components/Select/index.d.ts.map +1 -1
- package/dist/components/Select/index.js +26 -20
- package/dist/components/Separator/Separator.module.scss.cjs +25 -19
- package/dist/components/Separator/Separator.module.scss.js +25 -19
- package/dist/components/Separator/index.cjs +10 -8
- package/dist/components/Separator/index.d.ts +4 -2
- package/dist/components/Separator/index.d.ts.map +1 -1
- package/dist/components/Separator/index.js +10 -8
- 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 +3 -3
- package/dist/components/Sidebar/index.js +3 -3
- package/dist/components/Skeleton/Skeleton.module.scss.cjs +46 -46
- package/dist/components/Skeleton/Skeleton.module.scss.js +46 -46
- package/dist/components/Skeleton/index.cjs +7 -7
- package/dist/components/Skeleton/index.d.ts +8 -7
- package/dist/components/Skeleton/index.d.ts.map +1 -1
- package/dist/components/Skeleton/index.js +7 -7
- package/dist/components/Slider/Slider.module.scss.cjs +12 -12
- package/dist/components/Slider/Slider.module.scss.js +12 -12
- 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 +15 -15
- package/dist/components/Table/Table.module.scss.js +15 -15
- 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 +1 -1
- package/dist/components/TableOfContents/index.js +1 -1
- package/dist/components/Tabs/Tabs.module.scss.cjs +18 -18
- package/dist/components/Tabs/Tabs.module.scss.js +18 -18
- package/dist/components/Tabs/index.cjs +5 -6
- package/dist/components/Tabs/index.d.ts +8 -6
- package/dist/components/Tabs/index.d.ts.map +1 -1
- package/dist/components/Tabs/index.js +5 -6
- package/dist/components/Text/Text.module.scss.cjs +105 -105
- package/dist/components/Text/Text.module.scss.js +105 -105
- package/dist/components/Text/index.cjs +5 -9
- package/dist/components/Text/index.d.ts +15 -11
- package/dist/components/Text/index.d.ts.map +1 -1
- package/dist/components/Text/index.js +5 -9
- package/dist/components/Textarea/Textarea.module.scss.cjs +22 -28
- package/dist/components/Textarea/Textarea.module.scss.js +22 -28
- package/dist/components/Textarea/index.cjs +3 -10
- package/dist/components/Textarea/index.d.ts +0 -2
- package/dist/components/Textarea/index.d.ts.map +1 -1
- package/dist/components/Textarea/index.js +3 -10
- package/dist/components/Theme/index.cjs +20 -4
- package/dist/components/Theme/index.d.ts +6 -12
- package/dist/components/Theme/index.d.ts.map +1 -1
- package/dist/components/Theme/index.js +20 -4
- package/dist/components/ThemeToggle/ThemeButton.cjs +51 -0
- package/dist/components/ThemeToggle/ThemeButton.d.ts +16 -0
- package/dist/components/ThemeToggle/ThemeButton.d.ts.map +1 -0
- package/dist/components/ThemeToggle/ThemeButton.js +34 -0
- package/dist/components/ThemeToggle/ThemeToggle.module.scss.cjs +6 -9
- package/dist/components/ThemeToggle/ThemeToggle.module.scss.js +6 -9
- package/dist/components/ThemeToggle/icons.cjs +48 -0
- package/dist/components/ThemeToggle/icons.d.ts +10 -0
- package/dist/components/ThemeToggle/icons.d.ts.map +1 -0
- package/dist/components/ThemeToggle/icons.js +48 -0
- package/dist/components/ThemeToggle/index.cjs +5 -74
- package/dist/components/ThemeToggle/index.d.ts +5 -8
- package/dist/components/ThemeToggle/index.d.ts.map +1 -1
- package/dist/components/ThemeToggle/index.js +3 -72
- package/dist/components/ThinkingIndicator/ThinkingIndicator.module.scss.cjs +18 -15
- package/dist/components/ThinkingIndicator/ThinkingIndicator.module.scss.js +18 -15
- package/dist/components/ThinkingIndicator/index.cjs +7 -8
- package/dist/components/ThinkingIndicator/index.d.ts +6 -5
- package/dist/components/ThinkingIndicator/index.d.ts.map +1 -1
- package/dist/components/ThinkingIndicator/index.js +7 -8
- package/dist/components/Toast/Toast.module.scss.cjs +28 -29
- package/dist/components/Toast/Toast.module.scss.js +29 -30
- package/dist/components/Toast/index.cjs +28 -30
- package/dist/components/Toast/index.d.ts +9 -8
- package/dist/components/Toast/index.d.ts.map +1 -1
- package/dist/components/Toast/index.js +28 -30
- package/dist/components/ToggleGroup/ToggleGroup.module.scss.cjs +21 -19
- package/dist/components/ToggleGroup/ToggleGroup.module.scss.js +22 -20
- package/dist/components/ToggleGroup/index.cjs +4 -5
- package/dist/components/ToggleGroup/index.d.ts +7 -6
- package/dist/components/ToggleGroup/index.d.ts.map +1 -1
- package/dist/components/ToggleGroup/index.js +4 -5
- package/dist/components/Tooltip/Tooltip.module.scss.cjs +3 -3
- package/dist/components/Tooltip/Tooltip.module.scss.js +3 -3
- package/dist/components/VisuallyHidden/VisuallyHidden.module.scss.cjs +1 -1
- package/dist/components/VisuallyHidden/VisuallyHidden.module.scss.js +1 -1
- package/dist/data-table-virtual.cjs +3 -2
- package/dist/data-table-virtual.js +3 -2
- package/dist/data-table.cjs +1 -1
- package/dist/data-table.js +1 -1
- package/dist/datepicker.cjs +23 -11
- package/dist/datepicker.js +23 -11
- package/dist/index.cjs +5 -1
- package/dist/index.d.ts +8 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -2
- package/dist/measurements/generated.cjs +37 -93
- package/dist/measurements/generated.d.ts +37 -92
- package/dist/measurements/generated.d.ts.map +1 -1
- package/dist/measurements/generated.js +37 -93
- package/dist/measurements/index.d.ts +1 -1
- package/dist/measurements/index.d.ts.map +1 -1
- package/dist/utils/seed-derivation.cjs +0 -1
- package/dist/utils/seed-derivation.d.ts +1 -3
- package/dist/utils/seed-derivation.d.ts.map +1 -1
- package/dist/utils/seed-derivation.js +0 -1
- package/dist/utils/theme-presets.cjs +5 -10
- package/dist/utils/theme-presets.d.ts +1 -2
- package/dist/utils/theme-presets.d.ts.map +1 -1
- package/dist/utils/theme-presets.js +5 -10
- package/fragments.json +1 -1
- package/package.json +5 -8
- package/src/assets/nav-glyph.module.scss +166 -0
- package/src/assets/nav-glyph.tsx +188 -0
- package/src/components/Accordion/Accordion.module.scss +5 -3
- package/src/components/Alert/Alert.contract.json +18 -18
- package/src/components/Alert/Alert.module.scss +50 -64
- package/src/components/Alert/index.tsx +24 -17
- package/src/components/AppShell/AppShell.contract.json +7 -7
- package/src/components/AppShell/AppShell.module.scss +49 -17
- package/src/components/AppShell/index.tsx +2 -2
- package/src/components/Avatar/Avatar.module.scss +0 -1
- package/src/components/Badge/Badge.contract.json +58 -22
- package/src/components/Badge/Badge.module.scss +72 -47
- package/src/components/Badge/index.tsx +34 -17
- package/src/components/BentoGrid/BentoGrid.module.scss +4 -8
- package/src/components/Box/Box.module.scss +7 -6
- package/src/components/Breadcrumbs/Breadcrumbs.module.scss +15 -5
- package/src/components/Breadcrumbs/index.tsx +5 -1
- package/src/components/Button/Button.module.scss +261 -186
- package/src/components/Button/index.tsx +41 -28
- package/src/components/ButtonGroup/ButtonGroup.contract.json +5 -5
- package/src/components/ButtonGroup/ButtonGroup.module.scss +8 -6
- package/src/components/Card/Card.consumer-fixture.module.scss +5 -2
- package/src/components/Card/Card.module.scss +73 -133
- package/src/components/Card/index.tsx +41 -36
- package/src/components/Chart/Chart.module.scss +6 -5
- package/src/components/Checkbox/Checkbox.contract.json +4 -3
- package/src/components/Checkbox/Checkbox.module.scss +16 -32
- package/src/components/Checkbox/index.tsx +6 -8
- package/src/components/Chip/Chip.contract.json +10 -10
- package/src/components/Chip/Chip.module.scss +23 -22
- package/src/components/Chip/index.tsx +10 -6
- package/src/components/CodeBlock/CodeBlock.module.scss +47 -70
- package/src/components/CodeBlock/index.tsx +23 -16
- package/src/components/Collapsible/Collapsible.module.scss +1 -7
- package/src/components/ColorPicker/ColorPicker.module.scss +20 -13
- package/src/components/ColorPicker/index.tsx +1 -0
- package/src/components/Combobox/Combobox.module.scss +16 -19
- package/src/components/Combobox/index.tsx +10 -1
- package/src/components/Command/Command.contract.json +7 -1
- package/src/components/Command/Command.module.scss +19 -21
- package/src/components/Command/index.tsx +7 -1
- package/src/components/ComponentDefaults/ComponentDefaults.contract.json +91 -0
- package/src/components/ConversationList/ConversationList.module.scss +2 -3
- package/src/components/ConversationList/index.tsx +2 -2
- package/src/components/DataTable/DataTable.module.scss +12 -9
- package/src/components/DataTable/DataTable.virtual.tsx +3 -2
- package/src/components/DataTable/index.tsx +1 -1
- package/src/components/DatePicker/DatePicker.module.scss +32 -42
- package/src/components/DatePicker/index.tsx +18 -7
- package/src/components/Dialog/Dialog.module.scss +23 -29
- package/src/components/Dialog/index.tsx +7 -5
- package/src/components/Drawer/Drawer.contract.json +6 -6
- package/src/components/Drawer/Drawer.module.scss +123 -64
- package/src/components/Drawer/index.tsx +7 -5
- package/src/components/Editor/Editor.contract.json +1 -1
- package/src/components/Editor/Editor.module.scss +26 -13
- package/src/components/EmptyState/EmptyState.contract.json +6 -6
- package/src/components/EmptyState/EmptyState.module.scss +31 -23
- package/src/components/EmptyState/index.tsx +17 -9
- package/src/components/Field/Field.module.scss +2 -1
- package/src/components/Fieldset/Fieldset.module.scss +5 -4
- package/src/components/Form/Form.contract.json +4 -4
- package/src/components/Grid/Grid.module.scss +2 -2
- package/src/components/Header/Header.contract.json +2 -2
- package/src/components/Header/Header.module.scss +24 -36
- package/src/components/Icon/Icon.contract.json +19 -23
- package/src/components/Icon/Icon.module.scss +13 -12
- package/src/components/Icon/index.tsx +31 -31
- package/src/components/IconButton/IconButton.contract.json +8 -8
- package/src/components/IconButton/IconButton.module.scss +13 -4
- package/src/components/IconButton/index.tsx +4 -4
- package/src/components/Input/Input.contract.json +0 -13
- package/src/components/Input/Input.module.scss +4 -54
- package/src/components/Input/index.tsx +2 -18
- package/src/components/Link/Link.contract.json +19 -11
- package/src/components/Link/Link.module.scss +24 -10
- package/src/components/Link/index.tsx +26 -5
- package/src/components/List/List.contract.json +11 -11
- package/src/components/List/List.module.scss +10 -5
- package/src/components/List/index.tsx +17 -13
- package/src/components/Listbox/Listbox.module.scss +14 -20
- package/src/components/Loading/Loading.contract.json +6 -6
- package/src/components/Loading/Loading.module.scss +29 -26
- package/src/components/Loading/index.tsx +13 -12
- package/src/components/Markdown/Markdown.module.scss +2 -1
- package/src/components/Menu/Menu.contract.json +5 -5
- package/src/components/Menu/Menu.module.scss +11 -10
- package/src/components/Message/Message.contract.json +5 -5
- package/src/components/Message/Message.module.scss +8 -6
- package/src/components/Message/index.tsx +2 -2
- package/src/components/NavigationMenu/NavigationMenu.module.scss +22 -67
- package/src/components/Pagination/Pagination.module.scss +7 -14
- package/src/components/Popover/Popover.contract.json +4 -4
- package/src/components/Popover/Popover.module.scss +24 -23
- package/src/components/Progress/Progress.contract.json +11 -11
- package/src/components/Progress/Progress.module.scss +13 -8
- package/src/components/Progress/index.tsx +34 -16
- package/src/components/Prompt/Prompt.contract.json +12 -12
- package/src/components/Prompt/Prompt.module.scss +40 -47
- package/src/components/Prompt/index.tsx +17 -15
- package/src/components/RadioGroup/RadioGroup.contract.json +6 -4
- package/src/components/RadioGroup/RadioGroup.module.scss +38 -32
- package/src/components/RadioGroup/index.tsx +23 -10
- package/src/components/ScrollArea/ScrollArea.module.scss +30 -33
- package/src/components/Select/Select.module.scss +19 -18
- package/src/components/Select/index.tsx +26 -24
- package/src/components/Separator/Separator.contract.json +10 -10
- package/src/components/Separator/Separator.module.scss +24 -40
- package/src/components/Separator/index.tsx +16 -11
- package/src/components/Sidebar/Sidebar.contract.json +1 -1
- package/src/components/Sidebar/Sidebar.module.scss +92 -95
- package/src/components/Sidebar/index.tsx +3 -3
- package/src/components/Skeleton/Skeleton.contract.json +9 -9
- package/src/components/Skeleton/Skeleton.module.scss +23 -16
- package/src/components/Skeleton/index.tsx +16 -15
- package/src/components/Slider/Slider.module.scss +6 -19
- package/src/components/Stack/Stack.contract.json +1 -1
- package/src/components/Stack/Stack.module.scss +13 -12
- package/src/components/Switch/Switch.module.scss +44 -35
- package/src/components/Table/Table.module.scss +9 -13
- package/src/components/TableOfContents/TableOfContents.module.scss +12 -18
- package/src/components/TableOfContents/index.tsx +1 -1
- package/src/components/Tabs/Tabs.contract.json +14 -14
- package/src/components/Tabs/Tabs.module.scss +27 -31
- package/src/components/Tabs/index.tsx +15 -12
- package/src/components/Text/Text.contract.json +36 -14
- package/src/components/Text/Text.module.scss +19 -20
- package/src/components/Text/index.tsx +23 -21
- package/src/components/Textarea/Textarea.contract.json +0 -13
- package/src/components/Textarea/Textarea.module.scss +24 -52
- package/src/components/Textarea/index.tsx +3 -14
- package/src/components/Theme/Theme.contract.json +9 -8
- package/src/components/Theme/index.tsx +39 -12
- package/src/components/ThemeToggle/ThemeButton.tsx +49 -0
- package/src/components/ThemeToggle/ThemeToggle.module.scss +21 -44
- package/src/components/ThemeToggle/icons.tsx +46 -0
- package/src/components/ThemeToggle/index.tsx +8 -90
- package/src/components/ThinkingIndicator/ThinkingIndicator.contract.json +11 -10
- package/src/components/ThinkingIndicator/ThinkingIndicator.module.scss +9 -7
- package/src/components/ThinkingIndicator/index.tsx +12 -14
- package/src/components/Toast/Toast.contract.json +29 -13
- package/src/components/Toast/Toast.module.scss +49 -104
- package/src/components/Toast/index.tsx +39 -34
- package/src/components/ToggleGroup/ToggleGroup.contract.json +13 -13
- package/src/components/ToggleGroup/ToggleGroup.module.scss +16 -46
- package/src/components/ToggleGroup/index.tsx +11 -11
- package/src/components/Tooltip/Tooltip.contract.json +3 -3
- package/src/components/Tooltip/Tooltip.module.scss +16 -10
- package/src/components/VisuallyHidden/VisuallyHidden.module.scss +4 -14
- package/src/index.ts +14 -10
- package/src/measurements/MeasurementTargets.module.scss +6 -7
- package/src/measurements/generated.ts +38 -96
- package/src/measurements/index.ts +0 -1
- package/src/measurements/measurements.json +37 -116
- package/src/recipes/_action.scss +4 -4
- package/src/recipes/_boolean-range.scss +9 -5
- package/src/recipes/_feedback.scss +17 -16
- package/src/recipes/_field.scss +28 -20
- package/src/recipes/_navigation.scss +84 -29
- package/src/recipes/_overlay.scss +143 -43
- package/src/recipes/_popup.scss +46 -36
- package/src/recipes/_prose.scss +35 -23
- package/src/recipes/_representation.scss +10 -9
- package/src/recipes/_segmented.scss +1 -1
- package/src/recipes/_table-chrome.scss +27 -16
- package/src/recipes/_target.scss +2 -4
- package/src/recipes/_typography.scss +10 -0
- package/src/styles/globals.scss +14 -9
- package/src/tokens/_component-properties.scss +19 -1
- package/src/tokens/_computed.scss +27 -33
- package/src/tokens/_measurements.catalog.generated.css +58 -45
- package/src/tokens/_measurements.generated.scss +107 -250
- package/src/tokens/_mixins.scss +42 -40
- package/src/tokens/_palettes.scss +1 -1
- package/src/tokens/_property-registrations.scss +9 -0
- package/src/tokens/_seeds.scss +1 -12
- package/src/tokens/_variables.scss +71 -59
- package/src/utils/seed-derivation.ts +1 -8
- package/src/utils/theme-presets.ts +5 -12
- package/dist/blocks/AccountSettings.block.d.ts +0 -3
- package/dist/blocks/AccountSettings.block.d.ts.map +0 -1
- package/dist/blocks/ActivityFeedSkeleton.block.d.ts +0 -3
- package/dist/blocks/ActivityFeedSkeleton.block.d.ts.map +0 -1
- package/dist/blocks/BlogEditor.block.d.ts +0 -3
- package/dist/blocks/BlogEditor.block.d.ts.map +0 -1
- package/dist/blocks/ChatInterface.block.d.ts +0 -3
- package/dist/blocks/ChatInterface.block.d.ts.map +0 -1
- package/dist/blocks/ChatMessages.block.d.ts +0 -3
- package/dist/blocks/ChatMessages.block.d.ts.map +0 -1
- package/dist/blocks/CheckoutForm.block.d.ts +0 -3
- package/dist/blocks/CheckoutForm.block.d.ts.map +0 -1
- package/dist/blocks/CommandPalette.block.d.ts +0 -3
- package/dist/blocks/CommandPalette.block.d.ts.map +0 -1
- package/dist/blocks/ContactForm.block.d.ts +0 -3
- package/dist/blocks/ContactForm.block.d.ts.map +0 -1
- package/dist/blocks/DashboardPage.block.d.ts +0 -3
- package/dist/blocks/DashboardPage.block.d.ts.map +0 -1
- package/dist/blocks/DashboardSkeleton.block.d.ts +0 -3
- package/dist/blocks/DashboardSkeleton.block.d.ts.map +0 -1
- package/dist/blocks/DataTable.block.d.ts +0 -3
- package/dist/blocks/DataTable.block.d.ts.map +0 -1
- package/dist/blocks/EmptyState.block.d.ts +0 -3
- package/dist/blocks/EmptyState.block.d.ts.map +0 -1
- package/dist/blocks/FAQSection.block.d.ts +0 -3
- package/dist/blocks/FAQSection.block.d.ts.map +0 -1
- package/dist/blocks/FeatureGrid.block.d.ts +0 -3
- package/dist/blocks/FeatureGrid.block.d.ts.map +0 -1
- package/dist/blocks/HeroSection.block.d.ts +0 -3
- package/dist/blocks/HeroSection.block.d.ts.map +0 -1
- package/dist/blocks/NavigationHeader.block.d.ts +0 -3
- package/dist/blocks/NavigationHeader.block.d.ts.map +0 -1
- package/dist/blocks/PaginatedTable.block.d.ts +0 -3
- package/dist/blocks/PaginatedTable.block.d.ts.map +0 -1
- package/dist/blocks/PricingComparison.block.d.ts +0 -3
- package/dist/blocks/PricingComparison.block.d.ts.map +0 -1
- package/dist/blocks/ProductCard.block.d.ts +0 -3
- package/dist/blocks/ProductCard.block.d.ts.map +0 -1
- package/dist/blocks/RegistrationForm.block.d.ts +0 -3
- package/dist/blocks/RegistrationForm.block.d.ts.map +0 -1
- package/dist/blocks/SettingsDrawer.block.d.ts +0 -3
- package/dist/blocks/SettingsDrawer.block.d.ts.map +0 -1
- package/dist/blocks/SettingsPanel.block.d.ts +0 -3
- package/dist/blocks/SettingsPanel.block.d.ts.map +0 -1
- package/dist/blocks/ShoppingCart.block.d.ts +0 -3
- package/dist/blocks/ShoppingCart.block.d.ts.map +0 -1
- package/dist/blocks/StatsCardSkeleton.block.d.ts +0 -3
- package/dist/blocks/StatsCardSkeleton.block.d.ts.map +0 -1
- package/dist/blocks/TableSkeleton.block.d.ts +0 -3
- package/dist/blocks/TableSkeleton.block.d.ts.map +0 -1
- package/dist/blocks/ThinkingStates.block.d.ts +0 -3
- package/dist/blocks/ThinkingStates.block.d.ts.map +0 -1
- package/dist/components/Toggle/index.d.ts +0 -3
- package/dist/components/Toggle/index.d.ts.map +0 -1
- package/src/components/Toggle/index.ts +0 -7
- package/src/tokens/_density.scss +0 -85
|
@@ -20,8 +20,8 @@
|
|
|
20
20
|
"maxRows: number (default: 8)",
|
|
21
21
|
"autoResize: boolean (default: true)",
|
|
22
22
|
"submitOnEnter: boolean (default: true)",
|
|
23
|
-
"
|
|
24
|
-
"
|
|
23
|
+
"placement: inline|fixed|sticky (default: inline)",
|
|
24
|
+
"variant: outline|ghost (default: outline)",
|
|
25
25
|
"onFiles: function",
|
|
26
26
|
"accept: string"
|
|
27
27
|
],
|
|
@@ -94,12 +94,12 @@
|
|
|
94
94
|
"default": "true",
|
|
95
95
|
"required": false
|
|
96
96
|
},
|
|
97
|
-
"
|
|
97
|
+
"placement": {
|
|
98
98
|
"type": "enum",
|
|
99
|
-
"description": "
|
|
100
|
-
"default": "
|
|
99
|
+
"description": "Where the card sits: inline in the flow, fixed to the viewport bottom, or sticky to the content area (offset by --fui-prompt-inset-left)",
|
|
100
|
+
"default": "inline",
|
|
101
101
|
"required": false,
|
|
102
|
-
"values": ["
|
|
102
|
+
"values": ["inline", "fixed", "sticky"]
|
|
103
103
|
},
|
|
104
104
|
"onFiles": {
|
|
105
105
|
"type": "function",
|
|
@@ -111,12 +111,12 @@
|
|
|
111
111
|
"description": "accept filter for the attach button's picker, e.g. \"image/*\"",
|
|
112
112
|
"required": false
|
|
113
113
|
},
|
|
114
|
-
"
|
|
114
|
+
"variant": {
|
|
115
115
|
"type": "enum",
|
|
116
|
-
"description": "
|
|
117
|
-
"default": "
|
|
116
|
+
"description": "Card chrome. \"outline\" keeps the toolbar as a filled footer under a rule; \"ghost\" makes the whole card one writing surface with the controls floating on it.",
|
|
117
|
+
"default": "outline",
|
|
118
118
|
"required": false,
|
|
119
|
-
"values": ["
|
|
119
|
+
"values": ["outline", "ghost"]
|
|
120
120
|
}
|
|
121
121
|
},
|
|
122
122
|
"usage": {
|
|
@@ -134,7 +134,7 @@
|
|
|
134
134
|
"Always pass an onSubmit handler",
|
|
135
135
|
"Set loading while the request is in flight to block duplicate sends",
|
|
136
136
|
"Prompt.Textarea forwards native textarea props and composes your own handlers",
|
|
137
|
-
"
|
|
137
|
+
"variant=\"ghost\" floats the controls on the writing surface instead of a footer",
|
|
138
138
|
"Seamless secondary controls stay transparent; only Prompt.Submit keeps a filled shape",
|
|
139
139
|
"Prompt.Submit uses a neutral inverse surface, never semantic brand color",
|
|
140
140
|
"Prompt.ModeButton toggles a setting; Prompt.Select picks one from a list",
|
|
@@ -166,7 +166,7 @@
|
|
|
166
166
|
{
|
|
167
167
|
"name": "Agent Composer",
|
|
168
168
|
"description": "Controls float on the writing surface instead of a footer.",
|
|
169
|
-
"code": "<Prompt\n
|
|
169
|
+
"code": "<Prompt\n variant=\"ghost\"\n submitOnEnter={false}\n minRows={3}\n onSubmit={(value) => console.log(value)}\n>\n <Prompt.Textarea placeholder=\"What should be true when this is done?\" />\n <Prompt.Toolbar>\n <Prompt.Actions>\n <Prompt.Select\n aria-label=\"Model\"\n defaultValue=\"claude-opus-4-8\"\n options={[{ value: 'claude-opus-4-8', label: 'Opus 4.8' }, { value: 'claude-sonnet-5', label: 'Sonnet 5' }]}\n />\n <Prompt.ModeButton>Plan</Prompt.ModeButton>\n </Prompt.Actions>\n <Prompt.Info>\n <Prompt.Submit />\n </Prompt.Info>\n </Prompt.Toolbar>\n</Prompt>"
|
|
170
170
|
},
|
|
171
171
|
{
|
|
172
172
|
"name": "With Attachments",
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
@use "../../tokens/variables" as *;
|
|
2
2
|
@use "../../tokens/mixins" as *;
|
|
3
|
+
@use "../../tokens/measurements.generated" as measurements;
|
|
3
4
|
@use "../../recipes/action" as action;
|
|
4
5
|
@use "../../recipes/layout" as layout;
|
|
5
6
|
@use "../../recipes/target" as target;
|
|
@@ -29,7 +30,7 @@
|
|
|
29
30
|
|
|
30
31
|
// Gradient layer (behind everything)
|
|
31
32
|
&::before {
|
|
32
|
-
inset: calc(-1 * var(--fui-stroke-hairline,
|
|
33
|
+
inset: calc(-1 * var(--fui-stroke-hairline, #{$fui-stroke-hairline}));
|
|
33
34
|
z-index: 0;
|
|
34
35
|
background: conic-gradient(
|
|
35
36
|
from var(--beam-angle, 0deg) at 50% 50%,
|
|
@@ -45,13 +46,13 @@
|
|
|
45
46
|
// Ambient loop: twice the shimmer beat, kept on the token scale.
|
|
46
47
|
animation: beam-rotate calc(var(--fui-duration-shimmer, #{$fui-duration-shimmer}) * 2) linear
|
|
47
48
|
infinite;
|
|
48
|
-
opacity:
|
|
49
|
+
opacity: var(--fui-opacity-disabled, #{$fui-opacity-disabled});
|
|
49
50
|
transition: opacity var(--fui-transition-normal, $fui-transition-normal);
|
|
50
51
|
}
|
|
51
52
|
|
|
52
53
|
// Mask layer — covers the interior, leaving only the 1px border visible
|
|
53
54
|
&::after {
|
|
54
|
-
inset: var(--fui-stroke-hairline,
|
|
55
|
+
inset: var(--fui-stroke-hairline, #{$fui-stroke-hairline});
|
|
55
56
|
z-index: 1;
|
|
56
57
|
background: var(--fui-bg-elevated, $fui-bg-elevated);
|
|
57
58
|
}
|
|
@@ -67,12 +68,13 @@
|
|
|
67
68
|
}
|
|
68
69
|
|
|
69
70
|
&[data-disabled] {
|
|
70
|
-
|
|
71
|
+
@include disabled-state;
|
|
72
|
+
|
|
71
73
|
pointer-events: none;
|
|
72
74
|
|
|
73
75
|
&::before {
|
|
74
76
|
animation-play-state: paused;
|
|
75
|
-
opacity:
|
|
77
|
+
opacity: calc(var(--fui-opacity-disabled, #{$fui-opacity-disabled}) * var(--fui-opacity-disabled, #{$fui-opacity-disabled}));
|
|
76
78
|
}
|
|
77
79
|
}
|
|
78
80
|
}
|
|
@@ -92,7 +94,7 @@
|
|
|
92
94
|
inherits: false;
|
|
93
95
|
}
|
|
94
96
|
|
|
95
|
-
// Fixed
|
|
97
|
+
// Fixed placement - for viewport-fixed prompts (centered to page)
|
|
96
98
|
.fixed {
|
|
97
99
|
position: fixed;
|
|
98
100
|
bottom: var(--fui-space-4, $fui-space-4);
|
|
@@ -104,7 +106,7 @@
|
|
|
104
106
|
box-shadow: var(--fui-shadow-lg, $fui-shadow-lg);
|
|
105
107
|
}
|
|
106
108
|
|
|
107
|
-
// Sticky
|
|
109
|
+
// Sticky placement - for content-area fixed prompts (accounts for sidebar)
|
|
108
110
|
// Use --fui-prompt-inset-left CSS variable to offset from sidebar
|
|
109
111
|
.sticky {
|
|
110
112
|
position: fixed;
|
|
@@ -124,7 +126,7 @@
|
|
|
124
126
|
}
|
|
125
127
|
|
|
126
128
|
// ============================================
|
|
127
|
-
//
|
|
129
|
+
// Ghost variant
|
|
128
130
|
// ============================================
|
|
129
131
|
|
|
130
132
|
// One continuous writing surface instead of a field with a footer.
|
|
@@ -135,12 +137,13 @@
|
|
|
135
137
|
// resting on it — which is what makes the text you are writing the only thing
|
|
136
138
|
// with any weight. Each selector below is one class deeper than the rule it
|
|
137
139
|
// replaces, so this wins wherever the stylesheet happens to land.
|
|
140
|
+
// (`variant="ghost"`; the default `outline` card is the rules above.)
|
|
138
141
|
//
|
|
139
142
|
// One gutter runs down the card. `--_gutter` is the distance from the card's
|
|
140
143
|
// edge to the ink of everything in it, and every child is padded from it
|
|
141
144
|
// rather than given a number of its own, so the placeholder, the first glyph
|
|
142
145
|
// in the toolbar and any attachment chip all sit on the same line.
|
|
143
|
-
.
|
|
146
|
+
.ghost {
|
|
144
147
|
--_gutter: var(--fui-space-3, #{$fui-space-3});
|
|
145
148
|
// Every band is inset by its own children's padding, so what lands on the
|
|
146
149
|
// gutter is the ink — the first character of the placeholder, the first glyph
|
|
@@ -154,7 +157,7 @@
|
|
|
154
157
|
border-radius: var(--fui-radius-xl, $fui-radius-xl);
|
|
155
158
|
|
|
156
159
|
// The beam draws a 1px animated border by painting a gradient and masking
|
|
157
|
-
// out everything but the edge.
|
|
160
|
+
// out everything but the edge. Ghost has no edge to draw, so both layers
|
|
158
161
|
// go and the card paints its own surface instead of borrowing the mask's.
|
|
159
162
|
&::before,
|
|
160
163
|
&::after {
|
|
@@ -170,7 +173,7 @@
|
|
|
170
173
|
.toolbar {
|
|
171
174
|
background-color: transparent;
|
|
172
175
|
border-top: none;
|
|
173
|
-
padding: 0 calc(var(--_gutter) - var(--_control-padding)) var(--_gutter);
|
|
176
|
+
padding: var(--fui-raw-space-0, #{measurements.raw-space(0)}) calc(var(--_gutter, var(--fui-space-3, #{$fui-space-3})) - var(--_control-padding, var(--fui-space-2, #{$fui-space-2}))) var(--_gutter, var(--fui-space-3, #{$fui-space-3}));
|
|
174
177
|
}
|
|
175
178
|
|
|
176
179
|
// The message is the content of the card, not a field in it. The bottom is
|
|
@@ -178,11 +181,11 @@
|
|
|
178
181
|
// footer under it, and the top is tight for the same reason when a scope
|
|
179
182
|
// band sits above.
|
|
180
183
|
.textarea {
|
|
181
|
-
padding: var(--_gutter) var(--_gutter) var(--fui-space-1, $fui-space-1);
|
|
184
|
+
padding: var(--_gutter, var(--fui-space-3, #{$fui-space-3})) var(--_gutter, var(--fui-space-3, #{$fui-space-3})) var(--fui-space-1, $fui-space-1);
|
|
182
185
|
}
|
|
183
186
|
|
|
184
187
|
.attachments {
|
|
185
|
-
padding: var(--_gutter) calc(var(--_gutter) - var(--_chip-padding)) 0;
|
|
188
|
+
padding: var(--_gutter, var(--fui-space-3, #{$fui-space-3})) calc(var(--_gutter, var(--fui-space-3, #{$fui-space-3})) - var(--_chip-padding, var(--fui-space-1, #{$fui-space-1}))) var(--fui-raw-space-0, #{measurements.raw-space(0)});
|
|
186
189
|
gap: var(--fui-space-1, $fui-space-1);
|
|
187
190
|
}
|
|
188
191
|
|
|
@@ -193,22 +196,22 @@
|
|
|
193
196
|
padding-top: var(--fui-space-1, $fui-space-1);
|
|
194
197
|
}
|
|
195
198
|
|
|
196
|
-
// In
|
|
197
|
-
// and bordered like a folder tab.
|
|
199
|
+
// In an outline card the tabs are a strip the card is docked to, so they are centred
|
|
200
|
+
// and bordered like a folder tab. Ghost has no card edge for them to dock
|
|
198
201
|
// against, so they become the top band of the one surface: left-aligned on
|
|
199
202
|
// the gutter with the rest of it, and stripped of the chrome that only made
|
|
200
203
|
// sense as an edge.
|
|
201
204
|
.tabs {
|
|
202
|
-
margin-bottom: 0;
|
|
205
|
+
margin-bottom: var(--fui-raw-space-0, #{measurements.raw-space(0)});
|
|
203
206
|
justify-content: flex-start;
|
|
204
|
-
padding: var(--_gutter) calc(var(--_gutter) - var(--_control-padding)) 0;
|
|
207
|
+
padding: var(--_gutter, var(--fui-space-3, #{$fui-space-3})) calc(var(--_gutter, var(--fui-space-3, #{$fui-space-3})) - var(--_control-padding, var(--fui-space-2, #{$fui-space-2}))) var(--fui-raw-space-0, #{measurements.raw-space(0)});
|
|
205
208
|
}
|
|
206
209
|
|
|
207
210
|
.tabsInner {
|
|
208
211
|
background-color: transparent;
|
|
209
212
|
border: none;
|
|
210
|
-
border-radius:
|
|
211
|
-
padding: 0;
|
|
213
|
+
border-radius: var(--fui-radius-none, #{$fui-radius-none});
|
|
214
|
+
padding: var(--fui-raw-space-0, #{measurements.raw-space(0)});
|
|
212
215
|
gap: var(--fui-space-1, $fui-space-1);
|
|
213
216
|
}
|
|
214
217
|
|
|
@@ -224,7 +227,7 @@
|
|
|
224
227
|
// the placeholder above it starts, and costs only a wider hover.
|
|
225
228
|
.attach {
|
|
226
229
|
width: auto;
|
|
227
|
-
padding-inline: var(--_control-padding);
|
|
230
|
+
padding-inline: var(--_control-padding, var(--fui-space-2, #{$fui-space-2}));
|
|
228
231
|
|
|
229
232
|
svg {
|
|
230
233
|
width: var(--fui-icon-md, $fui-icon-md);
|
|
@@ -232,7 +235,7 @@
|
|
|
232
235
|
}
|
|
233
236
|
}
|
|
234
237
|
|
|
235
|
-
// Labels and glyphs share the body scale inside a
|
|
238
|
+
// Labels and glyphs share the body scale inside a ghost composer. The
|
|
236
239
|
// trigger still truncates at its cap, but no longer looks like caption text
|
|
237
240
|
// floating between larger attach and submit affordances.
|
|
238
241
|
.select,
|
|
@@ -289,7 +292,7 @@
|
|
|
289
292
|
// padding. Give the filled Submit shape the same inset at the trailing edge
|
|
290
293
|
// so the two visible affordances balance across the toolbar.
|
|
291
294
|
.submit {
|
|
292
|
-
margin-inline-end: var(--_control-padding);
|
|
295
|
+
margin-inline-end: var(--_control-padding, var(--fui-space-2, #{$fui-space-2}));
|
|
293
296
|
}
|
|
294
297
|
}
|
|
295
298
|
|
|
@@ -344,9 +347,10 @@
|
|
|
344
347
|
display: inline-flex;
|
|
345
348
|
gap: var(--fui-space-px, $fui-space-px);
|
|
346
349
|
background-color: var(--fui-bg-elevated, $fui-bg-elevated);
|
|
347
|
-
border-radius: var(--fui-radius-lg, $fui-radius-lg) var(--fui-radius-lg, $fui-radius-lg) 0 0
|
|
348
|
-
|
|
349
|
-
|
|
350
|
+
border-radius: var(--fui-radius-lg, $fui-radius-lg) var(--fui-radius-lg, $fui-radius-lg) var(--fui-raw-space-0, #{measurements.raw-space(0)})
|
|
351
|
+
var(--fui-raw-space-0, #{measurements.raw-space(0)});
|
|
352
|
+
padding: var(--fui-space-0-75, $fui-space-0-75) var(--fui-space-0-75, $fui-space-0-75) var(--fui-raw-space-0, #{measurements.raw-space(0)});
|
|
353
|
+
border: var(--fui-stroke-hairline, #{$fui-stroke-hairline}) solid var(--fui-border, $fui-border);
|
|
350
354
|
border-bottom: none;
|
|
351
355
|
}
|
|
352
356
|
|
|
@@ -355,7 +359,8 @@
|
|
|
355
359
|
@include action.base;
|
|
356
360
|
@include action.size("sm");
|
|
357
361
|
|
|
358
|
-
border-radius: var(--fui-radius-md, $fui-radius-md) var(--fui-radius-md, $fui-radius-md) 0 0
|
|
362
|
+
border-radius: var(--fui-radius-md, $fui-radius-md) var(--fui-radius-md, $fui-radius-md) var(--fui-raw-space-0, #{measurements.raw-space(0)})
|
|
363
|
+
var(--fui-raw-space-0, #{measurements.raw-space(0)});
|
|
359
364
|
color: var(--fui-text-tertiary, $fui-text-tertiary);
|
|
360
365
|
transition:
|
|
361
366
|
color var(--fui-transition-fast, $fui-transition-fast),
|
|
@@ -372,8 +377,7 @@
|
|
|
372
377
|
}
|
|
373
378
|
|
|
374
379
|
.tabButtonActive {
|
|
375
|
-
|
|
376
|
-
color: var(--fui-text-primary, $fui-text-primary);
|
|
380
|
+
@include segmented-selection;
|
|
377
381
|
}
|
|
378
382
|
|
|
379
383
|
// ============================================
|
|
@@ -387,7 +391,7 @@
|
|
|
387
391
|
gap: var(--fui-space-2, $fui-space-2);
|
|
388
392
|
padding: var(--fui-space-1, $fui-space-1) var(--fui-space-2, $fui-space-2);
|
|
389
393
|
background-color: var(--fui-bg-secondary, $fui-bg-secondary);
|
|
390
|
-
border-top: var(--fui-stroke-hairline,
|
|
394
|
+
border-top: var(--fui-stroke-hairline, #{$fui-stroke-hairline}) solid var(--fui-border, $fui-border);
|
|
391
395
|
}
|
|
392
396
|
|
|
393
397
|
// ============================================
|
|
@@ -461,8 +465,7 @@
|
|
|
461
465
|
}
|
|
462
466
|
|
|
463
467
|
.modeButtonActive {
|
|
464
|
-
|
|
465
|
-
background-color: var(--fui-control-selected-bg, $fui-bg-active);
|
|
468
|
+
@include segmented-selection;
|
|
466
469
|
}
|
|
467
470
|
|
|
468
471
|
// ============================================
|
|
@@ -494,11 +497,6 @@
|
|
|
494
497
|
background-color: var(--fui-bg-active, $fui-bg-active);
|
|
495
498
|
}
|
|
496
499
|
|
|
497
|
-
&:disabled {
|
|
498
|
-
opacity: 0.5;
|
|
499
|
-
cursor: not-allowed;
|
|
500
|
-
}
|
|
501
|
-
|
|
502
500
|
svg {
|
|
503
501
|
@include action.glyph("sm");
|
|
504
502
|
}
|
|
@@ -512,8 +510,8 @@
|
|
|
512
510
|
display: flex;
|
|
513
511
|
flex-wrap: wrap;
|
|
514
512
|
gap: var(--fui-space-1, $fui-space-1);
|
|
515
|
-
margin: 0;
|
|
516
|
-
padding: var(--fui-space-2, $fui-space-2) var(--fui-space-3, $fui-space-3) 0;
|
|
513
|
+
margin: var(--fui-raw-space-0, #{measurements.raw-space(0)});
|
|
514
|
+
padding: var(--fui-space-2, $fui-space-2) var(--fui-space-3, $fui-space-3) var(--fui-raw-space-0, #{measurements.raw-space(0)});
|
|
517
515
|
list-style: none;
|
|
518
516
|
}
|
|
519
517
|
|
|
@@ -528,14 +526,14 @@
|
|
|
528
526
|
display: inline-flex;
|
|
529
527
|
align-items: center;
|
|
530
528
|
gap: var(--fui-space-1, $fui-space-1);
|
|
531
|
-
height: var(--_chip-height);
|
|
529
|
+
height: var(--_chip-height, #{action.track("sm")});
|
|
532
530
|
max-width: layout.measure("composer-item");
|
|
533
531
|
padding-inline: var(--fui-space-1, $fui-space-1);
|
|
534
532
|
// Outlined rather than filled. A chip sits on whatever surface the prompt is
|
|
535
533
|
// using, and on an elevated card the raised fill is the same value as the
|
|
536
534
|
// card itself — so the object would disappear exactly where it is most
|
|
537
535
|
// likely to be used. An edge reads on any of them.
|
|
538
|
-
border: var(--fui-stroke-hairline,
|
|
536
|
+
border: var(--fui-stroke-hairline, #{$fui-stroke-hairline}) solid var(--fui-border, $fui-border);
|
|
539
537
|
border-radius: var(--fui-radius-md, $fui-radius-md);
|
|
540
538
|
background-color: var(--fui-bg-tertiary, $fui-bg-tertiary);
|
|
541
539
|
font-size: var(--fui-font-size-xs, $fui-font-size-xs);
|
|
@@ -547,8 +545,8 @@
|
|
|
547
545
|
// chip's height less the padding, which keeps it square without a second
|
|
548
546
|
// number to keep in step.
|
|
549
547
|
.attachmentThumb {
|
|
550
|
-
width: calc(var(--_chip-height) - var(--fui-space-1, #{$fui-space-1}));
|
|
551
|
-
height: calc(var(--_chip-height) - var(--fui-space-1, #{$fui-space-1}));
|
|
548
|
+
width: calc(var(--_chip-height, #{action.track("sm")}) - var(--fui-space-1, #{$fui-space-1}));
|
|
549
|
+
height: calc(var(--_chip-height, #{action.track("sm")}) - var(--fui-space-1, #{$fui-space-1}));
|
|
552
550
|
flex-shrink: 0;
|
|
553
551
|
border-radius: var(--fui-radius-sm, $fui-radius-sm);
|
|
554
552
|
object-fit: cover;
|
|
@@ -645,11 +643,6 @@
|
|
|
645
643
|
background-color: var(--fui-text-tertiary, #{$fui-text-tertiary});
|
|
646
644
|
}
|
|
647
645
|
|
|
648
|
-
&:disabled {
|
|
649
|
-
opacity: 0.5;
|
|
650
|
-
cursor: not-allowed;
|
|
651
|
-
}
|
|
652
|
-
|
|
653
646
|
svg {
|
|
654
647
|
@include action.glyph("md");
|
|
655
648
|
}
|
|
@@ -9,9 +9,9 @@ import { Select, type SelectOption, type SelectValue } from '../Select';
|
|
|
9
9
|
// Types
|
|
10
10
|
// ============================================
|
|
11
11
|
|
|
12
|
-
export type
|
|
12
|
+
export type PromptPlacement = 'inline' | 'fixed' | 'sticky';
|
|
13
13
|
|
|
14
|
-
export type
|
|
14
|
+
export type PromptVariant = 'outline' | 'ghost';
|
|
15
15
|
|
|
16
16
|
export interface PromptProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange' | 'onSubmit' | 'defaultValue'> {
|
|
17
17
|
children: React.ReactNode;
|
|
@@ -43,13 +43,15 @@ export interface PromptProps extends Omit<React.HTMLAttributes<HTMLDivElement>,
|
|
|
43
43
|
onFiles?: (files: File[]) => void;
|
|
44
44
|
/** `accept` for the attach button's picker, e.g. `"image/*"`. */
|
|
45
45
|
accept?: string;
|
|
46
|
-
/**
|
|
46
|
+
/** Where the card sits: `inline` in the flow, `fixed` to the viewport bottom,
|
|
47
|
+
* `sticky` to the content area (offset by `--fui-prompt-inset-left`).
|
|
48
|
+
* @default "inline" */
|
|
49
|
+
placement?: PromptPlacement;
|
|
50
|
+
/** Card chrome. `outline` keeps the toolbar as a filled footer under a rule;
|
|
51
|
+
* `ghost` makes the whole card one writing surface with the controls floating
|
|
52
|
+
* on it — the shape most agent composers use.
|
|
53
|
+
* @default "outline" */
|
|
47
54
|
variant?: PromptVariant;
|
|
48
|
-
/** How the card is divided up. `panel` keeps the toolbar as a filled footer
|
|
49
|
-
* under a rule; `seamless` makes the whole card one writing surface with the
|
|
50
|
-
* controls floating on it — the shape most agent composers use.
|
|
51
|
-
* @default "panel" */
|
|
52
|
-
appearance?: PromptAppearance;
|
|
53
55
|
}
|
|
54
56
|
|
|
55
57
|
export interface PromptTextareaProps extends Omit<
|
|
@@ -307,8 +309,8 @@ function PromptRoot({
|
|
|
307
309
|
maxRows = 8,
|
|
308
310
|
autoResize = true,
|
|
309
311
|
submitOnEnter = true,
|
|
310
|
-
|
|
311
|
-
|
|
312
|
+
placement = 'inline',
|
|
313
|
+
variant = 'outline',
|
|
312
314
|
onFiles,
|
|
313
315
|
accept,
|
|
314
316
|
className,
|
|
@@ -386,9 +388,9 @@ function PromptRoot({
|
|
|
386
388
|
|
|
387
389
|
const classes = [
|
|
388
390
|
styles.prompt,
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
391
|
+
placement === 'fixed' && styles.fixed,
|
|
392
|
+
placement === 'sticky' && styles.sticky,
|
|
393
|
+
variant === 'ghost' && styles.ghost,
|
|
392
394
|
dragging && styles.dragging,
|
|
393
395
|
disabled && styles.disabled,
|
|
394
396
|
loading && styles.loading,
|
|
@@ -403,8 +405,8 @@ function PromptRoot({
|
|
|
403
405
|
className={classes}
|
|
404
406
|
data-disabled={disabled || undefined}
|
|
405
407
|
data-loading={loading || undefined}
|
|
408
|
+
data-placement={placement}
|
|
406
409
|
data-variant={variant}
|
|
407
|
-
data-appearance={appearance}
|
|
408
410
|
data-dragging={dragging || undefined}
|
|
409
411
|
>
|
|
410
412
|
{children}
|
|
@@ -780,7 +782,7 @@ function PromptSubmit({
|
|
|
780
782
|
{loading ? (
|
|
781
783
|
<Loading
|
|
782
784
|
size="sm"
|
|
783
|
-
|
|
785
|
+
kind="spinner"
|
|
784
786
|
color="current"
|
|
785
787
|
label="Submitting"
|
|
786
788
|
className={styles.submitSpinner}
|
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
"helperText: string",
|
|
20
20
|
"error: union",
|
|
21
21
|
"size: sm|md|lg (default: md)",
|
|
22
|
+
"variant: outline",
|
|
22
23
|
"wrapperClassName: string",
|
|
23
24
|
"groupClassName: string",
|
|
24
25
|
"groupId: string",
|
|
@@ -87,10 +88,9 @@
|
|
|
87
88
|
},
|
|
88
89
|
"variant": {
|
|
89
90
|
"type": "enum",
|
|
90
|
-
"description": "
|
|
91
|
-
"default": "default",
|
|
91
|
+
"description": "Chrome. Omit for the inline radio beside its label; 'outline' renders each item as a full-width bordered surface with the radio tucked inside.",
|
|
92
92
|
"required": false,
|
|
93
|
-
"values": ["
|
|
93
|
+
"values": ["outline"]
|
|
94
94
|
},
|
|
95
95
|
"wrapperClassName": {
|
|
96
96
|
"type": "string",
|
|
@@ -198,13 +198,15 @@
|
|
|
198
198
|
"onChange: (value: string) => void - alias for onValueChange",
|
|
199
199
|
"orientation: horizontal|vertical (default: vertical)",
|
|
200
200
|
"size: sm|md|lg (default: md)",
|
|
201
|
+
"variant: outline - each item a full-width bordered surface; omit for the inline control",
|
|
201
202
|
"label: string - group label",
|
|
202
203
|
"helperText: string - helper text below the group",
|
|
203
204
|
"error: boolean | string - error styling and message",
|
|
204
205
|
"disabled: boolean - disable all options",
|
|
205
206
|
"wrapperClassName/groupClassName - explicit styling targets for wrapper and group",
|
|
206
207
|
"groupId: string - ID forwarded to the inner radiogroup while id remains on the wrapper",
|
|
207
|
-
"RadioGroup.Item supports helperText (preferred) and description (legacy alias) plus controlClassName/contentClassName for item-level styling"
|
|
208
|
+
"RadioGroup.Item supports helperText (preferred) and description (legacy alias) plus controlClassName/contentClassName for item-level styling",
|
|
209
|
+
"RadioGroup.Item trailing: ReactNode - a short value (price, count) at the end of the row on the label's line; pairs with variant=outline for plan pickers"
|
|
208
210
|
],
|
|
209
211
|
"a11yRules": ["A11Y_RADIO_GROUP", "A11Y_LABEL_REQUIRED", "A11Y_TARGET_SIZE_MIN"]
|
|
210
212
|
},
|
|
@@ -45,9 +45,22 @@
|
|
|
45
45
|
}
|
|
46
46
|
|
|
47
47
|
&[data-disabled] {
|
|
48
|
-
|
|
49
|
-
opacity: 0.5;
|
|
48
|
+
@include disabled-state;
|
|
50
49
|
}
|
|
50
|
+
|
|
51
|
+
// A trailing value takes a third column so the label and helper keep
|
|
52
|
+
// theirs; it sits on the label's line at the end of the row.
|
|
53
|
+
&[data-has-trailing] {
|
|
54
|
+
grid-template-columns:
|
|
55
|
+
var(--_fui-boolean-mark-size, #{boolean.mark-size("md")}) minmax(0, 1fr)
|
|
56
|
+
auto;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.trailing {
|
|
61
|
+
justify-self: end;
|
|
62
|
+
text-align: end;
|
|
63
|
+
white-space: nowrap;
|
|
51
64
|
}
|
|
52
65
|
|
|
53
66
|
// The radio circle
|
|
@@ -62,20 +75,25 @@
|
|
|
62
75
|
flex-shrink: 0;
|
|
63
76
|
box-sizing: border-box;
|
|
64
77
|
margin-block-start: var(--_fui-boolean-mark-offset, 0);
|
|
65
|
-
background-color: var(--fui-
|
|
66
|
-
border: var(--fui-stroke-hairline, 1px) solid var(--fui-
|
|
78
|
+
background-color: var(--fui-bg-primary, $fui-bg-primary);
|
|
79
|
+
border: var(--fui-stroke-hairline, 1px) solid var(--fui-border-strong, $fui-border-strong);
|
|
67
80
|
border-radius: var(--fui-radius-full, $fui-radius-full);
|
|
68
81
|
cursor: inherit;
|
|
82
|
+
@include high-contrast-outline;
|
|
69
83
|
|
|
70
84
|
&:hover:not([data-disabled]) {
|
|
71
|
-
border-color: var(--fui-
|
|
85
|
+
border-color: var(--fui-text-tertiary, $fui-text-tertiary);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
&:focus-visible {
|
|
89
|
+
@include field.focus-state;
|
|
72
90
|
}
|
|
73
91
|
|
|
74
92
|
&[data-checked] {
|
|
75
93
|
background-color: color-mix(
|
|
76
94
|
in srgb,
|
|
77
95
|
var(--fui-control-checked-bg, #{$fui-color-accent}) 8%,
|
|
78
|
-
var(--fui-
|
|
96
|
+
var(--fui-bg-primary, #{$fui-bg-primary})
|
|
79
97
|
);
|
|
80
98
|
border-color: var(--fui-control-checked-border, $fui-color-accent);
|
|
81
99
|
box-shadow: inset 0 0 0 var(--fui-stroke-hairline, 1px)
|
|
@@ -86,13 +104,17 @@
|
|
|
86
104
|
background-color: color-mix(
|
|
87
105
|
in srgb,
|
|
88
106
|
var(--fui-control-checked-bg-hover, #{$fui-color-accent-hover}) 12%,
|
|
89
|
-
var(--fui-
|
|
107
|
+
var(--fui-bg-primary, #{$fui-bg-primary})
|
|
90
108
|
);
|
|
91
109
|
border-color: var(--fui-control-checked-border-hover, $fui-color-accent-hover);
|
|
92
110
|
}
|
|
93
111
|
|
|
94
112
|
&[data-invalid] {
|
|
95
|
-
|
|
113
|
+
@include field.invalid-state;
|
|
114
|
+
|
|
115
|
+
&:focus-visible {
|
|
116
|
+
@include field.invalid-focus-state;
|
|
117
|
+
}
|
|
96
118
|
}
|
|
97
119
|
}
|
|
98
120
|
|
|
@@ -160,16 +182,16 @@
|
|
|
160
182
|
}
|
|
161
183
|
|
|
162
184
|
// ============================================
|
|
163
|
-
//
|
|
185
|
+
// Outline variant: each item is a full-width bordered surface that signals
|
|
164
186
|
// selection via background + border tint while keeping the inline radio
|
|
165
187
|
// circle as the canonical control. The `:has([data-checked])` selector is
|
|
166
188
|
// the source of truth for selected styling — no extra attribute plumbing
|
|
167
189
|
// required from JS.
|
|
168
190
|
// ============================================
|
|
169
|
-
//
|
|
170
|
-
// as a deliberate state change rather than a small shift between two
|
|
171
|
-
// surfaces. Mirrors the pattern used by the Checkbox
|
|
172
|
-
.
|
|
191
|
+
// The outline variant uses a transparent base so the selected accent tint
|
|
192
|
+
// reads as a deliberate state change rather than a small shift between two
|
|
193
|
+
// grey surfaces. Mirrors the pattern used by the Checkbox outline variant.
|
|
194
|
+
.itemWrapperOutline {
|
|
173
195
|
width: 100%;
|
|
174
196
|
border-radius: var(--fui-radius-md, $fui-radius-md);
|
|
175
197
|
border: var(--fui-stroke-hairline, 1px) solid var(--fui-border-default, $fui-border-default);
|
|
@@ -218,26 +240,10 @@
|
|
|
218
240
|
}
|
|
219
241
|
|
|
220
242
|
.group[data-invalid] .radio {
|
|
221
|
-
|
|
222
|
-
}
|
|
223
|
-
|
|
224
|
-
// ============================================
|
|
225
|
-
// Accessibility: High Contrast Mode
|
|
226
|
-
// ============================================
|
|
243
|
+
@include field.invalid-state;
|
|
227
244
|
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
border-color: var(--fui-text-primary, $fui-text-primary);
|
|
231
|
-
outline: var(--fui-stroke-hairline, 1px) solid var(--fui-text-primary, $fui-text-primary);
|
|
232
|
-
outline-offset: calc(-1 * var(--fui-stroke-default, 2px));
|
|
233
|
-
|
|
234
|
-
&[data-checked] {
|
|
235
|
-
border-color: var(--fui-control-checked-border, $fui-color-accent);
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
&[data-invalid] {
|
|
239
|
-
border-color: var(--fui-color-danger-text, $fui-color-danger-text);
|
|
240
|
-
}
|
|
245
|
+
&:focus-visible {
|
|
246
|
+
@include field.invalid-focus-state;
|
|
241
247
|
}
|
|
242
248
|
}
|
|
243
249
|
|