zabi-components 7.0.1 ā 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 +89 -57
- 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 +3 -437
- package/dist/zabi-components-theme-dark-only.css +223 -103
- package/dist/zabi-components-theme-dark.css +223 -103
- package/dist/zabi-components-theme-only.css +347 -107
- package/dist/zabi-components-theme.css +347 -107
- package/dist/zabi-components.css +953 -843
- package/docs/lucide-icons.md +3 -1
- package/package.json +20 -25
- 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
|
@@ -28,54 +28,144 @@
|
|
|
28
28
|
--zabi-base-950: #09090b
|
|
29
29
|
/* Typography - Nunito Sans font family */
|
|
30
30
|
--font-family-sans: 'Nunito Sans', ui-sans-serif, system-ui, sans-serif
|
|
31
|
-
/* Brand Color Scale */
|
|
32
|
-
--
|
|
33
|
-
--
|
|
34
|
-
--
|
|
35
|
-
--
|
|
36
|
-
--
|
|
37
|
-
--
|
|
38
|
-
--
|
|
39
|
-
--
|
|
40
|
-
--
|
|
41
|
-
--
|
|
42
|
-
--
|
|
43
|
-
|
|
44
|
-
--color-
|
|
45
|
-
--color-
|
|
46
|
-
--color-
|
|
47
|
-
--color-
|
|
48
|
-
--color-
|
|
49
|
-
--color-
|
|
50
|
-
--color-
|
|
51
|
-
--color-
|
|
52
|
-
--color-
|
|
53
|
-
--color-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
--
|
|
57
|
-
--
|
|
58
|
-
--
|
|
59
|
-
--
|
|
60
|
-
--
|
|
61
|
-
--
|
|
62
|
-
--
|
|
63
|
-
--
|
|
64
|
-
--
|
|
65
|
-
--
|
|
66
|
-
--color-
|
|
67
|
-
|
|
68
|
-
--color-
|
|
69
|
-
--color-
|
|
70
|
-
--color-
|
|
71
|
-
--color-
|
|
72
|
-
--color-
|
|
73
|
-
--color-
|
|
74
|
-
--color-
|
|
75
|
-
--color-
|
|
76
|
-
--color-
|
|
77
|
-
--color-
|
|
78
|
-
--
|
|
31
|
+
/* Brand Color Scale ā physical ramp + semantic aliases (same mirror pattern as pine / base) */
|
|
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
|
+
--color-brand-50: var(--zabi-brand-50)
|
|
44
|
+
--color-brand-100: var(--zabi-brand-100)
|
|
45
|
+
--color-brand-200: var(--zabi-brand-200)
|
|
46
|
+
--color-brand-300: var(--zabi-brand-300)
|
|
47
|
+
--color-brand-400: var(--zabi-brand-400)
|
|
48
|
+
--color-brand-500: var(--zabi-brand-500)
|
|
49
|
+
--color-brand-600: var(--zabi-brand-600)
|
|
50
|
+
--color-brand-700: var(--zabi-brand-700)
|
|
51
|
+
--color-brand-800: var(--zabi-brand-800)
|
|
52
|
+
--color-brand-900: var(--zabi-brand-900)
|
|
53
|
+
--color-brand-950: var(--zabi-brand-950)
|
|
54
|
+
/* Citron Color Scale ā physical ramp + semantic aliases (same mirror pattern as pine / base) */
|
|
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
|
+
--color-citron-50: var(--zabi-citron-50)
|
|
67
|
+
--color-citron-100: var(--zabi-citron-100)
|
|
68
|
+
--color-citron-200: var(--zabi-citron-200)
|
|
69
|
+
--color-citron-300: var(--zabi-citron-300)
|
|
70
|
+
--color-citron-400: var(--zabi-citron-400)
|
|
71
|
+
--color-citron-500: var(--zabi-citron-500)
|
|
72
|
+
--color-citron-600: var(--zabi-citron-600)
|
|
73
|
+
--color-citron-700: var(--zabi-citron-700)
|
|
74
|
+
--color-citron-800: var(--zabi-citron-800)
|
|
75
|
+
--color-citron-900: var(--zabi-citron-900)
|
|
76
|
+
--color-citron-950: var(--zabi-citron-950)
|
|
77
|
+
/* Pine Color Scale ā physical ramp + semantic aliases (mirror pattern matches --zabi-base-* / --color-base-*) */
|
|
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
|
+
--color-pine-50: var(--zabi-pine-50)
|
|
90
|
+
--color-pine-100: var(--zabi-pine-100)
|
|
91
|
+
--color-pine-200: var(--zabi-pine-200)
|
|
92
|
+
--color-pine-300: var(--zabi-pine-300)
|
|
93
|
+
--color-pine-400: var(--zabi-pine-400)
|
|
94
|
+
--color-pine-500: var(--zabi-pine-500)
|
|
95
|
+
--color-pine-600: var(--zabi-pine-600)
|
|
96
|
+
--color-pine-700: var(--zabi-pine-700)
|
|
97
|
+
--color-pine-800: var(--zabi-pine-800)
|
|
98
|
+
--color-pine-900: var(--zabi-pine-900)
|
|
99
|
+
--color-pine-950: var(--zabi-pine-950)
|
|
100
|
+
/* Iris Color Scale ā physical ramp + semantic aliases (same mirror pattern as pine / base) */
|
|
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
|
+
--color-iris-50: var(--zabi-iris-50)
|
|
113
|
+
--color-iris-100: var(--zabi-iris-100)
|
|
114
|
+
--color-iris-200: var(--zabi-iris-200)
|
|
115
|
+
--color-iris-300: var(--zabi-iris-300)
|
|
116
|
+
--color-iris-400: var(--zabi-iris-400)
|
|
117
|
+
--color-iris-500: var(--zabi-iris-500)
|
|
118
|
+
--color-iris-600: var(--zabi-iris-600)
|
|
119
|
+
--color-iris-700: var(--zabi-iris-700)
|
|
120
|
+
--color-iris-800: var(--zabi-iris-800)
|
|
121
|
+
--color-iris-900: var(--zabi-iris-900)
|
|
122
|
+
--color-iris-950: var(--zabi-iris-950)
|
|
123
|
+
/* Warning Color Scale ā physical ramp + semantic aliases (Tailwind amber) */
|
|
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
|
+
--color-warning-50: var(--zabi-warning-50)
|
|
136
|
+
--color-warning-100: var(--zabi-warning-100)
|
|
137
|
+
--color-warning-200: var(--zabi-warning-200)
|
|
138
|
+
--color-warning-300: var(--zabi-warning-300)
|
|
139
|
+
--color-warning-400: var(--zabi-warning-400)
|
|
140
|
+
--color-warning-500: var(--zabi-warning-500)
|
|
141
|
+
--color-warning-600: var(--zabi-warning-600)
|
|
142
|
+
--color-warning-700: var(--zabi-warning-700)
|
|
143
|
+
--color-warning-800: var(--zabi-warning-800)
|
|
144
|
+
--color-warning-900: var(--zabi-warning-900)
|
|
145
|
+
--color-warning-950: var(--zabi-warning-950)
|
|
146
|
+
/* Error Color Scale ā physical ramp + semantic aliases (Tailwind red) */
|
|
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
|
+
--color-error-50: var(--zabi-error-50)
|
|
159
|
+
--color-error-100: var(--zabi-error-100)
|
|
160
|
+
--color-error-200: var(--zabi-error-200)
|
|
161
|
+
--color-error-300: var(--zabi-error-300)
|
|
162
|
+
--color-error-400: var(--zabi-error-400)
|
|
163
|
+
--color-error-500: var(--zabi-error-500)
|
|
164
|
+
--color-error-600: var(--zabi-error-600)
|
|
165
|
+
--color-error-700: var(--zabi-error-700)
|
|
166
|
+
--color-error-800: var(--zabi-error-800)
|
|
167
|
+
--color-error-900: var(--zabi-error-900)
|
|
168
|
+
--color-error-950: var(--zabi-error-950)
|
|
79
169
|
/* Base Color Scale ā semantic tokens alias the physical ramp (light: 1:1) */
|
|
80
170
|
--color-base-50: var(--zabi-base-50)
|
|
81
171
|
--color-base-75: var(--zabi-base-75)
|
|
@@ -99,52 +189,87 @@
|
|
|
99
189
|
--color-base-925: var(--zabi-base-925)
|
|
100
190
|
--color-base-950: var(--zabi-base-950)
|
|
101
191
|
/* Background Colors */
|
|
102
|
-
|
|
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)
|
|
103
207
|
--color-background-secondary: var(--color-base-50)
|
|
104
208
|
--color-background-tertiary: var(--color-base-100)
|
|
105
209
|
/* Page Colors */
|
|
106
210
|
--color-page: var(--color-base-100)
|
|
107
211
|
--color-page-secondary: var(--color-base-200)
|
|
108
|
-
/* Card Colors */
|
|
109
|
-
--color-card:
|
|
212
|
+
/* Card Colors ā aliases of the surface levels (kept for compatibility) */
|
|
213
|
+
--color-card: var(--color-surface-raised)
|
|
110
214
|
--color-card-hover: var(--color-base-100)
|
|
111
215
|
--color-card-active: var(--color-base-100)
|
|
112
|
-
--color-card-elevated:
|
|
113
|
-
/* Surfaces ā
|
|
114
|
-
--color-surface-1:
|
|
115
|
-
--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)
|
|
116
220
|
--color-surface-3: var(--color-base-75)
|
|
117
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)
|
|
118
235
|
/* Overlay Colors */
|
|
119
236
|
--color-overlay: rgba(0, 0, 0, 0.5)
|
|
120
|
-
/* Input Colors
|
|
121
|
-
|
|
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)
|
|
122
241
|
--color-input-border: var(--color-base-350)
|
|
123
|
-
--color-input-hover: var(--color-base-
|
|
124
|
-
--color-input-focus: var(--color-
|
|
242
|
+
--color-input-hover: var(--color-base-150)
|
|
243
|
+
--color-input-focus: var(--color-surface-raised)
|
|
125
244
|
--color-input-disabled: var(--color-base-100)
|
|
126
245
|
/* Text Colors */
|
|
127
246
|
--color-headline: var(--color-base-900)
|
|
128
247
|
--color-body: var(--color-base-800)
|
|
129
248
|
--color-description: var(--color-base-600)
|
|
130
|
-
--color-caption: var(--color-base-
|
|
131
|
-
|
|
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)
|
|
132
252
|
--color-label: var(--color-base-700)
|
|
133
|
-
|
|
134
|
-
|
|
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)
|
|
135
257
|
/* Navigation menu item ā menubar triggers, menu links, inline/sidebar nav rows */
|
|
136
258
|
--color-nav-menu-item: var(--color-body)
|
|
137
259
|
--color-nav-menu-item-hover: var(--color-headline)
|
|
138
260
|
--color-nav-menu-item-active: var(--color-link)
|
|
139
|
-
|
|
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)
|
|
140
264
|
--color-nav-menu-active: var(--color-action-primary-subtle)
|
|
265
|
+
--color-nav-menu-active-hover: var(--color-action-primary-subtle-hover)
|
|
141
266
|
--color-nav-menu-focus: var(--color-brand-500)
|
|
142
|
-
--color-success-text: var(--color-
|
|
143
|
-
--color-warning-text:
|
|
267
|
+
--color-success-text: var(--color-pine-700)
|
|
268
|
+
--color-warning-text: var(--color-warning-700)
|
|
144
269
|
--color-neutral-text: var(--color-base-700)
|
|
145
270
|
--color-energetic-text: var(--color-citron-700)
|
|
146
|
-
--color-error-text:
|
|
147
|
-
--color-inverse:
|
|
271
|
+
--color-error-text: var(--color-error-700)
|
|
272
|
+
--color-inverse: var(--color-base-100)
|
|
148
273
|
--color-disabled: var(--color-base-400)
|
|
149
274
|
/* Border Colors */
|
|
150
275
|
--color-border: var(--color-base-300)
|
|
@@ -169,64 +294,125 @@
|
|
|
169
294
|
--color-secondary-weak: var(--color-base-700)
|
|
170
295
|
--color-secondary-medium: var(--color-base-800)
|
|
171
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
|
+
* ---------------------------------------------------------------- */
|
|
172
316
|
/* Success Colors */
|
|
173
317
|
--color-success: var(--color-pine-600)
|
|
174
318
|
--color-success-weak: var(--color-pine-700)
|
|
175
319
|
--color-success-medium: var(--color-pine-800)
|
|
176
320
|
--color-success-strong: var(--color-pine-900)
|
|
321
|
+
--color-success-subtle: var(--color-pine-100)
|
|
322
|
+
--color-success-border: var(--color-pine-200)
|
|
177
323
|
/* Warning Colors */
|
|
178
|
-
--color-warning:
|
|
179
|
-
--color-warning-weak:
|
|
180
|
-
--color-warning-medium:
|
|
181
|
-
--color-warning-strong:
|
|
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)
|
|
182
330
|
/* Error Colors */
|
|
183
|
-
--color-error:
|
|
184
|
-
--color-error-weak:
|
|
185
|
-
--color-error-medium:
|
|
186
|
-
--color-error-strong:
|
|
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)
|
|
187
337
|
/* Energetic Colors (Citron) */
|
|
188
|
-
--color-energetic: var(--color-citron-
|
|
189
|
-
--color-energetic-weak: var(--color-citron-
|
|
190
|
-
--color-energetic-medium: var(--color-citron-
|
|
191
|
-
--color-energetic-strong: var(--color-citron-
|
|
192
|
-
|
|
193
|
-
--color-
|
|
194
|
-
|
|
195
|
-
|
|
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)
|
|
196
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)
|
|
197
358
|
/* Info Colors */
|
|
198
359
|
--color-info: var(--color-iris-600)
|
|
199
360
|
--color-info-weak: var(--color-iris-700)
|
|
200
361
|
--color-info-medium: var(--color-iris-800)
|
|
201
362
|
--color-info-strong: var(--color-iris-900)
|
|
363
|
+
--color-info-active: var(--color-iris-400)
|
|
364
|
+
--color-info-subtle: var(--color-iris-100)
|
|
365
|
+
--color-info-border: var(--color-iris-200)
|
|
202
366
|
/* Text alias */
|
|
203
|
-
--color-info-text: var(--color-
|
|
367
|
+
--color-info-text: var(--color-iris-700)
|
|
204
368
|
/* ========================================
|
|
205
369
|
ACTION COLORS - For interactive elements (buttons, links, etc.)
|
|
206
370
|
======================================== */
|
|
207
|
-
/* Primary Actions - Used by bg-action-primary utility class
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
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)
|
|
213
383
|
--color-action-primary-subtle: var(--color-brand-100)
|
|
214
384
|
--color-action-primary-subtle-hover: var(--color-brand-200)
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
--color-action-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
--color-action-
|
|
225
|
-
--color-action-
|
|
226
|
-
--color-action-
|
|
227
|
-
--color-action-
|
|
228
|
-
--color-action-
|
|
229
|
-
|
|
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)
|
|
230
416
|
/* Shadow Colors */
|
|
231
417
|
--shadow-color: 0 0 0
|
|
232
418
|
--shadow-opacity: 0.1
|
|
@@ -241,11 +427,62 @@
|
|
|
241
427
|
--spacing-lg: 1.5rem
|
|
242
428
|
--spacing-xl: 2rem
|
|
243
429
|
--spacing-2xl: 3rem
|
|
244
|
-
/*
|
|
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. */
|
|
245
470
|
--radius-sm: 0.25rem
|
|
246
471
|
--radius-md: 0.375rem
|
|
247
472
|
--radius-lg: 0.5rem
|
|
248
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 */
|
|
249
486
|
/* Z-index */
|
|
250
487
|
--z-dropdown: 1000
|
|
251
488
|
--z-sticky: 1020
|
|
@@ -255,4 +492,7 @@
|
|
|
255
492
|
--z-popover: 1060
|
|
256
493
|
--z-tooltip: 1070
|
|
257
494
|
--z-toast: 1080
|
|
495
|
+
/* Tooltip ā elevated hint surface (Tooltip.svelte); arrow uses --color-tooltip-bg */
|
|
496
|
+
--color-tooltip-bg: var(--color-base-800)
|
|
497
|
+
--color-tooltip-fg: var(--color-base-50)
|
|
258
498
|
}
|