@inchurch/matcha-theme 20.276.0 → 20.277.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/_functions.scss +0 -26
- package/abstracts/_theme-api.scss +230 -0
- package/components/app-page-header.scss +16 -17
- package/components/matcha-accordion.scss +5 -6
- package/components/matcha-audio-player.scss +1 -2
- package/components/matcha-autocomplete.scss +10 -11
- package/components/matcha-avatar.scss +3 -3
- package/components/matcha-badge.scss +11 -11
- package/components/matcha-breadcrumb.scss +6 -7
- package/components/matcha-button-toggle.scss +2 -2
- package/components/matcha-buttons.scss +34 -34
- package/components/matcha-calendar.scss +31 -35
- package/components/matcha-cards.scss +31 -32
- package/components/matcha-chart-card.scss +5 -12
- package/components/matcha-checkbox.scss +13 -13
- package/components/matcha-chip.scss +2 -2
- package/components/matcha-color-pick.scss +1 -2
- package/components/matcha-command-palette.scss +17 -18
- package/components/matcha-crop.scss +0 -1
- package/components/matcha-date.scss +3 -3
- package/components/matcha-draggable.scss +4 -5
- package/components/matcha-drawer.scss +18 -28
- package/components/matcha-drop-list.scss +51 -52
- package/components/matcha-emoji.scss +2 -2
- package/components/{matcha-uploader.scss → matcha-file-uploader.scss} +185 -116
- package/components/matcha-footer.scss +3 -4
- package/components/matcha-form-field.scss +3 -3
- package/components/matcha-form-section.scss +5 -6
- package/components/matcha-header.scss +3 -4
- package/components/matcha-hint-text.scss +4 -4
- package/components/matcha-horizontal-tree.scss +15 -16
- package/components/matcha-icon.scss +27 -27
- package/components/matcha-image.scss +2 -3
- package/components/matcha-list.scss +11 -12
- package/components/matcha-menu.scss +2 -2
- package/components/matcha-modal.scss +5 -6
- package/components/matcha-nav.scss +16 -16
- package/components/matcha-notification.scss +3 -4
- package/components/matcha-option.scss +19 -0
- package/components/matcha-page-builder.scss +16 -16
- package/components/matcha-paginator.scss +6 -7
- package/components/matcha-panel.scss +4 -5
- package/components/matcha-profile-card.scss +3 -3
- package/components/matcha-progress-bar.scss +1 -1
- package/components/matcha-radio.scss +6 -6
- package/components/matcha-scrollbar.scss +1 -2
- package/components/matcha-scrollbox-shadow.scss +35 -37
- package/components/matcha-section.scss +5 -9
- package/components/matcha-select-multiple.scss +56 -0
- package/components/matcha-select.scss +7 -7
- package/components/matcha-skeleton.scss +6 -7
- package/components/matcha-slide-toggle.scss +33 -299
- package/components/matcha-slider.scss +5 -5
- package/components/matcha-snack-bar.scss +17 -18
- package/components/matcha-spin.scss +12 -103
- package/components/matcha-spinner.scss +1 -1
- package/components/matcha-stepper.scss +15 -16
- package/components/matcha-table.scss +14 -15
- package/components/matcha-tabs.scss +22 -24
- package/components/matcha-text-editor.scss +78 -78
- package/components/matcha-time.scss +2 -2
- package/components/matcha-toolbar.scss +1 -1
- package/components/matcha-tooltip.scss +14 -12
- package/main.scss +7 -2
- package/package.json +1 -1
- package/tokens/_color-tokens.scss +0 -3
- package/tokens/_css-custom-properties.scss +233 -179
- package/tokens/_primitives.scss +82 -0
- package/tokens/_semantic-aliases.scss +120 -0
|
@@ -2,12 +2,15 @@
|
|
|
2
2
|
// MATCHA DESIGN SYSTEM — Token Source (CSS Custom Properties)
|
|
3
3
|
// =============================================================================
|
|
4
4
|
//
|
|
5
|
-
//
|
|
6
|
-
//
|
|
5
|
+
// Emite as CSS custom properties (--matcha-*) de um tema. A classe de tema
|
|
6
|
+
// (ex.: .theme-default-light) recebe as vars via matcha-components($theme) →
|
|
7
|
+
// matcha-css-custom-properties($theme), habilitando override em runtime sem
|
|
8
|
+
// recompilação Sass (base do whitelabel e de temas adicionais — ver
|
|
9
|
+
// abstracts/_theme-api.scss e docs/theming-guide.md).
|
|
7
10
|
//
|
|
8
11
|
// 1:1 PARIDADE com Figma variables em DS-PAINEL (fileKey K673r19KQE8lm2S74nQ5ob):
|
|
9
12
|
// - matcha/primitives (99 vars) → primitives section below
|
|
10
|
-
// - matcha/colors (117 vars) →
|
|
13
|
+
// - matcha/colors (117 vars) → $matcha-color-tokens below
|
|
11
14
|
// - matcha/interaction (4 vars) → via matcha/color/interaction/* aliases
|
|
12
15
|
// - matcha/text/* (30 styles) → text-* + leading-* + tracking-* props
|
|
13
16
|
// - matcha/elevation (4 styles) → shadow-1..4
|
|
@@ -17,86 +20,77 @@
|
|
|
17
20
|
// - Nome token Figma: `matcha/category/subcategory/variant` (slash)
|
|
18
21
|
// - Nome CSS var: `--matcha-category-subcategory-variant` (hyphen)
|
|
19
22
|
// ex.: `matcha/color/surface/card` ↔ `--matcha-color-surface-card`
|
|
23
|
+
// - Chave do mapa $matcha-color-tokens = sufixo da var sem `--matcha-color-`
|
|
24
|
+
// ex.: `surface-card` ↔ `--matcha-color-surface-card`
|
|
20
25
|
//
|
|
21
|
-
//
|
|
22
|
-
// 1.
|
|
23
|
-
//
|
|
24
|
-
//
|
|
25
|
-
//
|
|
26
|
-
//
|
|
27
|
-
//
|
|
28
|
-
//
|
|
29
|
-
//
|
|
30
|
-
//
|
|
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)
|
|
26
|
+
// ESTRUTURA DESTE ARQUIVO:
|
|
27
|
+
// 1. $matcha-color-tokens — fonte única dos valores de cor por modo
|
|
28
|
+
// (light/dark), na ordem de emissão. Todo token aqui é sobrescrevível
|
|
29
|
+
// por tema via matcha-emit-color-properties() (abstracts/_theme-api.scss).
|
|
30
|
+
// 2. matcha-default-colors($mode) + $matcha-colors-light/dark — mapas flat
|
|
31
|
+
// derivados (token → valor), consumidos pelo emissor e pela theme API.
|
|
32
|
+
// 3. matcha-emit-color-properties($colors) — emissor genérico.
|
|
33
|
+
// 4. matcha-css-custom-properties($theme) — mixin canônico (assinatura
|
|
34
|
+
// preservada): cores via emissor + tokens estáticos (spacing, radius,
|
|
35
|
+
// tipografia, motion, grid, …) + aliases.
|
|
38
36
|
//
|
|
39
37
|
// =============================================================================
|
|
40
38
|
@use "sass:map";
|
|
41
39
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
// LIGHT = Figma oficial (matcha/color/* JSON export hierárquico)
|
|
49
|
-
// DARK = tokens confirmados pelo usuário (flat JSON)
|
|
50
|
-
// ═════════════════════════════════════════════════════════════════════════
|
|
51
|
-
|
|
40
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
41
|
+
// 1. COLOR TOKENS — fonte única (light/dark) na ordem de emissão
|
|
42
|
+
// LIGHT = Figma oficial (matcha/color/* JSON export hierárquico)
|
|
43
|
+
// DARK = tokens confirmados pelo usuário (flat JSON)
|
|
44
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
45
|
+
$matcha-color-tokens: (
|
|
52
46
|
// ── Surface (9) — matcha/color/surface/* ─────────────────────────────────
|
|
53
47
|
// 1:1 Figma DSV3 (Light + Dark JSON export 2026-05-29).
|
|
54
48
|
// Light mode: sage-tinted neutrals (2–4% green hue da marca) + hierarquia perceptível.
|
|
55
|
-
|
|
49
|
+
surface-bg: (light: #f1f4f1, dark: #111318),
|
|
56
50
|
// bg-alpha light usa cor BASE distinta (#f0f2f5) — não é #f1f4f1 com alpha.
|
|
57
51
|
// Decisão Figma intencional pra sutil shift de tint no estado transparente.
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
52
|
+
surface-bg-alpha: (light: rgba(#f0f2f5, .5), dark: rgba(#111318, .5)),
|
|
53
|
+
surface-bg-inverse: (light: #111318, dark: #f0f2f5),
|
|
54
|
+
surface-bg-inverse-alpha: (light: rgba(#111318, .5), dark: rgba(#f0f2f5, .5)),
|
|
61
55
|
|
|
62
56
|
// Card soft default — light #f7fcf7 (off-white com tint sage muito sutil).
|
|
63
57
|
// Reduz glare contra surface-bg #f1f4f1 (Δ ~5 luminance). Pure white só pra
|
|
64
58
|
// floating overlays via surface-card-strong (modal, command-palette).
|
|
65
59
|
// Pattern Linear / Vercel / Notion: soft cards default + bright float.
|
|
66
|
-
|
|
67
|
-
|
|
60
|
+
surface: (light: #f7fcf7, dark: #1c1f26),
|
|
61
|
+
surface-card: (light: #f7fcf7, dark: #1c1f26),
|
|
68
62
|
// Card strong — pure white (light) / lifted dark, pra floating overlays
|
|
69
63
|
// que precisam máximo destaque sobre scrim. Modal, popover, dropdown,
|
|
70
64
|
// command-palette. NÃO usar pra cards inline — vira agressivo.
|
|
71
|
-
|
|
65
|
+
surface-card-strong: (light: #ffffff, dark: #262a32),
|
|
72
66
|
// Canvas aninhada dentro de card (preview stage, code body, inset panels)
|
|
73
67
|
// Light: sage (= bg da page, cria recorte sutil sobre card off-white)
|
|
74
68
|
// Dark: mais clara que card (inverte lógica, dá profundidade em vez de buraco)
|
|
75
|
-
|
|
69
|
+
surface-inner: (light: #f1f4f1, dark: #262a32),
|
|
76
70
|
// card-alpha light usa #ffffff base (não #f7fcf7) — overlay/zebra com white puro
|
|
77
|
-
|
|
78
|
-
|
|
71
|
+
surface-card-alpha: (light: rgba(#ffffff, .85), dark: rgba(#1c1f26, .5)),
|
|
72
|
+
surface-card-inverse: (light: #1c1f26, dark: #ffffff),
|
|
79
73
|
|
|
80
|
-
|
|
81
|
-
|
|
74
|
+
surface-sidebar: (light: #e4ebe5, dark: #0d0f14),
|
|
75
|
+
surface-sidebar-hover: (light: #d8e1da, dark: #161920),
|
|
82
76
|
// table-row-hover light: neutral #f4f4f4 (Figma — não tinted sage)
|
|
83
|
-
|
|
77
|
+
surface-table-row-hover: (light: #f4f4f4, dark: #151a22),
|
|
84
78
|
|
|
85
79
|
// Border sólido e visível (era rgba(0,0,0,.08) = invisível sobre sage bg)
|
|
86
|
-
|
|
80
|
+
surface-border: (light: #e1e7e2, dark: rgba(255, 255, 255, .12)),
|
|
87
81
|
// Border mais forte pra cards elevados (hero, playground — com shadow)
|
|
88
|
-
|
|
89
|
-
|
|
82
|
+
surface-border-strong: (light: #c8d2ca, dark: rgba(255, 255, 255, .24)),
|
|
83
|
+
surface-hover: (light: rgba(#e4ebe5, .5), dark: rgba(#111318, .5)),
|
|
90
84
|
|
|
91
85
|
// Aliases (flat) — usados massivamente
|
|
92
86
|
// Light mode softening 2026-05-18: fg de #1a1d21 (17:1, "tinta preta") → #2a2d33 (12:1 AAA, "tinta carvão").
|
|
93
87
|
// Inspiração: tom entre Linear (#1a1d21, mais pesado) e GitHub (#1f2328) — reduz fatiga em sessions longas.
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
88
|
+
bg: (light: #f1f4f1, dark: #111318),
|
|
89
|
+
fg: (light: #2a2d33, dark: #e8eaed),
|
|
90
|
+
fg-alpha: (light: rgba(#2a2d33, .5), dark: rgba(#e8eaed, .5)),
|
|
91
|
+
fg-inverse: (light: #e8eaed, dark: #2a2d33),
|
|
92
|
+
fg-inverse-alpha: (light: rgba(#e8eaed, .5), dark: rgba(#2a2d33, .5)),
|
|
93
|
+
border: (light: #e1e7e2, dark: rgba(255, 255, 255, .12)),
|
|
100
94
|
|
|
101
95
|
// ── Text (9) — matcha/color/text/* ───────────────────────────────────────
|
|
102
96
|
// Light mode softening 2026-05-18 — todos os tons recuados ~1 step pra reduzir
|
|
@@ -105,56 +99,56 @@
|
|
|
105
99
|
// secondary #5a6066 → 6.8:1 (AAA Large + AA Normal, antes #4a5056 8.5:1)
|
|
106
100
|
// muted #6e7681 → 5.2:1 (AA, antes #5a6a5e 7.4:1)
|
|
107
101
|
// label #7a818a → 4.6:1 (AA, antes #6b7177 5.9:1)
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
102
|
+
text-primary: (light: #2a2d33, dark: #e8eaed),
|
|
103
|
+
text-inverse: (light: #e8eaed, dark: #2a2d33),
|
|
104
|
+
text-secondary: (light: #5a6066, dark: rgba(255, 255, 255, .7)),
|
|
111
105
|
// Muted: GitHub-ish neutral (antes era sage-tinted #5a6a5e — verde demais em form helper text)
|
|
112
|
-
|
|
113
|
-
|
|
106
|
+
text-muted: (light: #6e7681, dark: #a8b5a0),
|
|
107
|
+
text-label: (light: #7a818a, dark: #bdc1c6),
|
|
114
108
|
// Placeholder: #7a818a (4.5:1 sobre card — passa AA mantendo low-emphasis)
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
109
|
+
text-placeholder: (light: #7a818a, dark: #6e747a),
|
|
110
|
+
text-hint: (light: #7a818a, dark: #9aa0a6),
|
|
111
|
+
text-static-light: (light: #ffffff, dark: #ffffff),
|
|
112
|
+
text-static-dark: (light: #1a1d21, dark: #1a1d21),
|
|
119
113
|
|
|
120
114
|
// ── Icon (2) — matcha/color/icon/* ───────────────────────────────────────
|
|
121
115
|
// Light mode softening 2026-05-18:
|
|
122
116
|
// default #5f656b → #75767a — recua ícones decorativos (sort, leading) pra não competir com texto
|
|
123
117
|
// active #1a1d21 → #3d4248 — ainda firme mas menos "tinta china" em toggles/sortable headers
|
|
124
|
-
|
|
125
|
-
|
|
118
|
+
icon-default: (light: #9aa0a6, dark: #9aa0a6),
|
|
119
|
+
icon-active: (light: #3d4248, dark: #e8eaed),
|
|
126
120
|
|
|
127
121
|
// ── Interaction (4) — matcha/color/interaction/* ─────────────────────────
|
|
128
122
|
// Light mode: disabled sólido com sage tint (antes alpha sobre bg = inconsistente)
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
123
|
+
interaction-disabled-bg: (light: #cfd6d1, dark: #282c34),
|
|
124
|
+
interaction-disabled-bg-alpha: (light: rgba(#cfd6d1, .5), dark: rgba(#282c34, .5)),
|
|
125
|
+
interaction-disabled-fg: (light: #8a9090, dark: rgba(#e8eaed, .38)),
|
|
126
|
+
interaction-disabled-border: (light: #c8d2ca, dark: rgba(#e8eaed, .38)),
|
|
127
|
+
focus-ring: (light: #43a047, dark: #a8d94e),
|
|
134
128
|
// Aliases legados
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
129
|
+
disabled: (light: #cfd6d1, dark: #282c34),
|
|
130
|
+
disabled-fg: (light: #8a9090, dark: rgba(#e8eaed, .38)),
|
|
131
|
+
disabled-border: (light: #c8d2ca, dark: rgba(#e8eaed, .38)),
|
|
132
|
+
disabled-bg: (light: #cfd6d1, dark: #282c34),
|
|
139
133
|
|
|
140
134
|
// ── Neutral (4 tokens Figma matcha/color/neutral/*) ───────────────────────
|
|
141
135
|
// Cor base pra botões e controles sem ênfase semântica (basic, ghost default).
|
|
142
136
|
// Light: sage-tinted grey | Dark: grey neutro escuro.
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
137
|
+
neutral: (light: #e4ebe5, dark: #282c34),
|
|
138
|
+
neutral-contrast: (light: #1a1d21, dark: #e8eaed),
|
|
139
|
+
neutral-alpha: (light: rgba(#1a1d21, .08), dark: rgba(#e8eaed, .1)),
|
|
140
|
+
neutral-hover: (light: #d8e1da, dark: #333842),
|
|
147
141
|
|
|
148
142
|
// ── Elevation (6) — matcha/color/elevation/* ─────────────────────────────
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
143
|
+
elevation-surface-1: (light: #f8faf8, dark: #1c1f26), // cards, dropdowns (sage)
|
|
144
|
+
elevation-surface-2: (light: #ffffff, dark: #262a32), // menus, floating
|
|
145
|
+
elevation-surface-3: (light: #ffffff, dark: #2e333c), // modals, drawers
|
|
152
146
|
// Shadow base: Figma light usa tinta accent #1A2C1E (não preto puro), dark usa #000000
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
147
|
+
elevation-shadow: (light: #1a2c1e, dark: #000000),
|
|
148
|
+
elevation-shadow-tint: (light: #1a2c1e, dark: #000000), // tint da marca pra shadows light
|
|
149
|
+
elevation-scrim: (light: #000000, dark: #000000),
|
|
156
150
|
// Figma matcha/color/state-layer/fg (camada sobre interações)
|
|
157
|
-
|
|
151
|
+
state-layer-fg: (light: #000000, dark: #ffffff),
|
|
158
152
|
|
|
159
153
|
// ── Accent (10) — matcha/color/accent/* ──────────────────────────────────
|
|
160
154
|
// Brand inChurch: lime/chartreuse #86BD00 (hue 78°, "matcha tea").
|
|
@@ -166,134 +160,183 @@
|
|
|
166
160
|
// accent-contrast 1:1 Figma DSV3: rgba(0,0,0,.87) em AMBOS os modos (Light + Dark).
|
|
167
161
|
// É label-on-accent ripple/text token, semantica é "preto sobre amarelo-lima". Pra label
|
|
168
162
|
// branco em Filled buttons use accent/text-on (branco no Light / quase-preto no Dark).
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
163
|
+
accent: (light: #54a71d, dark: #a8d94e),
|
|
164
|
+
accent-contrast: (light: rgba(0, 0, 0, .87), dark: rgba(0, 0, 0, .87)),
|
|
165
|
+
accent-contrast-alpha: (light: rgba(0, 0, 0, .1), dark: rgba(0, 0, 0, .1)),
|
|
172
166
|
// Figma matcha/color/accent/text-on — branco puro Light / quase preto Dark.
|
|
173
167
|
// Dedicado pra foreground sobre accent/default em Filled buttons, icon buttons.
|
|
174
168
|
// Garante contraste ≥ 3:1 em ambos modos (supera accent/contrast que é preto fixo).
|
|
175
|
-
|
|
176
|
-
|
|
169
|
+
accent-text-on: (light: #ffffff, dark: #1a1d21),
|
|
170
|
+
accent-alpha: (light: rgba(#54a71d, .1), dark: rgba(#a8d94e, .1)),
|
|
177
171
|
// Light/dark auxiliares: spring green tint (hue 143° matching accent base)
|
|
178
|
-
|
|
179
|
-
|
|
172
|
+
accent-light: (light: #b9e3a3, dark: #b9f6ca),
|
|
173
|
+
accent-dark: (light: #3a7515, dark: #c5e1a5),
|
|
180
174
|
// Hover/pressed: step ~10% darker mesma hue (3.0:1 → 3.75:1 → 4.7:1)
|
|
181
|
-
|
|
182
|
-
|
|
175
|
+
accent-hover: (light: #4b9519, dark: #bee57a),
|
|
176
|
+
accent-pressed: (light: #428316, dark: #d4eea0),
|
|
183
177
|
// Surface tints — light spring green
|
|
184
|
-
|
|
185
|
-
|
|
178
|
+
accent-surface-hover: (light: #e8f3dc, dark: #161e12),
|
|
179
|
+
accent-surface-pressed: (light: #cbe4ab, dark: #1f2d18),
|
|
186
180
|
|
|
187
181
|
// ── Accent Secondary (teal — 4 tokens Figma matcha/color/accent-2/*) ─────
|
|
188
182
|
// Light #00796b (teal-700) | Dark #4fb7ad (teal-light)
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
183
|
+
accent-2: (light: #00796b, dark: #4fb7ad),
|
|
184
|
+
accent-2-contrast: (light: #ffffff, dark: #ffffff),
|
|
185
|
+
accent-2-alpha: (light: rgba(#00796b, .10), dark: rgba(#4fb7ad, .12)),
|
|
186
|
+
accent-2-surface: (light: #e0f0ee, dark: #1d332e),
|
|
193
187
|
|
|
194
188
|
// ── Primary (10) — matcha/color/primary/* ────────────────────────────────
|
|
195
189
|
// Light #1664c2 (blue-700) | Dark #64b5f6 (blue-300)
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
190
|
+
primary: (light: #1664c2, dark: #64b5f6),
|
|
191
|
+
primary-contrast: (light: #ffffff, dark: rgba(0, 0, 0, .87)),
|
|
192
|
+
primary-contrast-alpha: (light: rgba(255, 255, 255, .1), dark: rgba(0, 0, 0, .1)),
|
|
193
|
+
primary-alpha: (light: rgba(#1664c2, .1), dark: rgba(#64b5f6, .1)),
|
|
194
|
+
primary-light: (light: #b3d7fd, dark: #bbdefb),
|
|
195
|
+
primary-dark: (light: #0d3c8c, dark: #90caf9),
|
|
196
|
+
primary-hover: (light: #2576d2, dark: #90caf9),
|
|
197
|
+
primary-pressed: (light: #378ce1, dark: #bbdefb),
|
|
198
|
+
primary-surface-hover: (light: #e4eefa, dark: #141922),
|
|
199
|
+
primary-surface-pressed: (light: #cddef5, dark: #1a2436),
|
|
206
200
|
|
|
207
201
|
// ── Feedback — Success (9) ───────────────────────────────────────────────
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
202
|
+
success: (light: #2e7d32, dark: #69f0ae),
|
|
203
|
+
success-contrast: (light: #ffffff, dark: rgba(0, 0, 0, .87)),
|
|
204
|
+
success-contrast-alpha: (light: rgba(255, 255, 255, .1), dark: rgba(0, 0, 0, .1)),
|
|
205
|
+
success-alpha: (light: rgba(#2e7d32, .1), dark: rgba(#69f0ae, .1)),
|
|
206
|
+
success-hover: (light: #388e3c, dark: #4cd992),
|
|
207
|
+
success-pressed: (light: #43a047, dark: #33c078),
|
|
208
|
+
success-fill: (light: #2e7d32, dark: #43a047),
|
|
209
|
+
success-surface-hover: (light: #e8f5e9, dark: #121d17),
|
|
210
|
+
success-surface-pressed: (light: #c8e6c9, dark: #192f24),
|
|
217
211
|
|
|
218
212
|
// ── Feedback — Danger (9) ────────────────────────────────────────────────
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
213
|
+
danger: (light: #c81010, dark: #ef9a9a),
|
|
214
|
+
danger-contrast: (light: #ffffff, dark: rgba(0, 0, 0, .87)),
|
|
215
|
+
danger-contrast-alpha: (light: rgba(255, 255, 255, .1), dark: rgba(0, 0, 0, .1)),
|
|
216
|
+
danger-alpha: (light: rgba(#c81010, .1), dark: rgba(#ef9a9a, .1)),
|
|
217
|
+
danger-hover: (light: #da2c2c, dark: #f4b8b8),
|
|
218
|
+
danger-pressed: (light: #e64848, dark: #f7d0d0),
|
|
219
|
+
danger-fill: (light: #c81010, dark: #e53935),
|
|
220
|
+
danger-surface-hover: (light: #fae8e8, dark: #1d1616),
|
|
221
|
+
danger-surface-pressed: (light: #f5d2d2, dark: #2f2121),
|
|
228
222
|
|
|
229
223
|
// ── Feedback — Warn (9) ──────────────────────────────────────────────────
|
|
230
224
|
// Light #a64e00 (âmbar escuro) | Dark #ffb74d (orange-300)
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
225
|
+
warn: (light: #a64e00, dark: #ffb74d),
|
|
226
|
+
warn-contrast: (light: #ffffff, dark: rgba(0, 0, 0, .87)),
|
|
227
|
+
warn-contrast-alpha: (light: rgba(255, 255, 255, .1), dark: rgba(0, 0, 0, .1)),
|
|
228
|
+
warn-alpha: (light: rgba(#a64e00, .1), dark: rgba(#ffb74d, .1)),
|
|
229
|
+
warn-hover: (light: #924200, dark: #e69f33),
|
|
230
|
+
warn-pressed: (light: #7e3600, dark: #cc881a),
|
|
231
|
+
warn-fill: (light: #a64e00, dark: #fb8c00),
|
|
232
|
+
warn-surface-hover: (light: #fcf0e1, dark: #1e1910),
|
|
233
|
+
warn-surface-pressed: (light: #f8e1c3, dark: #2f2616),
|
|
240
234
|
|
|
241
235
|
// ── Feedback — Info (8) ──────────────────────────────────────────────────
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
236
|
+
info: (light: #0a2fc2, dark: #4090d8),
|
|
237
|
+
info-contrast: (light: #ffffff, dark: #ffffff),
|
|
238
|
+
info-contrast-alpha: (light: rgba(255, 255, 255, .1), dark: rgba(255, 255, 255, .1)),
|
|
239
|
+
info-alpha: (light: rgba(#0a2fc2, .1), dark: rgba(#4090d8, .1)),
|
|
240
|
+
info-hover: (light: #294cd4, dark: #5aa0e0),
|
|
241
|
+
info-pressed: (light: #4265e0, dark: #74b0e8),
|
|
242
|
+
info-surface-hover: (light: #ebeefa, dark: #0f141e),
|
|
243
|
+
info-surface-pressed: (light: #d8def5, dark: #131f31),
|
|
244
|
+
|
|
245
|
+
// ── Palette (18) — matcha/color/palette/* ────────────────────────────────
|
|
246
|
+
palette-teal: (light: #00796b, dark: #4fb7ad),
|
|
247
|
+
palette-teal-light: (light: #4fb7ad, dark: #009688),
|
|
248
|
+
palette-teal-alpha: (light: rgba(#00796b, .1), dark: rgba(#4fb7ad, .1)),
|
|
249
|
+
palette-light-blue: (light: #0288d1, dark: #54c5f7),
|
|
250
|
+
palette-light-blue-light: (light: #54c5f7, dark: #03a9f4),
|
|
251
|
+
palette-light-blue-alpha: (light: rgba(#0288d1, .1), dark: rgba(#54c5f7, .1)),
|
|
252
|
+
palette-purple: (light: #9c27b0, dark: #bb6ac8),
|
|
253
|
+
palette-purple-light: (light: #bb6ac8, dark: #9c27b0),
|
|
254
|
+
palette-purple-alpha: (light: rgba(#9c27b0, .1), dark: rgba(#bb6ac8, .1)),
|
|
255
|
+
palette-pink: (light: #d81b60, dark: #e46291),
|
|
256
|
+
palette-pink-light: (light: #e46291, dark: #d81b60),
|
|
257
|
+
palette-pink-alpha: (light: rgba(#d81b60, .1), dark: rgba(#e46291, .1)),
|
|
258
|
+
palette-orange: (light: #e65100, dark: #f9a25d),
|
|
259
|
+
palette-orange-light: (light: #f9a25d, dark: #f77814),
|
|
260
|
+
palette-orange-alpha: (light: rgba(#e65100, .1), dark: rgba(#f9a25d, .1)),
|
|
261
|
+
palette-yellow: (light: #ffa000, dark: #efd64f),
|
|
262
|
+
palette-yellow-light: (light: #efd64f, dark: #e8c300),
|
|
263
|
+
palette-yellow-alpha: (light: rgba(#ffa000, .1), dark: rgba(#efd64f, .1)),
|
|
264
|
+
|
|
265
|
+
// ── Chart (5) — matcha/color/chart/* ─────────────────────────────────────
|
|
266
|
+
chart-series-1: (light: #615ce5, dark: #8782f2),
|
|
267
|
+
chart-series-2: (light: #42a147, dark: #66ba6b),
|
|
268
|
+
chart-series-3: (light: #ed6645, dark: #f5876b),
|
|
269
|
+
chart-series-4: (light: #c28700, dark: #ffc93d),
|
|
270
|
+
chart-series-5: (light: #008094, dark: #26c2d9),
|
|
271
|
+
);
|
|
272
|
+
|
|
273
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
274
|
+
// 2. MAPAS FLAT POR MODO — token → valor (derivados de $matcha-color-tokens).
|
|
275
|
+
// Consumidos pelo emissor abaixo e pela theme API
|
|
276
|
+
// (matcha-build-color-map() em abstracts/_theme-api.scss).
|
|
277
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
278
|
+
@function matcha-default-colors($mode) {
|
|
279
|
+
$out: ();
|
|
280
|
+
@each $token, $modes in $matcha-color-tokens {
|
|
281
|
+
$out: map.set($out, $token, map.get($modes, $mode));
|
|
282
|
+
}
|
|
283
|
+
@return $out;
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
$matcha-colors-light: matcha-default-colors(light);
|
|
287
|
+
$matcha-colors-dark: matcha-default-colors(dark);
|
|
288
|
+
|
|
289
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
290
|
+
// 3. EMISSOR GENÉRICO — mapa flat (token → valor) vira --matcha-color-<token>.
|
|
291
|
+
// Usado pelo mixin canônico abaixo e por matcha-define-theme() (theme API).
|
|
292
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
293
|
+
// $aliases (opcional): token → "--matcha-prim-*". Quando presente p/ um token, emite
|
|
294
|
+
// `var(--matcha-prim-*)` (Camada 2 referencia a primitiva) em vez do hex literal.
|
|
295
|
+
// A rota clássica (matcha-css-custom-properties) passa $matcha-prim-aliases-{light,dark};
|
|
296
|
+
// matcha-define-theme() não passa (mantém hex computado dos seeds — whitelabel intacto).
|
|
297
|
+
@mixin matcha-emit-color-properties($colors, $aliases: ()) {
|
|
298
|
+
@each $token, $value in $colors {
|
|
299
|
+
$alias: map.get($aliases, $token);
|
|
300
|
+
@if $alias {
|
|
301
|
+
--matcha-color-#{$token}: var(#{$alias});
|
|
302
|
+
} @else {
|
|
303
|
+
--matcha-color-#{$token}: #{$value};
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
309
|
+
// 4. MIXIN CANÔNICO — assinatura preservada (retrocompat).
|
|
310
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
311
|
+
@mixin matcha-css-custom-properties($theme) {
|
|
312
|
+
$is-dark: map.get($theme, is-dark);
|
|
313
|
+
|
|
314
|
+
// ── Cores semânticas (ver $matcha-color-tokens acima) ────────────────────
|
|
315
|
+
// Aliases sólidos → var(--matcha-prim-*); derivados/alphas/cross-semantic → hex literal.
|
|
316
|
+
@include matcha-emit-color-properties(
|
|
317
|
+
if($is-dark, $matcha-colors-dark, $matcha-colors-light),
|
|
318
|
+
if($is-dark, $matcha-prim-aliases-dark, $matcha-prim-aliases-light)
|
|
319
|
+
);
|
|
250
320
|
|
|
251
321
|
// ── Feedback namespace (matcha/color/feedback/* canon DSV3) ───────────────
|
|
252
322
|
// Aliases semânticos pros tokens base — namespace dedicado pra status/banners/
|
|
253
323
|
// table row variants. Naming match Figma DSV3 (flat: feedback/info, sem suffix).
|
|
254
|
-
--matcha-color-feedback-info:
|
|
324
|
+
--matcha-color-feedback-info: var(--matcha-color-info);
|
|
255
325
|
--matcha-color-feedback-success: var(--matcha-color-success);
|
|
256
|
-
--matcha-color-feedback-warn:
|
|
257
|
-
--matcha-color-feedback-danger:
|
|
326
|
+
--matcha-color-feedback-warn: var(--matcha-color-warn);
|
|
327
|
+
--matcha-color-feedback-danger: var(--matcha-color-danger);
|
|
258
328
|
|
|
259
329
|
// Variantes alpha pra row backgrounds, badges filled-alpha, etc.
|
|
260
|
-
--matcha-color-feedback-info-alpha:
|
|
330
|
+
--matcha-color-feedback-info-alpha: var(--matcha-color-info-alpha);
|
|
261
331
|
--matcha-color-feedback-success-alpha: var(--matcha-color-success-alpha);
|
|
262
|
-
--matcha-color-feedback-warn-alpha:
|
|
263
|
-
--matcha-color-feedback-danger-alpha:
|
|
332
|
+
--matcha-color-feedback-warn-alpha: var(--matcha-color-warn-alpha);
|
|
333
|
+
--matcha-color-feedback-danger-alpha: var(--matcha-color-danger-alpha);
|
|
264
334
|
|
|
265
335
|
// Surface hover (bg tinted pra hover em row de table)
|
|
266
|
-
--matcha-color-feedback-info-surface-hover:
|
|
336
|
+
--matcha-color-feedback-info-surface-hover: var(--matcha-color-info-surface-hover);
|
|
267
337
|
--matcha-color-feedback-success-surface-hover: var(--matcha-color-success-surface-hover);
|
|
268
|
-
--matcha-color-feedback-warn-surface-hover:
|
|
269
|
-
--matcha-color-feedback-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)};
|
|
338
|
+
--matcha-color-feedback-warn-surface-hover: var(--matcha-color-warn-surface-hover);
|
|
339
|
+
--matcha-color-feedback-danger-surface-hover: var(--matcha-color-danger-surface-hover);
|
|
297
340
|
|
|
298
341
|
// ── Spacing (14 tokens — matches matcha/space/* exato) ────────────────────
|
|
299
342
|
--matcha-space-025: 2px;
|
|
@@ -440,6 +483,17 @@
|
|
|
440
483
|
--matcha-shadow-3: #{if($is-dark, $shadow-3-dark, $shadow-3-light)};
|
|
441
484
|
--matcha-shadow-4: #{if($is-dark, $shadow-4-dark, $shadow-4-light)};
|
|
442
485
|
|
|
486
|
+
// ── Vars estruturais de componente (mode-dependentes, ex-@if $is-dark) ───
|
|
487
|
+
// Bordas que só existiam no dark + shimmer do skeleton. No light viram no-op
|
|
488
|
+
// (0/transparent) pra não alterar layout. O $is-dark aqui é o seletor de modo
|
|
489
|
+
// legítimo da emissão (mesmo papel dos shadows acima) — não é o $is-dark
|
|
490
|
+
// espalhado nos componentes, que foi eliminado na migração runtime-theming.
|
|
491
|
+
--matcha-skeleton-shimmer: #{if($is-dark, rgba(255, 255, 255, 0.07), rgba(255, 255, 255, 0.5))};
|
|
492
|
+
--matcha-chart-card-border: #{if($is-dark, 1px solid rgba(#212121, 0.06), 0 solid transparent)};
|
|
493
|
+
--matcha-section-border: #{if($is-dark, 1px solid rgba(#212121, 0.06), 0 solid transparent)};
|
|
494
|
+
--matcha-calendar-border: #{if($is-dark, 1px solid var(--matcha-color-surface-border), 0 solid transparent)};
|
|
495
|
+
--matcha-drawer-border: #{if($is-dark, 1px solid var(--matcha-color-surface-border), 0 solid transparent)};
|
|
496
|
+
|
|
443
497
|
// ── Animation (4 tokens — matches matcha/duration/* from Figma) ──────────
|
|
444
498
|
--matcha-duration-instant: 80ms;
|
|
445
499
|
--matcha-duration-fast: 200ms;
|