@inchurch/matcha-theme 20.276.0 → 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.
Files changed (69) hide show
  1. package/abstracts/_functions.scss +0 -26
  2. package/abstracts/_theme-api.scss +230 -0
  3. package/components/app-page-header.scss +16 -17
  4. package/components/matcha-accordion.scss +5 -6
  5. package/components/matcha-audio-player.scss +1 -2
  6. package/components/matcha-autocomplete.scss +10 -11
  7. package/components/matcha-avatar.scss +3 -3
  8. package/components/matcha-badge.scss +11 -11
  9. package/components/matcha-breadcrumb.scss +6 -7
  10. package/components/matcha-button-toggle.scss +2 -2
  11. package/components/matcha-buttons.scss +34 -34
  12. package/components/matcha-calendar.scss +31 -35
  13. package/components/matcha-cards.scss +31 -32
  14. package/components/matcha-chart-card.scss +5 -12
  15. package/components/matcha-checkbox.scss +13 -13
  16. package/components/matcha-chip.scss +2 -2
  17. package/components/matcha-color-pick.scss +1 -2
  18. package/components/matcha-command-palette.scss +17 -18
  19. package/components/matcha-crop.scss +0 -1
  20. package/components/matcha-date.scss +3 -3
  21. package/components/matcha-draggable.scss +4 -5
  22. package/components/matcha-drawer.scss +18 -28
  23. package/components/matcha-drop-list.scss +51 -52
  24. package/components/matcha-emoji.scss +2 -2
  25. package/components/{matcha-uploader.scss → matcha-file-uploader.scss} +185 -116
  26. package/components/matcha-footer.scss +3 -4
  27. package/components/matcha-form-field.scss +3 -3
  28. package/components/matcha-form-section.scss +5 -6
  29. package/components/matcha-header.scss +3 -4
  30. package/components/matcha-hint-text.scss +4 -4
  31. package/components/matcha-horizontal-tree.scss +15 -16
  32. package/components/matcha-icon.scss +27 -27
  33. package/components/matcha-image.scss +2 -3
  34. package/components/matcha-list.scss +11 -12
  35. package/components/matcha-menu.scss +2 -2
  36. package/components/matcha-modal.scss +5 -6
  37. package/components/matcha-nav.scss +16 -16
  38. package/components/matcha-notification.scss +3 -4
  39. package/components/matcha-option.scss +19 -0
  40. package/components/matcha-page-builder.scss +16 -16
  41. package/components/matcha-paginator.scss +6 -7
  42. package/components/matcha-panel.scss +4 -5
  43. package/components/matcha-profile-card.scss +3 -3
  44. package/components/matcha-progress-bar.scss +1 -1
  45. package/components/matcha-radio.scss +6 -6
  46. package/components/matcha-scrollbar.scss +1 -2
  47. package/components/matcha-scrollbox-shadow.scss +35 -37
  48. package/components/matcha-section.scss +5 -9
  49. package/components/matcha-select-multiple.scss +56 -0
  50. package/components/matcha-select.scss +7 -7
  51. package/components/matcha-skeleton.scss +6 -7
  52. package/components/matcha-slide-toggle.scss +33 -299
  53. package/components/matcha-slider.scss +5 -5
  54. package/components/matcha-snack-bar.scss +17 -18
  55. package/components/matcha-spin.scss +12 -103
  56. package/components/matcha-spinner.scss +1 -1
  57. package/components/matcha-stepper.scss +15 -16
  58. package/components/matcha-table.scss +14 -15
  59. package/components/matcha-tabs.scss +22 -24
  60. package/components/matcha-text-editor.scss +78 -78
  61. package/components/matcha-time.scss +2 -2
  62. package/components/matcha-toolbar.scss +1 -1
  63. package/components/matcha-tooltip.scss +14 -12
  64. package/main.scss +7 -2
  65. package/package.json +1 -1
  66. package/tokens/_color-tokens.scss +0 -3
  67. package/tokens/_css-custom-properties.scss +233 -179
  68. package/tokens/_primitives.scss +82 -0
  69. package/tokens/_semantic-aliases.scss +120 -0
@@ -6,54 +6,53 @@
6
6
  // =============================================================================
7
7
 
