@inchurch/matcha-theme 21.3.3 → 22.0.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 (93) hide show
  1. package/abstracts/_colors.scss +236 -229
  2. package/abstracts/_elevation.scss +108 -108
  3. package/abstracts/_functions.scss +321 -321
  4. package/abstracts/_media-breakpoint.scss +26 -26
  5. package/abstracts/_theme-api.scss +219 -219
  6. package/abstracts/_typography.scss +128 -128
  7. package/base/_reset.scss +445 -432
  8. package/components/app-page-header.scss +260 -260
  9. package/components/matcha-accordion.scss +293 -293
  10. package/components/matcha-audio-player.scss +31 -31
  11. package/components/matcha-autocomplete.scss +145 -145
  12. package/components/matcha-avatar.scss +440 -301
  13. package/components/matcha-badge.scss +120 -120
  14. package/components/matcha-breadcrumb.scss +231 -231
  15. package/components/matcha-button-toggle.scss +384 -384
  16. package/components/matcha-buttons.scss +913 -913
  17. package/components/matcha-calendar.scss +218 -218
  18. package/components/matcha-cards.scss +230 -230
  19. package/components/matcha-chart-card.scss +53 -53
  20. package/components/matcha-checkbox.scss +255 -255
  21. package/components/matcha-chip.scss +292 -292
  22. package/components/matcha-color-pick.scss +34 -34
  23. package/components/matcha-command-palette.scss +316 -316
  24. package/components/matcha-crop.scss +406 -406
  25. package/components/matcha-date.scss +81 -81
  26. package/components/matcha-divider.scss +100 -100
  27. package/components/matcha-draggable.scss +23 -23
  28. package/components/matcha-drawer.scss +376 -376
  29. package/components/matcha-drop-image.scss +14 -14
  30. package/components/matcha-drop-list.scss +430 -430
  31. package/components/matcha-emoji.scss +69 -69
  32. package/components/matcha-empty-state.scss +230 -230
  33. package/components/matcha-file-uploader.scss +471 -471
  34. package/components/matcha-flag.scss +103 -103
  35. package/components/matcha-footer.scss +91 -91
  36. package/components/matcha-form-field.scss +606 -606
  37. package/components/matcha-form-section.scss +100 -100
  38. package/components/matcha-header.scss +135 -135
  39. package/components/matcha-highlight.scss +164 -164
  40. package/components/matcha-hint-text.scss +90 -90
  41. package/components/matcha-horizontal-tree.scss +316 -316
  42. package/components/matcha-icon.scss +98 -98
  43. package/components/matcha-image.scss +61 -61
  44. package/components/matcha-list.scss +211 -211
  45. package/components/matcha-menu.scss +99 -99
  46. package/components/matcha-modal.scss +210 -210
  47. package/components/matcha-nav.scss +581 -581
  48. package/components/matcha-notification.scss +413 -413
  49. package/components/matcha-option.scss +170 -170
  50. package/components/matcha-page-builder.scss +4196 -4196
  51. package/components/matcha-paginator.scss +689 -689
  52. package/components/matcha-panel.scss +194 -194
  53. package/components/matcha-profile-card.scss +50 -50
  54. package/components/matcha-progress-bar.scss +313 -313
  55. package/components/matcha-radio.scss +320 -320
  56. package/components/matcha-ripple.scss +7 -7
  57. package/components/matcha-scrollbar.scss +33 -33
  58. package/components/matcha-scrollbox-shadow.scss +120 -120
  59. package/components/matcha-section.scss +102 -102
  60. package/components/matcha-select-multiple.scss +56 -56
  61. package/components/matcha-select.scss +667 -667
  62. package/components/matcha-skeleton.scss +155 -155
  63. package/components/matcha-slide-toggle.scss +369 -369
  64. package/components/matcha-slider.scss +285 -285
  65. package/components/matcha-snack-bar.scss +259 -259
  66. package/components/matcha-spin.scss +164 -164
  67. package/components/matcha-spinner.scss +97 -97
  68. package/components/matcha-status-pill.scss +38 -18
  69. package/components/matcha-stepper.scss +376 -376
  70. package/components/matcha-table-cell.scss +74 -41
  71. package/components/matcha-table.scss +579 -578
  72. package/components/matcha-tabs.scss +600 -600
  73. package/components/matcha-text-editor.scss +105 -105
  74. package/components/matcha-time.scss +33 -33
  75. package/components/matcha-timepicker.scss +13 -13
  76. package/components/matcha-toolbar.scss +359 -359
  77. package/components/matcha-tooltip.scss +224 -224
  78. package/components/matcha-tree-view.scss +257 -212
  79. package/layout/matcha-page-layout.scss +778 -778
  80. package/main.scss +329 -329
  81. package/package.json +1 -1
  82. package/tokens/_animations-tokens.scss +37 -37
  83. package/tokens/_breakpoints-tokens.scss +35 -35
  84. package/tokens/_color-tokens.scss +274 -261
  85. package/tokens/_elevation-tokens.scss +33 -33
  86. package/tokens/_emit-tokens.scss +324 -324
  87. package/tokens/_material-palette.scss +1149 -1149
  88. package/tokens/_primitives.scss +98 -98
  89. package/tokens/_semantic-aliases.scss +120 -120
  90. package/tokens/_spacing-tokens.scss +94 -94
  91. package/tokens/_static-tokens.scss +137 -137
  92. package/tokens/_typography-tokens.scss +65 -65
  93. package/vendors/charts.scss +90 -90
