@inchurch/matcha-theme 20.276.0 → 20.277.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/abstracts/_functions.scss +0 -26
  2. package/abstracts/_theme-api.scss +230 -0
  3. package/components/app-page-header.scss +16 -17
  4. package/components/matcha-accordion.scss +5 -6
  5. package/components/matcha-audio-player.scss +1 -2
  6. package/components/matcha-autocomplete.scss +10 -11
  7. package/components/matcha-avatar.scss +3 -3
  8. package/components/matcha-badge.scss +11 -11
  9. package/components/matcha-breadcrumb.scss +6 -7
  10. package/components/matcha-button-toggle.scss +2 -2
  11. package/components/matcha-buttons.scss +34 -34
  12. package/components/matcha-calendar.scss +31 -35
  13. package/components/matcha-cards.scss +31 -32
  14. package/components/matcha-chart-card.scss +5 -12
  15. package/components/matcha-checkbox.scss +13 -13
  16. package/components/matcha-chip.scss +2 -2
  17. package/components/matcha-color-pick.scss +1 -2
  18. package/components/matcha-command-palette.scss +17 -18
  19. package/components/matcha-crop.scss +0 -1
  20. package/components/matcha-date.scss +3 -3
  21. package/components/matcha-draggable.scss +4 -5
  22. package/components/matcha-drawer.scss +18 -28
  23. package/components/matcha-drop-list.scss +51 -52
  24. package/components/matcha-emoji.scss +2 -2
  25. package/components/{matcha-uploader.scss → matcha-file-uploader.scss} +185 -116
  26. package/components/matcha-footer.scss +3 -4
  27. package/components/matcha-form-field.scss +3 -3
  28. package/components/matcha-form-section.scss +5 -6
  29. package/components/matcha-header.scss +3 -4
  30. package/components/matcha-hint-text.scss +4 -4
  31. package/components/matcha-horizontal-tree.scss +15 -16
  32. package/components/matcha-icon.scss +27 -27
  33. package/components/matcha-image.scss +2 -3
  34. package/components/matcha-list.scss +11 -12
  35. package/components/matcha-menu.scss +2 -2
  36. package/components/matcha-modal.scss +5 -6
  37. package/components/matcha-nav.scss +16 -16
  38. package/components/matcha-notification.scss +3 -4
  39. package/components/matcha-option.scss +19 -0
  40. package/components/matcha-page-builder.scss +16 -16
  41. package/components/matcha-paginator.scss +6 -7
  42. package/components/matcha-panel.scss +4 -5
  43. package/components/matcha-profile-card.scss +3 -3
  44. package/components/matcha-progress-bar.scss +1 -1
  45. package/components/matcha-radio.scss +6 -6
  46. package/components/matcha-scrollbar.scss +1 -2
  47. package/components/matcha-scrollbox-shadow.scss +35 -37
  48. package/components/matcha-section.scss +5 -9
  49. package/components/matcha-select-multiple.scss +56 -0
  50. package/components/matcha-select.scss +7 -7
  51. package/components/matcha-skeleton.scss +6 -7
  52. package/components/matcha-slide-toggle.scss +33 -299
  53. package/components/matcha-slider.scss +5 -5
  54. package/components/matcha-snack-bar.scss +17 -18
  55. package/components/matcha-spin.scss +12 -103
  56. package/components/matcha-spinner.scss +1 -1
  57. package/components/matcha-stepper.scss +15 -16
  58. package/components/matcha-table.scss +14 -15
  59. package/components/matcha-tabs.scss +22 -24
  60. package/components/matcha-text-editor.scss +78 -78
  61. package/components/matcha-time.scss +2 -2
  62. package/components/matcha-toolbar.scss +1 -1
  63. package/components/matcha-tooltip.scss +14 -12
  64. package/main.scss +7 -2
  65. package/package.json +1 -1
  66. package/tokens/_color-tokens.scss +0 -3
  67. package/tokens/_css-custom-properties.scss +233 -179
  68. package/tokens/_primitives.scss +82 -0
  69. package/tokens/_semantic-aliases.scss +120 -0
