@inchurch/matcha-theme 20.0.11 → 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 (98) 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-toolbar.scss +359 -206
  58. package/components/matcha-tooltip.scss +156 -62
  59. package/components/matcha-tree-view.scss +189 -0
  60. package/components/matcha-uploader.scss +240 -62
  61. package/fonts/manrope/manrope-latin-ext.woff2 +0 -0
  62. package/fonts/manrope/manrope-latin.woff2 +0 -0
  63. package/layout/matcha-page-layout.scss +4 -4
  64. package/main.scss +232 -265
  65. package/package.json +1 -1
  66. package/tokens/_animations-tokens.scss +37 -37
  67. package/tokens/_breakpoints-tokens.scss +35 -26
  68. package/tokens/_color-tokens.scss +1152 -1152
  69. package/tokens/_css-custom-properties.scss +650 -568
  70. package/tokens/_spacing-tokens.scss +94 -94
  71. package/vendors/angular-editor.scss +56 -56
  72. package/vendors/angular-material-fixes.scss +297 -297
  73. package/vendors/charts.scss +92 -92
  74. package/vendors/ng5-slider.scss +56 -56
  75. package/vendors/ngx-material-timepicker.scss +50 -50
  76. package/fonts/CircularStd-Black.eot +0 -0
  77. package/fonts/CircularStd-Black.svg +0 -3426
  78. package/fonts/CircularStd-Black.ttf +0 -0
  79. package/fonts/CircularStd-Black.woff +0 -0
  80. package/fonts/CircularStd-Black.woff2 +0 -0
  81. package/fonts/CircularStd-Bold.eot +0 -0
  82. package/fonts/CircularStd-Bold.otf +0 -0
  83. package/fonts/CircularStd-Bold.svg +0 -13532
  84. package/fonts/CircularStd-Bold.ttf +0 -0
  85. package/fonts/CircularStd-Bold.woff +0 -0
  86. package/fonts/CircularStd-Bold.woff2 +0 -0
  87. package/fonts/CircularStd-Medium.eot +0 -0
  88. package/fonts/CircularStd-Medium.otf +0 -0
  89. package/fonts/CircularStd-Medium.svg +0 -13511
  90. package/fonts/CircularStd-Medium.ttf +0 -0
  91. package/fonts/CircularStd-Medium.woff +0 -0
  92. package/fonts/CircularStd-Medium.woff2 +0 -0
  93. package/fonts/CircularStd-Regular.eot +0 -0
  94. package/fonts/CircularStd-Regular.otf +0 -0
  95. package/fonts/CircularStd-Regular.svg +0 -2378
  96. package/fonts/CircularStd-Regular.ttf +0 -0
  97. package/fonts/CircularStd-Regular.woff +0 -0
  98. package/fonts/CircularStd-Regular.woff2 +0 -0
@@ -1,89 +1,317 @@
1
1
  @use "sass:map";
2
2
 
3
3
  // =============================================================================
4
- // matcha-command-palette.scss — Command Palette (⌘K)
5
- // Aligned with Figma matcha/command-palette:
6
- // Container with 3 slots: search, results, footer-tips
7
- // Overlay global, radius 16px
8
- // Angular: matcha-command-palette
4
+ // matcha-command-palette.scss — Command Palette (⌘K) — 100% tokens DSV3
5
+ //
6
+ // Estrutura (portada pra document.body em runtime via Renderer2):
7
+ // overlay (fixed, inset:0, blur backdrop, flex center)
8
+ // └── container (relative, 520px, radius-xl, shadow-4)
9
+ // ├── search (input + ESC kbd)
10
+ // ├── divider (hairline)
11
+ // ├── results listbox (overflow-y, scroll-snap)
12
+ // │ ├── section header (caption uppercase)
13
+ // │ ├── result button[role=option]
14
+ // │ └── matcha-empty-state (compact, slot quando vazio)
15
+ // └── footer (kbd tips)
16
+ //
17
+ // A11y: combobox + listbox + aria-activedescendant. Focus permanece no input.
9
18
  // =============================================================================
