@inchurch/matcha-theme 20.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +303 -0
- package/abstracts/_colors.scss +405 -0
- package/abstracts/_elevation.scss +102 -0
- package/abstracts/_functions.scss +1213 -0
- package/abstracts/_media-breakpoint.scss +23 -0
- package/abstracts/_typography.scss +127 -0
- package/base/_reset.scss +438 -0
- package/components/matcha-accordion.scss +157 -0
- package/components/matcha-audio-player.scss +32 -0
- package/components/matcha-autocomplete.scss +134 -0
- package/components/matcha-avatar.scss +161 -0
- package/components/matcha-badge.scss +120 -0
- package/components/matcha-breadcrumb.scss +126 -0
- package/components/matcha-button-toggle.scss +363 -0
- package/components/matcha-buttons.scss +784 -0
- package/components/matcha-calendar.scss +154 -0
- package/components/matcha-cards.scss +205 -0
- package/components/matcha-chart-card.scss +60 -0
- package/components/matcha-checkbox.scss +554 -0
- package/components/matcha-chip.scss +212 -0
- package/components/matcha-color-pick.scss +35 -0
- package/components/matcha-command-palette.scss +89 -0
- package/components/matcha-crop.scss +172 -0
- package/components/matcha-date.scss +81 -0
- package/components/matcha-divider.scss +45 -0
- package/components/matcha-draggable.scss +24 -0
- package/components/matcha-drawer.scss +235 -0
- package/components/matcha-drop-list.scss +390 -0
- package/components/matcha-emoji.scss +69 -0
- package/components/matcha-empty-state.scss +118 -0
- package/components/matcha-flag.scss +62 -0
- package/components/matcha-footer.scss +187 -0
- package/components/matcha-form-field.scss +552 -0
- package/components/matcha-form-section.scss +101 -0
- package/components/matcha-header.scss +325 -0
- package/components/matcha-highlight.scss +296 -0
- package/components/matcha-hint-text.scss +66 -0
- package/components/matcha-horizontal-tree.scss +317 -0
- package/components/matcha-icon.scss +106 -0
- package/components/matcha-image.scss +62 -0
- package/components/matcha-list.scss +212 -0
- package/components/matcha-menu.scss +86 -0
- package/components/matcha-modal.scss +234 -0
- package/components/matcha-nav.scss +450 -0
- package/components/matcha-notification.scss +197 -0
- package/components/matcha-option.scss +95 -0
- package/components/matcha-page-builder.scss +4186 -0
- package/components/matcha-paginator.scss +235 -0
- package/components/matcha-panel.scss +167 -0
- package/components/matcha-profile-card.scss +50 -0
- package/components/matcha-progress-bar.scss +209 -0
- package/components/matcha-radio.scss +528 -0
- package/components/matcha-ripple.scss +7 -0
- package/components/matcha-scrollbar.scss +35 -0
- package/components/matcha-scrollbox-shadow.scss +123 -0
- package/components/matcha-section.scss +105 -0
- package/components/matcha-select.scss +661 -0
- package/components/matcha-skeleton.scss +138 -0
- package/components/matcha-slide-toggle.scss +590 -0
- package/components/matcha-slider.scss +188 -0
- package/components/matcha-snack-bar.scss +266 -0
- package/components/matcha-spin.scss +252 -0
- package/components/matcha-spinner.scss +78 -0
- package/components/matcha-stepper.scss +177 -0
- package/components/matcha-table-cell.scss +41 -0
- package/components/matcha-table.scss +785 -0
- package/components/matcha-tabs.scss +469 -0
- package/components/matcha-text-editor.scss +151 -0
- package/components/matcha-time.scss +33 -0
- package/components/matcha-timepicker.scss +13 -0
- package/components/matcha-toolbar.scss +206 -0
- package/components/matcha-tooltip.scss +128 -0
- package/components/matcha-uploader.scss +215 -0
- package/css/matcha-style.css +76772 -0
- package/fonts/CircularStd-Black.eot +0 -0
- package/fonts/CircularStd-Black.svg +3426 -0
- package/fonts/CircularStd-Black.ttf +0 -0
- package/fonts/CircularStd-Black.woff +0 -0
- package/fonts/CircularStd-Black.woff2 +0 -0
- package/fonts/CircularStd-Bold.eot +0 -0
- package/fonts/CircularStd-Bold.otf +0 -0
- package/fonts/CircularStd-Bold.svg +13532 -0
- package/fonts/CircularStd-Bold.ttf +0 -0
- package/fonts/CircularStd-Bold.woff +0 -0
- package/fonts/CircularStd-Bold.woff2 +0 -0
- package/fonts/CircularStd-Medium.eot +0 -0
- package/fonts/CircularStd-Medium.otf +0 -0
- package/fonts/CircularStd-Medium.svg +13511 -0
- package/fonts/CircularStd-Medium.ttf +0 -0
- package/fonts/CircularStd-Medium.woff +0 -0
- package/fonts/CircularStd-Medium.woff2 +0 -0
- package/fonts/CircularStd-Regular.eot +0 -0
- package/fonts/CircularStd-Regular.otf +0 -0
- package/fonts/CircularStd-Regular.svg +2378 -0
- package/fonts/CircularStd-Regular.ttf +0 -0
- package/fonts/CircularStd-Regular.woff +0 -0
- package/fonts/CircularStd-Regular.woff2 +0 -0
- package/main.scss +262 -0
- package/package.json +11 -0
- package/tokens/_animations-tokens.scss +37 -0
- package/tokens/_breakpoints-tokens.scss +26 -0
- package/tokens/_color-tokens.scss +1153 -0
- package/tokens/_css-custom-properties.scss +568 -0
- package/tokens/_elevation-tokens.scss +33 -0
- package/tokens/_spacing-tokens.scss +94 -0
- package/tokens/_typography-tokens.scss +65 -0
- package/vendors/angular-editor.scss +56 -0
- package/vendors/angular-material-fixes.scss +297 -0
- package/vendors/calendar.scss +2880 -0
- package/vendors/charts.scss +92 -0
- package/vendors/ng5-slider.scss +56 -0
- package/vendors/ngx-material-timepicker.scss +50 -0
|
@@ -0,0 +1,568 @@
|
|
|
1
|
+
// =============================================================================
|
|
2
|
+
// MATCHA DESIGN SYSTEM — Token Source (CSS Custom Properties)
|
|
3
|
+
// =============================================================================
|
|
4
|
+
//
|
|
5
|
+
// Emits :root variables for Light mode + [data-theme="dark"] overrides,
|
|
6
|
+
// enabling runtime theming without Sass recompilation.
|
|
7
|
+
//
|
|
8
|
+
// 1:1 PARIDADE com Figma variables em DS-PAINEL (fileKey K673r19KQE8lm2S74nQ5ob):
|
|
9
|
+
// - matcha/primitives (99 vars) → primitives section below
|
|
10
|
+
// - matcha/colors (117 vars) → semantic color sections below
|
|
11
|
+
// - matcha/interaction (4 vars) → via matcha/color/interaction/* aliases
|
|
12
|
+
// - matcha/text/* (30 styles) → text-* + leading-* + tracking-* props
|
|
13
|
+
// - matcha/elevation (4 styles) → shadow-1..4
|
|
14
|
+
// - matcha/grid (6 styles) → grid-col-* + grid-offset-*
|
|
15
|
+
//
|
|
16
|
+
// CONVENÇÃO:
|
|
17
|
+
// - Nome token Figma: `matcha/category/subcategory/variant` (slash)
|
|
18
|
+
// - Nome CSS var: `--matcha-category-subcategory-variant` (hyphen)
|
|
19
|
+
// ex.: `matcha/color/surface/card` ↔ `--matcha-color-surface-card`
|
|
20
|
+
//
|
|
21
|
+
// ORDEM DO ARQUIVO (escalável, do mais genérico → mais específico):
|
|
22
|
+
// 1. Surface (camadas de fundo)
|
|
23
|
+
// 2. Text (cores de texto semântico)
|
|
24
|
+
// 3. Icon
|
|
25
|
+
// 4. Interaction (disabled, focus)
|
|
26
|
+
// 5. Neutral
|
|
27
|
+
// 6. Elevation (surface layers + shadow)
|
|
28
|
+
// 7. Brand — Accent primário + Accent-2 secundário
|
|
29
|
+
// 8. Brand — Primary
|
|
30
|
+
// 9. Feedback — Success, Danger, Warn, Info
|
|
31
|
+
// 10. Data — Chart series + decorative palette
|
|
32
|
+
// 11. Typography — font/size/weight/leading/tracking
|
|
33
|
+
// 12. Spacing / Radius / Border
|
|
34
|
+
// 13. Motion / Opacity / State layers
|
|
35
|
+
// 14. Icon sizes / Touch targets / Avatar
|
|
36
|
+
// 15. Layout — Z-index / Grid
|
|
37
|
+
// 16. Naming-parity aliases (Figma→CSS onde os nomes divergem)
|
|
38
|
+
//
|
|
39
|
+
// =============================================================================
|
|
40
|
+
@use "sass:map";
|
|
41
|
+
|
|
42
|
+
@mixin matcha-css-custom-properties($theme) {
|
|
43
|
+
$is-dark: map.get($theme, is-dark);
|
|
44
|
+
$bg: map.get($theme, background);
|
|
45
|
+
$fg: map.get($theme, foreground);
|
|
46
|
+
|
|
47
|
+
// ═════════════════════════════════════════════════════════════════════════
|
|
48
|
+
// LIGHT = Figma oficial (matcha/color/* JSON export hierárquico)
|
|
49
|
+
// DARK = tokens confirmados pelo usuário (flat JSON)
|
|
50
|
+
// ═════════════════════════════════════════════════════════════════════════
|
|
51
|
+
|
|
52
|
+
// ── Surface (9) — matcha/color/surface/* ─────────────────────────────────
|
|
53
|
+
// Light mode: sage-tinted neutrals (2–4% green hue da marca) + hierarquia perceptível
|
|
54
|
+
--matcha-color-surface-bg: #{if($is-dark, #111318, #f1f4f1)};
|
|
55
|
+
--matcha-color-surface-bg-alpha: #{if($is-dark, rgba(#111318, .5), rgba(#f1f4f1, .5))};
|
|
56
|
+
--matcha-color-surface-bg-inverse: #{if($is-dark, #f1f4f1, #111318)};
|
|
57
|
+
--matcha-color-surface-bg-inverse-alpha: #{if($is-dark, rgba(#f1f4f1, .5), rgba(#111318, .5))};
|
|
58
|
+
|
|
59
|
+
--matcha-color-surface: #{if($is-dark, #1c1f26, #ffffff)};
|
|
60
|
+
--matcha-color-surface-card: #{if($is-dark, #1c1f26, #ffffff)};
|
|
61
|
+
// Canvas aninhada dentro de card (preview stage, code body, inset panels)
|
|
62
|
+
// Light: sage (= bg da page, cria recorte sutil sobre card branco)
|
|
63
|
+
// Dark: mais clara que card (inverte lógica, dá profundidade em vez de buraco)
|
|
64
|
+
--matcha-color-surface-inner: #{if($is-dark, #262a32, #f1f4f1)};
|
|
65
|
+
--matcha-color-surface-card-alpha: #{if($is-dark, rgba(#1c1f26, .5), rgba(#ffffff, .85))};
|
|
66
|
+
--matcha-color-surface-card-inverse: #{if($is-dark, #ffffff, #1c1f26)};
|
|
67
|
+
|
|
68
|
+
--matcha-color-surface-sidebar: #{if($is-dark, #0d0f14, #e4ebe5)};
|
|
69
|
+
--matcha-color-surface-sidebar-hover: #{if($is-dark, #161920, #d8e1da)};
|
|
70
|
+
--matcha-color-surface-table-row-hover: #{if($is-dark, #1a1e25, #eff5f0)};
|
|
71
|
+
|
|
72
|
+
// Border sólido e visível (era rgba(0,0,0,.08) = invisível sobre sage bg)
|
|
73
|
+
--matcha-color-surface-border: #{if($is-dark, rgba(255,255,255,.12), #e1e7e2)};
|
|
74
|
+
// Border mais forte pra cards elevados (hero, playground — com shadow)
|
|
75
|
+
--matcha-color-surface-border-strong: #{if($is-dark, rgba(255,255,255,.24), #c8d2ca)};
|
|
76
|
+
--matcha-color-surface-hover: #{if($is-dark, rgba(#111318, .5), rgba(#e4ebe5, .5))};
|
|
77
|
+
|
|
78
|
+
// Aliases (flat) — usados massivamente
|
|
79
|
+
--matcha-color-bg: #{if($is-dark, #111318, #f1f4f1)};
|
|
80
|
+
--matcha-color-fg: #{if($is-dark, #e8eaed, #1a1d21)};
|
|
81
|
+
--matcha-color-fg-alpha: #{if($is-dark, rgba(#e8eaed, .5), rgba(#1a1d21, .5))};
|
|
82
|
+
--matcha-color-fg-inverse: #{if($is-dark, #1a1d21, #e8eaed)};
|
|
83
|
+
--matcha-color-fg-inverse-alpha: #{if($is-dark, rgba(#1a1d21, .5), rgba(#e8eaed, .5))};
|
|
84
|
+
--matcha-color-border: #{if($is-dark, rgba(255,255,255,.12), #e1e7e2)};
|
|
85
|
+
|
|
86
|
+
// ── Text (9) — matcha/color/text/* ───────────────────────────────────────
|
|
87
|
+
// Light mode: tudo sólido (antes era rgba misturado) — evita lama sobre bg tintado
|
|
88
|
+
--matcha-color-text-primary: #{if($is-dark, #e8eaed, #1a1d21)};
|
|
89
|
+
--matcha-color-text-inverse: #{if($is-dark, #1a1d21, #e8eaed)};
|
|
90
|
+
--matcha-color-text-secondary: #{if($is-dark, rgba(255,255,255,.7), #4a5056)};
|
|
91
|
+
// Muted: tintado com hue da marca pra recuar visualmente sem baixar contraste
|
|
92
|
+
// (Figma VariableID:17111:11 — matcha/color/text/muted)
|
|
93
|
+
--matcha-color-text-muted: #{if($is-dark, #a8b5a0, #5a6a5e)};
|
|
94
|
+
--matcha-color-text-label: #{if($is-dark, #bdc1c6, #6b7177)};
|
|
95
|
+
--matcha-color-text-placeholder: #{if($is-dark, #6e747a, #9aa0a6)};
|
|
96
|
+
--matcha-color-text-hint: #{if($is-dark, #9aa0a6, #6b7177)};
|
|
97
|
+
--matcha-color-text-static-light: #ffffff;
|
|
98
|
+
--matcha-color-text-static-dark: #1a1d21;
|
|
99
|
+
|
|
100
|
+
// ── Icon (2) — matcha/color/icon/* ───────────────────────────────────────
|
|
101
|
+
--matcha-color-icon-default: #{if($is-dark, #9aa0a6, #5f656b)};
|
|
102
|
+
--matcha-color-icon-active: #{if($is-dark, #e8eaed, #1a1d21)};
|
|
103
|
+
|
|
104
|
+
// ── Interaction (4) — matcha/color/interaction/* ─────────────────────────
|
|
105
|
+
// Light mode: disabled sólido com sage tint (antes alpha sobre bg = inconsistente)
|
|
106
|
+
--matcha-color-interaction-disabled-bg: #{if($is-dark, #282c34, #cfd6d1)};
|
|
107
|
+
--matcha-color-interaction-disabled-bg-alpha: #{if($is-dark, rgba(#282c34, .5), rgba(#cfd6d1, .5))};
|
|
108
|
+
--matcha-color-interaction-disabled-fg: #{if($is-dark, rgba(#e8eaed, .38), #8a9090)};
|
|
109
|
+
--matcha-color-interaction-disabled-border: #{if($is-dark, rgba(#e8eaed, .38), #c8d2ca)};
|
|
110
|
+
--matcha-color-focus-ring: #{if($is-dark, #a8d94e, #43a047)};
|
|
111
|
+
// Aliases legados
|
|
112
|
+
--matcha-color-disabled: #{if($is-dark, #282c34, #cfd6d1)};
|
|
113
|
+
--matcha-color-disabled-fg: #{if($is-dark, rgba(#e8eaed, .38), #8a9090)};
|
|
114
|
+
--matcha-color-disabled-border: #{if($is-dark, rgba(#e8eaed, .38), #c8d2ca)};
|
|
115
|
+
--matcha-color-disabled-bg: #{if($is-dark, #282c34, #cfd6d1)};
|
|
116
|
+
|
|
117
|
+
// ── Neutral (4 tokens Figma matcha/color/neutral/*) ───────────────────────
|
|
118
|
+
// Cor base pra botões e controles sem ênfase semântica (basic, ghost default).
|
|
119
|
+
// Light: sage-tinted grey | Dark: grey neutro escuro.
|
|
120
|
+
--matcha-color-neutral: #{if($is-dark, #282c34, #e4ebe5)};
|
|
121
|
+
--matcha-color-neutral-contrast: #{if($is-dark, #e8eaed, #1a1d21)};
|
|
122
|
+
--matcha-color-neutral-alpha: #{if($is-dark, rgba(#e8eaed, .1), rgba(#1a1d21, .08))};
|
|
123
|
+
--matcha-color-neutral-hover: #{if($is-dark, #333842, #d8e1da)};
|
|
124
|
+
|
|
125
|
+
// ── Elevation (6) — matcha/color/elevation/* ─────────────────────────────
|
|
126
|
+
--matcha-color-elevation-surface-1: #{if($is-dark, #1c1f26, #f8faf8)}; // cards, dropdowns (sage)
|
|
127
|
+
--matcha-color-elevation-surface-2: #{if($is-dark, #262a32, #ffffff)}; // menus, floating
|
|
128
|
+
--matcha-color-elevation-surface-3: #{if($is-dark, #2e333c, #ffffff)}; // modals, drawers
|
|
129
|
+
// Shadow base: Figma light usa tinta accent #1A2C1E (não preto puro), dark usa #000000
|
|
130
|
+
--matcha-color-elevation-shadow: #{if($is-dark, #000000, #1a2c1e)};
|
|
131
|
+
--matcha-color-elevation-shadow-tint: #{if($is-dark, #000000, #1a2c1e)}; // tint da marca pra shadows light
|
|
132
|
+
--matcha-color-elevation-scrim: #000000;
|
|
133
|
+
// Figma matcha/color/state-layer/fg (camada sobre interações)
|
|
134
|
+
--matcha-color-state-layer-fg: #{if($is-dark, #ffffff, #000000)};
|
|
135
|
+
|
|
136
|
+
// ── Accent (10) — matcha/color/accent/* ──────────────────────────────────
|
|
137
|
+
// Light #2d7a2f (dark green) | Dark #a8d94e (lima A400)
|
|
138
|
+
// Light mode: verde puro #009400 — hue 120° (green clássico, sem hint yellow/olive)
|
|
139
|
+
// IMPORTANTE: Figma matcha/button usa matcha/color/text/inverse (= #E8EAED branco) como label,
|
|
140
|
+
// NÃO accent/contrast. Mantendo accent-contrast = branco aqui pra o código bater visualmente com Figma.
|
|
141
|
+
// Dark mode: preto em cima do lima bright (~11:1 AAA)
|
|
142
|
+
--matcha-color-accent: #{if($is-dark, #a8d94e, #009400)};
|
|
143
|
+
--matcha-color-accent-contrast: #{if($is-dark, rgba(0,0,0,.87), #E8EAED)};
|
|
144
|
+
--matcha-color-accent-contrast-alpha: #{if($is-dark, rgba(0,0,0,.12), rgba(255,255,255,.20))};
|
|
145
|
+
// Figma matcha/color/accent/text-on — branco puro Light / quase preto Dark
|
|
146
|
+
// Dedicado pra foreground sobre accent/default em Filled buttons, icon buttons.
|
|
147
|
+
// Garante contraste ≥ 3:1 em ambos modos (supera accent/contrast que é preto fixo).
|
|
148
|
+
--matcha-color-accent-text-on: #{if($is-dark, #1a1d21, #ffffff)};
|
|
149
|
+
--matcha-color-accent-alpha: #{if($is-dark, rgba(#a8d94e, .1), rgba(#009400, .1))};
|
|
150
|
+
// Light/dark auxiliares: Material Green 200/800 (decorativo, mais neutro que derivar do #009400)
|
|
151
|
+
--matcha-color-accent-light: #{if($is-dark, #b9f6ca, #a5d6a7)};
|
|
152
|
+
--matcha-color-accent-dark: #{if($is-dark, #c5e1a5, #2e7d32)};
|
|
153
|
+
--matcha-color-accent-hover: #{if($is-dark, #bee57a, #008400)};
|
|
154
|
+
--matcha-color-accent-pressed: #{if($is-dark, #d4eea0, #007400)};
|
|
155
|
+
--matcha-color-accent-surface-hover: #{if($is-dark, #161e12, #d4ecd4)};
|
|
156
|
+
--matcha-color-accent-surface-pressed: #{if($is-dark, #1f2d18, #bcdfbc)};
|
|
157
|
+
|
|
158
|
+
// ── Accent Secondary (teal — 4 tokens Figma matcha/color/accent-2/*) ─────
|
|
159
|
+
// Light #00796b (teal-700) | Dark #4fb7ad (teal-light)
|
|
160
|
+
--matcha-color-accent-2: #{if($is-dark, #4fb7ad, #00796b)};
|
|
161
|
+
--matcha-color-accent-2-contrast: #ffffff;
|
|
162
|
+
--matcha-color-accent-2-alpha: #{if($is-dark, rgba(#4fb7ad, .12), rgba(#00796b, .10))};
|
|
163
|
+
--matcha-color-accent-2-surface: #{if($is-dark, #1d332e, #e0f0ee)};
|
|
164
|
+
|
|
165
|
+
// ── Primary (10) — matcha/color/primary/* ────────────────────────────────
|
|
166
|
+
// Light #1664c2 (blue-700) | Dark #64b5f6 (blue-300)
|
|
167
|
+
--matcha-color-primary: #{if($is-dark, #64b5f6, #1664c2)};
|
|
168
|
+
--matcha-color-primary-contrast: #{if($is-dark, rgba(0,0,0,.87), #ffffff)};
|
|
169
|
+
--matcha-color-primary-contrast-alpha: #{if($is-dark, rgba(0,0,0,.1), rgba(255,255,255,.1))};
|
|
170
|
+
--matcha-color-primary-alpha: #{if($is-dark, rgba(#64b5f6, .1), rgba(#1664c2, .1))};
|
|
171
|
+
--matcha-color-primary-light: #{if($is-dark, #bbdefb, #b3d7fd)};
|
|
172
|
+
--matcha-color-primary-dark: #{if($is-dark, #90caf9, #0d3c8c)};
|
|
173
|
+
--matcha-color-primary-hover: #{if($is-dark, #90caf9, #2576d2)};
|
|
174
|
+
--matcha-color-primary-pressed: #{if($is-dark, #bbdefb, #378ce1)};
|
|
175
|
+
--matcha-color-primary-surface-hover: #{if($is-dark, #141922, #e4eefa)};
|
|
176
|
+
--matcha-color-primary-surface-pressed: #{if($is-dark, #1a2436, #cddef5)};
|
|
177
|
+
|
|
178
|
+
// ── Feedback — Success (9) ───────────────────────────────────────────────
|
|
179
|
+
--matcha-color-success: #{if($is-dark, #69f0ae, #2e7d32)};
|
|
180
|
+
--matcha-color-success-contrast: #{if($is-dark, rgba(0,0,0,.87), #ffffff)};
|
|
181
|
+
--matcha-color-success-contrast-alpha: #{if($is-dark, rgba(0,0,0,.1), rgba(255,255,255,.1))};
|
|
182
|
+
--matcha-color-success-alpha: #{if($is-dark, rgba(#69f0ae, .1), rgba(#2e7d32, .1))};
|
|
183
|
+
--matcha-color-success-hover: #{if($is-dark, #4cd992, #388e3c)};
|
|
184
|
+
--matcha-color-success-pressed: #{if($is-dark, #33c078, #43a047)};
|
|
185
|
+
--matcha-color-success-fill: #{if($is-dark, #43a047, #2e7d32)};
|
|
186
|
+
--matcha-color-success-surface-hover: #{if($is-dark, #121d17, #e8f5e9)};
|
|
187
|
+
--matcha-color-success-surface-pressed: #{if($is-dark, #192f24, #c8e6c9)};
|
|
188
|
+
|
|
189
|
+
// ── Feedback — Danger (9) ────────────────────────────────────────────────
|
|
190
|
+
--matcha-color-danger: #{if($is-dark, #ef9a9a, #c81010)};
|
|
191
|
+
--matcha-color-danger-contrast: #{if($is-dark, rgba(0,0,0,.87), #ffffff)};
|
|
192
|
+
--matcha-color-danger-contrast-alpha: #{if($is-dark, rgba(0,0,0,.1), rgba(255,255,255,.1))};
|
|
193
|
+
--matcha-color-danger-alpha: #{if($is-dark, rgba(#ef9a9a, .1), rgba(#c81010, .1))};
|
|
194
|
+
--matcha-color-danger-hover: #{if($is-dark, #f4b8b8, #da2c2c)};
|
|
195
|
+
--matcha-color-danger-pressed: #{if($is-dark, #f7d0d0, #e64848)};
|
|
196
|
+
--matcha-color-danger-fill: #{if($is-dark, #e53935, #c81010)};
|
|
197
|
+
--matcha-color-danger-surface-hover: #{if($is-dark, #1d1616, #fae8e8)};
|
|
198
|
+
--matcha-color-danger-surface-pressed: #{if($is-dark, #2f2121, #f5d2d2)};
|
|
199
|
+
|
|
200
|
+
// ── Feedback — Warn (9) ──────────────────────────────────────────────────
|
|
201
|
+
// Light #a64e00 (âmbar escuro) | Dark #ffb74d (orange-300)
|
|
202
|
+
--matcha-color-warn: #{if($is-dark, #ffb74d, #a64e00)};
|
|
203
|
+
--matcha-color-warn-contrast: #{if($is-dark, rgba(0,0,0,.87), #ffffff)};
|
|
204
|
+
--matcha-color-warn-contrast-alpha: #{if($is-dark, rgba(0,0,0,.1), rgba(255,255,255,.1))};
|
|
205
|
+
--matcha-color-warn-alpha: #{if($is-dark, rgba(#ffb74d, .1), rgba(#a64e00, .1))};
|
|
206
|
+
--matcha-color-warn-hover: #{if($is-dark, #e69f33, #924200)};
|
|
207
|
+
--matcha-color-warn-pressed: #{if($is-dark, #cc881a, #7e3600)};
|
|
208
|
+
--matcha-color-warn-fill: #{if($is-dark, #fb8c00, #a64e00)};
|
|
209
|
+
--matcha-color-warn-surface-hover: #{if($is-dark, #1e1910, #fcf0e1)};
|
|
210
|
+
--matcha-color-warn-surface-pressed: #{if($is-dark, #2f2616, #f8e1c3)};
|
|
211
|
+
|
|
212
|
+
// ── Feedback — Info (8) ──────────────────────────────────────────────────
|
|
213
|
+
--matcha-color-info: #{if($is-dark, #4090d8, #0a2fc2)};
|
|
214
|
+
--matcha-color-info-contrast: #ffffff;
|
|
215
|
+
--matcha-color-info-contrast-alpha: rgba(255,255,255,.1);
|
|
216
|
+
--matcha-color-info-alpha: #{if($is-dark, rgba(#4090d8, .1), rgba(#0a2fc2, .1))};
|
|
217
|
+
--matcha-color-info-hover: #{if($is-dark, #5aa0e0, #294cd4)};
|
|
218
|
+
--matcha-color-info-pressed: #{if($is-dark, #74b0e8, #4265e0)};
|
|
219
|
+
--matcha-color-info-surface-hover: #{if($is-dark, #0f141e, #ebeefa)};
|
|
220
|
+
--matcha-color-info-surface-pressed: #{if($is-dark, #131f31, #d8def5)};
|
|
221
|
+
|
|
222
|
+
// ── Palette (18) — matcha/color/palette/* ────────────────────────────────
|
|
223
|
+
--matcha-color-palette-teal: #{if($is-dark, #4fb7ad, #00796b)};
|
|
224
|
+
--matcha-color-palette-teal-light: #{if($is-dark, #009688, #4fb7ad)};
|
|
225
|
+
--matcha-color-palette-teal-alpha: #{if($is-dark, rgba(#4fb7ad, .1), rgba(#00796b, .1))};
|
|
226
|
+
--matcha-color-palette-light-blue: #{if($is-dark, #54c5f7, #0288d1)};
|
|
227
|
+
--matcha-color-palette-light-blue-light: #{if($is-dark, #03a9f4, #54c5f7)};
|
|
228
|
+
--matcha-color-palette-light-blue-alpha: #{if($is-dark, rgba(#54c5f7, .1), rgba(#0288d1, .1))};
|
|
229
|
+
--matcha-color-palette-purple: #{if($is-dark, #bb6ac8, #9c27b0)};
|
|
230
|
+
--matcha-color-palette-purple-light: #{if($is-dark, #9c27b0, #bb6ac8)};
|
|
231
|
+
--matcha-color-palette-purple-alpha: #{if($is-dark, rgba(#bb6ac8, .1), rgba(#9c27b0, .1))};
|
|
232
|
+
--matcha-color-palette-pink: #{if($is-dark, #e46291, #d81b60)};
|
|
233
|
+
--matcha-color-palette-pink-light: #{if($is-dark, #d81b60, #e46291)};
|
|
234
|
+
--matcha-color-palette-pink-alpha: #{if($is-dark, rgba(#e46291, .1), rgba(#d81b60, .1))};
|
|
235
|
+
--matcha-color-palette-orange: #{if($is-dark, #f9a25d, #e65100)};
|
|
236
|
+
--matcha-color-palette-orange-light: #{if($is-dark, #f77814, #f9a25d)};
|
|
237
|
+
--matcha-color-palette-orange-alpha: #{if($is-dark, rgba(#f9a25d, .1), rgba(#e65100, .1))};
|
|
238
|
+
--matcha-color-palette-yellow: #{if($is-dark, #efd64f, #ffa000)};
|
|
239
|
+
--matcha-color-palette-yellow-light: #{if($is-dark, #e8c300, #efd64f)};
|
|
240
|
+
--matcha-color-palette-yellow-alpha: #{if($is-dark, rgba(#efd64f, .1), rgba(#ffa000, .1))};
|
|
241
|
+
|
|
242
|
+
// ── Chart (5) — matcha/color/chart/* ─────────────────────────────────────
|
|
243
|
+
--matcha-color-chart-series-1: #{if($is-dark, #8782f2, #615ce5)};
|
|
244
|
+
--matcha-color-chart-series-2: #{if($is-dark, #66ba6b, #42a147)};
|
|
245
|
+
--matcha-color-chart-series-3: #{if($is-dark, #f5876b, #ed6645)};
|
|
246
|
+
--matcha-color-chart-series-4: #{if($is-dark, #ffc93d, #c28700)};
|
|
247
|
+
--matcha-color-chart-series-5: #{if($is-dark, #26c2d9, #008094)};
|
|
248
|
+
|
|
249
|
+
// ── Spacing (14 tokens — matches matcha/space/* exato) ────────────────────
|
|
250
|
+
--matcha-space-025: 2px;
|
|
251
|
+
--matcha-space-050: 4px;
|
|
252
|
+
--matcha-space-075: 6px;
|
|
253
|
+
--matcha-space-100: 8px;
|
|
254
|
+
--matcha-space-150: 12px;
|
|
255
|
+
--matcha-space-200: 16px;
|
|
256
|
+
--matcha-space-250: 20px;
|
|
257
|
+
--matcha-space-300: 24px;
|
|
258
|
+
--matcha-space-400: 32px;
|
|
259
|
+
--matcha-space-500: 40px;
|
|
260
|
+
--matcha-space-600: 48px;
|
|
261
|
+
--matcha-space-800: 64px;
|
|
262
|
+
--matcha-space-1000: 80px;
|
|
263
|
+
--matcha-space-1200: 96px;
|
|
264
|
+
|
|
265
|
+
// ── Border radius (8 tokens — matches matcha/radius/* exato) ─────────────
|
|
266
|
+
--matcha-radius-none: 0;
|
|
267
|
+
--matcha-radius-sm: 2px;
|
|
268
|
+
--matcha-radius-md: 4px;
|
|
269
|
+
--matcha-radius-3xs: 6px; // Figma matcha/radius/3xs
|
|
270
|
+
--matcha-radius-lg: 8px;
|
|
271
|
+
--matcha-radius-2xl: 12px; // Figma: 12px (antes code tinha 24, divergia)
|
|
272
|
+
--matcha-radius-xl: 16px;
|
|
273
|
+
--matcha-radius-pill: 9999px;
|
|
274
|
+
// Alias legado pra usos em páginas de doc (refatorar depois pra usar radius-2xl)
|
|
275
|
+
--matcha-radius-card: var(--matcha-radius-2xl);
|
|
276
|
+
|
|
277
|
+
// ── Border width (4 tokens — matches matcha/border/* exato) ──────────────
|
|
278
|
+
--matcha-border-hairline: 1px; // Subtle borders (card outlines, internal separators)
|
|
279
|
+
--matcha-border-thin: 2px; // Primary borders (button outlines, form fields, active states)
|
|
280
|
+
--matcha-border-medium: 4px; // Emphasis borders (status indicators, nav-item indicators, focus rings on large)
|
|
281
|
+
--matcha-border-thick: 8px; // Heavy borders (section dividers, decoration)
|
|
282
|
+
|
|
283
|
+
// ── Font family (1 token) ────────────────────────────────────────────────
|
|
284
|
+
--matcha-font-family: 'Manrope', sans-serif;
|
|
285
|
+
|
|
286
|
+
// ── Font size (8 tokens — matches matcha/font/size/* from Figma) ──────────
|
|
287
|
+
--matcha-font-size-2xs: 10px;
|
|
288
|
+
--matcha-font-size-xs: 12px;
|
|
289
|
+
--matcha-font-size-sm: 14px;
|
|
290
|
+
--matcha-font-size-md: 16px;
|
|
291
|
+
--matcha-font-size-lg: 18px;
|
|
292
|
+
--matcha-font-size-xl: 20px;
|
|
293
|
+
--matcha-font-size-2xl: 24px;
|
|
294
|
+
--matcha-font-size-3xl: 32px;
|
|
295
|
+
|
|
296
|
+
// ── Font weight (6 tokens — matches matcha/font/weight/* exato) ──────────
|
|
297
|
+
// Canônico Figma: normal (400), medium (500), semi-bold (600), bold (700), extrabold (800), black (900)
|
|
298
|
+
// Código mantém regular/semibold por retrocompat + aliases Figma-exatos
|
|
299
|
+
--matcha-weight-regular: 400;
|
|
300
|
+
--matcha-weight-normal: 400; // Figma canonical alias
|
|
301
|
+
--matcha-weight-medium: 500;
|
|
302
|
+
--matcha-weight-semibold: 600;
|
|
303
|
+
--matcha-weight-semi-bold: 600; // Figma canonical alias
|
|
304
|
+
--matcha-weight-bold: 700;
|
|
305
|
+
--matcha-weight-extrabold: 800; // Figma VariableID:17195:11 (criado oficialmente)
|
|
306
|
+
--matcha-weight-black: 900;
|
|
307
|
+
|
|
308
|
+
// ── Typography composites (18 text styles from Figma) ────────────────────
|
|
309
|
+
--matcha-text-display: 32px;
|
|
310
|
+
--matcha-text-headline: 24px;
|
|
311
|
+
--matcha-text-title-xl: 20px;
|
|
312
|
+
--matcha-text-title-lg: 20px;
|
|
313
|
+
--matcha-text-title-md: 18px;
|
|
314
|
+
--matcha-text-title-sm: 16px;
|
|
315
|
+
--matcha-text-title-xs: 14px;
|
|
316
|
+
--matcha-text-body-lg: 16px;
|
|
317
|
+
--matcha-text-body-md: 14px;
|
|
318
|
+
--matcha-text-body-sm: 12px;
|
|
319
|
+
--matcha-text-label-lg: 16px;
|
|
320
|
+
--matcha-text-label-md: 14px;
|
|
321
|
+
--matcha-text-label-sm: 12px;
|
|
322
|
+
--matcha-text-button-lg: 16px; // SemiBold 22 letter 0.2
|
|
323
|
+
--matcha-text-button-md: 14px; // Medium 20 letter 0.2
|
|
324
|
+
--matcha-text-button-sm: 13px; // Medium 19 letter 0.2 (Figma instance usage)
|
|
325
|
+
--matcha-text-caption: 11px;
|
|
326
|
+
--matcha-text-overline: 10px;
|
|
327
|
+
|
|
328
|
+
// Novos text styles (paridade 1:1 com matcha/text/* no Figma)
|
|
329
|
+
--matcha-text-display-hero: 36px;
|
|
330
|
+
--matcha-text-display-xl: 40px;
|
|
331
|
+
--matcha-text-display-sm: 28px;
|
|
332
|
+
--matcha-text-title-xl: 20px; // ExtraBold — distinto de title-lg (SemiBold)
|
|
333
|
+
--matcha-text-title-xs: 14px;
|
|
334
|
+
--matcha-text-body-premium: 14px;
|
|
335
|
+
--matcha-text-nav-section: 11px;
|
|
336
|
+
--matcha-text-section-label: 11px;
|
|
337
|
+
--matcha-text-overline-status: 11px;
|
|
338
|
+
--matcha-text-stat-number: 20px;
|
|
339
|
+
--matcha-text-stat-label: 13px;
|
|
340
|
+
--matcha-text-wordmark: 16px;
|
|
341
|
+
--matcha-text-card-title: 14px;
|
|
342
|
+
--matcha-text-badge-sm: 11px;
|
|
343
|
+
|
|
344
|
+
// Shorthand aliases (usados massivamente em components/*.scss)
|
|
345
|
+
// Mapeiam para os text styles canônicos do Figma.
|
|
346
|
+
--matcha-text-xs: var(--matcha-text-caption); // 11px — legendas, metadados
|
|
347
|
+
--matcha-text-sm: var(--matcha-text-body-sm); // 12px — texto auxiliar
|
|
348
|
+
--matcha-text-md: var(--matcha-text-body-md); // 14px — corpo padrão
|
|
349
|
+
--matcha-text-lg: var(--matcha-text-body-lg); // 16px — texto de destaque
|
|
350
|
+
--matcha-text-xl: var(--matcha-text-title-md); // 18px — títulos de grupo
|
|
351
|
+
|
|
352
|
+
// Line heights (matching Figma text styles exactly)
|
|
353
|
+
--matcha-leading-display: 40px;
|
|
354
|
+
--matcha-leading-headline: 32px;
|
|
355
|
+
--matcha-leading-title-xl: 28px;
|
|
356
|
+
--matcha-leading-title-lg: 28px;
|
|
357
|
+
--matcha-leading-title-md: 24px;
|
|
358
|
+
--matcha-leading-title-sm: 22px;
|
|
359
|
+
--matcha-leading-title-xs: 20px;
|
|
360
|
+
--matcha-leading-body-lg: 24px;
|
|
361
|
+
--matcha-leading-body-md: 20px;
|
|
362
|
+
--matcha-leading-body-sm: 16px;
|
|
363
|
+
--matcha-leading-label-lg: 22px;
|
|
364
|
+
--matcha-leading-label-md: 20px;
|
|
365
|
+
--matcha-leading-label-sm: 16px;
|
|
366
|
+
--matcha-leading-button-lg: 22px;
|
|
367
|
+
--matcha-leading-button-md: 20px;
|
|
368
|
+
--matcha-leading-button-sm: 19px; // Atualizado p/ 19 (antes 16, descri\u00e7\u00e3o Figma mentia)
|
|
369
|
+
--matcha-leading-caption: 14px;
|
|
370
|
+
--matcha-leading-overline: 14px;
|
|
371
|
+
|
|
372
|
+
// Leading — novos text styles
|
|
373
|
+
--matcha-leading-display-hero: 40px;
|
|
374
|
+
--matcha-leading-display-xl: 48px;
|
|
375
|
+
--matcha-leading-display-sm: 36px;
|
|
376
|
+
--matcha-leading-title-xs: 20px;
|
|
377
|
+
--matcha-leading-body-premium: 20px;
|
|
378
|
+
--matcha-leading-nav-section: 16px;
|
|
379
|
+
--matcha-leading-section-label: 16px;
|
|
380
|
+
--matcha-leading-overline-status: 14px;
|
|
381
|
+
--matcha-leading-stat-number: 24px;
|
|
382
|
+
--matcha-leading-stat-label: 18px;
|
|
383
|
+
--matcha-leading-wordmark: 20px;
|
|
384
|
+
--matcha-leading-card-title: 20px;
|
|
385
|
+
--matcha-leading-badge-sm: 14px;
|
|
386
|
+
|
|
387
|
+
// Tracking (letter-spacing) — por style (só quem tem valor não-zero)
|
|
388
|
+
--matcha-tracking-display-hero: -1.2px;
|
|
389
|
+
--matcha-tracking-display-xl: -0.5px;
|
|
390
|
+
--matcha-tracking-body-premium: -0.1px;
|
|
391
|
+
--matcha-tracking-overline-status: 0.5px;
|
|
392
|
+
--matcha-tracking-stat-number: -0.3px;
|
|
393
|
+
--matcha-tracking-wordmark: -0.3px;
|
|
394
|
+
--matcha-tracking-badge-sm: 0.3px;
|
|
395
|
+
|
|
396
|
+
// Shorthand aliases para line-heights (acompanham --matcha-text-*)
|
|
397
|
+
--matcha-leading-xs: var(--matcha-leading-caption); // 14px
|
|
398
|
+
--matcha-leading-sm: var(--matcha-leading-body-sm); // 16px
|
|
399
|
+
--matcha-leading-md: var(--matcha-leading-body-md); // 20px
|
|
400
|
+
--matcha-leading-lg: var(--matcha-leading-body-lg); // 24px
|
|
401
|
+
--matcha-leading-xl: var(--matcha-leading-title-md); // 24px
|
|
402
|
+
|
|
403
|
+
// ── Line height primitives (4 tokens — matches matcha/line-height/*) ─────
|
|
404
|
+
--matcha-line-height-none: 1;
|
|
405
|
+
--matcha-line-height-tight: 1.2;
|
|
406
|
+
--matcha-line-height-normal: 1.5;
|
|
407
|
+
--matcha-line-height-relaxed: 1.75;
|
|
408
|
+
|
|
409
|
+
// ── Letter spacing (primitives + semantic aliases) ───────────────────────
|
|
410
|
+
--matcha-letter-spacing-tight: -0.5px;
|
|
411
|
+
--matcha-letter-spacing-normal: 0px;
|
|
412
|
+
--matcha-letter-spacing-wide: 0.5px;
|
|
413
|
+
--matcha-letter-spacing-wider: 1px;
|
|
414
|
+
// Semantic aliases alinhados com Figma text styles
|
|
415
|
+
--matcha-letter-spacing-button: 0.2px; // matcha/text/button-*
|
|
416
|
+
--matcha-letter-spacing-caption: 0.3px; // matcha/text/caption + link-sm
|
|
417
|
+
|
|
418
|
+
// ── Elevation (4 shadow tokens) ──────────────────────────────────────────
|
|
419
|
+
--matcha-shadow-1: #{if($is-dark, $shadow-1-dark, $shadow-1-light)};
|
|
420
|
+
--matcha-shadow-2: #{if($is-dark, $shadow-2-dark, $shadow-2-light)};
|
|
421
|
+
--matcha-shadow-3: #{if($is-dark, $shadow-3-dark, $shadow-3-light)};
|
|
422
|
+
--matcha-shadow-4: #{if($is-dark, $shadow-4-dark, $shadow-4-light)};
|
|
423
|
+
|
|
424
|
+
// ── Animation (4 tokens — matches matcha/duration/* from Figma) ──────────
|
|
425
|
+
--matcha-duration-instant: 80ms;
|
|
426
|
+
--matcha-duration-fast: 200ms;
|
|
427
|
+
--matcha-duration-normal: 400ms;
|
|
428
|
+
--matcha-duration-slow: 600ms;
|
|
429
|
+
|
|
430
|
+
// ── Easing (4 tokens — matches matcha/easing/* from Figma) ───────────────
|
|
431
|
+
--matcha-easing-standard: cubic-bezier(0.4, 0, 0.2, 1);
|
|
432
|
+
--matcha-easing-accelerated: cubic-bezier(0.4, 0, 1, 1);
|
|
433
|
+
--matcha-easing-decelerated: cubic-bezier(0, 0, 0.2, 1);
|
|
434
|
+
--matcha-easing-emphasized: cubic-bezier(0.2, 0, 0, 1);
|
|
435
|
+
|
|
436
|
+
// ── Opacity (7 tokens — matches matcha/opacity/* from Figma) ─────────────
|
|
437
|
+
--matcha-opacity-hover: 0.04;
|
|
438
|
+
--matcha-opacity-subtle: 0.10;
|
|
439
|
+
--matcha-opacity-medium: 0.20;
|
|
440
|
+
--matcha-opacity-strong: 0.30;
|
|
441
|
+
--matcha-opacity-disabled: 0.38;
|
|
442
|
+
--matcha-opacity-secondary: 0.54;
|
|
443
|
+
--matcha-opacity-high: 0.87;
|
|
444
|
+
|
|
445
|
+
// ── State layers (matches matcha/state-layer/* from Figma) ────────────────
|
|
446
|
+
--matcha-state-layer-subtle: 0.04; // Figma matcha/state-layer/subtle
|
|
447
|
+
--matcha-state-layer-hover: 0.08; // Figma matcha/state-layer/hover
|
|
448
|
+
--matcha-state-layer-pressed: 0.12; // Figma matcha/state-layer/pressed
|
|
449
|
+
--matcha-state-layer-active: 0.16; // Figma matcha/state-layer/active
|
|
450
|
+
// Aliases legados (usados nos componentes atuais)
|
|
451
|
+
--matcha-state-hover: var(--matcha-state-layer-hover);
|
|
452
|
+
--matcha-state-active: var(--matcha-state-layer-pressed);
|
|
453
|
+
--matcha-state-focus-ring-width: 2px;
|
|
454
|
+
--matcha-state-focus-ring-offset: 2px;
|
|
455
|
+
|
|
456
|
+
// ── Scrim / Overlay (Figma matcha/overlay Type=Modal / Type=Drawer) ──────
|
|
457
|
+
--matcha-scrim-modal: rgba(0, 0, 0, 0.5);
|
|
458
|
+
--matcha-scrim-modal-blur: 6px;
|
|
459
|
+
--matcha-scrim-drawer: rgba(0, 0, 0, 0.3);
|
|
460
|
+
--matcha-scrim-drawer-blur: 4px;
|
|
461
|
+
|
|
462
|
+
// ── Icon sizes (4 tokens — matches matcha/icon/size/* exato) ─────────────
|
|
463
|
+
--matcha-icon-size-sm: 16px;
|
|
464
|
+
--matcha-icon-size-md: 24px;
|
|
465
|
+
--matcha-icon-size-lg: 32px;
|
|
466
|
+
--matcha-icon-size-xl: 48px;
|
|
467
|
+
|
|
468
|
+
// ── Avatar sizes (1:1 com Figma matcha/avatar — Type=Photo, Size variants)
|
|
469
|
+
--matcha-avatar-xs: 24px;
|
|
470
|
+
--matcha-avatar-sm: 32px;
|
|
471
|
+
--matcha-avatar-md: 40px;
|
|
472
|
+
--matcha-avatar-lg: 56px;
|
|
473
|
+
--matcha-avatar-xl: 80px;
|
|
474
|
+
--matcha-avatar-2xl: 96px;
|
|
475
|
+
// Status indicator — 1:1 com Figma (Status ellipse em cada Size variant)
|
|
476
|
+
--matcha-avatar-status-xs: 6px;
|
|
477
|
+
--matcha-avatar-status-sm: 8px;
|
|
478
|
+
--matcha-avatar-status-md: 10px;
|
|
479
|
+
--matcha-avatar-status-lg: 12px;
|
|
480
|
+
--matcha-avatar-status-xl: 14px;
|
|
481
|
+
--matcha-avatar-status-2xl: 16px;
|
|
482
|
+
|
|
483
|
+
// ── Z-index (8 tokens — matches matcha/z-index/* from Figma) ─────────────
|
|
484
|
+
--matcha-z-base: 1;
|
|
485
|
+
--matcha-z-dropdown: 100;
|
|
486
|
+
--matcha-z-sticky: 200;
|
|
487
|
+
--matcha-z-popover: 300;
|
|
488
|
+
--matcha-z-tooltip: 400;
|
|
489
|
+
--matcha-z-modal-bg: 998;
|
|
490
|
+
--matcha-z-modal: 999;
|
|
491
|
+
--matcha-z-overlay: 1000;
|
|
492
|
+
|
|
493
|
+
// ── Grid (22 tokens — 1:1 com matcha/grid/* do Figma) ────────────────────
|
|
494
|
+
// Frames (breakpoints)
|
|
495
|
+
--matcha-grid-frame-mobile: 375px;
|
|
496
|
+
--matcha-grid-frame-tablet: 768px;
|
|
497
|
+
--matcha-grid-frame-notebook: 1360px;
|
|
498
|
+
--matcha-grid-frame-wide: 1920px;
|
|
499
|
+
// Chrome
|
|
500
|
+
--matcha-grid-header-height: 56px;
|
|
501
|
+
--matcha-grid-sidebar-rail: 72px;
|
|
502
|
+
--matcha-grid-sidebar-submenu: 216px;
|
|
503
|
+
--matcha-grid-sidebar-total: 304px;
|
|
504
|
+
--matcha-grid-sidebar-gap: 16px;
|
|
505
|
+
// Gutters (espaço entre colunas)
|
|
506
|
+
--matcha-grid-gutter-compact: 8px;
|
|
507
|
+
--matcha-grid-gutter-default: 16px;
|
|
508
|
+
--matcha-grid-gutter-wide: 16px;
|
|
509
|
+
--matcha-grid-max-content-width: 1600px;
|
|
510
|
+
// Column widths (largura INDIVIDUAL de coluna) — Figma verdadeiro
|
|
511
|
+
--matcha-grid-col-painel-full: 72px;
|
|
512
|
+
--matcha-grid-col-painel-rail: 88px;
|
|
513
|
+
--matcha-grid-col-painel-compact: 96px;
|
|
514
|
+
--matcha-grid-col-wide-full: 120px;
|
|
515
|
+
--matcha-grid-col-wide-rail: 112px;
|
|
516
|
+
// Content widths (área útil total) — Figma verdadeiro
|
|
517
|
+
--matcha-grid-content-painel-full: 1040px;
|
|
518
|
+
--matcha-grid-content-painel-rail: 1232px;
|
|
519
|
+
--matcha-grid-content-wide-full: 1616px;
|
|
520
|
+
--matcha-grid-content-wide-rail: 1520px;
|
|
521
|
+
|
|
522
|
+
// Public-facing column widths (site institucional/landing — breakpoint-aware)
|
|
523
|
+
--matcha-grid-col-public-desktop: 80px;
|
|
524
|
+
--matcha-grid-col-public-mobile: 80px;
|
|
525
|
+
--matcha-grid-col-public-tablet: 64px;
|
|
526
|
+
|
|
527
|
+
// Horizontal offsets (distância da borda do frame ao primeiro col da grid)
|
|
528
|
+
--matcha-grid-offset-painel-compact: 24px;
|
|
529
|
+
--matcha-grid-offset-painel-full: 304px;
|
|
530
|
+
--matcha-grid-offset-painel-rail: 96px;
|
|
531
|
+
--matcha-grid-offset-wide-full: 304px;
|
|
532
|
+
--matcha-grid-offset-wide-rail: 248px;
|
|
533
|
+
|
|
534
|
+
// ═════════════════════════════════════════════════════════════════════════
|
|
535
|
+
// 16. NAMING-PARITY ALIASES
|
|
536
|
+
// Aliases que espelham o nome exato das variables do Figma, garantindo que
|
|
537
|
+
// dev possa referenciar o token pelo nome que vê no Figma.
|
|
538
|
+
// ═════════════════════════════════════════════════════════════════════════
|
|
539
|
+
|
|
540
|
+
// Figma: matcha/color/surface/background → ↔ --matcha-color-surface-bg
|
|
541
|
+
--matcha-color-surface-background: var(--matcha-color-surface-bg);
|
|
542
|
+
--matcha-color-surface-background-alpha: var(--matcha-color-surface-bg-alpha);
|
|
543
|
+
--matcha-color-surface-background-inverse: var(--matcha-color-surface-bg-inverse);
|
|
544
|
+
|
|
545
|
+
// Figma: matcha/color/neutral/default → ↔ --matcha-color-neutral
|
|
546
|
+
--matcha-color-neutral-default: var(--matcha-color-neutral);
|
|
547
|
+
|
|
548
|
+
// Figma: matcha/color/interaction/focus-ring → ↔ --matcha-color-focus-ring
|
|
549
|
+
--matcha-color-interaction-focus-ring: var(--matcha-color-focus-ring);
|
|
550
|
+
|
|
551
|
+
// Figma: matcha/z-index/{base,dropdown,…} → ↔ --matcha-z-{base,dropdown,…}
|
|
552
|
+
--matcha-z-index-base: var(--matcha-z-base);
|
|
553
|
+
--matcha-z-index-dropdown: var(--matcha-z-dropdown);
|
|
554
|
+
--matcha-z-index-sticky: var(--matcha-z-sticky);
|
|
555
|
+
--matcha-z-index-popover: var(--matcha-z-popover);
|
|
556
|
+
--matcha-z-index-tooltip: var(--matcha-z-tooltip);
|
|
557
|
+
--matcha-z-index-modal-bg: var(--matcha-z-modal-bg);
|
|
558
|
+
--matcha-z-index-modal: var(--matcha-z-modal);
|
|
559
|
+
--matcha-z-index-overlay: var(--matcha-z-overlay);
|
|
560
|
+
|
|
561
|
+
// Figma: matcha/font/weight/semi-bold → ↔ --matcha-weight-semibold
|
|
562
|
+
--matcha-font-weight-semi-bold: var(--matcha-weight-semibold);
|
|
563
|
+
--matcha-font-weight-regular: var(--matcha-weight-regular);
|
|
564
|
+
--matcha-font-weight-medium: var(--matcha-weight-medium);
|
|
565
|
+
--matcha-font-weight-bold: var(--matcha-weight-bold);
|
|
566
|
+
--matcha-font-weight-extrabold: var(--matcha-weight-extrabold);
|
|
567
|
+
--matcha-font-weight-black: var(--matcha-weight-black);
|
|
568
|
+
}
|
|
@@ -0,0 +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-";
|