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