@inchurch/matcha-theme 20.0.11 → 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 (116) hide show
  1. package/abstracts/_colors.scss +404 -404
  2. package/abstracts/_elevation.scss +102 -102
  3. package/abstracts/_functions.scss +1186 -1212
  4. package/abstracts/_media-breakpoint.scss +23 -23
  5. package/abstracts/_theme-api.scss +230 -0
  6. package/abstracts/_typography.scss +127 -127
  7. package/base/_reset.scss +438 -438
  8. package/components/app-page-header.scss +259 -0
  9. package/components/matcha-accordion.scss +293 -157
  10. package/components/matcha-audio-player.scss +1 -2
  11. package/components/matcha-autocomplete.scss +10 -11
  12. package/components/matcha-avatar.scss +173 -33
  13. package/components/matcha-badge.scss +15 -15
  14. package/components/matcha-breadcrumb.scss +231 -126
  15. package/components/matcha-button-toggle.scss +46 -2
  16. package/components/matcha-buttons.scss +908 -784
  17. package/components/matcha-calendar.scss +99 -35
  18. package/components/matcha-cards.scss +58 -33
  19. package/components/matcha-chart-card.scss +5 -12
  20. package/components/matcha-checkbox.scss +191 -490
  21. package/components/matcha-chip.scss +297 -212
  22. package/components/matcha-color-pick.scss +1 -2
  23. package/components/matcha-command-palette.scss +290 -63
  24. package/components/matcha-crop.scss +406 -172
  25. package/components/matcha-date.scss +81 -81
  26. package/components/matcha-divider.scss +86 -31
  27. package/components/matcha-draggable.scss +4 -5
  28. package/components/matcha-drawer.scss +207 -66
  29. package/components/matcha-drop-image.scss +14 -0
  30. package/components/matcha-drop-list.scss +87 -47
  31. package/components/matcha-emoji.scss +2 -2
  32. package/components/matcha-empty-state.scss +195 -83
  33. package/components/matcha-file-uploader.scss +462 -0
  34. package/components/matcha-flag.scss +93 -52
  35. package/components/matcha-footer.scss +67 -164
  36. package/components/matcha-form-field.scss +55 -3
  37. package/components/matcha-form-section.scss +100 -101
  38. package/components/matcha-header.scss +134 -325
  39. package/components/matcha-highlight.scss +65 -197
  40. package/components/matcha-hint-text.scss +25 -4
  41. package/components/matcha-horizontal-tree.scss +316 -317
  42. package/components/matcha-icon.scss +37 -45
  43. package/components/matcha-image.scss +2 -3
  44. package/components/matcha-list.scss +14 -15
  45. package/components/matcha-menu.scss +15 -2
  46. package/components/matcha-modal.scss +59 -86
  47. package/components/matcha-nav.scss +362 -231
  48. package/components/matcha-notification.scss +412 -197
  49. package/components/matcha-option.scss +98 -23
  50. package/components/matcha-page-builder.scss +16 -16
  51. package/components/matcha-paginator.scss +688 -235
  52. package/components/matcha-panel.scss +42 -27
  53. package/components/matcha-profile-card.scss +50 -50
  54. package/components/matcha-progress-bar.scss +257 -153
  55. package/components/matcha-radio.scss +244 -452
  56. package/components/matcha-scrollbar.scss +1 -2
  57. package/components/matcha-scrollbox-shadow.scss +120 -122
  58. package/components/matcha-section.scss +5 -9
  59. package/components/matcha-select-multiple.scss +56 -0
  60. package/components/matcha-select.scss +10 -10
  61. package/components/matcha-skeleton.scss +24 -7
  62. package/components/matcha-slide-toggle.scss +80 -301
  63. package/components/matcha-slider.scss +174 -77
  64. package/components/matcha-snack-bar.scss +123 -131
  65. package/components/matcha-spin.scss +12 -103
  66. package/components/matcha-spinner.scss +76 -57
  67. package/components/matcha-status-pill.scss +82 -0
  68. package/components/matcha-stepper.scss +376 -177
  69. package/components/matcha-table.scss +568 -785
  70. package/components/matcha-tabs.scss +622 -469
  71. package/components/matcha-text-editor.scss +78 -78
  72. package/components/matcha-time.scss +2 -2
  73. package/components/matcha-toolbar.scss +359 -206
  74. package/components/matcha-tooltip.scss +158 -62
  75. package/components/matcha-tree-view.scss +189 -0
  76. package/fonts/manrope/manrope-latin-ext.woff2 +0 -0
  77. package/fonts/manrope/manrope-latin.woff2 +0 -0
  78. package/layout/matcha-page-layout.scss +4 -4
  79. package/main.scss +237 -265
  80. package/package.json +1 -1
  81. package/tokens/_animations-tokens.scss +37 -37
  82. package/tokens/_breakpoints-tokens.scss +35 -26
  83. package/tokens/_color-tokens.scss +1149 -1152
  84. package/tokens/_css-custom-properties.scss +704 -568
  85. package/tokens/_primitives.scss +82 -0
  86. package/tokens/_semantic-aliases.scss +120 -0
  87. package/tokens/_spacing-tokens.scss +94 -94
  88. package/vendors/angular-editor.scss +56 -56
  89. package/vendors/angular-material-fixes.scss +297 -297
  90. package/vendors/charts.scss +92 -92
  91. package/vendors/ng5-slider.scss +56 -56
  92. package/vendors/ngx-material-timepicker.scss +50 -50
  93. package/components/matcha-uploader.scss +0 -215
  94. package/fonts/CircularStd-Black.eot +0 -0
  95. package/fonts/CircularStd-Black.svg +0 -3426
  96. package/fonts/CircularStd-Black.ttf +0 -0
  97. package/fonts/CircularStd-Black.woff +0 -0
  98. package/fonts/CircularStd-Black.woff2 +0 -0
  99. package/fonts/CircularStd-Bold.eot +0 -0
  100. package/fonts/CircularStd-Bold.otf +0 -0
  101. package/fonts/CircularStd-Bold.svg +0 -13532
  102. package/fonts/CircularStd-Bold.ttf +0 -0
  103. package/fonts/CircularStd-Bold.woff +0 -0
  104. package/fonts/CircularStd-Bold.woff2 +0 -0
  105. package/fonts/CircularStd-Medium.eot +0 -0
  106. package/fonts/CircularStd-Medium.otf +0 -0
  107. package/fonts/CircularStd-Medium.svg +0 -13511
  108. package/fonts/CircularStd-Medium.ttf +0 -0
  109. package/fonts/CircularStd-Medium.woff +0 -0
  110. package/fonts/CircularStd-Medium.woff2 +0 -0
  111. package/fonts/CircularStd-Regular.eot +0 -0
  112. package/fonts/CircularStd-Regular.otf +0 -0
  113. package/fonts/CircularStd-Regular.svg +0 -2378
  114. package/fonts/CircularStd-Regular.ttf +0 -0
  115. package/fonts/CircularStd-Regular.woff +0 -0
  116. package/fonts/CircularStd-Regular.woff2 +0 -0
