@inchurch/matcha-theme 21.1.0 → 21.3.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 +5 -1
- package/abstracts/_elevation.scss +15 -9
- package/abstracts/_functions.scss +44 -8
- package/abstracts/_media-breakpoint.scss +4 -1
- package/abstracts/_theme-api.scss +15 -26
- package/abstracts/_typography.scss +1 -0
- package/components/app-page-header.scss +1 -0
- package/components/matcha-button-toggle.scss +11 -10
- package/components/matcha-buttons.scss +21 -16
- package/components/matcha-file-uploader.scss +1 -0
- package/components/matcha-footer.scss +1 -0
- package/components/matcha-form-field.scss +2 -0
- package/components/matcha-header.scss +1 -0
- package/components/matcha-hint-text.scss +3 -0
- package/components/matcha-modal.scss +3 -0
- package/components/matcha-notification.scss +1 -0
- package/components/matcha-paginator.scss +1 -0
- package/components/matcha-section.scss +1 -0
- package/components/matcha-select.scss +10 -4
- package/components/matcha-snack-bar.scss +1 -0
- package/components/matcha-spin.scss +3 -0
- package/components/matcha-table.scss +10 -0
- package/components/matcha-tabs.scss +9 -8
- package/layout/matcha-page-layout.scss +2 -0
- package/main.scss +180 -90
- package/package.json +1 -1
- package/tokens/_color-tokens.scss +1 -0
- package/tokens/_elevation-tokens.scss +1 -1
- package/tokens/_emit-tokens.scss +8 -18
- package/vendors/charts.scss +1 -0
package/abstracts/_colors.scss
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
@use "functions" as *;
|
|
2
|
+
@use "../tokens/primitives" as *;
|
|
3
|
+
@use "sass:list";
|
|
4
|
+
|
|
1
5
|
// Shade-classes SÓ das primitivas do Figma ($matcha-primitives — gerado de
|
|
2
6
|
// tokens/matcha/primitives/colors.json pelo gen-primitives). Cada classe consome
|
|
3
7
|
// var(--matcha-prim-{família}-{shade}); o contraste é computado em build a partir
|
|
@@ -9,7 +13,7 @@
|
|
|
9
13
|
$-skip: ("common", "brand", "neutral");
|
|
10
14
|
|
|
11
15
|
@each $family, $shades in $matcha-primitives {
|
|
12
|
-
@if not index($-skip, $family) {
|
|
16
|
+
@if not list.index($-skip, $family) {
|
|
13
17
|
@each $shade, $hex in $shades {
|
|
14
18
|
.#{$family}-#{$shade} {
|
|
15
19
|
background-color: var(--matcha-prim-#{$family}-#{$shade}) !important;
|
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
@use "../tokens/elevation-tokens" as *;
|
|
2
|
+
@use "functions" as *;
|
|
3
|
+
@use "sass:map";
|
|
4
|
+
@use "sass:math";
|
|
5
|
+
@use "sass:meta";
|
|
6
|
+
|
|
1
7
|
// -------------------------------------------------------------------------------------------------------------------
|
|
2
8
|
// @ Elevations Mixins
|
|
3
9
|
//
|
|
@@ -36,7 +42,7 @@
|
|
|
36
42
|
// Applies the correct css rules to an element to give it the elevation specified by $zValue.
|
|
37
43
|
// The $zValue must be between 0 and 24.
|
|
38
44
|
@mixin elevation($zValue, $color: $elevation-color, $opacity: $elevation-opacity) {
|
|
39
|
-
@if type-of($zValue) !=number or not unitless($zValue) {
|
|
45
|
+
@if meta.type-of($zValue) !=number or not math.is-unitless($zValue) {
|
|
40
46
|
@error '$zValue must be a unitless number';
|
|
41
47
|
}
|
|
42
48
|
|
|
@@ -44,9 +50,9 @@
|
|
|
44
50
|
@error '$zValue must be between 0 and 24';
|
|
45
51
|
}
|
|
46
52
|
|
|
47
|
-
box-shadow: #{map
|
|
48
|
-
#{map
|
|
49
|
-
#{map
|
|
53
|
+
box-shadow: #{map.get(get-umbra-map($color, $opacity), $zValue)},
|
|
54
|
+
#{map.get(get-penumbra-map($color, $opacity), $zValue)},
|
|
55
|
+
#{map.get(get-ambient-map($color, $opacity), $zValue)};
|
|
50
56
|
}
|
|
51
57
|
|
|
52
58
|
@mixin _theme-elevation($zValue, $elevation-color, $opacity: $elevation-opacity) {
|
|
@@ -56,14 +62,14 @@
|
|
|
56
62
|
// Applies the elevation to an element in a manner that allows
|
|
57
63
|
// consumers to override it via the Material elevation classes.
|
|
58
64
|
@mixin overridable-elevation($zValue, $color: $elevation-color, $opacity: $elevation-opacity) {
|
|
59
|
-
&:not([class*="#{$
|
|
65
|
+
&:not([class*="#{$elevation-prefix}"]) {
|
|
60
66
|
@include elevation($zValue, $color, $opacity);
|
|
61
67
|
}
|
|
62
68
|
}
|
|
63
69
|
|
|
64
70
|
@mixin _theme-overridable-elevation($zValue, $theme, $opacity: $elevation-opacity) {
|
|
65
|
-
$foreground: map
|
|
66
|
-
$elevation-color: map
|
|
71
|
+
$foreground: map.get($theme, foreground);
|
|
72
|
+
$elevation-color: map.get($foreground, elevation);
|
|
67
73
|
$elevation-color-or-default: if($elevation-color ==null, $elevation-color, $elevation-color);
|
|
68
74
|
|
|
69
75
|
@include overridable-elevation($zValue, $elevation-color-or-default, $opacity);
|
|
@@ -88,14 +94,14 @@
|
|
|
88
94
|
}
|
|
89
95
|
|
|
90
96
|
// Css class generator for shadows
|
|
91
|
-
// $
|
|
97
|
+
// $elevation-prefix: "matcha-elevation-z";
|
|
92
98
|
@mixin elevation-theme($is-dark: false) {
|
|
93
99
|
// API nova: recebe SÓ o modo. Cor da sombra preservada por modo
|
|
94
100
|
// (light #1A2C1E / dark black — valores que vinham de foreground.elevation).
|
|
95
101
|
$elevation-color: if($is-dark, black, #1A2C1E);
|
|
96
102
|
|
|
97
103
|
@for $zValue from 0 through 24 {
|
|
98
|
-
.#{$
|
|
104
|
+
.#{$elevation-prefix}#{$zValue} {
|
|
99
105
|
@include _theme-elevation($zValue, $elevation-color);
|
|
100
106
|
}
|
|
101
107
|
}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
@use "sass:map";
|
|
2
|
+
@use "sass:math";
|
|
2
3
|
@use "sass:color";
|
|
4
|
+
@use "sass:meta";
|
|
5
|
+
@use "sass:string";
|
|
3
6
|
|
|
4
7
|
// -------------------------------------------------------------------------------------------------------------------
|
|
5
8
|
// @ Theme functions — REMOVIDAS no major (API velha)
|
|
@@ -157,7 +160,7 @@
|
|
|
157
160
|
}
|
|
158
161
|
|
|
159
162
|
// Guard against unquoting non-string values, because it's deprecated.
|
|
160
|
-
@return if(type-of($font-family)==string, unquote($font-family), $font-family);
|
|
163
|
+
@return if(meta.type-of($font-family)==string, string.unquote($font-family), $font-family);
|
|
161
164
|
}
|
|
162
165
|
|
|
163
166
|
// -------------------------------------------------------------------------------------------------------------------
|
|
@@ -165,8 +168,8 @@
|
|
|
165
168
|
// --------------------------------------------------------------------------------------------------------------------
|
|
166
169
|
// A collection of functions that can be used to apply elevation to a material
|
|
167
170
|
|
|
168
|
-
@function
|
|
169
|
-
$shadow-color: if(type-of($color)==color, rgba($color, $opacity * 0.033), $color);
|
|
171
|
+
@function get-umbra-map($color, $opacity) {
|
|
172
|
+
$shadow-color: if(meta.type-of($color)==color, rgba($color, $opacity * 0.033), $color);
|
|
170
173
|
|
|
171
174
|
@return (0: "0px 0px 0px 0px #{$shadow-color}",
|
|
172
175
|
1: "0px 2px 2px 0px #{$shadow-color}",
|
|
@@ -196,8 +199,8 @@
|
|
|
196
199
|
);
|
|
197
200
|
}
|
|
198
201
|
|
|
199
|
-
@function
|
|
200
|
-
$shadow-color: if(type-of($color)==color, rgba($color, $opacity * 0.033), $color);
|
|
202
|
+
@function get-penumbra-map($color, $opacity) {
|
|
203
|
+
$shadow-color: if(meta.type-of($color)==color, rgba($color, $opacity * 0.033), $color);
|
|
201
204
|
|
|
202
205
|
@return (0: "0px 0px 0px 0px #{$shadow-color}",
|
|
203
206
|
1: "0px 2px 2px 0px #{$shadow-color}",
|
|
@@ -227,8 +230,8 @@
|
|
|
227
230
|
);
|
|
228
231
|
}
|
|
229
232
|
|
|
230
|
-
@function
|
|
231
|
-
$shadow-color: if(type-of($color)==color, rgba($color, $opacity * 0.033), $color);
|
|
233
|
+
@function get-ambient-map($color, $opacity) {
|
|
234
|
+
$shadow-color: if(meta.type-of($color)==color, rgba($color, $opacity * 0.033), $color);
|
|
232
235
|
|
|
233
236
|
@return (0: "0px 0px 0px 0px #{$shadow-color}",
|
|
234
237
|
1: "0px 2px 2px 0px #{$shadow-color}",
|
|
@@ -282,4 +285,37 @@ $base-font-size: 16px;
|
|
|
282
285
|
@else {
|
|
283
286
|
@return $value-in-px;
|
|
284
287
|
}
|
|
285
|
-
}
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
// ── Color helpers (movidos de _theme-api p/ quebrar ciclo @use) ──────────────
|
|
291
|
+
@function matcha-yiq($color) {
|
|
292
|
+
$r: color.channel($color, "red", $space: rgb);
|
|
293
|
+
$g: color.channel($color, "green", $space: rgb);
|
|
294
|
+
$b: color.channel($color, "blue", $space: rgb);
|
|
295
|
+
@return math.div(($r * 299) + ($g * 587) + ($b * 114), 1000);
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
@function matcha-text-on($color) {
|
|
299
|
+
@return if(matcha-yiq($color) >= 150, #1a1d21, #ffffff);
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
@function matcha-contrast-on($color) {
|
|
303
|
+
@return if(matcha-yiq($color) >= 150, rgba(0, 0, 0, .87), #ffffff);
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
@function matcha-contrast-alpha-on($color) {
|
|
307
|
+
@return if(matcha-yiq($color) >= 150, rgba(0, 0, 0, .1), rgba(255, 255, 255, .1));
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
@function matcha-role-tokens($role, $seed, $surface-bg, $is-dark) {
|
|
311
|
+
@return (
|
|
312
|
+
#{$role}: $seed,
|
|
313
|
+
#{$role}-hover: color.scale($seed, $lightness: if($is-dark, 18%, -12%)),
|
|
314
|
+
#{$role}-pressed: color.scale($seed, $lightness: if($is-dark, 32%, -20%)),
|
|
315
|
+
#{$role}-alpha: rgba($seed, .1),
|
|
316
|
+
#{$role}-contrast: matcha-contrast-on($seed),
|
|
317
|
+
#{$role}-contrast-alpha: matcha-contrast-alpha-on($seed),
|
|
318
|
+
#{$role}-surface-hover: color.mix($seed, $surface-bg, 10%),
|
|
319
|
+
#{$role}-surface-pressed: color.mix($seed, $surface-bg, 22%),
|
|
320
|
+
);
|
|
321
|
+
}
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
@use "../tokens/breakpoints-tokens" as *;
|
|
2
|
+
@use "sass:map";
|
|
3
|
+
|
|
1
4
|
// -------------------------------------------------------------------------------------------------------------------
|
|
2
5
|
// @ Theme mixins
|
|
3
6
|
// --------------------------------------------------------------------------------------------------------------------
|
|
@@ -12,7 +15,7 @@
|
|
|
12
15
|
|
|
13
16
|
*/
|
|
14
17
|
@mixin media-breakpoint($breakpointName) {
|
|
15
|
-
$mediaQuery: map
|
|
18
|
+
$mediaQuery: map.get($breakpoints, $breakpointName);
|
|
16
19
|
@if ($mediaQuery == null) {
|
|
17
20
|
@content;
|
|
18
21
|
} @else {
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
@use "functions" as *;
|
|
2
|
+
@use "../tokens/color-tokens" as *;
|
|
1
3
|
// =============================================================================
|
|
2
4
|
// MATCHA THEME API — criação de temas por override de CSS custom properties
|
|
3
5
|
// =============================================================================
|
|
@@ -54,43 +56,30 @@ $-matcha-required-seeds: (surface-bg, surface, text-primary, accent, primary, su
|
|
|
54
56
|
|
|
55
57
|
// ── Helpers de contraste ────────────────────────────────────────────────────
|
|
56
58
|
// Luminância perceptual aproximada (YIQ, 0–255).
|
|
57
|
-
@function matcha-yiq($color) {
|
|
58
|
-
$r: color.channel($color, "red", $space: rgb);
|
|
59
|
-
$g: color.channel($color, "green", $space: rgb);
|
|
60
|
-
$b: color.channel($color, "blue", $space: rgb);
|
|
61
|
-
@return math.div(($r * 299) + ($g * 587) + ($b * 114), 1000);
|
|
62
|
-
}
|
|
63
59
|
|
|
64
60
|
// Foreground de texto opaco sobre $color (padrão dos tokens *-text-on).
|
|
65
|
-
@function matcha-text-on($color) {
|
|
66
|
-
@return if(matcha-yiq($color) >= 150, #1a1d21, #ffffff);
|
|
67
|
-
}
|
|
68
61
|
|
|
69
62
|
// Foreground de contraste no padrão dos tokens *-contrast (preto .87 / branco).
|
|
70
|
-
@function matcha-contrast-on($color) {
|
|
71
|
-
@return if(matcha-yiq($color) >= 150, rgba(0, 0, 0, .87), #ffffff);
|
|
72
|
-
}
|
|
73
63
|
|
|
74
|
-
|
|
75
|
-
|
|
64
|
+
// ── Emissor genérico de --matcha-color-* ─────────────────────────────────────
|
|
65
|
+
// Movido de _emit-tokens para quebrar o ciclo @use (emit-tokens → color-tokens →
|
|
66
|
+
// theme-api → emit-tokens). Self-contained (só sass:map). Usado por
|
|
67
|
+
// matcha-define-theme (abaixo) e por matcha-css-custom-properties (emit-tokens, via @use).
|
|
68
|
+
@mixin matcha-emit-color-properties($colors, $aliases: ()) {
|
|
69
|
+
@each $token, $value in $colors {
|
|
70
|
+
$alias: map.get($aliases, $token);
|
|
71
|
+
@if $alias {
|
|
72
|
+
--matcha-color-#{$token}: var(#{$alias});
|
|
73
|
+
} @else {
|
|
74
|
+
--matcha-color-#{$token}: #{$value};
|
|
75
|
+
}
|
|
76
|
+
}
|
|
76
77
|
}
|
|
77
78
|
|
|
78
79
|
// ── Derivação de família de papel (primary/accent/feedback) ────────────────
|
|
79
80
|
// Gera <role>, <role>-hover/-pressed/-alpha/-contrast/-contrast-alpha/
|
|
80
81
|
// -surface-hover/-surface-pressed a partir do seed. Direção do hover segue a
|
|
81
82
|
// base: temas light escurecem no hover, temas dark clareiam (padrão DSV3).
|
|
82
|
-
@function matcha-role-tokens($role, $seed, $surface-bg, $is-dark) {
|
|
83
|
-
@return (
|
|
84
|
-
#{$role}: $seed,
|
|
85
|
-
#{$role}-hover: color.scale($seed, $lightness: if($is-dark, 18%, -12%)),
|
|
86
|
-
#{$role}-pressed: color.scale($seed, $lightness: if($is-dark, 32%, -20%)),
|
|
87
|
-
#{$role}-alpha: rgba($seed, .1),
|
|
88
|
-
#{$role}-contrast: matcha-contrast-on($seed),
|
|
89
|
-
#{$role}-contrast-alpha: matcha-contrast-alpha-on($seed),
|
|
90
|
-
#{$role}-surface-hover: color.mix($seed, $surface-bg, 10%),
|
|
91
|
-
#{$role}-surface-pressed: color.mix($seed, $surface-bg, 22%),
|
|
92
|
-
);
|
|
93
|
-
}
|
|
94
83
|
|
|
95
84
|
// ── Construção do mapa completo de cores do tema ────────────────────────────
|
|
96
85
|
// Parte dos defaults da base (light/dark), aplica as famílias derivadas dos
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
@use "functions" as *;
|
|
1
2
|
// -------------------------------------------------------------------------------------------------------------------
|
|
2
3
|
// @ Typography mixins
|
|
3
4
|
// -------------------------------------------------------------------------------------------------------------------
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
@use "matcha-buttons" as *;
|
|
1
2
|
@mixin _colorize-inactive-type-solid-button-toggle-item($theme, $color-functions) {
|
|
2
3
|
|
|
3
4
|
&:not([inactivetype]),
|
|
@@ -30,7 +31,7 @@
|
|
|
30
31
|
button[matcha-button],
|
|
31
32
|
a[matcha-button] {
|
|
32
33
|
&:not([active]) {
|
|
33
|
-
@include
|
|
34
|
+
@include disabled-solid-button($theme);
|
|
34
35
|
}
|
|
35
36
|
}
|
|
36
37
|
}
|
|
@@ -68,7 +69,7 @@
|
|
|
68
69
|
button[matcha-button],
|
|
69
70
|
a[matcha-button] {
|
|
70
71
|
&:not([active]) {
|
|
71
|
-
@include
|
|
72
|
+
@include disabled-basic-button($theme);
|
|
72
73
|
}
|
|
73
74
|
}
|
|
74
75
|
}
|
|
@@ -115,7 +116,7 @@
|
|
|
115
116
|
|
|
116
117
|
//botão não ativo
|
|
117
118
|
&:not([active]) {
|
|
118
|
-
@include
|
|
119
|
+
@include disabled-outline-button($theme);
|
|
119
120
|
}
|
|
120
121
|
}
|
|
121
122
|
}
|
|
@@ -155,7 +156,7 @@
|
|
|
155
156
|
|
|
156
157
|
//botão não ativo
|
|
157
158
|
&:not([active]) {
|
|
158
|
-
@include
|
|
159
|
+
@include disabled-alpha-button($theme);
|
|
159
160
|
}
|
|
160
161
|
}
|
|
161
162
|
}
|
|
@@ -198,7 +199,7 @@
|
|
|
198
199
|
|
|
199
200
|
//botão não ativo
|
|
200
201
|
&:not([active]) {
|
|
201
|
-
@include
|
|
202
|
+
@include disabled-link-button($theme);
|
|
202
203
|
}
|
|
203
204
|
}
|
|
204
205
|
}
|
|
@@ -245,28 +246,28 @@ matcha-button-toggle {
|
|
|
245
246
|
&[outline],
|
|
246
247
|
&[outline]:not([outline="false"]),
|
|
247
248
|
&[outline="true"] {
|
|
248
|
-
@include
|
|
249
|
+
@include disabled-outline-button($theme);
|
|
249
250
|
}
|
|
250
251
|
|
|
251
252
|
&[basic],
|
|
252
253
|
&[basic]:not([basic="false"]),
|
|
253
254
|
&[basic="true"] {
|
|
254
|
-
@include
|
|
255
|
+
@include disabled-basic-button($theme);
|
|
255
256
|
}
|
|
256
257
|
|
|
257
258
|
&[alpha],
|
|
258
259
|
&[alpha]:not([alpha="false"]),
|
|
259
260
|
&[alpha="true"] {
|
|
260
|
-
@include
|
|
261
|
+
@include disabled-alpha-button($theme);
|
|
261
262
|
}
|
|
262
263
|
|
|
263
264
|
&[link],
|
|
264
265
|
&[link]:not([link="false"]),
|
|
265
266
|
&[link="true"] {
|
|
266
|
-
@include
|
|
267
|
+
@include disabled-link-button($theme);
|
|
267
268
|
}
|
|
268
269
|
|
|
269
|
-
@include
|
|
270
|
+
@include disabled-solid-button($theme);
|
|
270
271
|
}
|
|
271
272
|
}
|
|
272
273
|
}
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
@use "../abstracts/media-breakpoint" as *;
|
|
2
|
+
@use "../abstracts/functions" as *;
|
|
3
|
+
@use "../tokens/breakpoints-tokens" as *;
|
|
1
4
|
// =============================================================================
|
|
2
5
|
// matcha-buttons.scss — Button & Icon Button (modernized)
|
|
3
6
|
// Aligned with Figma: matcha/button + matcha/icon-button
|
|
@@ -8,35 +11,35 @@
|
|
|
8
11
|
|
|
9
12
|
// ── Disabled mixins ─────────────────────────────────────────────────────────
|
|
10
13
|
|
|
11
|
-
@mixin
|
|
14
|
+
@mixin disabled-solid-button($theme) {
|
|
12
15
|
background: var(--matcha-color-disabled-bg);
|
|
13
16
|
color: var(--matcha-color-disabled-fg);
|
|
14
17
|
box-shadow: 0 0 0 0px inset;
|
|
15
18
|
pointer-events: none;
|
|
16
19
|
}
|
|
17
20
|
|
|
18
|
-
@mixin
|
|
21
|
+
@mixin disabled-basic-button($theme) {
|
|
19
22
|
background: var(--matcha-color-surface);
|
|
20
23
|
color: var(--matcha-color-disabled-bg);
|
|
21
24
|
box-shadow: 0 0 0 0px inset;
|
|
22
25
|
pointer-events: none;
|
|
23
26
|
}
|
|
24
27
|
|
|
25
|
-
@mixin
|
|
28
|
+
@mixin disabled-outline-button($theme) {
|
|
26
29
|
background: transparent;
|
|
27
30
|
color: var(--matcha-color-disabled-bg);
|
|
28
31
|
box-shadow: 0 0 0 var(--matcha-border-thin, 2px) inset;
|
|
29
32
|
pointer-events: none;
|
|
30
33
|
}
|
|
31
34
|
|
|
32
|
-
@mixin
|
|
35
|
+
@mixin disabled-alpha-button($theme) {
|
|
33
36
|
background: var(--matcha-color-disabled-bg-alpha, var(--matcha-color-interaction-disabled-bg-alpha));
|
|
34
37
|
color: var(--matcha-color-disabled-bg);
|
|
35
38
|
box-shadow: 0 0 0 0px inset;
|
|
36
39
|
pointer-events: none;
|
|
37
40
|
}
|
|
38
41
|
|
|
39
|
-
@mixin
|
|
42
|
+
@mixin disabled-link-button($theme) {
|
|
40
43
|
background: transparent;
|
|
41
44
|
color: var(--matcha-color-disabled-bg);
|
|
42
45
|
box-shadow: 0 0 0 0px inset;
|
|
@@ -141,6 +144,19 @@ a[matcha-link] {
|
|
|
141
144
|
border: none;
|
|
142
145
|
border-radius: var(--matcha-radius-lg, 8px);
|
|
143
146
|
|
|
147
|
+
// Figma matcha/button usa DOIS feedbacks combinados:
|
|
148
|
+
// 1. Cor do bg muda (accent-default → accent-hover → accent-pressed)
|
|
149
|
+
// 2. State-layer overlay por cima (matcha/color/state-layer/fg)
|
|
150
|
+
// - Filled: opacity 0.15 hover / 0.30 active
|
|
151
|
+
// - Outline/Ghost: opacity 0.10 hover / 0.20 active
|
|
152
|
+
// ::before aplica o state-layer; :hover/:active ou .is-state-* ativam.
|
|
153
|
+
// NOTA: declarada ANTES das regras aninhadas (evita a deprecação mixed-decls);
|
|
154
|
+
// é onde o hoisting do Sass já a colocava — output byte-idêntico.
|
|
155
|
+
transition:
|
|
156
|
+
background-color 150ms cubic-bezier(0.4, 0, 0.2, 1),
|
|
157
|
+
box-shadow 150ms cubic-bezier(0.4, 0, 0.2, 1),
|
|
158
|
+
color 150ms cubic-bezier(0.4, 0, 0.2, 1);
|
|
159
|
+
|
|
144
160
|
* { pointer-events: none; }
|
|
145
161
|
|
|
146
162
|
// Figma spec: ícones dentro de button herdam a foreground color do botão
|
|
@@ -154,17 +170,6 @@ a[matcha-link] {
|
|
|
154
170
|
|
|
155
171
|
@include generate-matcha-button-size-classes($helper-breakpoints);
|
|
156
172
|
|
|
157
|
-
// Figma matcha/button usa DOIS feedbacks combinados:
|
|
158
|
-
// 1. Cor do bg muda (accent-default → accent-hover → accent-pressed)
|
|
159
|
-
// 2. State-layer overlay por cima (matcha/color/state-layer/fg)
|
|
160
|
-
// - Filled: opacity 0.15 hover / 0.30 active
|
|
161
|
-
// - Outline/Ghost: opacity 0.10 hover / 0.20 active
|
|
162
|
-
// ::before aplica o state-layer; :hover/:active ou .is-state-* ativam.
|
|
163
|
-
transition:
|
|
164
|
-
background-color 150ms cubic-bezier(0.4, 0, 0.2, 1),
|
|
165
|
-
box-shadow 150ms cubic-bezier(0.4, 0, 0.2, 1),
|
|
166
|
-
color 150ms cubic-bezier(0.4, 0, 0.2, 1);
|
|
167
|
-
|
|
168
173
|
&::before {
|
|
169
174
|
content: '';
|
|
170
175
|
position: absolute;
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
@use "../abstracts/media-breakpoint" as *;
|
|
2
|
+
@use "../tokens/breakpoints-tokens" as *;
|
|
1
3
|
// =============================================================================
|
|
2
4
|
// matcha-form-field.scss — Theme mixin (stacked pattern, Figma matcha/field/_base)
|
|
3
5
|
// Border colors vêm do data-color (component SCSS). Theme mixin cuida de:
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
@use "../abstracts/media-breakpoint" as *;
|
|
2
|
+
@use "../abstracts/functions" as *;
|
|
3
|
+
@use "../tokens/breakpoints-tokens" as *;
|
|
1
4
|
// =============================================================================
|
|
2
5
|
// matcha-hint-text.scss — Hint/error/warning/info/success text
|
|
3
6
|
// Aligned with Figma matcha/hint-text: Tipo(4) × Tamanho(SM/MD) = 8 variants
|
|
@@ -153,7 +153,10 @@
|
|
|
153
153
|
line-height: 24px;
|
|
154
154
|
}
|
|
155
155
|
|
|
156
|
-
// Tipografia do value por size
|
|
156
|
+
// Tipografia do value por size: SM/tiny body-sm 12/16 · MD body-md 14/20 · LG body-lg 16/24.
|
|
157
|
+
// O tier SM usa a MESMA escala do input nativo (matcha-form-field.scss aplica
|
|
158
|
+
// --matcha-text-body-sm nesse tier). Antes o select herdava 14/20 junto do MD e ficava
|
|
159
|
+
// 2px maior que input/date dentro do MESMO matcha-field size="small".
|
|
157
160
|
matcha-form-field[size="lg"] .matcha-select-value,
|
|
158
161
|
matcha-form-field[size="lg"] .matcha-select-combobox-input,
|
|
159
162
|
matcha-form-field[size="large"] .matcha-select-value,
|
|
@@ -165,12 +168,15 @@
|
|
|
165
168
|
}
|
|
166
169
|
matcha-form-field[size="sm"] .matcha-select-value,
|
|
167
170
|
matcha-form-field[size="sm"] .matcha-select-combobox-input,
|
|
168
|
-
matcha-form-field[size="md"] .matcha-select-value,
|
|
169
|
-
matcha-form-field[size="md"] .matcha-select-combobox-input,
|
|
170
171
|
matcha-form-field[size="tiny"] .matcha-select-value,
|
|
171
172
|
matcha-form-field[size="tiny"] .matcha-select-combobox-input,
|
|
172
173
|
matcha-form-field[size="small"] .matcha-select-value,
|
|
173
|
-
matcha-form-field[size="small"] .matcha-select-combobox-input
|
|
174
|
+
matcha-form-field[size="small"] .matcha-select-combobox-input {
|
|
175
|
+
font-size: var(--matcha-text-body-sm, 12px);
|
|
176
|
+
line-height: var(--matcha-leading-body-sm, 16px);
|
|
177
|
+
}
|
|
178
|
+
matcha-form-field[size="md"] .matcha-select-value,
|
|
179
|
+
matcha-form-field[size="md"] .matcha-select-combobox-input,
|
|
174
180
|
matcha-form-field[size="medium"] .matcha-select-value,
|
|
175
181
|
matcha-form-field[size="medium"] .matcha-select-combobox-input {
|
|
176
182
|
font-size: 14px;
|
|
@@ -360,6 +360,16 @@
|
|
|
360
360
|
--matcha-table-cell-bg: var(--matcha-table-row-bg-hover-striped);
|
|
361
361
|
}
|
|
362
362
|
|
|
363
|
+
// Variante de hover accent (input `rowHover="accent"` → classe host
|
|
364
|
+
// `matcha-table-hover-accent`). Rebinda a var de hover no PRÓPRIO `<table>`,
|
|
365
|
+
// com especificidade acima do default — dispensa o consumer de furar o
|
|
366
|
+
// encapsulamento com `::ng-deep`. Substitui o override manual repetido em
|
|
367
|
+
// members/visitors/history/datas-comemorativas.
|
|
368
|
+
&.matcha-table-hover-accent {
|
|
369
|
+
--matcha-table-row-bg-hover: var(--matcha-color-accent-surface-hover);
|
|
370
|
+
--matcha-table-row-bg-hover-striped: var(--matcha-color-accent-surface-hover);
|
|
371
|
+
}
|
|
372
|
+
|
|
363
373
|
tbody tr.is-selected td {
|
|
364
374
|
--matcha-table-cell-bg: var(--matcha-table-row-bg-selected);
|
|
365
375
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
@use "matcha-buttons" as *;
|
|
1
2
|
@use "sass:map";
|
|
2
3
|
|
|
3
4
|
@mixin _colorize-inactive-type-basic($theme, $color-functions) {
|
|
@@ -30,7 +31,7 @@
|
|
|
30
31
|
|
|
31
32
|
button[matcha-button],
|
|
32
33
|
a[matcha-button] {
|
|
33
|
-
@include
|
|
34
|
+
@include disabled-basic-button($theme);
|
|
34
35
|
}
|
|
35
36
|
}
|
|
36
37
|
}
|
|
@@ -77,7 +78,7 @@
|
|
|
77
78
|
|
|
78
79
|
//botão não ativo
|
|
79
80
|
&:not([active-item="true"]) {
|
|
80
|
-
@include
|
|
81
|
+
@include disabled-outline-button($theme);
|
|
81
82
|
}
|
|
82
83
|
}
|
|
83
84
|
}
|
|
@@ -117,7 +118,7 @@
|
|
|
117
118
|
|
|
118
119
|
//botão não ativo
|
|
119
120
|
&:not([active-item="true"]) {
|
|
120
|
-
@include
|
|
121
|
+
@include disabled-alpha-button($theme);
|
|
121
122
|
}
|
|
122
123
|
}
|
|
123
124
|
}
|
|
@@ -160,7 +161,7 @@
|
|
|
160
161
|
|
|
161
162
|
//botão não ativo
|
|
162
163
|
&:not([active-item="true"]) {
|
|
163
|
-
@include
|
|
164
|
+
@include disabled-link-button($theme);
|
|
164
165
|
}
|
|
165
166
|
}
|
|
166
167
|
}
|
|
@@ -207,25 +208,25 @@ matcha-tabs {
|
|
|
207
208
|
&[outline],
|
|
208
209
|
&[outline]:not([outline="false"]),
|
|
209
210
|
&[outline="true"] {
|
|
210
|
-
@include
|
|
211
|
+
@include disabled-outline-button($theme);
|
|
211
212
|
}
|
|
212
213
|
|
|
213
214
|
&[basic],
|
|
214
215
|
&[basic]:not([basic="false"]),
|
|
215
216
|
&[basic="true"] {
|
|
216
|
-
@include
|
|
217
|
+
@include disabled-basic-button($theme);
|
|
217
218
|
}
|
|
218
219
|
|
|
219
220
|
&[alpha],
|
|
220
221
|
&[alpha]:not([alpha="false"]),
|
|
221
222
|
&[alpha="true"] {
|
|
222
|
-
@include
|
|
223
|
+
@include disabled-alpha-button($theme);
|
|
223
224
|
}
|
|
224
225
|
|
|
225
226
|
&[link],
|
|
226
227
|
&[link]:not([link="false"]),
|
|
227
228
|
&[link="true"] {
|
|
228
|
-
@include
|
|
229
|
+
@include disabled-link-button($theme);
|
|
229
230
|
}
|
|
230
231
|
}
|
|
231
232
|
}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
@use "../abstracts/media-breakpoint" as *;
|
|
2
|
+
@use "../abstracts/elevation" as *;
|
|
1
3
|
// -----------------------------------------------------------------------------------------------------
|
|
2
4
|
// @Page Layouts Theming
|
|
3
5
|
// -----------------------------------------------------------------------------------------------------
|
package/main.scss
CHANGED
|
@@ -1,108 +1,198 @@
|
|
|
1
1
|
// TOKENS
|
|
2
|
-
@
|
|
3
|
-
@
|
|
4
|
-
@
|
|
5
|
-
@
|
|
6
|
-
@
|
|
7
|
-
@
|
|
8
|
-
@
|
|
9
|
-
@
|
|
10
|
-
@
|
|
11
|
-
@
|
|
12
|
-
@
|
|
2
|
+
@forward "./tokens/animations-tokens";
|
|
3
|
+
@use "./tokens/animations-tokens" as *;
|
|
4
|
+
@forward "./tokens/breakpoints-tokens";
|
|
5
|
+
@use "./tokens/breakpoints-tokens" as *;
|
|
6
|
+
@forward "./tokens/material-palette";
|
|
7
|
+
@use "./tokens/material-palette" as *; // paletas Material legadas ($mat-*, $blue-grey, …) — consumidas só pelo old API (palette/light-theme/dark-theme). A aposentar com o Track B.
|
|
8
|
+
@forward "./tokens/elevation-tokens";
|
|
9
|
+
@use "./tokens/elevation-tokens" as *;
|
|
10
|
+
@forward "./tokens/spacing-tokens";
|
|
11
|
+
@use "./tokens/spacing-tokens" as *;
|
|
12
|
+
@forward "./tokens/typography-tokens";
|
|
13
|
+
@use "./tokens/typography-tokens" as *;
|
|
14
|
+
@forward "./tokens/color-tokens";
|
|
15
|
+
@use "./tokens/color-tokens" as *; // cor — papéis por modo (synced do Figma via sync-tokens)
|
|
16
|
+
@forward "./tokens/static-tokens";
|
|
17
|
+
@use "./tokens/static-tokens" as *; // não-cor (gerado de global.json) — mixin matcha-static-tokens()
|
|
18
|
+
@forward "./tokens/emit-tokens";
|
|
19
|
+
@use "./tokens/emit-tokens" as *; // emissão — mixin matcha-css-custom-properties() (consome color-tokens + static-tokens)
|
|
20
|
+
@forward "./tokens/primitives";
|
|
21
|
+
@use "./tokens/primitives" as *; // matcha-primitives() — Camada 1: CSS vars de primitivas (--matcha-prim-*) em :root
|
|
22
|
+
@forward "./tokens/semantic-aliases";
|
|
23
|
+
@use "./tokens/semantic-aliases" as *; // $matcha-prim-aliases-{light,dark} — Camada 2: token semântico → primitiva (rota clássica emite var)
|
|
13
24
|
|
|
14
25
|
// FUNCTIONS
|
|
15
|
-
@
|
|
26
|
+
@forward "./abstracts/functions";
|
|
27
|
+
@use "./abstracts/functions" as *; // map-contrast() palette() map-color() light-theme() dark-theme() matcha-typography-level() matcha-typography-config() _matcha-get-type-value() matcha-font-size() matcha-line-height() matcha-font-weight() matcha-letter-spacing() matcha-font-family() _get-umbra-map() _get-penumbra-map() _get-ambient-map() elevation-transition-property-value()
|
|
16
28
|
|
|
17
29
|
// MIXINS
|
|
18
|
-
@
|
|
19
|
-
@
|
|
20
|
-
@
|
|
21
|
-
@
|
|
30
|
+
@forward "./abstracts/theme-api";
|
|
31
|
+
@use "./abstracts/theme-api" as *; // matcha-define-theme() matcha-build-color-map() matcha-role-tokens() matcha-text-on() matcha-contrast-on()
|
|
32
|
+
@forward "./abstracts/colors";
|
|
33
|
+
@use "./abstracts/colors" as *; // colors-classes-static() colors-classes-dynamic()
|
|
34
|
+
@forward "./abstracts/elevation";
|
|
35
|
+
@use "./abstracts/elevation" as *; // elevation() _matcha-theme-elevation() matcha-overridable-elevation() _matcha-theme-overridable-elevation() elevation-transition() elevation-theme()
|
|
36
|
+
@forward "./abstracts/media-breakpoint";
|
|
37
|
+
@use "./abstracts/media-breakpoint" as *; // media-breakpoint()
|
|
22
38
|
|
|
23
39
|
// TYPOGRAPHY
|
|
24
|
-
@
|
|
40
|
+
@forward "./abstracts/typography";
|
|
41
|
+
@use "./abstracts/typography" as *; // matcha-typography-font-shorthand() matcha-typography-level-to-styles() matcha-reset-typography()
|
|
25
42
|
|
|
26
43
|
// BASE
|
|
27
|
-
@
|
|
44
|
+
@forward "./base/reset";
|
|
45
|
+
@use "./base/reset" as *; // base-body-reset-theme()
|
|
28
46
|
|
|
29
47
|
// COMPONENTS
|
|
30
|
-
@
|
|
31
|
-
@
|
|
32
|
-
@
|
|
33
|
-
@
|
|
34
|
-
@
|
|
35
|
-
@
|
|
36
|
-
@
|
|
37
|
-
@
|
|
38
|
-
@
|
|
39
|
-
@
|
|
40
|
-
@
|
|
41
|
-
@
|
|
42
|
-
@
|
|
43
|
-
@
|
|
44
|
-
@
|
|
45
|
-
@
|
|
46
|
-
@
|
|
47
|
-
@
|
|
48
|
-
@
|
|
49
|
-
@
|
|
50
|
-
@
|
|
51
|
-
@
|
|
52
|
-
@
|
|
53
|
-
@
|
|
54
|
-
@
|
|
55
|
-
@
|
|
56
|
-
@
|
|
57
|
-
@
|
|
58
|
-
@
|
|
59
|
-
@
|
|
60
|
-
@
|
|
61
|
-
@
|
|
62
|
-
@
|
|
63
|
-
@
|
|
64
|
-
@
|
|
65
|
-
@
|
|
66
|
-
@
|
|
67
|
-
@
|
|
68
|
-
@
|
|
69
|
-
@
|
|
70
|
-
@
|
|
71
|
-
@
|
|
72
|
-
@
|
|
73
|
-
@
|
|
74
|
-
@
|
|
75
|
-
@
|
|
76
|
-
@
|
|
77
|
-
@
|
|
78
|
-
@
|
|
79
|
-
@
|
|
80
|
-
@
|
|
81
|
-
@
|
|
82
|
-
@
|
|
83
|
-
@
|
|
84
|
-
@
|
|
85
|
-
@
|
|
86
|
-
@
|
|
87
|
-
@
|
|
88
|
-
@
|
|
89
|
-
@
|
|
90
|
-
@
|
|
91
|
-
@
|
|
92
|
-
@
|
|
93
|
-
@
|
|
94
|
-
@
|
|
95
|
-
@
|
|
96
|
-
@
|
|
97
|
-
@
|
|
98
|
-
@
|
|
99
|
-
@
|
|
48
|
+
@forward "./components/matcha-audio-player";
|
|
49
|
+
@use "./components/matcha-audio-player" as *; //matcha-audio-player-theme($theme)
|
|
50
|
+
@forward "./components/matcha-autocomplete";
|
|
51
|
+
@use "./components/matcha-autocomplete" as *; // matcha-autocomplete-theme($theme)
|
|
52
|
+
@forward "./components/matcha-option";
|
|
53
|
+
@use "./components/matcha-option" as *; // matcha-option-theme($theme)
|
|
54
|
+
@forward "./components/matcha-panel";
|
|
55
|
+
@use "./components/matcha-panel" as *; // matcha-panel-theme($theme)
|
|
56
|
+
@forward "./components/matcha-select";
|
|
57
|
+
@use "./components/matcha-select" as *; // matcha-select-theme($theme)
|
|
58
|
+
@forward "./components/matcha-select-multiple";
|
|
59
|
+
@use "./components/matcha-select-multiple" as *; // matcha-select-multiple-theme($theme)
|
|
60
|
+
@forward "./components/matcha-buttons";
|
|
61
|
+
@use "./components/matcha-buttons" as *; // matcha-button-theme($theme)
|
|
62
|
+
@forward "./components/matcha-button-toggle";
|
|
63
|
+
@use "./components/matcha-button-toggle" as *; // matcha-button-toggle-theme($theme)
|
|
64
|
+
@forward "./components/matcha-cards";
|
|
65
|
+
@use "./components/matcha-cards" as *; // matcha-cards-theme($theme)
|
|
66
|
+
@forward "./components/matcha-color-pick";
|
|
67
|
+
@use "./components/matcha-color-pick" as *; // matcha-color-pick-theme($theme)
|
|
68
|
+
@forward "./components/matcha-draggable";
|
|
69
|
+
@use "./components/matcha-draggable" as *; // matcha-draggable-theme($theme)
|
|
70
|
+
@forward "./components/matcha-drop-list";
|
|
71
|
+
@use "./components/matcha-drop-list" as *; // matcha-drop-list-theme($theme)
|
|
72
|
+
@forward "./components/matcha-header";
|
|
73
|
+
@use "./components/matcha-header" as *; // matcha-header-theme($theme) — lib component DSV3
|
|
74
|
+
@forward "./components/app-page-header";
|
|
75
|
+
@use "./components/app-page-header" as *; // app-page-header-theme($theme) — page-header LEGACY da app
|
|
76
|
+
@forward "./components/matcha-horizontal-tree";
|
|
77
|
+
@use "./components/matcha-horizontal-tree" as *; // matcha-horizontal-tree-theme($theme)
|
|
78
|
+
@forward "./components/matcha-menu";
|
|
79
|
+
@use "./components/matcha-menu" as *; // matcha-menu-theme($theme)
|
|
80
|
+
@forward "./components/matcha-progress-bar";
|
|
81
|
+
@use "./components/matcha-progress-bar" as *; // matcha-progress-bar-theme($theme)
|
|
82
|
+
@forward "./components/matcha-scrollbar";
|
|
83
|
+
@use "./components/matcha-scrollbar" as *; // matcha-scrollbar-theme($theme)
|
|
84
|
+
@forward "./components/matcha-scrollbox-shadow";
|
|
85
|
+
@use "./components/matcha-scrollbox-shadow" as *; // matcha-scrollbox-shadow-theme($theme)
|
|
86
|
+
@forward "./components/matcha-skeleton";
|
|
87
|
+
@use "./components/matcha-skeleton" as *; // matcha-skeleton-theme($theme)
|
|
88
|
+
@forward "./components/matcha-table";
|
|
89
|
+
@use "./components/matcha-table" as *; // matcha-table-modern (canon DSV3 1:1 Figma)
|
|
90
|
+
@forward "./components/matcha-table-cell";
|
|
91
|
+
@use "./components/matcha-table-cell" as *; // matcha-table-cell-theme($theme)
|
|
92
|
+
@forward "./components/matcha-tooltip";
|
|
93
|
+
@use "./components/matcha-tooltip" as *; // matcha-tooltip-theme($theme)
|
|
94
|
+
@forward "./components/matcha-form-field";
|
|
95
|
+
@use "./components/matcha-form-field" as *;
|
|
96
|
+
@forward "./components/matcha-checkbox";
|
|
97
|
+
@use "./components/matcha-checkbox" as *;
|
|
98
|
+
@forward "./components/matcha-accordion";
|
|
99
|
+
@use "./components/matcha-accordion" as *;
|
|
100
|
+
@forward "./components/matcha-ripple";
|
|
101
|
+
@use "./components/matcha-ripple" as *; // matcha-ripple-theme($theme)
|
|
102
|
+
@forward "./components/matcha-spin";
|
|
103
|
+
@use "./components/matcha-spin" as *; // matcha-spin-theme($theme)
|
|
104
|
+
@forward "./components/matcha-spinner";
|
|
105
|
+
@use "./components/matcha-spinner" as *; // matcha-spinner-theme($theme)
|
|
106
|
+
@forward "./components/matcha-hint-text";
|
|
107
|
+
@use "./components/matcha-hint-text" as *; // matcha-hint-theme($theme)
|
|
108
|
+
@forward "./components/matcha-slide-toggle";
|
|
109
|
+
@use "./components/matcha-slide-toggle" as *; // matcha-slide-toggle($theme)
|
|
110
|
+
@forward "./components/matcha-radio";
|
|
111
|
+
@use "./components/matcha-radio" as *; // matcha-radio($theme)
|
|
112
|
+
@forward "./components/matcha-avatar";
|
|
113
|
+
@use "./components/matcha-avatar" as *; // matcha-avatar($theme)
|
|
114
|
+
@forward "./components/matcha-paginator";
|
|
115
|
+
@use "./components/matcha-paginator" as *; // matcha-paginator($theme)
|
|
116
|
+
@forward "./components/matcha-slider";
|
|
117
|
+
@use "./components/matcha-slider" as *; // matcha-slider($theme)
|
|
118
|
+
@forward "./components/matcha-divider";
|
|
119
|
+
@use "./components/matcha-divider" as *; // matcha-divider($theme)
|
|
120
|
+
@forward "./components/matcha-highlight";
|
|
121
|
+
@use "./components/matcha-highlight" as *; // matcha-highlight($theme)
|
|
122
|
+
@forward "./components/matcha-tabs";
|
|
123
|
+
@use "./components/matcha-tabs" as *; // matcha-tabs($theme)
|
|
124
|
+
@forward "./components/matcha-modal";
|
|
125
|
+
@use "./components/matcha-modal" as *; // matcha-modal($theme)
|
|
126
|
+
@forward "./components/matcha-drawer";
|
|
127
|
+
@use "./components/matcha-drawer" as *; // matcha-drawer-theme($theme)
|
|
128
|
+
@forward "./components/matcha-chip";
|
|
129
|
+
@use "./components/matcha-chip" as *; // matcha-chip($theme)
|
|
130
|
+
@forward "./components/matcha-status-pill";
|
|
131
|
+
@use "./components/matcha-status-pill" as *; // matcha-status-pill
|
|
132
|
+
@forward "./components/matcha-date";
|
|
133
|
+
@use "./components/matcha-date" as *; // matcha-date-theme($theme)
|
|
134
|
+
@forward "./components/matcha-calendar";
|
|
135
|
+
@use "./components/matcha-calendar" as *; // matcha-calendar-theme($theme)
|
|
136
|
+
@forward "./components/matcha-page-builder";
|
|
137
|
+
@use "./components/matcha-page-builder" as *; // matcha-page-builder($theme)
|
|
138
|
+
@forward "./components/matcha-snack-bar";
|
|
139
|
+
@use "./components/matcha-snack-bar" as *; // matcha-snack-bar-theme($theme)
|
|
140
|
+
@forward "./components/matcha-timepicker";
|
|
141
|
+
@use "./components/matcha-timepicker" as *; // matcha-timepicker-theme($theme)
|
|
142
|
+
@forward "./components/matcha-badge";
|
|
143
|
+
@use "./components/matcha-badge" as *; // matcha-badge-theme($theme)
|
|
144
|
+
@forward "./components/matcha-empty-state";
|
|
145
|
+
@use "./components/matcha-empty-state" as *; // matcha-empty-state-theme($theme)
|
|
146
|
+
@forward "./components/matcha-tree-view";
|
|
147
|
+
@use "./components/matcha-tree-view" as *; // matcha-tree-view-theme($theme)
|
|
148
|
+
@forward "./components/matcha-nav";
|
|
149
|
+
@use "./components/matcha-nav" as *; // matcha-nav-theme($theme)
|
|
150
|
+
@forward "./components/matcha-list";
|
|
151
|
+
@use "./components/matcha-list" as *; // matcha-list-theme($theme)
|
|
152
|
+
@forward "./components/matcha-icon";
|
|
153
|
+
@use "./components/matcha-icon" as *; // matcha-icon-theme($theme)
|
|
154
|
+
@forward "./components/matcha-text-editor";
|
|
155
|
+
@use "./components/matcha-text-editor" as *; // matcha-text-editor-theme($theme)
|
|
156
|
+
@forward "./components/matcha-chart-card";
|
|
157
|
+
@use "./components/matcha-chart-card" as *; // matcha-chart-card-theme($theme)
|
|
158
|
+
@forward "./components/matcha-crop";
|
|
159
|
+
@use "./components/matcha-crop" as *; // matcha-crop-theme($theme)
|
|
160
|
+
@forward "./components/matcha-footer";
|
|
161
|
+
@use "./components/matcha-footer" as *; // matcha-footer-theme($theme)
|
|
162
|
+
@forward "./components/matcha-file-uploader";
|
|
163
|
+
@use "./components/matcha-file-uploader" as *; // matcha-file-uploader-theme($theme)
|
|
164
|
+
@forward "./components/matcha-drop-image";
|
|
165
|
+
@use "./components/matcha-drop-image" as *; // matcha-drop-image-theme($theme)
|
|
166
|
+
@forward "./components/matcha-notification";
|
|
167
|
+
@use "./components/matcha-notification" as *; // matcha-notification-theme($theme)
|
|
168
|
+
@forward "./components/matcha-section";
|
|
169
|
+
@use "./components/matcha-section" as *; // matcha-section-theme($theme)
|
|
170
|
+
@forward "./components/matcha-form-section";
|
|
171
|
+
@use "./components/matcha-form-section" as *; // matcha-form-section-theme($theme)
|
|
172
|
+
@forward "./components/matcha-breadcrumb";
|
|
173
|
+
@use "./components/matcha-breadcrumb" as *; // matcha-breadcrumb-theme($theme)
|
|
174
|
+
@forward "./components/matcha-image";
|
|
175
|
+
@use "./components/matcha-image" as *; // matcha-image-theme($theme)
|
|
176
|
+
@forward "./components/matcha-stepper";
|
|
177
|
+
@use "./components/matcha-stepper" as *; // matcha-stepper-theme($theme)
|
|
178
|
+
@forward "./components/matcha-toolbar";
|
|
179
|
+
@use "./components/matcha-toolbar" as *; // matcha-toolbar-modern (canon DSV3 1:1 Figma 15866:92)
|
|
180
|
+
@forward "./components/matcha-command-palette";
|
|
181
|
+
@use "./components/matcha-command-palette" as *; // matcha-command-palette-theme($theme)
|
|
182
|
+
@forward "./components/matcha-profile-card";
|
|
183
|
+
@use "./components/matcha-profile-card" as *; // matcha-profile-card-theme($theme)
|
|
184
|
+
@forward "./components/matcha-flag";
|
|
185
|
+
@use "./components/matcha-flag" as *; // matcha-flag-theme($theme)
|
|
186
|
+
@forward "./components/matcha-emoji";
|
|
187
|
+
@use "./components/matcha-emoji" as *; // matcha-emoji-theme($theme)
|
|
100
188
|
|
|
101
189
|
// LAYOUT
|
|
102
|
-
@
|
|
190
|
+
@forward "./layout/matcha-page-layout";
|
|
191
|
+
@use "./layout/matcha-page-layout" as *; // matcha-page-layout-theme($theme)
|
|
103
192
|
|
|
104
193
|
// VENDORS
|
|
105
|
-
@
|
|
194
|
+
@forward "./vendors/charts";
|
|
195
|
+
@use "./vendors/charts" as *;
|
|
106
196
|
|
|
107
197
|
// ─── FONT LOADING — Manrope (SELF-HOSTED · zero dependência externa) ─────────
|
|
108
198
|
// REGRA DE OURO: fontes self-hosted, nunca @import/<link> do Google Fonts.
|
package/package.json
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
@use "../abstracts/functions" as *;
|
|
1
2
|
// =============================================================================
|
|
2
3
|
// MATCHA — TOKENS DE COR (papéis semânticos por modo) · SINCRONIZADO DO FIGMA
|
|
3
4
|
// =============================================================================
|
|
@@ -30,4 +30,4 @@ $elevation-transition-duration: 280ms !default;
|
|
|
30
30
|
$elevation-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1) !default;
|
|
31
31
|
$elevation-color: black !default;
|
|
32
32
|
$elevation-opacity: 1 !default;
|
|
33
|
-
$
|
|
33
|
+
$elevation-prefix: "elevation-z-";
|
package/tokens/_emit-tokens.scss
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
@use "elevation-tokens" as *;
|
|
2
|
+
@use "static-tokens" as *;
|
|
3
|
+
@use "color-tokens" as *;
|
|
4
|
+
@use "semantic-aliases" as *;
|
|
5
|
+
@use "material-palette" as *;
|
|
6
|
+
@use "../abstracts/theme-api" as *;
|
|
1
7
|
// =============================================================================
|
|
2
8
|
// MATCHA — EMISSÃO DOS TOKENS DO TEMA (CSS custom properties)
|
|
3
9
|
// =============================================================================
|
|
@@ -13,24 +19,8 @@
|
|
|
13
19
|
// =============================================================================
|
|
14
20
|
@use "sass:map";
|
|
15
21
|
|
|
16
|
-
//
|
|
17
|
-
//
|
|
18
|
-
// Usado pelo mixin canônico abaixo e por matcha-define-theme() (theme API).
|
|
19
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
20
|
-
// $aliases (opcional): token → "--matcha-prim-*". Quando presente p/ um token, emite
|
|
21
|
-
// `var(--matcha-prim-*)` (Camada 2 referencia a primitiva) em vez do hex literal.
|
|
22
|
-
// A rota clássica (matcha-css-custom-properties) passa $matcha-prim-aliases-{light,dark};
|
|
23
|
-
// matcha-define-theme() não passa (mantém hex computado dos seeds — whitelabel intacto).
|
|
24
|
-
@mixin matcha-emit-color-properties($colors, $aliases: ()) {
|
|
25
|
-
@each $token, $value in $colors {
|
|
26
|
-
$alias: map.get($aliases, $token);
|
|
27
|
-
@if $alias {
|
|
28
|
-
--matcha-color-#{$token}: var(#{$alias});
|
|
29
|
-
} @else {
|
|
30
|
-
--matcha-color-#{$token}: #{$value};
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
}
|
|
22
|
+
// matcha-emit-color-properties() foi MOVIDO para abstracts/_theme-api.scss (quebra o
|
|
23
|
+
// ciclo @use emit-tokens↔theme-api). Aqui fica disponível via `@use theme-api` (topo).
|
|
34
24
|
|
|
35
25
|
// ═══════════════════════════════════════════════════════════════════════════
|
|
36
26
|
// 4. MIXIN CANÔNICO — assinatura preservada (retrocompat).
|
package/vendors/charts.scss
CHANGED