@usefragments/ui 1.5.3 → 1.6.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 +1 -1
- package/dist/assets/ui.css +8808 -5810
- package/dist/chart.cjs +7 -20
- package/dist/chart.js +7 -20
- package/dist/colorpicker.cjs +2 -1
- package/dist/colorpicker.js +2 -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 +12 -12
- package/dist/components/Alert/Alert.module.scss.js +12 -12
- 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 +5 -3
- package/dist/components/AppShell/index.d.ts +4 -2
- package/dist/components/AppShell/index.d.ts.map +1 -1
- package/dist/components/AppShell/index.js +5 -3
- package/dist/components/Avatar/Avatar.module.scss.cjs +17 -14
- package/dist/components/Avatar/Avatar.module.scss.js +17 -14
- package/dist/components/Avatar/index.cjs +100 -118
- package/dist/components/Avatar/index.d.ts +7 -5
- package/dist/components/Avatar/index.d.ts.map +1 -1
- package/dist/components/Avatar/index.js +100 -118
- 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/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/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 +18 -18
- package/dist/components/Card/Card.module.scss.js +18 -18
- 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 +7 -7
- package/dist/components/Chart/index.d.ts.map +1 -1
- package/dist/components/Checkbox/Checkbox.module.scss.cjs +9 -15
- package/dist/components/Checkbox/Checkbox.module.scss.js +9 -15
- package/dist/components/Checkbox/index.cjs +4 -6
- package/dist/components/Checkbox/index.d.ts.map +1 -1
- package/dist/components/Checkbox/index.js +4 -6
- 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 +4 -5
- package/dist/components/Chip/index.d.ts +1 -1
- package/dist/components/Chip/index.d.ts.map +1 -1
- package/dist/components/Chip/index.js +2 -3
- package/dist/components/CodeBlock/CodeBlock.module.scss.cjs +22 -22
- package/dist/components/CodeBlock/CodeBlock.module.scss.js +22 -22
- package/dist/components/Collapsible/Collapsible.module.scss.cjs +9 -12
- package/dist/components/Collapsible/Collapsible.module.scss.js +9 -12
- package/dist/components/Collapsible/index.cjs +3 -2
- package/dist/components/Collapsible/index.d.ts +3 -3
- package/dist/components/Collapsible/index.d.ts.map +1 -1
- package/dist/components/Collapsible/index.js +3 -2
- package/dist/components/ColorPicker/ColorPicker.module.scss.cjs +16 -16
- package/dist/components/ColorPicker/ColorPicker.module.scss.js +16 -16
- package/dist/components/ColorPicker/index.d.ts.map +1 -1
- package/dist/components/Combobox/Combobox.module.scss.cjs +21 -27
- package/dist/components/Combobox/Combobox.module.scss.js +21 -27
- package/dist/components/Combobox/index.cjs +4 -4
- package/dist/components/Combobox/index.d.ts.map +1 -1
- package/dist/components/Combobox/index.js +4 -4
- package/dist/components/Command/Command.module.scss.cjs +11 -11
- package/dist/components/Command/Command.module.scss.js +11 -11
- package/dist/components/ConversationList/ConversationList.module.scss.cjs +11 -14
- package/dist/components/ConversationList/ConversationList.module.scss.js +11 -14
- package/dist/components/ConversationList/index.cjs +40 -44
- package/dist/components/ConversationList/index.d.ts +3 -3
- package/dist/components/ConversationList/index.d.ts.map +1 -1
- package/dist/components/ConversationList/index.js +40 -44
- package/dist/components/DataTable/DataTable.module.scss.cjs +32 -56
- package/dist/components/DataTable/DataTable.module.scss.js +32 -56
- package/dist/components/DataTable/index.d.ts +5 -4
- 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/Drawer/Drawer.module.scss.cjs +31 -28
- package/dist/components/Drawer/Drawer.module.scss.js +31 -28
- package/dist/components/Drawer/index.cjs +1 -1
- package/dist/components/Drawer/index.js +1 -1
- package/dist/components/Editor/Editor.module.scss.cjs +23 -23
- package/dist/components/Editor/Editor.module.scss.js +23 -23
- package/dist/components/EmptyState/EmptyState.module.scss.cjs +12 -12
- package/dist/components/EmptyState/EmptyState.module.scss.js +12 -12
- package/dist/components/Field/Field.module.scss.cjs +8 -5
- package/dist/components/Field/Field.module.scss.js +8 -5
- package/dist/components/Field/index.cjs +10 -1
- package/dist/components/Field/index.d.ts +9 -2
- package/dist/components/Field/index.d.ts.map +1 -1
- package/dist/components/Field/index.js +10 -1
- package/dist/components/Fieldset/Fieldset.module.scss.cjs +3 -3
- package/dist/components/Fieldset/Fieldset.module.scss.js +3 -3
- package/dist/components/Form/Form.module.scss.cjs +5 -2
- package/dist/components/Form/Form.module.scss.js +5 -2
- package/dist/components/Form/index.cjs +6 -1
- package/dist/components/Form/index.d.ts +8 -3
- package/dist/components/Form/index.d.ts.map +1 -1
- package/dist/components/Form/index.js +6 -1
- package/dist/components/Grid/Grid.module.scss.cjs +54 -72
- package/dist/components/Grid/Grid.module.scss.js +54 -72
- package/dist/components/Grid/index.cjs +57 -77
- package/dist/components/Grid/index.d.ts +11 -11
- package/dist/components/Grid/index.d.ts.map +1 -1
- package/dist/components/Grid/index.js +57 -77
- 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 +2 -1
- package/dist/components/Header/index.d.ts.map +1 -1
- package/dist/components/Header/index.js +2 -1
- package/dist/components/Icon/Icon.module.scss.cjs +29 -8
- package/dist/components/Icon/Icon.module.scss.js +30 -9
- package/dist/components/Icon/index.cjs +30 -48
- package/dist/components/Icon/index.d.ts +6 -6
- package/dist/components/Icon/index.d.ts.map +1 -1
- package/dist/components/Icon/index.js +30 -48
- package/dist/components/IconButton/IconButton.module.scss.cjs +8 -8
- package/dist/components/IconButton/IconButton.module.scss.js +8 -8
- package/dist/components/Input/Input.module.scss.cjs +19 -25
- package/dist/components/Input/Input.module.scss.js +19 -25
- package/dist/components/Input/index.cjs +1 -2
- package/dist/components/Input/index.d.ts.map +1 -1
- package/dist/components/Input/index.js +1 -2
- package/dist/components/Link/Link.module.scss.cjs +10 -10
- package/dist/components/Link/Link.module.scss.js +10 -10
- package/dist/components/List/List.module.scss.cjs +19 -19
- package/dist/components/List/List.module.scss.js +19 -19
- package/dist/components/List/index.cjs +4 -7
- package/dist/components/List/index.d.ts.map +1 -1
- package/dist/components/List/index.js +4 -7
- package/dist/components/Listbox/Listbox.module.scss.cjs +9 -9
- package/dist/components/Listbox/Listbox.module.scss.js +9 -9
- 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 +39 -67
- package/dist/components/Loading/index.d.ts +6 -6
- package/dist/components/Loading/index.d.ts.map +1 -1
- package/dist/components/Loading/index.js +39 -67
- package/dist/components/Main/Main.module.scss.cjs +7 -7
- package/dist/components/Main/Main.module.scss.js +7 -7
- 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 +16 -16
- package/dist/components/Menu/Menu.module.scss.js +16 -16
- package/dist/components/Menu/index.cjs +19 -61
- package/dist/components/Menu/index.d.ts +10 -10
- package/dist/components/Menu/index.d.ts.map +1 -1
- package/dist/components/Menu/index.js +19 -61
- package/dist/components/Message/Message.module.scss.cjs +18 -21
- package/dist/components/Message/Message.module.scss.js +18 -21
- package/dist/components/Message/index.cjs +15 -2
- package/dist/components/Message/index.d.ts.map +1 -1
- package/dist/components/Message/index.js +15 -2
- package/dist/components/NavigationMenu/NavigationMenu.module.scss.cjs +28 -28
- package/dist/components/NavigationMenu/NavigationMenu.module.scss.js +28 -28
- package/dist/components/Pagination/Pagination.module.scss.cjs +18 -9
- package/dist/components/Pagination/Pagination.module.scss.js +19 -10
- package/dist/components/Pagination/index.cjs +5 -2
- package/dist/components/Pagination/index.d.ts +3 -1
- package/dist/components/Pagination/index.d.ts.map +1 -1
- package/dist/components/Pagination/index.js +5 -2
- 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 +29 -32
- package/dist/components/Progress/Progress.module.scss.js +29 -32
- package/dist/components/Progress/geometry.cjs +30 -0
- package/dist/components/Progress/geometry.d.ts +8 -0
- package/dist/components/Progress/geometry.d.ts.map +1 -0
- package/dist/components/Progress/geometry.js +30 -0
- package/dist/components/Progress/index.cjs +40 -29
- package/dist/components/Progress/index.d.ts +4 -3
- package/dist/components/Progress/index.d.ts.map +1 -1
- package/dist/components/Progress/index.js +40 -29
- package/dist/components/Prompt/Prompt.module.scss.cjs +29 -29
- package/dist/components/Prompt/Prompt.module.scss.js +29 -29
- package/dist/components/Prompt/index.cjs +5 -4
- package/dist/components/Prompt/index.d.ts.map +1 -1
- package/dist/components/Prompt/index.js +5 -4
- package/dist/components/RadioGroup/RadioGroup.module.scss.cjs +15 -21
- package/dist/components/RadioGroup/RadioGroup.module.scss.js +15 -21
- package/dist/components/RadioGroup/index.cjs +7 -6
- package/dist/components/RadioGroup/index.d.ts.map +1 -1
- package/dist/components/RadioGroup/index.js +7 -6
- package/dist/components/ScrollArea/ScrollArea.module.scss.cjs +7 -22
- package/dist/components/ScrollArea/ScrollArea.module.scss.js +7 -22
- package/dist/components/ScrollArea/index.cjs +66 -42
- package/dist/components/ScrollArea/index.d.ts +3 -2
- package/dist/components/ScrollArea/index.d.ts.map +1 -1
- package/dist/components/ScrollArea/index.js +66 -42
- package/dist/components/ScrollArea/scroll-state.cjs +58 -0
- package/dist/components/ScrollArea/scroll-state.d.ts +16 -0
- package/dist/components/ScrollArea/scroll-state.d.ts.map +1 -0
- package/dist/components/ScrollArea/scroll-state.js +58 -0
- 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 +3 -2
- package/dist/components/Select/index.d.ts.map +1 -1
- package/dist/components/Select/index.js +3 -2
- package/dist/components/Separator/Separator.module.scss.cjs +13 -10
- package/dist/components/Separator/Separator.module.scss.js +13 -10
- package/dist/components/Separator/index.cjs +37 -38
- package/dist/components/Separator/index.d.ts +4 -4
- package/dist/components/Separator/index.d.ts.map +1 -1
- package/dist/components/Separator/index.js +37 -38
- 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 +5 -3
- package/dist/components/Sidebar/index.d.ts +6 -1
- package/dist/components/Sidebar/index.d.ts.map +1 -1
- package/dist/components/Sidebar/index.js +5 -3
- package/dist/components/Skeleton/Skeleton.module.scss.cjs +50 -38
- package/dist/components/Skeleton/Skeleton.module.scss.js +50 -38
- package/dist/components/Skeleton/index.cjs +41 -55
- package/dist/components/Skeleton/index.d.ts +7 -7
- package/dist/components/Skeleton/index.d.ts.map +1 -1
- package/dist/components/Skeleton/index.js +41 -55
- 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 -45
- package/dist/components/Stack/Stack.module.scss.js +25 -45
- package/dist/components/Stack/index.cjs +106 -101
- package/dist/components/Stack/index.d.ts +7 -7
- package/dist/components/Stack/index.d.ts.map +1 -1
- package/dist/components/Stack/index.js +106 -101
- package/dist/components/Switch/Switch.module.scss.cjs +32 -0
- package/dist/components/Switch/Switch.module.scss.js +32 -0
- package/dist/components/{Toggle → Switch}/index.cjs +9 -14
- package/dist/components/Switch/index.d.ts +37 -1
- package/dist/components/Switch/index.d.ts.map +1 -1
- package/dist/components/{Toggle → Switch}/index.js +5 -10
- package/dist/components/Table/Table.module.scss.cjs +18 -27
- package/dist/components/Table/Table.module.scss.js +18 -27
- package/dist/components/Table/index.d.ts +6 -5
- package/dist/components/Table/index.d.ts.map +1 -1
- package/dist/components/TableOfContents/TableOfContents.module.scss.cjs +15 -15
- package/dist/components/TableOfContents/TableOfContents.module.scss.js +15 -15
- 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 +2 -2
- package/dist/components/Tabs/index.js +2 -2
- package/dist/components/Text/Text.module.scss.cjs +93 -57
- package/dist/components/Text/Text.module.scss.js +93 -57
- package/dist/components/Text/index.cjs +14 -6
- package/dist/components/Text/index.d.ts +25 -15
- package/dist/components/Text/index.d.ts.map +1 -1
- package/dist/components/Text/index.js +14 -6
- package/dist/components/Textarea/Textarea.module.scss.cjs +26 -23
- package/dist/components/Textarea/Textarea.module.scss.js +26 -23
- package/dist/components/Textarea/index.cjs +5 -10
- package/dist/components/Textarea/index.d.ts.map +1 -1
- package/dist/components/Textarea/index.js +5 -10
- package/dist/components/Theme/context.cjs +39 -0
- package/dist/components/Theme/context.d.ts +21 -0
- package/dist/components/Theme/context.d.ts.map +1 -0
- package/dist/components/Theme/context.js +22 -0
- package/dist/components/Theme/index.cjs +14 -209
- package/dist/components/Theme/index.d.ts +4 -37
- package/dist/components/Theme/index.d.ts.map +1 -1
- package/dist/components/Theme/index.js +9 -204
- package/dist/components/{Theme → ThemeToggle}/ThemeToggle.module.scss.cjs +6 -6
- package/dist/components/ThemeToggle/ThemeToggle.module.scss.js +23 -0
- package/dist/components/ThemeToggle/index.cjs +115 -0
- package/dist/components/ThemeToggle/index.d.ts +21 -0
- package/dist/components/ThemeToggle/index.d.ts.map +1 -0
- package/dist/components/ThemeToggle/index.js +115 -0
- package/dist/components/ThinkingIndicator/ThinkingIndicator.module.scss.cjs +13 -13
- package/dist/components/ThinkingIndicator/ThinkingIndicator.module.scss.js +13 -13
- package/dist/components/ThinkingIndicator/index.cjs +34 -41
- package/dist/components/ThinkingIndicator/index.d.ts +4 -4
- package/dist/components/ThinkingIndicator/index.d.ts.map +1 -1
- package/dist/components/ThinkingIndicator/index.js +34 -41
- package/dist/components/Toast/Toast.module.scss.cjs +20 -20
- package/dist/components/Toast/Toast.module.scss.js +20 -20
- package/dist/components/Toggle/index.d.ts +2 -42
- package/dist/components/Toggle/index.d.ts.map +1 -1
- package/dist/components/ToggleGroup/ToggleGroup.module.scss.cjs +20 -20
- package/dist/components/ToggleGroup/ToggleGroup.module.scss.js +20 -20
- package/dist/components/ToggleGroup/index.cjs +3 -2
- package/dist/components/ToggleGroup/index.d.ts +2 -1
- package/dist/components/ToggleGroup/index.d.ts.map +1 -1
- package/dist/components/ToggleGroup/index.js +3 -2
- 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.cjs +12 -9
- package/dist/data-table.js +12 -9
- package/dist/datepicker.cjs +2 -1
- package/dist/datepicker.js +2 -1
- package/dist/index.cjs +100 -98
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/markdown.cjs +1 -1
- package/dist/markdown.js +2 -2
- package/dist/measurements/generated.cjs +296 -0
- package/dist/measurements/generated.d.ts +261 -0
- package/dist/measurements/generated.d.ts.map +1 -0
- package/dist/measurements/generated.js +296 -0
- package/dist/measurements/index.d.ts +2 -0
- package/dist/measurements/index.d.ts.map +1 -0
- package/dist/measurements.cjs +6 -0
- package/dist/measurements.js +6 -0
- package/dist/recipes/popup.cjs +14 -0
- package/dist/recipes/popup.d.ts +4 -0
- package/dist/recipes/popup.d.ts.map +1 -0
- package/dist/recipes/popup.js +14 -0
- package/dist/recipes/table-chrome.cjs +18 -0
- package/dist/recipes/table-chrome.d.ts +10 -0
- package/dist/recipes/table-chrome.d.ts.map +1 -0
- package/dist/recipes/table-chrome.js +18 -0
- package/dist/table.cjs +5 -2
- package/dist/table.js +5 -2
- package/dist/utils/layout-spacing.cjs +27 -0
- package/dist/utils/layout-spacing.d.ts +5 -0
- package/dist/utils/layout-spacing.d.ts.map +1 -0
- package/dist/utils/layout-spacing.js +27 -0
- package/dist/utils/seed-derivation.cjs +4 -42
- package/dist/utils/seed-derivation.d.ts +4 -3
- package/dist/utils/seed-derivation.d.ts.map +1 -1
- package/dist/utils/seed-derivation.js +4 -42
- package/dist/utils/theme-presets.cjs +1 -0
- package/dist/utils/theme-presets.d.ts +3 -2
- package/dist/utils/theme-presets.d.ts.map +1 -1
- package/dist/utils/theme-presets.js +1 -0
- package/fragments.json +1 -1
- package/package.json +23 -4
- package/src/components/Accordion/Accordion.module.scss +31 -52
- package/src/components/Alert/Alert.module.scss +28 -44
- package/src/components/AppShell/AppShell.module.scss +6 -3
- package/src/components/AppShell/index.tsx +8 -4
- package/src/components/Avatar/Avatar.module.scss +22 -60
- package/src/components/Avatar/index.tsx +152 -146
- package/src/components/Badge/Badge.module.scss +51 -46
- package/src/components/BentoGrid/BentoGrid.module.scss +11 -32
- package/src/components/Box/Box.module.scss +253 -81
- package/src/components/Breadcrumbs/Breadcrumbs.module.scss +10 -11
- package/src/components/Button/Button.module.scss +52 -57
- package/src/components/ButtonGroup/ButtonGroup.module.scss +5 -5
- package/src/components/Card/Card.consumer-fixture.module.scss +8 -0
- package/src/components/Card/Card.module.scss +211 -175
- package/src/components/Chart/Chart.module.scss +28 -29
- package/src/components/Chart/index.tsx +40 -53
- package/src/components/Checkbox/Checkbox.module.scss +43 -64
- package/src/components/Checkbox/index.tsx +4 -9
- package/src/components/Chip/Chip.contract.json +4 -3
- package/src/components/Chip/Chip.module.scss +23 -34
- package/src/components/Chip/index.tsx +3 -4
- package/src/components/CodeBlock/CodeBlock.module.scss +102 -215
- package/src/components/Collapsible/Collapsible.module.scss +29 -63
- package/src/components/Collapsible/index.tsx +22 -26
- package/src/components/ColorPicker/ColorPicker.module.scss +42 -24
- package/src/components/ColorPicker/index.tsx +2 -1
- package/src/components/Combobox/Combobox.module.scss +60 -73
- package/src/components/Combobox/index.tsx +7 -5
- package/src/components/Command/Command.module.scss +47 -77
- package/src/components/ConversationList/ConversationList.module.scss +20 -78
- package/src/components/ConversationList/index.tsx +55 -59
- package/src/components/DataTable/DataTable.module.scss +76 -216
- package/src/components/DataTable/index.tsx +20 -25
- package/src/components/DatePicker/DatePicker.module.scss +54 -33
- package/src/components/DatePicker/index.tsx +2 -1
- package/src/components/Dialog/Dialog.module.scss +42 -66
- package/src/components/Drawer/Drawer.module.scss +93 -99
- package/src/components/Drawer/index.tsx +1 -1
- package/src/components/Editor/Editor.module.scss +115 -220
- package/src/components/EmptyState/EmptyState.module.scss +38 -85
- package/src/components/Field/Field.contract.json +2 -1
- package/src/components/Field/Field.module.scss +9 -11
- package/src/components/Field/index.tsx +27 -1
- package/src/components/Fieldset/Fieldset.module.scss +14 -6
- package/src/components/Form/Form.contract.json +10 -23
- package/src/components/Form/Form.module.scss +9 -4
- package/src/components/Form/index.tsx +22 -7
- package/src/components/Grid/Grid.module.scss +159 -63
- package/src/components/Grid/index.tsx +107 -126
- package/src/components/Header/Header.module.scss +25 -32
- package/src/components/Header/index.tsx +2 -1
- package/src/components/Icon/Icon.module.scss +16 -0
- package/src/components/Icon/index.tsx +74 -86
- package/src/components/IconButton/IconButton.module.scss +11 -21
- package/src/components/Input/Input.module.scss +67 -55
- package/src/components/Input/index.tsx +1 -2
- package/src/components/Link/Link.module.scss +8 -9
- package/src/components/List/List.module.scss +16 -21
- package/src/components/List/index.tsx +4 -10
- package/src/components/Listbox/Listbox.module.scss +26 -54
- package/src/components/Loading/Loading.module.scss +23 -33
- package/src/components/Loading/index.tsx +68 -97
- package/src/components/Main/Main.module.scss +3 -5
- package/src/components/Markdown/Markdown.module.scss +36 -184
- package/src/components/Markdown/index.tsx +2 -2
- package/src/components/Menu/Menu.module.scss +48 -133
- package/src/components/Menu/index.tsx +57 -89
- package/src/components/Message/Message.module.scss +52 -142
- package/src/components/Message/index.tsx +16 -6
- package/src/components/NavigationMenu/NavigationMenu.module.scss +59 -52
- package/src/components/Pagination/Pagination.module.scss +32 -25
- package/src/components/Pagination/index.tsx +7 -2
- package/src/components/Popover/Popover.module.scss +37 -73
- package/src/components/Progress/Progress.module.scss +61 -41
- package/src/components/Progress/geometry.ts +41 -0
- package/src/components/Progress/index.tsx +44 -30
- package/src/components/Prompt/Prompt.module.scss +45 -82
- package/src/components/Prompt/index.tsx +6 -5
- package/src/components/RadioGroup/RadioGroup.module.scss +50 -69
- package/src/components/RadioGroup/index.tsx +7 -9
- package/src/components/ScrollArea/ScrollArea.contract.json +8 -24
- package/src/components/ScrollArea/ScrollArea.module.scss +122 -96
- package/src/components/ScrollArea/index.tsx +78 -60
- package/src/components/ScrollArea/scroll-state.ts +87 -0
- package/src/components/Select/Select.module.scss +53 -41
- package/src/components/Select/index.tsx +6 -2
- package/src/components/Separator/Separator.module.scss +29 -19
- package/src/components/Separator/index.tsx +55 -51
- package/src/components/Sidebar/Sidebar.contract.json +12 -0
- package/src/components/Sidebar/Sidebar.module.scss +101 -99
- package/src/components/Sidebar/index.tsx +10 -3
- package/src/components/Skeleton/Skeleton.module.scss +26 -26
- package/src/components/Skeleton/index.tsx +65 -72
- package/src/components/Slider/Slider.module.scss +31 -25
- package/src/components/Stack/Stack.module.scss +101 -30
- package/src/components/Stack/index.tsx +157 -127
- package/src/components/{Toggle/Toggle.contract.json → Switch/Switch.contract.json} +1 -1
- package/src/components/{Toggle/Toggle.module.scss → Switch/Switch.module.scss} +55 -82
- package/src/components/{Toggle → Switch}/index.tsx +5 -21
- package/src/components/Table/Table.module.scss +38 -129
- package/src/components/Table/index.tsx +13 -6
- package/src/components/TableOfContents/TableOfContents.module.scss +20 -177
- package/src/components/Tabs/Tabs.module.scss +27 -22
- package/src/components/Tabs/index.tsx +2 -2
- package/src/components/Text/Text.module.scss +22 -3
- package/src/components/Text/index.tsx +56 -21
- package/src/components/Textarea/Textarea.module.scss +59 -39
- package/src/components/Textarea/index.tsx +5 -12
- package/src/components/Theme/context.ts +42 -0
- package/src/components/Theme/index.tsx +14 -309
- package/src/components/ThemeToggle/ThemeToggle.module.scss +73 -0
- package/src/components/ThemeToggle/index.tsx +144 -0
- package/src/components/ThinkingIndicator/ThinkingIndicator.module.scss +24 -19
- package/src/components/ThinkingIndicator/index.tsx +44 -54
- package/src/components/Toast/Toast.contract.json +5 -21
- package/src/components/Toast/Toast.module.scss +61 -138
- package/src/components/Toggle/index.ts +7 -0
- package/src/components/ToggleGroup/ToggleGroup.contract.json +12 -39
- package/src/components/ToggleGroup/ToggleGroup.module.scss +132 -88
- package/src/components/ToggleGroup/index.tsx +5 -3
- package/src/components/Tooltip/Tooltip.module.scss +23 -39
- package/src/components/VisuallyHidden/VisuallyHidden.module.scss +3 -0
- package/src/index.ts +2 -1
- package/src/measurements/MeasurementTargets.module.scss +229 -0
- package/src/measurements/generated.ts +317 -0
- package/src/measurements/index.ts +8 -0
- package/src/measurements/measurements.json +361 -0
- package/src/recipes/_action.scss +138 -0
- package/src/recipes/_boolean-range.scss +124 -0
- package/src/recipes/_feedback.scss +171 -0
- package/src/recipes/_field.scss +98 -0
- package/src/recipes/_layout.scss +67 -0
- package/src/recipes/_navigation.scss +110 -0
- package/src/recipes/_overlay.scss +191 -0
- package/src/recipes/_popup.scss +92 -0
- package/src/recipes/_prose.scss +174 -0
- package/src/recipes/_representation.scss +193 -0
- package/src/recipes/_segmented.scss +26 -0
- package/src/recipes/_surface.scss +13 -0
- package/src/recipes/_table-chrome.scss +105 -0
- package/src/recipes/_target.scss +31 -0
- package/src/recipes/_typography.scss +38 -0
- package/src/recipes/popup.ts +12 -0
- package/src/recipes/table-chrome.ts +30 -0
- package/src/styles/globals.scss +2 -2
- package/src/tokens/_component-properties.scss +2 -2
- package/src/tokens/_computed.scss +9 -9
- package/src/tokens/_density.scss +41 -132
- package/src/tokens/_measurements.catalog.generated.css +91 -0
- package/src/tokens/_measurements.generated.scss +604 -0
- package/src/tokens/_mixins.scss +0 -276
- package/src/tokens/_property-registrations.scss +96 -92
- package/src/tokens/_radius.scss +16 -70
- package/src/tokens/_seeds.scss +8 -7
- package/src/tokens/_variables.scss +163 -148
- package/src/utils/layout-spacing.ts +31 -0
- package/src/utils/seed-derivation.ts +134 -172
- package/src/utils/theme-presets.ts +58 -30
- package/dist/components/Theme/ThemeToggle.module.scss.js +0 -23
- package/dist/components/Toggle/Toggle.module.scss.cjs +0 -44
- package/dist/components/Toggle/Toggle.module.scss.js +0 -44
- package/src/components/Switch/index.ts +0 -3
- package/src/components/Theme/ThemeToggle.module.scss +0 -91
|
@@ -9,13 +9,19 @@
|
|
|
9
9
|
* the @usefragments/ui barrel export.
|
|
10
10
|
*/
|
|
11
11
|
|
|
12
|
+
import {
|
|
13
|
+
MEASUREMENT_PROFILES,
|
|
14
|
+
type MeasurementDensity,
|
|
15
|
+
type MeasurementRadiusStyle,
|
|
16
|
+
} from "../measurements";
|
|
17
|
+
|
|
12
18
|
// ============================================
|
|
13
19
|
// Types
|
|
14
20
|
// ============================================
|
|
15
21
|
|
|
16
|
-
export type NeutralPalette =
|
|
17
|
-
export type DensityPreset =
|
|
18
|
-
export type RadiusStyle =
|
|
22
|
+
export type NeutralPalette = "stone" | "ice" | "sand" | "earth" | "fire" | "fragments";
|
|
23
|
+
export type DensityPreset = MeasurementDensity;
|
|
24
|
+
export type RadiusStyle = MeasurementRadiusStyle;
|
|
19
25
|
|
|
20
26
|
export interface SeedConfig {
|
|
21
27
|
brand: string;
|
|
@@ -56,92 +62,92 @@ interface RadiusConfig {
|
|
|
56
62
|
export const PALETTES: Record<NeutralPalette, PaletteShades> = {
|
|
57
63
|
// Stone - Muted cool neutrals (default, balanced)
|
|
58
64
|
stone: {
|
|
59
|
-
50:
|
|
60
|
-
100:
|
|
61
|
-
200:
|
|
62
|
-
300:
|
|
63
|
-
400:
|
|
64
|
-
500:
|
|
65
|
-
600:
|
|
66
|
-
700:
|
|
67
|
-
800:
|
|
68
|
-
900:
|
|
69
|
-
950:
|
|
65
|
+
50: "#fafafa",
|
|
66
|
+
100: "#f4f4f5",
|
|
67
|
+
200: "#e4e4e7",
|
|
68
|
+
300: "#d4d4d8",
|
|
69
|
+
400: "#a1a1aa",
|
|
70
|
+
500: "#71717a",
|
|
71
|
+
600: "#52525b",
|
|
72
|
+
700: "#3f3f46",
|
|
73
|
+
800: "#27272a",
|
|
74
|
+
900: "#18181b",
|
|
75
|
+
950: "#09090b",
|
|
70
76
|
},
|
|
71
77
|
// Ice - Cool blue tones (professional, tech)
|
|
72
78
|
// Dark shades are muted for comfortable dark mode backgrounds
|
|
73
79
|
ice: {
|
|
74
|
-
50:
|
|
75
|
-
100:
|
|
76
|
-
200:
|
|
77
|
-
300:
|
|
78
|
-
400:
|
|
79
|
-
500:
|
|
80
|
-
600:
|
|
81
|
-
700:
|
|
82
|
-
800:
|
|
83
|
-
900:
|
|
84
|
-
950:
|
|
80
|
+
50: "#f0f9ff",
|
|
81
|
+
100: "#e0f2fe",
|
|
82
|
+
200: "#bae6fd",
|
|
83
|
+
300: "#7dd3fc",
|
|
84
|
+
400: "#38bdf8",
|
|
85
|
+
500: "#0ea5e9",
|
|
86
|
+
600: "#0284c7",
|
|
87
|
+
700: "#0369a1",
|
|
88
|
+
800: "#0f2d3d", // Darkened and desaturated for dark mode
|
|
89
|
+
900: "#0a1f2c", // Darkened and desaturated for dark mode
|
|
90
|
+
950: "#06141c", // Very dark blue-gray for dark mode bg
|
|
85
91
|
},
|
|
86
92
|
// Sand - Warm brown/terracotta tones (organic, earthy)
|
|
87
93
|
// Dark shades are muted for comfortable dark mode backgrounds
|
|
88
94
|
sand: {
|
|
89
|
-
50:
|
|
90
|
-
100:
|
|
91
|
-
200:
|
|
92
|
-
300:
|
|
93
|
-
400:
|
|
94
|
-
500:
|
|
95
|
-
600:
|
|
96
|
-
700:
|
|
97
|
-
800:
|
|
98
|
-
900:
|
|
99
|
-
950:
|
|
95
|
+
50: "#fdf8f3",
|
|
96
|
+
100: "#f5ebe0",
|
|
97
|
+
200: "#e8d5c4",
|
|
98
|
+
300: "#d4b89c",
|
|
99
|
+
400: "#c19a6b",
|
|
100
|
+
500: "#a67c52",
|
|
101
|
+
600: "#8b5e34",
|
|
102
|
+
700: "#6f4518",
|
|
103
|
+
800: "#231a12", // Darkened and desaturated for dark mode
|
|
104
|
+
900: "#181210", // Darkened and desaturated for dark mode
|
|
105
|
+
950: "#0f0c09", // Very dark warm gray for dark mode bg
|
|
100
106
|
},
|
|
101
107
|
// Earth - Green/olive tones (natural, growth)
|
|
102
108
|
// Dark shades are muted for comfortable dark mode backgrounds
|
|
103
109
|
earth: {
|
|
104
|
-
50:
|
|
105
|
-
100:
|
|
106
|
-
200:
|
|
107
|
-
300:
|
|
108
|
-
400:
|
|
109
|
-
500:
|
|
110
|
-
600:
|
|
111
|
-
700:
|
|
112
|
-
800:
|
|
113
|
-
900:
|
|
114
|
-
950:
|
|
110
|
+
50: "#f5f7f2",
|
|
111
|
+
100: "#e8ede3",
|
|
112
|
+
200: "#d1dbc6",
|
|
113
|
+
300: "#b3c4a0",
|
|
114
|
+
400: "#8fa872",
|
|
115
|
+
500: "#6b8c4e",
|
|
116
|
+
600: "#517035",
|
|
117
|
+
700: "#3d5527",
|
|
118
|
+
800: "#1a2316", // Darkened and desaturated for dark mode
|
|
119
|
+
900: "#121810", // Darkened and desaturated for dark mode
|
|
120
|
+
950: "#0a0f08", // Very dark green-gray for dark mode bg
|
|
115
121
|
},
|
|
116
122
|
// Fire - Warm red/orange tones (energy, passion)
|
|
117
123
|
// Dark shades are muted for comfortable dark mode backgrounds
|
|
118
124
|
fire: {
|
|
119
|
-
50:
|
|
120
|
-
100:
|
|
121
|
-
200:
|
|
122
|
-
300:
|
|
123
|
-
400:
|
|
124
|
-
500:
|
|
125
|
-
600:
|
|
126
|
-
700:
|
|
127
|
-
800:
|
|
128
|
-
900:
|
|
129
|
-
950:
|
|
125
|
+
50: "#fff7ed",
|
|
126
|
+
100: "#ffedd5",
|
|
127
|
+
200: "#fed7aa",
|
|
128
|
+
300: "#fdba74",
|
|
129
|
+
400: "#fb923c",
|
|
130
|
+
500: "#f97316",
|
|
131
|
+
600: "#ea580c",
|
|
132
|
+
700: "#c2410c",
|
|
133
|
+
800: "#2d1810", // Darkened and desaturated for dark mode
|
|
134
|
+
900: "#1c100a", // Darkened and desaturated for dark mode
|
|
135
|
+
950: "#120a06", // Very dark warm gray for dark mode bg
|
|
130
136
|
},
|
|
131
137
|
// Fragments - Rich saturated green tones (the Fragments brand palette)
|
|
132
138
|
// Dark shades anchor to the Fragments marketing aesthetic
|
|
133
139
|
fragments: {
|
|
134
|
-
50:
|
|
135
|
-
100:
|
|
136
|
-
200:
|
|
137
|
-
300:
|
|
138
|
-
400:
|
|
139
|
-
500:
|
|
140
|
-
600:
|
|
141
|
-
700:
|
|
142
|
-
800:
|
|
143
|
-
900:
|
|
144
|
-
950:
|
|
140
|
+
50: "#f0f7f3",
|
|
141
|
+
100: "#dceee3",
|
|
142
|
+
200: "#b8ddc6",
|
|
143
|
+
300: "#88c5a0",
|
|
144
|
+
400: "#5aaa7a",
|
|
145
|
+
500: "#3d8f60",
|
|
146
|
+
600: "#2d7049",
|
|
147
|
+
700: "#235536",
|
|
148
|
+
800: "#1a3025", // Dark card surface
|
|
149
|
+
900: "#142318", // Dark surface
|
|
150
|
+
950: "#0d1f17", // Darkest bg
|
|
145
151
|
},
|
|
146
152
|
};
|
|
147
153
|
|
|
@@ -163,45 +169,45 @@ interface SemanticColors {
|
|
|
163
169
|
export const PALETTE_SEMANTIC_COLORS: Record<NeutralPalette, SemanticColors> = {
|
|
164
170
|
// Stone - Standard semantic colors (vibrant, universal)
|
|
165
171
|
stone: {
|
|
166
|
-
success:
|
|
167
|
-
warning:
|
|
168
|
-
danger:
|
|
169
|
-
info:
|
|
172
|
+
success: "#22c55e", // Green 500
|
|
173
|
+
warning: "#f59e0b", // Amber 500
|
|
174
|
+
danger: "#ef4444", // Red 500
|
|
175
|
+
info: "#3b82f6", // Blue 500
|
|
170
176
|
},
|
|
171
177
|
// Ice - Cool blue-shifted semantic colors
|
|
172
178
|
ice: {
|
|
173
|
-
success:
|
|
174
|
-
warning:
|
|
175
|
-
danger:
|
|
176
|
-
info:
|
|
179
|
+
success: "#10b981", // Emerald 500 (cooler green)
|
|
180
|
+
warning: "#f59e0b", // Amber 500
|
|
181
|
+
danger: "#f43f5e", // Rose 500 (cooler red)
|
|
182
|
+
info: "#0ea5e9", // Sky 500 (matches palette)
|
|
177
183
|
},
|
|
178
184
|
// Earth - Natural, muted semantic colors
|
|
179
185
|
earth: {
|
|
180
|
-
success:
|
|
181
|
-
warning:
|
|
182
|
-
danger:
|
|
183
|
-
info:
|
|
186
|
+
success: "#22c55e", // Green 500 (natural)
|
|
187
|
+
warning: "#d97706", // Amber 600 (earthier)
|
|
188
|
+
danger: "#dc2626", // Red 600 (deeper)
|
|
189
|
+
info: "#0284c7", // Sky 600 (muted)
|
|
184
190
|
},
|
|
185
191
|
// Sand - Warm, terracotta-shifted semantic colors
|
|
186
192
|
sand: {
|
|
187
|
-
success:
|
|
188
|
-
warning:
|
|
189
|
-
danger:
|
|
190
|
-
info:
|
|
193
|
+
success: "#16a34a", // Green 600 (warmer)
|
|
194
|
+
warning: "#ea580c", // Orange 600 (warm)
|
|
195
|
+
danger: "#dc2626", // Red 600
|
|
196
|
+
info: "#2563eb", // Blue 600
|
|
191
197
|
},
|
|
192
198
|
// Fire - Warm, vibrant semantic colors
|
|
193
199
|
fire: {
|
|
194
|
-
success:
|
|
195
|
-
warning:
|
|
196
|
-
danger:
|
|
197
|
-
info:
|
|
200
|
+
success: "#16a34a", // Green 600
|
|
201
|
+
warning: "#f59e0b", // Amber 500
|
|
202
|
+
danger: "#dc2626", // Red 600 (complements orange)
|
|
203
|
+
info: "#2563eb", // Blue 600
|
|
198
204
|
},
|
|
199
205
|
// Fragments - Brand-complementary semantic colors
|
|
200
206
|
fragments: {
|
|
201
|
-
success:
|
|
202
|
-
warning:
|
|
203
|
-
danger:
|
|
204
|
-
info:
|
|
207
|
+
success: "#39d98a", // Vibrant green (brand signature)
|
|
208
|
+
warning: "#f59e0b", // Amber 500
|
|
209
|
+
danger: "#ef4444", // Red 500
|
|
210
|
+
info: "#3b82f6", // Blue 500
|
|
205
211
|
},
|
|
206
212
|
};
|
|
207
213
|
|
|
@@ -225,38 +231,7 @@ export function getSemanticColors(
|
|
|
225
231
|
// Radius Styles
|
|
226
232
|
// ============================================
|
|
227
233
|
|
|
228
|
-
export const RADIUS_STYLES: Record<RadiusStyle, RadiusConfig> =
|
|
229
|
-
sharp: {
|
|
230
|
-
sm: '0',
|
|
231
|
-
md: '0',
|
|
232
|
-
lg: '0',
|
|
233
|
-
xl: '0',
|
|
234
|
-
},
|
|
235
|
-
subtle: {
|
|
236
|
-
sm: '0.125rem',
|
|
237
|
-
md: '0.25rem',
|
|
238
|
-
lg: '0.375rem',
|
|
239
|
-
xl: '0.5rem',
|
|
240
|
-
},
|
|
241
|
-
default: {
|
|
242
|
-
sm: '0.25rem',
|
|
243
|
-
md: '0.429rem',
|
|
244
|
-
lg: '0.571rem',
|
|
245
|
-
xl: '0.857rem',
|
|
246
|
-
},
|
|
247
|
-
rounded: {
|
|
248
|
-
sm: '0.375rem',
|
|
249
|
-
md: '0.5rem',
|
|
250
|
-
lg: '0.75rem',
|
|
251
|
-
xl: '1rem',
|
|
252
|
-
},
|
|
253
|
-
pill: {
|
|
254
|
-
sm: '0.5rem',
|
|
255
|
-
md: '0.75rem',
|
|
256
|
-
lg: '1rem',
|
|
257
|
-
xl: '1.5rem',
|
|
258
|
-
},
|
|
259
|
-
};
|
|
234
|
+
export const RADIUS_STYLES: Record<RadiusStyle, RadiusConfig> = MEASUREMENT_PROFILES.radius;
|
|
260
235
|
|
|
261
236
|
// ============================================
|
|
262
237
|
// Color Utility Functions
|
|
@@ -283,7 +258,7 @@ function hexToRgb(hex: string): { r: number; g: number; b: number } {
|
|
|
283
258
|
function rgbToHex(r: number, g: number, b: number): string {
|
|
284
259
|
const toHex = (n: number) => {
|
|
285
260
|
const clamped = Math.max(0, Math.min(255, Math.round(n)));
|
|
286
|
-
return clamped.toString(16).padStart(2,
|
|
261
|
+
return clamped.toString(16).padStart(2, "0");
|
|
287
262
|
};
|
|
288
263
|
return `#${toHex(r)}${toHex(g)}${toHex(b)}`;
|
|
289
264
|
}
|
|
@@ -294,11 +269,7 @@ function rgbToHex(r: number, g: number, b: number): string {
|
|
|
294
269
|
function lighten(hex: string, percent: number): string {
|
|
295
270
|
const { r, g, b } = hexToRgb(hex);
|
|
296
271
|
const factor = percent / 100;
|
|
297
|
-
return rgbToHex(
|
|
298
|
-
r + (255 - r) * factor,
|
|
299
|
-
g + (255 - g) * factor,
|
|
300
|
-
b + (255 - b) * factor
|
|
301
|
-
);
|
|
272
|
+
return rgbToHex(r + (255 - r) * factor, g + (255 - g) * factor, b + (255 - b) * factor);
|
|
302
273
|
}
|
|
303
274
|
|
|
304
275
|
/**
|
|
@@ -318,11 +289,7 @@ function mixColors(color1: string, color2: string, weight: number): string {
|
|
|
318
289
|
const c2 = hexToRgb(color2);
|
|
319
290
|
const w = weight / 100;
|
|
320
291
|
|
|
321
|
-
return rgbToHex(
|
|
322
|
-
c1.r * w + c2.r * (1 - w),
|
|
323
|
-
c1.g * w + c2.g * (1 - w),
|
|
324
|
-
c1.b * w + c2.b * (1 - w)
|
|
325
|
-
);
|
|
292
|
+
return rgbToHex(c1.r * w + c2.r * (1 - w), c1.g * w + c2.g * (1 - w), c1.b * w + c2.b * (1 - w));
|
|
326
293
|
}
|
|
327
294
|
|
|
328
295
|
// ============================================
|
|
@@ -407,7 +374,7 @@ export function deriveDarkAccent(brand: string): string {
|
|
|
407
374
|
|
|
408
375
|
// For grayscale/neutral brands (like #18181b), use light gray
|
|
409
376
|
if (saturation < 0.15) {
|
|
410
|
-
return
|
|
377
|
+
return "#f2f2f2";
|
|
411
378
|
}
|
|
412
379
|
|
|
413
380
|
// For bright, saturated colors (like pure red #ff0000), they're already
|
|
@@ -433,10 +400,7 @@ export function deriveDarkAccent(brand: string): string {
|
|
|
433
400
|
/**
|
|
434
401
|
* Interpolate between two shades for half-steps
|
|
435
402
|
*/
|
|
436
|
-
function interpolateShade(
|
|
437
|
-
palette: PaletteShades,
|
|
438
|
-
level: number
|
|
439
|
-
): string {
|
|
403
|
+
function interpolateShade(palette: PaletteShades, level: number): string {
|
|
440
404
|
const levels = [50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 950];
|
|
441
405
|
|
|
442
406
|
// If it's a standard level, return directly
|
|
@@ -468,7 +432,7 @@ function interpolateShade(
|
|
|
468
432
|
export function deriveSurfaces(
|
|
469
433
|
palette: PaletteShades,
|
|
470
434
|
isDark: boolean,
|
|
471
|
-
paletteName: NeutralPalette =
|
|
435
|
+
paletteName: NeutralPalette = "stone"
|
|
472
436
|
): {
|
|
473
437
|
primary: string;
|
|
474
438
|
secondary: string;
|
|
@@ -479,7 +443,7 @@ export function deriveSurfaces(
|
|
|
479
443
|
active: string;
|
|
480
444
|
} {
|
|
481
445
|
// Stone palette uses neutral backgrounds (white in light, dark grays in dark)
|
|
482
|
-
const isColorful = paletteName !==
|
|
446
|
+
const isColorful = paletteName !== "stone";
|
|
483
447
|
|
|
484
448
|
if (isDark) {
|
|
485
449
|
return {
|
|
@@ -488,8 +452,8 @@ export function deriveSurfaces(
|
|
|
488
452
|
tertiary: palette[800],
|
|
489
453
|
elevated: interpolateShade(palette, 875),
|
|
490
454
|
subtle: interpolateShade(palette, 925),
|
|
491
|
-
hover:
|
|
492
|
-
active:
|
|
455
|
+
hover: "rgba(255, 255, 255, 0.05)",
|
|
456
|
+
active: "rgba(255, 255, 255, 0.08)",
|
|
493
457
|
};
|
|
494
458
|
}
|
|
495
459
|
|
|
@@ -499,22 +463,22 @@ export function deriveSurfaces(
|
|
|
499
463
|
primary: palette[50],
|
|
500
464
|
secondary: palette[100],
|
|
501
465
|
tertiary: palette[200],
|
|
502
|
-
elevated:
|
|
466
|
+
elevated: "#ffffff",
|
|
503
467
|
subtle: palette[50],
|
|
504
|
-
hover:
|
|
505
|
-
active:
|
|
468
|
+
hover: "rgba(0, 0, 0, 0.04)",
|
|
469
|
+
active: "rgba(0, 0, 0, 0.06)",
|
|
506
470
|
};
|
|
507
471
|
}
|
|
508
472
|
|
|
509
473
|
// Stone palette: neutral white backgrounds
|
|
510
474
|
return {
|
|
511
|
-
primary:
|
|
475
|
+
primary: "#ffffff",
|
|
512
476
|
secondary: palette[100],
|
|
513
477
|
tertiary: palette[100],
|
|
514
|
-
elevated:
|
|
478
|
+
elevated: "#ffffff",
|
|
515
479
|
subtle: palette[50],
|
|
516
|
-
hover:
|
|
517
|
-
active:
|
|
480
|
+
hover: "rgba(0, 0, 0, 0.04)",
|
|
481
|
+
active: "rgba(0, 0, 0, 0.06)",
|
|
518
482
|
};
|
|
519
483
|
}
|
|
520
484
|
|
|
@@ -529,7 +493,7 @@ export function deriveSurfaces(
|
|
|
529
493
|
export function deriveText(
|
|
530
494
|
palette: PaletteShades,
|
|
531
495
|
isDark: boolean,
|
|
532
|
-
paletteName: NeutralPalette =
|
|
496
|
+
paletteName: NeutralPalette = "stone"
|
|
533
497
|
): {
|
|
534
498
|
primary: string;
|
|
535
499
|
secondary: string;
|
|
@@ -548,7 +512,7 @@ export function deriveText(
|
|
|
548
512
|
}
|
|
549
513
|
|
|
550
514
|
// Light mode background — stone uses white, colorful palettes use palette[50]
|
|
551
|
-
const bgPrimary = paletteName ===
|
|
515
|
+
const bgPrimary = paletteName === "stone" ? "#ffffff" : palette[50];
|
|
552
516
|
const aaaTarget = 7.0;
|
|
553
517
|
|
|
554
518
|
return {
|
|
@@ -571,14 +535,14 @@ export function deriveBorders(
|
|
|
571
535
|
} {
|
|
572
536
|
if (isDark) {
|
|
573
537
|
return {
|
|
574
|
-
default:
|
|
575
|
-
strong:
|
|
538
|
+
default: "rgba(255, 255, 255, 0.08)",
|
|
539
|
+
strong: "rgba(255, 255, 255, 0.14)",
|
|
576
540
|
};
|
|
577
541
|
}
|
|
578
542
|
|
|
579
543
|
return {
|
|
580
|
-
default:
|
|
581
|
-
strong:
|
|
544
|
+
default: "rgba(0, 0, 0, 0.08)",
|
|
545
|
+
strong: "rgba(0, 0, 0, 0.14)",
|
|
582
546
|
};
|
|
583
547
|
}
|
|
584
548
|
|
|
@@ -592,16 +556,16 @@ export function deriveShadows(isDark: boolean): {
|
|
|
592
556
|
} {
|
|
593
557
|
if (isDark) {
|
|
594
558
|
return {
|
|
595
|
-
sm:
|
|
596
|
-
md:
|
|
597
|
-
lg:
|
|
559
|
+
sm: "0 1px 2px 0 rgba(0, 0, 0, 0.2)",
|
|
560
|
+
md: "0 2px 4px -1px rgba(0, 0, 0, 0.25), 0 1px 3px -2px rgba(0, 0, 0, 0.2)",
|
|
561
|
+
lg: "0 8px 12px -3px rgba(0, 0, 0, 0.35), 0 3px 5px -4px rgba(0, 0, 0, 0.25)",
|
|
598
562
|
};
|
|
599
563
|
}
|
|
600
564
|
|
|
601
565
|
return {
|
|
602
|
-
sm:
|
|
603
|
-
md:
|
|
604
|
-
lg:
|
|
566
|
+
sm: "0 1px 2px 0 rgba(0, 0, 0, 0.03)",
|
|
567
|
+
md: "0 2px 4px -1px rgba(0, 0, 0, 0.06), 0 1px 3px -2px rgba(0, 0, 0, 0.04)",
|
|
568
|
+
lg: "0 8px 12px -3px rgba(0, 0, 0, 0.08), 0 3px 5px -4px rgba(0, 0, 0, 0.05)",
|
|
605
569
|
};
|
|
606
570
|
}
|
|
607
571
|
|
|
@@ -614,9 +578,7 @@ export function deriveShadows(isDark: boolean): {
|
|
|
614
578
|
*/
|
|
615
579
|
function srgbLinearize(channel: number): number {
|
|
616
580
|
const srgb = channel / 255;
|
|
617
|
-
return srgb <= 0.04045
|
|
618
|
-
? srgb / 12.92
|
|
619
|
-
: Math.pow((srgb + 0.055) / 1.055, 2.4);
|
|
581
|
+
return srgb <= 0.04045 ? srgb / 12.92 : Math.pow((srgb + 0.055) / 1.055, 2.4);
|
|
620
582
|
}
|
|
621
583
|
|
|
622
584
|
/**
|
|
@@ -662,7 +624,7 @@ function ensureContrast(fg: string, bg: string, targetRatio: number): string {
|
|
|
662
624
|
*/
|
|
663
625
|
export function deriveSemanticText(color: string, isDark: boolean): string {
|
|
664
626
|
const target = isDark ? 7.5 : 7.0;
|
|
665
|
-
const bg = isDark ?
|
|
627
|
+
const bg = isDark ? "#0a0a0a" : "#ffffff";
|
|
666
628
|
let adjusted = color;
|
|
667
629
|
|
|
668
630
|
for (let i = 0; i < 40; i++) {
|
|
@@ -698,9 +660,9 @@ export function deriveSemanticHover(color: string): string {
|
|
|
698
660
|
// ============================================
|
|
699
661
|
|
|
700
662
|
export const DEFAULT_SEEDS: SeedConfig = {
|
|
701
|
-
brand:
|
|
702
|
-
neutral:
|
|
703
|
-
density:
|
|
704
|
-
radiusStyle:
|
|
663
|
+
brand: "#18181b",
|
|
664
|
+
neutral: "stone",
|
|
665
|
+
density: "default",
|
|
666
|
+
radiusStyle: "default",
|
|
705
667
|
// Semantic colors omitted - will use palette defaults from PALETTE_SEMANTIC_COLORS
|
|
706
668
|
};
|
|
@@ -8,6 +8,8 @@
|
|
|
8
8
|
|
|
9
9
|
import {
|
|
10
10
|
type SeedConfig,
|
|
11
|
+
type DensityPreset,
|
|
12
|
+
type RadiusStyle,
|
|
11
13
|
PALETTES,
|
|
12
14
|
RADIUS_STYLES,
|
|
13
15
|
getSemanticColors,
|
|
@@ -21,7 +23,7 @@ import {
|
|
|
21
23
|
deriveSemanticText,
|
|
22
24
|
deriveSemanticBg,
|
|
23
25
|
deriveSemanticHover,
|
|
24
|
-
} from
|
|
26
|
+
} from "./seed-derivation";
|
|
25
27
|
|
|
26
28
|
// ============================================
|
|
27
29
|
// Theme Output Types
|
|
@@ -108,7 +110,8 @@ export interface ThemeConfig {
|
|
|
108
110
|
radius?: ThemeRadius;
|
|
109
111
|
shadows?: ThemeShadows;
|
|
110
112
|
dark?: ThemeDarkMode;
|
|
111
|
-
density?:
|
|
113
|
+
density?: DensityPreset;
|
|
114
|
+
radiusStyle?: RadiusStyle;
|
|
112
115
|
}
|
|
113
116
|
|
|
114
117
|
// ============================================
|
|
@@ -157,8 +160,9 @@ export function seedsToTheme(seeds: SeedConfig): ThemeConfig {
|
|
|
157
160
|
const infoTextDark = deriveSemanticText(info, true);
|
|
158
161
|
|
|
159
162
|
return {
|
|
160
|
-
name:
|
|
163
|
+
name: "Custom",
|
|
161
164
|
density: seeds.density,
|
|
165
|
+
radiusStyle: seeds.radiusStyle,
|
|
162
166
|
colors: {
|
|
163
167
|
accent: seeds.brand,
|
|
164
168
|
accentHover: deriveAccentHover(seeds.brand, false),
|
|
@@ -199,7 +203,7 @@ export function seedsToTheme(seeds: SeedConfig): ThemeConfig {
|
|
|
199
203
|
sm: radius.sm,
|
|
200
204
|
md: radius.md,
|
|
201
205
|
lg: radius.lg,
|
|
202
|
-
full:
|
|
206
|
+
full: "9999px",
|
|
203
207
|
},
|
|
204
208
|
shadows: {
|
|
205
209
|
sm: lightShadows.sm,
|
|
@@ -239,7 +243,7 @@ export function seedsToTheme(seeds: SeedConfig): ThemeConfig {
|
|
|
239
243
|
successBg: deriveSemanticBg(success, true),
|
|
240
244
|
warningBg: deriveSemanticBg(warning, true),
|
|
241
245
|
infoBg: deriveSemanticBg(info, true),
|
|
242
|
-
backdrop:
|
|
246
|
+
backdrop: "rgba(0, 0, 0, 0.8)",
|
|
243
247
|
},
|
|
244
248
|
};
|
|
245
249
|
}
|
|
@@ -257,55 +261,79 @@ export interface PresetDefinition {
|
|
|
257
261
|
|
|
258
262
|
const PRESET_DEFINITIONS: Record<string, PresetDefinition> = {
|
|
259
263
|
default: {
|
|
260
|
-
name:
|
|
261
|
-
seeds: { brand:
|
|
264
|
+
name: "Default",
|
|
265
|
+
seeds: { brand: "#18181b", neutral: "stone", density: "default", radiusStyle: "default" },
|
|
262
266
|
},
|
|
263
267
|
neutral: {
|
|
264
|
-
name:
|
|
265
|
-
seeds: { brand:
|
|
268
|
+
name: "Neutral",
|
|
269
|
+
seeds: { brand: "#71717a", neutral: "stone", density: "default", radiusStyle: "default" },
|
|
266
270
|
},
|
|
267
271
|
slate: {
|
|
268
|
-
name:
|
|
269
|
-
seeds: { brand:
|
|
272
|
+
name: "Slate",
|
|
273
|
+
seeds: { brand: "#64748b", neutral: "stone", density: "default", radiusStyle: "default" },
|
|
270
274
|
overrides: {
|
|
271
|
-
surfaces: { bgSecondary:
|
|
272
|
-
dark: { surfaces: { bgSecondary:
|
|
275
|
+
surfaces: { bgSecondary: "#f1f5f9", bgTertiary: "#e2e8f0" },
|
|
276
|
+
dark: { surfaces: { bgSecondary: "#1e293b", bgTertiary: "#334155" } },
|
|
273
277
|
},
|
|
274
278
|
},
|
|
275
279
|
emerald: {
|
|
276
|
-
name:
|
|
277
|
-
seeds: { brand:
|
|
280
|
+
name: "Emerald",
|
|
281
|
+
seeds: { brand: "#10b981", neutral: "stone", density: "default", radiusStyle: "default" },
|
|
278
282
|
},
|
|
279
283
|
rose: {
|
|
280
|
-
name:
|
|
281
|
-
seeds: { brand:
|
|
284
|
+
name: "Rose",
|
|
285
|
+
seeds: { brand: "#f43f5e", neutral: "stone", density: "default", radiusStyle: "default" },
|
|
282
286
|
},
|
|
283
287
|
classic: {
|
|
284
|
-
name:
|
|
288
|
+
name: "Classic",
|
|
285
289
|
seeds: {
|
|
286
|
-
brand:
|
|
287
|
-
|
|
290
|
+
brand: "#1e40af",
|
|
291
|
+
neutral: "stone",
|
|
292
|
+
density: "default",
|
|
293
|
+
radiusStyle: "default",
|
|
294
|
+
danger: "#b91c1c",
|
|
295
|
+
success: "#15803d",
|
|
296
|
+
warning: "#a16207",
|
|
297
|
+
info: "#0369a1",
|
|
288
298
|
},
|
|
289
299
|
},
|
|
290
300
|
bold: {
|
|
291
|
-
name:
|
|
301
|
+
name: "Bold",
|
|
292
302
|
seeds: {
|
|
293
|
-
brand:
|
|
294
|
-
|
|
303
|
+
brand: "#7c3aed",
|
|
304
|
+
neutral: "stone",
|
|
305
|
+
density: "default",
|
|
306
|
+
radiusStyle: "default",
|
|
307
|
+
danger: "#dc2626",
|
|
308
|
+
success: "#16a34a",
|
|
309
|
+
warning: "#ea580c",
|
|
310
|
+
info: "#2563eb",
|
|
295
311
|
},
|
|
296
312
|
},
|
|
297
313
|
neon: {
|
|
298
|
-
name:
|
|
314
|
+
name: "Neon",
|
|
299
315
|
seeds: {
|
|
300
|
-
brand:
|
|
301
|
-
|
|
316
|
+
brand: "#06b6d4",
|
|
317
|
+
neutral: "stone",
|
|
318
|
+
density: "default",
|
|
319
|
+
radiusStyle: "default",
|
|
320
|
+
danger: "#f43f5e",
|
|
321
|
+
success: "#4ade80",
|
|
322
|
+
warning: "#fbbf24",
|
|
323
|
+
info: "#a78bfa",
|
|
302
324
|
},
|
|
303
325
|
},
|
|
304
326
|
minimal: {
|
|
305
|
-
name:
|
|
327
|
+
name: "Minimal",
|
|
306
328
|
seeds: {
|
|
307
|
-
brand:
|
|
308
|
-
|
|
329
|
+
brand: "#525252",
|
|
330
|
+
neutral: "stone",
|
|
331
|
+
density: "default",
|
|
332
|
+
radiusStyle: "default",
|
|
333
|
+
danger: "#78716c",
|
|
334
|
+
success: "#65a30d",
|
|
335
|
+
warning: "#ca8a04",
|
|
336
|
+
info: "#64748b",
|
|
309
337
|
},
|
|
310
338
|
},
|
|
311
339
|
};
|
|
@@ -315,7 +343,7 @@ const PRESET_DEFINITIONS: Record<string, PresetDefinition> = {
|
|
|
315
343
|
// ============================================
|
|
316
344
|
|
|
317
345
|
function isPlainObject(val: unknown): val is Record<string, unknown> {
|
|
318
|
-
return typeof val ===
|
|
346
|
+
return typeof val === "object" && val !== null && !Array.isArray(val);
|
|
319
347
|
}
|
|
320
348
|
|
|
321
349
|
function deepMergeObjects(
|