@@ -0,0 +1,462 @@
1
+ @use "sass:map";
2
+
3
+ // =============================================================================
4
+ // matcha-file-uploader.scss — File upload component (matcha/file-uploader no Figma DSV3)
5
+ //
6
+ // 3 estados canon (16152:254):
7
+ // Estado=Dropzone (16152:209) — área vazia com icon pill + title + hint + 2 botões
8
+ // Estado=Enviando (16152:227) — thumb 64×36 + nome + progress + % + cancel
9
+ // Estado=Completo (16152:242) — thumb 64×36 + nome + size + delete (trash)
10
+ //
11
+ // Width canon: 480px (component se adapta via max-width: 480px + width: 100%)
12
+ // =============================================================================
13
+
14
+ @mixin matcha-file-uploader-theme($theme) {
15
+
16
+ // ── Dropzone ──
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);
20
+
21
+ &.matcha-file-uploader-dragover {
22
+ background: var(--matcha-color-accent-alpha);
23
+ border-color: var(--matcha-color-accent);
24
+ }
25
+
26
+ &.matcha-file-uploader-disabled {
27
+ opacity: 0.5;
28
+ cursor: not-allowed;
29
+ pointer-events: none;
30
+ }
31
+ }
32
+
33
+ .matcha-file-uploader-dropzone__icon-pill {
34
+ background: var(--matcha-color-interaction-disabled-bg, #282c34);
35
+ color: var(--matcha-color-text-secondary);
36
+ }
37
+
38
+ .matcha-file-uploader-dropzone__title {
39
+ color: var(--matcha-color-text-primary);
40
+ }
41
+
42
+ .matcha-file-uploader-dropzone__optional {
43
+ color: var(--matcha-color-interaction-disabled-fg, rgba(232, 234, 237, 0.38));
44
+ }
45
+
46
+ .matcha-file-uploader-dropzone__hint {
47
+ color: var(--matcha-color-text-secondary);
48
+ }
49
+
50
+ // ── File item ──
51
+ .matcha-file-uploader-file {
52
+ background: var(--matcha-color-surface-card);
53
+ border-color: var(--matcha-color-surface-border);
54
+ }
55
+
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);
59
+ }
60
+
61
+ .matcha-file-uploader-file__name {
62
+ color: var(--matcha-color-text-primary);
63
+ }
64
+
65
+ .matcha-file-uploader-file__size {
66
+ color: var(--matcha-color-text-secondary);
67
+ }
68
+
69
+ .matcha-file-uploader-file__progress {
70
+ background: var(--matcha-color-surface-border);
71
+ }
72
+
73
+ .matcha-file-uploader-file__progress-fill {
74
+ background: var(--matcha-color-accent);
75
+ }
76
+
77
+ .matcha-file-uploader-file__percent {
78
+ color: var(--matcha-color-text-secondary);
79
+ }
80
+
81
+ .matcha-file-uploader-file__error-text {
82
+ color: var(--matcha-color-danger);
83
+ }
84
+
85
+ .matcha-file-uploader-file__action {
86
+ color: var(--matcha-color-text-secondary);
87
+
88
+ &:hover {
89
+ background: var(--matcha-color-surface-hover, transparent);
90
+ color: var(--matcha-color-text-primary);
91
+ }
92
+
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);
114
+ }
115
+ }
116
+ }
117
+
118
+ // ──────────────────────────────────────────────────────────────────────────────
119
+ // LAYOUT — independente de tema
120
+ // ──────────────────────────────────────────────────────────────────────────────
121
+
122
+ // Host — full-width; consumer aplica max-width externamente se quiser cap
123
+ .matcha-file-uploader {
124
+ display: block;
125
+ width: 100%;
126
+ }
127
+
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 {
146
+ display: flex;
147
+ flex-direction: column;
148
+ align-items: center;
149
+ justify-content: center;
150
+ gap: var(--matcha-space-200, 16px);
151
+ padding: var(--matcha-space-400, 32px) var(--matcha-space-300, 24px);
152
+ border: var(--matcha-border-thin, 2px) dashed transparent;
153
+ border-radius: var(--matcha-radius-lg, 8px);
154
+ cursor: pointer;
155
+ transition: background-color var(--matcha-duration-instant, 80ms) linear,
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
+ }
162
+ }
163
+
164
+ // Icon pill (bg interaction/disabled-bg + padding 40h/16v · icon 24×24)
165
+ .matcha-file-uploader-dropzone__icon-pill {
166
+ display: inline-flex;
167
+ align-items: center;
168
+ justify-content: center;
169
+ padding: var(--matcha-space-200, 16px) var(--matcha-space-500, 40px);
170
+ border-radius: var(--matcha-radius-pill, 9999px);
171
+ flex-shrink: 0;
172
+
173
+ matcha-icon {
174
+ --matcha-icon-size: 24px;
175
+ width: 24px;
176
+ height: 24px;
177
+ }
178
+ }
179
+
180
+ // Text block — column gap 4px, center
181
+ .matcha-file-uploader-dropzone__text {
182
+ display: flex;
183
+ flex-direction: column;
184
+ align-items: center;
185
+ gap: var(--matcha-space-050, 4px);
186
+ text-align: center;
187
+ width: 100%;
188
+ }
189
+
190
+ // Title row (inline: title + optional)
191
+ .matcha-file-uploader-dropzone__title-row {
192
+ display: inline-flex;
193
+ align-items: center;
194
+ justify-content: center;
195
+ gap: var(--matcha-space-050, 4px);
196
+ white-space: nowrap;
197
+ }
198
+
199
+ .matcha-file-uploader-dropzone__title {
200
+ font-family: var(--matcha-font-family);
201
+ font-size: var(--matcha-text-label-md, 14px);
202
+ font-weight: var(--matcha-weight-medium, 500);
203
+ line-height: var(--matcha-leading-label-md, 20px);
204
+ }
205
+
206
+ .matcha-file-uploader-dropzone__optional {
207
+ font-family: var(--matcha-font-family);
208
+ font-size: var(--matcha-text-label-md, 14px);
209
+ font-weight: var(--matcha-weight-medium, 500);
210
+ line-height: var(--matcha-leading-label-md, 20px);
211
+ }
212
+
213
+ .matcha-file-uploader-dropzone__hint {
214
+ margin: 0;
215
+ font-family: var(--matcha-font-family);
216
+ font-size: var(--matcha-text-body-sm, 12px);
217
+ font-weight: var(--matcha-weight-regular, 400);
218
+ line-height: var(--matcha-leading-body-sm, 16px);
219
+ white-space: pre-line; // suporta \n pra hint multi-linha (1280×720 px... \n Clique pra selecionar...)
220
+ }
221
+
222
+ // Actions row (slot secondary + select arquivo)
223
+ // Hidden input
224
+ .matcha-file-uploader-input {
225
+ display: none;
226
+ }
227
+
228
+ // ── File Item — Estados Enviando (16152:227) e Completo (16152:242) ──────────
229
+ .matcha-file-uploader-file {
230
+ display: flex;
231
+ align-items: center;
232
+ gap: var(--matcha-space-200, 16px);
233
+ border: var(--matcha-border-hairline, 1px) solid transparent;
234
+ border-radius: var(--matcha-radius-lg, 8px);
235
+ margin-top: var(--matcha-space-100, 8px);
236
+ width: 100%;
237
+
238
+ // Enviando: padding 20/24 (mais respiro vs. Figma original 16)
239
+ &.matcha-file-uploader-file--uploading {
240
+ padding: var(--matcha-space-250, 20px) var(--matcha-space-300, 24px);
241
+ }
242
+
243
+ // Completo/Erro: padding 20/24 (mais respiro vs. Figma original 12/16)
244
+ &.matcha-file-uploader-file--completed,
245
+ &.matcha-file-uploader-file--error {
246
+ padding: var(--matcha-space-250, 20px) var(--matcha-space-300, 24px);
247
+ }
248
+ }
249
+
250
+ // Thumbnail 64×36 (16:9 · radius lg)
251
+ .matcha-file-uploader-file__thumb {
252
+ display: flex;
253
+ align-items: center;
254
+ justify-content: center;
255
+ width: 64px;
256
+ height: 36px;
257
+ border-radius: var(--matcha-radius-lg, 8px);
258
+ flex-shrink: 0;
259
+ overflow: hidden;
260
+
261
+ img {
262
+ width: 100%;
263
+ height: 100%;
264
+ object-fit: cover;
265
+ }
266
+
267
+ matcha-icon {
268
+ --matcha-icon-size: 20px;
269
+ width: 20px;
270
+ height: 20px;
271
+ }
272
+ }
273
+
274
+ // Info column (flex-1)
275
+ .matcha-file-uploader-file__info {
276
+ display: flex;
277
+ flex-direction: column;
278
+ flex: 1 1 0;
279
+ min-width: 0;
280
+ overflow: hidden;
281
+
282
+ // Enviando: gap 6 (entre nome e progress bar)
283
+ .matcha-file-uploader-file--uploading & {
284
+ gap: var(--matcha-space-075, 6px);
285
+ }
286
+
287
+ // Completo: gap 4 (entre nome e size)
288
+ .matcha-file-uploader-file--completed &,
289
+ .matcha-file-uploader-file--error & {
290
+ gap: var(--matcha-space-050, 4px);
291
+ }
292
+ }
293
+
294
+ // File name — Manrope Medium 13/19 letter 0.2 (text/button-sm)
295
+ .matcha-file-uploader-file__name {
296
+ font-family: var(--matcha-font-family);
297
+ font-size: var(--matcha-text-label-sm, 12px);
298
+ font-weight: var(--matcha-weight-medium, 500);
299
+ line-height: var(--matcha-leading-label-sm, 16px);
300
+ letter-spacing: 0.2px;
301
+ white-space: nowrap;
302
+ overflow: hidden;
303
+ text-overflow: ellipsis;
304
+ }
305
+
306
+ // File size — Manrope Regular 11/14 letter 0.3 (text/caption)
307
+ .matcha-file-uploader-file__size {
308
+ font-family: var(--matcha-font-family);
309
+ font-size: var(--matcha-text-p-tiny, 11px);
310
+ font-weight: var(--matcha-weight-regular, 400);
311
+ line-height: var(--matcha-leading-p-tiny, 14px);
312
+ letter-spacing: 0.3px;
313
+ }
314
+
315
+ // Error text — body-sm danger
316
+ .matcha-file-uploader-file__error-text {
317
+ font-family: var(--matcha-font-family);
318
+ font-size: var(--matcha-text-body-sm, 12px);
319
+ font-weight: var(--matcha-weight-regular, 400);
320
+ line-height: var(--matcha-leading-body-sm, 16px);
321
+ }
322
+
323
+ // ── Progress bar (height 4px · radius sm) ─────────────────────────────────────
324
+ .matcha-file-uploader-file__progress {
325
+ width: 100%;
326
+ height: 4px;
327
+ border-radius: var(--matcha-radius-sm, 2px);
328
+ overflow: hidden;
329
+ }
330
+
331
+ .matcha-file-uploader-file__progress-fill {
332
+ height: 100%;
333
+ border-radius: var(--matcha-radius-sm, 2px);
334
+ transition: width var(--matcha-duration-moderate, 300ms) ease;
335
+ }
336
+
337
+ // Percent label — body-sm text-secondary
338
+ .matcha-file-uploader-file__percent {
339
+ font-family: var(--matcha-font-family);
340
+ font-size: var(--matcha-text-body-sm, 12px);
341
+ font-weight: var(--matcha-weight-regular, 400);
342
+ line-height: var(--matcha-leading-body-sm, 16px);
343
+ flex-shrink: 0;
344
+ }
345
+
346
+ // Cancel/Delete action button — 20×20 (icon size + bg transparent + hover)
347
+ .matcha-file-uploader-file__action {
348
+ display: inline-flex;
349
+ align-items: center;
350
+ justify-content: center;
351
+ width: 20px;
352
+ height: 20px;
353
+ padding: 0;
354
+ background: transparent;
355
+ border: none;
356
+ border-radius: var(--matcha-radius-sm, 2px);
357
+ cursor: pointer;
358
+ flex-shrink: 0;
359
+ transition: background-color var(--matcha-duration-instant, 80ms) linear,
360
+ color var(--matcha-duration-instant, 80ms) linear;
361
+
362
+ matcha-icon {
363
+ --matcha-icon-size: 20px;
364
+ width: 20px;
365
+ height: 20px;
366
+ }
367
+ }
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
+
442
+ // ── Responsive ───────────────────────────────────────────────────────────────
443
+ @include media-breakpoint('xs') {
444
+ .matcha-file-uploader-dropzone {
445
+ padding: var(--matcha-space-300, 24px) var(--matcha-space-200, 16px);
446
+ }
447
+
448
+ .matcha-file-uploader-dropzone__icon-pill {
449
+ padding: var(--matcha-space-150, 12px) var(--matcha-space-400, 32px);
450
+ }
451
+ }
452
+
453
+ // ── Reduced motion ───────────────────────────────────────────────────────────
454
+ @media (prefers-reduced-motion: reduce) {
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 {
460
+ transition: none;
461
+ }
462
+ }
@@ -1,62 +1,103 @@
1
- @use "sass:map";
2
-
3
1
  // =============================================================================
