@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.
- package/abstracts/_colors.scss +404 -404
- package/abstracts/_elevation.scss +102 -102
- package/abstracts/_functions.scss +1186 -1212
- package/abstracts/_media-breakpoint.scss +23 -23
- package/abstracts/_theme-api.scss +230 -0
- package/abstracts/_typography.scss +127 -127
- package/base/_reset.scss +438 -438
- package/components/app-page-header.scss +259 -0
- package/components/matcha-accordion.scss +293 -157
- package/components/matcha-audio-player.scss +1 -2
- package/components/matcha-autocomplete.scss +10 -11
- package/components/matcha-avatar.scss +173 -33
- package/components/matcha-badge.scss +15 -15
- package/components/matcha-breadcrumb.scss +231 -126
- package/components/matcha-button-toggle.scss +46 -2
- package/components/matcha-buttons.scss +908 -784
- package/components/matcha-calendar.scss +99 -35
- package/components/matcha-cards.scss +58 -33
- package/components/matcha-chart-card.scss +5 -12
- package/components/matcha-checkbox.scss +191 -490
- package/components/matcha-chip.scss +297 -212
- package/components/matcha-color-pick.scss +1 -2
- package/components/matcha-command-palette.scss +290 -63
- package/components/matcha-crop.scss +406 -172
- package/components/matcha-date.scss +81 -81
- package/components/matcha-divider.scss +86 -31
- package/components/matcha-draggable.scss +4 -5
- package/components/matcha-drawer.scss +207 -66
- package/components/matcha-drop-image.scss +14 -0
- package/components/matcha-drop-list.scss +87 -47
- package/components/matcha-emoji.scss +2 -2
- package/components/matcha-empty-state.scss +195 -83
- package/components/matcha-file-uploader.scss +462 -0
- package/components/matcha-flag.scss +93 -52
- package/components/matcha-footer.scss +67 -164
- package/components/matcha-form-field.scss +55 -3
- package/components/matcha-form-section.scss +100 -101
- package/components/matcha-header.scss +134 -325
- package/components/matcha-highlight.scss +65 -197
- package/components/matcha-hint-text.scss +25 -4
- package/components/matcha-horizontal-tree.scss +316 -317
- package/components/matcha-icon.scss +37 -45
- package/components/matcha-image.scss +2 -3
- package/components/matcha-list.scss +14 -15
- package/components/matcha-menu.scss +15 -2
- package/components/matcha-modal.scss +59 -86
- package/components/matcha-nav.scss +362 -231
- package/components/matcha-notification.scss +412 -197
- package/components/matcha-option.scss +98 -23
- package/components/matcha-page-builder.scss +16 -16
- package/components/matcha-paginator.scss +688 -235
- package/components/matcha-panel.scss +42 -27
- package/components/matcha-profile-card.scss +50 -50
- package/components/matcha-progress-bar.scss +257 -153
- package/components/matcha-radio.scss +244 -452
- package/components/matcha-scrollbar.scss +1 -2
- package/components/matcha-scrollbox-shadow.scss +120 -122
- package/components/matcha-section.scss +5 -9
- package/components/matcha-select-multiple.scss +56 -0
- package/components/matcha-select.scss +10 -10
- package/components/matcha-skeleton.scss +24 -7
- package/components/matcha-slide-toggle.scss +80 -301
- package/components/matcha-slider.scss +174 -77
- package/components/matcha-snack-bar.scss +123 -131
- package/components/matcha-spin.scss +12 -103
- package/components/matcha-spinner.scss +76 -57
- package/components/matcha-status-pill.scss +82 -0
- package/components/matcha-stepper.scss +376 -177
- package/components/matcha-table.scss +568 -785
- package/components/matcha-tabs.scss +622 -469
- package/components/matcha-text-editor.scss +78 -78
- package/components/matcha-time.scss +2 -2
- package/components/matcha-toolbar.scss +359 -206
- package/components/matcha-tooltip.scss +158 -62
- package/components/matcha-tree-view.scss +189 -0
- package/fonts/manrope/manrope-latin-ext.woff2 +0 -0
- package/fonts/manrope/manrope-latin.woff2 +0 -0
- package/layout/matcha-page-layout.scss +4 -4
- package/main.scss +237 -265
- package/package.json +1 -1
- package/tokens/_animations-tokens.scss +37 -37
- package/tokens/_breakpoints-tokens.scss +35 -26
- package/tokens/_color-tokens.scss +1149 -1152
- package/tokens/_css-custom-properties.scss +704 -568
- package/tokens/_primitives.scss +82 -0
- package/tokens/_semantic-aliases.scss +120 -0
- package/tokens/_spacing-tokens.scss +94 -94
- package/vendors/angular-editor.scss +56 -56
- package/vendors/angular-material-fixes.scss +297 -297
- package/vendors/charts.scss +92 -92
- package/vendors/ng5-slider.scss +56 -56
- package/vendors/ngx-material-timepicker.scss +50 -50
- package/components/matcha-uploader.scss +0 -215
- package/fonts/CircularStd-Black.eot +0 -0
- package/fonts/CircularStd-Black.svg +0 -3426
- package/fonts/CircularStd-Black.ttf +0 -0
- package/fonts/CircularStd-Black.woff +0 -0
- package/fonts/CircularStd-Black.woff2 +0 -0
- package/fonts/CircularStd-Bold.eot +0 -0
- package/fonts/CircularStd-Bold.otf +0 -0
- package/fonts/CircularStd-Bold.svg +0 -13532
- package/fonts/CircularStd-Bold.ttf +0 -0
- package/fonts/CircularStd-Bold.woff +0 -0
- package/fonts/CircularStd-Bold.woff2 +0 -0
- package/fonts/CircularStd-Medium.eot +0 -0
- package/fonts/CircularStd-Medium.otf +0 -0
- package/fonts/CircularStd-Medium.svg +0 -13511
- package/fonts/CircularStd-Medium.ttf +0 -0
- package/fonts/CircularStd-Medium.woff +0 -0
- package/fonts/CircularStd-Medium.woff2 +0 -0
- package/fonts/CircularStd-Regular.eot +0 -0
- package/fonts/CircularStd-Regular.otf +0 -0
- package/fonts/CircularStd-Regular.svg +0 -2378
- package/fonts/CircularStd-Regular.ttf +0 -0
- package/fonts/CircularStd-Regular.woff +0 -0
- package/fonts/CircularStd-Regular.woff2 +0 -0
|
@@ -16,6 +16,17 @@
|
|
|
16
16
|
to { opacity: 0; }
|
|
17
17
|
}
|
|
18
18
|
|
|
19
|
+
// Shake feedback — disparado quando ESC/backdrop click são bloqueados por
|
|
20
|
+
// disableClose=true. Sinaliza visualmente que a ação foi capturada mas
|
|
21
|
+
// bloqueada (em vez de silent fail).
|
|
22
|
+
@keyframes matcha-drawer-shake {
|
|
23
|
+
0%, 100% { transform: translate3d(0, 0, 0); }
|
|
24
|
+
20% { transform: translate3d(-8px, 0, 0); }
|
|
25
|
+
40% { transform: translate3d(8px, 0, 0); }
|
|
26
|
+
60% { transform: translate3d(-4px, 0, 0); }
|
|
27
|
+
80% { transform: translate3d(4px, 0, 0); }
|
|
28
|
+
}
|
|
29
|
+
|
|
19
30
|
@media (prefers-reduced-motion: reduce) {
|
|
20
31
|
matcha-drawer,
|
|
21
32
|
.matcha-drawer-backdrop,
|
|
@@ -25,12 +36,52 @@
|
|
|
25
36
|
}
|
|
26
37
|
}
|
|
27
38
|
|
|
39
|
+
// ── Forced colors (Windows High Contrast) ──
|
|
40
|
+
// rgba/blur/shadow somem; usar Canvas/CanvasText/SelectedItem.
|
|
41
|
+
@media (forced-colors: active) {
|
|
42
|
+
matcha-drawer {
|
|
43
|
+
border: 1px solid CanvasText !important;
|
|
44
|
+
background: Canvas !important;
|
|
45
|
+
box-shadow: none !important;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.matcha-drawer-backdrop {
|
|
49
|
+
background: rgba(0, 0, 0, 0.7) !important;
|
|
50
|
+
backdrop-filter: none !important;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
matcha-drawer:focus-visible {
|
|
54
|
+
outline: 2px solid CanvasText !important;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// ── Reduced transparency ──
|
|
59
|
+
// Backdrop blur 4px → solid 85% pra usuários com dificuldade de ler sobre blur.
|
|
60
|
+
@media (prefers-reduced-transparency: reduce) {
|
|
61
|
+
.matcha-drawer-backdrop {
|
|
62
|
+
background: rgba(0, 0, 0, 0.85) !important;
|
|
63
|
+
backdrop-filter: none !important;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
// ── Print ──
|
|
68
|
+
// Drawer + chrome flutuante somem em impressão.
|
|
69
|
+
@media print {
|
|
70
|
+
matcha-drawer,
|
|
71
|
+
.matcha-drawer-backdrop {
|
|
72
|
+
display: none !important;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
matcha-drawer-content {
|
|
76
|
+
margin: 0 !important;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
28
80
|
// =============================================================================
|
|
29
81
|
// Theme mixin
|
|
30
82
|
// =============================================================================
|
|
31
83
|
|
|
32
84
|
@mixin matcha-drawer-theme($theme) {
|
|
33
|
-
$is-dark: map.get($theme, is-dark);
|
|
34
85
|
|
|
35
86
|
// ── Container ──
|
|
36
87
|
matcha-drawer-container {
|
|
@@ -40,8 +91,8 @@
|
|
|
40
91
|
box-sizing: border-box;
|
|
41
92
|
-webkit-overflow-scrolling: touch;
|
|
42
93
|
overflow: hidden;
|
|
43
|
-
background-color: var(--matcha-color-bg
|
|
44
|
-
color: var(--matcha-color-fg
|
|
94
|
+
background-color: var(--matcha-color-bg);
|
|
95
|
+
color: var(--matcha-color-fg);
|
|
45
96
|
}
|
|
46
97
|
|
|
47
98
|
// ── Backdrop ──
|
|
@@ -77,39 +128,51 @@
|
|
|
77
128
|
|
|
78
129
|
// ── Drawer ──
|
|
79
130
|
matcha-drawer {
|
|
80
|
-
display:
|
|
131
|
+
display: flex;
|
|
132
|
+
flex-direction: column;
|
|
81
133
|
position: absolute;
|
|
82
134
|
top: 0;
|
|
83
135
|
bottom: 0;
|
|
136
|
+
// Default position=start ancora à esquerda. End/bottom override via .matcha-drawer-end/.matcha-drawer-bottom.
|
|
137
|
+
// Sem o explícito, layouts que usam o drawer dentro de containers flexíveis renderizam fora da posição esperada.
|
|
138
|
+
left: 0;
|
|
84
139
|
z-index: 10;
|
|
85
140
|
outline: 0;
|
|
86
141
|
box-sizing: border-box;
|
|
87
|
-
overflow-y:
|
|
88
|
-
|
|
142
|
+
// Drawer raiz não scrolla — só o body slot scrolla (overflow-y:auto).
|
|
143
|
+
// Header/footer são flex-shrink:0 e ficam fixos.
|
|
144
|
+
overflow: hidden;
|
|
145
|
+
// Defensivo: drawer nunca extrapola viewport mesmo com [width] absurdo.
|
|
146
|
+
max-width: 100vw;
|
|
89
147
|
transform: translate3d(-100%, 0, 0);
|
|
90
148
|
visibility: hidden;
|
|
149
|
+
// Width inclusa pra animar resize dinâmico (responsive token, [width] bound).
|
|
91
150
|
transition: transform var(--matcha-duration-normal, 200ms) cubic-bezier(0.16, 1, 0.3, 1),
|
|
92
|
-
visibility var(--matcha-duration-normal, 200ms) ease
|
|
93
|
-
|
|
94
|
-
color: var(--matcha-color-
|
|
151
|
+
visibility var(--matcha-duration-normal, 200ms) ease,
|
|
152
|
+
width var(--matcha-duration-normal, 200ms) cubic-bezier(0.16, 1, 0.3, 1);
|
|
153
|
+
background-color: var(--matcha-color-surface);
|
|
154
|
+
color: var(--matcha-color-fg);
|
|
95
155
|
pointer-events: auto;
|
|
96
156
|
|
|
97
|
-
// Shadow
|
|
98
|
-
|
|
157
|
+
// Shadow inline (3 stacked) — Figma DSV3 spec exato pro drawer.
|
|
158
|
+
// Não usa --matcha-shadow-3 token porque o Figma drawer também usa inline
|
|
159
|
+
// (não bound a um effect style). Side/push modes removem via override.
|
|
160
|
+
box-shadow:
|
|
161
|
+
0 0 1px rgba(0, 0, 0, 0.08),
|
|
162
|
+
0 4px 16px rgba(0, 0, 0, 0.12),
|
|
163
|
+
0 16px 48px rgba(0, 0, 0, 0.16);
|
|
99
164
|
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
}
|
|
165
|
+
// Borda da edge só aparece no dark (var = 0/transparent no light, sem mudar layout).
|
|
166
|
+
border-right: var(--matcha-drawer-border);
|
|
103
167
|
|
|
104
|
-
// Position end (right)
|
|
168
|
+
// Position end (right) — overrides left:0 default
|
|
105
169
|
&.matcha-drawer-end {
|
|
170
|
+
left: auto;
|
|
106
171
|
right: 0;
|
|
107
172
|
transform: translate3d(100%, 0, 0);
|
|
108
173
|
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
border-left: var(--matcha-border-hairline, 1px) solid rgba(255, 255, 255, 0.06);
|
|
112
|
-
}
|
|
174
|
+
border-right: 0 solid transparent;
|
|
175
|
+
border-left: var(--matcha-drawer-border);
|
|
113
176
|
}
|
|
114
177
|
|
|
115
178
|
// Position bottom (bottom sheet)
|
|
@@ -119,28 +182,61 @@
|
|
|
119
182
|
right: 0;
|
|
120
183
|
bottom: 0;
|
|
121
184
|
width: 100%;
|
|
122
|
-
|
|
185
|
+
// 90% do container (relative ao matcha-drawer-container parent).
|
|
186
|
+
// Em produção (container = viewport via 100vh), == 90vh efetivo.
|
|
187
|
+
// Em playground/embed (container 360px), == 324px e respeita o frame.
|
|
188
|
+
// min() com fallback 90vh garante comportamento se parent for auto.
|
|
189
|
+
max-height: min(90vh, 90%);
|
|
123
190
|
border-radius: var(--matcha-radius-xl, 16px) var(--matcha-radius-xl, 16px) 0 0;
|
|
124
191
|
transform: translate3d(0, 100%, 0);
|
|
125
192
|
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
193
|
+
border-right: 0 solid transparent;
|
|
194
|
+
border-top: var(--matcha-drawer-border);
|
|
195
|
+
|
|
196
|
+
// safe-area-inset-bottom — iPhone X+ home indicator não cobre footer.
|
|
197
|
+
// Aplicado no slot footer porque é onde botões/CTAs ficam.
|
|
198
|
+
.matcha-drawer__slot--footer {
|
|
199
|
+
padding-block-end: max(var(--drawer-pad-y), env(safe-area-inset-bottom, var(--drawer-pad-y)));
|
|
131
200
|
}
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
// ── Drag handle (bottom sheet drag-to-dismiss) ──
|
|
204
|
+
// Real elemento (não pseudo) pra capturar pointer events. Renderiza só
|
|
205
|
+
// em position=bottom. 32×4 visual + 32×24 hit area via pad pra touch.
|
|
206
|
+
.matcha-drawer__handle {
|
|
207
|
+
display: none;
|
|
208
|
+
flex-shrink: 0;
|
|
209
|
+
width: 100%;
|
|
210
|
+
padding: var(--matcha-space-100, 8px) 0;
|
|
211
|
+
cursor: grab;
|
|
212
|
+
touch-action: none; // bloqueia scroll-pan vertical default no handle
|
|
213
|
+
user-select: none;
|
|
132
214
|
|
|
133
|
-
// Drag handle
|
|
134
215
|
&::before {
|
|
135
216
|
content: '';
|
|
136
217
|
display: block;
|
|
137
218
|
width: 32px;
|
|
138
219
|
height: 4px;
|
|
139
|
-
margin:
|
|
220
|
+
margin: 0 auto;
|
|
140
221
|
border-radius: var(--matcha-radius-sm, 2px);
|
|
141
|
-
background: var(--matcha-color-hint,
|
|
222
|
+
background: var(--matcha-color-hint, var(--matcha-color-text-muted));
|
|
142
223
|
opacity: 0.3;
|
|
143
224
|
}
|
|
225
|
+
|
|
226
|
+
&:active {
|
|
227
|
+
cursor: grabbing;
|
|
228
|
+
|
|
229
|
+
&::before { opacity: 0.5; }
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
&.matcha-drawer-bottom .matcha-drawer__handle {
|
|
234
|
+
display: block;
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
// Drag em andamento — desabilita transition pra seguir o dedo 1:1.
|
|
238
|
+
&.matcha-drawer--dragging {
|
|
239
|
+
transition: none !important;
|
|
144
240
|
}
|
|
145
241
|
|
|
146
242
|
// Opened state
|
|
@@ -154,68 +250,113 @@
|
|
|
154
250
|
z-index: 15;
|
|
155
251
|
}
|
|
156
252
|
|
|
157
|
-
// Mode: side — fixed, no shadow, border
|
|
253
|
+
// Mode: side — fixed, no shadow, border via surface-border token (DSV3 canônico).
|
|
158
254
|
&.matcha-drawer-side {
|
|
159
255
|
z-index: 10;
|
|
160
|
-
border-right: var(--matcha-border-hairline, 1px) solid var(--matcha-color-border,
|
|
256
|
+
border-right: var(--matcha-border-hairline, 1px) solid var(--matcha-color-surface-border, var(--matcha-color-border));
|
|
161
257
|
box-shadow: none;
|
|
162
258
|
|
|
163
259
|
&.matcha-drawer-end {
|
|
164
260
|
border-right: none;
|
|
165
|
-
border-left: var(--matcha-border-hairline, 1px) solid var(--matcha-color-border,
|
|
261
|
+
border-left: var(--matcha-border-hairline, 1px) solid var(--matcha-color-surface-border, var(--matcha-color-border));
|
|
166
262
|
}
|
|
167
263
|
}
|
|
168
264
|
|
|
169
|
-
// Mode: push — pushes content, border only
|
|
265
|
+
// Mode: push — pushes content, border only.
|
|
170
266
|
&.matcha-drawer-push {
|
|
171
|
-
border-right: var(--matcha-border-hairline, 1px) solid var(--matcha-color-border,
|
|
267
|
+
border-right: var(--matcha-border-hairline, 1px) solid var(--matcha-color-surface-border, var(--matcha-color-border));
|
|
172
268
|
box-shadow: none;
|
|
173
269
|
|
|
174
270
|
&.matcha-drawer-end {
|
|
175
271
|
border-right: none;
|
|
176
|
-
border-left: var(--matcha-border-hairline, 1px) solid var(--matcha-color-border,
|
|
272
|
+
border-left: var(--matcha-border-hairline, 1px) solid var(--matcha-color-surface-border, var(--matcha-color-border));
|
|
177
273
|
}
|
|
178
274
|
}
|
|
179
275
|
|
|
180
|
-
//
|
|
181
|
-
.matcha-drawer-
|
|
182
|
-
|
|
183
|
-
|
|
276
|
+
// Shake state — feedback visual quando ESC/backdrop bloqueados por disableClose.
|
|
277
|
+
// Animation roda 400ms, sobrepondo o transform: translate3d(0,0,0) do .matcha-drawer-opened.
|
|
278
|
+
// Após terminar, transform volta pro estado .matcha-drawer-opened normal.
|
|
279
|
+
&.matcha-drawer-shake {
|
|
280
|
+
animation: matcha-drawer-shake 400ms ease-in-out;
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
// ── Slot architecture (header / body / footer) ──
|
|
284
|
+
//
|
|
285
|
+
// CSS vars (consumer override sem !important):
|
|
286
|
+
// --drawer-pad-x / --drawer-pad-y → padding uniforme de cada slot
|
|
287
|
+
// --drawer-divider → border entre slots (default mostra)
|
|
288
|
+
//
|
|
289
|
+
// Cada slot tem padding UNIFORME (não asymmetric). Header e footer
|
|
290
|
+
// ganham border-bottom/top respectivamente — separação visual clara
|
|
291
|
+
// sem depender de gaps assimétricos. Pattern canônico Material/Antd.
|
|
292
|
+
//
|
|
293
|
+
// Defaults simétricos 20/20 (calibração 2026-05-08): alinha com card md
|
|
294
|
+
// e segue padrão DS moderno (Material 16, shadcn 24, Notion 16 — 20 é o
|
|
295
|
+
// sweet spot). Antes era 24/20 assimétrico — quirky e sem motivo claro.
|
|
296
|
+
--drawer-pad-x: var(--matcha-space-250, 20px);
|
|
297
|
+
--drawer-pad-y: var(--matcha-space-250, 20px);
|
|
298
|
+
--drawer-divider: var(--matcha-border-hairline, 1px) solid var(--matcha-color-surface-border, rgba(255, 255, 255, 0.12));
|
|
299
|
+
|
|
300
|
+
.matcha-drawer__slot {
|
|
184
301
|
display: flex;
|
|
185
302
|
flex-direction: column;
|
|
303
|
+
min-width: 0;
|
|
304
|
+
|
|
305
|
+
// Hide vazio (Chrome 105+/Safari 15.4+/FF 121+).
|
|
306
|
+
&:not(:has(*)) {
|
|
307
|
+
display: none;
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
// Header — fixo no topo (não scrolla com body). Border-bottom separa do body.
|
|
312
|
+
// Elemento projetado pelo consumer recebe flex row via `> *`.
|
|
313
|
+
.matcha-drawer__slot--header {
|
|
314
|
+
flex: 0 0 auto;
|
|
315
|
+
padding: var(--drawer-pad-y) var(--drawer-pad-x);
|
|
316
|
+
border-bottom: var(--drawer-divider);
|
|
317
|
+
color: var(--matcha-color-fg);
|
|
318
|
+
|
|
319
|
+
> * {
|
|
320
|
+
display: flex;
|
|
321
|
+
flex-direction: row;
|
|
322
|
+
align-items: center;
|
|
323
|
+
justify-content: space-between;
|
|
324
|
+
gap: var(--matcha-space-150, 12px);
|
|
325
|
+
width: 100%;
|
|
326
|
+
min-width: 0;
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
// Body — cresce e scrolla quando overflow.
|
|
331
|
+
.matcha-drawer__slot--body {
|
|
332
|
+
flex: 1 1 auto;
|
|
333
|
+
overflow-y: auto;
|
|
334
|
+
overflow-x: hidden;
|
|
335
|
+
padding: var(--drawer-pad-y) var(--drawer-pad-x);
|
|
336
|
+
color: var(--matcha-color-fg);
|
|
186
337
|
-webkit-overflow-scrolling: touch;
|
|
338
|
+
gap: var(--matcha-space-150, 12px);
|
|
187
339
|
}
|
|
188
|
-
}
|
|
189
340
|
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
gap: var(--matcha-space-150, 12px);
|
|
196
|
-
padding: var(--matcha-space-200, 16px) var(--matcha-space-300, 24px);
|
|
197
|
-
flex-shrink: 0;
|
|
198
|
-
color: var(--matcha-color-fg, #{getForeground($theme)});
|
|
199
|
-
}
|
|
341
|
+
// Footer — fixo no bottom. Border-top separa do body.
|
|
342
|
+
.matcha-drawer__slot--footer {
|
|
343
|
+
flex: 0 0 auto;
|
|
344
|
+
padding: var(--drawer-pad-y) var(--drawer-pad-x);
|
|
345
|
+
border-top: var(--drawer-divider);
|
|
200
346
|
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
347
|
+
> * {
|
|
348
|
+
display: flex;
|
|
349
|
+
flex-direction: row;
|
|
350
|
+
align-items: center;
|
|
351
|
+
justify-content: flex-end;
|
|
352
|
+
gap: var(--matcha-space-150, 12px);
|
|
353
|
+
width: 100%;
|
|
354
|
+
min-width: 0;
|
|
355
|
+
flex-wrap: wrap;
|
|
356
|
+
}
|
|
357
|
+
}
|
|
208
358
|
}
|
|
209
359
|
|
|
210
|
-
// ── Drawer footer ──
|
|
211
|
-
.matcha-drawer-footer {
|
|
212
|
-
display: flex;
|
|
213
|
-
align-items: center;
|
|
214
|
-
justify-content: flex-end;
|
|
215
|
-
gap: var(--matcha-space-150, 12px);
|
|
216
|
-
padding: var(--matcha-space-200, 16px) var(--matcha-space-300, 24px);
|
|
217
|
-
flex-shrink: 0;
|
|
218
|
-
}
|
|
219
360
|
|
|
220
361
|
// ── Drawer content (main page) ──
|
|
221
362
|
matcha-drawer-content {
|
|
@@ -229,7 +370,7 @@
|
|
|
229
370
|
|
|
230
371
|
// ── Focus ring ──
|
|
231
372
|
matcha-drawer:focus-visible {
|
|
232
|
-
outline: var(--matcha-state-focus-ring-width, 2px) solid var(--matcha-color-accent
|
|
373
|
+
outline: var(--matcha-state-focus-ring-width, 2px) solid var(--matcha-color-accent);
|
|
233
374
|
outline-offset: var(--matcha-state-focus-ring-offset, 2px);
|
|
234
375
|
}
|
|
235
376
|
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
@use "sass:map";
|
|
2
|
+
|
|
3
|
+
// =============================================================================
|
|
4
|
+
// matcha-drop-image — Estilos completos vivem no próprio componente
|
|
5
|
+
// (drop-image.component.scss com ViewEncapsulation.None).
|
|
6
|
+
//
|
|
7
|
+
// Esse arquivo mantém apenas o mixin no-op pra preservar a chamada @include
|
|
8
|
+
// no main.scss sem quebrar. Quando o componente DSV3 amadurecer e precisar de
|
|
9
|
+
// theme-specific styling (light/dark sass-side), retornar aqui.
|
|
10
|
+
// =============================================================================
|
|
11
|
+
|
|
12
|
+
@mixin matcha-drop-image-theme($theme) {
|
|
13
|
+
// No-op — estilos no componente.
|
|
14
|
+
}
|
|
@@ -6,7 +6,6 @@
|
|
|
6
6
|
|
|
7
7
|
// Mixin para cores e temas
|
|
8
8
|
@mixin matcha-drop-list-theme($theme) {
|
|
9
|
-
$is-dark: map.get($theme, is-dark);
|
|
10
9
|
|
|
11
10
|
// =============================================================================
|
|
12
11
|
// COMPONENTE PRINCIPAL
|
|
@@ -33,8 +32,8 @@
|
|
|
33
32
|
transition: background-color 0.2s ease, border-color 0.2s ease, padding 0.2s ease;
|
|
34
33
|
|
|
35
34
|
&.matcha-drop-list-receiving {
|
|
36
|
-
background-color:
|
|
37
|
-
border-color: var(--matcha-color-accent
|
|
35
|
+
background-color: var(--matcha-color-primary-alpha);
|
|
36
|
+
border-color: var(--matcha-color-accent);
|
|
38
37
|
border-width: 2px;
|
|
39
38
|
border-style: dashed;
|
|
40
39
|
border-radius: var(--matcha-radius-lg, 8px);
|
|
@@ -50,12 +49,12 @@
|
|
|
50
49
|
bottom: 0;
|
|
51
50
|
background: linear-gradient(45deg,
|
|
52
51
|
transparent 25%,
|
|
53
|
-
|
|
54
|
-
|
|
52
|
+
var(--matcha-color-primary-alpha) 25%,
|
|
53
|
+
var(--matcha-color-primary-alpha) 50%,
|
|
55
54
|
transparent 50%,
|
|
56
55
|
transparent 75%,
|
|
57
|
-
|
|
58
|
-
|
|
56
|
+
var(--matcha-color-primary-alpha) 75%,
|
|
57
|
+
var(--matcha-color-primary-alpha));
|
|
59
58
|
background-size: 16px 16px;
|
|
60
59
|
animation: drop-zone-animation 2s linear infinite;
|
|
61
60
|
border-radius: var(--matcha-radius-md, 4px);
|
|
@@ -65,19 +64,19 @@
|
|
|
65
64
|
|
|
66
65
|
// Estados de aceitação de drop
|
|
67
66
|
&.matcha-drop-list-can-accept {
|
|
68
|
-
background-color:
|
|
69
|
-
border-color:
|
|
67
|
+
background-color: var(--matcha-color-success-alpha);
|
|
68
|
+
border-color: var(--matcha-color-success);
|
|
70
69
|
cursor: copy;
|
|
71
70
|
|
|
72
71
|
&::before {
|
|
73
72
|
background: linear-gradient(45deg,
|
|
74
73
|
transparent 25%,
|
|
75
|
-
|
|
76
|
-
|
|
74
|
+
var(--matcha-color-success-alpha) 25%,
|
|
75
|
+
var(--matcha-color-success-alpha) 50%,
|
|
77
76
|
transparent 50%,
|
|
78
77
|
transparent 75%,
|
|
79
|
-
|
|
80
|
-
|
|
78
|
+
var(--matcha-color-success-alpha) 75%,
|
|
79
|
+
var(--matcha-color-success-alpha));
|
|
81
80
|
background-size: 16px 16px;
|
|
82
81
|
animation: drop-zone-animation 1.5s linear infinite;
|
|
83
82
|
opacity: 0.5;
|
|
@@ -87,20 +86,20 @@
|
|
|
87
86
|
|
|
88
87
|
|
|
89
88
|
&.matcha-drop-list-cannot-accept {
|
|
90
|
-
background-color:
|
|
91
|
-
border-color:
|
|
89
|
+
background-color: var(--matcha-color-danger-alpha);
|
|
90
|
+
border-color: var(--matcha-color-danger);
|
|
92
91
|
pointer-events: none;
|
|
93
92
|
cursor: default;
|
|
94
93
|
|
|
95
94
|
&::before {
|
|
96
95
|
background: linear-gradient(45deg,
|
|
97
96
|
transparent 25%,
|
|
98
|
-
|
|
99
|
-
|
|
97
|
+
var(--matcha-color-danger-alpha) 25%,
|
|
98
|
+
var(--matcha-color-danger-alpha) 50%,
|
|
100
99
|
transparent 50%,
|
|
101
100
|
transparent 75%,
|
|
102
|
-
|
|
103
|
-
|
|
101
|
+
var(--matcha-color-danger-alpha) 75%,
|
|
102
|
+
var(--matcha-color-danger-alpha));
|
|
104
103
|
background-size: 16px 16px;
|
|
105
104
|
animation: drop-zone-animation 0.8s linear infinite;
|
|
106
105
|
opacity: 0.6;
|
|
@@ -108,13 +107,54 @@
|
|
|
108
107
|
}
|
|
109
108
|
|
|
110
109
|
&.matcha-drop-list-disabled {
|
|
111
|
-
color: var(--matcha-color-disabled-fg
|
|
112
|
-
background-color: var(--matcha-color-disabled-bg
|
|
110
|
+
color: var(--matcha-color-disabled-fg);
|
|
111
|
+
background-color: var(--matcha-color-disabled-bg);
|
|
113
112
|
pointer-events: none;
|
|
114
113
|
cursor: default;
|
|
115
114
|
}
|
|
116
115
|
}
|
|
117
116
|
|
|
117
|
+
// =============================================================================
|
|
118
|
+
// DROP ZONE (matchaDropZone directive — reparenting target)
|
|
119
|
+
// =============================================================================
|
|
120
|
+
|
|
121
|
+
.matcha-drop-zone-cannot-accept {
|
|
122
|
+
border: 2px dashed var(--matcha-color-danger) !important;
|
|
123
|
+
border-radius: 8px;
|
|
124
|
+
background-color: var(--matcha-color-danger-alpha);
|
|
125
|
+
cursor: not-allowed;
|
|
126
|
+
transition: background-color 0.15s linear, border-color 0.15s linear;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
// Fix C: quando o drop zone pai está rejeitado (vermelho), a lista filha
|
|
130
|
+
// recebendo o drag também deve ficar vermelha — não verde.
|
|
131
|
+
.matcha-drop-zone-cannot-accept .matcha-drop-list-container.matcha-drop-list-receiving {
|
|
132
|
+
background-color: var(--matcha-color-danger-alpha);
|
|
133
|
+
border-color: var(--matcha-color-danger);
|
|
134
|
+
|
|
135
|
+
&::before {
|
|
136
|
+
background: linear-gradient(45deg,
|
|
137
|
+
transparent 25%, var(--matcha-color-danger-alpha) 25%, var(--matcha-color-danger-alpha) 50%,
|
|
138
|
+
transparent 50%, transparent 75%, var(--matcha-color-danger-alpha) 75%, var(--matcha-color-danger-alpha));
|
|
139
|
+
background-size: 16px 16px;
|
|
140
|
+
animation: drop-zone-animation 0.8s linear infinite;
|
|
141
|
+
opacity: 0.6;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
// =============================================================================
|
|
146
|
+
// GHOST CLONE (criado dinamicamente no body durante o drag)
|
|
147
|
+
// =============================================================================
|
|
148
|
+
|
|
149
|
+
.matcha-drag-ghost {
|
|
150
|
+
pointer-events: none;
|
|
151
|
+
opacity: 0.85;
|
|
152
|
+
z-index: 9999;
|
|
153
|
+
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.18);
|
|
154
|
+
border-radius: var(--matcha-radius-md, 4px);
|
|
155
|
+
will-change: transform;
|
|
156
|
+
}
|
|
157
|
+
|
|
118
158
|
// =============================================================================
|
|
119
159
|
// ITENS ARRASTÁVEIS — Template A
|
|
120
160
|
// =============================================================================
|
|
@@ -127,8 +167,8 @@
|
|
|
127
167
|
overflow: hidden;
|
|
128
168
|
transition: box-shadow 0.2s ease, transform 0.2s ease, opacity 0.2s ease;
|
|
129
169
|
user-select: none;
|
|
130
|
-
background-color: var(--matcha-color-surface
|
|
131
|
-
color: var(--matcha-color-fg
|
|
170
|
+
background-color: var(--matcha-color-surface);
|
|
171
|
+
color: var(--matcha-color-fg);
|
|
132
172
|
|
|
133
173
|
// State layer (Template A)
|
|
134
174
|
&::before {
|
|
@@ -150,7 +190,7 @@
|
|
|
150
190
|
&:active:not([disabled])::before { opacity: var(--matcha-state-active, 0.12); }
|
|
151
191
|
|
|
152
192
|
&:focus-visible:not([disabled]) {
|
|
153
|
-
outline: var(--matcha-state-focus-ring-width, 2px) solid var(--matcha-color-accent
|
|
193
|
+
outline: var(--matcha-state-focus-ring-width, 2px) solid var(--matcha-color-accent);
|
|
154
194
|
outline-offset: var(--matcha-state-focus-ring-offset, 2px);
|
|
155
195
|
}
|
|
156
196
|
|
|
@@ -162,8 +202,8 @@
|
|
|
162
202
|
z-index: 1000;
|
|
163
203
|
cursor: grabbing;
|
|
164
204
|
position: relative;
|
|
165
|
-
box-shadow: 0 8px 25px
|
|
166
|
-
background-color: var(--matcha-color-surface
|
|
205
|
+
box-shadow: 0 8px 25px var(--matcha-color-text-muted);
|
|
206
|
+
background-color: var(--matcha-color-surface);
|
|
167
207
|
transform: scale(1.02);
|
|
168
208
|
opacity: 0.95;
|
|
169
209
|
|
|
@@ -175,7 +215,7 @@
|
|
|
175
215
|
border-radius: var(--matcha-radius-lg, 8px);
|
|
176
216
|
z-index: -1;
|
|
177
217
|
opacity: 0.1;
|
|
178
|
-
background: linear-gradient(45deg,
|
|
218
|
+
background: linear-gradient(45deg, var(--matcha-color-surface), var(--matcha-color-primary));
|
|
179
219
|
animation: drag-glow 1s ease-in-out infinite alternate;
|
|
180
220
|
}
|
|
181
221
|
}
|
|
@@ -183,15 +223,15 @@
|
|
|
183
223
|
&.matcha-drag-disabled {
|
|
184
224
|
pointer-events: none;
|
|
185
225
|
cursor: default;
|
|
186
|
-
color: var(--matcha-color-disabled-fg
|
|
187
|
-
background-color: var(--matcha-color-disabled-bg
|
|
226
|
+
color: var(--matcha-color-disabled-fg);
|
|
227
|
+
background-color: var(--matcha-color-disabled-bg);
|
|
188
228
|
}
|
|
189
229
|
|
|
190
230
|
&.disabled-item {
|
|
191
231
|
pointer-events: none;
|
|
192
232
|
cursor: default;
|
|
193
|
-
color: var(--matcha-color-disabled-fg
|
|
194
|
-
background-color: var(--matcha-color-disabled-bg
|
|
233
|
+
color: var(--matcha-color-disabled-fg);
|
|
234
|
+
background-color: var(--matcha-color-disabled-bg);
|
|
195
235
|
}
|
|
196
236
|
}
|
|
197
237
|
|
|
@@ -225,7 +265,7 @@
|
|
|
225
265
|
|
|
226
266
|
.item-title {
|
|
227
267
|
font-weight: 500;
|
|
228
|
-
color: var(--matcha-color-fg
|
|
268
|
+
color: var(--matcha-color-fg);
|
|
229
269
|
|
|
230
270
|
&.completed {
|
|
231
271
|
text-decoration: line-through;
|
|
@@ -236,13 +276,13 @@
|
|
|
236
276
|
.item-id {
|
|
237
277
|
font-size: var(--matcha-text-body-sm, 12px);
|
|
238
278
|
font-family: monospace;
|
|
239
|
-
color:
|
|
279
|
+
color: var(--matcha-color-text-muted);
|
|
240
280
|
}
|
|
241
281
|
|
|
242
282
|
small {
|
|
243
|
-
font-size: var(--matcha-text-
|
|
283
|
+
font-size: var(--matcha-text-p-tiny, 11px);
|
|
244
284
|
font-style: italic;
|
|
245
|
-
color:
|
|
285
|
+
color: var(--matcha-color-fg-alpha);
|
|
246
286
|
}
|
|
247
287
|
}
|
|
248
288
|
|
|
@@ -276,7 +316,7 @@
|
|
|
276
316
|
pointer-events: none;
|
|
277
317
|
margin: 0;
|
|
278
318
|
border-radius: var(--matcha-radius-sm, 2px);
|
|
279
|
-
background-color: var(--matcha-color-accent
|
|
319
|
+
background-color: var(--matcha-color-accent);
|
|
280
320
|
|
|
281
321
|
&.active {
|
|
282
322
|
opacity: 1;
|
|
@@ -305,19 +345,19 @@
|
|
|
305
345
|
font-size: var(--matcha-text-body-md, 14px);
|
|
306
346
|
border-radius: var(--matcha-radius-md, 4px);
|
|
307
347
|
transition: color 0.2s ease, border-color 0.2s ease, background-color 0.2s ease;
|
|
308
|
-
color:
|
|
309
|
-
border-color:
|
|
348
|
+
color: var(--matcha-color-text-muted);
|
|
349
|
+
border-color: var(--matcha-color-fg-alpha);
|
|
310
350
|
|
|
311
351
|
&.can-accept {
|
|
312
|
-
color:
|
|
313
|
-
border-color:
|
|
314
|
-
background-color:
|
|
352
|
+
color: var(--matcha-color-success);
|
|
353
|
+
border-color: var(--matcha-color-success);
|
|
354
|
+
background-color: var(--matcha-color-success-alpha);
|
|
315
355
|
}
|
|
316
356
|
|
|
317
357
|
&.cannot-accept {
|
|
318
|
-
color:
|
|
319
|
-
border-color:
|
|
320
|
-
background-color:
|
|
358
|
+
color: var(--matcha-color-danger);
|
|
359
|
+
border-color: var(--matcha-color-danger);
|
|
360
|
+
background-color: var(--matcha-color-danger-alpha);
|
|
321
361
|
animation: shake 0.5s ease-in-out;
|
|
322
362
|
}
|
|
323
363
|
}
|
|
@@ -329,12 +369,12 @@
|
|
|
329
369
|
|
|
330
370
|
@media (prefers-contrast: high) {
|
|
331
371
|
.matcha-drop-list-container.matcha-drop-list-receiving {
|
|
332
|
-
border-color: var(--matcha-color-fg
|
|
333
|
-
background-color:
|
|
372
|
+
border-color: var(--matcha-color-fg);
|
|
373
|
+
background-color: var(--matcha-color-fg-alpha);
|
|
334
374
|
}
|
|
335
375
|
|
|
336
376
|
.matcha-drag-item.matcha-drag-dragging {
|
|
337
|
-
border: 2px solid var(--matcha-color-fg
|
|
377
|
+
border: 2px solid var(--matcha-color-fg);
|
|
338
378
|
}
|
|
339
379
|
}
|
|
340
380
|
}
|