matcha-theme 19.110.0 → 19.112.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.
@@ -0,0 +1,366 @@
1
+ // =============================================================================
2
+ // MATCHA DROP LIST STYLES
3
+ // =============================================================================
4
+
5
+ // Mixin para cores e temas
6
+ @mixin matcha-drop-list-theme($theme) {
7
+ $primary: map-get($theme, primary);
8
+ $accent: map-get($theme, accent);
9
+ $warn: map-get($theme, warn);
10
+ $background: map-get($theme, background);
11
+ $foreground: map-get($theme, foreground);
12
+
13
+ // =============================================================================
14
+ // COMPONENTE PRINCIPAL
15
+ // =============================================================================
16
+
17
+ .matcha-drop-list {
18
+ display: block;
19
+ position: relative;
20
+ }
21
+
22
+ // =============================================================================
23
+ // CONTAINER DAS LISTAS
24
+ // =============================================================================
25
+
26
+ .matcha-drop-list-container {
27
+ position: relative;
28
+ min-height: 48px;
29
+ display: flex;
30
+ flex-direction: column;
31
+ gap: 16px;
32
+ padding: 0px;
33
+ border-radius: 8px;
34
+ border-width: 0px;
35
+ transition: all 0.2s ease;
36
+
37
+ &.matcha-drop-list-receiving {
38
+ background-color: getPrimaryAlpha($theme);
39
+ border-color: getPrimary($theme);
40
+ border-width: 2px;
41
+ border-style: dashed;
42
+ border-radius: 8px;
43
+ padding: 8px;
44
+ transition: all 0.2s ease;
45
+
46
+ &::before {
47
+ content: '';
48
+ position: absolute;
49
+ top: 0;
50
+ left: 0;
51
+ right: 0;
52
+ bottom: 0;
53
+ background: linear-gradient(45deg,
54
+ transparent 25%,
55
+ getPrimaryAlpha($theme) 25%,
56
+ getPrimaryAlpha($theme) 50%,
57
+ transparent 50%,
58
+ transparent 75%,
59
+ getPrimaryAlpha($theme) 75%,
60
+ getPrimaryAlpha($theme));
61
+ background-size: 16px 16px;
62
+ animation: drop-zone-animation 2s linear infinite;
63
+ border-radius: 6px;
64
+ opacity: 0.4;
65
+ }
66
+ }
67
+
68
+ // Estados de aceitação de drop
69
+ &.matcha-drop-list-can-accept {
70
+ background-color: getGreenAlpha($theme);
71
+ border-color: getGreen($theme);
72
+ cursor: copy;
73
+
74
+ &::before {
75
+ background: linear-gradient(45deg,
76
+ transparent 25%,
77
+ getGreenAlpha($theme) 25%,
78
+ getGreenAlpha($theme) 50%,
79
+ transparent 50%,
80
+ transparent 75%,
81
+ getGreenAlpha($theme) 75%,
82
+ getGreenAlpha($theme));
83
+ background-size: 16px 16px;
84
+ animation: drop-zone-animation 1.5s linear infinite;
85
+ opacity: 0.5;
86
+ }
87
+ }
88
+
89
+
90
+
91
+ &.matcha-drop-list-cannot-accept {
92
+ background-color: getRedAlpha($theme);
93
+ border-color: getRed($theme);
94
+ cursor: not-allowed;
95
+
96
+ &::before {
97
+ background: linear-gradient(45deg,
98
+ transparent 25%,
99
+ getRedAlpha($theme) 25%,
100
+ getRedAlpha($theme) 50%,
101
+ transparent 50%,
102
+ transparent 75%,
103
+ getRedAlpha($theme) 75%,
104
+ getRedAlpha($theme));
105
+ background-size: 16px 16px;
106
+ animation: drop-zone-animation 0.8s linear infinite;
107
+ opacity: 0.6;
108
+ }
109
+ }
110
+
111
+ &.matcha-drop-list-disabled {
112
+ opacity: 0.6;
113
+ pointer-events: none;
114
+ }
115
+ }
116
+
117
+ // =============================================================================
118
+ // ITENS ARRASTÁVEIS
119
+ // =============================================================================
120
+
121
+ .matcha-drag-item {
122
+ position: relative;
123
+ display: flex;
124
+ padding: 12px;
125
+ border-radius: 6px;
126
+ transition: all 0.2s ease;
127
+ user-select: none;
128
+ background-color: getSurface($theme);
129
+ color: getForeground($theme);
130
+
131
+ &:last-child {
132
+ margin-bottom: 0;
133
+ }
134
+
135
+ &:hover {
136
+ // box-shadow: 0 0 0 8px getForegroundAlpha($theme);
137
+ }
138
+
139
+ &.matcha-drag-dragging {
140
+ z-index: 1000;
141
+ cursor: grabbing;
142
+ position: relative;
143
+ box-shadow: 0 8px 25px getDisabledContrastAlpha($theme);
144
+ background-color: getSurface($theme);
145
+ transform: scale(1.02);
146
+ opacity: 0.95;
147
+
148
+ // Efeito de destaque sutil
149
+ &::before {
150
+ content: '';
151
+ position: absolute;
152
+ top: 0px;
153
+ left: 0px;
154
+ right: 0px;
155
+ bottom: 0px;
156
+ border-radius: 8px;
157
+ z-index: -1;
158
+ opacity: 0.1;
159
+ background: linear-gradient(45deg, getSurface($theme), getPrimary($theme));
160
+ animation: drag-glow 1s ease-in-out infinite alternate;
161
+ }
162
+ }
163
+
164
+ &.matcha-drag-disabled {
165
+ cursor: not-allowed;
166
+ opacity: 0.7;
167
+ }
168
+
169
+ &.disabled-item {
170
+ cursor: not-allowed;
171
+ opacity: 0.7;
172
+ }
173
+ }
174
+
175
+ // =============================================================================
176
+ // HANDLE DE DRAG
177
+ // =============================================================================
178
+
179
+ .matcha-drag-handle {
180
+ cursor: grab;
181
+ touch-action: none;
182
+
183
+ &:active {
184
+ cursor: grabbing;
185
+ }
186
+
187
+ &.disabled {
188
+ cursor: not-allowed;
189
+ }
190
+ }
191
+
192
+ // =============================================================================
193
+ // CONTEÚDO DOS ITENS
194
+ // =============================================================================
195
+
196
+ .item-content {
197
+ flex: 1;
198
+ display: flex;
199
+ flex-direction: column;
200
+ gap: 4px;
201
+
202
+ .item-title {
203
+ font-weight: 500;
204
+ color: getForeground($theme);
205
+
206
+ &.completed {
207
+ text-decoration: line-through;
208
+ opacity: 0.7;
209
+ }
210
+ }
211
+
212
+ .item-id {
213
+ font-size: 12px;
214
+ font-family: monospace;
215
+ color: getDisabledContrastAlpha($theme);
216
+ }
217
+
218
+ small {
219
+ font-size: 11px;
220
+ font-style: italic;
221
+ color: getForegroundAlpha($theme);
222
+ }
223
+ }
224
+
225
+ // =============================================================================
226
+ // AÇÕES DOS ITENS
227
+ // =============================================================================
228
+
229
+ .item-actions {
230
+ display: flex;
231
+ align-items: center;
232
+ gap: 8px;
233
+
234
+ i {
235
+ font-size: 18px;
236
+ }
237
+ }
238
+
239
+ // =============================================================================
240
+ // INDICADOR DE DROP
241
+ // =============================================================================
242
+
243
+ .matcha-drop-indicator {
244
+ position: absolute;
245
+ left: 0;
246
+ right: 0;
247
+ height: 2px;
248
+ opacity: 0;
249
+ transition: opacity 0.2s ease;
250
+ transform: translateY(-8px);
251
+ z-index: 1000;
252
+ pointer-events: none;
253
+ margin: 0;
254
+ border-radius: 1px;
255
+ background-color: getAccent($theme);
256
+
257
+ &.active {
258
+ opacity: 1;
259
+ }
260
+ }
261
+
262
+ // =============================================================================
263
+ // PLACEHOLDER PARA LISTAS VAZIAS
264
+ // =============================================================================
265
+
266
+ .matcha-drop-list-placeholder {
267
+ position: absolute;
268
+ top: 0;
269
+ left: 0;
270
+ right: 0;
271
+ bottom: 0;
272
+ display: flex;
273
+ align-items: center;
274
+ justify-content: center;
275
+ z-index: 10;
276
+
277
+ .matcha-drop-list-empty-placeholder {
278
+ font-style: italic;
279
+ padding: 20px;
280
+ text-align: center;
281
+ font-size: 14px;
282
+ border-radius: 4px;
283
+ transition: all 0.2s ease;
284
+ color: getDisabledContrastAlpha($theme);
285
+ border-color: getForegroundAlpha($theme);
286
+
287
+ &.can-accept {
288
+ color: getGreen($theme);
289
+ border-color: getGreen($theme);
290
+ background-color: getGreenAlpha($theme);
291
+ }
292
+
293
+ &.cannot-accept {
294
+ color: getRed($theme);
295
+ border-color: getRed($theme);
296
+ background-color: getRedAlpha($theme);
297
+ animation: shake 0.5s ease-in-out;
298
+ }
299
+ }
300
+ }
301
+
302
+ // =============================================================================
303
+ // HIGH CONTRAST MODE SUPPORT
304
+ // =============================================================================
305
+
306
+ @media (prefers-contrast: high) {
307
+ .matcha-drop-list-container.matcha-drop-list-receiving {
308
+ border-color: getForeground($theme);
309
+ background-color: getForegroundAlpha($theme);
310
+ }
311
+
312
+ .matcha-drag-item.matcha-drag-dragging {
313
+ border: 2px solid getForeground($theme);
314
+ }
315
+ }
316
+ }
317
+
318
+ // =============================================================================
319
+ // ANIMAÇÕES
320
+ // =============================================================================
321
+
322
+ @keyframes drop-zone-animation {
323
+ 0% {
324
+ background-position: 0 0;
325
+ }
326
+ 100% {
327
+ background-position: 32px 0, 32px 0, 32px 0;
328
+ }
329
+ }
330
+
331
+ @keyframes pulse-reject {
332
+ 0% {
333
+ opacity: 0.5;
334
+ transform: scaleY(1);
335
+ }
336
+
337
+ 100% {
338
+ opacity: 1;
339
+ transform: scaleY(1.5);
340
+ }
341
+ }
342
+
343
+ @keyframes shake {
344
+ 0%,
345
+ 100% {
346
+ transform: translateX(0);
347
+ }
348
+
349
+ 25% {
350
+ transform: translateX(-2px);
351
+ }
352
+
353
+ 75% {
354
+ transform: translateX(2px);
355
+ }
356
+ }
357
+
358
+ @keyframes drag-glow {
359
+ 0% {
360
+ opacity: 0.1;
361
+ }
362
+
363
+ 100% {
364
+ opacity: 0.3;
365
+ }
366
+ }
@@ -0,0 +1,29 @@
1
+ @mixin matcha-skeleton-theme($theme) {
2
+ $is-dark: map-get($theme, is-dark);
3
+ $primary: map-get($theme, primary);
4
+ $accent: map-get($theme, accent);
5
+ $warn: map-get($theme, warn);
6
+ $background: map-get($theme, background);
7
+ $foreground: map-get($theme, foreground);
8
+
9
+
10
+ .skeleton-animated-background {
11
+ background: linear-gradient(
12
+ to right,
13
+ map-get($background, disabled),
14
+ #ffffff11,
15
+ map-get($background, disabled)
16
+ );
17
+ background-size: 200% 100%;
18
+ animation: gradientAnimation 1s linear infinite;
19
+ }
20
+
21
+ @keyframes gradientAnimation {
22
+ 0% {
23
+ background-position: 100% 0;
24
+ }
25
+ 100% {
26
+ background-position: -100% 0;
27
+ }
28
+ }
29
+ }
package/main.scss CHANGED
@@ -27,12 +27,14 @@
27
27
  @import "./components/matcha-cards.scss"; // matcha-cards-theme($theme)
