@inchurch/matcha-theme 20.0.8 → 20.276.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 (99) hide show
  1. package/abstracts/_colors.scss +404 -404
  2. package/abstracts/_elevation.scss +102 -102
  3. package/abstracts/_functions.scss +1212 -1212
  4. package/abstracts/_media-breakpoint.scss +23 -23
  5. package/abstracts/_typography.scss +127 -127
  6. package/base/_reset.scss +438 -438
  7. package/components/app-page-header.scss +260 -0
  8. package/components/matcha-accordion.scss +294 -157
  9. package/components/matcha-avatar.scss +171 -31
  10. package/components/matcha-badge.scss +4 -4
  11. package/components/matcha-breadcrumb.scss +232 -126
  12. package/components/matcha-button-toggle.scss +44 -0
  13. package/components/matcha-buttons.scss +908 -784
  14. package/components/matcha-calendar.scss +70 -2
  15. package/components/matcha-cards.scss +28 -2
  16. package/components/matcha-checkbox.scss +191 -490
  17. package/components/matcha-chip.scss +297 -212
  18. package/components/matcha-command-palette.scss +291 -63
  19. package/components/matcha-crop.scss +407 -172
  20. package/components/matcha-date.scss +81 -81
  21. package/components/matcha-divider.scss +86 -31
  22. package/components/matcha-drawer.scss +201 -50
  23. package/components/matcha-drop-image.scss +14 -0
  24. package/components/matcha-drop-list.scss +42 -1
  25. package/components/matcha-empty-state.scss +195 -83
  26. package/components/matcha-flag.scss +93 -52
  27. package/components/matcha-footer.scss +68 -164
  28. package/components/matcha-form-field.scss +52 -0
  29. package/components/matcha-form-section.scss +101 -101
  30. package/components/matcha-header.scss +135 -325
  31. package/components/matcha-highlight.scss +65 -197
  32. package/components/matcha-hint-text.scss +21 -0
  33. package/components/matcha-horizontal-tree.scss +317 -317
  34. package/components/matcha-icon.scss +17 -25
  35. package/components/matcha-list.scss +5 -5
  36. package/components/matcha-menu.scss +13 -0
  37. package/components/matcha-modal.scss +58 -84
  38. package/components/matcha-nav.scss +361 -230
  39. package/components/matcha-notification.scss +413 -197
  40. package/components/matcha-option.scss +79 -23
  41. package/components/matcha-paginator.scss +689 -235
  42. package/components/matcha-panel.scss +42 -26
  43. package/components/matcha-profile-card.scss +50 -50
  44. package/components/matcha-progress-bar.scss +257 -153
  45. package/components/matcha-radio.scss +244 -452
  46. package/components/matcha-scrollbox-shadow.scss +122 -122
  47. package/components/matcha-select.scss +3 -3
  48. package/components/matcha-skeleton.scss +18 -0
  49. package/components/matcha-slide-toggle.scss +47 -2
  50. package/components/matcha-slider.scss +172 -75
  51. package/components/matcha-snack-bar.scss +114 -121
  52. package/components/matcha-spinner.scss +76 -57
  53. package/components/matcha-status-pill.scss +82 -0
  54. package/components/matcha-stepper.scss +377 -177
  55. package/components/matcha-table.scss +569 -785
  56. package/components/matcha-tabs.scss +624 -469
  57. package/components/matcha-text-editor.scss +98 -144
  58. package/components/matcha-toolbar.scss +359 -206
  59. package/components/matcha-tooltip.scss +156 -62
  60. package/components/matcha-tree-view.scss +189 -0
  61. package/components/matcha-uploader.scss +240 -62
  62. package/fonts/manrope/manrope-latin-ext.woff2 +0 -0
  63. package/fonts/manrope/manrope-latin.woff2 +0 -0
  64. package/layout/matcha-page-layout.scss +776 -0
  65. package/main.scss +232 -261
  66. package/package.json +1 -1
  67. package/tokens/_animations-tokens.scss +37 -37
  68. package/tokens/_breakpoints-tokens.scss +35 -26
  69. package/tokens/_color-tokens.scss +1152 -1152
  70. package/tokens/_css-custom-properties.scss +650 -568
  71. package/tokens/_spacing-tokens.scss +94 -94
  72. package/vendors/angular-editor.scss +56 -56
  73. package/vendors/angular-material-fixes.scss +297 -297
  74. package/vendors/charts.scss +92 -92
  75. package/vendors/ng5-slider.scss +56 -56
  76. package/vendors/ngx-material-timepicker.scss +50 -50
  77. package/fonts/CircularStd-Black.eot +0 -0
  78. package/fonts/CircularStd-Black.svg +0 -3426
  79. package/fonts/CircularStd-Black.ttf +0 -0
  80. package/fonts/CircularStd-Black.woff +0 -0
  81. package/fonts/CircularStd-Black.woff2 +0 -0
  82. package/fonts/CircularStd-Bold.eot +0 -0
  83. package/fonts/CircularStd-Bold.otf +0 -0
  84. package/fonts/CircularStd-Bold.svg +0 -13532
  85. package/fonts/CircularStd-Bold.ttf +0 -0
  86. package/fonts/CircularStd-Bold.woff +0 -0
  87. package/fonts/CircularStd-Bold.woff2 +0 -0
  88. package/fonts/CircularStd-Medium.eot +0 -0
  89. package/fonts/CircularStd-Medium.otf +0 -0
  90. package/fonts/CircularStd-Medium.svg +0 -13511
  91. package/fonts/CircularStd-Medium.ttf +0 -0
  92. package/fonts/CircularStd-Medium.woff +0 -0
  93. package/fonts/CircularStd-Medium.woff2 +0 -0
  94. package/fonts/CircularStd-Regular.eot +0 -0
  95. package/fonts/CircularStd-Regular.otf +0 -0
  96. package/fonts/CircularStd-Regular.svg +0 -2378
  97. package/fonts/CircularStd-Regular.ttf +0 -0
  98. package/fonts/CircularStd-Regular.woff +0 -0
  99. package/fonts/CircularStd-Regular.woff2 +0 -0
