@inchurch/matcha-theme 22.40.0 → 22.40.1
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 +291 -291
- package/abstracts/_elevation.scss +108 -108
- package/abstracts/_functions.scss +321 -321
- package/abstracts/_media-breakpoint.scss +26 -26
- package/abstracts/_theme-api.scss +224 -224
- package/abstracts/_typography.scss +128 -128
- package/base/_reset.scss +487 -487
- package/components/app-page-header.scss +260 -260
- package/components/matcha-accordion.scss +297 -297
- package/components/matcha-audio-player.scss +31 -31
- package/components/matcha-autocomplete.scss +145 -145
- package/components/matcha-avatar.scss +426 -426
- package/components/matcha-badge.scss +120 -120
- package/components/matcha-breadcrumb.scss +231 -231
- package/components/matcha-button-toggle.scss +484 -484
- package/components/matcha-buttons.scss +973 -973
- package/components/matcha-calendar.scss +253 -253
- package/components/matcha-cards.scss +212 -212
- package/components/matcha-chart-card.scss +53 -53
- package/components/matcha-checkbox.scss +266 -266
- package/components/matcha-chip.scss +311 -311
- package/components/matcha-color-pick.scss +34 -34
- package/components/matcha-command-palette.scss +316 -316
- package/components/matcha-crop.scss +419 -419
- 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 +650 -650
- package/components/matcha-flag.scss +103 -103
- package/components/matcha-footer.scss +91 -91
- package/components/matcha-form-field.scss +883 -883
- 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 +247 -247
- package/components/matcha-icon.scss +111 -111
- package/components/matcha-image.scss +60 -60
- 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 +770 -770
- package/components/matcha-notification.scss +417 -417
- package/components/matcha-option.scss +170 -170
- package/components/matcha-page-builder.scss +4196 -4196
- package/components/matcha-paginator.scss +699 -699
- package/components/matcha-panel.scss +216 -216
- package/components/matcha-period.scss +174 -174
- package/components/matcha-profile-card.scss +50 -50
- package/components/matcha-progress-bar.scss +355 -355
- package/components/matcha-radio.scss +325 -325
- 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 +643 -629
- package/components/matcha-skeleton.scss +182 -182
- 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-stepper.scss +376 -376
- package/components/matcha-table-cell.scss +107 -107
- package/components/matcha-table.scss +722 -722
- package/components/matcha-tabs.scss +642 -642
- package/components/matcha-text-editor.scss +111 -111
- package/components/matcha-time.scss +33 -33
- package/components/matcha-timepicker.scss +13 -13
- package/components/matcha-toolbar.scss +366 -366
- package/components/matcha-tooltip.scss +235 -235
- package/components/matcha-tree-view.scss +658 -658
- package/layout/matcha-page-layout.scss +778 -778
- package/main.scss +334 -334
- package/package.json +1 -1
- package/tokens/_animations-tokens.scss +37 -37
- package/tokens/_breakpoints-tokens.scss +35 -35
- package/tokens/_color-tokens.scss +288 -288
- package/tokens/_elevation-tokens.scss +33 -33
- package/tokens/_emit-tokens.scss +329 -329
- 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,288 +1,288 @@
|
|
|
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 1:1 Figma DSV3: {common.white} em AMBOS os modos. Serve no Light
|
|
158
|
-
// (#00796b + branco = 5.3:1), mas NÃO no Dark: accent-2 clareia pra #4fb7ad e o branco
|
|
159
|
-
// cai pra ~2.3:1 (reprova AA). Mesma situação do accent/contrast — por isso a saída é a
|
|
160
|
-
// mesma: um accent-2/text-on dedicado a FOREGROUND DE TEXTO, que inverte por modo.
|
|
161
|
-
// O -contrast fica intacto, fiel ao Figma (drift = o Figma vence).
|
|
162
|
-
accent-2-contrast: (light: #ffffff, dark: #ffffff),
|
|
163
|
-
// Espelha accent-text-on. Valores batem com matcha-text-on() (rota whitelabel):
|
|
164
|
-
// yiq(#00796b)=83 → #ffffff · yiq(#4fb7ad)=151 → #1a1d21.
|
|
165
|
-
accent-2-text-on: (light: #ffffff, dark: #1a1d21),
|
|
166
|
-
accent-2-alpha: (light: rgba(#00796b, .10), dark: rgba(#4fb7ad, .12)),
|
|
167
|
-
accent-2-surface: (light: #e0f0ee, dark: #1d332e),
|
|
168
|
-
|
|
169
|
-
// ── Primary (10) — matcha/color/primary/* ────────────────────────────────
|
|
170
|
-
// Light #1664c2 (blue-700) | Dark #64b5f6 (blue-300)
|
|
171
|
-
primary: (light: #1664c2, dark: #64b5f6),
|
|
172
|
-
primary-contrast: (light: #ffffff, dark: rgba(0, 0, 0, .87)),
|
|
173
|
-
primary-contrast-alpha: (light: rgba(255, 255, 255, .1), dark: rgba(0, 0, 0, .1)),
|
|
174
|
-
primary-alpha: (light: rgba(#1664c2, .1), dark: rgba(#64b5f6, .1)),
|
|
175
|
-
primary-light: (light: #b3d7fd, dark: #bbdefb),
|
|
176
|
-
primary-dark: (light: #0d3c8c, dark: #90caf9),
|
|
177
|
-
primary-hover: (light: #2576d2, dark: #90caf9),
|
|
178
|
-
primary-pressed: (light: #378ce1, dark: #bbdefb),
|
|
179
|
-
primary-surface-hover: (light: #e4eefa, dark: #141922),
|
|
180
|
-
primary-surface-pressed: (light: #cddef5, dark: #1a2436),
|
|
181
|
-
|
|
182
|
-
// ── Feedback — Success (9) ───────────────────────────────────────────────
|
|
183
|
-
success: (light: #2e7d32, dark: #69f0ae),
|
|
184
|
-
success-contrast: (light: #ffffff, dark: rgba(0, 0, 0, .87)),
|
|
185
|
-
success-contrast-alpha: (light: rgba(255, 255, 255, .1), dark: rgba(0, 0, 0, .1)),
|
|
186
|
-
success-alpha: (light: rgba(#2e7d32, .1), dark: rgba(#69f0ae, .1)),
|
|
187
|
-
success-hover: (light: #388e3c, dark: #4cd992),
|
|
188
|
-
success-pressed: (light: #43a047, dark: #33c078),
|
|
189
|
-
success-fill: (light: #2e7d32, dark: #43a047),
|
|
190
|
-
success-surface-hover: (light: #e8f5e9, dark: #121d17),
|
|
191
|
-
success-surface-pressed: (light: #c8e6c9, dark: #192f24),
|
|
192
|
-
|
|
193
|
-
// ── Feedback — Danger (9) ────────────────────────────────────────────────
|
|
194
|
-
danger: (light: #c81010, dark: #ef9a9a),
|
|
195
|
-
danger-contrast: (light: #ffffff, dark: rgba(0, 0, 0, .87)),
|
|
196
|
-
danger-contrast-alpha: (light: rgba(255, 255, 255, .1), dark: rgba(0, 0, 0, .1)),
|
|
197
|
-
danger-alpha: (light: rgba(#c81010, .1), dark: rgba(#ef9a9a, .1)),
|
|
198
|
-
danger-hover: (light: #da2c2c, dark: #f4b8b8),
|
|
199
|
-
danger-pressed: (light: #e64848, dark: #f7d0d0),
|
|
200
|
-
danger-fill: (light: #c81010, dark: #e53935),
|
|
201
|
-
danger-surface-hover: (light: #fae8e8, dark: #1d1616),
|
|
202
|
-
danger-surface-pressed: (light: #f5d2d2, dark: #2f2121),
|
|
203
|
-
|
|
204
|
-
// ── Feedback — Warn (9) ──────────────────────────────────────────────────
|
|
205
|
-
// Light #a64e00 (âmbar escuro) | Dark #ffb74d (orange-300)
|
|
206
|
-
warn: (light: #a64e00, dark: #ffb74d),
|
|
207
|
-
warn-contrast: (light: #ffffff, dark: rgba(0, 0, 0, .87)),
|
|
208
|
-
warn-contrast-alpha: (light: rgba(255, 255, 255, .1), dark: rgba(0, 0, 0, .1)),
|
|
209
|
-
warn-alpha: (light: rgba(#a64e00, .1), dark: rgba(#ffb74d, .1)),
|
|
210
|
-
warn-hover: (light: #924200, dark: #e69f33),
|
|
211
|
-
warn-pressed: (light: #7e3600, dark: #cc881a),
|
|
212
|
-
warn-fill: (light: #a64e00, dark: #fb8c00),
|
|
213
|
-
warn-surface-hover: (light: #fcf0e1, dark: #1e1910),
|
|
214
|
-
warn-surface-pressed: (light: #f8e1c3, dark: #2f2616),
|
|
215
|
-
|
|
216
|
-
// ── Feedback — Info (8) ──────────────────────────────────────────────────
|
|
217
|
-
info: (light: #0a2fc2, dark: #4090d8),
|
|
218
|
-
info-contrast: (light: #ffffff, dark: #ffffff),
|
|
219
|
-
info-contrast-alpha: (light: rgba(255, 255, 255, .1), dark: rgba(255, 255, 255, .1)),
|
|
220
|
-
info-alpha: (light: rgba(#0a2fc2, .1), dark: rgba(#4090d8, .1)),
|
|
221
|
-
info-hover: (light: #294cd4, dark: #5aa0e0),
|
|
222
|
-
info-pressed: (light: #4265e0, dark: #74b0e8),
|
|
223
|
-
info-surface-hover: (light: #ebeefa, dark: #0f141e),
|
|
224
|
-
info-surface-pressed: (light: #d8def5, dark: #131f31),
|
|
225
|
-
|
|
226
|
-
// ── Palette (19) — matcha/color/palette/* ────────────────────────────────
|
|
227
|
-
palette-teal: (light: #00796b, dark: #4fb7ad),
|
|
228
|
-
palette-teal-light: (light: #4fb7ad, dark: #009688),
|
|
229
|
-
palette-teal-alpha: (light: rgba(#00796b, .1), dark: rgba(#4fb7ad, .1)),
|
|
230
|
-
palette-light-blue: (light: #0288d1, dark: #54c5f7),
|
|
231
|
-
palette-light-blue-light: (light: #54c5f7, dark: #03a9f4),
|
|
232
|
-
palette-light-blue-alpha: (light: rgba(#0288d1, .1), dark: rgba(#54c5f7, .1)),
|
|
233
|
-
palette-purple: (light: #9c27b0, dark: #bb6ac8),
|
|
234
|
-
palette-purple-light: (light: #bb6ac8, dark: #9c27b0),
|
|
235
|
-
palette-purple-alpha: (light: rgba(#9c27b0, .1), dark: rgba(#bb6ac8, .1)),
|
|
236
|
-
// Contraste (texto sobre a cor sólida), mesmo critério dos chart-series-*-contrast.
|
|
237
|
-
// Light #9c27b0 + branco = 5.6:1 · Dark #bb6ac8 + preto .87 = ~7:1 (AA nos 2 modos).
|
|
238
|
-
// Só o purple tem o par por enquanto: é a única cor da paleta usada como fill de
|
|
239
|
-
// superfície com texto em cima (barra de Jornada do dashboard). As outras ganham o
|
|
240
|
-
// seu quando aparecer o caso — não gerar 6 pares especulativos.
|
|
241
|
-
palette-purple-contrast: (light: #ffffff, dark: rgba(0, 0, 0, .87)),
|
|
242
|
-
palette-pink: (light: #d81b60, dark: #e46291),
|
|
243
|
-
palette-pink-light: (light: #e46291, dark: #d81b60),
|
|
244
|
-
palette-pink-alpha: (light: rgba(#d81b60, .1), dark: rgba(#e46291, .1)),
|
|
245
|
-
palette-orange: (light: #e65100, dark: #f9a25d),
|
|
246
|
-
palette-orange-light: (light: #f9a25d, dark: #f77814),
|
|
247
|
-
palette-orange-alpha: (light: rgba(#e65100, .1), dark: rgba(#f9a25d, .1)),
|
|
248
|
-
palette-yellow: (light: #ffa000, dark: #efd64f),
|
|
249
|
-
palette-yellow-light: (light: #efd64f, dark: #e8c300),
|
|
250
|
-
palette-yellow-alpha: (light: rgba(#ffa000, .1), dark: rgba(#efd64f, .1)),
|
|
251
|
-
|
|
252
|
-
// ── Chart (5) — matcha/color/chart/* ─────────────────────────────────────
|
|
253
|
-
chart-series-1: (light: #615ce5, dark: #8782f2),
|
|
254
|
-
chart-series-2: (light: #42a147, dark: #66ba6b),
|
|
255
|
-
chart-series-3: (light: #ed6645, dark: #f5876b),
|
|
256
|
-
chart-series-4: (light: #c28700, dark: #ffc93d),
|
|
257
|
-
chart-series-5: (light: #008094, dark: #26c2d9),
|
|
258
|
-
|
|
259
|
-
// Chart contrast (texto sobre a série, AA ≥ 4.5 nos 2 modos) + alpha (fill 10%).
|
|
260
|
-
// Completam a paleta chart pra uso em pílula/badge/superfície (ex.: níveis da tree-view).
|
|
261
|
-
chart-series-1-contrast: (light: #ffffff, dark: rgba(0, 0, 0, .87)),
|
|
262
|
-
chart-series-2-contrast: (light: rgba(0, 0, 0, .87), dark: rgba(0, 0, 0, .87)),
|
|
263
|
-
chart-series-3-contrast: (light: rgba(0, 0, 0, .87), dark: rgba(0, 0, 0, .87)),
|
|
264
|
-
chart-series-4-contrast: (light: rgba(0, 0, 0, .87), dark: rgba(0, 0, 0, .87)),
|
|
265
|
-
chart-series-5-contrast: (light: #ffffff, dark: rgba(0, 0, 0, .87)),
|
|
266
|
-
chart-series-1-alpha: (light: rgba(#615ce5, .1), dark: rgba(#8782f2, .1)),
|
|
267
|
-
chart-series-2-alpha: (light: rgba(#42a147, .1), dark: rgba(#66ba6b, .1)),
|
|
268
|
-
chart-series-3-alpha: (light: rgba(#ed6645, .1), dark: rgba(#f5876b, .1)),
|
|
269
|
-
chart-series-4-alpha: (light: rgba(#c28700, .1), dark: rgba(#ffc93d, .1)),
|
|
270
|
-
chart-series-5-alpha: (light: rgba(#008094, .1), dark: rgba(#26c2d9, .1)),
|
|
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
|
-
|
|
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 1:1 Figma DSV3: {common.white} em AMBOS os modos. Serve no Light
|
|
158
|
+
// (#00796b + branco = 5.3:1), mas NÃO no Dark: accent-2 clareia pra #4fb7ad e o branco
|
|
159
|
+
// cai pra ~2.3:1 (reprova AA). Mesma situação do accent/contrast — por isso a saída é a
|
|
160
|
+
// mesma: um accent-2/text-on dedicado a FOREGROUND DE TEXTO, que inverte por modo.
|
|
161
|
+
// O -contrast fica intacto, fiel ao Figma (drift = o Figma vence).
|
|
162
|
+
accent-2-contrast: (light: #ffffff, dark: #ffffff),
|
|
163
|
+
// Espelha accent-text-on. Valores batem com matcha-text-on() (rota whitelabel):
|
|
164
|
+
// yiq(#00796b)=83 → #ffffff · yiq(#4fb7ad)=151 → #1a1d21.
|
|
165
|
+
accent-2-text-on: (light: #ffffff, dark: #1a1d21),
|
|
166
|
+
accent-2-alpha: (light: rgba(#00796b, .10), dark: rgba(#4fb7ad, .12)),
|
|
167
|
+
accent-2-surface: (light: #e0f0ee, dark: #1d332e),
|
|
168
|
+
|
|
169
|
+
// ── Primary (10) — matcha/color/primary/* ────────────────────────────────
|
|
170
|
+
// Light #1664c2 (blue-700) | Dark #64b5f6 (blue-300)
|
|
171
|
+
primary: (light: #1664c2, dark: #64b5f6),
|
|
172
|
+
primary-contrast: (light: #ffffff, dark: rgba(0, 0, 0, .87)),
|
|
173
|
+
primary-contrast-alpha: (light: rgba(255, 255, 255, .1), dark: rgba(0, 0, 0, .1)),
|
|
174
|
+
primary-alpha: (light: rgba(#1664c2, .1), dark: rgba(#64b5f6, .1)),
|
|
175
|
+
primary-light: (light: #b3d7fd, dark: #bbdefb),
|
|
176
|
+
primary-dark: (light: #0d3c8c, dark: #90caf9),
|
|
177
|
+
primary-hover: (light: #2576d2, dark: #90caf9),
|
|
178
|
+
primary-pressed: (light: #378ce1, dark: #bbdefb),
|
|
179
|
+
primary-surface-hover: (light: #e4eefa, dark: #141922),
|
|
180
|
+
primary-surface-pressed: (light: #cddef5, dark: #1a2436),
|
|
181
|
+
|
|
182
|
+
// ── Feedback — Success (9) ───────────────────────────────────────────────
|
|
183
|
+
success: (light: #2e7d32, dark: #69f0ae),
|
|
184
|
+
success-contrast: (light: #ffffff, dark: rgba(0, 0, 0, .87)),
|
|
185
|
+
success-contrast-alpha: (light: rgba(255, 255, 255, .1), dark: rgba(0, 0, 0, .1)),
|
|
186
|
+
success-alpha: (light: rgba(#2e7d32, .1), dark: rgba(#69f0ae, .1)),
|
|
187
|
+
success-hover: (light: #388e3c, dark: #4cd992),
|
|
188
|
+
success-pressed: (light: #43a047, dark: #33c078),
|
|
189
|
+
success-fill: (light: #2e7d32, dark: #43a047),
|
|
190
|
+
success-surface-hover: (light: #e8f5e9, dark: #121d17),
|
|
191
|
+
success-surface-pressed: (light: #c8e6c9, dark: #192f24),
|
|
192
|
+
|
|
193
|
+
// ── Feedback — Danger (9) ────────────────────────────────────────────────
|
|
194
|
+
danger: (light: #c81010, dark: #ef9a9a),
|
|
195
|
+
danger-contrast: (light: #ffffff, dark: rgba(0, 0, 0, .87)),
|
|
196
|
+
danger-contrast-alpha: (light: rgba(255, 255, 255, .1), dark: rgba(0, 0, 0, .1)),
|
|
197
|
+
danger-alpha: (light: rgba(#c81010, .1), dark: rgba(#ef9a9a, .1)),
|
|
198
|
+
danger-hover: (light: #da2c2c, dark: #f4b8b8),
|
|
199
|
+
danger-pressed: (light: #e64848, dark: #f7d0d0),
|
|
200
|
+
danger-fill: (light: #c81010, dark: #e53935),
|
|
201
|
+
danger-surface-hover: (light: #fae8e8, dark: #1d1616),
|
|
202
|
+
danger-surface-pressed: (light: #f5d2d2, dark: #2f2121),
|
|
203
|
+
|
|
204
|
+
// ── Feedback — Warn (9) ──────────────────────────────────────────────────
|
|
205
|
+
// Light #a64e00 (âmbar escuro) | Dark #ffb74d (orange-300)
|
|
206
|
+
warn: (light: #a64e00, dark: #ffb74d),
|
|
207
|
+
warn-contrast: (light: #ffffff, dark: rgba(0, 0, 0, .87)),
|
|
208
|
+
warn-contrast-alpha: (light: rgba(255, 255, 255, .1), dark: rgba(0, 0, 0, .1)),
|
|
209
|
+
warn-alpha: (light: rgba(#a64e00, .1), dark: rgba(#ffb74d, .1)),
|
|
210
|
+
warn-hover: (light: #924200, dark: #e69f33),
|
|
211
|
+
warn-pressed: (light: #7e3600, dark: #cc881a),
|
|
212
|
+
warn-fill: (light: #a64e00, dark: #fb8c00),
|
|
213
|
+
warn-surface-hover: (light: #fcf0e1, dark: #1e1910),
|
|
214
|
+
warn-surface-pressed: (light: #f8e1c3, dark: #2f2616),
|
|
215
|
+
|
|
216
|
+
// ── Feedback — Info (8) ──────────────────────────────────────────────────
|
|
217
|
+
info: (light: #0a2fc2, dark: #4090d8),
|
|
218
|
+
info-contrast: (light: #ffffff, dark: #ffffff),
|
|
219
|
+
info-contrast-alpha: (light: rgba(255, 255, 255, .1), dark: rgba(255, 255, 255, .1)),
|
|
220
|
+
info-alpha: (light: rgba(#0a2fc2, .1), dark: rgba(#4090d8, .1)),
|
|
221
|
+
info-hover: (light: #294cd4, dark: #5aa0e0),
|
|
222
|
+
info-pressed: (light: #4265e0, dark: #74b0e8),
|
|
223
|
+
info-surface-hover: (light: #ebeefa, dark: #0f141e),
|
|
224
|
+
info-surface-pressed: (light: #d8def5, dark: #131f31),
|
|
225
|
+
|
|
226
|
+
// ── Palette (19) — matcha/color/palette/* ────────────────────────────────
|
|
227
|
+
palette-teal: (light: #00796b, dark: #4fb7ad),
|
|
228
|
+
palette-teal-light: (light: #4fb7ad, dark: #009688),
|
|
229
|
+
palette-teal-alpha: (light: rgba(#00796b, .1), dark: rgba(#4fb7ad, .1)),
|
|
230
|
+
palette-light-blue: (light: #0288d1, dark: #54c5f7),
|
|
231
|
+
palette-light-blue-light: (light: #54c5f7, dark: #03a9f4),
|
|
232
|
+
palette-light-blue-alpha: (light: rgba(#0288d1, .1), dark: rgba(#54c5f7, .1)),
|
|
233
|
+
palette-purple: (light: #9c27b0, dark: #bb6ac8),
|
|
234
|
+
palette-purple-light: (light: #bb6ac8, dark: #9c27b0),
|
|
235
|
+
palette-purple-alpha: (light: rgba(#9c27b0, .1), dark: rgba(#bb6ac8, .1)),
|
|
236
|
+
// Contraste (texto sobre a cor sólida), mesmo critério dos chart-series-*-contrast.
|
|
237
|
+
// Light #9c27b0 + branco = 5.6:1 · Dark #bb6ac8 + preto .87 = ~7:1 (AA nos 2 modos).
|
|
238
|
+
// Só o purple tem o par por enquanto: é a única cor da paleta usada como fill de
|
|
239
|
+
// superfície com texto em cima (barra de Jornada do dashboard). As outras ganham o
|
|
240
|
+
// seu quando aparecer o caso — não gerar 6 pares especulativos.
|
|
241
|
+
palette-purple-contrast: (light: #ffffff, dark: rgba(0, 0, 0, .87)),
|
|
242
|
+
palette-pink: (light: #d81b60, dark: #e46291),
|
|
243
|
+
palette-pink-light: (light: #e46291, dark: #d81b60),
|
|
244
|
+
palette-pink-alpha: (light: rgba(#d81b60, .1), dark: rgba(#e46291, .1)),
|
|
245
|
+
palette-orange: (light: #e65100, dark: #f9a25d),
|
|
246
|
+
palette-orange-light: (light: #f9a25d, dark: #f77814),
|
|
247
|
+
palette-orange-alpha: (light: rgba(#e65100, .1), dark: rgba(#f9a25d, .1)),
|
|
248
|
+
palette-yellow: (light: #ffa000, dark: #efd64f),
|
|
249
|
+
palette-yellow-light: (light: #efd64f, dark: #e8c300),
|
|
250
|
+
palette-yellow-alpha: (light: rgba(#ffa000, .1), dark: rgba(#efd64f, .1)),
|
|
251
|
+
|
|
252
|
+
// ── Chart (5) — matcha/color/chart/* ─────────────────────────────────────
|
|
253
|
+
chart-series-1: (light: #615ce5, dark: #8782f2),
|
|
254
|
+
chart-series-2: (light: #42a147, dark: #66ba6b),
|
|
255
|
+
chart-series-3: (light: #ed6645, dark: #f5876b),
|
|
256
|
+
chart-series-4: (light: #c28700, dark: #ffc93d),
|
|
257
|
+
chart-series-5: (light: #008094, dark: #26c2d9),
|
|
258
|
+
|
|
259
|
+
// Chart contrast (texto sobre a série, AA ≥ 4.5 nos 2 modos) + alpha (fill 10%).
|
|
260
|
+
// Completam a paleta chart pra uso em pílula/badge/superfície (ex.: níveis da tree-view).
|
|
261
|
+
chart-series-1-contrast: (light: #ffffff, dark: rgba(0, 0, 0, .87)),
|
|
262
|
+
chart-series-2-contrast: (light: rgba(0, 0, 0, .87), dark: rgba(0, 0, 0, .87)),
|
|
263
|
+
chart-series-3-contrast: (light: rgba(0, 0, 0, .87), dark: rgba(0, 0, 0, .87)),
|
|
264
|
+
chart-series-4-contrast: (light: rgba(0, 0, 0, .87), dark: rgba(0, 0, 0, .87)),
|
|
265
|
+
chart-series-5-contrast: (light: #ffffff, dark: rgba(0, 0, 0, .87)),
|
|
266
|
+
chart-series-1-alpha: (light: rgba(#615ce5, .1), dark: rgba(#8782f2, .1)),
|
|
267
|
+
chart-series-2-alpha: (light: rgba(#42a147, .1), dark: rgba(#66ba6b, .1)),
|
|
268
|
+
chart-series-3-alpha: (light: rgba(#ed6645, .1), dark: rgba(#f5876b, .1)),
|
|
269
|
+
chart-series-4-alpha: (light: rgba(#c28700, .1), dark: rgba(#ffc93d, .1)),
|
|
270
|
+
chart-series-5-alpha: (light: rgba(#008094, .1), dark: rgba(#26c2d9, .1)),
|
|
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
|
+
|