8
8
  @mixin matcha-horizontal-tree-theme($theme) {
9
- $is-dark: map.get($theme, is-dark);
10
9
 
11
10
  .svg-line line {
12
- stroke: var(--matcha-color-text-placeholder, #{getBlueGrey($theme)});
11
+ stroke: var(--matcha-color-text-placeholder);
13
12
  }
14
13
 
15
14
  .child {
16
15
  .the-line-connect-first {
17
- box-shadow: inset 2px -2px 0 2px var(--matcha-color-accent, #{getAccent($theme)});
16
+ box-shadow: inset 2px -2px 0 2px var(--matcha-color-accent);
18
17
  }
19
18
 
20
19
  .the-line-connect {
21
- box-shadow: inset 2px -2px 0 2px var(--matcha-color-accent, #{getAccent($theme)});
20
+ box-shadow: inset 2px -2px 0 2px var(--matcha-color-accent);
22
21
  }
23
22
 
24
23
  .the-line-connect-last {
25
- box-shadow: inset 2px -2px 0 2px var(--matcha-color-accent, #{getAccent($theme)});
24
+ box-shadow: inset 2px -2px 0 2px var(--matcha-color-accent);
26
25
  }
27
26
 
28
27
  .the-line-connect-first-modal {
29
- box-shadow: inset 2px -2px 0 2px var(--matcha-color-accent-alpha, #{getAccentAlpha($theme)});
28
+ box-shadow: inset 2px -2px 0 2px var(--matcha-color-accent-alpha);
30
29
  }
31
30
 
32
31
  .the-line-connect-second-modal {
33
- box-shadow: inset 2px -2px 0 2px var(--matcha-color-accent-alpha, #{getAccentAlpha($theme)});
32
+ box-shadow: inset 2px -2px 0 2px var(--matcha-color-accent-alpha);
34
33
  }
35
34
 
36
35
  .the-line-connect-last-modal {
37
- box-shadow: inset 2px -2px 0 2px var(--matcha-color-accent-alpha, #{getAccentAlpha($theme)});
36
+ box-shadow: inset 2px -2px 0 2px var(--matcha-color-accent-alpha);
38
37
  }
39
38
 
40
39
  .the-line-connect-start-modal {
41
- box-shadow: inset 2px -2px 0 2px var(--matcha-color-accent-alpha, #{getAccentAlpha($theme)});
40
+ box-shadow: inset 2px -2px 0 2px var(--matcha-color-accent-alpha);
42
41
  }
43
42
 
44
43
  .the-line-connect-middle {
45
- box-shadow: inset 2px -2px 0 2px var(--matcha-color-border, #{getGrey($theme)});
44
+ box-shadow: inset 2px -2px 0 2px var(--matcha-color-border);
46
45
  }
47
46
  }
48
47
 
49
48
  .tree-node {
50
49
  &-content {
51
50
  &-btn-add-node {
52
- background: var(--matcha-color-surface, #{getSurface($theme)});
53
- box-shadow: inset 0 0 0 3px var(--matcha-color-accent, #{getAccent($theme)});
51
+ background: var(--matcha-color-surface);
52
+ box-shadow: inset 0 0 0 3px var(--matcha-color-accent);
54
53
 
55
54
  &-i {
56
- color: var(--matcha-color-accent, #{getAccent($theme)});
55
+ color: var(--matcha-color-accent);
57
56
  }
58
57
  }
59
58
  }
@@ -62,11 +61,11 @@
62
61
  .tree-first-node {
63
62
  &-begin {
64
63
  &-btn-add-node {
65
- background: var(--matcha-color-surface, #{getSurface($theme)});
66
- box-shadow: inset 0 0 0 3px var(--matcha-color-accent, #{getAccent($theme)});
64
+ background: var(--matcha-color-surface);
65
+ box-shadow: inset 0 0 0 3px var(--matcha-color-accent);
67
66
 
68
67
  &-i {
69
- color: var(--matcha-color-accent, #{getAccent($theme)});
68
+ color: var(--matcha-color-accent);
70
69
  }
71
70
  }
72
71
  }
@@ -22,10 +22,10 @@ $icon-size-xl: 48px;
22
22
  [class^="i-matcha-"],
23
23
  [class*=" i-matcha-"],
24
24
  matcha-icon[library="symbols"] {
25
- font-size: var(--matcha-icon-size-md, #{$icon-size-md});
26
- width: var(--matcha-icon-size-md, #{$icon-size-md});
27
- height: var(--matcha-icon-size-md, #{$icon-size-md});
28
- line-height: var(--matcha-icon-size-md, #{$icon-size-md});
25
+ font-size: var(--matcha-icon-size-md);
26
+ width: var(--matcha-icon-size-md);
27
+ height: var(--matcha-icon-size-md);
28
+ line-height: var(--matcha-icon-size-md);
29
29
 
30
30
  &.i-size-xs,
31
31
  &[size="xs"] {
@@ -37,34 +37,34 @@ matcha-icon[library="symbols"] {
37
37
 
38
38
  &.i-size-sm,
39
39
  &[size="sm"] {
40
- font-size: var(--matcha-icon-size-sm, #{$icon-size-sm});
41
- width: var(--matcha-icon-size-sm, #{$icon-size-sm});
42
- height: var(--matcha-icon-size-sm, #{$icon-size-sm});
43
- line-height: var(--matcha-icon-size-sm, #{$icon-size-sm});
40
+ font-size: var(--matcha-icon-size-sm);
41
+ width: var(--matcha-icon-size-sm);
42
+ height: var(--matcha-icon-size-sm);
43
+ line-height: var(--matcha-icon-size-sm);
44
44
  }
45
45
 
46
46
  &.i-size-md,
47
47
  &[size="md"] {
48
- font-size: var(--matcha-icon-size-md, #{$icon-size-md});
49
- width: var(--matcha-icon-size-md, #{$icon-size-md});
50
- height: var(--matcha-icon-size-md, #{$icon-size-md});
51
- line-height: var(--matcha-icon-size-md, #{$icon-size-md});
48
+ font-size: var(--matcha-icon-size-md);
49
+ width: var(--matcha-icon-size-md);
50
+ height: var(--matcha-icon-size-md);
51
+ line-height: var(--matcha-icon-size-md);
52
52
  }
53
53
 
54
54
  &.i-size-lg,
55
55
  &[size="lg"] {
56
- font-size: var(--matcha-icon-size-lg, #{$icon-size-lg});
57
- width: var(--matcha-icon-size-lg, #{$icon-size-lg});
58
- height: var(--matcha-icon-size-lg, #{$icon-size-lg});
59
- line-height: var(--matcha-icon-size-lg, #{$icon-size-lg});
56
+ font-size: var(--matcha-icon-size-lg);
57
+ width: var(--matcha-icon-size-lg);
58
+ height: var(--matcha-icon-size-lg);
59
+ line-height: var(--matcha-icon-size-lg);
60
60
  }
61
61
 
62
62
  &.i-size-xl,
63
63
  &[size="xl"] {
64
- font-size: var(--matcha-icon-size-xl, #{$icon-size-xl});
65
- width: var(--matcha-icon-size-xl, #{$icon-size-xl});
66
- height: var(--matcha-icon-size-xl, #{$icon-size-xl});
67
- line-height: var(--matcha-icon-size-xl, #{$icon-size-xl});
64
+ font-size: var(--matcha-icon-size-xl);
65
+ width: var(--matcha-icon-size-xl);
66
+ height: var(--matcha-icon-size-xl);
67
+ line-height: var(--matcha-icon-size-xl);
68
68
  }
69
69
  }
70
70
 
@@ -81,14 +81,14 @@ matcha-icon[library="symbols"] {
81
81
  matcha-icon,
82
82
  [class^="i-matcha-"],
83
83
  [class*=" i-matcha-"] {
84
- color: var(--matcha-icon-color, var(--matcha-color-icon-default, #{getBlueGrey($theme)}));
84
+ color: var(--matcha-icon-color, var(--matcha-color-icon-default));
85
85
 
86
- &.color-fg, &[color="fg"] { --matcha-icon-color: var(--matcha-color-fg, #{getForeground($theme)}); }
87
- &.color-accent, &[color="accent"] { --matcha-icon-color: var(--matcha-color-accent, #{getAccent($theme)}); }
88
- &.color-primary, &[color="primary"] { --matcha-icon-color: var(--matcha-color-primary, #{getPrimary($theme)}); }
89
- &.color-danger, &[color="danger"] { --matcha-icon-color: var(--matcha-color-danger, #{getDanger($theme)}); }
90
- &.color-warn, &[color="warn"] { --matcha-icon-color: var(--matcha-color-warn, #{getWarn($theme)}); }
91
- &.color-success, &[color="success"] { --matcha-icon-color: var(--matcha-color-success, #{getSuccess($theme)}); }
86
+ &.color-fg, &[color="fg"] { --matcha-icon-color: var(--matcha-color-fg); }
87
+ &.color-accent, &[color="accent"] { --matcha-icon-color: var(--matcha-color-accent); }
88
+ &.color-primary, &[color="primary"] { --matcha-icon-color: var(--matcha-color-primary); }
89
+ &.color-danger, &[color="danger"] { --matcha-icon-color: var(--matcha-color-danger); }
90
+ &.color-warn, &[color="warn"] { --matcha-icon-color: var(--matcha-color-warn); }
91
+ &.color-success, &[color="success"] { --matcha-icon-color: var(--matcha-color-success); }
92
92
 
93
93
  &[disabled],
94
94
  &.disabled {
@@ -8,14 +8,13 @@
8
8
  // =============================================================================
9
9
 
10
10
  @mixin matcha-image-theme($theme) {
11
- $is-dark: map.get($theme, is-dark);
12
11
 
13
12
  .matcha-image {
14
- background: var(--matcha-color-surface, #{getSurface($theme)});
13
+ background: var(--matcha-color-surface);
15
14
  }
16
15
 
17
16
  .matcha-image__placeholder-icon {
18
- color: var(--matcha-color-text-placeholder, #{getBlueGrey($theme)});
17
+ color: var(--matcha-color-text-placeholder);
19
18
  }
20
19
  }
21
20
 
@@ -39,7 +39,6 @@
39
39
  // =============================================================================
40
40
 
41
41
  @mixin matcha-list-theme($theme) {
42
- $is-dark: map.get($theme, is-dark);
43
42
 
44
43
  // ── List container ──
45
44
  matcha-list,
@@ -67,13 +66,13 @@
67
66
  border-radius: var(--matcha-radius-md, 4px);
68
67
  cursor: pointer;
69
68
  outline: none;
70
- color: var(--matcha-list-item-text, var(--matcha-color-fg, #{getForeground($theme)}));
69
+ color: var(--matcha-list-item-text, var(--matcha-color-fg));
71
70
  text-decoration: none;
72
71
  transition: background-color 150ms;
73
72
 
74
73
  // Focus ring
75
74
  &:focus-visible {
76
- outline: var(--matcha-state-focus-ring-width, 2px) solid var(--matcha-color-accent, #{getAccent($theme)});
75
+ outline: var(--matcha-state-focus-ring-width, 2px) solid var(--matcha-color-accent);
77
76
  outline-offset: var(--matcha-state-focus-ring-offset, 2px);
78
77
  }
79
78
 
@@ -87,15 +86,15 @@
87
86
 
88
87
  // Active/Selected
89
88
  &.matcha-list-item--active {
90
- background-color: var(--matcha-color-accent-surface, #{getAccentAlpha($theme)});
89
+ background-color: var(--matcha-color-accent-surface, var(--matcha-color-accent-alpha));
91
90
 
92
91
  .matcha-list-item__label {
93
- color: var(--matcha-color-accent, #{getAccent($theme)});
92
+ color: var(--matcha-color-accent);
94
93
  font-weight: 600;
95
94
  }
96
95
 
97
96
  .matcha-list-item__leading {
98
- color: var(--matcha-color-accent, #{getAccent($theme)});
97
+ color: var(--matcha-color-accent);
99
98
  }
100
99
  }
101
100
  }
@@ -115,7 +114,7 @@
115
114
  display: flex;
116
115
  align-items: center;
117
116
  justify-content: center;
118
- color: var(--matcha-color-hint, #{getGrey($theme)});
117
+ color: var(--matcha-color-hint, var(--matcha-color-text-muted));
119
118
  }
120
119
 
121
120
  // ── Text area (label + description) ──
@@ -131,7 +130,7 @@
131
130
  font-size: var(--matcha-text-body-md, 14px);
132
131
  font-weight: var(--matcha-weight-regular, 400);
133
132
  line-height: var(--matcha-leading-body-md, 20px);
134
- color: var(--matcha-list-item-text, var(--matcha-color-fg, #{getForeground($theme)}));
133
+ color: var(--matcha-list-item-text, var(--matcha-color-fg));
135
134
  overflow: hidden;
136
135
  text-overflow: ellipsis;
137
136
  white-space: nowrap;
@@ -141,7 +140,7 @@
141
140
  font-size: var(--matcha-text-body-sm, 12px);
142
141
  font-weight: var(--matcha-weight-regular, 400);
143
142
  line-height: var(--matcha-leading-body-sm, 16px);
144
- color: var(--matcha-color-hint, #{getGrey($theme)});
143
+ color: var(--matcha-color-hint, var(--matcha-color-text-muted));
145
144
  overflow: hidden;
146
145
  text-overflow: ellipsis;
147
146
  white-space: nowrap;
@@ -153,14 +152,14 @@
153
152
  display: flex;
154
153
  align-items: center;
155
154
  gap: var(--matcha-space-100, 8px);
156
- color: var(--matcha-color-hint, #{getGrey($theme)});
155
+ color: var(--matcha-color-hint, var(--matcha-color-text-muted));
157
156
  }
158
157
 
159
158
  // ── Divider between items ──
160
159
  .matcha-list-divider {
161
160
  height: var(--matcha-border-hairline, 1px);
162
161
  margin: var(--matcha-space-050, 4px) var(--matcha-space-200, 16px);
163
- background-color: var(--matcha-color-border, #{getGrey($theme)});
162
+ background-color: var(--matcha-color-border);
164
163
  opacity: var(--matcha-opacity-subtle, 0.10);
165
164
  }
166
165
 
@@ -174,7 +173,7 @@
174
173
  line-height: var(--matcha-leading-p-tiny, 14px);
175
174
  letter-spacing: var(--matcha-letter-spacing-wide, 0.5px);
176
175
  text-transform: uppercase;
177
- color: var(--matcha-color-hint, #{getGrey($theme)});
176
+ color: var(--matcha-color-hint, var(--matcha-color-text-muted));
178
177
  }
179
178
 
180
179
  // ── 2-line variant (with description) ──
@@ -60,7 +60,7 @@ matcha-menu > matcha-panel {
60
60
  font-weight: var(--matcha-weight-medium, 500);
61
61
 
62
62
  &:focus-visible:not([disabled]) {
63
- outline: var(--matcha-state-focus-ring-width, 2px) solid var(--matcha-color-accent, #{getAccent($theme)});
63
+ outline: var(--matcha-state-focus-ring-width, 2px) solid var(--matcha-color-accent);
64
64
  outline-offset: var(--matcha-state-focus-ring-offset, 2px);
65
65
  }
66
66
 
@@ -82,7 +82,7 @@ matcha-menu > matcha-panel {
82
82
  transform: translateY(-50%);
83
83
  width: 0;
84
84
  height: 0;
85
- border-left: calc(var(--matcha-border-medium, 4px) + var(--matcha-border-hairline, 1px)) solid var(--matcha-color-hint, #{getGrey($theme)});
85
+ border-left: calc(var(--matcha-border-medium, 4px) + var(--matcha-border-hairline, 1px)) solid var(--matcha-color-hint, var(--matcha-color-text-muted));
86
86
  border-top: var(--matcha-border-medium, 4px) solid transparent;
87
87
  border-bottom: var(--matcha-border-medium, 4px) solid transparent;
88
88
  opacity: var(--matcha-opacity-secondary, 0.54);
@@ -96,7 +96,6 @@
96
96
  // =============================================================================
97
97
 
98
98
  @mixin matcha-modal-theme($theme) {
99
- $is-dark: map.get($theme, is-dark);
100
99
 
101
100
  // ── Host element ──
102
101
  matcha-modal {
@@ -146,8 +145,8 @@
146
145
  // Floating overlay sobre scrim — usa surface-card-strong (pure white
147
146
  // no light, lifted dark) pra máximo destaque. Cards inline usam o card
148
147
  // soft default (#f8faf8) mas modal precisa pop.
149
- background-color: var(--matcha-color-surface-card-strong, var(--matcha-color-surface-card, #{getSurface($theme)}));
150
- color: var(--matcha-color-fg, #{getForeground($theme)});
148
+ background-color: var(--matcha-color-surface-card-strong, var(--matcha-color-surface-card));
149
+ color: var(--matcha-color-fg);
151
150
  overflow: hidden;
152
151
  animation: matcha-modal-in var(--matcha-duration-fast, 200ms) var(--matcha-easing-emphasized, cubic-bezier(0.2, 0, 0, 1));
153
152
 
@@ -161,16 +160,16 @@
161
160
  // Theme só pinta: bg dos slots herda surface-card-strong do parent .matcha-modal,
162
161
  // texto pega text-primary, dividers usam surface-border.
163
162
  .matcha-modal-header__title {
164
- color: var(--matcha-color-text-primary, #{getForeground($theme)});
163
+ color: var(--matcha-color-text-primary);
165
164
  }
166
165
 
167
166
  .matcha-modal-content {
168
- color: var(--matcha-color-text-primary, #{getForeground($theme)});
167
+ color: var(--matcha-color-text-primary);
169
168
  }
170
169
 
171
170
  // ── Focus ring on modal ──
172
171
  .matcha-modal:focus-visible {
173
- outline: var(--matcha-state-focus-ring-width, 2px) solid var(--matcha-color-accent, #{getAccent($theme)});
172
+ outline: var(--matcha-state-focus-ring-width, 2px) solid var(--matcha-color-accent);
174
173
  outline-offset: var(--matcha-state-focus-ring-offset, 2px);
175
174
  }
176
175
  }
@@ -454,15 +454,15 @@
454
454
  // Bg/border/etc aplicados no .matcha-nav-item__row (não no host) — assim
455
455
  // os filhos aninhados não herdam o bg do pai expandido/ativo.
456
456
  .matcha-nav-item {
457
- color: var(--matcha-color-text-primary, #{getForeground($theme)});
457
+ color: var(--matcha-color-text-primary);
458
458
 
459
459
  .matcha-nav-item__label {
460
- color: var(--matcha-color-text-primary, #{getForeground($theme)});
460
+ color: var(--matcha-color-text-primary);
461
461
  }
462
462
 
463
463
  .matcha-nav-item__icon,
464
464
  .matcha-nav-item__chevron {
465
- color: var(--matcha-color-text-secondary, #{getGrey($theme)});
465
+ color: var(--matcha-color-text-secondary);
466
466
  }
467
467
 
468
468
  // Hover — bg accent/surface-hover direto (Figma usa este token, não state-layer).
@@ -493,7 +493,7 @@
493
493
 
494
494
  // Badge — Figma DSV3 feedback/danger bg + danger-contrast fg (Padrão).
495
495
  .matcha-nav-item__badge {
496
- background: var(--matcha-color-feedback-danger, #{getDanger($theme)});
496
+ background: var(--matcha-color-feedback-danger);
497
497
  color: var(--matcha-color-feedback-danger-contrast, rgba(0, 0, 0, 0.87));
498
498
  }
499
499
 
@@ -519,8 +519,8 @@
519
519
  .matcha-nav-rail {
520
520
  background-color: color-mix(
521
521
  in srgb,
522
- var(--matcha-color-surface-bg, #{getBackground($theme)}) 96%,
523
- var(--matcha-color-fg, #{getForeground($theme)}) 4%
522
+ var(--matcha-color-surface-bg) 96%,
523
+ var(--matcha-color-fg) 4%
524
524
  );
525
525
  }
526
526
 
@@ -529,10 +529,10 @@
529
529
  // Inactive: text-secondary no button + override no matcha-icon filho
530
530
  // (matcha-icon tem regra global no theme com mesma especificidade,
531
531
  // então precisa target explícito pra vencer no cascade).
532
- color: var(--matcha-color-text-secondary, #{getGrey($theme)});
532
+ color: var(--matcha-color-text-secondary);
533
533
 
534
534
  matcha-icon {
535
- color: var(--matcha-color-text-secondary, #{getGrey($theme)});
535
+ color: var(--matcha-color-text-secondary);
536
536
  }
537
537
 
538
538
  // Hover (inactive): bg accent/surface-hover (state-layer canon Figma).
@@ -546,35 +546,35 @@
546
546
  &.matcha-nav-rail__module--active,
547
547
  &[aria-current] {
548
548
  background-color: var(--matcha-color-accent-surface-hover);
549
- color: var(--matcha-color-accent, #{getAccent($theme)});
549
+ color: var(--matcha-color-accent);
550
550
 
551
551
  matcha-icon {
552
- color: var(--matcha-color-accent, #{getAccent($theme)});
552
+ color: var(--matcha-color-accent);
553
553
  }
554
554
  }
555
555
  }
556
556
 
557
557
  .matcha-nav-rail__divider {
558
- background-color: var(--matcha-color-surface-border, #{getGrey($theme)});
558
+ background-color: var(--matcha-color-surface-border);
559
559
  }
560
560
 
561
561
  // ── Nav Panel (Figma DSV3 1:1) ──
562
562
  // bg surface/card (1 step acima do rail). Sem shadow — só tonal hierarchy.
563
563
  .matcha-nav-panel {
564
- background-color: var(--matcha-color-surface-card, #{getSurface($theme)});
565
- border-right: var(--matcha-border-hairline, 1px) solid var(--matcha-color-surface-border, #{getGrey($theme)});
564
+ background-color: var(--matcha-color-surface-card);
565
+ border-right: var(--matcha-border-hairline, 1px) solid var(--matcha-color-surface-border);
566
566
  }
567
567
 
568
568
  .matcha-nav-panel__divider {
569
- background-color: var(--matcha-color-surface-border, #{getGrey($theme)});
569
+ background-color: var(--matcha-color-surface-border);
570
570
  }
571
571
 
572
572
  .matcha-nav-panel__title {
573
- color: var(--matcha-color-text-primary, #{getForeground($theme)});
573
+ color: var(--matcha-color-text-primary);
574
574
  }
575
575
 
576
576
  .matcha-nav-panel__title-icon {
577
- color: var(--matcha-color-text-secondary, #{getGrey($theme)});
577
+ color: var(--matcha-color-text-secondary);
578
578
  }
579
579
 
580
580
  // ── Command Palette theme em matcha-command-palette.scss (canônico) ──
@@ -9,17 +9,16 @@
9
9
  // =============================================================================
10
10
 
11
11
  @mixin matcha-notification-theme($theme) {
12
- $is-dark: map.get($theme, is-dark);
13
12
 
14
13
  // Title sempre text-primary, description sempre text-secondary (Figma DSV3).
15
14
  // Texto fica legível porque bg é alpha 10% — usuário lê o texto sobre o
16
15
  // surface real, não sobre a tinta.
17
16
  .matcha-notification__title {
18
- color: var(--matcha-color-text-primary, #{getForeground($theme)});
17
+ color: var(--matcha-color-text-primary);
19
18
  }
20
19
 
21
20
  .matcha-notification__description {
22
- color: var(--matcha-color-text-secondary, #{getBlueGrey($theme)});
21
+ color: var(--matcha-color-text-secondary);
23
22
  }
24
23
 
25
24
  // Close icon — color icon/default (token DSV3 #5f656b light / #9aa0a6 dark).
@@ -27,7 +26,7 @@
27
26
  color: var(--matcha-color-icon-default, var(--matcha-color-text-secondary));
28
27
 
29
28
  &:focus-visible {
30
- outline: var(--matcha-state-focus-ring-width, 2px) solid var(--matcha-color-accent, #{getAccent($theme)});
29
+ outline: var(--matcha-state-focus-ring-width, 2px) solid var(--matcha-color-accent);
31
30
  outline-offset: var(--matcha-state-focus-ring-offset, 2px);
32
31
  }
33
32
  }
@@ -110,6 +110,25 @@
110
110
  background: var(--matcha-color-accent-surface-hover);
111
111
  }
112
112
  }
113
+
114
+ // ── Modo múltiplo (matcha-select-multiple) — checkbox à esquerda ──
115
+ // O realce do item marcado é o próprio checkbox; por isso o fundo
116
+ // accent/alpha do single-select é neutralizado quando não há hover/cursor.
117
+ &.matcha-option-multiple {
118
+ gap: var(--matcha-space-100, 8px);
119
+
120
+ &[aria-selected="true"]:not(:hover):not(.matcha-option-highlighted) {
121
+ background: transparent;
122
+ }
123
+
124
+ .matcha-option-checkbox {
125
+ display: inline-flex;
126
+ align-items: center;
127
+ // Checkbox é puramente visual: o clique cai no host matcha-option,
128
+ // que faz o toggle (tanto na opção quanto sobre o checkbox).
129
+ pointer-events: none;
130
+ }
131
+ }
113
132
  }
114
133
  }
115
134
 
@@ -10,25 +10,25 @@
10
10
  min-height: 800px;
11
11
  width: 100%;
12
12
 
13
- --gjs-main-color: #{getSurface($theme)};
14
- --gjs-primary-color: #{getBackground($theme)};
15
- --gjs-secondary-color: #{getBlueGrey($theme)};
16
- --gjs-tertiary-color: #{getSurface($theme)};
17
- --gjs-quaternary-color: #{getAccent($theme)};
18
-
19
- --gjs-main-dark-color: #{getSurfaceAlpha($theme)};
20
- --gjs-secondary-dark-color: #{getSurface($theme)};
21
- --gjs-quaternary-dark-color: #{getAccentAlpha($theme)};
22
-
23
- --gjs-font-color: #{getForeground($theme)};
24
- --gjs-font-color-active: #{getForegroundAlpha($theme)};
13
+ --gjs-main-color: var(--matcha-color-surface);
14
+ --gjs-primary-color: var(--matcha-color-bg);
15
+ --gjs-secondary-color: var(--matcha-color-text-hint);
16
+ --gjs-tertiary-color: var(--matcha-color-surface);
17
+ --gjs-quaternary-color: var(--matcha-color-accent);
18
+
19
+ --gjs-main-dark-color: var(--matcha-color-surface-card-alpha);
20
+ --gjs-secondary-dark-color: var(--matcha-color-surface);
21
+ --gjs-quaternary-dark-color: var(--matcha-color-accent-alpha);
22
+
23
+ --gjs-font-color: var(--matcha-color-fg);
24
+ --gjs-font-color-active: var(--matcha-color-fg-alpha);
25
25
  --gjs-main-light-color: rgba(255, 255, 255, 0.1);
26
26
  --gjs-secondary-light-color: rgba(255, 255, 255, 0.7);
27
27
  --gjs-soft-light-color: rgba(255, 255, 255, 0.015);
28
- --gjs-color-blue: #{getBlue($theme)};
29
- --gjs-color-red: #{getRed($theme)};
30
- --gjs-color-yellow: #{getYellow($theme)};
31
- --gjs-color-green: #{getGreen($theme)};
28
+ --gjs-color-blue: var(--matcha-prim-blue-700);
29
+ --gjs-color-red: var(--matcha-color-danger);
30
+ --gjs-color-yellow: var(--matcha-prim-yellow-500);
31
+ --gjs-color-green: var(--matcha-color-success);
32
32
  --gjs-left-width: 15%;
33
33
  --gjs-color-highlight: #71b7f1;
34
34
  --gjs-color-warn: #ffca6f;
@@ -26,31 +26,30 @@
26
26
  // =============================================================================
27
27
 
28
28
  @mixin matcha-paginator-theme($theme) {
29
- $is-dark: map.get($theme, is-dark);
30
29
 
31
30
  .matcha-paginator {
32
31
  // ── Active page — accent only (consistência, não over-engineering) ──
33
32
  .page-button.active {
34
- background-color: var(--matcha-color-accent, #{getAccent($theme)});
35
- color: var(--matcha-color-accent-contrast, #{getAccentContrast($theme)});
33
+ background-color: var(--matcha-color-accent);
34
+ color: var(--matcha-color-accent-contrast);
36
35
  }
37
36
 
38
37
  // ── Total info ──
39
38
  .paginator-total-info {
40
39
  .total-range {
41
- color: var(--matcha-color-text-label, #{getBlueGrey($theme)});
40
+ color: var(--matcha-color-text-label);
42
41
  }
43
42
  .total-filtered {
44
- color: var(--matcha-color-text-secondary, #{getForegroundAlpha($theme)});
43
+ color: var(--matcha-color-text-secondary);
45
44
  }
46
45
  }
47
46
 
48
47
  // ── Page buttons (inactive) ──
49
48
  .page-button:not(.active) {
50
- color: var(--matcha-color-text-label, #{getBlueGrey($theme)});
49
+ color: var(--matcha-color-text-label);
51
50
 
52
51
  &:hover {
53
- background-color: var(--matcha-color-surface-hover, #{getBackgroundAlpha($theme)});
52
+ background-color: var(--matcha-color-surface-hover);
54
53
  }
55
54
  }
56
55
  }
@@ -138,20 +138,19 @@
138
138
  }
139
139
 
140
140
  @mixin matcha-panel-theme($theme) {
141
- $is-dark: map.get($theme, is-dark);
142
141
 
143
142
  .matcha-panel {
144
143
  // Floating overlay (dropdown/popover) — surface-card-strong (pure white
145
144
  // light, lifted dark). Inline cards usam soft default; panel flutua.
146
- background: var(--matcha-color-surface-card-strong, var(--matcha-color-surface-card, var(--matcha-color-surface, #{getSurface($theme)})));
147
- color: var(--matcha-color-text-primary, var(--matcha-color-fg, #{getForeground($theme)}));
145
+ background: var(--matcha-color-surface-card-strong, var(--matcha-color-surface-card, var(--matcha-color-surface)));
146
+ color: var(--matcha-color-text-primary, var(--matcha-color-fg));
148
147
 
149
148
  // Shadow level 3 (floating panels — Figma DSV3 elevation/level-3)
150
- box-shadow: var(--matcha-shadow-3, #{if($is-dark, $shadow-3-dark, $shadow-3-light)});
149
+ box-shadow: var(--matcha-shadow-3);
151
150
  border: var(--matcha-border-hairline, 1px) solid var(--matcha-color-surface-border, rgba(255, 255, 255, 0.12));
152
151
 
153
152
  &:focus-within {
154
- box-shadow: var(--matcha-shadow-4, #{if($is-dark, $shadow-4-dark, $shadow-4-light)});
153
+ box-shadow: var(--matcha-shadow-4);
155
154
  }
156
155
  }
157
156
 
@@ -10,15 +10,15 @@
10
10
 
11
11
  @mixin matcha-profile-card-theme($theme) {
12
12
  .matcha-profile-card {
13
- color: var(--matcha-color-fg, #{getForeground($theme)});
13
+ color: var(--matcha-color-fg);
14
14
  }
15
15
 
16
16
  .matcha-profile-card__name {
17
- color: var(--matcha-color-fg, #{getForeground($theme)});
17
+ color: var(--matcha-color-fg);
18
18
  }
19
19
 
20
20
  .matcha-profile-card__role {
21
- color: var(--matcha-color-text-hint, #{getBlueGrey($theme)});
21
+ color: var(--matcha-color-text-hint);
22
22
  }
23
23
  }
24
24
 
@@ -23,7 +23,7 @@
23
23
 
24
24
  matcha-progress-bar {
25
25
  // Default fill = accent
26
- --matcha-progress-fill: var(--matcha-color-accent, #{getAccent($theme)});
26
+ --matcha-progress-fill: var(--matcha-color-accent);
27
27
 
28
28
  // Bind por color attr → CSS var (mesma estratégia do slider/spinner)
29
29
  @each $name, $fn in $semantic-colors {