4
- // matcha-flag.scss — Country flags & payment brand flags
5
- // Aligned with Figma matcha/flag/país + matcha/flag/pagamento:
6
- // País: 4 variants (Brasil, EUA, Portugal, Espanha) — 22×16px (2:3)
7
- // Pagamento: 20 variants (Mastercard, Visa, PIX...) — 32×24px
8
- // Used in: phone DDI selector, payment forms, transaction lists
9
- // Angular: matcha-flag
2
+ // matcha-flag.scss — Bandeiras (country) + Pagamento (payment)
3
+ //
4
+ // 1:1 Figma DSV3 (i04CyWczuVctwRjE5VbJh7):
5
+ // - matcha/flag/country (3969:15347) — 24x24 frame, 22x16 flag (2:3)
6
+ // - matcha/flag/payment (3205:13569) — 32x24 SVG card (4:3)
7
+ //
8
+ // API host attrs (set pelo MatchaFlagComponent):
9
+ // data-set — country | payment
10
+ // data-name — slug (brasil, visa, pix, etc.)
11
+ // data-size — sm | md | lg
12
+ //
13
+ // Componentes:
14
+ // .matcha-flag — host (inline-flex, alinha + tamanho)
15
+ // .matcha-flag__emoji — span unicode (country)
16
+ // .matcha-flag__svg — wrapper innerHTML SVG (payment)
17
+ //
18
+ // Usado em: matcha-phone (DDI), forms de pagamento, transaction lists, hero CTA.
10
19
  // =============================================================================
