@inchurch/matcha-theme 20.0.3

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 (112) hide show
  1. package/README.md +303 -0
  2. package/abstracts/_colors.scss +405 -0
  3. package/abstracts/_elevation.scss +102 -0
  4. package/abstracts/_functions.scss +1213 -0
  5. package/abstracts/_media-breakpoint.scss +23 -0
  6. package/abstracts/_typography.scss +127 -0
  7. package/base/_reset.scss +438 -0
  8. package/components/matcha-accordion.scss +157 -0
  9. package/components/matcha-audio-player.scss +32 -0
  10. package/components/matcha-autocomplete.scss +134 -0
  11. package/components/matcha-avatar.scss +161 -0
  12. package/components/matcha-badge.scss +120 -0
  13. package/components/matcha-breadcrumb.scss +126 -0
  14. package/components/matcha-button-toggle.scss +363 -0
  15. package/components/matcha-buttons.scss +784 -0
  16. package/components/matcha-calendar.scss +154 -0
  17. package/components/matcha-cards.scss +205 -0
  18. package/components/matcha-chart-card.scss +60 -0
  19. package/components/matcha-checkbox.scss +554 -0
  20. package/components/matcha-chip.scss +212 -0
  21. package/components/matcha-color-pick.scss +35 -0
  22. package/components/matcha-command-palette.scss +89 -0
  23. package/components/matcha-crop.scss +172 -0
  24. package/components/matcha-date.scss +81 -0
  25. package/components/matcha-divider.scss +45 -0
  26. package/components/matcha-draggable.scss +24 -0
  27. package/components/matcha-drawer.scss +235 -0
  28. package/components/matcha-drop-list.scss +390 -0
  29. package/components/matcha-emoji.scss +69 -0
  30. package/components/matcha-empty-state.scss +118 -0
  31. package/components/matcha-flag.scss +62 -0
  32. package/components/matcha-footer.scss +187 -0
  33. package/components/matcha-form-field.scss +552 -0
  34. package/components/matcha-form-section.scss +101 -0
  35. package/components/matcha-header.scss +325 -0
  36. package/components/matcha-highlight.scss +296 -0
  37. package/components/matcha-hint-text.scss +66 -0
  38. package/components/matcha-horizontal-tree.scss +317 -0
  39. package/components/matcha-icon.scss +106 -0
  40. package/components/matcha-image.scss +62 -0
  41. package/components/matcha-list.scss +212 -0
  42. package/components/matcha-menu.scss +86 -0
  43. package/components/matcha-modal.scss +234 -0
  44. package/components/matcha-nav.scss +450 -0
  45. package/components/matcha-notification.scss +197 -0
  46. package/components/matcha-option.scss +95 -0
  47. package/components/matcha-page-builder.scss +4186 -0
  48. package/components/matcha-paginator.scss +235 -0
  49. package/components/matcha-panel.scss +167 -0
  50. package/components/matcha-profile-card.scss +50 -0
  51. package/components/matcha-progress-bar.scss +209 -0
  52. package/components/matcha-radio.scss +528 -0
  53. package/components/matcha-ripple.scss +7 -0
  54. package/components/matcha-scrollbar.scss +35 -0
  55. package/components/matcha-scrollbox-shadow.scss +123 -0
  56. package/components/matcha-section.scss +105 -0
  57. package/components/matcha-select.scss +661 -0
  58. package/components/matcha-skeleton.scss +138 -0
  59. package/components/matcha-slide-toggle.scss +590 -0
  60. package/components/matcha-slider.scss +188 -0
  61. package/components/matcha-snack-bar.scss +266 -0
  62. package/components/matcha-spin.scss +252 -0
  63. package/components/matcha-spinner.scss +78 -0
  64. package/components/matcha-stepper.scss +177 -0
  65. package/components/matcha-table-cell.scss +41 -0
  66. package/components/matcha-table.scss +785 -0
  67. package/components/matcha-tabs.scss +469 -0
  68. package/components/matcha-text-editor.scss +151 -0
  69. package/components/matcha-time.scss +33 -0
  70. package/components/matcha-timepicker.scss +13 -0
  71. package/components/matcha-toolbar.scss +206 -0
  72. package/components/matcha-tooltip.scss +128 -0
  73. package/components/matcha-uploader.scss +215 -0
  74. package/css/matcha-style.css +76772 -0
  75. package/fonts/CircularStd-Black.eot +0 -0
  76. package/fonts/CircularStd-Black.svg +3426 -0
  77. package/fonts/CircularStd-Black.ttf +0 -0
  78. package/fonts/CircularStd-Black.woff +0 -0
  79. package/fonts/CircularStd-Black.woff2 +0 -0
  80. package/fonts/CircularStd-Bold.eot +0 -0
  81. package/fonts/CircularStd-Bold.otf +0 -0
  82. package/fonts/CircularStd-Bold.svg +13532 -0
  83. package/fonts/CircularStd-Bold.ttf +0 -0
  84. package/fonts/CircularStd-Bold.woff +0 -0
  85. package/fonts/CircularStd-Bold.woff2 +0 -0
  86. package/fonts/CircularStd-Medium.eot +0 -0
  87. package/fonts/CircularStd-Medium.otf +0 -0
  88. package/fonts/CircularStd-Medium.svg +13511 -0
  89. package/fonts/CircularStd-Medium.ttf +0 -0
  90. package/fonts/CircularStd-Medium.woff +0 -0
  91. package/fonts/CircularStd-Medium.woff2 +0 -0
  92. package/fonts/CircularStd-Regular.eot +0 -0
  93. package/fonts/CircularStd-Regular.otf +0 -0
  94. package/fonts/CircularStd-Regular.svg +2378 -0
  95. package/fonts/CircularStd-Regular.ttf +0 -0
  96. package/fonts/CircularStd-Regular.woff +0 -0
  97. package/fonts/CircularStd-Regular.woff2 +0 -0
  98. package/main.scss +262 -0
  99. package/package.json +11 -0
  100. package/tokens/_animations-tokens.scss +37 -0
  101. package/tokens/_breakpoints-tokens.scss +26 -0
  102. package/tokens/_color-tokens.scss +1153 -0
  103. package/tokens/_css-custom-properties.scss +568 -0
  104. package/tokens/_elevation-tokens.scss +33 -0
  105. package/tokens/_spacing-tokens.scss +94 -0
  106. package/tokens/_typography-tokens.scss +65 -0
  107. package/vendors/angular-editor.scss +56 -0
  108. package/vendors/angular-material-fixes.scss +297 -0
  109. package/vendors/calendar.scss +2880 -0
  110. package/vendors/charts.scss +92 -0
  111. package/vendors/ng5-slider.scss +56 -0
  112. package/vendors/ngx-material-timepicker.scss +50 -0