10
19
 
20
+ // ── Theme (color tokens via mixin pra dark/light) ──────────────────────────
11
21
  @mixin matcha-command-palette-theme($theme) {
12
- $is-dark: map.get($theme, is-dark);
22
+ $is-dark: map.get($theme, is-dark);
13
23
 
14
- .matcha-command-palette {
15
- background: var(--matcha-color-surface, #{getSurface($theme)});
16
- border: var(--matcha-border-hairline, 1px) solid var(--matcha-color-border, #{getGrey($theme)});
17
- box-shadow: var(--matcha-shadow-4, #{if($is-dark, $shadow-4-dark, $shadow-4-light)});
18
- color: var(--matcha-color-fg, #{getForeground($theme)});
19
- }
24
+ .matcha-command-palette {
25
+ background: var(--matcha-color-surface-card, #{getSurface($theme)});
26
+ border: var(--matcha-border-hairline, 1px) solid var(--matcha-color-surface-border, #{getGrey($theme)});
27
+ box-shadow: var(--matcha-shadow-4);
28
+ color: var(--matcha-color-text-primary, #{getForeground($theme)});
20
29
 
21
- .matcha-command-palette-search {
22
- border-bottom: var(--matcha-border-hairline, 1px) solid var(--matcha-color-border, #{getGrey($theme)});
30
+ &__search-icon {
31
+ color: var(--matcha-color-text-secondary, #{getBlueGrey($theme)});
32
+ }
23
33
 
24
- input {
25
- color: var(--matcha-color-fg, #{getForeground($theme)});
34
+ &__input {
35
+ color: var(--matcha-color-text-primary, #{getForeground($theme)});
36
+ &::placeholder { color: var(--matcha-color-text-placeholder, #{getGrey($theme)}); }
37
+ }
26
38
 
27
- &::placeholder {
28
- color: var(--matcha-color-text-placeholder, #{getGrey($theme)});
29
- }
39
+ // __divider: cor/bg gerenciados pelo matcha-divider canônico.
40
+
41
+ &__section {
42
+ color: var(--matcha-color-text-secondary, #{getBlueGrey($theme)});
43
+ }
44
+
45
+ &__result {
46
+ color: var(--matcha-color-text-primary, #{getForeground($theme)});
47
+
48
+ &-icon { color: var(--matcha-color-text-secondary, #{getBlueGrey($theme)}); }
49
+
50
+ &:hover:not(:disabled) {
51
+ background: var(--matcha-color-surface-hover, #{getBackgroundAlpha($theme)});
52
+ }
53
+
54
+ &--selected {
55
+ background: var(--matcha-color-accent-alpha);
56
+
57
+ .matcha-command-palette__result-icon { color: var(--matcha-color-accent); }
58
+ }
59
+
60
+ &:disabled { color: var(--matcha-color-text-disabled, #{getGrey($theme)}); }
61
+ }
62
+
63
+ &__shortcut,
64
+ &__esc-hint,
65
+ &__footer kbd {
66
+ background: var(--matcha-color-surface-inner, #{getBackgroundAlpha($theme)});
67
+ border-color: var(--matcha-color-surface-border, #{getGrey($theme)});
68
+ color: var(--matcha-color-text-secondary, #{getBlueGrey($theme)});
69
+ }
70
+
71
+ &__footer {
72
+ background: var(--matcha-color-surface-inner, #{getBackgroundAlpha($theme)});
73
+ color: var(--matcha-color-text-secondary, #{getBlueGrey($theme)});
74
+ border-top: var(--matcha-border-hairline, 1px) solid var(--matcha-color-surface-border, #{getGrey($theme)});
75
+ }
30
76
  }
31
- }
77
+ }
32
78
 
33
- .matcha-command-palette-footer {
34
- background: var(--matcha-color-surface-hover, #{getBackgroundAlpha($theme)});
35
- color: var(--matcha-color-text-hint, #{getBlueGrey($theme)});
36
- }
79
+ // ── Host (não usa display:contents pra não interferir com Renderer2) ───────
80
+ .matcha-command-palette-host {
81
+ display: contents;
37
82
  }
38
83
 
39
- // ── Layout ──────────────────────────────────────────────────────────────────
84
+ // ── Overlay (full-viewport, único position:fixed) ──────────────────────────
85
+ // Portado pra document.body em runtime — sem risco de containing-block trap.
86
+ // Flexbox CENTRA container vertical + horizontalmente no viewport (canon Spotlight/Linear).
87
+ .matcha-command-palette-overlay {
88
+ position: fixed;
89
+ inset: 0;
90
+ z-index: var(--matcha-z-overlay, 1000);
91
+ background: var(--matcha-color-scrim, rgba(0, 0, 0, 0.5));
92
+ backdrop-filter: blur(var(--matcha-scrim-modal-blur, 4px));
93
+ -webkit-backdrop-filter: blur(var(--matcha-scrim-modal-blur, 4px));
40
94
 
41
- .matcha-command-palette {
42
- display: flex;
43
- flex-direction: column;
44
- width: 520px;
45
- max-height: 400px;
46
- border-radius: var(--matcha-radius-xl, 16px);
47
- overflow: hidden;
95
+ display: flex;
96
+ align-items: center; // centra verticalmente no viewport
97
+ justify-content: center; // centra horizontalmente no viewport
98
+ padding: var(--matcha-space-200, 16px);
99
+ box-sizing: border-box;
100
+
101
+ animation: matcha-cmd-overlay-in var(--matcha-duration-fast, 200ms) ease-out;
102
+
103
+ &.is-closing {
104
+ animation: matcha-cmd-overlay-out var(--matcha-duration-fast, 180ms) ease-in forwards;
105
+ }
48
106
  }
49
107
 
50
- .matcha-command-palette-search {
51
- display: flex;
52
- align-items: center;
53
- gap: var(--matcha-space-150, 12px);
54
- padding: var(--matcha-space-150, 12px) var(--matcha-space-200, 16px);
55
- min-height: 52px;
56
-
57
- input {
58
- flex: 1;
59
- border: none;
60
- background: transparent;
108
+ // ── Container (520px, radius-xl, shadow-4) — relative dentro do overlay ───
109
+ // Dimensões via CSS custom properties (escopo do componente) — permitem override
110
+ // em theme dark/light ou via [style.--matcha-command-palette-width].
111
+ .matcha-command-palette {
112
+ --matcha-command-palette-width: 520px;
113
+ --matcha-command-palette-max-height: 480px;
114
+
115
+ position: relative;
116
+ display: flex;
117
+ flex-direction: column;
118
+ width: min(var(--matcha-command-palette-width), 100%);
119
+ max-height: min(70vh, var(--matcha-command-palette-max-height));
120
+ border-radius: var(--matcha-radius-xl, 16px);
121
+ overflow: hidden;
61
122
  font-family: var(--matcha-font-family);
62
- font-size: var(--matcha-text-body-md, 14px);
63
- line-height: var(--matcha-leading-body-md, 20px);
64
- outline: none;
65
- }
66
- }
67
123
 
68
- .matcha-command-palette-results {
69
- flex: 1;
70
- overflow-y: auto;
71
- padding: var(--matcha-space-100, 8px);
124
+ animation: matcha-cmd-in var(--matcha-duration-fast, 200ms) var(--matcha-easing-emphasized, cubic-bezier(0.2, 0, 0, 1));
125
+
126
+ &.is-closing {
127
+ animation: matcha-cmd-out var(--matcha-duration-fast, 180ms) var(--matcha-easing-accelerated, cubic-bezier(0.4, 0, 1, 1)) forwards;
128
+ }
129
+
130
+ // ── Search ────────────────────────────────────────────────────────────
131
+ &__search {
132
+ display: flex;
133
+ align-items: center;
134
+ gap: var(--matcha-space-150, 12px);
135
+ padding: var(--matcha-space-150, 12px) var(--matcha-space-200, 16px);
136
+ min-height: var(--matcha-control-size-md, 52px);
137
+ flex-shrink: 0;
138
+ }
139
+
140
+ &__search-icon {
141
+ flex-shrink: 0;
142
+ font-size: var(--matcha-icon-size-sm, 16px);
143
+ }
144
+
145
+ &__input {
146
+ flex: 1;
147
+ min-width: 0;
148
+ border: 0;
149
+ background: transparent;
150
+ outline: 0;
151
+ font-family: var(--matcha-font-family);
152
+ font-size: var(--matcha-text-body-md, 14px);
153
+ line-height: var(--matcha-leading-body-md, 20px);
154
+ }
155
+
156
+ &__esc-hint {
157
+ flex-shrink: 0;
158
+ display: inline-flex;
159
+ align-items: center;
160
+ justify-content: center;
161
+ padding: var(--matcha-space-025, 2px) var(--matcha-space-075, 6px);
162
+ font-family: var(--matcha-font-family);
163
+ font-size: var(--matcha-text-p-tiny, 11px);
164
+ line-height: var(--matcha-leading-p-tiny, 14px);
165
+ font-weight: var(--matcha-weight-medium, 500);
166
+ letter-spacing: var(--matcha-letter-spacing-wider, 1px);
167
+ border: var(--matcha-border-hairline, 1px) solid;
168
+ border-radius: var(--matcha-radius-md, 4px);
169
+ }
170
+
171
+ // ── Divider (matcha-divider canônico — só ajuste de flex-shrink no parent flex) ──
172
+ &__divider {
173
+ flex-shrink: 0;
174
+ }
175
+
176
+ // ── Results ────────────────────────────────────────────────────────────
177
+ &__results {
178
+ flex: 1 1 auto;
179
+ overflow-y: auto;
180
+ padding: var(--matcha-space-100, 8px);
181
+ scroll-behavior: smooth;
182
+ scrollbar-width: thin;
183
+
184
+ // Quando há matcha-empty-state, centra ele no espaço disponível.
185
+ &:has(.matcha-command-palette__empty) {
186
+ display: flex;
187
+ align-items: center;
188
+ justify-content: center;
189
+ padding: var(--matcha-space-300, 24px);
190
+ }
191
+ }
192
+
193
+ &__section {
194
+ padding: var(--matcha-space-150, 12px) var(--matcha-space-150, 12px) var(--matcha-space-050, 4px);
195
+ font-size: var(--matcha-text-p-tiny, 11px);
196
+ line-height: var(--matcha-leading-p-tiny, 14px);
197
+ font-weight: var(--matcha-weight-semibold, 600);
198
+ text-transform: uppercase;
199
+ letter-spacing: var(--matcha-letter-spacing-wider, 1px);
200
+ }
201
+
202
+ // ── Result (button[role=option]) ──────────────────────────────────────
203
+ &__result {
204
+ display: flex;
205
+ align-items: center;
206
+ gap: var(--matcha-space-150, 12px);
207
+ width: 100%;
208
+ padding: var(--matcha-space-100, 8px) var(--matcha-space-150, 12px);
209
+ min-height: var(--matcha-control-size-sm, 36px);
210
+ border: 0;
211
+ background: transparent;
212
+ border-radius: var(--matcha-radius-md, 4px);
213
+ cursor: pointer;
214
+ text-align: start;
215
+ font-family: var(--matcha-font-family);
216
+ font-size: var(--matcha-text-body-md, 14px);
217
+ line-height: var(--matcha-leading-body-md, 20px);
218
+ transition: background var(--matcha-duration-instant, 80ms) ease;
219
+
220
+ &:disabled { cursor: not-allowed; }
221
+
222
+ &--selected { font-weight: var(--matcha-weight-medium, 500); }
223
+
224
+ &-icon {
225
+ flex-shrink: 0;
226
+ font-size: var(--matcha-icon-size-sm, 16px);
227
+ }
228
+
229
+ &-label {
230
+ flex: 1;
231
+ min-width: 0;
232
+ overflow: hidden;
233
+ white-space: nowrap;
234
+ text-overflow: ellipsis;
235
+ }
236
+ }
237
+
238
+ // ── Shortcut + kbd (compartilham token base) ──────────────────────────
239
+ &__shortcut,
240
+ &__footer kbd {
241
+ flex-shrink: 0;
242
+ display: inline-flex;
243
+ align-items: center;
244
+ justify-content: center;
245
+ min-width: var(--matcha-space-300, 24px);
246
+ height: var(--matcha-space-250, 20px);
247
+ padding: 0 var(--matcha-space-075, 6px);
248
+ font-family: var(--matcha-font-family);
249
+ font-size: var(--matcha-text-p-tiny, 11px);
250
+ line-height: var(--matcha-leading-p-tiny, 14px);
251
+ font-weight: var(--matcha-weight-medium, 500);
252
+ border: var(--matcha-border-hairline, 1px) solid;
253
+ border-radius: var(--matcha-radius-sm, 2px);
254
+ }
255
+
256
+ // ── Empty (matcha-empty-state slot) ───────────────────────────────────
257
+ &__empty {
258
+ width: 100%;
259
+ }
260
+
261
+ // ── Footer (kbd tips) ─────────────────────────────────────────────────
262
+ &__footer {
263
+ display: flex;
264
+ align-items: center;
265
+ gap: var(--matcha-space-200, 16px);
266
+ padding: var(--matcha-space-100, 8px) var(--matcha-space-200, 16px);
267
+ min-height: var(--matcha-space-450, 38px);
268
+ flex-shrink: 0;
269
+ font-size: var(--matcha-text-p-tiny, 11px);
270
+ line-height: var(--matcha-leading-p-tiny, 14px);
271
+ }
272
+
273
+ &__footer-tip {
274
+ display: inline-flex;
275
+ align-items: center;
276
+ gap: var(--matcha-space-075, 6px);
277
+ }
72
278
  }
73
279
 
74
- .matcha-command-palette-footer {
75
- display: flex;
76
- align-items: center;
77
- gap: var(--matcha-space-200, 16px);
78
- padding: var(--matcha-space-100, 8px) var(--matcha-space-200, 16px);
79
- font-size: var(--matcha-text-caption, 11px);
80
- min-height: 38px;
280
+ // ── Animations ──────────────────────────────────────────────────────────────
281
+ @keyframes matcha-cmd-overlay-in {
282
+ from { opacity: 0; }
283
+ to { opacity: 1; }
284
+ }
285
+ @keyframes matcha-cmd-overlay-out {
286
+ from { opacity: 1; }
287
+ to { opacity: 0; }
288
+ }
289
+ @keyframes matcha-cmd-in {
290
+ from { opacity: 0; transform: translateY(-8px) scale(0.96); }
291
+ to { opacity: 1; transform: translateY(0) scale(1); }
292
+ }
293
+ @keyframes matcha-cmd-out {
294
+ from { opacity: 1; transform: translateY(0) scale(1); }
295
+ to { opacity: 0; transform: translateY(-8px) scale(0.96); }
81
296
  }
82
297
 
83
298
  // ── Reduced motion ──────────────────────────────────────────────────────────
84
-
85
299
  @media (prefers-reduced-motion: reduce) {
86
- .matcha-command-palette {
87
- transition: none;
88
- }
300
+ .matcha-command-palette,
301
+ .matcha-command-palette-overlay {
302
+ animation: none !important;
303
+ }
304
+ }
305
+
306
+ // ── Forced colors (Windows High Contrast) ──────────────────────────────────
307
+ @media (forced-colors: active) {
308
+ .matcha-command-palette {
309
+ border: var(--matcha-border-thin, 1px) solid CanvasText;
310
+
311
+ &__result--selected {
312
+ background: Highlight;
313
+ color: HighlightText;
314
+ forced-color-adjust: none;
315
+ }
316
+ }
89
317
  }