@@ -1,7 +1,7 @@
1
1
  @use "sass:map";
2
2
 
3
3
  // =============================================================================
4
- // matcha-uploader.scss — File upload component (matcha/file-upload no Figma DSV3)
4
+ // matcha-file-uploader.scss — File upload component (matcha/file-uploader no Figma DSV3)
5
5
  //
6
6
  // 3 estados canon (16152:254):
7
7
  // Estado=Dropzone (16152:209) — área vazia com icon pill + title + hint + 2 botões
@@ -11,103 +11,106 @@
11
11
  // Width canon: 480px (component se adapta via max-width: 480px + width: 100%)
12
12
  // =============================================================================
13
13
 
14
- @mixin matcha-uploader-theme($theme) {
15
- $is-dark: map.get($theme, is-dark);
14
+ @mixin matcha-file-uploader-theme($theme) {
16
15
 
17
16
  // ── Dropzone ──
18
- .matcha-uploader-dropzone {
19
- background: var(--matcha-color-surface-background, var(--matcha-color-surface-bg, #{getBackground($theme)}));
20
- border-color: var(--matcha-color-surface-border, #{getGrey($theme)});
17
+ .matcha-file-uploader-dropzone {
18
+ background: var(--matcha-color-surface-background, var(--matcha-color-surface-bg));
19
+ border-color: var(--matcha-color-surface-border);
21
20
 
22
- &.matcha-uploader-dragover {
23
- background: var(--matcha-color-accent-alpha, #{getAccentAlpha($theme)});
24
- border-color: var(--matcha-color-accent, #{getAccent($theme)});
21
+ &.matcha-file-uploader-dragover {
22
+ background: var(--matcha-color-accent-alpha);
23
+ border-color: var(--matcha-color-accent);
25
24
  }
26
25
 
27
- &.matcha-uploader-disabled {
26
+ &.matcha-file-uploader-disabled {
28
27
  opacity: 0.5;
29
28
  cursor: not-allowed;
30
29
  pointer-events: none;
31
30
  }
32
31
  }
33
32
 
34
- .matcha-uploader-dropzone__icon-pill {
33
+ .matcha-file-uploader-dropzone__icon-pill {
35
34
  background: var(--matcha-color-interaction-disabled-bg, #282c34);
36
- color: var(--matcha-color-text-secondary, #{getBlueGrey($theme)});
35
+ color: var(--matcha-color-text-secondary);
37
36
  }
38
37
 
39
- .matcha-uploader-dropzone__title {
40
- color: var(--matcha-color-text-primary, #{getForeground($theme)});
38
+ .matcha-file-uploader-dropzone__title {
39
+ color: var(--matcha-color-text-primary);
41
40
  }
42
41
 
43
- .matcha-uploader-dropzone__optional {
42
+ .matcha-file-uploader-dropzone__optional {
44
43
  color: var(--matcha-color-interaction-disabled-fg, rgba(232, 234, 237, 0.38));
45
44
  }
46
45
 
47
- .matcha-uploader-dropzone__hint {
48
- color: var(--matcha-color-text-secondary, #{getBlueGrey($theme)});
49
- }
50
-
51
- // ── Buttons (dentro do dropzone) ──
52
- .matcha-uploader-btn--accent {
53
- border-color: var(--matcha-color-accent, #{getAccent($theme)});
54
- color: var(--matcha-color-text-primary, #{getForeground($theme)});
55
-
56
- &:hover:not([disabled]) {
57
- background: var(--matcha-color-accent-alpha, #{getAccentAlpha($theme)});
58
- }
59
-
60
- &[disabled] {
61
- opacity: 0.5;
62
- cursor: not-allowed;
63
- }
46
+ .matcha-file-uploader-dropzone__hint {
47
+ color: var(--matcha-color-text-secondary);
64
48
  }
65
49
 
66
50
  // ── File item ──
67
- .matcha-uploader-file {
68
- background: var(--matcha-color-surface-card, #{getSurface($theme)});
69
- border-color: var(--matcha-color-surface-border, #{getGrey($theme)});
51
+ .matcha-file-uploader-file {
52
+ background: var(--matcha-color-surface-card);
53
+ border-color: var(--matcha-color-surface-border);
70
54
  }
71
55
 
72
- .matcha-uploader-file__thumb {
73
- background: var(--matcha-color-elevation-surface-3, var(--matcha-color-surface-card, #{getSurface($theme)}));
74
- color: var(--matcha-color-text-muted, #{getBlueGrey($theme)});
56
+ .matcha-file-uploader-file__thumb {
57
+ background: var(--matcha-color-elevation-surface-3, var(--matcha-color-surface-card));
58
+ color: var(--matcha-color-text-muted);
75
59
  }
76
60
 
77
- .matcha-uploader-file__name {
78
- color: var(--matcha-color-text-primary, #{getForeground($theme)});
61
+ .matcha-file-uploader-file__name {
62
+ color: var(--matcha-color-text-primary);
79
63
  }
80
64
 
81
- .matcha-uploader-file__size {
82
- color: var(--matcha-color-text-secondary, #{getBlueGrey($theme)});
65
+ .matcha-file-uploader-file__size {
66
+ color: var(--matcha-color-text-secondary);
83
67
  }
84
68
 
85
- .matcha-uploader-file__progress {
86
- background: var(--matcha-color-surface-border, #{getGrey($theme)});
69
+ .matcha-file-uploader-file__progress {
70
+ background: var(--matcha-color-surface-border);
87
71
  }
88
72
 
89
- .matcha-uploader-file__progress-fill {
90
- background: var(--matcha-color-accent, #{getAccent($theme)});
73
+ .matcha-file-uploader-file__progress-fill {
74
+ background: var(--matcha-color-accent);
91
75
  }
92
76
 
93
- .matcha-uploader-file__percent {
94
- color: var(--matcha-color-text-secondary, #{getBlueGrey($theme)});
77
+ .matcha-file-uploader-file__percent {
78
+ color: var(--matcha-color-text-secondary);
95
79
  }
96
80
 
97
- .matcha-uploader-file__error-text {
98
- color: var(--matcha-color-danger, #{getDanger($theme)});
81
+ .matcha-file-uploader-file__error-text {
82
+ color: var(--matcha-color-danger);
99
83
  }
100
84
 
101
- .matcha-uploader-file__action {
102
- color: var(--matcha-color-text-secondary, #{getBlueGrey($theme)});
85
+ .matcha-file-uploader-file__action {
86
+ color: var(--matcha-color-text-secondary);
103
87
 
104
88
  &:hover {
105
89
  background: var(--matcha-color-surface-hover, transparent);
106
- color: var(--matcha-color-text-primary, #{getForeground($theme)});
90
+ color: var(--matcha-color-text-primary);
107
91
  }
108
92
 
109
- &.matcha-uploader-file__action--delete:hover {
110
- color: var(--matcha-color-danger, #{getDanger($theme)});
93
+ &.matcha-file-uploader-file__action--delete:hover {
94
+ color: var(--matcha-color-danger);
95
+ }
96
+ }
97
+
98
+ // ── Card layout (preview preenchido) ──
99
+ .matcha-file-uploader-card {
100
+ border-color: var(--matcha-color-surface-border);
101
+ }
102
+
103
+ // contain (logo/transparência): fundo neutro atrás da imagem inteira
104
+ .matcha-file-uploader-card--contain {
105
+ background: var(--matcha-color-surface-card);
106
+ }
107
+
108
+ .matcha-file-uploader-card__action {
109
+ background: var(--matcha-color-surface-card-alpha, var(--matcha-color-surface-card));
110
+ color: var(--matcha-color-text-primary);
111
+
112
+ &:hover {
113
+ background: var(--matcha-color-surface-card);
111
114
  }
112
115
  }
113
116
  }
@@ -117,13 +120,29 @@
117
120
  // ──────────────────────────────────────────────────────────────────────────────
118
121
 
119
122
  // Host — full-width; consumer aplica max-width externamente se quiser cap
120
- .matcha-uploader {
123
+ .matcha-file-uploader {
121
124
  display: block;
122
125
  width: 100%;
123
126
  }
124
127
 
125
- // ── Dropzone (Estado=Dropzone — Figma 16152:209) ─────────────────────────────
126
- .matcha-uploader-dropzone {
128
+ // ── Empty state wrapper (dropzone + ação secundária FORA do drop) ──────────
129
+ .matcha-file-uploader-empty {
130
+ display: flex;
131
+ flex-direction: column;
132
+ gap: var(--matcha-space-150, 12px);
133
+ width: 100%;
134
+ }
135
+
136
+ // Ação secundária (Gabarito, Tirar foto, etc.) — centrada abaixo do box
137
+ .matcha-file-uploader-secondary {
138
+ display: flex;
139
+ justify-content: center;
140
+
141
+ &:empty { display: none; } // sem slot projetado → não ocupa espaço
142
+ }
143
+
144
+ // ── Dropzone box (Estado=Dropzone — Figma 16152:209) — a zona INTEIRA é o alvo
145
+ .matcha-file-uploader-dropzone {
127
146
  display: flex;
128
147
  flex-direction: column;
129
148
  align-items: center;
@@ -135,10 +154,15 @@
135
154
  cursor: pointer;
136
155
  transition: background-color var(--matcha-duration-instant, 80ms) linear,
137
156
  border-color var(--matcha-duration-instant, 80ms) linear;
157
+
158
+ &:focus-visible {
159
+ outline: var(--matcha-border-thin, 2px) solid var(--matcha-color-accent, #009400);
160
+ outline-offset: 2px;
161
+ }
138
162
  }
139
163
 
140
164
  // Icon pill (bg interaction/disabled-bg + padding 40h/16v · icon 24×24)
141
- .matcha-uploader-dropzone__icon-pill {
165
+ .matcha-file-uploader-dropzone__icon-pill {
142
166
  display: inline-flex;
143
167
  align-items: center;
144
168
  justify-content: center;
@@ -154,7 +178,7 @@
154
178
  }
155
179
 
156
180
  // Text block — column gap 4px, center
157
- .matcha-uploader-dropzone__text {
181
+ .matcha-file-uploader-dropzone__text {
158
182
  display: flex;
159
183
  flex-direction: column;
160
184
  align-items: center;
@@ -164,7 +188,7 @@
164
188
  }
165
189
 
166
190
  // Title row (inline: title + optional)
167
- .matcha-uploader-dropzone__title-row {
191
+ .matcha-file-uploader-dropzone__title-row {
168
192
  display: inline-flex;
169
193
  align-items: center;
170
194
  justify-content: center;
@@ -172,21 +196,21 @@
172
196
  white-space: nowrap;
173
197
  }
174
198
 
175
- .matcha-uploader-dropzone__title {
199
+ .matcha-file-uploader-dropzone__title {
176
200
  font-family: var(--matcha-font-family);
177
201
  font-size: var(--matcha-text-label-md, 14px);
178
202
  font-weight: var(--matcha-weight-medium, 500);
179
203
  line-height: var(--matcha-leading-label-md, 20px);
180
204
  }
181
205
 
182
- .matcha-uploader-dropzone__optional {
206
+ .matcha-file-uploader-dropzone__optional {
183
207
  font-family: var(--matcha-font-family);
184
208
  font-size: var(--matcha-text-label-md, 14px);
185
209
  font-weight: var(--matcha-weight-medium, 500);
186
210
  line-height: var(--matcha-leading-label-md, 20px);
187
211
  }
188
212
 
189
- .matcha-uploader-dropzone__hint {
213
+ .matcha-file-uploader-dropzone__hint {
190
214
  margin: 0;
191
215
  font-family: var(--matcha-font-family);
192
216
  font-size: var(--matcha-text-body-sm, 12px);
@@ -196,42 +220,13 @@
196
220
  }
197
221
 
198
222
  // Actions row (slot secondary + select arquivo)
199
- .matcha-uploader-dropzone__actions {
200
- display: flex;
201
- gap: var(--matcha-space-100, 8px);
202
- align-items: center;
203
- justify-content: center;
204
- flex-wrap: wrap;
205
- }
206
-
207
- // Botão accent outline (Selecionar arquivo)
208
- .matcha-uploader-btn {
209
- display: inline-flex;
210
- align-items: center;
211
- justify-content: center;
212
- gap: var(--matcha-space-050, 4px);
213
- height: 32px;
214
- padding: 0 var(--matcha-space-100, 8px);
215
- background: transparent;
216
- border: var(--matcha-border-thin, 2px) solid transparent;
217
- border-radius: var(--matcha-radius-lg, 8px);
218
- cursor: pointer;
219
- font-family: var(--matcha-font-family);
220
- font-size: var(--matcha-text-label-sm, 12px);
221
- font-weight: var(--matcha-weight-medium, 500);
222
- line-height: var(--matcha-leading-label-sm, 16px);
223
- letter-spacing: 0.2px;
224
- white-space: nowrap;
225
- transition: background-color var(--matcha-duration-instant, 80ms) linear;
226
- }
227
-
228
223
  // Hidden input
229
- .matcha-uploader-input {
224
+ .matcha-file-uploader-input {
230
225
  display: none;
231
226
  }
232
227
 
233
228
  // ── File Item — Estados Enviando (16152:227) e Completo (16152:242) ──────────
234
- .matcha-uploader-file {
229
+ .matcha-file-uploader-file {
235
230
  display: flex;
236
231
  align-items: center;
237
232
  gap: var(--matcha-space-200, 16px);
@@ -241,19 +236,19 @@
241
236
  width: 100%;
242
237
 
243
238
  // Enviando: padding 20/24 (mais respiro vs. Figma original 16)
244
- &.matcha-uploader-file--uploading {
239
+ &.matcha-file-uploader-file--uploading {
245
240
  padding: var(--matcha-space-250, 20px) var(--matcha-space-300, 24px);
246
241
  }
247
242
 
248
243
  // Completo/Erro: padding 20/24 (mais respiro vs. Figma original 12/16)
249
- &.matcha-uploader-file--completed,
250
- &.matcha-uploader-file--error {
244
+ &.matcha-file-uploader-file--completed,
245
+ &.matcha-file-uploader-file--error {
251
246
  padding: var(--matcha-space-250, 20px) var(--matcha-space-300, 24px);
252
247
  }
253
248
  }
254
249
 
255
250
  // Thumbnail 64×36 (16:9 · radius lg)
256
- .matcha-uploader-file__thumb {
251
+ .matcha-file-uploader-file__thumb {
257
252
  display: flex;
258
253
  align-items: center;
259
254
  justify-content: center;
@@ -277,7 +272,7 @@
277
272
  }
278
273
 
279
274
  // Info column (flex-1)
280
- .matcha-uploader-file__info {
275
+ .matcha-file-uploader-file__info {
281
276
  display: flex;
282
277
  flex-direction: column;
283
278
  flex: 1 1 0;
@@ -285,19 +280,19 @@
285
280
  overflow: hidden;
286
281
 
287
282
  // Enviando: gap 6 (entre nome e progress bar)
288
- .matcha-uploader-file--uploading & {
283
+ .matcha-file-uploader-file--uploading & {
289
284
  gap: var(--matcha-space-075, 6px);
290
285
  }
291
286
 
292
287
  // Completo: gap 4 (entre nome e size)
293
- .matcha-uploader-file--completed &,
294
- .matcha-uploader-file--error & {
288
+ .matcha-file-uploader-file--completed &,
289
+ .matcha-file-uploader-file--error & {
295
290
  gap: var(--matcha-space-050, 4px);
296
291
  }
297
292
  }
298
293
 
299
294
  // File name — Manrope Medium 13/19 letter 0.2 (text/button-sm)
300
- .matcha-uploader-file__name {
295
+ .matcha-file-uploader-file__name {
301
296
  font-family: var(--matcha-font-family);
302
297
  font-size: var(--matcha-text-label-sm, 12px);
303
298
  font-weight: var(--matcha-weight-medium, 500);
@@ -309,7 +304,7 @@
309
304
  }
310
305
 
311
306
  // File size — Manrope Regular 11/14 letter 0.3 (text/caption)
312
- .matcha-uploader-file__size {
307
+ .matcha-file-uploader-file__size {
313
308
  font-family: var(--matcha-font-family);
314
309
  font-size: var(--matcha-text-p-tiny, 11px);
315
310
  font-weight: var(--matcha-weight-regular, 400);
@@ -318,7 +313,7 @@
318
313
  }
319
314
 
320
315
  // Error text — body-sm danger
321
- .matcha-uploader-file__error-text {
316
+ .matcha-file-uploader-file__error-text {
322
317
  font-family: var(--matcha-font-family);
323
318
  font-size: var(--matcha-text-body-sm, 12px);
324
319
  font-weight: var(--matcha-weight-regular, 400);
@@ -326,21 +321,21 @@
326
321
  }
327
322
 
328
323
  // ── Progress bar (height 4px · radius sm) ─────────────────────────────────────
329
- .matcha-uploader-file__progress {
324
+ .matcha-file-uploader-file__progress {
330
325
  width: 100%;
331
326
  height: 4px;
332
327
  border-radius: var(--matcha-radius-sm, 2px);
333
328
  overflow: hidden;
334
329
  }
335
330
 
336
- .matcha-uploader-file__progress-fill {
331
+ .matcha-file-uploader-file__progress-fill {
337
332
  height: 100%;
338
333
  border-radius: var(--matcha-radius-sm, 2px);
339
334
  transition: width var(--matcha-duration-moderate, 300ms) ease;
340
335
  }
341
336
 
342
337
  // Percent label — body-sm text-secondary
343
- .matcha-uploader-file__percent {
338
+ .matcha-file-uploader-file__percent {
344
339
  font-family: var(--matcha-font-family);
345
340
  font-size: var(--matcha-text-body-sm, 12px);
346
341
  font-weight: var(--matcha-weight-regular, 400);
@@ -349,7 +344,7 @@
349
344
  }
350
345
 
351
346
  // Cancel/Delete action button — 20×20 (icon size + bg transparent + hover)
352
- .matcha-uploader-file__action {
347
+ .matcha-file-uploader-file__action {
353
348
  display: inline-flex;
354
349
  align-items: center;
355
350
  justify-content: center;
@@ -371,23 +366,97 @@
371
366
  }
372
367
  }
373
368
 
369
+ // ── Card layout — preview preenchido 16:9 + ações no hover (Estado=Drop filled) ──
370
+ .matcha-file-uploader-card {
371
+ position: relative;
372
+ width: 100%;
373
+ margin-top: var(--matcha-space-100, 8px);
374
+ border: var(--matcha-border-hairline, 1px) solid transparent;
375
+ border-radius: var(--matcha-radius-lg, 8px);
376
+ overflow: hidden;
377
+ aspect-ratio: 16 / 9; // fallback; sobrescrito por [style.aspect-ratio]="previewRatio"
378
+ }
379
+
380
+ .matcha-file-uploader-card__img {
381
+ display: block;
382
+ width: 100%;
383
+ height: 100%;
384
+ object-fit: cover; // sobrescrito por [style.object-fit]="previewFit"
385
+ }
386
+
387
+ .matcha-file-uploader-card__actions {
388
+ position: absolute;
389
+ top: var(--matcha-space-100, 8px);
390
+ right: var(--matcha-space-100, 8px);
391
+ display: flex;
392
+ gap: var(--matcha-space-100, 8px);
393
+ opacity: 0;
394
+ transition: opacity var(--matcha-duration-instant, 80ms) linear;
395
+ }
396
+
397
+ .matcha-file-uploader-card:hover .matcha-file-uploader-card__actions,
398
+ .matcha-file-uploader-card:focus-within .matcha-file-uploader-card__actions {
399
+ opacity: 1;
400
+ }
401
+
402
+ .matcha-file-uploader-card__action {
403
+ display: inline-flex;
404
+ align-items: center;
405
+ justify-content: center;
406
+ width: 32px;
407
+ height: 32px;
408
+ padding: 0;
409
+ border: none;
410
+ border-radius: var(--matcha-radius-pill, 9999px);
411
+ cursor: pointer;
412
+ backdrop-filter: blur(8px);
413
+ transition: background-color var(--matcha-duration-instant, 80ms) linear;
414
+
415
+ matcha-icon {
416
+ --matcha-icon-size: 18px;
417
+ width: 18px;
418
+ height: 18px;
419
+ }
420
+ }
421
+
422
+ // ── Cropper inline (modo crop: imagem única) ──────────────────────────────
423
+ .matcha-file-uploader-cropper {
424
+ display: flex;
425
+ flex-direction: column;
426
+ gap: var(--matcha-space-150, 12px);
427
+ margin-top: var(--matcha-space-100, 8px);
428
+ }
429
+
430
+ .matcha-file-uploader-cropper matcha-crop {
431
+ display: block;
432
+ width: 100%;
433
+ min-height: 280px;
434
+ }
435
+
436
+ .matcha-file-uploader-cropper__actions {
437
+ display: flex;
438
+ justify-content: flex-end;
439
+ gap: var(--matcha-space-100, 8px);
440
+ }
441
+
374
442
  // ── Responsive ───────────────────────────────────────────────────────────────
375
443
  @include media-breakpoint('xs') {
376
- .matcha-uploader-dropzone {
444
+ .matcha-file-uploader-dropzone {
377
445
  padding: var(--matcha-space-300, 24px) var(--matcha-space-200, 16px);
378
446
  }
379
447
 
380
- .matcha-uploader-dropzone__icon-pill {
448
+ .matcha-file-uploader-dropzone__icon-pill {
381
449
  padding: var(--matcha-space-150, 12px) var(--matcha-space-400, 32px);
382
450
  }
383
451
  }
384
452
 
385
453
  // ── Reduced motion ───────────────────────────────────────────────────────────
386
454
  @media (prefers-reduced-motion: reduce) {
387
- .matcha-uploader-dropzone,
388
- .matcha-uploader-file__progress-fill,
389
- .matcha-uploader-btn,
390
- .matcha-uploader-file__action {
455
+ .matcha-file-uploader-dropzone,
456
+ .matcha-file-uploader-file__progress-fill,
457
+ .matcha-file-uploader-file__action,
458
+ .matcha-file-uploader-card__actions,
459
+ .matcha-file-uploader-card__action {
391
460
  transition: none;
392
461
  }
393
462
  }
@@ -12,12 +12,11 @@
12
12
  // =============================================================================
13
13
 
14
14
  @mixin matcha-footer-theme($theme) {
15
- $is-dark: map.get($theme, is-dark);
16
15
 
17
16
  .matcha-footer {
18
- background: var(--matcha-color-surface-card, #{getSurface($theme)});
19
- border-top: var(--matcha-border-hairline, 1px) solid var(--matcha-color-surface-border, #{getGrey($theme)});
20
- color: var(--matcha-color-text-label, #{getBlueGrey($theme)});
17
+ background: var(--matcha-color-surface-card);
18
+ border-top: var(--matcha-border-hairline, 1px) solid var(--matcha-color-surface-border);
19
+ color: var(--matcha-color-text-label);
21
20
  }
22
21
  }
23
22
 
@@ -516,16 +516,16 @@ matcha-form-field[readonly="true"] .matcha-form-field {
516
516
  input[type="date"],
517
517
  input[type="time"],
518
518
  textarea {
519
- color: var(--matcha-color-text-primary, #{getForeground($theme)});
519
+ color: var(--matcha-color-text-primary);
520
520
 
521
521
  &::placeholder {
522
- color: var(--matcha-color-text-placeholder, #{getGrey($theme)});
522
+ color: var(--matcha-color-text-placeholder);
523
523
  }
524
524
  }
525
525
 
526
526
  input:disabled,
527
527
  textarea:disabled {
528
- color: var(--matcha-color-interaction-disabled-fg, #{getDisabledContrast($theme)});
528
+ color: var(--matcha-color-interaction-disabled-fg);
529
529
  }
530
530
 
531
531
  // Disabled: muted text, cursor not-allowed (sinalização inequívoca de "não pode interagir").
@@ -9,31 +9,30 @@
9
9
  // =============================================================================
10
10
 
11
11
  @mixin matcha-form-section-theme($theme) {
12
- $is-dark: map.get($theme, is-dark);
13
12
 
14
13
  // ── Section (accent bar + title) ──
15
14
  .matcha-form-section {
16
15
  .matcha-form-section__bar {
17
- background: var(--matcha-color-accent, #{getAccent($theme)});
16
+ background: var(--matcha-color-accent);
18
17
  }
19
18
 
20
19
  .matcha-form-section__title {
21
- color: var(--matcha-color-fg, #{getForeground($theme)});
20
+ color: var(--matcha-color-fg);
22
21
  }
23
22
 
24
23
  .matcha-form-section__description {
25
- color: var(--matcha-color-text-secondary, #{getBlueGrey($theme)});
24
+ color: var(--matcha-color-text-secondary);
26
25
  }
27
26
  }
28
27
 
29
28
  // ── Sub-section (bullet + title) ──
30
29
  .matcha-form-subsection {
31
30
  .matcha-form-subsection__bullet {
32
- background: var(--matcha-color-fg, #{getForeground($theme)});
31
+ background: var(--matcha-color-fg);
33
32
  }
34
33
 
35
34
  .matcha-form-subsection__title {
36
- color: var(--matcha-color-fg, #{getForeground($theme)});
35
+ color: var(--matcha-color-fg);
37
36
  }
38
37
  }
39
38
  }
@@ -11,16 +11,15 @@
11
11
  // =============================================================================
12
12
 
13
13
  @mixin matcha-header-theme($theme) {
14
- $is-dark: map.get($theme, is-dark);
15
14
 
16
15
  matcha-header {
17
- background: var(--matcha-color-surface-card, #{getSurface($theme)});
16
+ background: var(--matcha-color-surface-card);
18
17
  // Border uses interaction/disabled-border (1:1 Figma matcha/header 15892:157):
19
18
  // dark = rgba(232,234,237,0.38); light = #c8d2ca. Semanticamente atípico —
20
19
  // o token canônico de "divisor de chrome" seria surface/border, mas Figma
21
20
  // bind explicitamente este. Trocar de volta se for revertido lá.
22
- border-bottom: var(--matcha-border-hairline, 1px) solid var(--matcha-color-interaction-disabled-border, #{getGrey($theme)});
23
- color: var(--matcha-color-text-primary, #{getForeground($theme)});
21
+ border-bottom: var(--matcha-border-hairline, 1px) solid var(--matcha-color-interaction-disabled-border);
22
+ color: var(--matcha-color-text-primary);
24
23
  }
25
24
  }
26
25
 
@@ -48,19 +48,19 @@
48
48
  @include generate-matcha-hint-size-classes($helper-breakpoints);
49
49
 
50
50
  &[type="error"] {
51
- color: var(--matcha-color-danger, #{getDanger($theme)});
51
+ color: var(--matcha-color-danger);
52
52
  }
53
53
 
54
54
  &[type="warning"] {
55
- color: var(--matcha-color-warn, #{getWarn($theme)});
55
+ color: var(--matcha-color-warn);
56
56
  }
57
57
 
58
58
  &[type="info"] {
59
- color: var(--matcha-color-info, #{getInfo($theme)});
59
+ color: var(--matcha-color-info);
60
60
  }
61
61
 
62
62
  &[type="success"] {
63
- color: var(--matcha-color-success, #{getSuccess($theme)});
63
+ color: var(--matcha-color-success);
64
64
  }
65
65
  }
66
66
  }