@@ -0,0 +1,785 @@
1
+ @use "sass:map";
2
+
3
+ @mixin _matcha-table-theme-container-shadow-property($theme) {
4
+ box-shadow:
5
+ 0px -16px 0px 0px inset getSurface($theme),
6
+ 20px 0 16px -24px inset rgba(#212121, 0.15), // ok: structural
7
+ -20px 0 16px -24px inset rgba(#212121, 0.15), // ok: structural
8
+ 0px 2px 2px 0px rgba(#212121, 0.035), // ok: structural
9
+ 0px 2px 2px 0px rgba(#212121, 0.035), // ok: structural
10
+ 0px 2px 2px 0px rgba(#212121, 0.035); // ok: structural
11
+ }
12
+
13
+ @mixin _matcha-table-theme-shadow-property($theme) {
14
+ background: var(--matcha-color-surface, #{getSurface($theme)});
15
+ background: linear-gradient(
16
+ 90deg,
17
+ getSurface($theme) 0px,
18
+ getSurface($theme) 10px,
19
+ rgba(#ffffff, 0) calc(0% + 110px), // ok: structural
20
+ rgba(#ffffff, 0) calc(100% - 110px), // ok: structural
21
+ getSurface($theme) calc(100% - 10px)
22
+ );
23
+ background: -moz-linear-gradient(
24
+ 90deg,
25
+ getSurface($theme) 0px,
26
+ getSurface($theme) 10px,
27
+ rgba(#ffffff, 0) calc(0% + 110px), // ok: structural
28
+ rgba(#ffffff, 0) calc(100% - 110px), // ok: structural
29
+ getSurface($theme) calc(100% - 10px)
30
+ );
31
+ background: -webkit-linear-gradient(
32
+ 0deg,
33
+ getSurface($theme) 0px,
34
+ getSurface($theme) 10px,
35
+ rgba(#ffffff, 0) calc(0% + 110px), // ok: structural
36
+ rgba(#ffffff, 0) calc(100% - 110px), // ok: structural
37
+ getSurface($theme) calc(100% - 10px)
38
+ );
39
+ }
40
+
41
+ @mixin matcha-table-theme($theme) {
42
+ $is-dark: map.get($theme, is-dark);
43
+
44
+ // Vai direto na tag body
45
+ body.is-mobile {
46
+ .table-container {
47
+ .table-container-shadow {
48
+ overflow: auto;
49
+ @include _matcha-table-theme-container-shadow-property($theme);
50
+
51
+ .mat-table,
52
+ .mat-sort {
53
+ tbody {
54
+ @include _matcha-table-theme-shadow-property($theme);
55
+ }
56
+ }
57
+ }
58
+ }
59
+ }
60
+
61
+ .table-container {
62
+ width: 100%;
63
+
64
+ .mat-table,
65
+ .mat-sort {
66
+ .published {
67
+ color: getGreen($theme);
68
+ }
69
+
70
+ .notPublished {
71
+ color: getAmber($theme);
72
+ }
73
+ }
74
+
75
+ .table-container-shadow {
76
+ overflow: auto;
77
+ background: var(--matcha-color-surface, #{getSurface($theme)});
78
+ border-radius: var(--matcha-radius-lg, 8px);
79
+ @include _matcha-table-theme-container-shadow-property($theme);
80
+
81
+ .mat-table,
82
+ .mat-sort {
83
+ tbody {
84
+ @include _matcha-table-theme-shadow-property($theme);
85
+ }
86
+ }
87
+
88
+ &.ps--active-x {
89
+ @include _matcha-table-theme-container-shadow-property($theme);
90
+
91
+ .mat-table,
92
+ .mat-sort {
93
+ @include _matcha-table-theme-shadow-property($theme);
94
+ }
95
+ }
96
+ }
97
+
98
+ .mat-table,
99
+ .mat-sort,
100
+ .mat-expansion-panel {
101
+ thead {
102
+ background: var(--matcha-color-surface, #{getSurface($theme)});
103
+
104
+ th {
105
+ height: var(--matcha-space-800, 64px);
106
+ }
107
+ }
108
+
109
+ tr {
110
+ &.mat-row {
111
+ // &:nth-child(even){background: map-get($background, card);}
112
+ &:nth-child(odd) {
113
+ background: getBackgroundAlpha($theme);
114
+ }
115
+ }
116
+
117
+ td,
118
+ th {
119
+ touch-action: unset !important;
120
+ font-size: var(--matcha-text-body-md, 14px);
121
+
122
+ &:first-child {
123
+ padding-left: var(--matcha-space-300, 24px);
124
+ }
125
+
126
+ .clickable {
127
+ cursor: pointer;
128
+ }
129
+ }
130
+ }
131
+
132
+ .td-duble-line {
133
+ height: var(--matcha-space-600, 48px);
134
+ }
135
+
136
+ .td-with-image,
137
+ .td-with-checkbox,
138
+ .td-with-icon,
139
+ .td-duble-line {
140
+ display: flex;
141
+ align-items: center;
142
+
143
+ .td-text-aside {
144
+ display: inline-block;
145
+ width: calc(100% - var(--matcha-space-600, 48px));
146
+ }
147
+
148
+ .avatar {
149
+ width: var(--matcha-space-600, 48px);
150
+ min-width: var(--matcha-space-600, 48px);
151
+ height: var(--matcha-space-600, 48px);
152
+ line-height: var(--matcha-space-600, 48px);
153
+ border-width: 0;
154
+ margin-right: var(--matcha-space-300, 24px);
155
+ }
156
+
157
+ .thumbnail {
158
+ width: calc(var(--matcha-space-600, 48px) + var(--matcha-space-300, 24px)); // 72
159
+ min-width: calc(var(--matcha-space-600, 48px) + var(--matcha-space-300, 24px));
160
+ height: var(--matcha-space-600, 48px);
161
+ border-radius: var(--matcha-radius-lg, 8px);
162
+ margin: 0 var(--matcha-space-100, 8px) 0 0;
163
+
164
+ &-portrait {
165
+ width: var(--matcha-avatar-lg, 56px);
166
+ min-width: var(--matcha-avatar-lg, 56px);
167
+ height: calc(var(--matcha-space-600, 48px) + var(--matcha-space-300, 24px)); // 72
168
+ border-radius: var(--matcha-radius-lg, 8px);
169
+ margin: 0 var(--matcha-space-100, 8px) 0 0;
170
+ }
171
+ }
172
+ }
173
+
174
+ .mat-header-cell {
175
+ color: var(--matcha-color-fg, #{getForeground($theme)});
176
+ font-family: var(--matcha-font-family);
177
+ font-weight: 500;
178
+ font-size: var(--matcha-text-body-md, 14px);
179
+ padding-left: var(--matcha-space-100, 8px);
180
+ padding-right: var(--matcha-space-100, 8px);
181
+ border-bottom: var(--matcha-border-hairline, 1px) solid var(--matcha-color-border, #{getDisabled($theme)});
182
+ }
183
+
184
+ .mat-cell {
185
+ color: var(--matcha-color-text-label, #{getBlueGrey($theme)});
186
+ font-size: var(--matcha-text-body-md, 14px);
187
+ padding-left: var(--matcha-space-100, 8px);
188
+ padding-right: var(--matcha-space-100, 8px);
189
+ white-space: nowrap;
190
+ overflow: hidden;
191
+ text-overflow: ellipsis;
192
+ text-align: start;
193
+ border-bottom: var(--matcha-border-hairline, 1px) solid var(--matcha-color-border, #{getDisabled($theme)});
194
+
195
+ &.cdk-column-menu {
196
+ text-align: left;
197
+ }
198
+ }
199
+
200
+ .last {
201
+ display: flex;
202
+ justify-content: space-between;
203
+ width: 100%;
204
+ align-items: center;
205
+
206
+ span {
207
+ overflow: hidden;
208
+ text-overflow: ellipsis;
209
+ }
210
+
211
+ mat-menu {
212
+ display: none;
213
+ }
214
+ }
215
+ }
216
+
217
+ table {
218
+ width: 100%;
219
+ }
220
+
221
+ .badge {
222
+ border-radius: var(--matcha-radius-lg, 8px);
223
+ padding: var(--matcha-space-100, 8px);
224
+ color: var(--matcha-color-text-inverse, #{getForegroundInverse($theme)});
225
+
226
+ &.live-badge {
227
+ background-color: getCyan($theme);
228
+ font-size: var(--matcha-text-body-md, 14px);
229
+ }
230
+
231
+ &.cell-badge {
232
+ background-color: getPurple($theme);
233
+ font-size: var(--matcha-text-body-md, 14px);
234
+ }
235
+
236
+ &.cult-badge {
237
+ background-color: getBlue($theme);
238
+ font-size: var(--matcha-text-body-md, 14px);
239
+ }
240
+
241
+ &.new-visitor-badge {
242
+ background-color: var(--matcha-color-primary, #{getPrimary($theme)});
243
+ color: var(--matcha-color-accent-contrast, #{getPrimaryContrast($theme)});
244
+ font-size: var(--matcha-text-body-md, 14px);
245
+ line-height: var(--matcha-leading-caption, 14px);
246
+ display: inline-block;
247
+ width: auto;
248
+ }
249
+ }
250
+ }
251
+
252
+ // X-Large devices (big desktops, 1440px and up < 1920)
253
+ @include media-breakpoint('gt-md') {
254
+ .table-container {
255
+ .mat-table,
256
+ .mat-sort {
257
+ .mat-cell {
258
+ font-size: var(--matcha-text-title-sm, 16px);
259
+ }
260
+ }
261
+ }
262
+ }
263
+
264
+ //---------------------------------------------------------------------------
265
+ // ESTILOS PARA O COMPONENTE MATCHA-TABLE
266
+ //---------------------------------------------------------------------------
267
+ // Estilos para tabelas nativas com a classe matcha-table
268
+
269
+ .matcha-table {
270
+ display: flex;
271
+ flex-direction: column;
272
+ width: 100%;
273
+ gap: var(--matcha-space-200, 16px);
274
+ border-collapse: collapse;
275
+ border-spacing: 0;
276
+ }
277
+
278
+ // Vai direto na tag body
279
+ body.is-mobile {
280
+ .matcha-table {
281
+ .matcha-table-container-shadow {
282
+ overflow: auto;
283
+ @include _matcha-table-theme-container-shadow-property($theme);
284
+ table.matcha-table-content {
285
+ tbody {
286
+ @include _matcha-table-theme-shadow-property($theme);
287
+ }
288
+ }
289
+ }
290
+ }
291
+ }
292
+
293
+ // Estrutura
294
+ // matcha-table
295
+ // matcha-table-container
296
+ // matcha-table-container-shadow
297
+ // table.matcha-table-content
298
+ // thead
299
+ // tbody
300
+
301
+ .matcha-table {
302
+ --table-row-height: 64px; // comfortable = default (alinhado com Figma)
303
+ --table-shadow-alpha: rgba(#{getForeground($theme)}, 0.05);
304
+ .matcha-table-container-shadow {
305
+ overflow: auto;
306
+ background: var(--matcha-color-surface, #{getSurface($theme)});
307
+ border-radius: var(--matcha-radius-lg, 8px);
308
+ @include _matcha-table-theme-container-shadow-property($theme);
309
+
310
+ table.matcha-table-content {
311
+ width: 100%;
312
+ border-collapse: collapse;
313
+ border-spacing: 0;
314
+ @include _matcha-table-theme-shadow-property($theme);
315
+ thead {
316
+ th {
317
+ height: var(--table-row-height);
318
+ background: var(--matcha-color-surface-hover, #{getBackgroundAlpha($theme)});
319
+ color: var(--matcha-color-fg, #{getForeground($theme)});
320
+ font-family: var(--matcha-font-family);
321
+ font-weight: 600; // SemiBold (Figma Header)
322
+ font-size: var(--matcha-text-body-md, 14px);
323
+ text-align: left;
324
+ padding-left: var(--matcha-space-300, 24px);
325
+ padding-right: var(--matcha-space-200, 16px);
326
+ border-bottom: var(--matcha-border-hairline, 1px) solid var(--matcha-color-border, #{getDisabled($theme)});
327
+ }
328
+ }
329
+
330
+ tbody {
331
+ tr {
332
+ height: var(--table-row-height);
333
+ // &:nth-child(even){background: map-get($background, card);}
334
+ // &:nth-child(odd) {
335
+ // background: getBackgroundAlpha($theme);
336
+ // }
337
+
338
+
339
+
340
+ td{
341
+ color: var(--matcha-color-text-label, #{getBlueGrey($theme)});
342
+ font-family: var(--matcha-font-family);
343
+ font-size: var(--matcha-text-body-md, 14px); // body-md (Figma)
344
+ padding-left: var(--matcha-space-100, 8px);
345
+ padding-right: var(--matcha-space-100, 8px);
346
+ white-space: nowrap;
347
+ text-overflow: ellipsis;
348
+ text-align: start;
349
+ border-bottom: var(--matcha-border-hairline, 1px) solid var(--matcha-color-border, #{getDisabled($theme)});
350
+ touch-action: unset !important;
351
+ min-width: 120px;
352
+
353
+ &:first-child {
354
+ padding-left: var(--matcha-space-300, 24px);
355
+ }
356
+
357
+ }
358
+ }
359
+
360
+ // esse é um caso especifico para as tabelas que tem aninhamento de itens
361
+ tr {
362
+ &.equal {
363
+
364
+ td,
365
+ th {
366
+ &:first-child {
367
+ box-shadow: 4px 0 0 0 inset getBlue($theme), 10px 0 10px -10px getDisabled($theme);
368
+ }
369
+ }
370
+
371
+ &.child-item {
372
+
373
+ td,
374
+ th {
375
+ &:first-child {
376
+ box-shadow: 4px 0 0 0 inset getBlueAlpha($theme), 10px 0 10px -10px getDisabled($theme);
377
+ }
378
+ }
379
+ }
380
+ }
381
+
382
+ &.plus {
383
+
384
+ td,
385
+ th {
386
+ &:first-child {
387
+ box-shadow: 4px 0 0 0 inset getGreen($theme), 10px 0 10px -10px getDisabled($theme);
388
+ }
389
+ }
390
+
391
+ &.child-item {
392
+ td,
393
+ th {
394
+ &:first-child {
395
+ box-shadow: 4px 0 0 0 inset getGreenAlpha($theme), 10px 0 10px -10px getDisabled($theme);
396
+ }
397
+ }
398
+ }
399
+ }
400
+
401
+ &.minus {
402
+
403
+ td,
404
+ th {
405
+ &:first-child {
406
+ box-shadow: 4px 0 0 0 inset getRed($theme), 10px 0 10px -10px getDisabled($theme);
407
+ }
408
+ }
409
+
410
+ &.child-item {
411
+
412
+ td,
413
+ th {
414
+ &:first-child {
415
+ box-shadow: 4px 0 0 0 inset getRedAlpha($theme), 10px 0 10px -10px getDisabled($theme);
416
+ }
417
+ }
418
+ }
419
+ }
420
+ }
421
+ }
422
+ }
423
+ }
424
+ }
425
+
426
+ // X-Large devices (big desktops, 1440px and up < 1920)
427
+ @include media-breakpoint('gt-md') {
428
+ .matcha-table {
429
+ .matcha-table-container-shadow {
430
+ table.matcha-table-content {
431
+ .td {
432
+ font-size: var(--matcha-text-title-sm, 16px);
433
+ }
434
+ }
435
+ }
436
+ }
437
+ }
438
+
439
+ // Variações de tamanho/densidade
440
+ .matcha-table-compact {
441
+ .matcha-table-container-shadow {
442
+ table.matcha-table-content {
443
+ --table-row-height: 48px;
444
+
445
+ thead th {
446
+ height: var(--table-row-height);
447
+ padding-top: var(--matcha-space-100, 8px);
448
+ padding-bottom: var(--matcha-space-100, 8px);
449
+ font-size: var(--matcha-text-body-md, 14px);
450
+ }
451
+
452
+ tbody tr {
453
+ height: var(--table-row-height);
454
+
455
+ td {
456
+ padding-top: var(--matcha-space-100, 8px);
457
+ padding-bottom: var(--matcha-space-100, 8px);
458
+ font-size: var(--matcha-text-body-md, 14px);
459
+ }
460
+ }
461
+ }
462
+ }
463
+ }
464
+
465
+ .matcha-table-comfortable {
466
+ // Estilo padrão de densidade (já aplicado na estrutura base)
467
+ .matcha-table-container-shadow {
468
+ table.matcha-table-content {
469
+ --table-row-height: 64px;
470
+
471
+ thead th {
472
+ height: var(--table-row-height);
473
+ padding-top: var(--matcha-space-150, 12px);
474
+ padding-bottom: var(--matcha-space-150, 12px);
475
+ }
476
+
477
+ tbody tr {
478
+ height: var(--table-row-height);
479
+
480
+ td {
481
+ padding-top: var(--matcha-space-150, 12px);
482
+ padding-bottom: var(--matcha-space-150, 12px);
483
+ }
484
+ }
485
+ }
486
+ }
487
+ }
488
+
489
+ .matcha-table-spacious {
490
+ .matcha-table-container-shadow {
491
+ table.matcha-table-content {
492
+ --table-row-height: 80px;
493
+
494
+ thead th {
495
+ height: var(--table-row-height);
496
+ padding-top: var(--matcha-space-200, 16px);
497
+ padding-bottom: var(--matcha-space-200, 16px);
498
+ font-size: var(--matcha-text-title-md, 18px);
499
+ }
500
+
501
+ tbody tr {
502
+ height: var(--table-row-height);
503
+
504
+ td {
505
+ padding-top: var(--matcha-space-200, 16px);
506
+ padding-bottom: var(--matcha-space-200, 16px);
507
+ font-size: var(--matcha-text-title-md, 18px);
508
+ }
509
+ }
510
+ }
511
+ }
512
+ }
513
+
514
+ // Linhas zebras
515
+ .matcha-table-striped {
516
+ .matcha-table-container-shadow {
517
+ table.matcha-table-content {
518
+ tbody tr {
519
+ &:nth-child(odd) {
520
+ background: var(--table-shadow-alpha);
521
+ }
522
+
523
+ &:nth-child(even) {
524
+ background: transparent;
525
+ }
526
+ }
527
+ }
528
+ }
529
+ }
530
+
531
+ // Hover nas linhas — Template A: tr é a área interativa
532
+ .matcha-table-hover {
533
+ .matcha-table-container-shadow {
534
+ table.matcha-table-content {
535
+ tbody tr {
536
+ position: relative;
537
+ overflow: hidden;
538
+ cursor: pointer;
539
+
540
+ &::before {
541
+ content: '';
542
+ position: absolute;
543
+ inset: 0;
544
+ background: currentColor;
545
+ opacity: 0;
546
+ border-radius: inherit;
547
+ pointer-events: none;
548
+ transition: opacity var(--matcha-duration-instant, 80ms) linear;
549
+ }
550
+
551
+ &:hover:not([disabled])::before { opacity: var(--matcha-state-hover, 0.08); }
552
+ &:active:not([disabled])::before { opacity: var(--matcha-state-active, 0.12); }
553
+ &[disabled] { pointer-events: none; cursor: default; }
554
+
555
+ @media (prefers-reduced-motion: reduce) {
556
+ &::before { transition: none; }
557
+ }
558
+
559
+ &:focus-visible:not([disabled]) {
560
+ outline: var(--matcha-state-focus-ring-width, 2px) solid var(--matcha-color-accent, #{getAccent($theme)});
561
+ outline-offset: var(--matcha-state-focus-ring-offset, 2px);
562
+ }
563
+ }
564
+ }
565
+ }
566
+ }
567
+
568
+ // Bordas visíveis
569
+ .matcha-table-bordered {
570
+ .matcha-table-container-shadow {
571
+ table.matcha-table-content {
572
+ border: var(--matcha-border-hairline, 1px) solid var(--matcha-color-border, #{getDisabled($theme)});
573
+
574
+ thead th {
575
+ border-bottom: var(--matcha-border-hairline, 1px) solid var(--matcha-color-border, #{getDisabled($theme)});
576
+ border-right: var(--matcha-border-hairline, 1px) solid var(--matcha-color-border, #{getDisabled($theme)});
577
+
578
+ &:last-child {
579
+ border-right: none;
580
+ }
581
+ }
582
+
583
+ tbody tr {
584
+ td {
585
+ border-bottom: var(--matcha-border-hairline, 1px) solid var(--matcha-color-border, #{getDisabled($theme)});
586
+ border-right: var(--matcha-border-hairline, 1px) solid var(--matcha-color-border, #{getDisabled($theme)});
587
+
588
+ &:last-child {
589
+ border-right: none;
590
+ }
591
+ }
592
+
593
+ &:last-child td {
594
+ border-bottom: none;
595
+ }
596
+ }
597
+ }
598
+ }
599
+ }
600
+
601
+ // Cabeçalho fixo (sticky)
602
+ .matcha-table-sticky-header {
603
+ .matcha-table-container-shadow {
604
+ table.matcha-table-content {
605
+ thead {
606
+ position: sticky;
607
+ top: 0;
608
+ z-index: 10;
609
+ display: table-header-group;
610
+ }
611
+
612
+ thead th {
613
+ position: sticky;
614
+ top: 0;
615
+ z-index: 11;
616
+ box-shadow: 0 2px 4px var(--table-shadow-alpha);
617
+ }
618
+ }
619
+ }
620
+ }
621
+
622
+ // Colunas fixas (sticky columns) - primeira coluna fixa por padrão quando há scroll
623
+ .matcha-table-sticky-start {
624
+ .matcha-table-container-shadow {
625
+ table.matcha-table-content {
626
+ thead th:first-child,
627
+ tbody tr td:first-child {
628
+ position: sticky;
629
+ left: 0;
630
+ z-index: 5;
631
+ background: var(--matcha-color-surface, #{getSurface($theme)});
632
+ }
633
+
634
+ thead th:first-child {
635
+ z-index: 15;
636
+ box-shadow: 10px 0 10px -10px getDisabled($theme);
637
+
638
+ }
639
+
640
+ tbody tr td:first-child {
641
+ box-shadow: 10px 0 10px -10px getDisabled($theme);
642
+
643
+ }
644
+ }
645
+ }
646
+
647
+ // Para múltiplas colunas fixas no início
648
+ &.matcha-table-sticky-start-2 {
649
+ .matcha-table-container-shadow {
650
+ table.matcha-table-content {
651
+ thead th:nth-child(1),
652
+ thead th:nth-child(2),
653
+ tbody tr td:nth-child(1),
654
+ tbody tr td:nth-child(2) {
655
+ position: sticky;
656
+ z-index: 5;
657
+ background: var(--matcha-color-surface, #{getSurface($theme)});
658
+ }
659
+
660
+ thead th:nth-child(1),
661
+ tbody tr td:nth-child(1) {
662
+ left: 0;
663
+ z-index: 15;
664
+ box-shadow: 2px 0 4px var(--table-shadow-alpha);
665
+ }
666
+
667
+ thead th:nth-child(2),
668
+ tbody tr td:nth-child(2) {
669
+ left: 200px; // Ajustar conforme largura da primeira coluna
670
+ z-index: 14;
671
+ box-shadow: 2px 0 4px var(--table-shadow-alpha);
672
+ }
673
+ }
674
+ }
675
+ }
676
+
677
+ &.matcha-table-sticky-start-3 {
678
+ .matcha-table-container-shadow {
679
+ table.matcha-table-content {
680
+ thead th:nth-child(1),
681
+ thead th:nth-child(2),
682
+ thead th:nth-child(3),
683
+ tbody tr td:nth-child(1),
684
+ tbody tr td:nth-child(2),
685
+ tbody tr td:nth-child(3) {
686
+ position: sticky;
687
+ z-index: 5;
688
+ background: var(--matcha-color-surface, #{getSurface($theme)});
689
+ }
690
+
691
+ thead th:nth-child(1),
692
+ tbody tr td:nth-child(1) {
693
+ left: 0;
694
+ z-index: 17;
695
+ box-shadow: 2px 0 4px var(--table-shadow-alpha);
696
+ }
697
+
698
+ thead th:nth-child(2),
699
+ tbody tr td:nth-child(2) {
700
+ left: 200px;
701
+ z-index: 16;
702
+ box-shadow: 2px 0 4px var(--table-shadow-alpha);
703
+ }
704
+
705
+ thead th:nth-child(3),
706
+ tbody tr td:nth-child(3) {
707
+ left: 400px;
708
+ z-index: 15;
709
+ box-shadow: 2px 0 4px var(--table-shadow-alpha);
710
+ }
711
+ }
712
+ }
713
+ }
714
+ }
715
+
716
+ .matcha-table-sticky-end {
717
+ .matcha-table-container-shadow {
718
+ table.matcha-table-content {
719
+ thead th:last-child,
720
+ tbody tr td:last-child {
721
+ position: sticky;
722
+ right: 0;
723
+ z-index: 5;
724
+ background: var(--matcha-color-surface, #{getSurface($theme)});
725
+ }
726
+
727
+ thead th:last-child {
728
+ z-index: 15;
729
+ box-shadow: -2px 0 4px var(--table-shadow-alpha);
730
+ }
731
+
732
+ tbody tr td:last-child {
733
+ box-shadow: -2px 0 2px var(--table-shadow-alpha);
734
+ }
735
+ }
736
+ }
737
+
738
+ // Para múltiplas colunas fixas no final
739
+ &.matcha-table-sticky-end-2 {
740
+ .matcha-table-container-shadow {
741
+ table.matcha-table-content {
742
+ thead th:nth-last-child(1),
743
+ thead th:nth-last-child(2),
744
+ tbody tr td:nth-last-child(1),
745
+ tbody tr td:nth-last-child(2) {
746
+ position: sticky;
747
+ z-index: 5;
748
+ background: var(--matcha-color-surface, #{getSurface($theme)});
749
+ }
750
+
751
+ thead th:nth-last-child(1),
752
+ tbody tr td:nth-last-child(1) {
753
+ right: 0;
754
+ z-index: 15;
755
+ box-shadow: -2px 0 4px var(--table-shadow-alpha);
756
+ }
757
+
758
+ thead th:nth-last-child(2),
759
+ tbody tr td:nth-last-child(2) {
760
+ right: 200px; // Ajustar conforme largura da última coluna
761
+ z-index: 14;
762
+ box-shadow: -2px 0 4px var(--table-shadow-alpha);
763
+ }
764
+ }
765
+ }
766
+ }
767
+ }
768
+
769
+ // ── Alinhamento de colunas (espelhado com Figma Alinhamento variant) ──
770
+ .matcha-table {
771
+ .matcha-table-container-shadow {
772
+ table.matcha-table-content {
773
+ th.text-center,
774
+ td.text-center {
775
+ text-align: center;
776
+ }
777
+
778
+ th.text-right,
779
+ td.text-right {
780
+ text-align: right;
781
+ }
782
+ }
783
+ }
784
+ }
785
+ }