@inchurch/matcha-theme 21.4.0 → 22.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/abstracts/_colors.scss +236 -236
- package/abstracts/_elevation.scss +108 -108
- package/abstracts/_functions.scss +321 -321
- package/abstracts/_media-breakpoint.scss +26 -26
- package/abstracts/_theme-api.scss +219 -219
- package/abstracts/_typography.scss +128 -128
- package/base/_reset.scss +446 -445
- package/components/app-page-header.scss +260 -260
- package/components/matcha-accordion.scss +293 -293
- package/components/matcha-audio-player.scss +31 -31
- package/components/matcha-autocomplete.scss +145 -145
- package/components/matcha-avatar.scss +440 -301
- package/components/matcha-badge.scss +120 -120
- package/components/matcha-breadcrumb.scss +231 -231
- package/components/matcha-button-toggle.scss +383 -384
- package/components/matcha-buttons.scss +913 -913
- package/components/matcha-calendar.scss +218 -218
- package/components/matcha-cards.scss +230 -230
- package/components/matcha-chart-card.scss +53 -53
- package/components/matcha-checkbox.scss +255 -255
- package/components/matcha-chip.scss +292 -292
- package/components/matcha-color-pick.scss +34 -34
- package/components/matcha-command-palette.scss +316 -316
- package/components/matcha-contact.scss +35 -0
- package/components/matcha-crop.scss +406 -406
- package/components/matcha-date.scss +81 -81
- package/components/matcha-divider.scss +100 -100
- package/components/matcha-draggable.scss +23 -23
- package/components/matcha-drawer.scss +376 -376
- package/components/matcha-drop-image.scss +14 -14
- package/components/matcha-drop-list.scss +430 -430
- package/components/matcha-emoji.scss +69 -69
- package/components/matcha-empty-state.scss +230 -230
- package/components/matcha-file-uploader.scss +471 -471
- package/components/matcha-flag.scss +103 -103
- package/components/matcha-footer.scss +91 -91
- package/components/matcha-form-field.scss +606 -606
- package/components/matcha-form-section.scss +100 -100
- package/components/matcha-header.scss +135 -135
- package/components/matcha-highlight.scss +164 -164
- package/components/matcha-hint-text.scss +90 -90
- package/components/matcha-horizontal-tree.scss +316 -316
- package/components/matcha-icon.scss +98 -98
- package/components/matcha-image.scss +61 -61
- package/components/matcha-list.scss +211 -211
- package/components/matcha-menu.scss +99 -99
- package/components/matcha-modal.scss +210 -210
- package/components/matcha-nav.scss +581 -581
- package/components/matcha-notification.scss +413 -413
- package/components/matcha-option.scss +170 -170
- package/components/matcha-page-builder.scss +4196 -4196
- package/components/matcha-paginator.scss +689 -689
- package/components/matcha-panel.scss +194 -194
- package/components/matcha-profile-card.scss +50 -50
- package/components/matcha-progress-bar.scss +313 -313
- package/components/matcha-radio.scss +320 -320
- package/components/matcha-ripple.scss +7 -7
- package/components/matcha-scrollbar.scss +33 -33
- package/components/matcha-scrollbox-shadow.scss +120 -120
- package/components/matcha-section.scss +102 -102
- package/components/matcha-select-multiple.scss +56 -56
- package/components/matcha-select.scss +667 -667
- package/components/matcha-skeleton.scss +155 -155
- package/components/matcha-slide-toggle.scss +369 -369
- package/components/matcha-slider.scss +285 -285
- package/components/matcha-snack-bar.scss +259 -259
- package/components/matcha-spin.scss +164 -164
- package/components/matcha-spinner.scss +97 -97
- package/components/matcha-status-pill.scss +38 -18
- package/components/matcha-stepper.scss +376 -376
- package/components/matcha-table-cell.scss +49 -41
- package/components/matcha-table.scss +579 -579
- package/components/matcha-tabs.scss +600 -600
- package/components/matcha-text-editor.scss +105 -105
- package/components/matcha-time.scss +33 -33
- package/components/matcha-timepicker.scss +13 -13
- package/components/matcha-toolbar.scss +359 -359
- package/components/matcha-tooltip.scss +224 -224
- package/components/matcha-tree-view.scss +257 -257
- package/layout/matcha-page-layout.scss +778 -778
- package/main.scss +331 -329
- package/package.json +1 -1
- package/tokens/_animations-tokens.scss +37 -37
- package/tokens/_breakpoints-tokens.scss +35 -35
- package/tokens/_color-tokens.scss +274 -274
- package/tokens/_elevation-tokens.scss +33 -33
- package/tokens/_emit-tokens.scss +324 -324
- package/tokens/_material-palette.scss +1149 -1149
- package/tokens/_primitives.scss +98 -98
- package/tokens/_semantic-aliases.scss +120 -120
- package/tokens/_spacing-tokens.scss +94 -94
- package/tokens/_static-tokens.scss +137 -137
- package/tokens/_typography-tokens.scss +65 -65
- package/vendors/charts.scss +90 -90
|
@@ -1,274 +1,274 @@
|
|
|
1
|
-
@use "../abstracts/functions" as *;
|
|
2
|
-
// =============================================================================
|
|
3
|
-
// MATCHA — TOKENS DE COR (papéis semânticos por modo) · SINCRONIZADO DO FIGMA
|
|
4
|
-
// =============================================================================
|
|
5
|
-
// NÃO ajuste COR à mão. Fonte: tokens/matcha/colors/{Light,Dark}.json (Tokens Studio).
|
|
6
|
-
// Sincronizado por scripts/matcha-tokens/sync-tokens.js — gate: sync-tokens.js --check.
|
|
7
|
-
// Mudar cor: edite no Figma/tokens e rode sync-tokens.js --write [--adopt-drift].
|
|
8
|
-
// Comentários, ordem e chaves PASSTHROUGH (sem fonte JSON) são curados — esses pode editar.
|
|
9
|
-
// Consumido por _emit-tokens.scss (emissor) e por abstracts/_theme-api.scss (define-theme).
|
|
10
|
-
// =============================================================================
|
|
11
|
-
@use "sass:map";
|
|
12
|
-
|
|
13
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
14
|
-
// 1. COLOR TOKENS — fonte única (light/dark) na ordem de emissão
|
|
15
|
-
// LIGHT = Figma oficial (matcha/color/* JSON export hierárquico)
|
|
16
|
-
// DARK = tokens confirmados pelo usuário (flat JSON)
|
|
17
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
18
|
-
$matcha-color-tokens: (
|
|
19
|
-
// ── Surface (9) — matcha/color/surface/* ─────────────────────────────────
|
|
20
|
-
// 1:1 Figma DSV3 (Light + Dark JSON export 2026-05-29).
|
|
21
|
-
// Light mode: sage-tinted neutrals (2–4% green hue da marca) + hierarquia perceptível.
|
|
22
|
-
surface-bg: (light: #f1f4f1, dark: #111318),
|
|
23
|
-
// bg-alpha light usa cor BASE distinta (#f0f2f5) — não é #f1f4f1 com alpha.
|
|
24
|
-
// Decisão Figma intencional pra sutil shift de tint no estado transparente.
|
|
25
|
-
surface-bg-alpha: (light: rgba(#f0f2f5, .5), dark: rgba(#111318, .5)),
|
|
26
|
-
surface-bg-inverse: (light: #111318, dark: #f0f2f5),
|
|
27
|
-
surface-bg-inverse-alpha: (light: rgba(#111318, .5), dark: rgba(#f0f2f5, .5)),
|
|
28
|
-
|
|
29
|
-
// Card soft default — light #f7fcf7 (off-white com tint sage muito sutil).
|
|
30
|
-
// Reduz glare contra surface-bg #f1f4f1 (Δ ~5 luminance). Pure white só pra
|
|
31
|
-
// floating overlays via surface-card-strong (modal, command-palette).
|
|
32
|
-
// Pattern Linear / Vercel / Notion: soft cards default + bright float.
|
|
33
|
-
surface: (light: #f7fcf7, dark: #1c1f26),
|
|
34
|
-
surface-card: (light: #f7fcf7, dark: #1c1f26),
|
|
35
|
-
// Card strong — pure white (light) / lifted dark, pra floating overlays
|
|
36
|
-
// que precisam máximo destaque sobre scrim. Modal, popover, dropdown,
|
|
37
|
-
// command-palette. NÃO usar pra cards inline — vira agressivo.
|
|
38
|
-
surface-card-strong: (light: #ffffff, dark: #262a32),
|
|
39
|
-
// Canvas aninhada dentro de card (preview stage, code body, inset panels)
|
|
40
|
-
// Light: sage (= bg da page, cria recorte sutil sobre card off-white)
|
|
41
|
-
// Dark: mais clara que card (inverte lógica, dá profundidade em vez de buraco)
|
|
42
|
-
surface-inner: (light: #f1f4f1, dark: #262a32),
|
|
43
|
-
// card-alpha light usa #ffffff base (não #f7fcf7) — overlay/zebra com white puro
|
|
44
|
-
surface-card-alpha: (light: rgba(#ffffff, .85), dark: rgba(#1c1f26, .5)),
|
|
45
|
-
surface-card-inverse: (light: #1c1f26, dark: #ffffff),
|
|
46
|
-
|
|
47
|
-
surface-sidebar: (light: #e4ebe5, dark: #0d0f14),
|
|
48
|
-
surface-sidebar-hover: (light: #d8e1da, dark: #161920),
|
|
49
|
-
// table-row-hover light: neutral #f4f4f4 (Figma — não tinted sage)
|
|
50
|
-
surface-table-row-hover: (light: #f4f4f4, dark: #151a22),
|
|
51
|
-
|
|
52
|
-
// Border sólido e visível (era rgba(0,0,0,.08) = invisível sobre sage bg)
|
|
53
|
-
surface-border: (light: #e1e7e2, dark: rgba(255, 255, 255, .12)),
|
|
54
|
-
// Border mais forte pra cards elevados (hero, playground — com shadow)
|
|
55
|
-
surface-border-strong: (light: #c8d2ca, dark: rgba(255, 255, 255, .24)),
|
|
56
|
-
surface-hover: (light: rgba(#e4ebe5, .5), dark: rgba(#111318, .5)),
|
|
57
|
-
|
|
58
|
-
// Aliases (flat) — usados massivamente
|
|
59
|
-
// Light mode softening 2026-05-18: fg de #1a1d21 (17:1, "tinta preta") → #2a2d33 (12:1 AAA, "tinta carvão").
|
|
60
|
-
// Inspiração: tom entre Linear (#1a1d21, mais pesado) e GitHub (#1f2328) — reduz fatiga em sessions longas.
|
|
61
|
-
bg: (light: #f1f4f1, dark: #111318),
|
|
62
|
-
fg: (light: #2a2d33, dark: #e8eaed),
|
|
63
|
-
fg-alpha: (light: rgba(#2a2d33, .5), dark: rgba(#e8eaed, .5)),
|
|
64
|
-
fg-inverse: (light: #e8eaed, dark: #2a2d33),
|
|
65
|
-
fg-inverse-alpha: (light: rgba(#e8eaed, .5), dark: rgba(#2a2d33, .5)),
|
|
66
|
-
border: (light: #e1e7e2, dark: rgba(255, 255, 255, .12)),
|
|
67
|
-
|
|
68
|
-
// ── Text (9) — matcha/color/text/* ───────────────────────────────────────
|
|
69
|
-
// Light mode softening 2026-05-18 — todos os tons recuados ~1 step pra reduzir
|
|
70
|
-
// peso visual sem perder hierarquia. Contrastes recalculados sobre card #f7fcf7:
|
|
71
|
-
// primary #2a2d33 → 12.0:1 (AAA, antes era #1a1d21 17:1 = exagero)
|
|
72
|
-
// secondary #5a6066 → 6.8:1 (AAA Large + AA Normal, antes #4a5056 8.5:1)
|
|
73
|
-
// muted #6e7681 → 5.2:1 (AA, antes #5a6a5e 7.4:1)
|
|
74
|
-
// label #7a818a → 4.6:1 (AA, antes #6b7177 5.9:1)
|
|
75
|
-
text-primary: (light: #2a2d33, dark: #e8eaed),
|
|
76
|
-
text-inverse: (light: #e8eaed, dark: #2a2d33),
|
|
77
|
-
text-secondary: (light: #5a6066, dark: rgba(255, 255, 255, .7)),
|
|
78
|
-
// Muted: GitHub-ish neutral (antes era sage-tinted #5a6a5e — verde demais em form helper text)
|
|
79
|
-
text-muted: (light: #6e7681, dark: #a8b5a0),
|
|
80
|
-
text-label: (light: #7a818a, dark: #bdc1c6),
|
|
81
|
-
// Placeholder: #7a818a (4.5:1 sobre card — passa AA mantendo low-emphasis)
|
|
82
|
-
text-placeholder: (light: #7a818a, dark: #6e747a),
|
|
83
|
-
text-hint: (light: #7a818a, dark: #9aa0a6),
|
|
84
|
-
text-static-light: (light: #ffffff, dark: #ffffff),
|
|
85
|
-
text-static-dark: (light: #1a1d21, dark: #1a1d21),
|
|
86
|
-
|
|
87
|
-
// ── Icon (2) — matcha/color/icon/* ───────────────────────────────────────
|
|
88
|
-
// Light mode softening 2026-05-18:
|
|
89
|
-
// default #5f656b → #75767a — recua ícones decorativos (sort, leading) pra não competir com texto
|
|
90
|
-
// active #1a1d21 → #3d4248 — ainda firme mas menos "tinta china" em toggles/sortable headers
|
|
91
|
-
icon-default: (light: #9aa0a6, dark: #9aa0a6),
|
|
92
|
-
icon-active: (light: #3d4248, dark: #e8eaed),
|
|
93
|
-
|
|
94
|
-
// ── Interaction (4) — matcha/color/interaction/* ─────────────────────────
|
|
95
|
-
// Light mode: disabled sólido com sage tint (antes alpha sobre bg = inconsistente)
|
|
96
|
-
interaction-disabled-bg: (light: #cfd6d1, dark: #282c34),
|
|
97
|
-
interaction-disabled-bg-alpha: (light: rgba(#cfd6d1, .5), dark: rgba(#282c34, .5)),
|
|
98
|
-
interaction-disabled-fg: (light: #8a9090, dark: rgba(#e8eaed, .38)),
|
|
99
|
-
interaction-disabled-border: (light: #c8d2ca, dark: rgba(#e8eaed, .38)),
|
|
100
|
-
focus-ring: (light: #43a047, dark: #a8d94e),
|
|
101
|
-
// Aliases legados
|
|
102
|
-
disabled: (light: #cfd6d1, dark: #282c34),
|
|
103
|
-
disabled-fg: (light: #8a9090, dark: rgba(#e8eaed, .38)),
|
|
104
|
-
disabled-border: (light: #c8d2ca, dark: rgba(#e8eaed, .38)),
|
|
105
|
-
disabled-bg: (light: #cfd6d1, dark: #282c34),
|
|
106
|
-
|
|
107
|
-
// ── Neutral (4 tokens Figma matcha/color/neutral/*) ───────────────────────
|
|
108
|
-
// Cor base pra botões e controles sem ênfase semântica (basic, ghost default).
|
|
109
|
-
// Light: sage-tinted grey | Dark: grey neutro escuro.
|
|
110
|
-
neutral: (light: #e4ebe5, dark: #282c34),
|
|
111
|
-
neutral-contrast: (light: #1a1d21, dark: #e8eaed),
|
|
112
|
-
neutral-alpha: (light: rgba(#1a1d21, .08), dark: rgba(#e8eaed, .1)),
|
|
113
|
-
neutral-hover: (light: #d8e1da, dark: #333842),
|
|
114
|
-
|
|
115
|
-
// ── Elevation (6) — matcha/color/elevation/* ─────────────────────────────
|
|
116
|
-
elevation-surface-1: (light: #f8faf8, dark: #1c1f26), // cards, dropdowns (sage)
|
|
117
|
-
elevation-surface-2: (light: #ffffff, dark: #262a32), // menus, floating
|
|
118
|
-
elevation-surface-3: (light: #ffffff, dark: #2e333c), // modals, drawers
|
|
119
|
-
// Shadow base: Figma light usa tinta accent #1A2C1E (não preto puro), dark usa #000000
|
|
120
|
-
elevation-shadow: (light: #1a2c1e, dark: #000000),
|
|
121
|
-
elevation-shadow-tint: (light: #1a2c1e, dark: #000000), // tint da marca pra shadows light
|
|
122
|
-
elevation-scrim: (light: #000000, dark: #000000),
|
|
123
|
-
// Figma matcha/color/state-layer/fg (camada sobre interações)
|
|
124
|
-
state-layer-fg: (light: #000000, dark: #ffffff),
|
|
125
|
-
|
|
126
|
-
// ── Accent (10) — matcha/color/accent/* ──────────────────────────────────
|
|
127
|
-
// Brand inChurch: lime/chartreuse #86BD00 (hue 78°, "matcha tea").
|
|
128
|
-
// Brand bright #86BD00 com white dá 2.25:1 (fail UI). Light mode escurece pra
|
|
129
|
-
// #6E9A00 (3.31:1 — passa WCAG UI/large text mínimo 3:1) mantendo a MESMA hue
|
|
130
|
-
// 78° pra preservar identidade lime. Tradeoff aceito 2026-05-18: accent é usado
|
|
131
|
-
// praticamente só em buttons (CTA filled c/ label branco) onde 3:1 UI é OK.
|
|
132
|
-
// Dark mode: lima bright #a8d94e + label preto (~11:1 AAA).
|
|
133
|
-
// accent-contrast 1:1 Figma DSV3: rgba(0,0,0,.87) em AMBOS os modos (Light + Dark).
|
|
134
|
-
// É label-on-accent ripple/text token, semantica é "preto sobre amarelo-lima". Pra label
|
|
135
|
-
// branco em Filled buttons use accent/text-on (branco no Light / quase-preto no Dark).
|
|
136
|
-
accent: (light: #54a71d, dark: #a8d94e),
|
|
137
|
-
accent-contrast: (light: rgba(0, 0, 0, .87), dark: rgba(0, 0, 0, .87)),
|
|
138
|
-
accent-contrast-alpha: (light: rgba(0, 0, 0, .1), dark: rgba(0, 0, 0, .1)),
|
|
139
|
-
// Figma matcha/color/accent/text-on — branco puro Light / quase preto Dark.
|
|
140
|
-
// Dedicado pra foreground sobre accent/default em Filled buttons, icon buttons.
|
|
141
|
-
// Garante contraste ≥ 3:1 em ambos modos (supera accent/contrast que é preto fixo).
|
|
142
|
-
accent-text-on: (light: #ffffff, dark: #1a1d21),
|
|
143
|
-
accent-alpha: (light: rgba(#54a71d, .1), dark: rgba(#a8d94e, .1)),
|
|
144
|
-
// Light/dark auxiliares: spring green tint (hue 143° matching accent base)
|
|
145
|
-
accent-light: (light: #b9e3a3, dark: #b9f6ca),
|
|
146
|
-
accent-dark: (light: #3a7515, dark: #c5e1a5),
|
|
147
|
-
// Hover/pressed: step ~10% darker mesma hue (3.0:1 → 3.75:1 → 4.7:1)
|
|
148
|
-
accent-hover: (light: #4b9519, dark: #bee57a),
|
|
149
|
-
accent-pressed: (light: #428316, dark: #d4eea0),
|
|
150
|
-
// Surface tints — light spring green
|
|
151
|
-
accent-surface-hover: (light: #e8f3dc, dark: #161e12),
|
|
152
|
-
accent-surface-pressed: (light: #cbe4ab, dark: #1f2d18),
|
|
153
|
-
|
|
154
|
-
// ── Accent Secondary (teal — 4 tokens Figma matcha/color/accent-2/*) ─────
|
|
155
|
-
// Light #00796b (teal-700) | Dark #4fb7ad (teal-light)
|
|
156
|
-
accent-2: (light: #00796b, dark: #4fb7ad),
|
|
157
|
-
accent-2-contrast: (light: #ffffff, dark: #ffffff),
|
|
158
|
-
accent-2-alpha: (light: rgba(#00796b, .10), dark: rgba(#4fb7ad, .12)),
|
|
159
|
-
accent-2-surface: (light: #e0f0ee, dark: #1d332e),
|
|
160
|
-
|
|
161
|
-
// ── Primary (10) — matcha/color/primary/* ────────────────────────────────
|
|
162
|
-
// Light #1664c2 (blue-700) | Dark #64b5f6 (blue-300)
|
|
163
|
-
primary: (light: #1664c2, dark: #64b5f6),
|
|
164
|
-
primary-contrast: (light: #ffffff, dark: rgba(0, 0, 0, .87)),
|
|
165
|
-
primary-contrast-alpha: (light: rgba(255, 255, 255, .1), dark: rgba(0, 0, 0, .1)),
|
|
166
|
-
primary-alpha: (light: rgba(#1664c2, .1), dark: rgba(#64b5f6, .1)),
|
|
167
|
-
primary-light: (light: #b3d7fd, dark: #bbdefb),
|
|
168
|
-
primary-dark: (light: #0d3c8c, dark: #90caf9),
|
|
169
|
-
primary-hover: (light: #2576d2, dark: #90caf9),
|
|
170
|
-
primary-pressed: (light: #378ce1, dark: #bbdefb),
|
|
171
|
-
primary-surface-hover: (light: #e4eefa, dark: #141922),
|
|
172
|
-
primary-surface-pressed: (light: #cddef5, dark: #1a2436),
|
|
173
|
-
|
|
174
|
-
// ── Feedback — Success (9) ───────────────────────────────────────────────
|
|
175
|
-
success: (light: #2e7d32, dark: #69f0ae),
|
|
176
|
-
success-contrast: (light: #ffffff, dark: rgba(0, 0, 0, .87)),
|
|
177
|
-
success-contrast-alpha: (light: rgba(255, 255, 255, .1), dark: rgba(0, 0, 0, .1)),
|
|
178
|
-
success-alpha: (light: rgba(#2e7d32, .1), dark: rgba(#69f0ae, .1)),
|
|
179
|
-
success-hover: (light: #388e3c, dark: #4cd992),
|
|
180
|
-
success-pressed: (light: #43a047, dark: #33c078),
|
|
181
|
-
success-fill: (light: #2e7d32, dark: #43a047),
|
|
182
|
-
success-surface-hover: (light: #e8f5e9, dark: #121d17),
|
|
183
|
-
success-surface-pressed: (light: #c8e6c9, dark: #192f24),
|
|
184
|
-
|
|
185
|
-
// ── Feedback — Danger (9) ────────────────────────────────────────────────
|
|
186
|
-
danger: (light: #c81010, dark: #ef9a9a),
|
|
187
|
-
danger-contrast: (light: #ffffff, dark: rgba(0, 0, 0, .87)),
|
|
188
|
-
danger-contrast-alpha: (light: rgba(255, 255, 255, .1), dark: rgba(0, 0, 0, .1)),
|
|
189
|
-
danger-alpha: (light: rgba(#c81010, .1), dark: rgba(#ef9a9a, .1)),
|
|
190
|
-
danger-hover: (light: #da2c2c, dark: #f4b8b8),
|
|
191
|
-
danger-pressed: (light: #e64848, dark: #f7d0d0),
|
|
192
|
-
danger-fill: (light: #c81010, dark: #e53935),
|
|
193
|
-
danger-surface-hover: (light: #fae8e8, dark: #1d1616),
|
|
194
|
-
danger-surface-pressed: (light: #f5d2d2, dark: #2f2121),
|
|
195
|
-
|
|
196
|
-
// ── Feedback — Warn (9) ──────────────────────────────────────────────────
|
|
197
|
-
// Light #a64e00 (âmbar escuro) | Dark #ffb74d (orange-300)
|
|
198
|
-
warn: (light: #a64e00, dark: #ffb74d),
|
|
199
|
-
warn-contrast: (light: #ffffff, dark: rgba(0, 0, 0, .87)),
|
|
200
|
-
warn-contrast-alpha: (light: rgba(255, 255, 255, .1), dark: rgba(0, 0, 0, .1)),
|
|
201
|
-
warn-alpha: (light: rgba(#a64e00, .1), dark: rgba(#ffb74d, .1)),
|
|
202
|
-
warn-hover: (light: #924200, dark: #e69f33),
|
|
203
|
-
warn-pressed: (light: #7e3600, dark: #cc881a),
|
|
204
|
-
warn-fill: (light: #a64e00, dark: #fb8c00),
|
|
205
|
-
warn-surface-hover: (light: #fcf0e1, dark: #1e1910),
|
|
206
|
-
warn-surface-pressed: (light: #f8e1c3, dark: #2f2616),
|
|
207
|
-
|
|
208
|
-
// ── Feedback — Info (8) ──────────────────────────────────────────────────
|
|
209
|
-
info: (light: #0a2fc2, dark: #4090d8),
|
|
210
|
-
info-contrast: (light: #ffffff, dark: #ffffff),
|
|
211
|
-
info-contrast-alpha: (light: rgba(255, 255, 255, .1), dark: rgba(255, 255, 255, .1)),
|
|
212
|
-
info-alpha: (light: rgba(#0a2fc2, .1), dark: rgba(#4090d8, .1)),
|
|
213
|
-
info-hover: (light: #294cd4, dark: #5aa0e0),
|
|
214
|
-
info-pressed: (light: #4265e0, dark: #74b0e8),
|
|
215
|
-
info-surface-hover: (light: #ebeefa, dark: #0f141e),
|
|
216
|
-
info-surface-pressed: (light: #d8def5, dark: #131f31),
|
|
217
|
-
|
|
218
|
-
// ── Palette (18) — matcha/color/palette/* ────────────────────────────────
|
|
219
|
-
palette-teal: (light: #00796b, dark: #4fb7ad),
|
|
220
|
-
palette-teal-light: (light: #4fb7ad, dark: #009688),
|
|
221
|
-
palette-teal-alpha: (light: rgba(#00796b, .1), dark: rgba(#4fb7ad, .1)),
|
|
222
|
-
palette-light-blue: (light: #0288d1, dark: #54c5f7),
|
|
223
|
-
palette-light-blue-light: (light: #54c5f7, dark: #03a9f4),
|
|
224
|
-
palette-light-blue-alpha: (light: rgba(#0288d1, .1), dark: rgba(#54c5f7, .1)),
|
|
225
|
-
palette-purple: (light: #9c27b0, dark: #bb6ac8),
|
|
226
|
-
palette-purple-light: (light: #bb6ac8, dark: #9c27b0),
|
|
227
|
-
palette-purple-alpha: (light: rgba(#9c27b0, .1), dark: rgba(#bb6ac8, .1)),
|
|
228
|
-
palette-pink: (light: #d81b60, dark: #e46291),
|
|
229
|
-
palette-pink-light: (light: #e46291, dark: #d81b60),
|
|
230
|
-
palette-pink-alpha: (light: rgba(#d81b60, .1), dark: rgba(#e46291, .1)),
|
|
231
|
-
palette-orange: (light: #e65100, dark: #f9a25d),
|
|
232
|
-
palette-orange-light: (light: #f9a25d, dark: #f77814),
|
|
233
|
-
palette-orange-alpha: (light: rgba(#e65100, .1), dark: rgba(#f9a25d, .1)),
|
|
234
|
-
palette-yellow: (light: #ffa000, dark: #efd64f),
|
|
235
|
-
palette-yellow-light: (light: #efd64f, dark: #e8c300),
|
|
236
|
-
palette-yellow-alpha: (light: rgba(#ffa000, .1), dark: rgba(#efd64f, .1)),
|
|
237
|
-
|
|
238
|
-
// ── Chart (5) — matcha/color/chart/* ─────────────────────────────────────
|
|
239
|
-
chart-series-1: (light: #615ce5, dark: #8782f2),
|
|
240
|
-
chart-series-2: (light: #42a147, dark: #66ba6b),
|
|
241
|
-
chart-series-3: (light: #ed6645, dark: #f5876b),
|
|
242
|
-
chart-series-4: (light: #c28700, dark: #ffc93d),
|
|
243
|
-
chart-series-5: (light: #008094, dark: #26c2d9),
|
|
244
|
-
|
|
245
|
-
// Chart contrast (texto sobre a série, AA ≥ 4.5 nos 2 modos) + alpha (fill 10%).
|
|
246
|
-
// Completam a paleta chart pra uso em pílula/badge/superfície (ex.: níveis da tree-view).
|
|
247
|
-
chart-series-1-contrast: (light: #ffffff, dark: rgba(0, 0, 0, .87)),
|
|
248
|
-
chart-series-2-contrast: (light: rgba(0, 0, 0, .87), dark: rgba(0, 0, 0, .87)),
|
|
249
|
-
chart-series-3-contrast: (light: rgba(0, 0, 0, .87), dark: rgba(0, 0, 0, .87)),
|
|
250
|
-
chart-series-4-contrast: (light: rgba(0, 0, 0, .87), dark: rgba(0, 0, 0, .87)),
|
|
251
|
-
chart-series-5-contrast: (light: #ffffff, dark: rgba(0, 0, 0, .87)),
|
|
252
|
-
chart-series-1-alpha: (light: rgba(#615ce5, .1), dark: rgba(#8782f2, .1)),
|
|
253
|
-
chart-series-2-alpha: (light: rgba(#42a147, .1), dark: rgba(#66ba6b, .1)),
|
|
254
|
-
chart-series-3-alpha: (light: rgba(#ed6645, .1), dark: rgba(#f5876b, .1)),
|
|
255
|
-
chart-series-4-alpha: (light: rgba(#c28700, .1), dark: rgba(#ffc93d, .1)),
|
|
256
|
-
chart-series-5-alpha: (light: rgba(#008094, .1), dark: rgba(#26c2d9, .1)),
|
|
257
|
-
);
|
|
258
|
-
|
|
259
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
260
|
-
// 2. MAPAS FLAT POR MODO — token → valor (derivados de $matcha-color-tokens).
|
|
261
|
-
// Consumidos pelo emissor abaixo e pela theme API
|
|
262
|
-
// (matcha-build-color-map() em abstracts/_theme-api.scss).
|
|
263
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
264
|
-
@function matcha-default-colors($mode) {
|
|
265
|
-
$out: ();
|
|
266
|
-
@each $token, $modes in $matcha-color-tokens {
|
|
267
|
-
$out: map.set($out, $token, map.get($modes, $mode));
|
|
268
|
-
}
|
|
269
|
-
@return $out;
|
|
270
|
-
}
|
|
271
|
-
|
|
272
|
-
$matcha-colors-light: matcha-default-colors(light);
|
|
273
|
-
$matcha-colors-dark: matcha-default-colors(dark);
|
|
274
|
-
|
|
1
|
+
@use "../abstracts/functions" as *;
|
|
2
|
+
// =============================================================================
|
|
3
|
+
// MATCHA — TOKENS DE COR (papéis semânticos por modo) · SINCRONIZADO DO FIGMA
|
|
4
|
+
// =============================================================================
|
|
5
|
+
// NÃO ajuste COR à mão. Fonte: tokens/matcha/colors/{Light,Dark}.json (Tokens Studio).
|
|
6
|
+
// Sincronizado por scripts/matcha-tokens/sync-tokens.js — gate: sync-tokens.js --check.
|
|
7
|
+
// Mudar cor: edite no Figma/tokens e rode sync-tokens.js --write [--adopt-drift].
|
|
8
|
+
// Comentários, ordem e chaves PASSTHROUGH (sem fonte JSON) são curados — esses pode editar.
|
|
9
|
+
// Consumido por _emit-tokens.scss (emissor) e por abstracts/_theme-api.scss (define-theme).
|
|
10
|
+
// =============================================================================
|
|
11
|
+
@use "sass:map";
|
|
12
|
+
|
|
13
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
14
|
+
// 1. COLOR TOKENS — fonte única (light/dark) na ordem de emissão
|
|
15
|
+
// LIGHT = Figma oficial (matcha/color/* JSON export hierárquico)
|
|
16
|
+
// DARK = tokens confirmados pelo usuário (flat JSON)
|
|
17
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
18
|
+
$matcha-color-tokens: (
|
|
19
|
+
// ── Surface (9) — matcha/color/surface/* ─────────────────────────────────
|
|
20
|
+
// 1:1 Figma DSV3 (Light + Dark JSON export 2026-05-29).
|
|
21
|
+
// Light mode: sage-tinted neutrals (2–4% green hue da marca) + hierarquia perceptível.
|
|
22
|
+
surface-bg: (light: #f1f4f1, dark: #111318),
|
|
23
|
+
// bg-alpha light usa cor BASE distinta (#f0f2f5) — não é #f1f4f1 com alpha.
|
|
24
|
+
// Decisão Figma intencional pra sutil shift de tint no estado transparente.
|
|
25
|
+
surface-bg-alpha: (light: rgba(#f0f2f5, .5), dark: rgba(#111318, .5)),
|
|
26
|
+
surface-bg-inverse: (light: #111318, dark: #f0f2f5),
|
|
27
|
+
surface-bg-inverse-alpha: (light: rgba(#111318, .5), dark: rgba(#f0f2f5, .5)),
|
|
28
|
+
|
|
29
|
+
// Card soft default — light #f7fcf7 (off-white com tint sage muito sutil).
|
|
30
|
+
// Reduz glare contra surface-bg #f1f4f1 (Δ ~5 luminance). Pure white só pra
|
|
31
|
+
// floating overlays via surface-card-strong (modal, command-palette).
|
|
32
|
+
// Pattern Linear / Vercel / Notion: soft cards default + bright float.
|
|
33
|
+
surface: (light: #f7fcf7, dark: #1c1f26),
|
|
34
|
+
surface-card: (light: #f7fcf7, dark: #1c1f26),
|
|
35
|
+
// Card strong — pure white (light) / lifted dark, pra floating overlays
|
|
36
|
+
// que precisam máximo destaque sobre scrim. Modal, popover, dropdown,
|
|
37
|
+
// command-palette. NÃO usar pra cards inline — vira agressivo.
|
|
38
|
+
surface-card-strong: (light: #ffffff, dark: #262a32),
|
|
39
|
+
// Canvas aninhada dentro de card (preview stage, code body, inset panels)
|
|
40
|
+
// Light: sage (= bg da page, cria recorte sutil sobre card off-white)
|
|
41
|
+
// Dark: mais clara que card (inverte lógica, dá profundidade em vez de buraco)
|
|
42
|
+
surface-inner: (light: #f1f4f1, dark: #262a32),
|
|
43
|
+
// card-alpha light usa #ffffff base (não #f7fcf7) — overlay/zebra com white puro
|
|
44
|
+
surface-card-alpha: (light: rgba(#ffffff, .85), dark: rgba(#1c1f26, .5)),
|
|
45
|
+
surface-card-inverse: (light: #1c1f26, dark: #ffffff),
|
|
46
|
+
|
|
47
|
+
surface-sidebar: (light: #e4ebe5, dark: #0d0f14),
|
|
48
|
+
surface-sidebar-hover: (light: #d8e1da, dark: #161920),
|
|
49
|
+
// table-row-hover light: neutral #f4f4f4 (Figma — não tinted sage)
|
|
50
|
+
surface-table-row-hover: (light: #f4f4f4, dark: #151a22),
|
|
51
|
+
|
|
52
|
+
// Border sólido e visível (era rgba(0,0,0,.08) = invisível sobre sage bg)
|
|
53
|
+
surface-border: (light: #e1e7e2, dark: rgba(255, 255, 255, .12)),
|
|
54
|
+
// Border mais forte pra cards elevados (hero, playground — com shadow)
|
|
55
|
+
surface-border-strong: (light: #c8d2ca, dark: rgba(255, 255, 255, .24)),
|
|
56
|
+
surface-hover: (light: rgba(#e4ebe5, .5), dark: rgba(#111318, .5)),
|
|
57
|
+
|
|
58
|
+
// Aliases (flat) — usados massivamente
|
|
59
|
+
// Light mode softening 2026-05-18: fg de #1a1d21 (17:1, "tinta preta") → #2a2d33 (12:1 AAA, "tinta carvão").
|
|
60
|
+
// Inspiração: tom entre Linear (#1a1d21, mais pesado) e GitHub (#1f2328) — reduz fatiga em sessions longas.
|
|
61
|
+
bg: (light: #f1f4f1, dark: #111318),
|
|
62
|
+
fg: (light: #2a2d33, dark: #e8eaed),
|
|
63
|
+
fg-alpha: (light: rgba(#2a2d33, .5), dark: rgba(#e8eaed, .5)),
|
|
64
|
+
fg-inverse: (light: #e8eaed, dark: #2a2d33),
|
|
65
|
+
fg-inverse-alpha: (light: rgba(#e8eaed, .5), dark: rgba(#2a2d33, .5)),
|
|
66
|
+
border: (light: #e1e7e2, dark: rgba(255, 255, 255, .12)),
|
|
67
|
+
|
|
68
|
+
// ── Text (9) — matcha/color/text/* ───────────────────────────────────────
|
|
69
|
+
// Light mode softening 2026-05-18 — todos os tons recuados ~1 step pra reduzir
|
|
70
|
+
// peso visual sem perder hierarquia. Contrastes recalculados sobre card #f7fcf7:
|
|
71
|
+
// primary #2a2d33 → 12.0:1 (AAA, antes era #1a1d21 17:1 = exagero)
|
|
72
|
+
// secondary #5a6066 → 6.8:1 (AAA Large + AA Normal, antes #4a5056 8.5:1)
|
|
73
|
+
// muted #6e7681 → 5.2:1 (AA, antes #5a6a5e 7.4:1)
|
|
74
|
+
// label #7a818a → 4.6:1 (AA, antes #6b7177 5.9:1)
|
|
75
|
+
text-primary: (light: #2a2d33, dark: #e8eaed),
|
|
76
|
+
text-inverse: (light: #e8eaed, dark: #2a2d33),
|
|
77
|
+
text-secondary: (light: #5a6066, dark: rgba(255, 255, 255, .7)),
|
|
78
|
+
// Muted: GitHub-ish neutral (antes era sage-tinted #5a6a5e — verde demais em form helper text)
|
|
79
|
+
text-muted: (light: #6e7681, dark: #a8b5a0),
|
|
80
|
+
text-label: (light: #7a818a, dark: #bdc1c6),
|
|
81
|
+
// Placeholder: #7a818a (4.5:1 sobre card — passa AA mantendo low-emphasis)
|
|
82
|
+
text-placeholder: (light: #7a818a, dark: #6e747a),
|
|
83
|
+
text-hint: (light: #7a818a, dark: #9aa0a6),
|
|
84
|
+
text-static-light: (light: #ffffff, dark: #ffffff),
|
|
85
|
+
text-static-dark: (light: #1a1d21, dark: #1a1d21),
|
|
86
|
+
|
|
87
|
+
// ── Icon (2) — matcha/color/icon/* ───────────────────────────────────────
|
|
88
|
+
// Light mode softening 2026-05-18:
|
|
89
|
+
// default #5f656b → #75767a — recua ícones decorativos (sort, leading) pra não competir com texto
|
|
90
|
+
// active #1a1d21 → #3d4248 — ainda firme mas menos "tinta china" em toggles/sortable headers
|
|
91
|
+
icon-default: (light: #9aa0a6, dark: #9aa0a6),
|
|
92
|
+
icon-active: (light: #3d4248, dark: #e8eaed),
|
|
93
|
+
|
|
94
|
+
// ── Interaction (4) — matcha/color/interaction/* ─────────────────────────
|
|
95
|
+
// Light mode: disabled sólido com sage tint (antes alpha sobre bg = inconsistente)
|
|
96
|
+
interaction-disabled-bg: (light: #cfd6d1, dark: #282c34),
|
|
97
|
+
interaction-disabled-bg-alpha: (light: rgba(#cfd6d1, .5), dark: rgba(#282c34, .5)),
|
|
98
|
+
interaction-disabled-fg: (light: #8a9090, dark: rgba(#e8eaed, .38)),
|
|
99
|
+
interaction-disabled-border: (light: #c8d2ca, dark: rgba(#e8eaed, .38)),
|
|
100
|
+
focus-ring: (light: #43a047, dark: #a8d94e),
|
|
101
|
+
// Aliases legados
|
|
102
|
+
disabled: (light: #cfd6d1, dark: #282c34),
|
|
103
|
+
disabled-fg: (light: #8a9090, dark: rgba(#e8eaed, .38)),
|
|
104
|
+
disabled-border: (light: #c8d2ca, dark: rgba(#e8eaed, .38)),
|
|
105
|
+
disabled-bg: (light: #cfd6d1, dark: #282c34),
|
|
106
|
+
|
|
107
|
+
// ── Neutral (4 tokens Figma matcha/color/neutral/*) ───────────────────────
|
|
108
|
+
// Cor base pra botões e controles sem ênfase semântica (basic, ghost default).
|
|
109
|
+
// Light: sage-tinted grey | Dark: grey neutro escuro.
|
|
110
|
+
neutral: (light: #e4ebe5, dark: #282c34),
|
|
111
|
+
neutral-contrast: (light: #1a1d21, dark: #e8eaed),
|
|
112
|
+
neutral-alpha: (light: rgba(#1a1d21, .08), dark: rgba(#e8eaed, .1)),
|
|
113
|
+
neutral-hover: (light: #d8e1da, dark: #333842),
|
|
114
|
+
|
|
115
|
+
// ── Elevation (6) — matcha/color/elevation/* ─────────────────────────────
|
|
116
|
+
elevation-surface-1: (light: #f8faf8, dark: #1c1f26), // cards, dropdowns (sage)
|
|
117
|
+
elevation-surface-2: (light: #ffffff, dark: #262a32), // menus, floating
|
|
118
|
+
elevation-surface-3: (light: #ffffff, dark: #2e333c), // modals, drawers
|
|
119
|
+
// Shadow base: Figma light usa tinta accent #1A2C1E (não preto puro), dark usa #000000
|
|
120
|
+
elevation-shadow: (light: #1a2c1e, dark: #000000),
|
|
121
|
+
elevation-shadow-tint: (light: #1a2c1e, dark: #000000), // tint da marca pra shadows light
|
|
122
|
+
elevation-scrim: (light: #000000, dark: #000000),
|
|
123
|
+
// Figma matcha/color/state-layer/fg (camada sobre interações)
|
|
124
|
+
state-layer-fg: (light: #000000, dark: #ffffff),
|
|
125
|
+
|
|
126
|
+
// ── Accent (10) — matcha/color/accent/* ──────────────────────────────────
|
|
127
|
+
// Brand inChurch: lime/chartreuse #86BD00 (hue 78°, "matcha tea").
|
|
128
|
+
// Brand bright #86BD00 com white dá 2.25:1 (fail UI). Light mode escurece pra
|
|
129
|
+
// #6E9A00 (3.31:1 — passa WCAG UI/large text mínimo 3:1) mantendo a MESMA hue
|
|
130
|
+
// 78° pra preservar identidade lime. Tradeoff aceito 2026-05-18: accent é usado
|
|
131
|
+
// praticamente só em buttons (CTA filled c/ label branco) onde 3:1 UI é OK.
|
|
132
|
+
// Dark mode: lima bright #a8d94e + label preto (~11:1 AAA).
|
|
133
|
+
// accent-contrast 1:1 Figma DSV3: rgba(0,0,0,.87) em AMBOS os modos (Light + Dark).
|
|
134
|
+
// É label-on-accent ripple/text token, semantica é "preto sobre amarelo-lima". Pra label
|
|
135
|
+
// branco em Filled buttons use accent/text-on (branco no Light / quase-preto no Dark).
|
|
136
|
+
accent: (light: #54a71d, dark: #a8d94e),
|
|
137
|
+
accent-contrast: (light: rgba(0, 0, 0, .87), dark: rgba(0, 0, 0, .87)),
|
|
138
|
+
accent-contrast-alpha: (light: rgba(0, 0, 0, .1), dark: rgba(0, 0, 0, .1)),
|
|
139
|
+
// Figma matcha/color/accent/text-on — branco puro Light / quase preto Dark.
|
|
140
|
+
// Dedicado pra foreground sobre accent/default em Filled buttons, icon buttons.
|
|
141
|
+
// Garante contraste ≥ 3:1 em ambos modos (supera accent/contrast que é preto fixo).
|
|
142
|
+
accent-text-on: (light: #ffffff, dark: #1a1d21),
|
|
143
|
+
accent-alpha: (light: rgba(#54a71d, .1), dark: rgba(#a8d94e, .1)),
|
|
144
|
+
// Light/dark auxiliares: spring green tint (hue 143° matching accent base)
|
|
145
|
+
accent-light: (light: #b9e3a3, dark: #b9f6ca),
|
|
146
|
+
accent-dark: (light: #3a7515, dark: #c5e1a5),
|
|
147
|
+
// Hover/pressed: step ~10% darker mesma hue (3.0:1 → 3.75:1 → 4.7:1)
|
|
148
|
+
accent-hover: (light: #4b9519, dark: #bee57a),
|
|
149
|
+
accent-pressed: (light: #428316, dark: #d4eea0),
|
|
150
|
+
// Surface tints — light spring green
|
|
151
|
+
accent-surface-hover: (light: #e8f3dc, dark: #161e12),
|
|
152
|
+
accent-surface-pressed: (light: #cbe4ab, dark: #1f2d18),
|
|
153
|
+
|
|
154
|
+
// ── Accent Secondary (teal — 4 tokens Figma matcha/color/accent-2/*) ─────
|
|
155
|
+
// Light #00796b (teal-700) | Dark #4fb7ad (teal-light)
|
|
156
|
+
accent-2: (light: #00796b, dark: #4fb7ad),
|
|
157
|
+
accent-2-contrast: (light: #ffffff, dark: #ffffff),
|
|
158
|
+
accent-2-alpha: (light: rgba(#00796b, .10), dark: rgba(#4fb7ad, .12)),
|
|
159
|
+
accent-2-surface: (light: #e0f0ee, dark: #1d332e),
|
|
160
|
+
|
|
161
|
+
// ── Primary (10) — matcha/color/primary/* ────────────────────────────────
|
|
162
|
+
// Light #1664c2 (blue-700) | Dark #64b5f6 (blue-300)
|
|
163
|
+
primary: (light: #1664c2, dark: #64b5f6),
|
|
164
|
+
primary-contrast: (light: #ffffff, dark: rgba(0, 0, 0, .87)),
|
|
165
|
+
primary-contrast-alpha: (light: rgba(255, 255, 255, .1), dark: rgba(0, 0, 0, .1)),
|
|
166
|
+
primary-alpha: (light: rgba(#1664c2, .1), dark: rgba(#64b5f6, .1)),
|
|
167
|
+
primary-light: (light: #b3d7fd, dark: #bbdefb),
|
|
168
|
+
primary-dark: (light: #0d3c8c, dark: #90caf9),
|
|
169
|
+
primary-hover: (light: #2576d2, dark: #90caf9),
|
|
170
|
+
primary-pressed: (light: #378ce1, dark: #bbdefb),
|
|
171
|
+
primary-surface-hover: (light: #e4eefa, dark: #141922),
|
|
172
|
+
primary-surface-pressed: (light: #cddef5, dark: #1a2436),
|
|
173
|
+
|
|
174
|
+
// ── Feedback — Success (9) ───────────────────────────────────────────────
|
|
175
|
+
success: (light: #2e7d32, dark: #69f0ae),
|
|
176
|
+
success-contrast: (light: #ffffff, dark: rgba(0, 0, 0, .87)),
|
|
177
|
+
success-contrast-alpha: (light: rgba(255, 255, 255, .1), dark: rgba(0, 0, 0, .1)),
|
|
178
|
+
success-alpha: (light: rgba(#2e7d32, .1), dark: rgba(#69f0ae, .1)),
|
|
179
|
+
success-hover: (light: #388e3c, dark: #4cd992),
|
|
180
|
+
success-pressed: (light: #43a047, dark: #33c078),
|
|
181
|
+
success-fill: (light: #2e7d32, dark: #43a047),
|
|
182
|
+
success-surface-hover: (light: #e8f5e9, dark: #121d17),
|
|
183
|
+
success-surface-pressed: (light: #c8e6c9, dark: #192f24),
|
|
184
|
+
|
|
185
|
+
// ── Feedback — Danger (9) ────────────────────────────────────────────────
|
|
186
|
+
danger: (light: #c81010, dark: #ef9a9a),
|
|
187
|
+
danger-contrast: (light: #ffffff, dark: rgba(0, 0, 0, .87)),
|
|
188
|
+
danger-contrast-alpha: (light: rgba(255, 255, 255, .1), dark: rgba(0, 0, 0, .1)),
|
|
189
|
+
danger-alpha: (light: rgba(#c81010, .1), dark: rgba(#ef9a9a, .1)),
|
|
190
|
+
danger-hover: (light: #da2c2c, dark: #f4b8b8),
|
|
191
|
+
danger-pressed: (light: #e64848, dark: #f7d0d0),
|
|
192
|
+
danger-fill: (light: #c81010, dark: #e53935),
|
|
193
|
+
danger-surface-hover: (light: #fae8e8, dark: #1d1616),
|
|
194
|
+
danger-surface-pressed: (light: #f5d2d2, dark: #2f2121),
|
|
195
|
+
|
|
196
|
+
// ── Feedback — Warn (9) ──────────────────────────────────────────────────
|
|
197
|
+
// Light #a64e00 (âmbar escuro) | Dark #ffb74d (orange-300)
|
|
198
|
+
warn: (light: #a64e00, dark: #ffb74d),
|
|
199
|
+
warn-contrast: (light: #ffffff, dark: rgba(0, 0, 0, .87)),
|
|
200
|
+
warn-contrast-alpha: (light: rgba(255, 255, 255, .1), dark: rgba(0, 0, 0, .1)),
|
|
201
|
+
warn-alpha: (light: rgba(#a64e00, .1), dark: rgba(#ffb74d, .1)),
|
|
202
|
+
warn-hover: (light: #924200, dark: #e69f33),
|
|
203
|
+
warn-pressed: (light: #7e3600, dark: #cc881a),
|
|
204
|
+
warn-fill: (light: #a64e00, dark: #fb8c00),
|
|
205
|
+
warn-surface-hover: (light: #fcf0e1, dark: #1e1910),
|
|
206
|
+
warn-surface-pressed: (light: #f8e1c3, dark: #2f2616),
|
|
207
|
+
|
|
208
|
+
// ── Feedback — Info (8) ──────────────────────────────────────────────────
|
|
209
|
+
info: (light: #0a2fc2, dark: #4090d8),
|
|
210
|
+
info-contrast: (light: #ffffff, dark: #ffffff),
|
|
211
|
+
info-contrast-alpha: (light: rgba(255, 255, 255, .1), dark: rgba(255, 255, 255, .1)),
|
|
212
|
+
info-alpha: (light: rgba(#0a2fc2, .1), dark: rgba(#4090d8, .1)),
|
|
213
|
+
info-hover: (light: #294cd4, dark: #5aa0e0),
|
|
214
|
+
info-pressed: (light: #4265e0, dark: #74b0e8),
|
|
215
|
+
info-surface-hover: (light: #ebeefa, dark: #0f141e),
|
|
216
|
+
info-surface-pressed: (light: #d8def5, dark: #131f31),
|
|
217
|
+
|
|
218
|
+
// ── Palette (18) — matcha/color/palette/* ────────────────────────────────
|
|
219
|
+
palette-teal: (light: #00796b, dark: #4fb7ad),
|
|
220
|
+
palette-teal-light: (light: #4fb7ad, dark: #009688),
|
|
221
|
+
palette-teal-alpha: (light: rgba(#00796b, .1), dark: rgba(#4fb7ad, .1)),
|
|
222
|
+
palette-light-blue: (light: #0288d1, dark: #54c5f7),
|
|
223
|
+
palette-light-blue-light: (light: #54c5f7, dark: #03a9f4),
|
|
224
|
+
palette-light-blue-alpha: (light: rgba(#0288d1, .1), dark: rgba(#54c5f7, .1)),
|
|
225
|
+
palette-purple: (light: #9c27b0, dark: #bb6ac8),
|
|
226
|
+
palette-purple-light: (light: #bb6ac8, dark: #9c27b0),
|
|
227
|
+
palette-purple-alpha: (light: rgba(#9c27b0, .1), dark: rgba(#bb6ac8, .1)),
|
|
228
|
+
palette-pink: (light: #d81b60, dark: #e46291),
|
|
229
|
+
palette-pink-light: (light: #e46291, dark: #d81b60),
|
|
230
|
+
palette-pink-alpha: (light: rgba(#d81b60, .1), dark: rgba(#e46291, .1)),
|
|
231
|
+
palette-orange: (light: #e65100, dark: #f9a25d),
|
|
232
|
+
palette-orange-light: (light: #f9a25d, dark: #f77814),
|
|
233
|
+
palette-orange-alpha: (light: rgba(#e65100, .1), dark: rgba(#f9a25d, .1)),
|
|
234
|
+
palette-yellow: (light: #ffa000, dark: #efd64f),
|
|
235
|
+
palette-yellow-light: (light: #efd64f, dark: #e8c300),
|
|
236
|
+
palette-yellow-alpha: (light: rgba(#ffa000, .1), dark: rgba(#efd64f, .1)),
|
|
237
|
+
|
|
238
|
+
// ── Chart (5) — matcha/color/chart/* ─────────────────────────────────────
|
|
239
|
+
chart-series-1: (light: #615ce5, dark: #8782f2),
|
|
240
|
+
chart-series-2: (light: #42a147, dark: #66ba6b),
|
|
241
|
+
chart-series-3: (light: #ed6645, dark: #f5876b),
|
|
242
|
+
chart-series-4: (light: #c28700, dark: #ffc93d),
|
|
243
|
+
chart-series-5: (light: #008094, dark: #26c2d9),
|
|
244
|
+
|
|
245
|
+
// Chart contrast (texto sobre a série, AA ≥ 4.5 nos 2 modos) + alpha (fill 10%).
|
|
246
|
+
// Completam a paleta chart pra uso em pílula/badge/superfície (ex.: níveis da tree-view).
|
|
247
|
+
chart-series-1-contrast: (light: #ffffff, dark: rgba(0, 0, 0, .87)),
|
|
248
|
+
chart-series-2-contrast: (light: rgba(0, 0, 0, .87), dark: rgba(0, 0, 0, .87)),
|
|
249
|
+
chart-series-3-contrast: (light: rgba(0, 0, 0, .87), dark: rgba(0, 0, 0, .87)),
|
|
250
|
+
chart-series-4-contrast: (light: rgba(0, 0, 0, .87), dark: rgba(0, 0, 0, .87)),
|
|
251
|
+
chart-series-5-contrast: (light: #ffffff, dark: rgba(0, 0, 0, .87)),
|
|
252
|
+
chart-series-1-alpha: (light: rgba(#615ce5, .1), dark: rgba(#8782f2, .1)),
|
|
253
|
+
chart-series-2-alpha: (light: rgba(#42a147, .1), dark: rgba(#66ba6b, .1)),
|
|
254
|
+
chart-series-3-alpha: (light: rgba(#ed6645, .1), dark: rgba(#f5876b, .1)),
|
|
255
|
+
chart-series-4-alpha: (light: rgba(#c28700, .1), dark: rgba(#ffc93d, .1)),
|
|
256
|
+
chart-series-5-alpha: (light: rgba(#008094, .1), dark: rgba(#26c2d9, .1)),
|
|
257
|
+
);
|
|
258
|
+
|
|
259
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
260
|
+
// 2. MAPAS FLAT POR MODO — token → valor (derivados de $matcha-color-tokens).
|
|
261
|
+
// Consumidos pelo emissor abaixo e pela theme API
|
|
262
|
+
// (matcha-build-color-map() em abstracts/_theme-api.scss).
|
|
263
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
264
|
+
@function matcha-default-colors($mode) {
|
|
265
|
+
$out: ();
|
|
266
|
+
@each $token, $modes in $matcha-color-tokens {
|
|
267
|
+
$out: map.set($out, $token, map.get($modes, $mode));
|
|
268
|
+
}
|
|
269
|
+
@return $out;
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
$matcha-colors-light: matcha-default-colors(light);
|
|
273
|
+
$matcha-colors-dark: matcha-default-colors(dark);
|
|
274
|
+
|
|
@@ -1,33 +1,33 @@
|
|
|
1
|
-
// =============================================================================
|
|
2
|
-
// Elevation Tokens — Aligned with Figma matcha/elevation/level-{1-4}
|
|
3
|
-
// =============================================================================
|
|
4
|
-
|
|
5
|
-
// ── Semantic shadow levels (3-layer Figma spec: accent glow + ambient + key) ──
|
|
6
|
-
// Light mode: top layer usa tinta accent (rgba(45,122,47,..)) pra identidade da marca,
|
|
7
|
-
// camadas intermediárias/base usam tint escuro (#1A2C1E) pra profundidade
|
|
8
|
-
// Dark mode: continua preto puro (ambiente já escuro)
|
|
9
|
-
//
|
|
10
|
-
// Spec 1:1 com Figma matcha/elevation/level-{1-4} — DS-PAINEL nodes.
|
|
11
|
-
|
|
12
|
-
// Level 1: Cards elevados padrão (hero card, side cards) — Figma hero-card shadow
|
|
13
|
-
$shadow-1-light: 0 8px 24px -8px rgba(45, 122, 47, 0.04), 0 2px 8px -1px rgba(26, 44, 30, 0.08), 0 1px 2px rgba(26, 44, 30, 0.04);
|
|
14
|
-
$shadow-1-dark: 0 1px 2px rgba(0, 0, 0, 0.10), 0 2px 6px -1px rgba(0, 0, 0, 0.15);
|
|
15
|
-
|
|
16
|
-
// Level 2: Cards destacados (playground, feature cards) — Figma playground-card shadow
|
|
17
|
-
$shadow-2-light: 0 12px 32px -10px rgba(45, 122, 47, 0.05), 0 4px 16px -2px rgba(26, 44, 30, 0.10), 0 2px 4px -1px rgba(26, 44, 30, 0.05);
|
|
18
|
-
$shadow-2-dark: 0 2px 4px -1px rgba(0, 0, 0, 0.10), 0 4px 16px -2px rgba(0, 0, 0, 0.20);
|
|
19
|
-
|
|
20
|
-
// Level 3: Modals, drawers, side panels
|
|
21
|
-
$shadow-3-light: 0 16px 40px -12px rgba(45, 122, 47, 0.06), 0 12px 32px -4px rgba(26, 44, 30, 0.14), 0 4px 8px -2px rgba(26, 44, 30, 0.08);
|
|
22
|
-
$shadow-3-dark: 0 4px 8px -2px rgba(0, 0, 0, 0.15), 0 12px 32px -4px rgba(0, 0, 0, 0.30);
|
|
23
|
-
|
|
24
|
-
// Level 4: Tooltips, command palette, notifications
|
|
25
|
-
$shadow-4-light: 0 24px 48px -16px rgba(45, 122, 47, 0.08), 0 24px 48px -8px rgba(26, 44, 30, 0.18), 0 8px 16px -4px rgba(26, 44, 30, 0.10);
|
|
26
|
-
$shadow-4-dark: 0 8px 16px -4px rgba(0, 0, 0, 0.20), 0 24px 48px -8px rgba(0, 0, 0, 0.40);
|
|
27
|
-
|
|
28
|
-
// ── Legacy elevation system (Material Design 0-24) — kept for retrocompatibility ──
|
|
29
|
-
$elevation-transition-duration: 280ms !default;
|
|
30
|
-
$elevation-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1) !default;
|
|
31
|
-
$elevation-color: black !default;
|
|
32
|
-
$elevation-opacity: 1 !default;
|
|
33
|
-
$elevation-prefix: "elevation-z-";
|
|
1
|
+
// =============================================================================
|
|
2
|
+
// Elevation Tokens — Aligned with Figma matcha/elevation/level-{1-4}
|
|
3
|
+
// =============================================================================
|
|
4
|
+
|
|
5
|
+
// ── Semantic shadow levels (3-layer Figma spec: accent glow + ambient + key) ──
|
|
6
|
+
// Light mode: top layer usa tinta accent (rgba(45,122,47,..)) pra identidade da marca,
|
|
7
|
+
// camadas intermediárias/base usam tint escuro (#1A2C1E) pra profundidade
|
|
8
|
+
// Dark mode: continua preto puro (ambiente já escuro)
|
|
9
|
+
//
|
|
10
|
+
// Spec 1:1 com Figma matcha/elevation/level-{1-4} — DS-PAINEL nodes.
|
|
11
|
+
|
|
12
|
+
// Level 1: Cards elevados padrão (hero card, side cards) — Figma hero-card shadow
|
|
13
|
+
$shadow-1-light: 0 8px 24px -8px rgba(45, 122, 47, 0.04), 0 2px 8px -1px rgba(26, 44, 30, 0.08), 0 1px 2px rgba(26, 44, 30, 0.04);
|
|
14
|
+
$shadow-1-dark: 0 1px 2px rgba(0, 0, 0, 0.10), 0 2px 6px -1px rgba(0, 0, 0, 0.15);
|
|
15
|
+
|
|
16
|
+
// Level 2: Cards destacados (playground, feature cards) — Figma playground-card shadow
|
|
17
|
+
$shadow-2-light: 0 12px 32px -10px rgba(45, 122, 47, 0.05), 0 4px 16px -2px rgba(26, 44, 30, 0.10), 0 2px 4px -1px rgba(26, 44, 30, 0.05);
|
|
18
|
+
$shadow-2-dark: 0 2px 4px -1px rgba(0, 0, 0, 0.10), 0 4px 16px -2px rgba(0, 0, 0, 0.20);
|
|
19
|
+
|
|
20
|
+
// Level 3: Modals, drawers, side panels
|
|
21
|
+
$shadow-3-light: 0 16px 40px -12px rgba(45, 122, 47, 0.06), 0 12px 32px -4px rgba(26, 44, 30, 0.14), 0 4px 8px -2px rgba(26, 44, 30, 0.08);
|
|
22
|
+
$shadow-3-dark: 0 4px 8px -2px rgba(0, 0, 0, 0.15), 0 12px 32px -4px rgba(0, 0, 0, 0.30);
|
|
23
|
+
|
|
24
|
+
// Level 4: Tooltips, command palette, notifications
|
|
25
|
+
$shadow-4-light: 0 24px 48px -16px rgba(45, 122, 47, 0.08), 0 24px 48px -8px rgba(26, 44, 30, 0.18), 0 8px 16px -4px rgba(26, 44, 30, 0.10);
|
|
26
|
+
$shadow-4-dark: 0 8px 16px -4px rgba(0, 0, 0, 0.20), 0 24px 48px -8px rgba(0, 0, 0, 0.40);
|
|
27
|
+
|
|
28
|
+
// ── Legacy elevation system (Material Design 0-24) — kept for retrocompatibility ──
|
|
29
|
+
$elevation-transition-duration: 280ms !default;
|
|
30
|
+
$elevation-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1) !default;
|
|
31
|
+
$elevation-color: black !default;
|
|
32
|
+
$elevation-opacity: 1 !default;
|
|
33
|
+
$elevation-prefix: "elevation-z-";
|