@@ -1,212 +1,297 @@
1
- @use "sass:map";
2
-
3
- // =============================================================================
4
- // matcha-chip.scss — Theme mixin + structural styles
5
- // =============================================================================
6
-
7
- // ── Structural (outside mixin — no theme dependency) ─────────────────────────
8
-
9
- matcha-chip {
10
- display: inline-flex;
11
- align-items: center;
12
- padding: var(--matcha-space-100, 8px) var(--matcha-space-150, 12px);
13
- // Figma matcha/chip: 36 height (8+20+8), label 14/500/20
14
- font-size: var(--matcha-text-md, 14px);
15
- font-weight: var(--matcha-weight-medium, 500);
16
- line-height: var(--matcha-leading-body-md, 20px);
17
- cursor: default;
18
- white-space: nowrap;
19
- user-select: none;
20
- overflow: hidden;
21
- border: var(--matcha-border-thin, 2px) solid transparent;
22
- border-radius: var(--matcha-radius-pill, 9999px);
23
- position: relative;
24
- transition: border-color 200ms ease, box-shadow 200ms ease;
25
-
26
- // State layer
27
- &::before {
28
- content: '';
29
- position: absolute;
30
- inset: 0;
31
- background: currentColor;
32
- opacity: 0;
33
- border-radius: inherit;
34
- pointer-events: none;
35
- transition: opacity var(--matcha-duration-instant, 80ms) linear;
36
- }
37
-
38
- // Figma: shadow-1 + subtle darken on hover — darken is achieved via state layer opacity (not filter)
39
- &:hover:not([disabled]):not(.matcha-chip-disabled) {
40
- box-shadow: var(--matcha-shadow-1, 0 1px 3px rgba(0,0,0,0.12));
41
- }
42
- &:hover:not([disabled]):not(.matcha-chip-disabled)::before { opacity: var(--matcha-state-hover, 0.12); }
43
- &:active:not([disabled]):not(.matcha-chip-disabled)::before { opacity: var(--matcha-state-active, 0.16); }
44
-
45
- &[disabled],
46
- &.matcha-chip-disabled {
47
- pointer-events: none;
48
- cursor: default;
49
- }
50
-
51
- &:not([disabled]):not(.matcha-chip-disabled) {
52
- cursor: pointer;
53
- }
54
-
55
- @media (prefers-reduced-motion: reduce) {
56
- transition: none;
57
- &::before { transition: none; }
58
- }
59
- }
60
-
61
- .matcha-chip-content {
62
- display: inline-flex;
63
- align-items: center;
64
- overflow: hidden;
65
- text-overflow: ellipsis;
66
- }
67
-
68
- .matcha-chip-remove {
69
- display: inline-flex;
70
- align-items: center;
71
- justify-content: center;
72
- width: var(--matcha-icon-size-sm, 16px);
73
- height: var(--matcha-icon-size-sm, 16px);
74
- margin-left: var(--matcha-space-100, 8px);
75
- margin-right: -4px;
76
- padding: 0;
77
- border: none;
78
- background: transparent;
79
- border-radius: 50%;
80
- cursor: pointer;
81
- outline: none;
82
- transition: opacity 0.2s;
83
-
84
- // State-layer 12% on hover (Figma spec)
85
- position: relative;
86
- &::before {
87
- content: '';
88
- position: absolute;
89
- inset: 0;
90
- background: currentColor;
91
- opacity: 0;
92
- border-radius: inherit;
93
- pointer-events: none;
94
- transition: opacity 80ms linear;
95
- }
96
- &:hover:not([disabled])::before { opacity: 0.12; }
97
- &:focus-visible:not([disabled])::before { opacity: 0.12; }
98
-
99
- &[disabled] {
100
- cursor: default;
101
- }
102
-
103
- @media (prefers-reduced-motion: reduce) {
104
- transition: none;
105
- }
106
- }
107
-
108
- .matcha-chip-remove-icon {
109
- font-size: var(--matcha-text-title-md, 18px);
110
- line-height: 1; // 18/18 ratio — matches font-size
111
- color: inherit;
112
- }
113
-
114
- .matcha-chip-list-wrapper {
115
- display: flex;
116
- flex-wrap: wrap;
117
- gap: var(--matcha-space-100, 8px);
118
- align-items: center;
119
-
120
- &.matcha-chip-list-vertical {
121
- flex-direction: column;
122
- align-items: flex-start;
123
- }
124
- }
125
-
126
- // ── Theme mixin ──────────────────────────────────────────────────────────────
127
-
128
- @mixin matcha-chip-theme($theme) {
129
- // Mapa de cores sem\u00e2nticas \u2014 mesmo pattern do matcha-button
130
- $chip-colors: (
131
- primary: (getPrimary, getPrimaryContrast),
132
- accent: (getAccent, getAccentContrast),
133
- success: (getSuccess, getSuccessContrast),
134
- warn: (getWarn, getWarnContrast),
135
- danger: (getDanger, getDangerContrast),
136
- info: (getInfo, getInfoContrast),
137
- );
138
-
139
- matcha-chip {
140
- border-color: var(--matcha-color-hint, #{getGrey($theme)});
141
- color: var(--matcha-color-fg, #{getForeground($theme)});
142
-
143
- // Per-color rules (outline default: border + text = cor, fundo transparente)
144
- @each $name, $fns in $chip-colors {
145
- $fn: nth($fns, 1);
146
- $fnContrast: nth($fns, 2);
147
-
148
- &[color="#{$name}"] {
149
- border-color: call(get-function(#{$fn}), $theme);
150
- color: call(get-function(#{$fn}), $theme);
151
-
152
- // Selected na cor: filled com contraste
153
- &.matcha-chip-selected,
154
- &[selected] {
155
- background-color: call(get-function(#{$fn}), $theme);
156
- color: call(get-function(#{$fnContrast}), $theme);
157
-
158
- .matcha-chip-remove-icon {
159
- color: call(get-function(#{$fnContrast}), $theme);
160
- }
161
- }
162
- }
163
- }
164
-
165
- // Selected state (fallback — quando n\u00e3o tem color, usa accent)
166
- &.matcha-chip-selected,
167
- &[selected] {
168
- &:not([color]) {
169
- background-color: var(--matcha-color-accent, #{getAccent($theme)});
170
- border-color: var(--matcha-color-accent, #{getAccent($theme)});
171
- color: var(--matcha-color-accent-contrast, #{getAccentContrast($theme)});
172
-
173
- .matcha-chip-remove-icon {
174
- color: var(--matcha-color-accent-contrast, #{getAccentContrast($theme)});
175
- }
176
- }
177
- }
178
-
179
- // Disabled
180
- &[disabled],
181
- &.matcha-chip-disabled {
182
- border-color: var(--matcha-color-disabled-bg, #{getDisabled($theme)});
183
- color: var(--matcha-color-disabled-fg, #{getDisabledContrast($theme)});
184
-
185
- .matcha-chip-remove-icon {
186
- color: var(--matcha-color-disabled-fg, #{getDisabledContrast($theme)});
187
- }
188
- }
189
-
190
- // Focus ring
191
- &:focus-within {
192
- outline: var(--matcha-state-focus-ring-width, 2px) solid
193
- var(--matcha-color-primary, #{getPrimary($theme)});
194
- outline-offset: var(--matcha-state-focus-ring-offset, 2px);
195
- }
196
- }
197
-
198
- .matcha-chip-remove {
199
- color: var(--matcha-color-hint, #{getGrey($theme)});
200
- }
201
-
202
- // Chip list disabled
203
- .matcha-chip-list-disabled,
204
- [matcha-chip-list][disabled] {
205
- pointer-events: none;
206
-
207
- matcha-chip {
208
- border-color: var(--matcha-color-disabled-bg, #{getDisabled($theme)});
209
- color: var(--matcha-color-disabled-fg, #{getDisabledContrast($theme)});
210
- }
211
- }
212
- }
1
+ @use "sass:map";
2
+
3
+ // =============================================================================
4
+ // matcha-chip.scss — Figma DSV3 matcha/chip (14567:467)
5
+ // 1:1 com spec: 36×* pill, 2px border, gap 8, padding 8/12.
6
+ // 8 variants visuais (Selected × State) implementados via attr/pseudo.
7
+ // =============================================================================
8
+
9
+ // ── Structural + canônico Figma (fora do mixin de tema) ────────────────────
10
+
11
+ matcha-chip {
12
+ // Layout
13
+ box-sizing: border-box;
14
+ display: inline-flex;
15
+ flex-direction: row;
16
+ align-items: center;
17
+ gap: var(--matcha-space-100, 8px);
18
+ padding: var(--matcha-space-100, 8px) var(--matcha-space-150, 12px);
19
+
20
+ // Tipografia — Figma matcha/text/label-md (14/500/20)
21
+ font-family: var(--matcha-font-family, 'Manrope', sans-serif);
22
+ font-size: var(--matcha-text-label-md, 14px);
23
+ font-weight: var(--matcha-weight-medium, 500);
24
+ line-height: var(--matcha-leading-label-md, 20px);
25
+
26
+ // Box — Off Default
27
+ // Slots: --matcha-chip-border, --matcha-chip-bg, --matcha-chip-text
28
+ // permitem consumer override (cascade-friendly) sem specificity battle.
29
+ border: var(--matcha-border-thin, 2px) solid var(--matcha-chip-border, var(--matcha-color-text-hint, #9AA0A6));
30
+ border-radius: var(--matcha-radius-pill, 9999px);
31
+ background: var(--matcha-chip-bg, transparent);
32
+ color: var(--matcha-chip-text, var(--matcha-color-text-primary, #E8EAED));
33
+
34
+ // Comportamento (decorativo por padrão — sem cursor pointer, sem hover)
35
+ white-space: nowrap;
36
+ user-select: none;
37
+ cursor: default;
38
+ outline: none;
39
+ position: relative;
40
+ transition:
41
+ border-color var(--matcha-duration-instant, 80ms) var(--matcha-easing-standard, cubic-bezier(0.4, 0, 0.2, 1)),
42
+ background var(--matcha-duration-instant, 80ms) var(--matcha-easing-standard, cubic-bezier(0.4, 0, 0.2, 1)),
43
+ box-shadow var(--matcha-duration-instant, 80ms) var(--matcha-easing-standard, cubic-bezier(0.4, 0, 0.2, 1));
44
+
45
+ // ── Interactive (clicável) — cursor pointer + hover/focus effects ──
46
+ &[interactive]:not([disabled]):not(.matcha-chip-disabled) {
47
+ cursor: pointer;
48
+
49
+ // Off interactive — Hover (bg accent-alpha 10% + shadow-1) ──
50
+ &:not([selected]):hover {
51
+ background: var(--matcha-color-accent-alpha, rgba(168, 217, 78, 0.1));
52
+ box-shadow: var(--matcha-shadow-1);
53
+ }
54
+
55
+ // Off interactive — Focus (border vira primary) ──
56
+ &:not([selected]):focus-visible,
57
+ &:not([selected]):has(:focus-visible) {
58
+ border-color: var(--matcha-color-primary, #64B5F6);
59
+ }
60
+ }
61
+
62
+ // ── Selected (On) — bg + border accent, texto preto ──
63
+ &[selected] {
64
+ background: var(--matcha-color-accent, #A8D94E);
65
+ border-color: var(--matcha-color-accent, #A8D94E);
66
+ color: var(--matcha-color-accent-contrast, rgba(0, 0, 0, 0.87));
67
+
68
+ // On interactive — Hover (overlay rgba(0,0,0,0.2) sobre accent) ──
69
+ &[interactive]:not([disabled]):not(.matcha-chip-disabled):hover {
70
+ background: linear-gradient(0deg, rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0.2)),
71
+ var(--matcha-color-accent, #A8D94E);
72
+ box-shadow: var(--matcha-shadow-1);
73
+ }
74
+
75
+ // On interactive — Focus (border vira primary, bg permanece accent) ──
76
+ &[interactive]:not([disabled]):not(.matcha-chip-disabled):focus-visible,
77
+ &[interactive]:not([disabled]):not(.matcha-chip-disabled):has(:focus-visible) {
78
+ border-color: var(--matcha-color-primary, #64B5F6);
79
+ }
80
+ }
81
+
82
+ // ── Disabled (Off) — opacity 0.4 (token) + border disabled-bg + texto disabled-fg ──
83
+ &[disabled],
84
+ &.matcha-chip-disabled {
85
+ pointer-events: none;
86
+ cursor: default;
87
+ opacity: var(--matcha-opacity-disabled, 0.4);
88
+ border-color: var(--matcha-color-interaction-disabled-bg, #282C34);
89
+ color: var(--matcha-color-interaction-disabled-fg, rgba(232, 234, 237, 0.38));
90
+
91
+ // Disabled + Selected — mantém bg accent, opacity faz o resto
92
+ &[selected] {
93
+ background: var(--matcha-color-accent, #A8D94E);
94
+ border-color: var(--matcha-color-accent, #A8D94E);
95
+ color: var(--matcha-color-interaction-disabled-fg, rgba(232, 234, 237, 0.38));
96
+ }
97
+ }
98
+
99
+ @media (prefers-reduced-motion: reduce) {
100
+ transition: none;
101
+ }
102
+ }
103
+
104
+ // ── Leading icon — 18×18 cinza Off / preto On / disabled-fg Disabled ────────
105
+ .matcha-chip-leading {
106
+ display: inline-flex;
107
+ align-items: center;
108
+ justify-content: center;
109
+ flex-shrink: 0;
110
+ width: 18px;
111
+ height: 18px;
112
+ color: var(--matcha-color-text-hint, #9AA0A6); // Off Default
113
+ }
114
+
115
+ matcha-chip[selected] .matcha-chip-leading {
116
+ color: var(--matcha-color-accent-contrast, rgba(0, 0, 0, 0.87));
117
+ }
118
+
119
+ matcha-chip[disabled] .matcha-chip-leading,
120
+ matcha-chip.matcha-chip-disabled .matcha-chip-leading {
121
+ color: var(--matcha-color-interaction-disabled-fg, rgba(232, 234, 237, 0.38));
122
+ }
123
+
124
+ // ── Force matcha-icon dentro do chip a herdar a cor do parent ───────────
125
+ // O theme global do matcha-icon aplica color: var(--matcha-color-icon-default)
126
+ // que sobrescreve inherit. Aqui aumentamos especificidade pra herdar.
127
+ matcha-chip .matcha-chip-leading matcha-icon,
128
+ matcha-chip .matcha-chip-leading [class*=" i-matcha-"],
129
+ matcha-chip .matcha-chip-remove matcha-icon,
130
+ matcha-chip .matcha-chip-remove [class*=" i-matcha-"] {
131
+ color: inherit;
132
+ }
133
+
134
+ // ── Content (label) — herda color do parent matcha-chip ─────────────────────
135
+ .matcha-chip-content {
136
+ display: inline-flex;
137
+ align-items: center;
138
+ overflow: hidden;
139
+ text-overflow: ellipsis;
140
+ }
141
+
142
+ // ── Divider 1×18 — usa currentColor com opacity baixa pra seguir o contraste
143
+ // do chip em qualquer estado (Off=text-primary 24%, On=accent-contrast 24%).
144
+ // Figma spec textual diz "surface/border" mas isso fica invisível no
145
+ // selected (fundo claro). currentColor opaco resolve sem divergir do intent.
146
+ .matcha-chip-divider {
147
+ display: inline-block;
148
+ flex-shrink: 0;
149
+ width: 1px;
150
+ height: 18px;
151
+ background: currentColor;
152
+ opacity: 0.24;
153
+ }
154
+
155
+ // ── Remove button 18×18 — herda color do chip parent ───────────────────────
156
+ // State-layer 12% on hover via background-color (sem ::before pra consistência
157
+ // com chip principal que usa bg específico por estado).
158
+ .matcha-chip-remove {
159
+ display: inline-flex;
160
+ align-items: center;
161
+ justify-content: center;
162
+ flex-shrink: 0;
163
+ width: 18px;
164
+ height: 18px;
165
+ padding: 0;
166
+ border: none;
167
+ background: transparent;
168
+ border-radius: 50%;
169
+ color: inherit;
170
+ cursor: pointer;
171
+ outline: none;
172
+ transition: background-color var(--matcha-duration-instant, 80ms) linear;
173
+
174
+ &:hover:not([disabled]),
175
+ &:focus-visible:not([disabled]) {
176
+ background: color-mix(in srgb, currentColor 12%, transparent);
177
+ }
178
+
179
+ &[disabled] {
180
+ cursor: default;
181
+ }
182
+
183
+ @media (prefers-reduced-motion: reduce) {
184
+ transition: none;
185
+ }
186
+ }
187
+
188
+ // ── Chip list wrapper ──────────────────────────────────────────────────────
189
+ .matcha-chip-list-wrapper {
190
+ display: flex;
191
+ flex-wrap: wrap;
192
+ gap: var(--matcha-space-100, 8px);
193
+ align-items: center;
194
+
195
+ &.matcha-chip-list-vertical {
196
+ flex-direction: column;
197
+ align-items: flex-start;
198
+ }
199
+ }
200
+
201
+ // ============================================================================
202
+ // Theme mixin — extensão Angular (cores semânticas além de accent)
203
+ // Figma DSV3 só especifica accent — primary/success/warn/danger/info são
204
+ // extensão de produto (mesmo pattern do matcha-button).
205
+ // ============================================================================
206
+
207
+ @mixin matcha-chip-theme($theme) {
208
+ $chip-colors: (
209
+ primary: (getPrimary, getPrimaryContrast),
210
+ success: (getSuccess, getSuccessContrast),
211
+ warn: (getWarn, getWarnContrast),
212
+ danger: (getDanger, getDangerContrast),
213
+ info: (getInfo, getInfoContrast),
214
+ );
215
+
216
+ matcha-chip {
217
+ @each $name, $fns in $chip-colors {
218
+ $fn: nth($fns, 1);
219
+ $fnContrast: nth($fns, 2);
220
+
221
+ &[color="#{$name}"] {
222
+ // Off na cor: outline + texto na cor (visualmente quente)
223
+ border-color: call(get-function(#{$fn}), $theme);
224
+ color: call(get-function(#{$fn}), $theme);
225
+
226
+ .matcha-chip-leading {
227
+ color: call(get-function(#{$fn}), $theme);
228
+ }
229
+
230
+ // Selected na cor: filled
231
+ &[selected],
232
+ // Explicit variant=filled — sem precisar [selected] (status estático)
233
+ &[variant="filled"] {
234
+ background-color: call(get-function(#{$fn}), $theme);
235
+ border-color: call(get-function(#{$fn}), $theme);
236
+ color: call(get-function(#{$fnContrast}), $theme);
237
+
238
+ .matcha-chip-leading {
239
+ color: call(get-function(#{$fnContrast}), $theme);
240
+ }
241
+ }
242
+
243
+ // ── Variant filled-alpha (canon status pill DSV3) ──
244
+ // bg alpha 10% da cor + border transparente + texto cor sólida.
245
+ // Sem precisar [selected]. Usado pra status: Publicado/Rascunho/Arquivado/etc.
246
+ &[variant="filled-alpha"] {
247
+ background-color: var(--matcha-color-feedback-#{$name}-alpha, var(--matcha-color-#{$name}-alpha));
248
+ border-color: transparent;
249
+ color: call(get-function(#{$fn}), $theme);
250
+
251
+ .matcha-chip-leading {
252
+ color: call(get-function(#{$fn}), $theme);
253
+ }
254
+ }
255
+ }
256
+ }
257
+ }
258
+
259
+ // Chip list disabled (propaga visual)
260
+ .matcha-chip-list-disabled,
261
+ [matcha-chip-list][disabled] {
262
+ pointer-events: none;
263
+ matcha-chip {
264
+ opacity: 0.4;
265
+ border-color: var(--matcha-color-interaction-disabled-bg, #{getDisabled($theme)});
266
+ color: var(--matcha-color-interaction-disabled-fg, #{getDisabledContrast($theme)});
267
+ }
268
+ }
269
+ }
270
+
271
+ // ── Forced colors ──
272
+ @media (forced-colors: active) {
273
+ matcha-chip {
274
+ border: 1px solid CanvasText !important;
275
+ background: Canvas !important;
276
+ color: CanvasText !important;
277
+
278
+ &:focus-visible {
279
+ outline: 2px solid CanvasText !important;
280
+ outline-offset: 2px;
281
+ }
282
+
283
+ &[disabled],
284
+ &.is-disabled {
285
+ color: GrayText !important;
286
+ border-color: GrayText !important;
287
+ }
288
+ }
289
+ }
290
+
291
+ // ── Print ──
292
+ @media print {
293
+ matcha-chip {
294
+ border: 1px solid currentColor !important;
295
+ background: transparent !important;
296
+ }
297
+ }