@inchurch/matcha-theme 20.0.8 → 20.276.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/abstracts/_colors.scss +404 -404
- package/abstracts/_elevation.scss +102 -102
- package/abstracts/_functions.scss +1212 -1212
- package/abstracts/_media-breakpoint.scss +23 -23
- package/abstracts/_typography.scss +127 -127
- package/base/_reset.scss +438 -438
- package/components/app-page-header.scss +260 -0
- package/components/matcha-accordion.scss +294 -157
- package/components/matcha-avatar.scss +171 -31
- package/components/matcha-badge.scss +4 -4
- package/components/matcha-breadcrumb.scss +232 -126
- package/components/matcha-button-toggle.scss +44 -0
- package/components/matcha-buttons.scss +908 -784
- package/components/matcha-calendar.scss +70 -2
- package/components/matcha-cards.scss +28 -2
- package/components/matcha-checkbox.scss +191 -490
- package/components/matcha-chip.scss +297 -212
- package/components/matcha-command-palette.scss +291 -63
- package/components/matcha-crop.scss +407 -172
- package/components/matcha-date.scss +81 -81
- package/components/matcha-divider.scss +86 -31
- package/components/matcha-drawer.scss +201 -50
- package/components/matcha-drop-image.scss +14 -0
- package/components/matcha-drop-list.scss +42 -1
- package/components/matcha-empty-state.scss +195 -83
- package/components/matcha-flag.scss +93 -52
- package/components/matcha-footer.scss +68 -164
- package/components/matcha-form-field.scss +52 -0
- package/components/matcha-form-section.scss +101 -101
- package/components/matcha-header.scss +135 -325
- package/components/matcha-highlight.scss +65 -197
- package/components/matcha-hint-text.scss +21 -0
- package/components/matcha-horizontal-tree.scss +317 -317
- package/components/matcha-icon.scss +17 -25
- package/components/matcha-list.scss +5 -5
- package/components/matcha-menu.scss +13 -0
- package/components/matcha-modal.scss +58 -84
- package/components/matcha-nav.scss +361 -230
- package/components/matcha-notification.scss +413 -197
- package/components/matcha-option.scss +79 -23
- package/components/matcha-paginator.scss +689 -235
- package/components/matcha-panel.scss +42 -26
- package/components/matcha-profile-card.scss +50 -50
- package/components/matcha-progress-bar.scss +257 -153
- package/components/matcha-radio.scss +244 -452
- package/components/matcha-scrollbox-shadow.scss +122 -122
- package/components/matcha-select.scss +3 -3
- package/components/matcha-skeleton.scss +18 -0
- package/components/matcha-slide-toggle.scss +47 -2
- package/components/matcha-slider.scss +172 -75
- package/components/matcha-snack-bar.scss +114 -121
- package/components/matcha-spinner.scss +76 -57
- package/components/matcha-status-pill.scss +82 -0
- package/components/matcha-stepper.scss +377 -177
- package/components/matcha-table.scss +569 -785
- package/components/matcha-tabs.scss +624 -469
- package/components/matcha-text-editor.scss +98 -144
- package/components/matcha-toolbar.scss +359 -206
- package/components/matcha-tooltip.scss +156 -62
- package/components/matcha-tree-view.scss +189 -0
- package/components/matcha-uploader.scss +240 -62
- package/fonts/manrope/manrope-latin-ext.woff2 +0 -0
- package/fonts/manrope/manrope-latin.woff2 +0 -0
- package/layout/matcha-page-layout.scss +776 -0
- package/main.scss +232 -261
- package/package.json +1 -1
- package/tokens/_animations-tokens.scss +37 -37
- package/tokens/_breakpoints-tokens.scss +35 -26
- package/tokens/_color-tokens.scss +1152 -1152
- package/tokens/_css-custom-properties.scss +650 -568
- package/tokens/_spacing-tokens.scss +94 -94
- package/vendors/angular-editor.scss +56 -56
- package/vendors/angular-material-fixes.scss +297 -297
- package/vendors/charts.scss +92 -92
- package/vendors/ng5-slider.scss +56 -56
- package/vendors/ngx-material-timepicker.scss +50 -50
- package/fonts/CircularStd-Black.eot +0 -0
- package/fonts/CircularStd-Black.svg +0 -3426
- package/fonts/CircularStd-Black.ttf +0 -0
- package/fonts/CircularStd-Black.woff +0 -0
- package/fonts/CircularStd-Black.woff2 +0 -0
- package/fonts/CircularStd-Bold.eot +0 -0
- package/fonts/CircularStd-Bold.otf +0 -0
- package/fonts/CircularStd-Bold.svg +0 -13532
- package/fonts/CircularStd-Bold.ttf +0 -0
- package/fonts/CircularStd-Bold.woff +0 -0
- package/fonts/CircularStd-Bold.woff2 +0 -0
- package/fonts/CircularStd-Medium.eot +0 -0
- package/fonts/CircularStd-Medium.otf +0 -0
- package/fonts/CircularStd-Medium.svg +0 -13511
- package/fonts/CircularStd-Medium.ttf +0 -0
- package/fonts/CircularStd-Medium.woff +0 -0
- package/fonts/CircularStd-Medium.woff2 +0 -0
- package/fonts/CircularStd-Regular.eot +0 -0
- package/fonts/CircularStd-Regular.otf +0 -0
- package/fonts/CircularStd-Regular.svg +0 -2378
- package/fonts/CircularStd-Regular.ttf +0 -0
- package/fonts/CircularStd-Regular.woff +0 -0
- package/fonts/CircularStd-Regular.woff2 +0 -0
|
@@ -1,568 +1,650 @@
|
|
|
1
|
-
// =============================================================================
|
|
2
|
-
// MATCHA DESIGN SYSTEM — Token Source (CSS Custom Properties)
|
|
3
|
-
// =============================================================================
|
|
4
|
-
//
|
|
5
|
-
// Emits :root variables for Light mode + [data-theme="dark"] overrides,
|
|
6
|
-
// enabling runtime theming without Sass recompilation.
|
|
7
|
-
//
|
|
8
|
-
// 1:1 PARIDADE com Figma variables em DS-PAINEL (fileKey K673r19KQE8lm2S74nQ5ob):
|
|
9
|
-
// - matcha/primitives (99 vars) → primitives section below
|
|
10
|
-
// - matcha/colors (117 vars) → semantic color sections below
|
|
11
|
-
// - matcha/interaction (4 vars) → via matcha/color/interaction/* aliases
|
|
12
|
-
// - matcha/text/* (30 styles) → text-* + leading-* + tracking-* props
|
|
13
|
-
// - matcha/elevation (4 styles) → shadow-1..4
|
|
14
|
-
// - matcha/grid (6 styles) → grid-col-* + grid-offset-*
|
|
15
|
-
//
|
|
16
|
-
// CONVENÇÃO:
|
|
17
|
-
// - Nome token Figma: `matcha/category/subcategory/variant` (slash)
|
|
18
|
-
// - Nome CSS var: `--matcha-category-subcategory-variant` (hyphen)
|
|
19
|
-
// ex.: `matcha/color/surface/card` ↔ `--matcha-color-surface-card`
|
|
20
|
-
//
|
|
21
|
-
// ORDEM DO ARQUIVO (escalável, do mais genérico → mais específico):
|
|
22
|
-
// 1. Surface (camadas de fundo)
|
|
23
|
-
// 2. Text (cores de texto semântico)
|
|
24
|
-
// 3. Icon
|
|
25
|
-
// 4. Interaction (disabled, focus)
|
|
26
|
-
// 5. Neutral
|
|
27
|
-
// 6. Elevation (surface layers + shadow)
|
|
28
|
-
// 7. Brand — Accent primário + Accent-2 secundário
|
|
29
|
-
// 8. Brand — Primary
|
|
30
|
-
// 9. Feedback — Success, Danger, Warn, Info
|
|
31
|
-
// 10. Data — Chart series + decorative palette
|
|
32
|
-
// 11. Typography — font/size/weight/leading/tracking
|
|
33
|
-
// 12. Spacing / Radius / Border
|
|
34
|
-
// 13. Motion / Opacity / State layers
|
|
35
|
-
// 14. Icon sizes / Touch targets / Avatar
|
|
36
|
-
// 15. Layout — Z-index / Grid
|
|
37
|
-
// 16. Naming-parity aliases (Figma→CSS onde os nomes divergem)
|
|
38
|
-
//
|
|
39
|
-
// =============================================================================
|
|
40
|
-
@use "sass:map";
|
|
41
|
-
|
|
42
|
-
@mixin matcha-css-custom-properties($theme) {
|
|
43
|
-
$is-dark: map.get($theme, is-dark);
|
|
44
|
-
$bg: map.get($theme, background);
|
|
45
|
-
$fg: map.get($theme, foreground);
|
|
46
|
-
|
|
47
|
-
// ═════════════════════════════════════════════════════════════════════════
|
|
48
|
-
// LIGHT = Figma oficial (matcha/color/* JSON export hierárquico)
|
|
49
|
-
// DARK = tokens confirmados pelo usuário (flat JSON)
|
|
50
|
-
// ═════════════════════════════════════════════════════════════════════════
|
|
51
|
-
|
|
52
|
-
// ── Surface (9) — matcha/color/surface/* ─────────────────────────────────
|
|
53
|
-
//
|
|
54
|
-
|
|
55
|
-
--matcha-color-surface-bg
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
--matcha-color-surface: #{if($is-dark, #
|
|
60
|
-
--matcha-color-surface-
|
|
61
|
-
|
|
62
|
-
//
|
|
63
|
-
//
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
--matcha-color-surface
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
//
|
|
73
|
-
|
|
74
|
-
//
|
|
75
|
-
--matcha-color-surface-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
--matcha-color-
|
|
81
|
-
--matcha-color-
|
|
82
|
-
|
|
83
|
-
--matcha-color-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
//
|
|
88
|
-
--matcha-color-
|
|
89
|
-
--matcha-color-
|
|
90
|
-
|
|
91
|
-
//
|
|
92
|
-
//
|
|
93
|
-
|
|
94
|
-
--matcha-color-
|
|
95
|
-
--matcha-color-
|
|
96
|
-
--matcha-color-
|
|
97
|
-
--matcha-color-
|
|
98
|
-
--matcha-color-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
//
|
|
105
|
-
//
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
--matcha-color-
|
|
109
|
-
--matcha-color-
|
|
110
|
-
--matcha-color-
|
|
111
|
-
//
|
|
112
|
-
--matcha-color-
|
|
113
|
-
--matcha-color-
|
|
114
|
-
|
|
115
|
-
--matcha-color-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
--matcha-color-
|
|
131
|
-
--matcha-color-
|
|
132
|
-
--matcha-color-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
//
|
|
141
|
-
//
|
|
142
|
-
|
|
143
|
-
--matcha-color-
|
|
144
|
-
--matcha-color-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
--matcha-color-
|
|
150
|
-
|
|
151
|
-
--matcha-color-
|
|
152
|
-
|
|
153
|
-
--matcha-color-
|
|
154
|
-
--matcha-color-
|
|
155
|
-
--matcha-color-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
//
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
//
|
|
166
|
-
//
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
--matcha-color-
|
|
170
|
-
--matcha-color-
|
|
171
|
-
--matcha-color-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
--matcha-color-
|
|
176
|
-
--matcha-color-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
--matcha-color-
|
|
180
|
-
|
|
181
|
-
--matcha-color-
|
|
182
|
-
--matcha-color-
|
|
183
|
-
|
|
184
|
-
--matcha-color-
|
|
185
|
-
--matcha-color-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
--matcha-color-
|
|
191
|
-
--matcha-color-
|
|
192
|
-
--matcha-color-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
--matcha-color-
|
|
197
|
-
--matcha-color-
|
|
198
|
-
--matcha-color-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
--matcha-color-
|
|
203
|
-
--matcha-color-
|
|
204
|
-
--matcha-color-
|
|
205
|
-
--matcha-color-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
--matcha-color-
|
|
209
|
-
--matcha-color-
|
|
210
|
-
--matcha-color-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
--matcha-color-
|
|
214
|
-
--matcha-color-
|
|
215
|
-
--matcha-color-
|
|
216
|
-
--matcha-color-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
--matcha-color-
|
|
220
|
-
--matcha-color-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
--matcha-color-
|
|
224
|
-
--matcha-color-
|
|
225
|
-
--matcha-color-
|
|
226
|
-
--matcha-color-
|
|
227
|
-
--matcha-color-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
--matcha-color-
|
|
232
|
-
--matcha-color-
|
|
233
|
-
--matcha-color-
|
|
234
|
-
--matcha-color-
|
|
235
|
-
--matcha-color-
|
|
236
|
-
--matcha-color-
|
|
237
|
-
--matcha-color-
|
|
238
|
-
--matcha-color-
|
|
239
|
-
--matcha-color-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
--matcha-color-
|
|
244
|
-
--matcha-color-
|
|
245
|
-
--matcha-color-
|
|
246
|
-
--matcha-color-
|
|
247
|
-
--matcha-color-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
--matcha-
|
|
255
|
-
--matcha-
|
|
256
|
-
--matcha-
|
|
257
|
-
--matcha-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
--matcha-
|
|
261
|
-
--matcha-
|
|
262
|
-
--matcha-
|
|
263
|
-
--matcha-
|
|
264
|
-
|
|
265
|
-
//
|
|
266
|
-
--matcha-
|
|
267
|
-
--matcha-
|
|
268
|
-
--matcha-
|
|
269
|
-
--matcha-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
--matcha-
|
|
273
|
-
--matcha-
|
|
274
|
-
|
|
275
|
-
--matcha-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
--matcha-
|
|
279
|
-
--matcha-
|
|
280
|
-
--matcha-
|
|
281
|
-
--matcha-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
--matcha-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
--matcha-
|
|
288
|
-
--matcha-
|
|
289
|
-
--matcha-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
--matcha-
|
|
293
|
-
--matcha-
|
|
294
|
-
--matcha-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
//
|
|
299
|
-
--matcha-
|
|
300
|
-
--matcha-
|
|
301
|
-
--matcha-
|
|
302
|
-
--matcha-
|
|
303
|
-
--matcha-
|
|
304
|
-
--matcha-
|
|
305
|
-
--matcha-
|
|
306
|
-
--matcha-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
--matcha-
|
|
310
|
-
--matcha-
|
|
311
|
-
--matcha-
|
|
312
|
-
--matcha-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
--matcha-
|
|
316
|
-
--matcha-
|
|
317
|
-
--matcha-
|
|
318
|
-
--matcha-
|
|
319
|
-
--matcha-
|
|
320
|
-
--matcha-
|
|
321
|
-
--matcha-
|
|
322
|
-
--matcha-
|
|
323
|
-
--matcha-
|
|
324
|
-
|
|
325
|
-
--matcha-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
//
|
|
329
|
-
--matcha-
|
|
330
|
-
--matcha-
|
|
331
|
-
--matcha-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
--matcha-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
--matcha-
|
|
338
|
-
--matcha-
|
|
339
|
-
--matcha-
|
|
340
|
-
--matcha-
|
|
341
|
-
--matcha-
|
|
342
|
-
--matcha-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
--matcha-
|
|
347
|
-
--matcha-
|
|
348
|
-
--matcha-
|
|
349
|
-
--matcha-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
//
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
--matcha-
|
|
356
|
-
--matcha-
|
|
357
|
-
--matcha-
|
|
358
|
-
--matcha-
|
|
359
|
-
--matcha-
|
|
360
|
-
--matcha-
|
|
361
|
-
--matcha-
|
|
362
|
-
--matcha-
|
|
363
|
-
--matcha-
|
|
364
|
-
--matcha-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
--matcha-
|
|
369
|
-
--matcha-
|
|
370
|
-
--matcha-
|
|
371
|
-
|
|
372
|
-
//
|
|
373
|
-
--matcha-
|
|
374
|
-
--matcha-
|
|
375
|
-
--matcha-
|
|
376
|
-
--matcha-
|
|
377
|
-
--matcha-
|
|
378
|
-
--matcha-
|
|
379
|
-
--matcha-
|
|
380
|
-
--matcha-
|
|
381
|
-
--matcha-
|
|
382
|
-
--matcha-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
--matcha-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
--matcha-
|
|
389
|
-
--matcha-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
--matcha-
|
|
393
|
-
--matcha-
|
|
394
|
-
--matcha-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
--matcha-leading-
|
|
398
|
-
--matcha-leading-
|
|
399
|
-
--matcha-leading-
|
|
400
|
-
--matcha-leading-
|
|
401
|
-
--matcha-leading-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
--matcha-
|
|
405
|
-
--matcha-
|
|
406
|
-
--matcha-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
--matcha-
|
|
411
|
-
--matcha-
|
|
412
|
-
--matcha-
|
|
413
|
-
--matcha-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
--matcha-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
--matcha-
|
|
420
|
-
--matcha-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
--matcha-
|
|
426
|
-
--matcha-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
--matcha-
|
|
432
|
-
--matcha-
|
|
433
|
-
|
|
434
|
-
--matcha-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
--matcha-
|
|
439
|
-
--matcha-
|
|
440
|
-
--matcha-
|
|
441
|
-
--matcha-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
--matcha-
|
|
447
|
-
--matcha-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
--matcha-
|
|
452
|
-
--matcha-
|
|
453
|
-
--matcha-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
--matcha-
|
|
458
|
-
--matcha-
|
|
459
|
-
--matcha-
|
|
460
|
-
--matcha-
|
|
461
|
-
|
|
462
|
-
//
|
|
463
|
-
--matcha-
|
|
464
|
-
--matcha-
|
|
465
|
-
--matcha-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
--matcha-
|
|
470
|
-
--matcha-
|
|
471
|
-
--matcha-
|
|
472
|
-
|
|
473
|
-
--matcha-
|
|
474
|
-
--matcha-
|
|
475
|
-
|
|
476
|
-
--matcha-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
--matcha-
|
|
480
|
-
--matcha-
|
|
481
|
-
--matcha-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
--matcha-
|
|
486
|
-
--matcha-
|
|
487
|
-
--matcha-
|
|
488
|
-
--matcha-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
--matcha-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
--matcha-
|
|
496
|
-
--matcha-
|
|
497
|
-
|
|
498
|
-
--matcha-
|
|
499
|
-
|
|
500
|
-
--matcha-
|
|
501
|
-
--matcha-
|
|
502
|
-
--matcha-
|
|
503
|
-
--matcha-
|
|
504
|
-
|
|
505
|
-
//
|
|
506
|
-
--matcha-
|
|
507
|
-
--matcha-
|
|
508
|
-
--matcha-
|
|
509
|
-
--matcha-
|
|
510
|
-
|
|
511
|
-
--matcha-
|
|
512
|
-
--matcha-
|
|
513
|
-
--matcha-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
--matcha-grid-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
--matcha-grid-
|
|
524
|
-
|
|
525
|
-
--matcha-grid-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
--matcha-grid-
|
|
529
|
-
--matcha-grid-
|
|
530
|
-
--matcha-grid-
|
|
531
|
-
|
|
532
|
-
--matcha-grid-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
//
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
--matcha-
|
|
542
|
-
|
|
543
|
-
--matcha-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
--matcha-
|
|
547
|
-
|
|
548
|
-
//
|
|
549
|
-
--matcha-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
--matcha-
|
|
555
|
-
--matcha-
|
|
556
|
-
--matcha-
|
|
557
|
-
--matcha-
|
|
558
|
-
--matcha-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
//
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
1
|
+
// =============================================================================
|
|
2
|
+
// MATCHA DESIGN SYSTEM — Token Source (CSS Custom Properties)
|
|
3
|
+
// =============================================================================
|
|
4
|
+
//
|
|
5
|
+
// Emits :root variables for Light mode + [data-theme="dark"] overrides,
|
|
6
|
+
// enabling runtime theming without Sass recompilation.
|
|
7
|
+
//
|
|
8
|
+
// 1:1 PARIDADE com Figma variables em DS-PAINEL (fileKey K673r19KQE8lm2S74nQ5ob):
|
|
9
|
+
// - matcha/primitives (99 vars) → primitives section below
|
|
10
|
+
// - matcha/colors (117 vars) → semantic color sections below
|
|
11
|
+
// - matcha/interaction (4 vars) → via matcha/color/interaction/* aliases
|
|
12
|
+
// - matcha/text/* (30 styles) → text-* + leading-* + tracking-* props
|
|
13
|
+
// - matcha/elevation (4 styles) → shadow-1..4
|
|
14
|
+
// - matcha/grid (6 styles) → grid-col-* + grid-offset-*
|
|
15
|
+
//
|
|
16
|
+
// CONVENÇÃO:
|
|
17
|
+
// - Nome token Figma: `matcha/category/subcategory/variant` (slash)
|
|
18
|
+
// - Nome CSS var: `--matcha-category-subcategory-variant` (hyphen)
|
|
19
|
+
// ex.: `matcha/color/surface/card` ↔ `--matcha-color-surface-card`
|
|
20
|
+
//
|
|
21
|
+
// ORDEM DO ARQUIVO (escalável, do mais genérico → mais específico):
|
|
22
|
+
// 1. Surface (camadas de fundo)
|
|
23
|
+
// 2. Text (cores de texto semântico)
|
|
24
|
+
// 3. Icon
|
|
25
|
+
// 4. Interaction (disabled, focus)
|
|
26
|
+
// 5. Neutral
|
|
27
|
+
// 6. Elevation (surface layers + shadow)
|
|
28
|
+
// 7. Brand — Accent primário + Accent-2 secundário
|
|
29
|
+
// 8. Brand — Primary
|
|
30
|
+
// 9. Feedback — Success, Danger, Warn, Info
|
|
31
|
+
// 10. Data — Chart series + decorative palette
|
|
32
|
+
// 11. Typography — font/size/weight/leading/tracking
|
|
33
|
+
// 12. Spacing / Radius / Border
|
|
34
|
+
// 13. Motion / Opacity / State layers
|
|
35
|
+
// 14. Icon sizes / Touch targets / Avatar
|
|
36
|
+
// 15. Layout — Z-index / Grid
|
|
37
|
+
// 16. Naming-parity aliases (Figma→CSS onde os nomes divergem)
|
|
38
|
+
//
|
|
39
|
+
// =============================================================================
|
|
40
|
+
@use "sass:map";
|
|
41
|
+
|
|
42
|
+
@mixin matcha-css-custom-properties($theme) {
|
|
43
|
+
$is-dark: map.get($theme, is-dark);
|
|
44
|
+
$bg: map.get($theme, background);
|
|
45
|
+
$fg: map.get($theme, foreground);
|
|
46
|
+
|
|
47
|
+
// ═════════════════════════════════════════════════════════════════════════
|
|
48
|
+
// LIGHT = Figma oficial (matcha/color/* JSON export hierárquico)
|
|
49
|
+
// DARK = tokens confirmados pelo usuário (flat JSON)
|
|
50
|
+
// ═════════════════════════════════════════════════════════════════════════
|
|
51
|
+
|
|
52
|
+
// ── Surface (9) — matcha/color/surface/* ─────────────────────────────────
|
|
53
|
+
// 1:1 Figma DSV3 (Light + Dark JSON export 2026-05-29).
|
|
54
|
+
// Light mode: sage-tinted neutrals (2–4% green hue da marca) + hierarquia perceptível.
|
|
55
|
+
--matcha-color-surface-bg: #{if($is-dark, #111318, #f1f4f1)};
|
|
56
|
+
// bg-alpha light usa cor BASE distinta (#f0f2f5) — não é #f1f4f1 com alpha.
|
|
57
|
+
// Decisão Figma intencional pra sutil shift de tint no estado transparente.
|
|
58
|
+
--matcha-color-surface-bg-alpha: #{if($is-dark, rgba(#111318, .5), rgba(#f0f2f5, .5))};
|
|
59
|
+
--matcha-color-surface-bg-inverse: #{if($is-dark, #f0f2f5, #111318)};
|
|
60
|
+
--matcha-color-surface-bg-inverse-alpha: #{if($is-dark, rgba(#f0f2f5, .5), rgba(#111318, .5))};
|
|
61
|
+
|
|
62
|
+
// Card soft default — light #f7fcf7 (off-white com tint sage muito sutil).
|
|
63
|
+
// Reduz glare contra surface-bg #f1f4f1 (Δ ~5 luminance). Pure white só pra
|
|
64
|
+
// floating overlays via surface-card-strong (modal, command-palette).
|
|
65
|
+
// Pattern Linear / Vercel / Notion: soft cards default + bright float.
|
|
66
|
+
--matcha-color-surface: #{if($is-dark, #1c1f26, #f7fcf7)};
|
|
67
|
+
--matcha-color-surface-card: #{if($is-dark, #1c1f26, #f7fcf7)};
|
|
68
|
+
// Card strong — pure white (light) / lifted dark, pra floating overlays
|
|
69
|
+
// que precisam máximo destaque sobre scrim. Modal, popover, dropdown,
|
|
70
|
+
// command-palette. NÃO usar pra cards inline — vira agressivo.
|
|
71
|
+
--matcha-color-surface-card-strong: #{if($is-dark, #262a32, #ffffff)};
|
|
72
|
+
// Canvas aninhada dentro de card (preview stage, code body, inset panels)
|
|
73
|
+
// Light: sage (= bg da page, cria recorte sutil sobre card off-white)
|
|
74
|
+
// Dark: mais clara que card (inverte lógica, dá profundidade em vez de buraco)
|
|
75
|
+
--matcha-color-surface-inner: #{if($is-dark, #262a32, #f1f4f1)};
|
|
76
|
+
// card-alpha light usa #ffffff base (não #f7fcf7) — overlay/zebra com white puro
|
|
77
|
+
--matcha-color-surface-card-alpha: #{if($is-dark, rgba(#1c1f26, .5), rgba(#ffffff, .85))};
|
|
78
|
+
--matcha-color-surface-card-inverse: #{if($is-dark, #ffffff, #1c1f26)};
|
|
79
|
+
|
|
80
|
+
--matcha-color-surface-sidebar: #{if($is-dark, #0d0f14, #e4ebe5)};
|
|
81
|
+
--matcha-color-surface-sidebar-hover: #{if($is-dark, #161920, #d8e1da)};
|
|
82
|
+
// table-row-hover light: neutral #f4f4f4 (Figma — não tinted sage)
|
|
83
|
+
--matcha-color-surface-table-row-hover: #{if($is-dark, #151a22, #f4f4f4)};
|
|
84
|
+
|
|
85
|
+
// Border sólido e visível (era rgba(0,0,0,.08) = invisível sobre sage bg)
|
|
86
|
+
--matcha-color-surface-border: #{if($is-dark, rgba(255,255,255,.12), #e1e7e2)};
|
|
87
|
+
// Border mais forte pra cards elevados (hero, playground — com shadow)
|
|
88
|
+
--matcha-color-surface-border-strong: #{if($is-dark, rgba(255,255,255,.24), #c8d2ca)};
|
|
89
|
+
--matcha-color-surface-hover: #{if($is-dark, rgba(#111318, .5), rgba(#e4ebe5, .5))};
|
|
90
|
+
|
|
91
|
+
// Aliases (flat) — usados massivamente
|
|
92
|
+
// Light mode softening 2026-05-18: fg de #1a1d21 (17:1, "tinta preta") → #2a2d33 (12:1 AAA, "tinta carvão").
|
|
93
|
+
// Inspiração: tom entre Linear (#1a1d21, mais pesado) e GitHub (#1f2328) — reduz fatiga em sessions longas.
|
|
94
|
+
--matcha-color-bg: #{if($is-dark, #111318, #f1f4f1)};
|
|
95
|
+
--matcha-color-fg: #{if($is-dark, #e8eaed, #2a2d33)};
|
|
96
|
+
--matcha-color-fg-alpha: #{if($is-dark, rgba(#e8eaed, .5), rgba(#2a2d33, .5))};
|
|
97
|
+
--matcha-color-fg-inverse: #{if($is-dark, #2a2d33, #e8eaed)};
|
|
98
|
+
--matcha-color-fg-inverse-alpha: #{if($is-dark, rgba(#2a2d33, .5), rgba(#e8eaed, .5))};
|
|
99
|
+
--matcha-color-border: #{if($is-dark, rgba(255,255,255,.12), #e1e7e2)};
|
|
100
|
+
|
|
101
|
+
// ── Text (9) — matcha/color/text/* ───────────────────────────────────────
|
|
102
|
+
// Light mode softening 2026-05-18 — todos os tons recuados ~1 step pra reduzir
|
|
103
|
+
// peso visual sem perder hierarquia. Contrastes recalculados sobre card #f7fcf7:
|
|
104
|
+
// primary #2a2d33 → 12.0:1 (AAA, antes era #1a1d21 17:1 = exagero)
|
|
105
|
+
// secondary #5a6066 → 6.8:1 (AAA Large + AA Normal, antes #4a5056 8.5:1)
|
|
106
|
+
// muted #6e7681 → 5.2:1 (AA, antes #5a6a5e 7.4:1)
|
|
107
|
+
// label #7a818a → 4.6:1 (AA, antes #6b7177 5.9:1)
|
|
108
|
+
--matcha-color-text-primary: #{if($is-dark, #e8eaed, #2a2d33)};
|
|
109
|
+
--matcha-color-text-inverse: #{if($is-dark, #2a2d33, #e8eaed)};
|
|
110
|
+
--matcha-color-text-secondary: #{if($is-dark, rgba(255,255,255,.7), #5a6066)};
|
|
111
|
+
// Muted: GitHub-ish neutral (antes era sage-tinted #5a6a5e — verde demais em form helper text)
|
|
112
|
+
--matcha-color-text-muted: #{if($is-dark, #a8b5a0, #6e7681)};
|
|
113
|
+
--matcha-color-text-label: #{if($is-dark, #bdc1c6, #7a818a)};
|
|
114
|
+
// Placeholder: #7a818a (4.5:1 sobre card — passa AA mantendo low-emphasis)
|
|
115
|
+
--matcha-color-text-placeholder: #{if($is-dark, #6e747a, #7a818a)};
|
|
116
|
+
--matcha-color-text-hint: #{if($is-dark, #9aa0a6, #7a818a)};
|
|
117
|
+
--matcha-color-text-static-light: #ffffff;
|
|
118
|
+
--matcha-color-text-static-dark: #1a1d21;
|
|
119
|
+
|
|
120
|
+
// ── Icon (2) — matcha/color/icon/* ───────────────────────────────────────
|
|
121
|
+
// Light mode softening 2026-05-18:
|
|
122
|
+
// default #5f656b → #75767a — recua ícones decorativos (sort, leading) pra não competir com texto
|
|
123
|
+
// active #1a1d21 → #3d4248 — ainda firme mas menos "tinta china" em toggles/sortable headers
|
|
124
|
+
--matcha-color-icon-default: #{if($is-dark, #9aa0a6, #75767a)};
|
|
125
|
+
--matcha-color-icon-active: #{if($is-dark, #e8eaed, #3d4248)};
|
|
126
|
+
|
|
127
|
+
// ── Interaction (4) — matcha/color/interaction/* ─────────────────────────
|
|
128
|
+
// Light mode: disabled sólido com sage tint (antes alpha sobre bg = inconsistente)
|
|
129
|
+
--matcha-color-interaction-disabled-bg: #{if($is-dark, #282c34, #cfd6d1)};
|
|
130
|
+
--matcha-color-interaction-disabled-bg-alpha: #{if($is-dark, rgba(#282c34, .5), rgba(#cfd6d1, .5))};
|
|
131
|
+
--matcha-color-interaction-disabled-fg: #{if($is-dark, rgba(#e8eaed, .38), #8a9090)};
|
|
132
|
+
--matcha-color-interaction-disabled-border: #{if($is-dark, rgba(#e8eaed, .38), #c8d2ca)};
|
|
133
|
+
--matcha-color-focus-ring: #{if($is-dark, #a8d94e, #43a047)};
|
|
134
|
+
// Aliases legados
|
|
135
|
+
--matcha-color-disabled: #{if($is-dark, #282c34, #cfd6d1)};
|
|
136
|
+
--matcha-color-disabled-fg: #{if($is-dark, rgba(#e8eaed, .38), #8a9090)};
|
|
137
|
+
--matcha-color-disabled-border: #{if($is-dark, rgba(#e8eaed, .38), #c8d2ca)};
|
|
138
|
+
--matcha-color-disabled-bg: #{if($is-dark, #282c34, #cfd6d1)};
|
|
139
|
+
|
|
140
|
+
// ── Neutral (4 tokens Figma matcha/color/neutral/*) ───────────────────────
|
|
141
|
+
// Cor base pra botões e controles sem ênfase semântica (basic, ghost default).
|
|
142
|
+
// Light: sage-tinted grey | Dark: grey neutro escuro.
|
|
143
|
+
--matcha-color-neutral: #{if($is-dark, #282c34, #e4ebe5)};
|
|
144
|
+
--matcha-color-neutral-contrast: #{if($is-dark, #e8eaed, #1a1d21)};
|
|
145
|
+
--matcha-color-neutral-alpha: #{if($is-dark, rgba(#e8eaed, .1), rgba(#1a1d21, .08))};
|
|
146
|
+
--matcha-color-neutral-hover: #{if($is-dark, #333842, #d8e1da)};
|
|
147
|
+
|
|
148
|
+
// ── Elevation (6) — matcha/color/elevation/* ─────────────────────────────
|
|
149
|
+
--matcha-color-elevation-surface-1: #{if($is-dark, #1c1f26, #f8faf8)}; // cards, dropdowns (sage)
|
|
150
|
+
--matcha-color-elevation-surface-2: #{if($is-dark, #262a32, #ffffff)}; // menus, floating
|
|
151
|
+
--matcha-color-elevation-surface-3: #{if($is-dark, #2e333c, #ffffff)}; // modals, drawers
|
|
152
|
+
// Shadow base: Figma light usa tinta accent #1A2C1E (não preto puro), dark usa #000000
|
|
153
|
+
--matcha-color-elevation-shadow: #{if($is-dark, #000000, #1a2c1e)};
|
|
154
|
+
--matcha-color-elevation-shadow-tint: #{if($is-dark, #000000, #1a2c1e)}; // tint da marca pra shadows light
|
|
155
|
+
--matcha-color-elevation-scrim: #000000;
|
|
156
|
+
// Figma matcha/color/state-layer/fg (camada sobre interações)
|
|
157
|
+
--matcha-color-state-layer-fg: #{if($is-dark, #ffffff, #000000)};
|
|
158
|
+
|
|
159
|
+
// ── Accent (10) — matcha/color/accent/* ──────────────────────────────────
|
|
160
|
+
// Brand inChurch: lime/chartreuse #86BD00 (hue 78°, "matcha tea").
|
|
161
|
+
// Brand bright #86BD00 com white dá 2.25:1 (fail UI). Light mode escurece pra
|
|
162
|
+
// #6E9A00 (3.31:1 — passa WCAG UI/large text mínimo 3:1) mantendo a MESMA hue
|
|
163
|
+
// 78° pra preservar identidade lime. Tradeoff aceito 2026-05-18: accent é usado
|
|
164
|
+
// praticamente só em buttons (CTA filled c/ label branco) onde 3:1 UI é OK.
|
|
165
|
+
// Dark mode: lima bright #a8d94e + label preto (~11:1 AAA).
|
|
166
|
+
// accent-contrast 1:1 Figma DSV3: rgba(0,0,0,.87) em AMBOS os modos (Light + Dark).
|
|
167
|
+
// É label-on-accent ripple/text token, semantica é "preto sobre amarelo-lima". Pra label
|
|
168
|
+
// branco em Filled buttons use accent/text-on (branco no Light / quase-preto no Dark).
|
|
169
|
+
--matcha-color-accent: #{if($is-dark, #a8d94e, #54a71d)};
|
|
170
|
+
--matcha-color-accent-contrast: rgba(0,0,0,.87);
|
|
171
|
+
--matcha-color-accent-contrast-alpha: rgba(0,0,0,.1);
|
|
172
|
+
// Figma matcha/color/accent/text-on — branco puro Light / quase preto Dark.
|
|
173
|
+
// Dedicado pra foreground sobre accent/default em Filled buttons, icon buttons.
|
|
174
|
+
// Garante contraste ≥ 3:1 em ambos modos (supera accent/contrast que é preto fixo).
|
|
175
|
+
--matcha-color-accent-text-on: #{if($is-dark, #1a1d21, #ffffff)};
|
|
176
|
+
--matcha-color-accent-alpha: #{if($is-dark, rgba(#a8d94e, .1), rgba(#54a71d, .1))};
|
|
177
|
+
// Light/dark auxiliares: spring green tint (hue 143° matching accent base)
|
|
178
|
+
--matcha-color-accent-light: #{if($is-dark, #b9f6ca, #b9e3a3)};
|
|
179
|
+
--matcha-color-accent-dark: #{if($is-dark, #c5e1a5, #3a7515)};
|
|
180
|
+
// Hover/pressed: step ~10% darker mesma hue (3.0:1 → 3.75:1 → 4.7:1)
|
|
181
|
+
--matcha-color-accent-hover: #{if($is-dark, #bee57a, #4b9519)};
|
|
182
|
+
--matcha-color-accent-pressed: #{if($is-dark, #d4eea0, #428316)};
|
|
183
|
+
// Surface tints — light spring green
|
|
184
|
+
--matcha-color-accent-surface-hover: #{if($is-dark, #161e12, #e8f3dc)};
|
|
185
|
+
--matcha-color-accent-surface-pressed: #{if($is-dark, #1f2d18, #cbe4ab)};
|
|
186
|
+
|
|
187
|
+
// ── Accent Secondary (teal — 4 tokens Figma matcha/color/accent-2/*) ─────
|
|
188
|
+
// Light #00796b (teal-700) | Dark #4fb7ad (teal-light)
|
|
189
|
+
--matcha-color-accent-2: #{if($is-dark, #4fb7ad, #00796b)};
|
|
190
|
+
--matcha-color-accent-2-contrast: #ffffff;
|
|
191
|
+
--matcha-color-accent-2-alpha: #{if($is-dark, rgba(#4fb7ad, .12), rgba(#00796b, .10))};
|
|
192
|
+
--matcha-color-accent-2-surface: #{if($is-dark, #1d332e, #e0f0ee)};
|
|
193
|
+
|
|
194
|
+
// ── Primary (10) — matcha/color/primary/* ────────────────────────────────
|
|
195
|
+
// Light #1664c2 (blue-700) | Dark #64b5f6 (blue-300)
|
|
196
|
+
--matcha-color-primary: #{if($is-dark, #64b5f6, #1664c2)};
|
|
197
|
+
--matcha-color-primary-contrast: #{if($is-dark, rgba(0,0,0,.87), #ffffff)};
|
|
198
|
+
--matcha-color-primary-contrast-alpha: #{if($is-dark, rgba(0,0,0,.1), rgba(255,255,255,.1))};
|
|
199
|
+
--matcha-color-primary-alpha: #{if($is-dark, rgba(#64b5f6, .1), rgba(#1664c2, .1))};
|
|
200
|
+
--matcha-color-primary-light: #{if($is-dark, #bbdefb, #b3d7fd)};
|
|
201
|
+
--matcha-color-primary-dark: #{if($is-dark, #90caf9, #0d3c8c)};
|
|
202
|
+
--matcha-color-primary-hover: #{if($is-dark, #90caf9, #2576d2)};
|
|
203
|
+
--matcha-color-primary-pressed: #{if($is-dark, #bbdefb, #378ce1)};
|
|
204
|
+
--matcha-color-primary-surface-hover: #{if($is-dark, #141922, #e4eefa)};
|
|
205
|
+
--matcha-color-primary-surface-pressed: #{if($is-dark, #1a2436, #cddef5)};
|
|
206
|
+
|
|
207
|
+
// ── Feedback — Success (9) ───────────────────────────────────────────────
|
|
208
|
+
--matcha-color-success: #{if($is-dark, #69f0ae, #2e7d32)};
|
|
209
|
+
--matcha-color-success-contrast: #{if($is-dark, rgba(0,0,0,.87), #ffffff)};
|
|
210
|
+
--matcha-color-success-contrast-alpha: #{if($is-dark, rgba(0,0,0,.1), rgba(255,255,255,.1))};
|
|
211
|
+
--matcha-color-success-alpha: #{if($is-dark, rgba(#69f0ae, .1), rgba(#2e7d32, .1))};
|
|
212
|
+
--matcha-color-success-hover: #{if($is-dark, #4cd992, #388e3c)};
|
|
213
|
+
--matcha-color-success-pressed: #{if($is-dark, #33c078, #43a047)};
|
|
214
|
+
--matcha-color-success-fill: #{if($is-dark, #43a047, #2e7d32)};
|
|
215
|
+
--matcha-color-success-surface-hover: #{if($is-dark, #121d17, #e8f5e9)};
|
|
216
|
+
--matcha-color-success-surface-pressed: #{if($is-dark, #192f24, #c8e6c9)};
|
|
217
|
+
|
|
218
|
+
// ── Feedback — Danger (9) ────────────────────────────────────────────────
|
|
219
|
+
--matcha-color-danger: #{if($is-dark, #ef9a9a, #c81010)};
|
|
220
|
+
--matcha-color-danger-contrast: #{if($is-dark, rgba(0,0,0,.87), #ffffff)};
|
|
221
|
+
--matcha-color-danger-contrast-alpha: #{if($is-dark, rgba(0,0,0,.1), rgba(255,255,255,.1))};
|
|
222
|
+
--matcha-color-danger-alpha: #{if($is-dark, rgba(#ef9a9a, .1), rgba(#c81010, .1))};
|
|
223
|
+
--matcha-color-danger-hover: #{if($is-dark, #f4b8b8, #da2c2c)};
|
|
224
|
+
--matcha-color-danger-pressed: #{if($is-dark, #f7d0d0, #e64848)};
|
|
225
|
+
--matcha-color-danger-fill: #{if($is-dark, #e53935, #c81010)};
|
|
226
|
+
--matcha-color-danger-surface-hover: #{if($is-dark, #1d1616, #fae8e8)};
|
|
227
|
+
--matcha-color-danger-surface-pressed: #{if($is-dark, #2f2121, #f5d2d2)};
|
|
228
|
+
|
|
229
|
+
// ── Feedback — Warn (9) ──────────────────────────────────────────────────
|
|
230
|
+
// Light #a64e00 (âmbar escuro) | Dark #ffb74d (orange-300)
|
|
231
|
+
--matcha-color-warn: #{if($is-dark, #ffb74d, #a64e00)};
|
|
232
|
+
--matcha-color-warn-contrast: #{if($is-dark, rgba(0,0,0,.87), #ffffff)};
|
|
233
|
+
--matcha-color-warn-contrast-alpha: #{if($is-dark, rgba(0,0,0,.1), rgba(255,255,255,.1))};
|
|
234
|
+
--matcha-color-warn-alpha: #{if($is-dark, rgba(#ffb74d, .1), rgba(#a64e00, .1))};
|
|
235
|
+
--matcha-color-warn-hover: #{if($is-dark, #e69f33, #924200)};
|
|
236
|
+
--matcha-color-warn-pressed: #{if($is-dark, #cc881a, #7e3600)};
|
|
237
|
+
--matcha-color-warn-fill: #{if($is-dark, #fb8c00, #a64e00)};
|
|
238
|
+
--matcha-color-warn-surface-hover: #{if($is-dark, #1e1910, #fcf0e1)};
|
|
239
|
+
--matcha-color-warn-surface-pressed: #{if($is-dark, #2f2616, #f8e1c3)};
|
|
240
|
+
|
|
241
|
+
// ── Feedback — Info (8) ──────────────────────────────────────────────────
|
|
242
|
+
--matcha-color-info: #{if($is-dark, #4090d8, #0a2fc2)};
|
|
243
|
+
--matcha-color-info-contrast: #ffffff;
|
|
244
|
+
--matcha-color-info-contrast-alpha: rgba(255,255,255,.1);
|
|
245
|
+
--matcha-color-info-alpha: #{if($is-dark, rgba(#4090d8, .1), rgba(#0a2fc2, .1))};
|
|
246
|
+
--matcha-color-info-hover: #{if($is-dark, #5aa0e0, #294cd4)};
|
|
247
|
+
--matcha-color-info-pressed: #{if($is-dark, #74b0e8, #4265e0)};
|
|
248
|
+
--matcha-color-info-surface-hover: #{if($is-dark, #0f141e, #ebeefa)};
|
|
249
|
+
--matcha-color-info-surface-pressed: #{if($is-dark, #131f31, #d8def5)};
|
|
250
|
+
|
|
251
|
+
// ── Feedback namespace (matcha/color/feedback/* canon DSV3) ───────────────
|
|
252
|
+
// Aliases semânticos pros tokens base — namespace dedicado pra status/banners/
|
|
253
|
+
// table row variants. Naming match Figma DSV3 (flat: feedback/info, sem suffix).
|
|
254
|
+
--matcha-color-feedback-info: var(--matcha-color-info);
|
|
255
|
+
--matcha-color-feedback-success: var(--matcha-color-success);
|
|
256
|
+
--matcha-color-feedback-warn: var(--matcha-color-warn);
|
|
257
|
+
--matcha-color-feedback-danger: var(--matcha-color-danger);
|
|
258
|
+
|
|
259
|
+
// Variantes alpha pra row backgrounds, badges filled-alpha, etc.
|
|
260
|
+
--matcha-color-feedback-info-alpha: var(--matcha-color-info-alpha);
|
|
261
|
+
--matcha-color-feedback-success-alpha: var(--matcha-color-success-alpha);
|
|
262
|
+
--matcha-color-feedback-warn-alpha: var(--matcha-color-warn-alpha);
|
|
263
|
+
--matcha-color-feedback-danger-alpha: var(--matcha-color-danger-alpha);
|
|
264
|
+
|
|
265
|
+
// Surface hover (bg tinted pra hover em row de table)
|
|
266
|
+
--matcha-color-feedback-info-surface-hover: var(--matcha-color-info-surface-hover);
|
|
267
|
+
--matcha-color-feedback-success-surface-hover: var(--matcha-color-success-surface-hover);
|
|
268
|
+
--matcha-color-feedback-warn-surface-hover: var(--matcha-color-warn-surface-hover);
|
|
269
|
+
--matcha-color-feedback-danger-surface-hover: var(--matcha-color-danger-surface-hover);
|
|
270
|
+
|
|
271
|
+
// ── Palette (18) — matcha/color/palette/* ────────────────────────────────
|
|
272
|
+
--matcha-color-palette-teal: #{if($is-dark, #4fb7ad, #00796b)};
|
|
273
|
+
--matcha-color-palette-teal-light: #{if($is-dark, #009688, #4fb7ad)};
|
|
274
|
+
--matcha-color-palette-teal-alpha: #{if($is-dark, rgba(#4fb7ad, .1), rgba(#00796b, .1))};
|
|
275
|
+
--matcha-color-palette-light-blue: #{if($is-dark, #54c5f7, #0288d1)};
|
|
276
|
+
--matcha-color-palette-light-blue-light: #{if($is-dark, #03a9f4, #54c5f7)};
|
|
277
|
+
--matcha-color-palette-light-blue-alpha: #{if($is-dark, rgba(#54c5f7, .1), rgba(#0288d1, .1))};
|
|
278
|
+
--matcha-color-palette-purple: #{if($is-dark, #bb6ac8, #9c27b0)};
|
|
279
|
+
--matcha-color-palette-purple-light: #{if($is-dark, #9c27b0, #bb6ac8)};
|
|
280
|
+
--matcha-color-palette-purple-alpha: #{if($is-dark, rgba(#bb6ac8, .1), rgba(#9c27b0, .1))};
|
|
281
|
+
--matcha-color-palette-pink: #{if($is-dark, #e46291, #d81b60)};
|
|
282
|
+
--matcha-color-palette-pink-light: #{if($is-dark, #d81b60, #e46291)};
|
|
283
|
+
--matcha-color-palette-pink-alpha: #{if($is-dark, rgba(#e46291, .1), rgba(#d81b60, .1))};
|
|
284
|
+
--matcha-color-palette-orange: #{if($is-dark, #f9a25d, #e65100)};
|
|
285
|
+
--matcha-color-palette-orange-light: #{if($is-dark, #f77814, #f9a25d)};
|
|
286
|
+
--matcha-color-palette-orange-alpha: #{if($is-dark, rgba(#f9a25d, .1), rgba(#e65100, .1))};
|
|
287
|
+
--matcha-color-palette-yellow: #{if($is-dark, #efd64f, #ffa000)};
|
|
288
|
+
--matcha-color-palette-yellow-light: #{if($is-dark, #e8c300, #efd64f)};
|
|
289
|
+
--matcha-color-palette-yellow-alpha: #{if($is-dark, rgba(#efd64f, .1), rgba(#ffa000, .1))};
|
|
290
|
+
|
|
291
|
+
// ── Chart (5) — matcha/color/chart/* ─────────────────────────────────────
|
|
292
|
+
--matcha-color-chart-series-1: #{if($is-dark, #8782f2, #615ce5)};
|
|
293
|
+
--matcha-color-chart-series-2: #{if($is-dark, #66ba6b, #42a147)};
|
|
294
|
+
--matcha-color-chart-series-3: #{if($is-dark, #f5876b, #ed6645)};
|
|
295
|
+
--matcha-color-chart-series-4: #{if($is-dark, #ffc93d, #c28700)};
|
|
296
|
+
--matcha-color-chart-series-5: #{if($is-dark, #26c2d9, #008094)};
|
|
297
|
+
|
|
298
|
+
// ── Spacing (14 tokens — matches matcha/space/* exato) ────────────────────
|
|
299
|
+
--matcha-space-025: 2px;
|
|
300
|
+
--matcha-space-050: 4px;
|
|
301
|
+
--matcha-space-075: 6px;
|
|
302
|
+
--matcha-space-100: 8px;
|
|
303
|
+
--matcha-space-150: 12px;
|
|
304
|
+
--matcha-space-200: 16px;
|
|
305
|
+
--matcha-space-250: 20px;
|
|
306
|
+
--matcha-space-300: 24px;
|
|
307
|
+
--matcha-space-400: 32px;
|
|
308
|
+
--matcha-space-500: 40px;
|
|
309
|
+
--matcha-space-600: 48px;
|
|
310
|
+
--matcha-space-800: 64px;
|
|
311
|
+
--matcha-space-1000: 80px;
|
|
312
|
+
--matcha-space-1200: 96px;
|
|
313
|
+
|
|
314
|
+
// ── Border radius (8 tokens — matches matcha/radius/* exato) ─────────────
|
|
315
|
+
--matcha-radius-none: 0;
|
|
316
|
+
--matcha-radius-sm: 2px;
|
|
317
|
+
--matcha-radius-md: 4px;
|
|
318
|
+
--matcha-radius-3xs: 6px; // Figma matcha/radius/3xs
|
|
319
|
+
--matcha-radius-lg: 8px;
|
|
320
|
+
--matcha-radius-2xl: 12px; // Figma: 12px (antes code tinha 24, divergia)
|
|
321
|
+
--matcha-radius-xl: 16px;
|
|
322
|
+
--matcha-radius-3xl: 24px; // Figma: matcha/radius/3xl (criado 2026-05-06 pra cobrir uso do utility .radius-24)
|
|
323
|
+
--matcha-radius-pill: 9999px;
|
|
324
|
+
// Alias legado pra usos em páginas de doc (refatorar depois pra usar radius-2xl)
|
|
325
|
+
--matcha-radius-card: var(--matcha-radius-2xl);
|
|
326
|
+
|
|
327
|
+
// ── Border width (4 tokens — matches matcha/border/* exato) ──────────────
|
|
328
|
+
--matcha-border-hairline: 1px; // Subtle borders (card outlines, internal separators)
|
|
329
|
+
--matcha-border-thin: 2px; // Primary borders (button outlines, form fields, active states)
|
|
330
|
+
--matcha-border-medium: 4px; // Emphasis borders (status indicators, nav-item indicators, focus rings on large)
|
|
331
|
+
--matcha-border-thick: 8px; // Heavy borders (section dividers, decoration)
|
|
332
|
+
|
|
333
|
+
// ── Font family (1 token) ────────────────────────────────────────────────
|
|
334
|
+
--matcha-font-family: 'Manrope', sans-serif;
|
|
335
|
+
|
|
336
|
+
// ── Font size (13 tokens — matches matcha/font/size/* from Figma) ─────────
|
|
337
|
+
--matcha-font-size-3xs: 8px;
|
|
338
|
+
--matcha-font-size-2xs: 10px;
|
|
339
|
+
--matcha-font-size-xs: 12px;
|
|
340
|
+
--matcha-font-size-sm: 14px;
|
|
341
|
+
--matcha-font-size-md: 16px;
|
|
342
|
+
--matcha-font-size-lg: 18px;
|
|
343
|
+
--matcha-font-size-xl: 20px;
|
|
344
|
+
--matcha-font-size-2xl: 24px;
|
|
345
|
+
--matcha-font-size-3xl: 32px;
|
|
346
|
+
--matcha-font-size-4xl: 36px;
|
|
347
|
+
--matcha-font-size-5xl: 48px;
|
|
348
|
+
--matcha-font-size-6xl: 60px;
|
|
349
|
+
--matcha-font-size-7xl: 72px;
|
|
350
|
+
|
|
351
|
+
// ── Font weight (8 tokens — matches matcha/font/weight/* exato) ──────────
|
|
352
|
+
// Canônico Figma: extralight (200), light (300), normal (400), medium (500),
|
|
353
|
+
// semi-bold (600), bold (700), extrabold (800), black (900)
|
|
354
|
+
// Código mantém regular/semibold por retrocompat + aliases Figma-exatos
|
|
355
|
+
--matcha-weight-extralight: 200; // Figma canonical
|
|
356
|
+
--matcha-weight-light: 300; // Figma canonical
|
|
357
|
+
--matcha-weight-regular: 400;
|
|
358
|
+
--matcha-weight-normal: 400; // Figma canonical alias
|
|
359
|
+
--matcha-weight-medium: 500;
|
|
360
|
+
--matcha-weight-semibold: 600;
|
|
361
|
+
--matcha-weight-semi-bold: 600; // Figma canonical alias
|
|
362
|
+
--matcha-weight-bold: 700;
|
|
363
|
+
--matcha-weight-extrabold: 800; // Figma VariableID:17195:11 (criado oficialmente)
|
|
364
|
+
--matcha-weight-black: 900;
|
|
365
|
+
|
|
366
|
+
// ── Typography — 15 canonical text styles (1:1 com matcha/text/* Figma) ──
|
|
367
|
+
// 13 styles publicados + `display` e `p-tiny` (recriados no Figma 2026-06-03).
|
|
368
|
+
--matcha-text-display-hero: 36px; // matcha/text/Stat Card (EB 36/40/-1.2)
|
|
369
|
+
--matcha-text-display: 32px; // matcha/text/display (Bold 32/40/-0.3)
|
|
370
|
+
--matcha-text-headline: 24px; // matcha/text/headline (Bold 24/32/-0.3)
|
|
371
|
+
--matcha-text-title-lg: 20px; // matcha/text/title-large (SemiBold 20/28)
|
|
372
|
+
--matcha-text-title-md: 18px; // matcha/text/title-medium (SemiBold 18/24)
|
|
373
|
+
--matcha-text-title-sm: 16px; // matcha/text/title-small (SemiBold 16/22)
|
|
374
|
+
--matcha-text-title-xs: 14px; // matcha/text/title-tiny (ExtraBold 14/20)
|
|
375
|
+
--matcha-text-body-lg: 16px; // matcha/text/p-large (Regular 16/24)
|
|
376
|
+
--matcha-text-body-md: 14px; // matcha/text/p-medium (Regular 14/20)
|
|
377
|
+
--matcha-text-body-sm: 12px; // matcha/text/p-small (Regular 12/16)
|
|
378
|
+
--matcha-text-p-tiny: 11px; // matcha/text/p-tiny (Regular 11/14/0.3)
|
|
379
|
+
--matcha-text-label-lg: 16px; // matcha/text/label-large (Medium 16/22)
|
|
380
|
+
--matcha-text-label-md: 14px; // matcha/text/label-medium (Medium 14/20)
|
|
381
|
+
--matcha-text-label-sm: 12px; // matcha/text/label-small (Medium 12/16)
|
|
382
|
+
--matcha-text-overline: 10px; // matcha/text/Uppercase (SemiBold 10/14/1)
|
|
383
|
+
|
|
384
|
+
// Shorthand aliases (usados massivamente em components/*.scss)
|
|
385
|
+
--matcha-text-xs: var(--matcha-text-p-tiny); // 11px — legendas, metadados
|
|
386
|
+
--matcha-text-sm: var(--matcha-text-body-sm); // 12px — texto auxiliar
|
|
387
|
+
--matcha-text-md: var(--matcha-text-body-md); // 14px — corpo padrão
|
|
388
|
+
--matcha-text-lg: var(--matcha-text-body-lg); // 16px — texto de destaque
|
|
389
|
+
--matcha-text-xl: var(--matcha-text-title-md); // 18px — títulos de grupo
|
|
390
|
+
|
|
391
|
+
// ── Line heights — canônico (matches Figma text styles) ──────────────────
|
|
392
|
+
--matcha-leading-display-hero: 40px; // Stat Card
|
|
393
|
+
--matcha-leading-display: 40px;
|
|
394
|
+
--matcha-leading-headline: 32px;
|
|
395
|
+
--matcha-leading-title-lg: 28px;
|
|
396
|
+
--matcha-leading-title-md: 24px;
|
|
397
|
+
--matcha-leading-title-sm: 22px;
|
|
398
|
+
--matcha-leading-title-xs: 20px; // title-tiny
|
|
399
|
+
--matcha-leading-body-lg: 24px;
|
|
400
|
+
--matcha-leading-body-md: 20px;
|
|
401
|
+
--matcha-leading-body-sm: 16px;
|
|
402
|
+
--matcha-leading-p-tiny: 14px;
|
|
403
|
+
--matcha-leading-label-lg: 22px;
|
|
404
|
+
--matcha-leading-label-md: 20px;
|
|
405
|
+
--matcha-leading-label-sm: 16px;
|
|
406
|
+
--matcha-leading-overline: 14px; // Uppercase
|
|
407
|
+
|
|
408
|
+
// ── Tracking (letter-spacing) — só styles com valor não-zero ─────────────
|
|
409
|
+
--matcha-tracking-display-hero: -1.2px; // Stat Card
|
|
410
|
+
--matcha-tracking-display: -0.3px;
|
|
411
|
+
--matcha-tracking-headline: -0.3px;
|
|
412
|
+
--matcha-tracking-overline: 1px; // Uppercase
|
|
413
|
+
--matcha-tracking-p-tiny: 0.3px;
|
|
414
|
+
|
|
415
|
+
// Shorthand aliases para line-heights (acompanham --matcha-text-*)
|
|
416
|
+
--matcha-leading-xs: var(--matcha-leading-p-tiny); // 14px
|
|
417
|
+
--matcha-leading-sm: var(--matcha-leading-body-sm); // 16px
|
|
418
|
+
--matcha-leading-md: var(--matcha-leading-body-md); // 20px
|
|
419
|
+
--matcha-leading-lg: var(--matcha-leading-body-lg); // 24px
|
|
420
|
+
--matcha-leading-xl: var(--matcha-leading-title-md); // 24px
|
|
421
|
+
|
|
422
|
+
// ── Line height primitives (4 tokens — matches matcha/line-height/*) ─────
|
|
423
|
+
--matcha-line-height-none: 1;
|
|
424
|
+
--matcha-line-height-tight: 1.2;
|
|
425
|
+
--matcha-line-height-normal: 1.5;
|
|
426
|
+
--matcha-line-height-relaxed: 1.75;
|
|
427
|
+
|
|
428
|
+
// ── Letter spacing (primitives + semantic aliases) ───────────────────────
|
|
429
|
+
--matcha-letter-spacing-tight: -0.5px;
|
|
430
|
+
--matcha-letter-spacing-normal: 0px;
|
|
431
|
+
--matcha-letter-spacing-wide: 0.5px;
|
|
432
|
+
--matcha-letter-spacing-wider: 1px;
|
|
433
|
+
// Semantic aliases alinhados com Figma text styles
|
|
434
|
+
--matcha-letter-spacing-button: 0.2px; // matcha/text/button-*
|
|
435
|
+
--matcha-letter-spacing-caption: 0.3px; // matcha/text/caption + link-sm
|
|
436
|
+
|
|
437
|
+
// ── Elevation (4 shadow tokens) ──────────────────────────────────────────
|
|
438
|
+
--matcha-shadow-1: #{if($is-dark, $shadow-1-dark, $shadow-1-light)};
|
|
439
|
+
--matcha-shadow-2: #{if($is-dark, $shadow-2-dark, $shadow-2-light)};
|
|
440
|
+
--matcha-shadow-3: #{if($is-dark, $shadow-3-dark, $shadow-3-light)};
|
|
441
|
+
--matcha-shadow-4: #{if($is-dark, $shadow-4-dark, $shadow-4-light)};
|
|
442
|
+
|
|
443
|
+
// ── Animation (4 tokens — matches matcha/duration/* from Figma) ──────────
|
|
444
|
+
--matcha-duration-instant: 80ms;
|
|
445
|
+
--matcha-duration-fast: 200ms;
|
|
446
|
+
--matcha-duration-normal: 400ms;
|
|
447
|
+
--matcha-duration-slow: 600ms;
|
|
448
|
+
|
|
449
|
+
// ── Easing (4 tokens — matches matcha/easing/* from Figma) ───────────────
|
|
450
|
+
--matcha-easing-standard: cubic-bezier(0.4, 0, 0.2, 1);
|
|
451
|
+
--matcha-easing-accelerated: cubic-bezier(0.4, 0, 1, 1);
|
|
452
|
+
--matcha-easing-decelerated: cubic-bezier(0, 0, 0.2, 1);
|
|
453
|
+
--matcha-easing-emphasized: cubic-bezier(0.2, 0, 0, 1);
|
|
454
|
+
|
|
455
|
+
// ── Opacity (7 tokens — matches matcha/opacity/* from Figma) ─────────────
|
|
456
|
+
--matcha-opacity-hover: 0.04;
|
|
457
|
+
--matcha-opacity-subtle: 0.10;
|
|
458
|
+
--matcha-opacity-medium: 0.20;
|
|
459
|
+
--matcha-opacity-strong: 0.30;
|
|
460
|
+
--matcha-opacity-disabled: 0.38;
|
|
461
|
+
--matcha-opacity-overlay-soft: 0.40;
|
|
462
|
+
// Específico do matcha/option (Figma DSV3 14237:113) — diferente do disabled global (0.38)
|
|
463
|
+
--matcha-opacity-option-disabled: 0.5;
|
|
464
|
+
--matcha-opacity-secondary: 0.54;
|
|
465
|
+
--matcha-opacity-high: 0.87;
|
|
466
|
+
|
|
467
|
+
// ── State layers (matches matcha/state-layer/* from Figma) ────────────────
|
|
468
|
+
--matcha-state-layer-subtle: 0.04; // Figma matcha/state-layer/subtle
|
|
469
|
+
--matcha-state-layer-hover: 0.08; // Figma matcha/state-layer/hover
|
|
470
|
+
--matcha-state-layer-pressed: 0.12; // Figma matcha/state-layer/pressed
|
|
471
|
+
--matcha-state-layer-active: 0.16; // Figma matcha/state-layer/active
|
|
472
|
+
// Aliases legados (usados nos componentes atuais)
|
|
473
|
+
--matcha-state-hover: var(--matcha-state-layer-hover);
|
|
474
|
+
--matcha-state-active: var(--matcha-state-layer-pressed);
|
|
475
|
+
--matcha-state-focus-ring-width: 2px;
|
|
476
|
+
--matcha-state-focus-ring-offset: 2px;
|
|
477
|
+
|
|
478
|
+
// ── Scrim / Overlay (Figma matcha/overlay Type=Modal / Type=Drawer) ──────
|
|
479
|
+
--matcha-scrim-modal: rgba(0, 0, 0, 0.5);
|
|
480
|
+
--matcha-scrim-modal-blur: 6px;
|
|
481
|
+
--matcha-scrim-drawer: rgba(0, 0, 0, 0.3);
|
|
482
|
+
--matcha-scrim-drawer-blur: 4px;
|
|
483
|
+
|
|
484
|
+
// ── Icon sizes (4 tokens — matches matcha/icon/size/* exato) ─────────────
|
|
485
|
+
--matcha-icon-size-sm: 16px;
|
|
486
|
+
--matcha-icon-size-md: 24px;
|
|
487
|
+
--matcha-icon-size-lg: 32px;
|
|
488
|
+
--matcha-icon-size-xl: 48px;
|
|
489
|
+
|
|
490
|
+
// ── Avatar sizes (1:1 com Figma matcha/avatar — Type=Photo, Size variants)
|
|
491
|
+
--matcha-avatar-xs: 24px;
|
|
492
|
+
--matcha-avatar-sm: 32px;
|
|
493
|
+
--matcha-avatar-md: 40px;
|
|
494
|
+
--matcha-avatar-lg: 56px;
|
|
495
|
+
--matcha-avatar-xl: 80px;
|
|
496
|
+
--matcha-avatar-2xl: 96px;
|
|
497
|
+
// Status indicator — 1:1 com Figma (Status ellipse em cada Size variant)
|
|
498
|
+
--matcha-avatar-status-xs: 6px;
|
|
499
|
+
--matcha-avatar-status-sm: 8px;
|
|
500
|
+
--matcha-avatar-status-md: 10px;
|
|
501
|
+
--matcha-avatar-status-lg: 12px;
|
|
502
|
+
--matcha-avatar-status-xl: 14px;
|
|
503
|
+
--matcha-avatar-status-2xl: 16px;
|
|
504
|
+
|
|
505
|
+
// ── Z-index (8 tokens — matches matcha/z-index/* from Figma) ─────────────
|
|
506
|
+
--matcha-z-base: 1;
|
|
507
|
+
--matcha-z-dropdown: 100;
|
|
508
|
+
--matcha-z-sticky: 200;
|
|
509
|
+
--matcha-z-popover: 300;
|
|
510
|
+
--matcha-z-tooltip: 400;
|
|
511
|
+
--matcha-z-modal-bg: 998;
|
|
512
|
+
--matcha-z-modal: 999;
|
|
513
|
+
--matcha-z-overlay: 1000;
|
|
514
|
+
// Panel flutuante (matcha-panel) — acima de modal pra suportar select/menu
|
|
515
|
+
// dentro de modal. Renderizado via portal-to-body fora de stacking contexts.
|
|
516
|
+
--matcha-z-popover-floating: 10001;
|
|
517
|
+
|
|
518
|
+
// ── Grid (22 tokens — 1:1 com matcha/grid/* do Figma) ────────────────────
|
|
519
|
+
// Frames (breakpoints)
|
|
520
|
+
--matcha-grid-frame-mobile: 375px;
|
|
521
|
+
--matcha-grid-frame-tablet: 768px;
|
|
522
|
+
--matcha-grid-frame-notebook: 1360px;
|
|
523
|
+
--matcha-grid-frame-wide: 1920px;
|
|
524
|
+
// Chrome
|
|
525
|
+
--matcha-grid-header-height: 56px;
|
|
526
|
+
--matcha-grid-header-height-mobile: 48px;
|
|
527
|
+
--matcha-grid-sidebar-rail: 72px;
|
|
528
|
+
--matcha-grid-sidebar-submenu: 216px;
|
|
529
|
+
--matcha-grid-sidebar-total: 304px;
|
|
530
|
+
--matcha-grid-sidebar-gap: 16px;
|
|
531
|
+
// Gutters (espaço entre colunas)
|
|
532
|
+
--matcha-grid-gutter-compact: 8px;
|
|
533
|
+
--matcha-grid-gutter-default: 16px;
|
|
534
|
+
--matcha-grid-gutter-wide: 16px;
|
|
535
|
+
--matcha-grid-max-content-width: 1600px;
|
|
536
|
+
// Column widths (largura INDIVIDUAL de coluna) — Figma verdadeiro
|
|
537
|
+
--matcha-grid-col-painel-full: 72px;
|
|
538
|
+
--matcha-grid-col-painel-rail: 88px;
|
|
539
|
+
--matcha-grid-col-painel-compact: 96px;
|
|
540
|
+
--matcha-grid-col-wide-full: 120px;
|
|
541
|
+
--matcha-grid-col-wide-rail: 112px;
|
|
542
|
+
// Content widths (área útil total) — Figma verdadeiro
|
|
543
|
+
--matcha-grid-content-painel-full: 1040px;
|
|
544
|
+
--matcha-grid-content-painel-rail: 1232px;
|
|
545
|
+
--matcha-grid-content-wide-full: 1616px;
|
|
546
|
+
--matcha-grid-content-wide-rail: 1520px;
|
|
547
|
+
|
|
548
|
+
// Public-facing column widths (site institucional/landing — breakpoint-aware)
|
|
549
|
+
--matcha-grid-col-public-desktop: 80px;
|
|
550
|
+
--matcha-grid-col-public-mobile: 80px;
|
|
551
|
+
--matcha-grid-col-public-tablet: 64px;
|
|
552
|
+
|
|
553
|
+
// Horizontal offsets (distância da borda do frame ao primeiro col da grid)
|
|
554
|
+
--matcha-grid-offset-painel-compact: 24px;
|
|
555
|
+
--matcha-grid-offset-painel-full: 304px;
|
|
556
|
+
--matcha-grid-offset-painel-rail: 96px;
|
|
557
|
+
--matcha-grid-offset-wide-full: 304px;
|
|
558
|
+
--matcha-grid-offset-wide-rail: 248px;
|
|
559
|
+
|
|
560
|
+
// ── Breakpoints (6 tokens — Tailwind-aligned, expostos como CSS vars) ────
|
|
561
|
+
// Pra container queries, JS-side responsive logic (`matchMedia`) e media
|
|
562
|
+
// queries inline (`@media (min-width: var(...))` em CSS moderno). Valores
|
|
563
|
+
// alinhados ao padrão Tailwind/Chakra — familiares e cobrem todos os tiers
|
|
564
|
+
// (mobile pequeno até desktop wide). 1:1 com Figma `matcha/bp/*`.
|
|
565
|
+
//
|
|
566
|
+
// NOTA: SCSS `@mixin breakpoint(...)` em `_breakpoints-tokens.scss` usa
|
|
567
|
+
// valores Angular Material legacy (600/1024/1440/1920) — DESALINHADO destes.
|
|
568
|
+
// Em refactors novos, prefira CSS custom prop `var(--matcha-bp-md)` em vez
|
|
569
|
+
// do mixin SCSS.
|
|
570
|
+
--matcha-bp-xs: 480px; // mobile pequeno
|
|
571
|
+
--matcha-bp-sm: 640px; // mobile grande / tablet portrait
|
|
572
|
+
--matcha-bp-md: 768px; // tablet
|
|
573
|
+
--matcha-bp-lg: 1024px; // desktop pequeno
|
|
574
|
+
--matcha-bp-xl: 1280px; // desktop padrão
|
|
575
|
+
--matcha-bp-2xl: 1536px; // desktop grande / wide
|
|
576
|
+
|
|
577
|
+
// ═════════════════════════════════════════════════════════════════════════
|
|
578
|
+
// 16. NAMING-PARITY ALIASES
|
|
579
|
+
// Aliases que espelham o nome exato das variables do Figma, garantindo que
|
|
580
|
+
// dev possa referenciar o token pelo nome que vê no Figma.
|
|
581
|
+
// ═════════════════════════════════════════════════════════════════════════
|
|
582
|
+
|
|
583
|
+
// Figma: matcha/color/surface/background → ↔ --matcha-color-surface-bg
|
|
584
|
+
--matcha-color-surface-background: var(--matcha-color-surface-bg);
|
|
585
|
+
--matcha-color-surface-background-alpha: var(--matcha-color-surface-bg-alpha);
|
|
586
|
+
--matcha-color-surface-background-inverse: var(--matcha-color-surface-bg-inverse);
|
|
587
|
+
|
|
588
|
+
// Figma: matcha/color/neutral/default → ↔ --matcha-color-neutral
|
|
589
|
+
--matcha-color-neutral-default: var(--matcha-color-neutral);
|
|
590
|
+
|
|
591
|
+
// Figma: matcha/color/interaction/focus-ring → ↔ --matcha-color-focus-ring
|
|
592
|
+
--matcha-color-interaction-focus-ring: var(--matcha-color-focus-ring);
|
|
593
|
+
|
|
594
|
+
// Figma: matcha/z-index/{base,dropdown,…} → ↔ --matcha-z-{base,dropdown,…}
|
|
595
|
+
--matcha-z-index-base: var(--matcha-z-base);
|
|
596
|
+
--matcha-z-index-dropdown: var(--matcha-z-dropdown);
|
|
597
|
+
--matcha-z-index-sticky: var(--matcha-z-sticky);
|
|
598
|
+
--matcha-z-index-popover: var(--matcha-z-popover);
|
|
599
|
+
--matcha-z-index-tooltip: var(--matcha-z-tooltip);
|
|
600
|
+
--matcha-z-index-modal-bg: var(--matcha-z-modal-bg);
|
|
601
|
+
--matcha-z-index-modal: var(--matcha-z-modal);
|
|
602
|
+
--matcha-z-index-overlay: var(--matcha-z-overlay);
|
|
603
|
+
--matcha-z-index-popover-floating: var(--matcha-z-popover-floating);
|
|
604
|
+
|
|
605
|
+
// Figma: matcha/font/weight/semi-bold → ↔ --matcha-weight-semibold
|
|
606
|
+
--matcha-font-weight-extralight: var(--matcha-weight-extralight);
|
|
607
|
+
--matcha-font-weight-light: var(--matcha-weight-light);
|
|
608
|
+
--matcha-font-weight-semi-bold: var(--matcha-weight-semibold);
|
|
609
|
+
--matcha-font-weight-regular: var(--matcha-weight-regular);
|
|
610
|
+
--matcha-font-weight-medium: var(--matcha-weight-medium);
|
|
611
|
+
--matcha-font-weight-bold: var(--matcha-weight-bold);
|
|
612
|
+
--matcha-font-weight-extrabold: var(--matcha-weight-extrabold);
|
|
613
|
+
--matcha-font-weight-black: var(--matcha-weight-black);
|
|
614
|
+
|
|
615
|
+
// ═════════════════════════════════════════════════════════════════════════
|
|
616
|
+
// 17. GRADIENTS
|
|
617
|
+
// Gradients tonais semânticos. Compostos por 2 stops (alpha → surface-card)
|
|
618
|
+
// pra dar fade lateral em banners. Mantém compat com Figma — lá cada stop
|
|
619
|
+
// é uma variable separada (gradients não são tipo nativo de variable).
|
|
620
|
+
// Centralizar aqui evita repetir o linear-gradient em cada componente.
|
|
621
|
+
// ═════════════════════════════════════════════════════════════════════════
|
|
622
|
+
|
|
623
|
+
// Figma DSV3 (matcha/banner 19080:308): tone="info" mapeia pra primary-alpha
|
|
624
|
+
// (#64b5f6 azul), não info-alpha (cyan/turquesa) — alinhamento visual com border + eyebrow.
|
|
625
|
+
--matcha-gradient-banner-info: linear-gradient(
|
|
626
|
+
90deg,
|
|
627
|
+
var(--matcha-color-primary-alpha) 0%,
|
|
628
|
+
var(--matcha-color-surface-card) 100%
|
|
629
|
+
);
|
|
630
|
+
--matcha-gradient-banner-success: linear-gradient(
|
|
631
|
+
90deg,
|
|
632
|
+
var(--matcha-color-success-alpha) 0%,
|
|
633
|
+
var(--matcha-color-surface-card) 100%
|
|
634
|
+
);
|
|
635
|
+
--matcha-gradient-banner-warning: linear-gradient(
|
|
636
|
+
90deg,
|
|
637
|
+
var(--matcha-color-warn-alpha) 0%,
|
|
638
|
+
var(--matcha-color-surface-card) 100%
|
|
639
|
+
);
|
|
640
|
+
--matcha-gradient-banner-accent: linear-gradient(
|
|
641
|
+
90deg,
|
|
642
|
+
var(--matcha-color-accent-alpha) 0%,
|
|
643
|
+
var(--matcha-color-surface-card) 100%
|
|
644
|
+
);
|
|
645
|
+
--matcha-gradient-banner-danger: linear-gradient(
|
|
646
|
+
90deg,
|
|
647
|
+
var(--matcha-color-danger-alpha) 0%,
|
|
648
|
+
var(--matcha-color-surface-card) 100%
|
|
649
|
+
);
|
|
650
|
+
}
|