@alessandrogiordano/stk 1.1.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 ADDED
@@ -0,0 +1,100 @@
1
+ # Design System
2
+
3
+ Token-based design system con OKLCH color shades e Storybook React.
4
+
5
+ ## Struttura
6
+
7
+ ```
8
+ design-system/
9
+ ├── tokens/
10
+ │ └── base/
11
+ │ ├── colors.json # Raw brand colors (edit questi)
12
+ │ └── shades.json # Auto-generato — non editare a mano
13
+ ├── scripts/
14
+ │ └── generate-shades.js # Genera 16 shades OKLCH + brand token
15
+ ├── style-dictionary/
16
+ │ └── config.js # Build CSS vars / JSON / ES6
17
+ ├── storybook/
18
+ │ ├── .storybook/
19
+ │ │ ├── main.js # @storybook/react-webpack5
20
+ │ │ └── preview.js
21
+ │ └── src/
22
+ │ ├── components/
23
+ │ │ ├── ColorPalette.jsx # Componente principale
24
+ │ │ └── ColorSwatch.jsx # ShadeCell + BrandTokenRow
25
+ │ ├── stories/
26
+ │ │ └── ColorPalette.stories.jsx # CSF3 stories
27
+ │ └── utils/
28
+ │ └── contrast.js # WCAG contrast utilities
29
+ └── package.json
30
+ ```
31
+
32
+ ## Setup
33
+
34
+ ### 1. Generare i token
35
+
36
+ ```bash
37
+ # Root del progetto
38
+ npm install
39
+ npm run generate-shades # → tokens/base/shades.json
40
+ npm run build-tokens # → build/css, build/json, build/js
41
+ ```
42
+
43
+ ### 2. Avviare Storybook
44
+
45
+ ```bash
46
+ cd storybook
47
+ npm install
48
+ npm run storybook # → http://localhost:6006
49
+ ```
50
+
51
+ ## Token structure
52
+
53
+ ### `color.shade.<name>.<1-16>`
54
+ 16 shades OKLCH per ogni hue.
55
+ - `1` = più vicino al bianco (lightness ~97%)
56
+ - `16` = più vicino al nero (lightness ~10%)
57
+ - La chroma segue una curva naturale: picco a metà scala, compressa agli estremi
58
+
59
+ ### `color.brand.<name>`
60
+ Hex esatto del brand color originale. **Non fa parte della scala shades.**
61
+ Usare solo per momenti specifici in cui serve il colore di brand preciso
62
+ (es. logo, brand moment), non per le scale UI.
63
+
64
+ ## Aggiungere un colore
65
+
66
+ In `tokens/base/colors.json`:
67
+
68
+ ```json
69
+ "emerald": { "value": "#059669", "comment": "Brand Emerald" }
70
+ ```
71
+
72
+ Poi:
73
+ ```bash
74
+ npm run generate-shades
75
+ npm run build-tokens
76
+ ```
77
+
78
+ ## Stories disponibili
79
+
80
+ | Story | Descrizione |
81
+ |---------------|--------------------------------------------------|
82
+ | Full Palette | Tutti i colori con brand token |
83
+ | Cool Hues | Blue, indigo, violet, cyan, teal |
84
+ | Warm Hues | Red, orange, amber, pink |
85
+ | Shades Only | Tutti i colori senza brand token row |
86
+ | Single Color | Un singolo hue (selezionabile via controls) |
87
+
88
+ ## Controls Storybook
89
+
90
+ - **colors** (checkbox) — seleziona quali hue visualizzare
91
+ - **showBrandToken** (boolean) — mostra/nasconde la riga brand token
92
+
93
+ ## Output StyleDictionary
94
+
95
+ ```
96
+ build/
97
+ ├── css/tokens.css → :root { --ds-color-shade-blue-1: oklch(...) }
98
+ ├── json/tokens.json → { "ds-color-shade-blue-1": "oklch(...)" }
99
+ └── js/tokens.js → export const DsColorShadeBlue1 = "oklch(...)"
100
+ ```
@@ -0,0 +1,588 @@
1
+ :root {
2
+ --stk-color-shade-palette-1-1: #cff6ff;
3
+ --stk-color-shade-palette-1-2: #abe1ff;
4
+ --stk-color-shade-palette-1-3: #8dcbff;
5
+ --stk-color-shade-palette-1-4: #75b7ff;
6
+ --stk-color-shade-palette-1-5: #60a3ff;
7
+ --stk-color-shade-palette-1-6: #4d8fff;
8
+ --stk-color-shade-palette-1-7: #3b7cff;
9
+ --stk-color-shade-palette-1-8: #2a69f1;
10
+ --stk-color-shade-palette-1-9: #1956dd;
11
+ --stk-color-shade-palette-1-10: #0542c9;
12
+ --stk-color-shade-palette-1-11: #002eb4;
13
+ --stk-color-shade-palette-1-12: #00169f;
14
+ --stk-color-shade-palette-1-13: #000087;
15
+ --stk-color-shade-palette-1-14: #02006c;
16
+ --stk-color-shade-palette-1-15: #03004d;
17
+ --stk-color-shade-palette-1-16: #020029;
18
+ --stk-color-shade-palette-2-1: #e1efff;
19
+ --stk-color-shade-palette-2-2: #c7d6ff;
20
+ --stk-color-shade-palette-2-3: #b0bfff;
21
+ --stk-color-shade-palette-2-4: #9da9ff;
22
+ --stk-color-shade-palette-2-5: #8b94ff;
23
+ --stk-color-shade-palette-2-6: #7a80ff;
24
+ --stk-color-shade-palette-2-7: #6b6cff;
25
+ --stk-color-shade-palette-2-8: #5c59f8;
26
+ --stk-color-shade-palette-2-9: #4e44e3;
27
+ --stk-color-shade-palette-2-10: #412ecf;
28
+ --stk-color-shade-palette-2-11: #3612ba;
29
+ --stk-color-shade-palette-2-12: #2c00a4;
30
+ --stk-color-shade-palette-2-13: #23008c;
31
+ --stk-color-shade-palette-2-14: #1a0071;
32
+ --stk-color-shade-palette-2-15: #100051;
33
+ --stk-color-shade-palette-2-16: #06002b;
34
+ --stk-color-shade-palette-3-1: #f8e6ff;
35
+ --stk-color-shade-palette-3-2: #e7c9ff;
36
+ --stk-color-shade-palette-3-3: #d6afff;
37
+ --stk-color-shade-palette-3-4: #c698ff;
38
+ --stk-color-shade-palette-3-5: #b481ff;
39
+ --stk-color-shade-palette-3-6: #a36cff;
40
+ --stk-color-shade-palette-3-7: #9358ff;
41
+ --stk-color-shade-palette-3-8: #8243f5;
42
+ --stk-color-shade-palette-3-9: #722be1;
43
+ --stk-color-shade-palette-3-10: #6305cc;
44
+ --stk-color-shade-palette-3-11: #5500b8;
45
+ --stk-color-shade-palette-3-12: #4600a2;
46
+ --stk-color-shade-palette-3-13: #39008a;
47
+ --stk-color-shade-palette-3-14: #2a006f;
48
+ --stk-color-shade-palette-3-15: #1b004f;
49
+ --stk-color-shade-palette-3-16: #0b002a;
50
+ --stk-color-shade-palette-4-1: #ffd7f1;
51
+ --stk-color-shade-palette-4-2: #ffb4dc;
52
+ --stk-color-shade-palette-4-3: #ff95c9;
53
+ --stk-color-shade-palette-4-4: #ff7bb6;
54
+ --stk-color-shade-palette-4-5: #ff63a3;
55
+ --stk-color-shade-palette-4-6: #fb4c91;
56
+ --stk-color-shade-palette-4-7: #e63580;
57
+ --stk-color-shade-palette-4-8: #d1186f;
58
+ --stk-color-shade-palette-4-9: #bc005e;
59
+ --stk-color-shade-palette-4-10: #a7004e;
60
+ --stk-color-shade-palette-4-11: #92003f;
61
+ --stk-color-shade-palette-4-12: #7d0030;
62
+ --stk-color-shade-palette-4-13: #660022;
63
+ --stk-color-shade-palette-4-14: #4e0015;
64
+ --stk-color-shade-palette-4-15: #340009;
65
+ --stk-color-shade-palette-4-16: #190002;
66
+ --stk-color-shade-palette-5-1: #ffdace;
67
+ --stk-color-shade-palette-5-2: #ffb8a9;
68
+ --stk-color-shade-palette-5-3: #ff9a8b;
69
+ --stk-color-shade-palette-5-4: #ff8072;
70
+ --stk-color-shade-palette-5-5: #ff685c;
71
+ --stk-color-shade-palette-5-6: #ff5148;
72
+ --stk-color-shade-palette-5-7: #ec3a35;
73
+ --stk-color-shade-palette-5-8: #d71f21;
74
+ --stk-color-shade-palette-5-9: #c20007;
75
+ --stk-color-shade-palette-5-10: #ad0000;
76
+ --stk-color-shade-palette-5-11: #980000;
77
+ --stk-color-shade-palette-5-12: #820000;
78
+ --stk-color-shade-palette-5-13: #6b0000;
79
+ --stk-color-shade-palette-5-14: #520000;
80
+ --stk-color-shade-palette-5-15: #380000;
81
+ --stk-color-shade-palette-5-16: #1b0000;
82
+ --stk-color-shade-palette-6-1: #ffe0c3;
83
+ --stk-color-shade-palette-6-2: #ffc298;
84
+ --stk-color-shade-palette-6-3: #ffa675;
85
+ --stk-color-shade-palette-6-4: #ff8e58;
86
+ --stk-color-shade-palette-6-5: #ff783d;
87
+ --stk-color-shade-palette-6-6: #f66422;
88
+ --stk-color-shade-palette-6-7: #e15000;
89
+ --stk-color-shade-palette-6-8: #cd3c00;
90
+ --stk-color-shade-palette-6-9: #b82500;
91
+ --stk-color-shade-palette-6-10: #a40000;
92
+ --stk-color-shade-palette-6-11: #8f0000;
93
+ --stk-color-shade-palette-6-12: #7a0000;
94
+ --stk-color-shade-palette-6-13: #640000;
95
+ --stk-color-shade-palette-6-14: #4d0000;
96
+ --stk-color-shade-palette-6-15: #340000;
97
+ --stk-color-shade-palette-6-16: #190000;
98
+ --stk-color-shade-palette-7-1: #ffe9c1;
99
+ --stk-color-shade-palette-7-2: #ffcf95;
100
+ --stk-color-shade-palette-7-3: #ffb871;
101
+ --stk-color-shade-palette-7-4: #ffa352;
102
+ --stk-color-shade-palette-7-5: #f08f36;
103
+ --stk-color-shade-palette-7-6: #dd7c16;
104
+ --stk-color-shade-palette-7-7: #ca6900;
105
+ --stk-color-shade-palette-7-8: #b75800;
106
+ --stk-color-shade-palette-7-9: #a34600;
107
+ --stk-color-shade-palette-7-10: #903400;
108
+ --stk-color-shade-palette-7-11: #7d2100;
109
+ --stk-color-shade-palette-7-12: #6a0c00;
110
+ --stk-color-shade-palette-7-13: #560000;
111
+ --stk-color-shade-palette-7-14: #410000;
112
+ --stk-color-shade-palette-7-15: #2a0000;
113
+ --stk-color-shade-palette-7-16: #130000;
114
+ --stk-color-shade-palette-8-1: #ceffd6;
115
+ --stk-color-shade-palette-8-2: #a7f9b6;
116
+ --stk-color-shade-palette-8-3: #85e99a;
117
+ --stk-color-shade-palette-8-4: #68d882;
118
+ --stk-color-shade-palette-8-5: #4ec66e;
119
+ --stk-color-shade-palette-8-6: #34b45b;
120
+ --stk-color-shade-palette-8-7: #12a149;
121
+ --stk-color-shade-palette-8-8: #008f37;
122
+ --stk-color-shade-palette-8-9: #007d24;
123
+ --stk-color-shade-palette-8-10: #006c0f;
124
+ --stk-color-shade-palette-8-11: #005a00;
125
+ --stk-color-shade-palette-8-12: #004900;
126
+ --stk-color-shade-palette-8-13: #003900;
127
+ --stk-color-shade-palette-8-14: #002800;
128
+ --stk-color-shade-palette-8-15: #001700;
129
+ --stk-color-shade-palette-8-16: #000800;
130
+ --stk-color-shade-palette-9-1: #cffff9;
131
+ --stk-color-shade-palette-9-2: #a9f3e8;
132
+ --stk-color-shade-palette-9-3: #88e2d6;
133
+ --stk-color-shade-palette-9-4: #6cd1c4;
134
+ --stk-color-shade-palette-9-5: #52bfb2;
135
+ --stk-color-shade-palette-9-6: #3aada0;
136
+ --stk-color-shade-palette-9-7: #1d9b8f;
137
+ --stk-color-shade-palette-9-8: #00897d;
138
+ --stk-color-shade-palette-9-9: #00776c;
139
+ --stk-color-shade-palette-9-10: #00665c;
140
+ --stk-color-shade-palette-9-11: #00564c;
141
+ --stk-color-shade-palette-9-12: #00453c;
142
+ --stk-color-shade-palette-9-13: #00352d;
143
+ --stk-color-shade-palette-9-14: #00251f;
144
+ --stk-color-shade-palette-9-15: #001511;
145
+ --stk-color-shade-palette-9-16: #000705;
146
+ --stk-color-shade-palette-10-1: #cdfeff;
147
+ --stk-color-shade-palette-10-2: #a6efff;
148
+ --stk-color-shade-palette-10-3: #85defb;
149
+ --stk-color-shade-palette-10-4: #68ccec;
150
+ --stk-color-shade-palette-10-5: #4eb9db;
151
+ --stk-color-shade-palette-10-6: #34a7c9;
152
+ --stk-color-shade-palette-10-7: #1595b6;
153
+ --stk-color-shade-palette-10-8: #0083a4;
154
+ --stk-color-shade-palette-10-9: #007292;
155
+ --stk-color-shade-palette-10-10: #006180;
156
+ --stk-color-shade-palette-10-11: #00506e;
157
+ --stk-color-shade-palette-10-12: #00405d;
158
+ --stk-color-shade-palette-10-13: #00304b;
159
+ --stk-color-shade-palette-10-14: #002038;
160
+ --stk-color-shade-palette-10-15: #001124;
161
+ --stk-color-shade-palette-10-16: #000510;
162
+ --stk-color-shade-palette-11-1: #f5f5f5;
163
+ --stk-color-shade-palette-11-2: #e2e2e2;
164
+ --stk-color-shade-palette-11-3: #cfcfcf;
165
+ --stk-color-shade-palette-11-4: #bcbcbc;
166
+ --stk-color-shade-palette-11-5: #aaaaaa;
167
+ --stk-color-shade-palette-11-6: #989898;
168
+ --stk-color-shade-palette-11-7: #878787;
169
+ --stk-color-shade-palette-11-8: #757575;
170
+ --stk-color-shade-palette-11-9: #656565;
171
+ --stk-color-shade-palette-11-10: #555555;
172
+ --stk-color-shade-palette-11-11: #454545;
173
+ --stk-color-shade-palette-11-12: #363636;
174
+ --stk-color-shade-palette-11-13: #272727;
175
+ --stk-color-shade-palette-11-14: #1a1a1a;
176
+ --stk-color-shade-palette-11-15: #0d0d0d;
177
+ --stk-color-shade-palette-11-16: #030303;
178
+ --stk-color-brand-palette-1: #2563eb;
179
+ --stk-color-brand-palette-2: #4f46e5;
180
+ --stk-color-brand-palette-3: #7c3aed;
181
+ --stk-color-brand-palette-4: #db2777;
182
+ --stk-color-brand-palette-5: #dc2626;
183
+ --stk-color-brand-palette-6: #ea580c;
184
+ --stk-color-brand-palette-7: #d97706;
185
+ --stk-color-brand-palette-8: #16a34a;
186
+ --stk-color-brand-palette-9: #0d9488;
187
+ --stk-color-brand-palette-10: #0891b2;
188
+ --stk-color-brand-palette-11: #525252;
189
+ --stk-spacing-xxs: 4px;
190
+ --stk-spacing-xs: 8px;
191
+ --stk-spacing-sm: 12px;
192
+ --stk-spacing-md: 16px;
193
+ --stk-spacing-lg: 24px;
194
+ --stk-spacing-xl: 32px;
195
+ --stk-spacing-xxl: 48px;
196
+ --stk-spacing-xxxl: 64px;
197
+ --stk-radius-none: 0px;
198
+ --stk-radius-xs: 2px;
199
+ --stk-radius-sm: 4px;
200
+ --stk-radius-sm-md: 6px;
201
+ --stk-radius-md: 8px;
202
+ --stk-radius-lg: 16px;
203
+ --stk-radius-xl: 24px;
204
+ --stk-radius-circular: 100px;
205
+ --stk-radius-pill: 100px;
206
+ --stk-border-width-sm: 1px;
207
+ --stk-border-width-md: 2px;
208
+ --stk-border-width-lg: 4px;
209
+ --stk-border-width-xl: 8px;
210
+ --stk-border-default: var(--stk-color-shade-palette-11-5);
211
+ --stk-border-subtle: var(--stk-color-shade-palette-11-4);
212
+ --stk-border-strong: var(--stk-color-shade-palette-11-7);
213
+ --stk-border-inverse: var(--stk-color-shade-palette-11-1);
214
+ --stk-border-focus: var(--stk-color-shade-palette-1-8);
215
+ --stk-border-brand-1: var(--stk-color-shade-palette-1-8);
216
+ --stk-border-brand-2: var(--stk-color-shade-palette-2-8);
217
+ --stk-border-brand-3: var(--stk-color-shade-palette-3-8);
218
+ --stk-border-success: var(--stk-color-shade-palette-8-8);
219
+ --stk-border-danger: var(--stk-color-shade-palette-5-8);
220
+ --stk-border-alert: var(--stk-color-shade-palette-6-8);
221
+ --stk-border-info: var(--stk-color-shade-palette-7-8);
222
+ --stk-border-news: var(--stk-color-shade-palette-8-8);
223
+ --stk-border-ai: var(--stk-color-shade-palette-9-8);
224
+ --stk-typography-config-base: 16;
225
+ --stk-typography-config-ratio: 1.2;
226
+ --stk-typography-size-xs: 11px;
227
+ --stk-typography-size-sm: 13px;
228
+ --stk-typography-size-md: 16px;
229
+ --stk-typography-size-lg: 19px;
230
+ --stk-typography-size-xl: 23px;
231
+ --stk-typography-size-xxl: 28px;
232
+ --stk-typography-size-xxxl: 33px;
233
+ --stk-opacity-0: 0;
234
+ --stk-opacity-8: 0.08;
235
+ --stk-opacity-12: 0.12;
236
+ --stk-opacity-16: 0.16;
237
+ --stk-opacity-24: 0.24;
238
+ --stk-opacity-32: 0.32;
239
+ --stk-opacity-48: 0.48;
240
+ --stk-opacity-64: 0.64;
241
+ --stk-opacity-80: 0.80;
242
+ --stk-opacity-100: 1;
243
+ --stk-duration-instant: 0ms;
244
+ --stk-duration-fast: 100ms;
245
+ --stk-duration-normal: 200ms;
246
+ --stk-duration-slow: 300ms;
247
+ --stk-duration-slower: 500ms;
248
+ --stk-easing-linear: linear;
249
+ --stk-easing-ease-in: cubic-bezier(0.4, 0, 1, 1);
250
+ --stk-easing-ease-out: cubic-bezier(0, 0, 0.2, 1);
251
+ --stk-easing-ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);
252
+ --stk-easing-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
253
+ --stk-elevation-base: 0;
254
+ --stk-elevation-raised: 10;
255
+ --stk-elevation-sticky: 100;
256
+ --stk-elevation-overlay: 200;
257
+ --stk-elevation-modal: 300;
258
+ --stk-elevation-toast: 400;
259
+ --stk-elevation-tooltip: 500;
260
+ --stk-surface-brand-1-subtlest: var(--stk-color-shade-palette-1-1);
261
+ --stk-surface-brand-1-subtle: var(--stk-color-shade-palette-1-2);
262
+ --stk-surface-brand-1-default: var(--stk-color-shade-palette-1-3);
263
+ --stk-surface-brand-1-bold: var(--stk-color-shade-palette-1-5);
264
+ --stk-surface-brand-1-strong: var(--stk-color-shade-palette-1-9);
265
+ --stk-surface-brand-1-strongest: var(--stk-color-shade-palette-1-10);
266
+ --stk-surface-brand-2-subtlest: var(--stk-color-shade-palette-2-1);
267
+ --stk-surface-brand-2-subtle: var(--stk-color-shade-palette-2-2);
268
+ --stk-surface-brand-2-default: var(--stk-color-shade-palette-2-3);
269
+ --stk-surface-brand-2-bold: var(--stk-color-shade-palette-2-5);
270
+ --stk-surface-brand-2-strong: var(--stk-color-shade-palette-2-8);
271
+ --stk-surface-brand-2-strongest: var(--stk-color-shade-palette-2-10);
272
+ --stk-surface-brand-3-subtlest: var(--stk-color-shade-palette-3-1);
273
+ --stk-surface-brand-3-subtle: var(--stk-color-shade-palette-3-2);
274
+ --stk-surface-brand-3-default: var(--stk-color-shade-palette-3-3);
275
+ --stk-surface-brand-3-bold: var(--stk-color-shade-palette-3-5);
276
+ --stk-surface-brand-3-strong: var(--stk-color-shade-palette-3-8);
277
+ --stk-surface-brand-3-strongest: var(--stk-color-shade-palette-3-10);
278
+ --stk-surface-success-subtlest: var(--stk-color-shade-palette-8-1);
279
+ --stk-surface-success-subtle: var(--stk-color-shade-palette-8-2);
280
+ --stk-surface-success-default: var(--stk-color-shade-palette-8-3);
281
+ --stk-surface-success-bold: var(--stk-color-shade-palette-8-5);
282
+ --stk-surface-success-strong: var(--stk-color-shade-palette-8-8);
283
+ --stk-surface-success-strongest: var(--stk-color-shade-palette-8-10);
284
+ --stk-surface-danger-subtlest: var(--stk-color-shade-palette-5-1);
285
+ --stk-surface-danger-subtle: var(--stk-color-shade-palette-5-2);
286
+ --stk-surface-danger-default: var(--stk-color-shade-palette-5-3);
287
+ --stk-surface-danger-bold: var(--stk-color-shade-palette-5-5);
288
+ --stk-surface-danger-strong: var(--stk-color-shade-palette-5-8);
289
+ --stk-surface-danger-strongest: var(--stk-color-shade-palette-5-10);
290
+ --stk-surface-alert-subtlest: var(--stk-color-shade-palette-6-1);
291
+ --stk-surface-alert-subtle: var(--stk-color-shade-palette-6-2);
292
+ --stk-surface-alert-default: var(--stk-color-shade-palette-6-3);
293
+ --stk-surface-alert-bold: var(--stk-color-shade-palette-6-5);
294
+ --stk-surface-alert-strong: var(--stk-color-shade-palette-6-8);
295
+ --stk-surface-alert-strongest: var(--stk-color-shade-palette-6-10);
296
+ --stk-surface-info-subtlest: var(--stk-color-shade-palette-7-1);
297
+ --stk-surface-info-subtle: var(--stk-color-shade-palette-7-2);
298
+ --stk-surface-info-default: var(--stk-color-shade-palette-7-3);
299
+ --stk-surface-info-bold: var(--stk-color-shade-palette-7-5);
300
+ --stk-surface-info-strong: var(--stk-color-shade-palette-7-8);
301
+ --stk-surface-info-strongest: var(--stk-color-shade-palette-7-10);
302
+ --stk-surface-news-subtlest: var(--stk-color-shade-palette-8-1);
303
+ --stk-surface-news-subtle: var(--stk-color-shade-palette-8-2);
304
+ --stk-surface-news-default: var(--stk-color-shade-palette-8-3);
305
+ --stk-surface-news-bold: var(--stk-color-shade-palette-8-5);
306
+ --stk-surface-news-strong: var(--stk-color-shade-palette-8-8);
307
+ --stk-surface-news-strongest: var(--stk-color-shade-palette-8-10);
308
+ --stk-surface-ai-subtlest: var(--stk-color-shade-palette-9-1);
309
+ --stk-surface-ai-subtle: var(--stk-color-shade-palette-9-2);
310
+ --stk-surface-ai-default: var(--stk-color-shade-palette-9-3);
311
+ --stk-surface-ai-bold: var(--stk-color-shade-palette-9-5);
312
+ --stk-surface-ai-strong: var(--stk-color-shade-palette-9-8);
313
+ --stk-surface-ai-strongest: var(--stk-color-shade-palette-9-10);
314
+ --stk-surface-neutral-white: #ffffff;
315
+ --stk-surface-neutral-subtlest: var(--stk-color-shade-palette-11-1);
316
+ --stk-surface-neutral-subtle: var(--stk-color-shade-palette-11-2);
317
+ --stk-surface-neutral-default: var(--stk-color-shade-palette-11-3);
318
+ --stk-surface-neutral-bold: var(--stk-color-shade-palette-11-5);
319
+ --stk-surface-neutral-strong: var(--stk-color-shade-palette-11-8);
320
+ --stk-surface-neutral-strongest: var(--stk-color-shade-palette-11-10);
321
+ --stk-surface-neutral-black: #000000;
322
+ --stk-surface-transparent: transparent;
323
+ --stk-text-default: var(--stk-color-shade-palette-11-12);
324
+ --stk-text-subtle: var(--stk-color-shade-palette-11-9);
325
+ --stk-text-subtlest: var(--stk-color-shade-palette-11-8);
326
+ --stk-text-inverse: var(--stk-color-shade-palette-11-1);
327
+ --stk-text-brand-1: var(--stk-color-shade-palette-1-10);
328
+ --stk-text-brand-2: var(--stk-color-shade-palette-2-10);
329
+ --stk-text-brand-3: var(--stk-color-shade-palette-3-10);
330
+ --stk-text-success: var(--stk-color-shade-palette-8-10);
331
+ --stk-text-danger: var(--stk-color-shade-palette-5-10);
332
+ --stk-text-alert: var(--stk-color-shade-palette-6-10);
333
+ --stk-text-info: var(--stk-color-shade-palette-7-10);
334
+ --stk-text-news: var(--stk-color-shade-palette-8-10);
335
+ --stk-text-ai: var(--stk-color-shade-palette-9-10);
336
+ --stk-text-display-light: [object Object];
337
+ --stk-text-display-regular: [object Object];
338
+ --stk-text-display-bold: [object Object];
339
+ --stk-text-title-1-light: [object Object];
340
+ --stk-text-title-1-regular: [object Object];
341
+ --stk-text-title-1-bold: [object Object];
342
+ --stk-text-title-2-light: [object Object];
343
+ --stk-text-title-2-regular: [object Object];
344
+ --stk-text-title-2-bold: [object Object];
345
+ --stk-text-title-3-light: [object Object];
346
+ --stk-text-title-3-regular: [object Object];
347
+ --stk-text-title-3-bold: [object Object];
348
+ --stk-text-title-4-light: [object Object];
349
+ --stk-text-title-4-regular: [object Object];
350
+ --stk-text-title-4-bold: [object Object];
351
+ --stk-text-body-light: [object Object];
352
+ --stk-text-body-regular: [object Object];
353
+ --stk-text-body-bold: [object Object];
354
+ --stk-text-body-sm-light: [object Object];
355
+ --stk-text-body-sm-regular: [object Object];
356
+ --stk-text-body-sm-bold: [object Object];
357
+ --stk-text-label-light: [object Object];
358
+ --stk-text-label-regular: [object Object];
359
+ --stk-text-label-bold: [object Object];
360
+ --stk-text-label-sm-light: [object Object];
361
+ --stk-text-label-sm-regular: [object Object];
362
+ --stk-text-label-sm-bold: [object Object];
363
+ --stk-state-hover: var(--stk-surface-neutral-default);
364
+ --stk-state-active: var(--stk-surface-neutral-bold);
365
+ --stk-state-selected: var(--stk-opacity-12);
366
+ --stk-state-focus: var(--stk-color-shade-palette-1-8);
367
+ --stk-state-disabled-bg: var(--stk-color-shade-palette-11-2);
368
+ --stk-state-disabled-text: var(--stk-color-shade-palette-11-6);
369
+ --stk-state-disabled-border: var(--stk-color-shade-palette-11-4);
370
+ --stk-icon-default: var(--stk-color-shade-palette-11-12);
371
+ --stk-icon-subtle: var(--stk-color-shade-palette-11-9);
372
+ --stk-icon-subtlest: var(--stk-color-shade-palette-11-7);
373
+ --stk-icon-inverse: var(--stk-color-shade-palette-11-1);
374
+ --stk-icon-brand-1: var(--stk-color-shade-palette-1-10);
375
+ --stk-icon-brand-2: var(--stk-color-shade-palette-2-10);
376
+ --stk-icon-brand-3: var(--stk-color-shade-palette-3-10);
377
+ --stk-icon-success: var(--stk-color-shade-palette-8-10);
378
+ --stk-icon-danger: var(--stk-color-shade-palette-5-10);
379
+ --stk-icon-alert: var(--stk-color-shade-palette-6-10);
380
+ --stk-icon-info: var(--stk-color-shade-palette-7-10);
381
+ --stk-icon-news: var(--stk-color-shade-palette-8-10);
382
+ --stk-icon-ai: var(--stk-color-shade-palette-9-10);
383
+ --stk-shadow-color: 0 0 0;
384
+ --stk-shadow-opacity: 0.08;
385
+ --stk-shadow-key-xs: 0px 1px 4px 0px;
386
+ --stk-shadow-key-sm: 0px 2px 8px 0px;
387
+ --stk-shadow-key-md: 0px 3px 12px 0px;
388
+ --stk-shadow-key-lg: 0px 4px 16px 0px;
389
+ --stk-shadow-key-xl: 0px 2px 8px 0px;
390
+ --stk-shadow-ambient-xs: 0px 2px 8px 0px;
391
+ --stk-shadow-ambient-sm: 0px 3px 12px 0px;
392
+ --stk-shadow-ambient-md: 0px 4px 16px 0px;
393
+ --stk-shadow-ambient-lg: 0px 5px 20px 0px;
394
+ --stk-shadow-ambient-xl: 0px 6px 24px 0px;
395
+ --stk-shadow-preset-xs: surface;
396
+ --stk-shadow-preset-sm: non-modal;
397
+ --stk-shadow-preset-md: sticky;
398
+ --stk-shadow-preset-lg: non-modal-sticky;
399
+ --stk-shadow-preset-xl: modal;
400
+ --stk-layout-container-max-width-sm: 560px;
401
+ --stk-layout-container-max-width-md: 800px;
402
+ --stk-layout-container-max-width-lg: 1280px;
403
+ --stk-layout-container-padding-x: var(--stk-spacing-xl);
404
+ --stk-layout-container-padding-x-narrow: var(--stk-spacing-md);
405
+ --stk-tooltip-bg: var(--stk-surface-neutral-strongest);
406
+ --stk-tooltip-text: var(--stk-text-inverse);
407
+ --stk-tooltip-arrow: var(--stk-surface-neutral-strongest);
408
+ --stk-tooltip-radius: var(--stk-radius-md);
409
+ --stk-tooltip-padding-x: var(--stk-spacing-sm);
410
+ --stk-tooltip-padding-y: var(--stk-spacing-xs);
411
+ --stk-tooltip-max-width: 250;
412
+ --stk-button-sm-spacing-horizontal: var(--stk-spacing-sm);
413
+ --stk-button-sm-spacing-vertical: var(--stk-spacing-xs);
414
+ --stk-button-sm-spacing-gap: var(--stk-spacing-xs);
415
+ --stk-button-sm-radius: var(--stk-radius-sm);
416
+ --stk-button-md-spacing-horizontal: var(--stk-spacing-md);
417
+ --stk-button-md-spacing-vertical: var(--stk-spacing-xs);
418
+ --stk-button-md-spacing-gap: var(--stk-spacing-xs);
419
+ --stk-button-md-radius: var(--stk-radius-md);
420
+ --stk-button-lg-spacing-horizontal: var(--stk-spacing-lg);
421
+ --stk-button-lg-spacing-vertical: var(--stk-spacing-md);
422
+ --stk-button-lg-spacing-gap: var(--stk-spacing-sm);
423
+ --stk-button-lg-radius: var(--stk-radius-md);
424
+ --stk-button-primary-background-color: var(--stk-surface-brand-1-strong);
425
+ --stk-button-primary-text-color: var(--stk-text-inverse);
426
+ --stk-button-primary-icon-color: var(--stk-text-inverse);
427
+ --stk-button-primary-active-background-color: var(--stk-surface-brand-1-strongest);
428
+ --stk-button-primary-disabled-background-color: var(--stk-state-disabled-bg);
429
+ --stk-button-primary-disabled-text-color: var(--stk-state-disabled-text);
430
+ --stk-button-primary-disabled-icon-color: var(--stk-state-disabled-text);
431
+ --stk-button-primary-loading-background-color: var(--stk-surface-brand-1-strong);
432
+ --stk-button-ghost-background-color: var(--stk-surface-neutral-subtlest);
433
+ --stk-button-ghost-text-color: var(--stk-text-default);
434
+ --stk-button-ghost-icon-color: var(--stk-text-default);
435
+ --stk-button-ghost-active-background-color: var(--stk-surface-neutral-default);
436
+ --stk-button-ghost-active-press-text-color: var(--stk-text-default);
437
+ --stk-button-ghost-active-press-icon-color: var(--stk-text-default);
438
+ --stk-button-ghost-disabled-background-color: var(--stk-state-disabled-bg);
439
+ --stk-button-ghost-disabled-text-color: var(--stk-state-disabled-text);
440
+ --stk-button-ghost-disabled-icon-color: var(--stk-state-disabled-text);
441
+ --stk-button-ghost-loading-background-color: var(--stk-surface-transparent);
442
+ --stk-button-danger-background-color: var(--stk-surface-danger-strong);
443
+ --stk-button-danger-text-color: var(--stk-text-inverse);
444
+ --stk-button-danger-icon-color: var(--stk-text-inverse);
445
+ --stk-button-danger-active-background-color: var(--stk-surface-danger-strongest);
446
+ --stk-button-danger-disabled-background-color: var(--stk-state-disabled-bg);
447
+ --stk-button-danger-disabled-text-color: var(--stk-state-disabled-text);
448
+ --stk-button-danger-disabled-icon-color: var(--stk-state-disabled-text);
449
+ --stk-button-danger-loading-background-color: var(--stk-surface-danger-strong);
450
+ --stk-button-hover-overlay-color: var(--stk-state-hover);
451
+ --stk-button-press-overlay-color: var(--stk-state-active);
452
+ --stk-button-active-hover-overlay-color: var(--stk-state-hover);
453
+ --stk-button-active-press-overlay-color: var(--stk-state-active);
454
+ --stk-radio-button-size: var(--stk-spacing-md);
455
+ --stk-radio-button-dot-size: 6;
456
+ --stk-radio-button-dot-color: var(--stk-text-inverse);
457
+ --stk-radio-button-border-width: 1.5;
458
+ --stk-radio-button-border-color-default: var(--stk-border-default);
459
+ --stk-radio-button-border-color-hover: var(--stk-border-strong);
460
+ --stk-radio-button-bg-default: var(--stk-surface-neutral-subtlest);
461
+ --stk-radio-button-bg-hover: var(--stk-surface-neutral-subtle);
462
+ --stk-radio-button-bg-press: var(--stk-surface-neutral-default);
463
+ --stk-radio-button-bg-selected: var(--stk-surface-brand-1-strong);
464
+ --stk-radio-button-bg-selected-hover: var(--stk-surface-brand-1-bold);
465
+ --stk-radio-button-bg-selected-press: var(--stk-surface-brand-1-strongest);
466
+ --stk-radio-button-bg-disabled: var(--stk-state-disabled-bg);
467
+ --stk-radio-button-focus-ring-color: var(--stk-border-focus);
468
+ --stk-radio-button-label-color: var(--stk-text-default);
469
+ --stk-radio-button-label-disabled-color: var(--stk-state-disabled-text);
470
+ --stk-radio-button-required-color: var(--stk-text-subtle);
471
+ --stk-radio-button-spacing-gap: var(--stk-spacing-xs);
472
+ --stk-radio-group-spacing-gap: var(--stk-spacing-sm);
473
+ --stk-radio-group-spacing-item-gap: var(--stk-spacing-xs);
474
+ --stk-radio-group-spacing-header-gap: var(--stk-spacing-xxs);
475
+ --stk-radio-group-label-color: var(--stk-text-default);
476
+ --stk-radio-group-hint-color: var(--stk-text-subtle);
477
+ --stk-radio-group-required-color: var(--stk-text-subtle);
478
+ --stk-text-input-spacing-padding-x: var(--stk-spacing-sm);
479
+ --stk-text-input-spacing-padding-y: var(--stk-spacing-xs);
480
+ --stk-text-input-spacing-gap: var(--stk-spacing-xxs);
481
+ --stk-text-input-spacing-label-gap: var(--stk-spacing-xxs);
482
+ --stk-text-input-spacing-inner-gap: var(--stk-spacing-xs);
483
+ --stk-text-input-spacing-error-gap: var(--stk-spacing-xxs);
484
+ --stk-text-input-border-radius: var(--stk-radius-md);
485
+ --stk-text-input-border-width: var(--stk-border-width-sm);
486
+ --stk-text-input-border-width-hover: var(--stk-border-width-md);
487
+ --stk-text-input-border-width-focus: var(--stk-border-width-md);
488
+ --stk-text-input-border-color-default: var(--stk-border-default);
489
+ --stk-text-input-border-color-hover: var(--stk-border-strong);
490
+ --stk-text-input-border-color-focus: var(--stk-border-focus);
491
+ --stk-text-input-border-color-error: var(--stk-border-danger);
492
+ --stk-text-input-border-color-disabled: var(--stk-state-disabled-border);
493
+ --stk-text-input-bg-default: var(--stk-surface-neutral-white);
494
+ --stk-text-input-bg-disabled: var(--stk-state-disabled-bg);
495
+ --stk-text-input-label-color: var(--stk-text-subtle);
496
+ --stk-text-input-label-disabled-color: var(--stk-state-disabled-text);
497
+ --stk-text-input-required-color: var(--stk-text-subtlest);
498
+ --stk-text-input-text-color: var(--stk-text-default);
499
+ --stk-text-input-text-disabled-color: var(--stk-state-disabled-text);
500
+ --stk-text-input-error-color: var(--stk-text-danger);
501
+ --stk-text-input-error-disabled-color: var(--stk-state-disabled-text);
502
+ --stk-text-input-icon-color: var(--stk-icon-subtle);
503
+ --stk-text-input-icon-disabled-color: var(--stk-state-disabled-text);
504
+ --stk-text-input-icon-size: 20;
505
+ --stk-checkbox-size: var(--stk-spacing-md);
506
+ --stk-checkbox-check-size: 10;
507
+ --stk-checkbox-check-color: var(--stk-text-inverse);
508
+ --stk-checkbox-border-width: var(--stk-border-width-sm);
509
+ --stk-checkbox-border-color-default: var(--stk-border-default);
510
+ --stk-checkbox-border-color-hover: var(--stk-border-strong);
511
+ --stk-checkbox-border-color-error: var(--stk-border-danger);
512
+ --stk-checkbox-radius: var(--stk-radius-xs);
513
+ --stk-checkbox-bg-default: var(--stk-surface-neutral-subtlest);
514
+ --stk-checkbox-bg-hover: var(--stk-surface-neutral-subtle);
515
+ --stk-checkbox-bg-press: var(--stk-surface-neutral-default);
516
+ --stk-checkbox-bg-checked: var(--stk-surface-brand-1-strong);
517
+ --stk-checkbox-bg-checked-hover: var(--stk-surface-brand-1-bold);
518
+ --stk-checkbox-bg-checked-press: var(--stk-surface-brand-1-strongest);
519
+ --stk-checkbox-bg-disabled: var(--stk-state-disabled-bg);
520
+ --stk-checkbox-focus-ring-color: var(--stk-border-focus);
521
+ --stk-checkbox-label-color: var(--stk-text-default);
522
+ --stk-checkbox-label-disabled-color: var(--stk-state-disabled-text);
523
+ --stk-checkbox-gap: var(--stk-spacing-xs);
524
+ --stk-checkbox-required-color: var(--stk-text-subtle);
525
+ --stk-badge-status-bg-neutral: var(--stk-surface-neutral-subtle);
526
+ --stk-badge-status-bg-brand-1: var(--stk-surface-brand-1-subtlest);
527
+ --stk-badge-status-bg-brand-2: var(--stk-surface-brand-2-subtlest);
528
+ --stk-badge-status-bg-brand-3: var(--stk-surface-brand-3-subtlest);
529
+ --stk-badge-status-bg-success: var(--stk-surface-news-subtlest);
530
+ --stk-badge-status-bg-danger: var(--stk-surface-danger-subtlest);
531
+ --stk-badge-status-bg-alert: var(--stk-surface-alert-subtlest);
532
+ --stk-badge-status-bg-info: var(--stk-surface-info-subtlest);
533
+ --stk-badge-status-bg-ai: var(--stk-surface-ai-subtlest);
534
+ --stk-badge-status-text-neutral: var(--stk-text-default);
535
+ --stk-badge-status-text-brand-1: var(--stk-text-brand-1);
536
+ --stk-badge-status-text-brand-2: var(--stk-text-brand-2);
537
+ --stk-badge-status-text-brand-3: var(--stk-text-brand-3);
538
+ --stk-badge-status-text-success: var(--stk-text-news);
539
+ --stk-badge-status-text-danger: var(--stk-text-danger);
540
+ --stk-badge-status-text-alert: var(--stk-text-alert);
541
+ --stk-badge-status-text-info: var(--stk-text-info);
542
+ --stk-badge-status-text-ai: var(--stk-text-ai);
543
+ --stk-badge-status-border-color: var(--stk-border-default);
544
+ --stk-badge-status-border-width: var(--stk-border-width-sm);
545
+ --stk-badge-status-radius: var(--stk-radius-md);
546
+ --stk-badge-status-font-size: var(--stk-typography-size-xs);
547
+ --stk-badge-status-spacing-h: var(--stk-spacing-xs);
548
+ --stk-badge-status-spacing-v: var(--stk-spacing-xxs);
549
+ --stk-badge-status-spacing-gap: var(--stk-spacing-xxs);
550
+ --stk-badge-status-dot-size: var(--stk-spacing-xs);
551
+ --stk-spinner-sm-size: var(--stk-spacing-md);
552
+ --stk-spinner-sm-stroke-width: var(--stk-border-width-sm);
553
+ --stk-spinner-md-size: 20;
554
+ --stk-spinner-md-stroke-width: var(--stk-border-width-md);
555
+ --stk-spinner-lg-size: var(--stk-spacing-lg);
556
+ --stk-spinner-lg-stroke-width: var(--stk-border-width-md);
557
+ --stk-spinner-xl-size: var(--stk-spacing-xl);
558
+ --stk-spinner-xl-stroke-width: var(--stk-border-width-md);
559
+ --stk-spinner-track-opacity: 0.2;
560
+ --stk-spinner-color-default: var(--stk-border-default);
561
+ --stk-spinner-color-brand: var(--stk-border-brand-1);
562
+ --stk-spinner-color-success: var(--stk-border-success);
563
+ --stk-spinner-color-danger: var(--stk-border-danger);
564
+ --stk-spinner-color-inverse: var(--stk-border-inverse);
565
+ --stk-spinner-duration: var(--stk-duration-slower);
566
+ --stk-spinner-easing: var(--stk-easing-linear);
567
+ --stk-image-bg: var(--stk-surface-neutral-subtlest);
568
+ --stk-image-radius: var(--stk-radius-md);
569
+ --stk-image-selection-bg: var(--stk-surface-neutral-white);
570
+ --stk-card-bg: var(--stk-surface-neutral-white);
571
+ --stk-card-border: var(--stk-border-subtle);
572
+ --stk-card-radius: var(--stk-radius-lg);
573
+ --stk-list-item-bg-default: var(--stk-surface-neutral-white);
574
+ --stk-list-item-bg-hover: var(--stk-state-hover);
575
+ --stk-list-item-bg-press: var(--stk-state-active);
576
+ --stk-list-item-bg-selected: var(--stk-state-selected);
577
+ --stk-list-item-bg-disabled: var(--stk-state-disabled-bg);
578
+ --stk-list-item-text-title: var(--stk-text-default);
579
+ --stk-list-item-text-description: var(--stk-text-subtle);
580
+ --stk-list-item-text-disabled: var(--stk-state-disabled-text);
581
+ --stk-list-item-icon-color: var(--stk-icon-default);
582
+ --stk-list-item-icon-size: var(--stk-spacing-md);
583
+ --stk-list-item-spacing-padding-x: var(--stk-spacing-sm);
584
+ --stk-list-item-spacing-padding-y: var(--stk-spacing-xs);
585
+ --stk-list-item-spacing-gap: var(--stk-spacing-xs);
586
+ --stk-list-item-radius: var(--stk-radius-sm);
587
+ --stk-list-item-min-height: 40px;
588
+ }