@inchurch/matcha-theme 20.276.0 → 20.278.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/_functions.scss +0 -26
- package/abstracts/_theme-api.scss +230 -0
- package/base/_reset.scss +5 -1
- package/components/app-page-header.scss +16 -17
- package/components/matcha-accordion.scss +5 -6
- package/components/matcha-audio-player.scss +1 -2
- package/components/matcha-autocomplete.scss +10 -11
- package/components/matcha-avatar.scss +3 -3
- package/components/matcha-badge.scss +11 -11
- package/components/matcha-breadcrumb.scss +6 -7
- package/components/matcha-button-toggle.scss +2 -2
- package/components/matcha-buttons.scss +34 -34
- package/components/matcha-calendar.scss +31 -35
- package/components/matcha-cards.scss +31 -32
- package/components/matcha-chart-card.scss +5 -12
- package/components/matcha-checkbox.scss +13 -13
- package/components/matcha-chip.scss +2 -2
- package/components/matcha-color-pick.scss +1 -2
- package/components/matcha-command-palette.scss +17 -18
- package/components/matcha-crop.scss +0 -1
- package/components/matcha-date.scss +3 -3
- package/components/matcha-draggable.scss +4 -5
- package/components/matcha-drawer.scss +18 -28
- package/components/matcha-drop-list.scss +51 -52
- package/components/matcha-emoji.scss +2 -2
- package/components/{matcha-uploader.scss → matcha-file-uploader.scss} +193 -116
- package/components/matcha-footer.scss +3 -4
- package/components/matcha-form-field.scss +3 -3
- package/components/matcha-form-section.scss +5 -6
- package/components/matcha-header.scss +3 -4
- package/components/matcha-hint-text.scss +4 -4
- package/components/matcha-horizontal-tree.scss +15 -16
- package/components/matcha-icon.scss +27 -27
- package/components/matcha-image.scss +2 -3
- package/components/matcha-list.scss +11 -12
- package/components/matcha-menu.scss +2 -2
- package/components/matcha-modal.scss +5 -6
- package/components/matcha-nav.scss +16 -16
- package/components/matcha-notification.scss +3 -4
- package/components/matcha-option.scss +19 -0
- package/components/matcha-page-builder.scss +16 -16
- package/components/matcha-paginator.scss +6 -7
- package/components/matcha-panel.scss +4 -5
- package/components/matcha-profile-card.scss +3 -3
- package/components/matcha-progress-bar.scss +1 -1
- package/components/matcha-radio.scss +6 -6
- package/components/matcha-scrollbar.scss +1 -2
- package/components/matcha-scrollbox-shadow.scss +35 -37
- package/components/matcha-section.scss +5 -9
- package/components/matcha-select-multiple.scss +56 -0
- package/components/matcha-select.scss +7 -7
- package/components/matcha-skeleton.scss +6 -7
- package/components/matcha-slide-toggle.scss +33 -299
- package/components/matcha-slider.scss +5 -5
- package/components/matcha-snack-bar.scss +17 -18
- package/components/matcha-spin.scss +12 -103
- package/components/matcha-spinner.scss +1 -1
- package/components/matcha-stepper.scss +15 -16
- package/components/matcha-table.scss +14 -15
- package/components/matcha-tabs.scss +22 -24
- package/components/matcha-text-editor.scss +78 -78
- package/components/matcha-time.scss +2 -2
- package/components/matcha-toolbar.scss +1 -1
- package/components/matcha-tooltip.scss +14 -12
- package/main.scss +7 -2
- package/package.json +1 -1
- package/tokens/_color-tokens.scss +0 -3
- package/tokens/_css-custom-properties.scss +233 -179
- package/tokens/_primitives.scss +82 -0
- 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-
|
|
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
|
|
20
|
-
border-color: var(--matcha-color-surface-border
|
|
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
|
|
24
|
-
border-color: var(--matcha-color-accent
|
|
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
|
|
35
|
+
color: var(--matcha-color-text-secondary);
|
|
37
36
|
}
|
|
38
37
|
|
|
39
|
-
.matcha-uploader-dropzone__title {
|
|
40
|
-
color: var(--matcha-color-text-primary
|
|
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
|
|
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
|
|
69
|
-
border-color: var(--matcha-color-surface-border
|
|
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
|
|
74
|
-
color: var(--matcha-color-text-muted
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
90
|
+
color: var(--matcha-color-text-primary);
|
|
107
91
|
}
|
|
108
92
|
|
|
109
|
-
&.matcha-uploader-file__action--delete:hover {
|
|
110
|
-
color: var(--matcha-color-danger
|
|
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,21 @@
|
|
|
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
|
-
// ──
|
|
126
|
-
.matcha-uploader-
|
|
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
|
+
// ── Dropzone box (Estado=Dropzone — Figma 16152:209) — a zona INTEIRA é o alvo
|
|
137
|
+
.matcha-file-uploader-dropzone {
|
|
127
138
|
display: flex;
|
|
128
139
|
flex-direction: column;
|
|
129
140
|
align-items: center;
|
|
@@ -135,10 +146,24 @@
|
|
|
135
146
|
cursor: pointer;
|
|
136
147
|
transition: background-color var(--matcha-duration-instant, 80ms) linear,
|
|
137
148
|
border-color var(--matcha-duration-instant, 80ms) linear;
|
|
149
|
+
|
|
150
|
+
&:focus-visible {
|
|
151
|
+
outline: var(--matcha-border-thin, 2px) solid var(--matcha-color-accent, #009400);
|
|
152
|
+
outline-offset: 2px;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
// layout="card": dropzone vazio compartilha a proporção do card preenchido
|
|
157
|
+
// (aspect-ratio aplicado inline via previewRatio) pra empty e filled terem a
|
|
158
|
+
// MESMA altura lado a lado. Sem isso, vazio é dimensionado por padding/conteúdo
|
|
159
|
+
// e preenchido por aspect-ratio → alturas divergentes.
|
|
160
|
+
.matcha-file-uploader-dropzone--card {
|
|
161
|
+
width: 100%;
|
|
162
|
+
overflow: hidden;
|
|
138
163
|
}
|
|
139
164
|
|
|
140
165
|
// Icon pill (bg interaction/disabled-bg + padding 40h/16v · icon 24×24)
|
|
141
|
-
.matcha-uploader-dropzone__icon-pill {
|
|
166
|
+
.matcha-file-uploader-dropzone__icon-pill {
|
|
142
167
|
display: inline-flex;
|
|
143
168
|
align-items: center;
|
|
144
169
|
justify-content: center;
|
|
@@ -154,7 +179,7 @@
|
|
|
154
179
|
}
|
|
155
180
|
|
|
156
181
|
// Text block — column gap 4px, center
|
|
157
|
-
.matcha-uploader-dropzone__text {
|
|
182
|
+
.matcha-file-uploader-dropzone__text {
|
|
158
183
|
display: flex;
|
|
159
184
|
flex-direction: column;
|
|
160
185
|
align-items: center;
|
|
@@ -164,7 +189,7 @@
|
|
|
164
189
|
}
|
|
165
190
|
|
|
166
191
|
// Title row (inline: title + optional)
|
|
167
|
-
.matcha-uploader-dropzone__title-row {
|
|
192
|
+
.matcha-file-uploader-dropzone__title-row {
|
|
168
193
|
display: inline-flex;
|
|
169
194
|
align-items: center;
|
|
170
195
|
justify-content: center;
|
|
@@ -172,21 +197,21 @@
|
|
|
172
197
|
white-space: nowrap;
|
|
173
198
|
}
|
|
174
199
|
|
|
175
|
-
.matcha-uploader-dropzone__title {
|
|
200
|
+
.matcha-file-uploader-dropzone__title {
|
|
176
201
|
font-family: var(--matcha-font-family);
|
|
177
202
|
font-size: var(--matcha-text-label-md, 14px);
|
|
178
203
|
font-weight: var(--matcha-weight-medium, 500);
|
|
179
204
|
line-height: var(--matcha-leading-label-md, 20px);
|
|
180
205
|
}
|
|
181
206
|
|
|
182
|
-
.matcha-uploader-dropzone__optional {
|
|
207
|
+
.matcha-file-uploader-dropzone__optional {
|
|
183
208
|
font-family: var(--matcha-font-family);
|
|
184
209
|
font-size: var(--matcha-text-label-md, 14px);
|
|
185
210
|
font-weight: var(--matcha-weight-medium, 500);
|
|
186
211
|
line-height: var(--matcha-leading-label-md, 20px);
|
|
187
212
|
}
|
|
188
213
|
|
|
189
|
-
.matcha-uploader-dropzone__hint {
|
|
214
|
+
.matcha-file-uploader-dropzone__hint {
|
|
190
215
|
margin: 0;
|
|
191
216
|
font-family: var(--matcha-font-family);
|
|
192
217
|
font-size: var(--matcha-text-body-sm, 12px);
|
|
@@ -196,42 +221,13 @@
|
|
|
196
221
|
}
|
|
197
222
|
|
|
198
223
|
// 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
224
|
// Hidden input
|
|
229
|
-
.matcha-uploader-input {
|
|
225
|
+
.matcha-file-uploader-input {
|
|
230
226
|
display: none;
|
|
231
227
|
}
|
|
232
228
|
|
|
233
229
|
// ── File Item — Estados Enviando (16152:227) e Completo (16152:242) ──────────
|
|
234
|
-
.matcha-uploader-file {
|
|
230
|
+
.matcha-file-uploader-file {
|
|
235
231
|
display: flex;
|
|
236
232
|
align-items: center;
|
|
237
233
|
gap: var(--matcha-space-200, 16px);
|
|
@@ -241,19 +237,19 @@
|
|
|
241
237
|
width: 100%;
|
|
242
238
|
|
|
243
239
|
// Enviando: padding 20/24 (mais respiro vs. Figma original 16)
|
|
244
|
-
&.matcha-uploader-file--uploading {
|
|
240
|
+
&.matcha-file-uploader-file--uploading {
|
|
245
241
|
padding: var(--matcha-space-250, 20px) var(--matcha-space-300, 24px);
|
|
246
242
|
}
|
|
247
243
|
|
|
248
244
|
// Completo/Erro: padding 20/24 (mais respiro vs. Figma original 12/16)
|
|
249
|
-
&.matcha-uploader-file--completed,
|
|
250
|
-
&.matcha-uploader-file--error {
|
|
245
|
+
&.matcha-file-uploader-file--completed,
|
|
246
|
+
&.matcha-file-uploader-file--error {
|
|
251
247
|
padding: var(--matcha-space-250, 20px) var(--matcha-space-300, 24px);
|
|
252
248
|
}
|
|
253
249
|
}
|
|
254
250
|
|
|
255
251
|
// Thumbnail 64×36 (16:9 · radius lg)
|
|
256
|
-
.matcha-uploader-file__thumb {
|
|
252
|
+
.matcha-file-uploader-file__thumb {
|
|
257
253
|
display: flex;
|
|
258
254
|
align-items: center;
|
|
259
255
|
justify-content: center;
|
|
@@ -277,7 +273,7 @@
|
|
|
277
273
|
}
|
|
278
274
|
|
|
279
275
|
// Info column (flex-1)
|
|
280
|
-
.matcha-uploader-file__info {
|
|
276
|
+
.matcha-file-uploader-file__info {
|
|
281
277
|
display: flex;
|
|
282
278
|
flex-direction: column;
|
|
283
279
|
flex: 1 1 0;
|
|
@@ -285,19 +281,19 @@
|
|
|
285
281
|
overflow: hidden;
|
|
286
282
|
|
|
287
283
|
// Enviando: gap 6 (entre nome e progress bar)
|
|
288
|
-
.matcha-uploader-file--uploading & {
|
|
284
|
+
.matcha-file-uploader-file--uploading & {
|
|
289
285
|
gap: var(--matcha-space-075, 6px);
|
|
290
286
|
}
|
|
291
287
|
|
|
292
288
|
// Completo: gap 4 (entre nome e size)
|
|
293
|
-
.matcha-uploader-file--completed &,
|
|
294
|
-
.matcha-uploader-file--error & {
|
|
289
|
+
.matcha-file-uploader-file--completed &,
|
|
290
|
+
.matcha-file-uploader-file--error & {
|
|
295
291
|
gap: var(--matcha-space-050, 4px);
|
|
296
292
|
}
|
|
297
293
|
}
|
|
298
294
|
|
|
299
295
|
// File name — Manrope Medium 13/19 letter 0.2 (text/button-sm)
|
|
300
|
-
.matcha-uploader-file__name {
|
|
296
|
+
.matcha-file-uploader-file__name {
|
|
301
297
|
font-family: var(--matcha-font-family);
|
|
302
298
|
font-size: var(--matcha-text-label-sm, 12px);
|
|
303
299
|
font-weight: var(--matcha-weight-medium, 500);
|
|
@@ -309,7 +305,7 @@
|
|
|
309
305
|
}
|
|
310
306
|
|
|
311
307
|
// File size — Manrope Regular 11/14 letter 0.3 (text/caption)
|
|
312
|
-
.matcha-uploader-file__size {
|
|
308
|
+
.matcha-file-uploader-file__size {
|
|
313
309
|
font-family: var(--matcha-font-family);
|
|
314
310
|
font-size: var(--matcha-text-p-tiny, 11px);
|
|
315
311
|
font-weight: var(--matcha-weight-regular, 400);
|
|
@@ -318,7 +314,7 @@
|
|
|
318
314
|
}
|
|
319
315
|
|
|
320
316
|
// Error text — body-sm danger
|
|
321
|
-
.matcha-uploader-file__error-text {
|
|
317
|
+
.matcha-file-uploader-file__error-text {
|
|
322
318
|
font-family: var(--matcha-font-family);
|
|
323
319
|
font-size: var(--matcha-text-body-sm, 12px);
|
|
324
320
|
font-weight: var(--matcha-weight-regular, 400);
|
|
@@ -326,21 +322,21 @@
|
|
|
326
322
|
}
|
|
327
323
|
|
|
328
324
|
// ── Progress bar (height 4px · radius sm) ─────────────────────────────────────
|
|
329
|
-
.matcha-uploader-file__progress {
|
|
325
|
+
.matcha-file-uploader-file__progress {
|
|
330
326
|
width: 100%;
|
|
331
327
|
height: 4px;
|
|
332
328
|
border-radius: var(--matcha-radius-sm, 2px);
|
|
333
329
|
overflow: hidden;
|
|
334
330
|
}
|
|
335
331
|
|
|
336
|
-
.matcha-uploader-file__progress-fill {
|
|
332
|
+
.matcha-file-uploader-file__progress-fill {
|
|
337
333
|
height: 100%;
|
|
338
334
|
border-radius: var(--matcha-radius-sm, 2px);
|
|
339
335
|
transition: width var(--matcha-duration-moderate, 300ms) ease;
|
|
340
336
|
}
|
|
341
337
|
|
|
342
338
|
// Percent label — body-sm text-secondary
|
|
343
|
-
.matcha-uploader-file__percent {
|
|
339
|
+
.matcha-file-uploader-file__percent {
|
|
344
340
|
font-family: var(--matcha-font-family);
|
|
345
341
|
font-size: var(--matcha-text-body-sm, 12px);
|
|
346
342
|
font-weight: var(--matcha-weight-regular, 400);
|
|
@@ -349,7 +345,7 @@
|
|
|
349
345
|
}
|
|
350
346
|
|
|
351
347
|
// Cancel/Delete action button — 20×20 (icon size + bg transparent + hover)
|
|
352
|
-
.matcha-uploader-file__action {
|
|
348
|
+
.matcha-file-uploader-file__action {
|
|
353
349
|
display: inline-flex;
|
|
354
350
|
align-items: center;
|
|
355
351
|
justify-content: center;
|
|
@@ -371,23 +367,104 @@
|
|
|
371
367
|
}
|
|
372
368
|
}
|
|
373
369
|
|
|
370
|
+
// ── Card layout — preview preenchido 16:9 + ações no hover (Estado=Drop filled) ──
|
|
371
|
+
.matcha-file-uploader-card {
|
|
372
|
+
position: relative;
|
|
373
|
+
width: 100%;
|
|
374
|
+
// SEM margin-top: o card preenchido tem que alinhar o topo com o dropzone
|
|
375
|
+
// vazio quando lado a lado (layout card). margin-top desalinhava em 8px.
|
|
376
|
+
border: var(--matcha-border-hairline, 1px) solid transparent;
|
|
377
|
+
border-radius: var(--matcha-radius-lg, 8px);
|
|
378
|
+
overflow: hidden;
|
|
379
|
+
aspect-ratio: 16 / 9; // fallback; sobrescrito por [style.aspect-ratio]="previewRatio"
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
.matcha-file-uploader-card__img {
|
|
383
|
+
display: block;
|
|
384
|
+
width: 100%;
|
|
385
|
+
height: 100%;
|
|
386
|
+
object-fit: cover; // sobrescrito por [style.object-fit]="previewFit"
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
.matcha-file-uploader-card__actions {
|
|
390
|
+
position: absolute;
|
|
391
|
+
top: var(--matcha-space-100, 8px);
|
|
392
|
+
right: var(--matcha-space-100, 8px);
|
|
393
|
+
display: flex;
|
|
394
|
+
gap: var(--matcha-space-100, 8px);
|
|
395
|
+
opacity: 1; // persistente — descobrÃvel e operável em touch (canon 20252:2253)
|
|
396
|
+
transition: opacity var(--matcha-duration-instant, 80ms) linear;
|
|
397
|
+
}
|
|
398
|
+
|
|
399
|
+
// Em dispositivos com hover, atenua no resting e destaca no hover/foco — mantém
|
|
400
|
+
// a tela limpa sem esconder a affordance onde não há hover (touch/totem).
|
|
401
|
+
@media (hover: hover) {
|
|
402
|
+
.matcha-file-uploader-card__actions { opacity: 0.72; }
|
|
403
|
+
|
|
404
|
+
.matcha-file-uploader-card:hover .matcha-file-uploader-card__actions,
|
|
405
|
+
.matcha-file-uploader-card:focus-within .matcha-file-uploader-card__actions {
|
|
406
|
+
opacity: 1;
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
.matcha-file-uploader-card__action {
|
|
411
|
+
display: inline-flex;
|
|
412
|
+
align-items: center;
|
|
413
|
+
justify-content: center;
|
|
414
|
+
width: 32px;
|
|
415
|
+
height: 32px;
|
|
416
|
+
padding: 0;
|
|
417
|
+
border: none;
|
|
418
|
+
border-radius: var(--matcha-radius-pill, 9999px);
|
|
419
|
+
cursor: pointer;
|
|
420
|
+
backdrop-filter: blur(8px);
|
|
421
|
+
transition: background-color var(--matcha-duration-instant, 80ms) linear;
|
|
422
|
+
|
|
423
|
+
matcha-icon {
|
|
424
|
+
--matcha-icon-size: 18px;
|
|
425
|
+
width: 18px;
|
|
426
|
+
height: 18px;
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
// ── Cropper inline (modo crop: imagem única) ──────────────────────────────
|
|
431
|
+
.matcha-file-uploader-cropper {
|
|
432
|
+
display: flex;
|
|
433
|
+
flex-direction: column;
|
|
434
|
+
gap: var(--matcha-space-150, 12px);
|
|
435
|
+
margin-top: var(--matcha-space-100, 8px);
|
|
436
|
+
}
|
|
437
|
+
|
|
438
|
+
.matcha-file-uploader-cropper matcha-crop {
|
|
439
|
+
display: block;
|
|
440
|
+
width: 100%;
|
|
441
|
+
min-height: 280px;
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
.matcha-file-uploader-cropper__actions {
|
|
445
|
+
display: flex;
|
|
446
|
+
justify-content: flex-end;
|
|
447
|
+
gap: var(--matcha-space-100, 8px);
|
|
448
|
+
}
|
|
449
|
+
|
|
374
450
|
// ── Responsive ───────────────────────────────────────────────────────────────
|
|
375
451
|
@include media-breakpoint('xs') {
|
|
376
|
-
.matcha-uploader-dropzone {
|
|
452
|
+
.matcha-file-uploader-dropzone {
|
|
377
453
|
padding: var(--matcha-space-300, 24px) var(--matcha-space-200, 16px);
|
|
378
454
|
}
|
|
379
455
|
|
|
380
|
-
.matcha-uploader-dropzone__icon-pill {
|
|
456
|
+
.matcha-file-uploader-dropzone__icon-pill {
|
|
381
457
|
padding: var(--matcha-space-150, 12px) var(--matcha-space-400, 32px);
|
|
382
458
|
}
|
|
383
459
|
}
|
|
384
460
|
|
|
385
461
|
// ── Reduced motion ───────────────────────────────────────────────────────────
|
|
386
462
|
@media (prefers-reduced-motion: reduce) {
|
|
387
|
-
.matcha-uploader-dropzone,
|
|
388
|
-
.matcha-uploader-file__progress-fill,
|
|
389
|
-
.matcha-uploader-
|
|
390
|
-
.matcha-uploader-
|
|
463
|
+
.matcha-file-uploader-dropzone,
|
|
464
|
+
.matcha-file-uploader-file__progress-fill,
|
|
465
|
+
.matcha-file-uploader-file__action,
|
|
466
|
+
.matcha-file-uploader-card__actions,
|
|
467
|
+
.matcha-file-uploader-card__action {
|
|
391
468
|
transition: none;
|
|
392
469
|
}
|
|
393
470
|
}
|
|
@@ -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
|
|
19
|
-
border-top: var(--matcha-border-hairline, 1px) solid var(--matcha-color-surface-border
|
|
20
|
-
color: var(--matcha-color-text-label
|
|
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
|
|
519
|
+
color: var(--matcha-color-text-primary);
|
|
520
520
|
|
|
521
521
|
&::placeholder {
|
|
522
|
-
color: var(--matcha-color-text-placeholder
|
|
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
|
|
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
|
|
16
|
+
background: var(--matcha-color-accent);
|
|
18
17
|
}
|
|
19
18
|
|
|
20
19
|
.matcha-form-section__title {
|
|
21
|
-
color: var(--matcha-color-fg
|
|
20
|
+
color: var(--matcha-color-fg);
|
|
22
21
|
}
|
|
23
22
|
|
|
24
23
|
.matcha-form-section__description {
|
|
25
|
-
color: var(--matcha-color-text-secondary
|
|
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
|
|
31
|
+
background: var(--matcha-color-fg);
|
|
33
32
|
}
|
|
34
33
|
|
|
35
34
|
.matcha-form-subsection__title {
|
|
36
|
-
color: var(--matcha-color-fg
|
|
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
|
|
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
|
|
23
|
-
color: var(--matcha-color-text-primary
|
|
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
|
|
51
|
+
color: var(--matcha-color-danger);
|
|
52
52
|
}
|
|
53
53
|
|
|
54
54
|
&[type="warning"] {
|
|
55
|
-
color: var(--matcha-color-warn
|
|
55
|
+
color: var(--matcha-color-warn);
|
|
56
56
|
}
|
|
57
57
|
|
|
58
58
|
&[type="info"] {
|
|
59
|
-
color: var(--matcha-color-info
|
|
59
|
+
color: var(--matcha-color-info);
|
|
60
60
|
}
|
|
61
61
|
|
|
62
62
|
&[type="success"] {
|
|
63
|
-
color: var(--matcha-color-success
|
|
63
|
+
color: var(--matcha-color-success);
|
|
64
64
|
}
|
|
65
65
|
}
|
|
66
66
|
}
|