11
20
 
12
- // ── Layout ──────────────────────────────────────────────────────────────────
13
-
14
- .matcha-flag {
15
- display: inline-flex;
16
- align-items: center;
17
- justify-content: center;
18
- flex-shrink: 0;
19
- overflow: hidden;
20
-
21
- img, svg {
22
- width: 100%;
23
- height: 100%;
24
- object-fit: cover;
25
- }
26
- }
27
-
28
- // ── Country flags (2:3 ratio) ───────────────────────────────────────────────
21
+ @mixin matcha-flag($theme) {
29
22
 
30
- .matcha-flag--country {
31
- width: 22px;
32
- height: 16px;
33
- border-radius: var(--matcha-radius-sm, 2px);
34
- }
23
+ // ── Host ─────────────────────────────────────────────────────────────────
24
+ .matcha-flag {
25
+ display: inline-flex;
26
+ align-items: center;
27
+ justify-content: center;
28
+ flex-shrink: 0;
29
+ overflow: hidden;
30
+ line-height: 1;
31
+ // Default size = md (sobrescrito por data-size abaixo)
32
+ width: var(--matcha-flag-w, 32px);
33
+ height: var(--matcha-flag-h, 24px);
34
+ border-radius: var(--matcha-radius-sm, 2px);
35
+ }
35
36
 
36
- .matcha-flag--country-lg {
37
- width: 32px;
38
- height: 24px;
39
- border-radius: var(--matcha-radius-sm, 2px);
40
- }
37
+ // ── Emoji (country) ─────────────────────────────────────────────────────
38
+ // Emoji ocupa o box todo; font-size ditando o tamanho do glyph.
39
+ .matcha-flag__emoji {
40
+ font-size: calc(var(--matcha-flag-h, 24px) * 0.95);
41
+ line-height: 1;
42
+ // Emoji-style render — força o emoji color (algumas fonts renderizam
43
+ // o codepoint como texto B&W; emoji color preserva as cores nacionais)
44
+ font-family: 'Apple Color Emoji', 'Segoe UI Emoji', 'Noto Color Emoji', sans-serif;
45
+ font-variant-emoji: emoji;
46
+ }
41
47
 
42
- // ── Payment flags (4:3 ratio) ───────────────────────────────────────────────
48
+ // ── SVG (payment) ───────────────────────────────────────────────────────
49
+ .matcha-flag__svg {
50
+ display: inline-flex;
51
+ width: 100%;
52
+ height: 100%;
43
53
 
44
- .matcha-flag--payment {
45
- width: 32px;
46
- height: 24px;
47
- border-radius: var(--matcha-radius-sm, 2px);
48
- }
49
-
50
- .matcha-flag--payment-lg {
51
- width: 48px;
52
- height: 36px;
53
- border-radius: var(--matcha-radius-md, 4px);
54
- }
54
+ svg {
55
+ width: 100%;
56
+ height: 100%;
57
+ display: block;
58
+ }
59
+ }
55
60
 
56
- // ── Theme (border for visibility on dark/light) ────────────────────────────
61
+ // ── Set: country 2:3 aspect ratio ─────────────────────────────────────
62
+ .matcha-flag[data-set="country"] {
63
+ --matcha-flag-w: 22px;
64
+ --matcha-flag-h: 16px;
65
+ }
66
+ .matcha-flag[data-set="country"][data-size="small"],
67
+ .matcha-flag[data-set="country"][data-size="sm"] {
68
+ --matcha-flag-w: 16px;
69
+ --matcha-flag-h: 12px;
70
+ }
71
+ .matcha-flag[data-set="country"][data-size="medium"],
72
+ .matcha-flag[data-set="country"][data-size="md"] {
73
+ --matcha-flag-w: 22px;
74
+ --matcha-flag-h: 16px;
75
+ }
76
+ .matcha-flag[data-set="country"][data-size="large"],
77
+ .matcha-flag[data-set="country"][data-size="lg"] {
78
+ --matcha-flag-w: 32px;
79
+ --matcha-flag-h: 24px;
80
+ }
57
81
 
58
- @mixin matcha-flag-theme($theme) {
59
- .matcha-flag {
60
- border: var(--matcha-border-hairline, 1px) solid var(--matcha-color-border, #{getGrey($theme)});
61
- }
82
+ // ── Set: payment — 4:3 aspect ratio ─────────────────────────────────────
83
+ .matcha-flag[data-set="payment"] {
84
+ --matcha-flag-w: 32px;
85
+ --matcha-flag-h: 24px;
86
+ }
87
+ .matcha-flag[data-set="payment"][data-size="small"],
88
+ .matcha-flag[data-set="payment"][data-size="sm"] {
89
+ --matcha-flag-w: 24px;
90
+ --matcha-flag-h: 18px;
91
+ }
92
+ .matcha-flag[data-set="payment"][data-size="medium"],
93
+ .matcha-flag[data-set="payment"][data-size="md"] {
94
+ --matcha-flag-w: 32px;
95
+ --matcha-flag-h: 24px;
96
+ }
97
+ .matcha-flag[data-set="payment"][data-size="large"],
98
+ .matcha-flag[data-set="payment"][data-size="lg"] {
99
+ --matcha-flag-w: 48px;
100
+ --matcha-flag-h: 36px;
101
+ border-radius: var(--matcha-radius-md, 4px);
102
+ }
62
103
  }