package/base/_reset.scss CHANGED
@@ -1,432 +1,445 @@
1
- @mixin base-body-reset-theme($theme: ()) {
2
- // theme-agnóstico em valor (var); fica per-classe de tema pelo & (pinta o
3
- // elemento que carrega a classe). $theme vestigial (default ()).
4
- & {
5
- *, *:before, *:after {
6
- box-sizing: border-box;
7
- }
8
- color: var(--matcha-color-fg);
9
- background: var(--matcha-color-surface-bg);
10
- }
11
- }
12
-
13
- /*
14
- How to use
15
- @import '~matcha-ds/assets/scss/components/matcha-typography.scss';
16
- @include base-typography-theme($theme);
17
- */
18
- // -----------------------------------------------------------------------------------------------------
19
- // Typography [Theme]
20
- // -----------------------------------------------------------------------------------------------------
21
- @mixin base-typography-theme($theme) {
22
- // theme-agnóstico: tudo via var(--matcha-color-*) (runtime). $theme mantido só
23
- // na assinatura por retrocompat dos call sites.
24
-
25
- a {
26
- color: var(--matcha-color-accent);
27
- }
28
-
29
- pre > code{
30
- color: var(--matcha-color-info);
31
- }
32
- code {
33
- &:not(.highlight) {
34
- // Token em runtime (não getter compile-time): resolve no escopo de tema
35
- // MAIS PRÓXIMO, então temas aninhados (ex.: preview light dentro de body
36
- // dark) não colidem mais — antes geravam tarja escura sobre card claro.
37
- // Dark é value-preserving (#1c1f26); light adota o surface-card do DSV3.
38
- background-color: var(--matcha-color-surface-card);
39
- }
40
- }
41
-
42
- .changelog {
43
- .entry {
44
- background-color: var(--matcha-color-surface-card);
45
- }
46
- }
47
-
48
- .text-boxed {
49
- background-color: var(--matcha-color-text-boxed-bg);
50
- color: var(--matcha-color-text-boxed-fg);
51
- }
52
-
53
- .text-primary {
54
- color: var(--matcha-color-primary) !important;
55
- }
56
-
57
- .text-warn {
58
- color: var(--matcha-color-warn) !important;
59
- }
60
-
61
- .text-label {
62
- color: var(--matcha-color-text-label) !important;
63
- }
64
-
65
- .text-placeholder {
66
- color: var(--matcha-color-text-placeholder) !important;
67
- }
68
-
69
- .text-basic {
70
- color: var(--matcha-color-fg) !important;
71
- }
72
-
73
- // Changelog
74
- .changelog {
75
- .entry {
76
- .groups {
77
- .breaking-changes {
78
- .title {
79
- background: var(--matcha-color-danger);
80
- }
81
- }
82
-
83
- .new {
84
- .title {
85
- background: var(--matcha-color-success);
86
- }
87
- }
88
-
89
- .improved {
90
- .title {
91
- background: var(--matcha-prim-purple-500);
92
- }
93
- }
94
-
95
- .fixed {
96
- .title {
97
- background: var(--matcha-color-info);
98
- }
99
- }
100
- }
101
- }
102
- }
103
-
104
- // Code
105
- code {
106
- &:not(.highlight) {
107
- color: var(--matcha-color-info);
108
- }
109
- }
110
-
111
- // Mark
112
- mark {
113
- background: var(--matcha-color-warn);
114
- }
115
-
116
- // Message boxes
117
- .matcha-message-box,
118
- .matcha-msg-box,
119
- .message-box {
120
- background-color: var(--matcha-color-primary-alpha);
121
- border-left-color: var(--matcha-color-primary);
122
- color: var(--matcha-color-fg);
123
-
124
- &.error,
125
- &.warning,
126
- &.success,
127
- &.info,
128
- &--error,
129
- &--warning,
130
- &--success,
131
- &--info {
132
- color: var(--matcha-color-fg);
133
- }
134
-
135
- &--error,
136
- &.error {
137
- background-color: var(--matcha-color-danger-alpha);
138
- border-left-color: var(--matcha-color-danger);
139
- }
140
-
141
- &--warning,
142
- &.warning {
143
- background-color: var(--matcha-color-warn-alpha);
144
- border-left-color: var(--matcha-color-warn);
145
- }
146
-
147
- &--success,
148
- &.success {
149
- background-color: var(--matcha-color-success-alpha);
150
- border-left-color: var(--matcha-color-success);
151
- }
152
-
153
- &--info,
154
- &.info {
155
- background-color: var(--matcha-color-info-alpha);
156
- border-left-color: var(--matcha-color-info);
157
- }
158
- }
159
- }
160
-
161
- // -----------------------------------------------------------------------------------------------------
162
- // Typography [Style]
163
- // -----------------------------------------------------------------------------------------------------
164
- // Paragraph
165
- .par-xs,
166
- .p-tiny {
167
- font-size: 12px !important;
168
- }
169
-
170
- .par-sm,
171
- .par-p,
172
- .p-small {
173
- font-size: 14px !important;
174
- }
175
-
176
- .par-md,
177
- .par-m,
178
- .p-medium {
179
- font-size: 16px !important;
180
- }
181
-
182
- .par-lg,
183
- .p-large {
184
- font-size: 20px !important;
185
- }
186
-
187
- .par-xl,
188
- .p-huge {
189
- font-size: 24px !important;
190
- }
191
- .text-medium,
192
- .text-semibold {
193
- font-weight: 500;
194
- }
195
-
196
- .text-regular,
197
- .text-book {
198
- font-weight: 400;
199
- }
200
-
201
- .text-bold {
202
- font-weight: 700;
203
- }
204
-
205
- .text-black {
206
- font-weight: 900;
207
- }
208
-
209
- .matcha-message-box,
210
- .matcha-msg-box,
211
- .message-box {
212
- padding: 16px;
213
- border-left: 6px solid;
214
-
215
- &.error,
216
- &.warning,
217
- &.success,
218
- &.info,
219
- &--error,
220
- &--warning,
221
- &--success,
222
- &--info {
223
- padding: 16px;
224
- border-left: 6px solid;
225
- }
226
- }
227
-
228
- .title {
229
- line-height: 24px;
230
- margin: 0 0 16px 0;
231
- display: flex;
232
- align-items: center;
233
-
234
- .title-bullet {
235
- margin: 0px 8px 0 0;
236
- display: inline-block;
237
- position: relative;
238
- border-radius: 10px;
239
- }
240
-
241
- .title-content {
242
- line-height: 20px;
243
- display: -webkit-box;
244
- -webkit-line-clamp: 2;
245
- overflow: hidden;
246
- text-overflow: ellipsis;
247
- word-break: break-word;
248
- white-space: initial;
249
- -webkit-box-orient: vertical;
250
- text-transform: capitalize;
251
- }
252
- }
253
-
254
- .title-sm {
255
- display: block;
256
- overflow: hidden;
257
- text-overflow: ellipsis;
258
- white-space: nowrap;
259
- }
260
-
261
-
262
- // -----------------------------------------------------------------------------------------------------
263
- // @ Container helpers
264
- // -----------------------------------------------------------------------------------------------------
265
- .matcha-container {
266
- width: 100%;
267
- max-width: 1128px;
268
- margin-left:auto;
269
- margin-right:auto;
270
- }
271
-
272
- // -----------------------------------------------------------------------------------------------------
273
- // @ Combo helpers
274
- // -----------------------------------------------------------------------------------------------------
275
- .combo-image-text,
276
- .combo-checkbox-text,
277
- .combo-icon-text,
278
- .combo-double-line {
279
- display: flex;
280
- align-items: center;
281
- }
282
-
283
- .combo-image-text .side-text,
284
- .combo-checkbox-text .side-text,
285
- .combo-icon-text .side-text,
286
- .combo-double-line .side-text {
287
- display: inline-block;
288
- width: calc(100% - 48px);
289
- line-height: 20px;
290
- -webkit-line-clamp: 2;
291
- overflow: hidden;
292
- text-overflow: ellipsis;
293
- word-break: break-word;
294
- white-space: initial;
295
- -webkit-box-orient: vertical;
296
- }
297
-
298
- .combo-image-text .avatar,
299
- .combo-checkbox-text .avatar,
300
- .combo-icon-text .avatar,
301
- .combo-double-line .avatar {
302
- border-radius: 50px;
303
- min-width: 24px;
304
- min-height: 24px;
305
- }
306
-
307
- .one-line-text {
308
- line-height: 20px;
309
- display: -webkit-box;
310
- -webkit-line-clamp: 1;
311
- }
312
-
313
- .two-lines-text {
314
- line-height: 20px;
315
- display: -webkit-box;
316
- -webkit-line-clamp: 2;
317
- }
318
-
319
- .three-lines-text {
320
- line-height: 20px;
321
- display: -webkit-box;
322
- -webkit-line-clamp: 3;
323
- }
324
-
325
- .four-lines-text {
326
- line-height: 20px;
327
- display: -webkit-box;
328
- -webkit-line-clamp: 4;
329
- }
330
-
331
- .five-lines-text {
332
- line-height: 20px;
333
- display: -webkit-box;
334
- -webkit-line-clamp: 5;
335
- }
336
-
337
- .one-line-text,
338
- .two-lines-text,
339
- .three-lines-text,
340
- .four-lines-text,
341
- .five-lines-text {
342
- overflow: hidden;
343
- text-overflow: ellipsis;
344
- word-break: break-word;
345
- white-space: initial;
346
- -webkit-box-orient: vertical;
347
- }
348
- .word-break {
349
- word-break: break-word
350
- }
351
- .word-break-all {
352
- word-break: break-all
353
- }
354
-
355
- // -----------------------------------------------------------------------------------------------------
356
- // @ Letter spacing helpers
357
- // -----------------------------------------------------------------------------------------------------
358
- .letter-spacing-condensed {
359
- letter-spacing: -.08em !important;
360
- }
361
- .letter-spacing-normal {
362
- letter-spacing: normal !important;
363
- }
364
- .letter-spacing-relaxed {
365
- letter-spacing: .08em !important;
366
- }
367
-
368
- // -----------------------------------------------------------------------------------------------------
369
- // @ Cursor helpers
370
- // -----------------------------------------------------------------------------------------------------
371
- .pointer-events-all {
372
- pointer-events: all
373
- }
374
- .pointer-events-none {
375
- pointer-events: none
376
- }
377
-
378
- // -----------------------------------------------------------------------------------------------------
379
- // @ Clear Shadows
380
- // -----------------------------------------------------------------------------------------------------
381
- .flatten,
382
- .no-shadow,
383
- .shadow-none {
384
- box-shadow: none !important;
385
- }
386
-
387
- // -----------------------------------------------------------------------------------------------------
388
- // @ Enable/Disable
389
- // -----------------------------------------------------------------------------------------------------
390
- .disabled {
391
- transition: opacity 100ms linear;
392
- opacity: .5;
393
- pointer-events: none
394
- }
395
- .enabled {
396
- transition: opacity 100ms linear;
397
- opacity: 1
398
- }
399
-
400
-
401
- // -----------------------------------------------------------------------------------------------------
402
- // @ Hover - Show/Hide
403
- // -----------------------------------------------------------------------------------------------------
404
- .on-hover-show:hover {
405
- opacity: 1;
406
- }
407
- .on-hover-hide:hover {
408
- opacity: 0;
409
- }
410
-
411
- // -----------------------------------------------------------------------------------------------------
412
- // @ Float
413
- // -----------------------------------------------------------------------------------------------------
414
- .clearfix::after {
415
- content: "";
416
- clear: both;
417
- display: table;
418
- }
419
- .left {
420
- float: left;
421
- }
422
- .right {
423
- float: right;
424
- }
425
- .list,
426
- .list-style-none {
427
- list-style: none;
428
- }
429
- .list-style-disc,
430
- .list-style-dot {
431
- list-style: disc;
432
- }
1
+ @mixin base-body-reset-theme($theme: ()) {
2
+ // theme-agnóstico em valor (var); fica per-classe de tema pelo & (pinta o
3
+ // elemento que carrega a classe). $theme vestigial (default ()).
4
+ & {
5
+ *, *:before, *:after {
6
+ box-sizing: border-box;
7
+ }
8
+ color: var(--matcha-color-fg);
9
+ background: var(--matcha-color-surface-bg);
10
+ }
11
+ }
12
+
13
+ /*
14
+ How to use
15
+ @import '~matcha-ds/assets/scss/components/matcha-typography.scss';
16
+ @include base-typography-theme($theme);
17
+ */
18
+ // -----------------------------------------------------------------------------------------------------
19
+ // Typography [Theme]
20
+ // -----------------------------------------------------------------------------------------------------
21
+ @mixin base-typography-theme($theme) {
22
+ // theme-agnóstico: tudo via var(--matcha-color-*) (runtime). $theme mantido só
23
+ // na assinatura por retrocompat dos call sites.
24
+
25
+ a {
26
+ color: var(--matcha-color-accent);
27
+ }
28
+
29
+ pre > code{
30
+ color: var(--matcha-color-info);
31
+ }
32
+ code {
33
+ &:not(.highlight) {
34
+ // Token em runtime (não getter compile-time): resolve no escopo de tema
35
+ // MAIS PRÓXIMO, então temas aninhados (ex.: preview light dentro de body
36
+ // dark) não colidem mais — antes geravam tarja escura sobre card claro.
37
+ // Dark é value-preserving (#1c1f26); light adota o surface-card do DSV3.
38
+ background-color: var(--matcha-color-surface-card);
39
+ }
40
+ }
41
+
42
+ .changelog {
43
+ .entry {
44
+ background-color: var(--matcha-color-surface-card);
45
+ }
46
+ }
47
+
48
+ .text-boxed {
49
+ background-color: var(--matcha-color-text-boxed-bg);
50
+ color: var(--matcha-color-text-boxed-fg);
51
+ }
52
+
53
+ .text-primary {
54
+ color: var(--matcha-color-primary) !important;
55
+ }
56
+
57
+ .text-warn {
58
+ color: var(--matcha-color-warn) !important;
59
+ }
60
+
61
+ .text-label {
62
+ color: var(--matcha-color-text-label) !important;
63
+ }
64
+
65
+ .text-placeholder {
66
+ color: var(--matcha-color-text-placeholder) !important;
67
+ }
68
+
69
+ .text-basic {
70
+ color: var(--matcha-color-fg) !important;
71
+ }
72
+
73
+ // Changelog
74
+ .changelog {
75
+ .entry {
76
+ .groups {
77
+ .breaking-changes {
78
+ .title {
79
+ background: var(--matcha-color-danger);
80
+ }
81
+ }
82
+
83
+ .new {
84
+ .title {
85
+ background: var(--matcha-color-success);
86
+ }
87
+ }
88
+
89
+ .improved {
90
+ .title {
91
+ background: var(--matcha-prim-purple-500);
92
+ }
93
+ }
94
+
95
+ .fixed {
96
+ .title {
97
+ background: var(--matcha-color-info);
98
+ }
99
+ }
100
+ }
101
+ }
102
+ }
103
+
104
+ // Code
105
+ code {
106
+ &:not(.highlight) {
107
+ color: var(--matcha-color-info);
108
+ }
109
+ }
110
+
111
+ // Mark
112
+ mark {
113
+ background: var(--matcha-color-warn);
114
+ }
115
+
116
+ // Message boxes
117
+ .matcha-message-box,
118
+ .matcha-msg-box,
119
+ .message-box {
120
+ background-color: var(--matcha-color-primary-alpha);
121
+ border-left-color: var(--matcha-color-primary);
122
+ color: var(--matcha-color-fg);
123
+
124
+ &.error,
125
+ &.warning,
126
+ &.success,
127
+ &.info,
128
+ &--error,
129
+ &--warning,
130
+ &--success,
131
+ &--info {
132
+ color: var(--matcha-color-fg);
133
+ }
134
+
135
+ &--error,
136
+ &.error {
137
+ background-color: var(--matcha-color-danger-alpha);
138
+ border-left-color: var(--matcha-color-danger);
139
+ }
140
+
141
+ &--warning,
142
+ &.warning {
143
+ background-color: var(--matcha-color-warn-alpha);
144
+ border-left-color: var(--matcha-color-warn);
145
+ }
146
+
147
+ &--success,
148
+ &.success {
149
+ background-color: var(--matcha-color-success-alpha);
150
+ border-left-color: var(--matcha-color-success);
151
+ }
152
+
153
+ &--info,
154
+ &.info {
155
+ background-color: var(--matcha-color-info-alpha);
156
+ border-left-color: var(--matcha-color-info);
157
+ }
158
+ }
159
+ }
160
+
161
+ // -----------------------------------------------------------------------------------------------------
162
+ // Typography [Style]
163
+ // -----------------------------------------------------------------------------------------------------
164
+ // Paragraph
165
+ .par-xs,
166
+ .p-tiny {
167
+ font-size: 12px !important;
168
+ }
169
+
170
+ .par-sm,
171
+ .par-p,
172
+ .p-small {
173
+ font-size: 14px !important;
174
+ }
175
+
176
+ .par-md,
177
+ .par-m,
178
+ .p-medium {
179
+ font-size: 16px !important;
180
+ }
181
+
182
+ .par-lg,
183
+ .p-large {
184
+ font-size: 20px !important;
185
+ }
186
+
187
+ .par-xl,
188
+ .p-huge {
189
+ font-size: 24px !important;
190
+ }
191
+ .text-medium,
192
+ .text-semibold {
193
+ font-weight: 500;
194
+ }
195
+
196
+ .text-regular,
197
+ .text-book {
198
+ font-weight: 400;
199
+ }
200
+
201
+ .text-bold {
202
+ font-weight: 700;
203
+ }
204
+
205
+ .text-black {
206
+ font-weight: 900;
207
+ }
208
+
209
+ .matcha-message-box,
210
+ .matcha-msg-box,
211
+ .message-box {
212
+ padding: 16px;
213
+ border-left: 6px solid;
214
+
215
+ &.error,
216
+ &.warning,
217
+ &.success,
218
+ &.info,
219
+ &--error,
220
+ &--warning,
221
+ &--success,
222
+ &--info {
223
+ padding: 16px;
224
+ border-left: 6px solid;
225
+ }
226
+ }
227
+
228
+ .title {
229
+ line-height: 24px;
230
+ margin: 0 0 16px 0;
231
+ display: flex;
232
+ align-items: center;
233
+
234
+ .title-bullet {
235
+ margin: 0px 8px 0 0;
236
+ display: inline-block;
237
+ position: relative;
238
+ border-radius: 10px;
239
+ }
240
+
241
+ .title-content {
242
+ line-height: 20px;
243
+ display: -webkit-box;
244
+ -webkit-line-clamp: 2;
245
+ overflow: hidden;
246
+ text-overflow: ellipsis;
247
+ word-break: break-word;
248
+ white-space: initial;
249
+ -webkit-box-orient: vertical;
250
+ text-transform: capitalize;
251
+ }
252
+ }
253
+
254
+ .title-sm {
255
+ display: block;
256
+ overflow: hidden;
257
+ text-overflow: ellipsis;
258
+ white-space: nowrap;
259
+ }
260
+
261
+
262
+ // -----------------------------------------------------------------------------------------------------
263
+ // @ Container helpers
264
+ // -----------------------------------------------------------------------------------------------------
265
+ .matcha-container {
266
+ width: 100%;
267
+ max-width: 1128px;
268
+ margin-left:auto;
269
+ margin-right:auto;
270
+ }
271
+
272
+ // -----------------------------------------------------------------------------------------------------
273
+ // @ Combo helpers
274
+ // -----------------------------------------------------------------------------------------------------
275
+ .combo-image-text,
276
+ .combo-checkbox-text,
277
+ .combo-icon-text,
278
+ .combo-double-line {
279
+ display: flex;
280
+ align-items: center;
281
+ }
282
+
283
+ .combo-image-text .side-text,
284
+ .combo-checkbox-text .side-text,
285
+ .combo-icon-text .side-text,
286
+ .combo-double-line .side-text {
287
+ display: inline-block;
288
+ width: calc(100% - 48px);
289
+ line-height: 20px;
290
+ -webkit-line-clamp: 2;
291
+ overflow: hidden;
292
+ text-overflow: ellipsis;
293
+ word-break: break-word;
294
+ white-space: initial;
295
+ -webkit-box-orient: vertical;
296
+ }
297
+
298
+ .combo-image-text .avatar,
299
+ .combo-checkbox-text .avatar,
300
+ .combo-icon-text .avatar,
301
+ .combo-double-line .avatar {
302
+ border-radius: 50px;
303
+ min-width: 24px;
304
+ min-height: 24px;
305
+ }
306
+
307
+ .one-line-text {
308
+ line-height: 20px;
309
+ display: -webkit-box;
310
+ -webkit-line-clamp: 1;
311
+ }
312
+
313
+ .two-lines-text {
314
+ line-height: 20px;
315
+ display: -webkit-box;
316
+ -webkit-line-clamp: 2;
317
+ }
318
+
319
+ .three-lines-text {
320
+ line-height: 20px;
321
+ display: -webkit-box;
322
+ -webkit-line-clamp: 3;
323
+ }
324
+
325
+ .four-lines-text {
326
+ line-height: 20px;
327
+ display: -webkit-box;
328
+ -webkit-line-clamp: 4;
329
+ }
330
+
331
+ .five-lines-text {
332
+ line-height: 20px;
333
+ display: -webkit-box;
334
+ -webkit-line-clamp: 5;
335
+ }
336
+
337
+ .one-line-text,
338
+ .two-lines-text,
339
+ .three-lines-text,
340
+ .four-lines-text,
341
+ .five-lines-text {
342
+ overflow: hidden;
343
+ text-overflow: ellipsis;
344
+ word-break: break-word;
345
+ white-space: initial;
346
+ -webkit-box-orient: vertical;
347
+ }
348
+ .word-break {
349
+ word-break: break-word
350
+ }
351
+ .word-break-all {
352
+ word-break: break-all
353
+ }
354
+
355
+ // Helpers pontuais migrados do matcha-core (DSV3): matcha-core é só a grade
356
+ // gerada; helpers escritos à mão vivem aqui na base (junto de .word-break etc.).
357
+ // (.break-word não migra — use .word-break acima, mesma regra.)
358
+ .overflow-wrap-anywhere { overflow-wrap: anywhere; }
359
+ .font-inherit { font-family: inherit; }
360
+ .font-italic { font-style: italic; }
361
+ .tabular-nums { font-variant-numeric: tabular-nums; }
362
+ .user-select-none { -webkit-user-select: none; user-select: none; }
363
+ .scrollbar-none {
364
+ scrollbar-width: none;
365
+ &::-webkit-scrollbar { display: none; }
366
+ }
367
+
368
+ // -----------------------------------------------------------------------------------------------------
369
+ // @ Letter spacing helpers
370
+ // -----------------------------------------------------------------------------------------------------
371
+ .letter-spacing-condensed {
372
+ letter-spacing: -.08em !important;
373
+ }
374
+ .letter-spacing-normal {
375
+ letter-spacing: normal !important;
376
+ }
377
+ .letter-spacing-relaxed {
378
+ letter-spacing: .08em !important;
379
+ }
380
+
381
+ // -----------------------------------------------------------------------------------------------------
382
+ // @ Cursor helpers
383
+ // -----------------------------------------------------------------------------------------------------
384
+ .pointer-events-all {
385
+ pointer-events: all
386
+ }
387
+ .pointer-events-none {
388
+ pointer-events: none
389
+ }
390
+
391
+ // -----------------------------------------------------------------------------------------------------
392
+ // @ Clear Shadows
393
+ // -----------------------------------------------------------------------------------------------------
394
+ .flatten,
395
+ .no-shadow,
396
+ .shadow-none {
397
+ box-shadow: none !important;
398
+ }
399
+
400
+ // -----------------------------------------------------------------------------------------------------
401
+ // @ Enable/Disable
402
+ // -----------------------------------------------------------------------------------------------------
403
+ .disabled {
404
+ transition: opacity 100ms linear;
405
+ opacity: .5;
406
+ pointer-events: none
407
+ }
408
+ .enabled {
409
+ transition: opacity 100ms linear;
410
+ opacity: 1
411
+ }
412
+
413
+
414
+ // -----------------------------------------------------------------------------------------------------
415
+ // @ Hover - Show/Hide
416
+ // -----------------------------------------------------------------------------------------------------
417
+ .on-hover-show:hover {
418
+ opacity: 1;
419
+ }
420
+ .on-hover-hide:hover {
421
+ opacity: 0;
422
+ }
423
+
424
+ // -----------------------------------------------------------------------------------------------------
425
+ // @ Float
426
+ // -----------------------------------------------------------------------------------------------------
427
+ .clearfix::after {
428
+ content: "";
429
+ clear: both;
430
+ display: table;
431
+ }
432
+ .left {
433
+ float: left;
434
+ }
435
+ .right {
436
+ float: right;
437
+ }
438
+ .list,
439
+ .list-style-none {
440
+ list-style: none;
441
+ }
442
+ .list-style-disc,
443
+ .list-style-dot {
444
+ list-style: disc;
445
+ }