28
28
  @import "./components/matcha-color-pick.scss"; // matcha-color-pick-theme($theme)
29
29
  @import "./components/matcha-draggable.scss"; // matcha-draggable-theme($theme)
30
+ @import "./components/matcha-drop-list.scss"; // matcha-drop-list-theme($theme)
30
31
  @import "./components/matcha-header.scss"; // matcha-header-theme($theme)
31
32
  @import "./components/matcha-horizontal-tree.scss"; // matcha-horizontal-tree-theme($theme)
32
33
  @import "./components/matcha-menu.scss"; // matcha-menu-theme($theme)
33
34
  @import "./components/matcha-progress-bar.scss"; // matcha-progress-bar-theme($theme)
34
35
  @import "./components/matcha-scrollbar.scss"; // matcha-scrollbar-theme($theme)
35
36
  @import "./components/matcha-scrollbox-shadow.scss"; // matcha-scrollbox-shadow-theme($theme)
37
+ @import "./components/matcha-skeleton.scss"; // matcha-skeleton-theme($theme)
36
38
  @import "./components/matcha-table.scss"; // matcha-table-theme($theme)
37
39
  @import "./components/matcha-tooltip.scss"; // matcha-tooltip-theme($theme)
38
40
  @import "./components/matcha-form-field.scss";
@@ -141,6 +143,7 @@
141
143
  @include matcha-tooltip-theme($theme);
142
144
  @include matcha-header-theme($theme);
143
145
  @include matcha-menu-theme($theme);
146
+ @include matcha-drop-list-theme($theme);
144
147
  @include matcha-form-field($theme);
145
148
  @include matcha-checkbox($theme);
146
149
  @include matcha-spin($theme);
@@ -148,4 +151,5 @@
148
151
  @include matcha-slide-toggle-theme($theme);
149
152
  @include matcha-tabs($theme);
150
153
  @include matcha-modal-theme($theme);
154
+ @include matcha-skeleton-theme($theme);
151
155
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "matcha-theme",
3
- "version": "19.110.0",
3
+ "version": "19.112.0",
4
4
  "description": "Themes for matcha-design-system",
5
5
  "main": "main.scss",
6
6
  "scripts": {