zabi-components 7.0.2 ā 8.0.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 +46 -3
- package/THEMING.md +255 -15
- package/dist/atoms/ActionPanel.svelte +12 -7
- package/dist/atoms/ActionPanel.svelte.d.ts +2 -0
- package/dist/atoms/Badge.svelte +93 -56
- package/dist/atoms/Badge.svelte.d.ts +15 -3
- package/dist/atoms/Button.svelte +49 -49
- package/dist/atoms/Button.svelte.d.ts +3 -0
- package/dist/atoms/Card.svelte +31 -28
- package/dist/atoms/Card.svelte.d.ts +5 -2
- package/dist/atoms/CardContent.svelte +10 -2
- package/dist/atoms/CardContent.svelte.d.ts +2 -0
- package/dist/atoms/CardFooter.svelte +10 -2
- package/dist/atoms/CardFooter.svelte.d.ts +2 -0
- package/dist/atoms/CardHeader.svelte +10 -2
- package/dist/atoms/CardHeader.svelte.d.ts +2 -0
- package/dist/atoms/Checkbox.svelte +4 -0
- package/dist/atoms/Checkbox.svelte.d.ts +2 -0
- package/dist/atoms/CodeBlock.svelte +15 -7
- package/dist/atoms/CodeBlock.svelte.d.ts +9 -3
- package/dist/atoms/ColorPicker.svelte +19 -9
- package/dist/atoms/ColorPicker.svelte.d.ts +3 -1
- package/dist/atoms/Container.svelte +2 -3
- package/dist/atoms/Divider.svelte +4 -4
- package/dist/atoms/FeatureCard.svelte +4 -3
- package/dist/atoms/Heading.svelte +56 -27
- package/dist/atoms/Heading.svelte.d.ts +17 -4
- package/dist/atoms/IconButton.svelte +30 -37
- package/dist/atoms/Input.svelte +26 -34
- package/dist/atoms/List.svelte +10 -2
- package/dist/atoms/List.svelte.d.ts +2 -0
- package/dist/atoms/ListItem.svelte +2 -2
- package/dist/atoms/ListItemLeading.svelte +4 -2
- package/dist/atoms/ListItemLeading.svelte.d.ts +1 -1
- package/dist/atoms/OptimizedImage.svelte +11 -2
- package/dist/atoms/OptimizedImage.svelte.d.ts +2 -0
- package/dist/atoms/Progress.svelte +4 -1
- package/dist/atoms/Progress.svelte.d.ts +2 -0
- package/dist/atoms/Radio.svelte +4 -0
- package/dist/atoms/Radio.svelte.d.ts +2 -0
- package/dist/atoms/Select.svelte +65 -67
- package/dist/atoms/Select.svelte.d.ts +4 -0
- package/dist/atoms/SelectionControl.svelte +5 -1
- package/dist/atoms/SelectionControl.svelte.d.ts +2 -0
- package/dist/atoms/Skeleton.svelte +5 -3
- package/dist/atoms/Table.svelte +2 -1
- package/dist/atoms/Text.svelte +34 -5
- package/dist/atoms/Text.svelte.d.ts +7 -1
- package/dist/atoms/Textarea.svelte +7 -6
- package/dist/atoms/ThemeToggle.svelte +17 -14
- package/dist/atoms/ThemeToggle.svelte.d.ts +2 -0
- package/dist/atoms/Toast.svelte +10 -8
- package/dist/atoms/Toggle.svelte +21 -13
- package/dist/atoms/Toggle.svelte.d.ts +7 -0
- package/dist/atoms/Tooltip.svelte +80 -22
- package/dist/atoms/Tooltip.svelte.d.ts +15 -0
- package/dist/components/index.d.ts +3 -1
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/organisms/index.d.ts +1 -0
- package/dist/components/organisms/index.d.ts.map +1 -1
- package/dist/components/util/cn.d.ts +8 -0
- package/dist/components/util/cn.d.ts.map +1 -0
- package/dist/components/util/ssr-safe.d.ts +4 -4
- package/dist/components/util/ssr-safe.d.ts.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.js +3 -6
- package/dist/molecules/Alert.svelte +43 -64
- package/dist/molecules/Alert.svelte.d.ts +7 -1
- package/dist/molecules/ComponentDemo.svelte +10 -2
- package/dist/molecules/ComponentDemo.svelte.d.ts +2 -0
- package/dist/molecules/ContactForm.svelte +12 -2
- package/dist/molecules/ContactForm.svelte.d.ts +2 -0
- package/dist/molecules/Dropdown.svelte +40 -11
- package/dist/molecules/Dropdown.svelte.d.ts +4 -0
- package/dist/molecules/EmptyState.svelte +2 -1
- package/dist/molecules/Form.svelte +25 -14
- package/dist/molecules/Form.svelte.d.ts +13 -5
- package/dist/molecules/FormField.svelte +2 -1
- package/dist/molecules/Header.svelte +13 -3
- package/dist/molecules/Header.svelte.d.ts +2 -0
- package/dist/molecules/ImageUpload.svelte +54 -15
- package/dist/molecules/ImageUpload.svelte.d.ts +16 -5
- package/dist/molecules/Modal.svelte +110 -31
- package/dist/molecules/Modal.svelte.d.ts +9 -6
- package/dist/molecules/NavigationMenu.svelte +15 -3
- package/dist/molecules/NavigationMenu.svelte.d.ts +4 -0
- package/dist/molecules/NavigationMenuContent.svelte +36 -38
- package/dist/molecules/NavigationMenuContent.svelte.d.ts +2 -0
- package/dist/molecules/NavigationMenuItem.svelte +10 -2
- package/dist/molecules/NavigationMenuItem.svelte.d.ts +2 -0
- package/dist/molecules/NavigationMenuLink.svelte +10 -2
- package/dist/molecules/NavigationMenuLink.svelte.d.ts +2 -0
- package/dist/molecules/NavigationMenuList.svelte +10 -2
- package/dist/molecules/NavigationMenuList.svelte.d.ts +2 -0
- package/dist/molecules/NavigationMenuTrigger.svelte +16 -3
- package/dist/molecules/NavigationMenuTrigger.svelte.d.ts +2 -0
- package/dist/molecules/Page.svelte +8 -2
- package/dist/molecules/Page.svelte.d.ts +2 -0
- package/dist/molecules/PropsTable.svelte +6 -3
- package/dist/molecules/PropsTable.svelte.d.ts +2 -0
- package/dist/molecules/RadioGroup.svelte +5 -1
- package/dist/molecules/RadioGroup.svelte.d.ts +2 -0
- package/dist/molecules/Section.svelte +12 -4
- package/dist/molecules/Section.svelte.d.ts +3 -1
- package/dist/molecules/SidebarBrandHeader.svelte +13 -4
- package/dist/molecules/SidebarBrandHeader.svelte.d.ts +2 -0
- package/dist/molecules/SidebarFooter.svelte +12 -4
- package/dist/molecules/SidebarFooter.svelte.d.ts +2 -0
- package/dist/molecules/SidebarNavSection.svelte +12 -4
- package/dist/molecules/SidebarNavSection.svelte.d.ts +2 -0
- package/dist/molecules/SlideUp.svelte +85 -21
- package/dist/molecules/SlideUp.svelte.d.ts +5 -4
- package/dist/molecules/Tabs.svelte +25 -19
- package/dist/molecules/Tabs.svelte.d.ts +8 -4
- package/dist/molecules/Toaster.svelte +3 -2
- package/dist/molecules/ToasterToast.svelte +41 -10
- package/dist/molecules/ToasterToast.svelte.d.ts +2 -0
- package/dist/organisms/SidebarAccountPanel.svelte +4 -0
- package/dist/organisms/SidebarAccountPanel.svelte.d.ts +2 -0
- package/dist/organisms/SidebarNavigation.svelte +102 -59
- package/dist/organisms/SidebarNavigation.svelte.d.ts +2 -0
- package/dist/organisms/SidebarPanel.svelte +19 -11
- package/dist/organisms/SidebarPanel.svelte.d.ts +2 -0
- package/dist/organisms/SidebarShell.svelte +112 -0
- package/dist/organisms/SidebarShell.svelte.d.ts +52 -0
- package/dist/organisms/TopNavbar.svelte +88 -17
- package/dist/organisms/TopNavbar.svelte.d.ts +2 -0
- package/dist/organisms/index.d.ts +1 -0
- package/dist/organisms/index.js +1 -0
- package/dist/routes/lib/variant-utils.d.ts +26 -0
- package/dist/routes/lib/{variant-utils.ts ā variant-utils.js} +15 -46
- package/dist/types/events.js +1 -0
- package/dist/types/index.js +3 -0
- package/dist/util/cn.d.ts +7 -0
- package/dist/util/cn.js +48 -0
- package/dist/util/ssr-safe.d.ts +4 -4
- package/dist/zabi-components-colors.css +2 -2
- package/dist/zabi-components-theme-dark-only.css +139 -92
- package/dist/zabi-components-theme-dark.css +139 -92
- package/dist/zabi-components-theme-only.css +268 -122
- package/dist/zabi-components-theme.css +268 -122
- package/dist/zabi-components.css +831 -883
- package/docs/lucide-icons.md +3 -1
- package/package.json +19 -24
- package/dist/lib/layout-width-tokens.d.ts +0 -17
- package/dist/lib/layout-width-tokens.d.ts.map +0 -1
- package/dist/lib/showcase/component-docs/Button.d.ts +0 -3
- package/dist/lib/showcase/component-docs/Button.d.ts.map +0 -1
- package/dist/lib/showcase/component-docs/Input.d.ts +0 -3
- package/dist/lib/showcase/component-docs/Input.d.ts.map +0 -1
- package/dist/lib/showcase/component-docs/List.d.ts +0 -3
- package/dist/lib/showcase/component-docs/List.d.ts.map +0 -1
- package/dist/lib/showcase/component-docs/Modal.d.ts +0 -3
- package/dist/lib/showcase/component-docs/Modal.d.ts.map +0 -1
- package/dist/lib/showcase/component-docs/Radio.d.ts +0 -3
- package/dist/lib/showcase/component-docs/Radio.d.ts.map +0 -1
- package/dist/lib/showcase/component-docs/SidebarNavigation.d.ts +0 -3
- package/dist/lib/showcase/component-docs/SidebarNavigation.d.ts.map +0 -1
- package/dist/lib/showcase/component-docs/Skeleton.d.ts +0 -3
- package/dist/lib/showcase/component-docs/Skeleton.d.ts.map +0 -1
- package/dist/lib/showcase/component-docs/_shared.d.ts +0 -12
- package/dist/lib/showcase/component-docs/_shared.d.ts.map +0 -1
- package/dist/lib/showcase/component-docs/index.d.ts +0 -4
- package/dist/lib/showcase/component-docs/index.d.ts.map +0 -1
- package/dist/lib/showcase/components-catalog.d.ts +0 -3
- package/dist/lib/showcase/components-catalog.d.ts.map +0 -1
- package/dist/lib/showcase/components-showcase-constants.d.ts +0 -89
- package/dist/lib/showcase/components-showcase-constants.d.ts.map +0 -1
- package/dist/lib/showcase/docs-sidebar-helpers.d.ts +0 -15
- package/dist/lib/showcase/docs-sidebar-helpers.d.ts.map +0 -1
- package/dist/routes/lib/focus-utils.d.ts +0 -12
- package/dist/routes/lib/focus-utils.ts +0 -110
- package/dist/routes/lib/ssr-safe.ts +0 -58
- package/scripts/fix-lucide-svelte-icon-dts.js +0 -35
|
@@ -29,17 +29,17 @@
|
|
|
29
29
|
/* Typography - Nunito Sans font family */
|
|
30
30
|
--font-family-sans: 'Nunito Sans', ui-sans-serif, system-ui, sans-serif
|
|
31
31
|
/* Brand Color Scale ā physical ramp + semantic aliases (same mirror pattern as pine / base) */
|
|
32
|
-
--zabi-brand-50: #
|
|
33
|
-
--zabi-brand-100: #
|
|
34
|
-
--zabi-brand-200: #
|
|
35
|
-
--zabi-brand-300: #
|
|
36
|
-
--zabi-brand-400: #
|
|
37
|
-
--zabi-brand-500: #
|
|
38
|
-
--zabi-brand-600: #
|
|
39
|
-
--zabi-brand-700: #
|
|
40
|
-
--zabi-brand-800: #
|
|
41
|
-
--zabi-brand-900: #
|
|
42
|
-
--zabi-brand-950: #
|
|
32
|
+
--zabi-brand-50: #f4f6ff
|
|
33
|
+
--zabi-brand-100: #e9eeff
|
|
34
|
+
--zabi-brand-200: #d3dcff
|
|
35
|
+
--zabi-brand-300: #b5c6ff
|
|
36
|
+
--zabi-brand-400: #92a9ff
|
|
37
|
+
--zabi-brand-500: #6d87f1
|
|
38
|
+
--zabi-brand-600: #4f68da
|
|
39
|
+
--zabi-brand-700: #3c52ba
|
|
40
|
+
--zabi-brand-800: #2b3e95
|
|
41
|
+
--zabi-brand-900: #1c2c6d
|
|
42
|
+
--zabi-brand-950: #111d49
|
|
43
43
|
--color-brand-50: var(--zabi-brand-50)
|
|
44
44
|
--color-brand-100: var(--zabi-brand-100)
|
|
45
45
|
--color-brand-200: var(--zabi-brand-200)
|
|
@@ -52,17 +52,17 @@
|
|
|
52
52
|
--color-brand-900: var(--zabi-brand-900)
|
|
53
53
|
--color-brand-950: var(--zabi-brand-950)
|
|
54
54
|
/* Citron Color Scale ā physical ramp + semantic aliases (same mirror pattern as pine / base) */
|
|
55
|
-
--zabi-citron-50: #
|
|
56
|
-
--zabi-citron-100: #
|
|
57
|
-
--zabi-citron-200: #
|
|
58
|
-
--zabi-citron-300: #
|
|
59
|
-
--zabi-citron-400: #
|
|
60
|
-
--zabi-citron-500: #
|
|
61
|
-
--zabi-citron-600: #
|
|
62
|
-
--zabi-citron-700: #
|
|
63
|
-
--zabi-citron-800: #
|
|
64
|
-
--zabi-citron-900: #
|
|
65
|
-
--zabi-citron-950: #
|
|
55
|
+
--zabi-citron-50: #f6f7ef
|
|
56
|
+
--zabi-citron-100: #edefdf
|
|
57
|
+
--zabi-citron-200: #dcdfbf
|
|
58
|
+
--zabi-citron-300: #c5ca95
|
|
59
|
+
--zabi-citron-400: #aab063
|
|
60
|
+
--zabi-citron-500: #8c9027
|
|
61
|
+
--zabi-citron-600: #707400
|
|
62
|
+
--zabi-citron-700: #5a5d00
|
|
63
|
+
--zabi-citron-800: #454700
|
|
64
|
+
--zabi-citron-900: #313200
|
|
65
|
+
--zabi-citron-950: #202100
|
|
66
66
|
--color-citron-50: var(--zabi-citron-50)
|
|
67
67
|
--color-citron-100: var(--zabi-citron-100)
|
|
68
68
|
--color-citron-200: var(--zabi-citron-200)
|
|
@@ -75,17 +75,17 @@
|
|
|
75
75
|
--color-citron-900: var(--zabi-citron-900)
|
|
76
76
|
--color-citron-950: var(--zabi-citron-950)
|
|
77
77
|
/* Pine Color Scale ā physical ramp + semantic aliases (mirror pattern matches --zabi-base-* / --color-base-*) */
|
|
78
|
-
--zabi-pine-50: #
|
|
79
|
-
--zabi-pine-100: #
|
|
80
|
-
--zabi-pine-200: #
|
|
81
|
-
--zabi-pine-300: #
|
|
82
|
-
--zabi-pine-400: #
|
|
83
|
-
--zabi-pine-500: #
|
|
84
|
-
--zabi-pine-600: #
|
|
85
|
-
--zabi-pine-700: #
|
|
86
|
-
--zabi-pine-800: #
|
|
87
|
-
--zabi-pine-900: #
|
|
88
|
-
--zabi-pine-950: #
|
|
78
|
+
--zabi-pine-50: #f0f8f5
|
|
79
|
+
--zabi-pine-100: #e2f1eb
|
|
80
|
+
--zabi-pine-200: #c5e4d7
|
|
81
|
+
--zabi-pine-300: #9fd1bd
|
|
82
|
+
--zabi-pine-400: #70ba9e
|
|
83
|
+
--zabi-pine-500: #399c7a
|
|
84
|
+
--zabi-pine-600: #00805e
|
|
85
|
+
--zabi-pine-700: #00674a
|
|
86
|
+
--zabi-pine-800: #004f37
|
|
87
|
+
--zabi-pine-900: #003826
|
|
88
|
+
--zabi-pine-950: #002518
|
|
89
89
|
--color-pine-50: var(--zabi-pine-50)
|
|
90
90
|
--color-pine-100: var(--zabi-pine-100)
|
|
91
91
|
--color-pine-200: var(--zabi-pine-200)
|
|
@@ -98,17 +98,17 @@
|
|
|
98
98
|
--color-pine-900: var(--zabi-pine-900)
|
|
99
99
|
--color-pine-950: var(--zabi-pine-950)
|
|
100
100
|
/* Iris Color Scale ā physical ramp + semantic aliases (same mirror pattern as pine / base) */
|
|
101
|
-
--zabi-iris-50: #
|
|
102
|
-
--zabi-iris-100: #
|
|
103
|
-
--zabi-iris-200: #
|
|
104
|
-
--zabi-iris-300: #
|
|
105
|
-
--zabi-iris-400: #
|
|
106
|
-
--zabi-iris-500: #
|
|
107
|
-
--zabi-iris-600: #
|
|
108
|
-
--zabi-iris-700: #
|
|
109
|
-
--zabi-iris-800: #
|
|
110
|
-
--zabi-iris-900: #
|
|
111
|
-
--zabi-iris-950: #
|
|
101
|
+
--zabi-iris-50: #f6f6fd
|
|
102
|
+
--zabi-iris-100: #ecedfb
|
|
103
|
+
--zabi-iris-200: #dadbf6
|
|
104
|
+
--zabi-iris-300: #c1c4ef
|
|
105
|
+
--zabi-iris-400: #a5a7e2
|
|
106
|
+
--zabi-iris-500: #8486cd
|
|
107
|
+
--zabi-iris-600: #6969b4
|
|
108
|
+
--zabi-iris-700: #535397
|
|
109
|
+
--zabi-iris-800: #3f3f78
|
|
110
|
+
--zabi-iris-900: #2c2c58
|
|
111
|
+
--zabi-iris-950: #1d1d3a
|
|
112
112
|
--color-iris-50: var(--zabi-iris-50)
|
|
113
113
|
--color-iris-100: var(--zabi-iris-100)
|
|
114
114
|
--color-iris-200: var(--zabi-iris-200)
|
|
@@ -121,17 +121,17 @@
|
|
|
121
121
|
--color-iris-900: var(--zabi-iris-900)
|
|
122
122
|
--color-iris-950: var(--zabi-iris-950)
|
|
123
123
|
/* Warning Color Scale ā physical ramp + semantic aliases (Tailwind amber) */
|
|
124
|
-
--zabi-warning-50: #
|
|
125
|
-
--zabi-warning-100: #
|
|
126
|
-
--zabi-warning-200: #
|
|
127
|
-
--zabi-warning-300: #
|
|
128
|
-
--zabi-warning-400: #
|
|
129
|
-
--zabi-warning-500: #
|
|
130
|
-
--zabi-warning-600: #
|
|
131
|
-
--zabi-warning-700: #
|
|
132
|
-
--zabi-warning-800: #
|
|
133
|
-
--zabi-warning-900: #
|
|
134
|
-
--zabi-warning-950: #
|
|
124
|
+
--zabi-warning-50: #fbf6ed
|
|
125
|
+
--zabi-warning-100: #f7ecda
|
|
126
|
+
--zabi-warning-200: #f1d9b6
|
|
127
|
+
--zabi-warning-300: #e8bf87
|
|
128
|
+
--zabi-warning-400: #db9e4c
|
|
129
|
+
--zabi-warning-500: #c17b00
|
|
130
|
+
--zabi-warning-600: #9e6000
|
|
131
|
+
--zabi-warning-700: #824c00
|
|
132
|
+
--zabi-warning-800: #663800
|
|
133
|
+
--zabi-warning-900: #4b2600
|
|
134
|
+
--zabi-warning-950: #341800
|
|
135
135
|
--color-warning-50: var(--zabi-warning-50)
|
|
136
136
|
--color-warning-100: var(--zabi-warning-100)
|
|
137
137
|
--color-warning-200: var(--zabi-warning-200)
|
|
@@ -144,17 +144,17 @@
|
|
|
144
144
|
--color-warning-900: var(--zabi-warning-900)
|
|
145
145
|
--color-warning-950: var(--zabi-warning-950)
|
|
146
146
|
/* Error Color Scale ā physical ramp + semantic aliases (Tailwind red) */
|
|
147
|
-
--zabi-error-50: #
|
|
148
|
-
--zabi-error-100: #
|
|
149
|
-
--zabi-error-200: #
|
|
150
|
-
--zabi-error-300: #
|
|
151
|
-
--zabi-error-400: #
|
|
152
|
-
--zabi-error-500: #
|
|
153
|
-
--zabi-error-600: #
|
|
154
|
-
--zabi-error-700: #
|
|
155
|
-
--zabi-error-800: #
|
|
156
|
-
--zabi-error-900: #
|
|
157
|
-
--zabi-error-950: #
|
|
147
|
+
--zabi-error-50: #fff4f3
|
|
148
|
+
--zabi-error-100: #ffe9e6
|
|
149
|
+
--zabi-error-200: #ffd2cd
|
|
150
|
+
--zabi-error-300: #ffb2ab
|
|
151
|
+
--zabi-error-400: #ff877d
|
|
152
|
+
--zabi-error-500: #ed564e
|
|
153
|
+
--zabi-error-600: #d22828
|
|
154
|
+
--zabi-error-700: #b20912
|
|
155
|
+
--zabi-error-800: #8c0006
|
|
156
|
+
--zabi-error-900: #660002
|
|
157
|
+
--zabi-error-950: #460202
|
|
158
158
|
--color-error-50: var(--zabi-error-50)
|
|
159
159
|
--color-error-100: var(--zabi-error-100)
|
|
160
160
|
--color-error-200: var(--zabi-error-200)
|
|
@@ -189,47 +189,82 @@
|
|
|
189
189
|
--color-base-925: var(--zabi-base-925)
|
|
190
190
|
--color-base-950: var(--zabi-base-950)
|
|
191
191
|
/* Background Colors */
|
|
192
|
-
|
|
192
|
+
/* Surface elevation ā four semantic levels, lowest ā highest.
|
|
193
|
+
* base: page/app shell Ā· raised: cards, panels, sidebars Ā· elevated: nested cards, hover/active fills
|
|
194
|
+
* overlay: modals, sheets, menus, popovers, toasts. Light mode keeps white surfaces + shadows;
|
|
195
|
+
* dark mode (see .dark) steps each level up in OKLCH lightness because shadows don't read on dark.
|
|
196
|
+
* Keep this block BELOW the "Background Colors" marker: scripts/sync-theme-tokens.js regenerates
|
|
197
|
+
* everything between the base-scale aliases and that marker. */
|
|
198
|
+
--color-surface-base: var(--color-base-100)
|
|
199
|
+
--color-surface-raised: #ffffff
|
|
200
|
+
--color-surface-elevated: var(--color-base-50)
|
|
201
|
+
--color-surface-overlay: #ffffff
|
|
202
|
+
/* Hover/active fill for rows and icon buttons inside an overlay (must read above the overlay) */
|
|
203
|
+
--color-surface-overlay-hover: var(--color-base-100)
|
|
204
|
+
/* 1px edge for overlays: invisible in light (shadow carries elevation), visible in dark */
|
|
205
|
+
--color-border-overlay: transparent
|
|
206
|
+
--color-background: var(--color-surface-base)
|
|
193
207
|
--color-background-secondary: var(--color-base-50)
|
|
194
208
|
--color-background-tertiary: var(--color-base-100)
|
|
195
209
|
/* Page Colors */
|
|
196
210
|
--color-page: var(--color-base-100)
|
|
197
211
|
--color-page-secondary: var(--color-base-200)
|
|
198
|
-
/* Card Colors */
|
|
199
|
-
--color-card:
|
|
212
|
+
/* Card Colors ā aliases of the surface levels (kept for compatibility) */
|
|
213
|
+
--color-card: var(--color-surface-raised)
|
|
200
214
|
--color-card-hover: var(--color-base-100)
|
|
201
215
|
--color-card-active: var(--color-base-100)
|
|
202
|
-
--color-card-elevated:
|
|
203
|
-
/* Surfaces ā
|
|
204
|
-
--color-surface-1:
|
|
205
|
-
--color-surface-2: var(--color-
|
|
216
|
+
--color-card-elevated: var(--color-surface-overlay)
|
|
217
|
+
/* Surfaces ā numbered aliases (kept for compatibility; prefer surface-base/raised/elevated/overlay) */
|
|
218
|
+
--color-surface-1: var(--color-surface-raised)
|
|
219
|
+
--color-surface-2: var(--color-surface-elevated)
|
|
206
220
|
--color-surface-3: var(--color-base-75)
|
|
207
221
|
--color-surface-4: var(--color-base-100)
|
|
222
|
+
/* Control track ā the unselected rail of a Toggle or switch. A real token
|
|
223
|
+
* rather than a raw ramp step, so the hover/active direction is defined once
|
|
224
|
+
* and inverts correctly with the theme. */
|
|
225
|
+
--color-control-track: var(--color-base-400)
|
|
226
|
+
--color-control-track-hover: var(--color-base-450)
|
|
227
|
+
--color-control-track-active: var(--color-base-500)
|
|
228
|
+
/* Interaction fills ā surface-relative on purpose.
|
|
229
|
+
* A hard-coded ramp step (e.g. base-100) can coincide exactly with the
|
|
230
|
+
* surface it sits on, which is how ghost hover became invisible: in dark
|
|
231
|
+
* mode --color-base-100 IS --color-surface-base. An alpha tint is always
|
|
232
|
+
* one step away from whatever is underneath it. */
|
|
233
|
+
--color-surface-hover: rgba(9, 9, 11, 0.06)
|
|
234
|
+
--color-surface-active: rgba(9, 9, 11, 0.11)
|
|
208
235
|
/* Overlay Colors */
|
|
209
236
|
--color-overlay: rgba(0, 0, 0, 0.5)
|
|
210
|
-
/* Input Colors
|
|
211
|
-
|
|
237
|
+
/* Input Colors
|
|
238
|
+
* The field is a RAISED surface, not a grey well ā a grey fill on a grey
|
|
239
|
+
* page reads as disabled. The disabled state is the only grey field. */
|
|
240
|
+
--color-input: var(--color-surface-raised)
|
|
212
241
|
--color-input-border: var(--color-base-350)
|
|
213
|
-
--color-input-hover: var(--color-base-
|
|
214
|
-
--color-input-focus: var(--color-
|
|
242
|
+
--color-input-hover: var(--color-base-150)
|
|
243
|
+
--color-input-focus: var(--color-surface-raised)
|
|
215
244
|
--color-input-disabled: var(--color-base-100)
|
|
216
245
|
/* Text Colors */
|
|
217
246
|
--color-headline: var(--color-base-900)
|
|
218
247
|
--color-body: var(--color-base-800)
|
|
219
248
|
--color-description: var(--color-base-600)
|
|
220
|
-
--color-caption: var(--color-base-
|
|
221
|
-
|
|
249
|
+
--color-caption: var(--color-base-550)
|
|
250
|
+
/* ā„ 4.5:1 on every surface level (base-500 was 4.40 on surface-base) */
|
|
251
|
+
--color-input-placeholder: var(--color-base-500)
|
|
222
252
|
--color-label: var(--color-base-700)
|
|
223
|
-
|
|
224
|
-
|
|
253
|
+
/* brand-600 clears 4.5:1 on a card but only 4.42:1 on the page surface, so
|
|
254
|
+
* links sit one step darker. */
|
|
255
|
+
--color-link: var(--color-brand-700)
|
|
256
|
+
--color-link-hover: var(--color-brand-800)
|
|
225
257
|
/* Navigation menu item ā menubar triggers, menu links, inline/sidebar nav rows */
|
|
226
258
|
--color-nav-menu-item: var(--color-body)
|
|
227
259
|
--color-nav-menu-item-hover: var(--color-headline)
|
|
228
260
|
--color-nav-menu-item-active: var(--color-link)
|
|
229
|
-
|
|
261
|
+
/* Surface-relative on purpose: base-100 IS surface-base in both themes,
|
|
262
|
+
* so the old value made sidebar row hover do nothing at all. */
|
|
263
|
+
--color-nav-menu-hover: var(--color-surface-hover)
|
|
230
264
|
--color-nav-menu-active: var(--color-action-primary-subtle)
|
|
265
|
+
--color-nav-menu-active-hover: var(--color-action-primary-subtle-hover)
|
|
231
266
|
--color-nav-menu-focus: var(--color-brand-500)
|
|
232
|
-
--color-success-text: var(--color-
|
|
267
|
+
--color-success-text: var(--color-pine-700)
|
|
233
268
|
--color-warning-text: var(--color-warning-700)
|
|
234
269
|
--color-neutral-text: var(--color-base-700)
|
|
235
270
|
--color-energetic-text: var(--color-citron-700)
|
|
@@ -259,65 +294,125 @@
|
|
|
259
294
|
--color-secondary-weak: var(--color-base-700)
|
|
260
295
|
--color-secondary-medium: var(--color-base-800)
|
|
261
296
|
--color-secondary-strong: var(--color-base-900)
|
|
297
|
+
/* ----------------------------------------------------------------
|
|
298
|
+
* SEMANTIC FAMILIES
|
|
299
|
+
* Every family resolves to the SAME step on the shared lightness curve, so
|
|
300
|
+
* success / warning / error / info / energetic / neutral read as one family.
|
|
301
|
+
* See tokens/chromatic-scales.js; enforced by check-ramp-lightness.js.
|
|
302
|
+
*
|
|
303
|
+
* <family> step 600 solid fill (>= 4.5:1 with white)
|
|
304
|
+
* <family>-weak step 700 pressed / emphasis
|
|
305
|
+
* <family>-medium step 800 strongest fill
|
|
306
|
+
* <family>-strong step 900 darkest
|
|
307
|
+
* <family>-subtle step 100 tinted fill (badges, alerts)
|
|
308
|
+
* <family>-border step 200 tinted edge
|
|
309
|
+
* <family>-text step 700 text on a subtle fill or a page surface
|
|
310
|
+
*
|
|
311
|
+
* Warning, error and energetic previously sat at step 500 ā the mirror's
|
|
312
|
+
* fixed point ā so they did not invert between themes at all, while success
|
|
313
|
+
* and info did. That is why a solid warning badge was 2.15:1 in light mode
|
|
314
|
+
* and fine in dark.
|
|
315
|
+
* ---------------------------------------------------------------- */
|
|
262
316
|
/* Success Colors */
|
|
263
317
|
--color-success: var(--color-pine-600)
|
|
264
318
|
--color-success-weak: var(--color-pine-700)
|
|
265
319
|
--color-success-medium: var(--color-pine-800)
|
|
266
320
|
--color-success-strong: var(--color-pine-900)
|
|
321
|
+
--color-success-subtle: var(--color-pine-100)
|
|
322
|
+
--color-success-border: var(--color-pine-200)
|
|
267
323
|
/* Warning Colors */
|
|
268
|
-
--color-warning: var(--color-warning-
|
|
269
|
-
--color-warning-weak: var(--color-warning-
|
|
270
|
-
--color-warning-medium: var(--color-warning-
|
|
271
|
-
--color-warning-strong: var(--color-warning-
|
|
324
|
+
--color-warning: var(--color-warning-600)
|
|
325
|
+
--color-warning-weak: var(--color-warning-700)
|
|
326
|
+
--color-warning-medium: var(--color-warning-800)
|
|
327
|
+
--color-warning-strong: var(--color-warning-900)
|
|
328
|
+
--color-warning-subtle: var(--color-warning-100)
|
|
329
|
+
--color-warning-border: var(--color-warning-200)
|
|
272
330
|
/* Error Colors */
|
|
273
|
-
--color-error: var(--color-error-
|
|
274
|
-
--color-error-weak: var(--color-error-
|
|
275
|
-
--color-error-medium: var(--color-error-
|
|
276
|
-
--color-error-strong: var(--color-error-
|
|
331
|
+
--color-error: var(--color-error-600)
|
|
332
|
+
--color-error-weak: var(--color-error-700)
|
|
333
|
+
--color-error-medium: var(--color-error-800)
|
|
334
|
+
--color-error-strong: var(--color-error-900)
|
|
335
|
+
--color-error-subtle: var(--color-error-100)
|
|
336
|
+
--color-error-border: var(--color-error-200)
|
|
277
337
|
/* Energetic Colors (Citron) */
|
|
278
|
-
--color-energetic: var(--color-citron-
|
|
279
|
-
--color-energetic-weak: var(--color-citron-
|
|
280
|
-
--color-energetic-medium: var(--color-citron-
|
|
281
|
-
--color-energetic-strong: var(--color-citron-
|
|
282
|
-
|
|
283
|
-
--color-
|
|
284
|
-
|
|
285
|
-
|
|
338
|
+
--color-energetic: var(--color-citron-600)
|
|
339
|
+
--color-energetic-weak: var(--color-citron-700)
|
|
340
|
+
--color-energetic-medium: var(--color-citron-800)
|
|
341
|
+
--color-energetic-strong: var(--color-citron-900)
|
|
342
|
+
--color-energetic-subtle: var(--color-citron-100)
|
|
343
|
+
--color-energetic-border: var(--color-citron-200)
|
|
344
|
+
/* Neutral Colors
|
|
345
|
+
* The base ramp is wider than the chromatic ones on purpose (it also drives
|
|
346
|
+
* text, borders and surfaces), so neutral cannot sit on exactly the same
|
|
347
|
+
* step. base-550 is the closest match to the chromatic 600s that still
|
|
348
|
+
* clears AA; .dark pins base-600, because base-500 is the mirror's fixed
|
|
349
|
+
* point and would not invert at all. */
|
|
350
|
+
--color-neutral: var(--color-base-550)
|
|
351
|
+
--color-neutral-weak: var(--color-base-600)
|
|
352
|
+
--color-neutral-medium: var(--color-base-700)
|
|
286
353
|
--color-neutral-strong: var(--color-base-900)
|
|
354
|
+
/* base-200, not base-100: base-100 IS surface-base, which made a neutral
|
|
355
|
+
* badge measure 1.00:1 against the page and read as bare text. */
|
|
356
|
+
--color-neutral-subtle: var(--color-base-200)
|
|
357
|
+
--color-neutral-border: var(--color-base-200)
|
|
287
358
|
/* Info Colors */
|
|
288
359
|
--color-info: var(--color-iris-600)
|
|
289
360
|
--color-info-weak: var(--color-iris-700)
|
|
290
361
|
--color-info-medium: var(--color-iris-800)
|
|
291
362
|
--color-info-strong: var(--color-iris-900)
|
|
292
363
|
--color-info-active: var(--color-iris-400)
|
|
364
|
+
--color-info-subtle: var(--color-iris-100)
|
|
365
|
+
--color-info-border: var(--color-iris-200)
|
|
293
366
|
/* Text alias */
|
|
294
|
-
--color-info-text: var(--color-
|
|
367
|
+
--color-info-text: var(--color-iris-700)
|
|
295
368
|
/* ========================================
|
|
296
369
|
ACTION COLORS - For interactive elements (buttons, links, etc.)
|
|
297
370
|
======================================== */
|
|
298
|
-
/* Primary Actions - Used by bg-action-primary utility class
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
371
|
+
/* Primary Actions - Used by bg-action-primary utility class
|
|
372
|
+
* šÆ TO CHANGE bg-action-primary COLOR: edit --color-action-primary below.
|
|
373
|
+
*
|
|
374
|
+
* Primary is brand-600 ā the product actually looks like its brand. Hover
|
|
375
|
+
* and active go one and two steps DARKER in light mode; the .dark mirror
|
|
376
|
+
* flips that to lighter automatically, so "more pressed" always means "more
|
|
377
|
+
* contrast against the page" in both themes. Never point active at a step on
|
|
378
|
+
* the far side of the ramp: active used to be brand-400 against a brand-50
|
|
379
|
+
* label, which is 1.66:1 ā the label vanished while the button was held. */
|
|
380
|
+
--color-action-primary: var(--color-brand-600)
|
|
381
|
+
--color-action-primary-hover: var(--color-brand-700)
|
|
382
|
+
--color-action-primary-active: var(--color-brand-800)
|
|
304
383
|
--color-action-primary-subtle: var(--color-brand-100)
|
|
305
384
|
--color-action-primary-subtle-hover: var(--color-brand-200)
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
--color-action-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
--color-action-
|
|
316
|
-
--color-action-
|
|
317
|
-
--color-action-
|
|
318
|
-
--color-action-
|
|
319
|
-
--color-action-
|
|
320
|
-
|
|
385
|
+
/* Pinned rather than aliased to brand-50: the ramp's lightest tint lands at
|
|
386
|
+
* exactly 4.50:1 on brand-600 ā passing, but with no margin. Pure white
|
|
387
|
+
* gives 4.86:1. The .dark block pins the inverse. */
|
|
388
|
+
--color-action-primary-text: #ffffff
|
|
389
|
+
/* Secondary Actions - Used by bg-action-secondary utility class
|
|
390
|
+
* A neutral alpha tint: reads as a real button on any surface level, and
|
|
391
|
+
* cannot collide with the background the way a fixed ramp step can. The old
|
|
392
|
+
* 10%-brand wash was so pale it barely registered as a control. */
|
|
393
|
+
--color-action-secondary: rgba(9, 9, 11, 0.07)
|
|
394
|
+
--color-action-secondary-hover: rgba(9, 9, 11, 0.12)
|
|
395
|
+
--color-action-secondary-active: rgba(9, 9, 11, 0.17)
|
|
396
|
+
--color-action-secondary-subtle: var(--color-base-100)
|
|
397
|
+
--color-action-secondary-subtle-hover: var(--color-base-200)
|
|
398
|
+
--color-action-secondary-text: var(--color-headline)
|
|
399
|
+
/* Disabled Actions - shared by every variant.
|
|
400
|
+
* Disabled must be the QUIETEST state, never a brighter colour than the
|
|
401
|
+
* enabled secondary. It used to be brand-500 plus opacity-50, which made a
|
|
402
|
+
* disabled primary lighter and more colourful than an enabled secondary. */
|
|
403
|
+
--color-action-disabled: var(--color-base-200)
|
|
404
|
+
--color-action-disabled-text: var(--color-base-500)
|
|
405
|
+
--color-action-disabled-border: var(--color-base-250)
|
|
406
|
+
/* Danger Actions - Used by bg-action-danger utility class.
|
|
407
|
+
* Same ramp step as every other family, so the destructive action no longer
|
|
408
|
+
* out-shouts the primary one. The bright red is spent on hover, where the
|
|
409
|
+
* user is already committing. */
|
|
410
|
+
--color-action-danger: var(--color-error-600)
|
|
411
|
+
--color-action-danger-hover: var(--color-error-700)
|
|
412
|
+
--color-action-danger-active: var(--color-error-800)
|
|
413
|
+
--color-action-danger-subtle: var(--color-error-100)
|
|
414
|
+
--color-action-danger-subtle-hover: var(--color-error-200)
|
|
415
|
+
--color-action-danger-text: var(--color-error-50)
|
|
321
416
|
/* Shadow Colors */
|
|
322
417
|
--shadow-color: 0 0 0
|
|
323
418
|
--shadow-opacity: 0.1
|
|
@@ -332,11 +427,62 @@
|
|
|
332
427
|
--spacing-lg: 1.5rem
|
|
333
428
|
--spacing-xl: 2rem
|
|
334
429
|
--spacing-2xl: 3rem
|
|
335
|
-
/*
|
|
430
|
+
/*
|
|
431
|
+
* Sizing names for w-* / min-w-* / max-w-*.
|
|
432
|
+
* Tailwind v4 resolves these utilities as --max-width-* (or --width-* / --min-width-*) ā --spacing-* ā --container-*.
|
|
433
|
+
* Because the named --spacing-xsā¦2xl tokens above exist, `max-w-lg` would otherwise resolve to 1.5rem
|
|
434
|
+
* instead of Tailwind's 32rem container size. These keys are checked before --spacing-*, so they restore
|
|
435
|
+
* the standard container scale while `p-lg`, `gap-md`, etc. keep using the spacing tokens.
|
|
436
|
+
*/
|
|
437
|
+
--max-width-xs: 20rem
|
|
438
|
+
--max-width-sm: 24rem
|
|
439
|
+
--max-width-md: 28rem
|
|
440
|
+
--max-width-lg: 32rem
|
|
441
|
+
--max-width-xl: 36rem
|
|
442
|
+
--max-width-2xl: 42rem
|
|
443
|
+
--width-xs: 20rem
|
|
444
|
+
--width-sm: 24rem
|
|
445
|
+
--width-md: 28rem
|
|
446
|
+
--width-lg: 32rem
|
|
447
|
+
--width-xl: 36rem
|
|
448
|
+
--width-2xl: 42rem
|
|
449
|
+
--min-width-xs: 20rem
|
|
450
|
+
--min-width-sm: 24rem
|
|
451
|
+
--min-width-md: 28rem
|
|
452
|
+
--min-width-lg: 32rem
|
|
453
|
+
--min-width-xl: 36rem
|
|
454
|
+
--min-width-2xl: 42rem
|
|
455
|
+
/* ----------------------------------------------------------------
|
|
456
|
+
* BORDER RADIUS ā four values, chosen by ROLE, never by size.
|
|
457
|
+
* A large button is a bigger box with the same corner as a small one.
|
|
458
|
+
* Enforced by scripts/check-control-geometry.js.
|
|
459
|
+
* ---------------------------------------------------------------- */
|
|
460
|
+
--radius-control: 0.5rem
|
|
461
|
+
/* 8px ā buttons, inputs, selects, toggles */
|
|
462
|
+
--radius-container: 0.75rem
|
|
463
|
+
/* 12px ā cards, alerts, panels, list items */
|
|
464
|
+
--radius-overlay: 1rem
|
|
465
|
+
/* 16px ā modals, sheets, menus, popovers */
|
|
466
|
+
--radius-pill: 9999px
|
|
467
|
+
/* badges, avatars, status dots */
|
|
468
|
+
/* Legacy t-shirt radii. Kept so existing consumer overrides keep working;
|
|
469
|
+
* components must not use them. */
|
|
336
470
|
--radius-sm: 0.25rem
|
|
337
471
|
--radius-md: 0.375rem
|
|
338
472
|
--radius-lg: 0.5rem
|
|
339
473
|
--radius-xl: 0.75rem
|
|
474
|
+
/* ----------------------------------------------------------------
|
|
475
|
+
* CONTROL GEOMETRY ā one height scale shared by every form control, so a
|
|
476
|
+
* Button, Input, Select and IconButton of the same size are the same height
|
|
477
|
+
* and line up in a row. They previously rendered at 40/48/64, 38/46/50 and
|
|
478
|
+
* 32/40/48 respectively. Grid-aligned (8px).
|
|
479
|
+
* ---------------------------------------------------------------- */
|
|
480
|
+
--control-height-sm: 2rem
|
|
481
|
+
/* 32px */
|
|
482
|
+
--control-height-md: 2.5rem
|
|
483
|
+
/* 40px */
|
|
484
|
+
--control-height-lg: 3rem
|
|
485
|
+
/* 48px */
|
|
340
486
|
/* Z-index */
|
|
341
487
|
--z-dropdown: 1000
|
|
342
488
|
--z-sticky: 1020
|