@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
@@ -16,24 +16,8 @@ $icon-size-md: 24px;
16
16
  $icon-size-lg: 32px;
17
17
  $icon-size-xl: 48px;
18
18
 
19
- // ── Material Symbols Rounded aplicação global da font ─────────────────
20
- // Usa as propriedades herdáveis (font-family, font-feature-settings) no host
21
- // para que o texto filho (ligature) renderize como glyph.
22
- matcha-icon[library="symbols"] {
23
- font-family: 'Material Symbols Rounded', sans-serif !important;
24
- font-weight: normal;
25
- font-style: normal;
26
- letter-spacing: normal;
27
- text-transform: none;
28
- white-space: nowrap;
29
- word-wrap: normal;
30
- direction: ltr;
31
- -webkit-font-smoothing: antialiased;
32
- -moz-osx-font-smoothing: grayscale;
33
- text-rendering: optimizeLegibility;
34
- font-feature-settings: 'liga' !important;
35
- overflow: hidden;
36
- }
19
+ // matcha-icon[library="symbols"]renderiza SVG inline via figma-icons.ts.
20
+ // Sem dependência de font externa. Apenas tamanho via [size="..."] tokens.
37
21
 
38
22
  [class^="i-matcha-"],
39
23
  [class*=" i-matcha-"],
@@ -85,18 +69,26 @@ matcha-icon[library="symbols"] {
85
69
  }
86
70
 
87
71
  // ── Theme mixin (color inheritance) ─────────────────────────────────────────
72
+ // Pattern CSS-var: `--matcha-icon-color` resolve a cor final.
73
+ // Cascateia naturalmente — qualquer parent pode override sem specificity battle.
74
+ //
75
+ // <!-- Override no consumer (sem [color] attr): -->
76
+ // .my-banner { --matcha-icon-color: var(--matcha-color-feedback-danger); }
77
+ //
78
+ // <!-- Override no proprio matcha-icon: -->
79
+ // <matcha-icon color="danger" /> // attr seta --matcha-icon-color via SCSS abaixo
88
80
  @mixin matcha-icon-theme($theme) {
89
81
  matcha-icon,
90
82
  [class^="i-matcha-"],
91
83
  [class*=" i-matcha-"] {
92
- color: var(--matcha-color-icon-default, #{getBlueGrey($theme)});
84
+ color: var(--matcha-icon-color, var(--matcha-color-icon-default, #{getBlueGrey($theme)}));
93
85
 
94
- &.color-fg, &[color="fg"] { color: var(--matcha-color-fg, #{getForeground($theme)}); }
95
- &.color-accent, &[color="accent"] { color: var(--matcha-color-accent, #{getAccent($theme)}); }
96
- &.color-primary, &[color="primary"] { color: var(--matcha-color-primary, #{getPrimary($theme)}); }
97
- &.color-danger, &[color="danger"] { color: var(--matcha-color-danger, #{getDanger($theme)}); }
98
- &.color-warn, &[color="warn"] { color: var(--matcha-color-warn, #{getWarn($theme)}); }
99
- &.color-success, &[color="success"] { color: var(--matcha-color-success, #{getSuccess($theme)}); }
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)}); }
100
92
 
101
93
  &[disabled],
102
94
  &.disabled {
@@ -67,7 +67,7 @@
67
67
  border-radius: var(--matcha-radius-md, 4px);
68
68
  cursor: pointer;
69
69
  outline: none;
70
- color: var(--matcha-color-fg, #{getForeground($theme)});
70
+ color: var(--matcha-list-item-text, var(--matcha-color-fg, #{getForeground($theme)}));
71
71
  text-decoration: none;
72
72
  transition: background-color 150ms;
73
73
 
@@ -131,7 +131,7 @@
131
131
  font-size: var(--matcha-text-body-md, 14px);
132
132
  font-weight: var(--matcha-weight-regular, 400);
133
133
  line-height: var(--matcha-leading-body-md, 20px);
134
- color: var(--matcha-color-fg, #{getForeground($theme)});
134
+ color: var(--matcha-list-item-text, var(--matcha-color-fg, #{getForeground($theme)}));
135
135
  overflow: hidden;
136
136
  text-overflow: ellipsis;
137
137
  white-space: nowrap;
@@ -169,9 +169,9 @@
169
169
  display: flex;
170
170
  align-items: center;
171
171
  padding: var(--matcha-space-200, 16px) var(--matcha-space-200, 16px) var(--matcha-space-075, 6px);
172
- font-size: var(--matcha-text-caption, 11px);
172
+ font-size: var(--matcha-text-p-tiny, 11px);
173
173
  font-weight: var(--matcha-weight-medium, 500);
174
- line-height: var(--matcha-leading-caption, 14px);
174
+ line-height: var(--matcha-leading-p-tiny, 14px);
175
175
  letter-spacing: var(--matcha-letter-spacing-wide, 0.5px);
176
176
  text-transform: uppercase;
177
177
  color: var(--matcha-color-hint, #{getGrey($theme)});
@@ -193,7 +193,7 @@
193
193
  padding: var(--matcha-space-050, 4px) var(--matcha-space-200, 16px);
194
194
 
195
195
  .matcha-list-item__label {
196
- font-size: var(--matcha-text-button-sm, 13px);
196
+ font-size: var(--matcha-text-label-sm, 13px);
197
197
  }
198
198
  }
199
199
  }
@@ -2,6 +2,19 @@
2
2
  // matcha-menu.scss — Dropdown context menu (modernized)
3
3
  // =============================================================================
4
4
 
5
+ // matcha-menu é overlay-only: o host nunca deve ocupar espaço no fluxo.
6
+ // display:contents tira o host (e o matcha-panel interno) do layout sem
7
+ // afetar a popover — o overlay interno usa position:fixed/absolute. Sem isso,
8
+ // quando o menu é filho direto de um container flex/grid com `gap` (ex.:
9
+ // page-layout `.center.gap-outside` com gap 24px), o host vazio de altura ~0
10
+ // vira um flex item que consome `gap` dos DOIS lados → "phantom gap" duplo
11
+ // entre o elemento anterior e o seguinte. O matcha-toolbar já fazia isso
12
+ // scoped (`> matcha-menu`); aqui generaliza pra qualquer container.
13
+ matcha-menu,
14
+ matcha-menu > matcha-panel {
15
+ display: contents;
16
+ }
17
+
5
18
  .matcha-menu-content {
6
19
  button,
7
20
  [matcha-button] {
@@ -69,26 +69,17 @@
69
69
  to { opacity: 0; }
70
70
  }
71
71
 
72
+ // Enter: scale 0.96 + translate -4 + fade (Material 3 emphasized motion).
73
+ // Mais sutil que 0.95/-8 — menos jumpy, mais "presença suave".
72
74
  @keyframes matcha-modal-in {
73
- from {
74
- opacity: 0;
75
- transform: scale(0.95) translateY(-8px);
76
- }
77
- to {
78
- opacity: 1;
79
- transform: scale(1) translateY(0);
80
- }
75
+ from { opacity: 0; transform: scale(0.96) translateY(-4px); }
76
+ to { opacity: 1; transform: scale(1) translateY(0); }
81
77
  }
82
78
 
79
+ // Exit: assimétrico — sai mais rápido que entra (180ms vs 200ms).
83
80
  @keyframes matcha-modal-out {
84
- from {
85
- opacity: 1;
86
- transform: scale(1) translateY(0);
87
- }
88
- to {
89
- opacity: 0;
90
- transform: scale(0.97) translateY(4px);
91
- }
81
+ from { opacity: 1; transform: scale(1) translateY(0); }
82
+ to { opacity: 0; transform: scale(0.96) translateY(-4px); }
92
83
  }
93
84
 
94
85
  @media (prefers-reduced-motion: reduce) {
@@ -118,10 +109,10 @@
118
109
 
119
110
  @include generate-matcha-modal-sizes-classes($helper-breakpoints);
120
111
 
121
- // Exit animation class (added by service before destroy)
112
+ // Exit animation (added by service before destroy) — accelerated 180ms.
122
113
  &.matcha-modal--closing {
123
114
  .matcha-modal {
124
- animation: matcha-modal-out 150ms cubic-bezier(0.4, 0, 1, 1) forwards;
115
+ animation: matcha-modal-out 180ms var(--matcha-easing-accelerated, cubic-bezier(0.4, 0, 1, 1)) forwards;
125
116
  }
126
117
  }
127
118
  }
@@ -142,93 +133,76 @@
142
133
  }
143
134
  }
144
135
 
145
- // ── Modal card ──
136
+ // ── Modal card (Figma DSV3 1:1) ──
137
+ // bg surface/card · radius 16 · shadow 8r@4y + 32r@12y · sem border.
146
138
  .matcha-modal {
147
139
  position: relative;
148
140
  z-index: 999;
149
141
  display: flex;
150
142
  flex-direction: column;
143
+ // Perf: contain layout/paint pra browser não recalcular reflow da page atrás.
144
+ contain: layout paint;
151
145
  border-radius: var(--matcha-radius-xl, 16px);
152
- background-color: var(--matcha-color-surface, #{getSurface($theme)});
146
+ // Floating overlay sobre scrim — usa surface-card-strong (pure white
147
+ // no light, lifted dark) pra máximo destaque. Cards inline usam o card
148
+ // soft default (#f8faf8) mas modal precisa pop.
149
+ background-color: var(--matcha-color-surface-card-strong, var(--matcha-color-surface-card, #{getSurface($theme)}));
153
150
  color: var(--matcha-color-fg, #{getForeground($theme)});
154
151
  overflow: hidden;
155
- animation: matcha-modal-in var(--matcha-duration-normal, 200ms) cubic-bezier(0.16, 1, 0.3, 1);
156
-
157
- // Shadow level 3 (modals, drawers)
158
- box-shadow: var(--matcha-shadow-3, #{if($is-dark, $shadow-3-dark, $shadow-3-light)});
152
+ animation: matcha-modal-in var(--matcha-duration-fast, 200ms) var(--matcha-easing-emphasized, cubic-bezier(0.2, 0, 0, 1));
159
153
 
160
- @if $is-dark {
161
- border: var(--matcha-border-hairline, 1px) solid rgba(255, 255, 255, 0.06);
162
- }
154
+ // Figma DSV3 1:1: 0 4px 8px rgba(0,0,0,0.06), 0 12px 32px rgba(0,0,0,0.12)
155
+ box-shadow:
156
+ 0 4px 8px rgba(0, 0, 0, 0.06),
157
+ 0 12px 32px rgba(0, 0, 0, 0.12);
163
158
  }
164
159
 
165
- // ── Header ──
166
- .matcha-modal-header {
167
- display: flex;
168
- align-items: center;
169
- justify-content: space-between;
170
- gap: var(--matcha-space-150, 12px);
171
- padding: var(--matcha-space-200, 16px) var(--matcha-space-300, 24px);
172
- flex-shrink: 0;
173
-
174
- // Figma matcha/modal title: 20/800/28 (title-xl ExtraBold)
175
- .matcha-modal-header__title {
176
- flex: 1;
177
- font-size: var(--matcha-text-title-xl, 20px);
178
- font-weight: var(--matcha-weight-extrabold, 800);
179
- line-height: var(--matcha-leading-title-xl, 28px);
180
- color: var(--matcha-color-fg, #{getForeground($theme)});
181
- }
160
+ // ── Section coloring (layout vive nos component SCSS — single source of truth) ──
161
+ // Theme só pinta: bg dos slots herda surface-card-strong do parent .matcha-modal,
162
+ // texto pega text-primary, dividers usam surface-border.
163
+ .matcha-modal-header__title {
164
+ color: var(--matcha-color-text-primary, #{getForeground($theme)});
182
165
  }
183
166
 
184
- // ── Content ──
185
167
  .matcha-modal-content {
186
- flex: 1;
187
- overflow-y: auto;
188
- overflow-x: hidden;
189
- padding: var(--matcha-space-300, 24px);
190
- max-height: calc(100vh - 300px);
191
- color: var(--matcha-color-fg, #{getForeground($theme)});
192
-
193
- // Smooth content resize
194
- transition: max-height var(--matcha-duration-normal, 200ms) ease;
168
+ color: var(--matcha-color-text-primary, #{getForeground($theme)});
195
169
  }
196
170
 
197
- // ── Footer ──
198
- .matcha-modal-footer {
199
- display: flex;
200
- align-items: center;
201
- justify-content: flex-end;
202
- gap: var(--matcha-space-150, 12px);
203
- padding: var(--matcha-space-200, 16px) var(--matcha-space-300, 24px);
204
- flex-shrink: 0;
205
-
206
- // Mobile: stack buttons vertically
207
- @media (max-width: 575px) {
208
- flex-direction: column-reverse;
209
-
210
- .matcha-button {
211
- width: 100%;
212
- }
213
- }
171
+ // ── Focus ring on modal ──
172
+ .matcha-modal:focus-visible {
173
+ outline: var(--matcha-state-focus-ring-width, 2px) solid var(--matcha-color-accent, #{getAccent($theme)});
174
+ outline-offset: var(--matcha-state-focus-ring-offset, 2px);
214
175
  }
176
+ }
215
177
 
216
- // ── Dividers inside modal ──
217
- matcha-modal-header matcha-divider,
218
- matcha-modal-footer matcha-divider {
219
- margin-inline: calc(-1 * var(--matcha-space-300, 24px));
178
+ // ── Forced colors (Windows High Contrast) ──
179
+ // rgba/border hairline pode sumir; CanvasText/Canvas são system tokens visíveis.
180
+ @media (forced-colors: active) {
181
+ .matcha-modal {
182
+ border: 1px solid CanvasText;
183
+ background-color: Canvas !important;
220
184
  }
185
+ .matcha-modal-backdrop {
186
+ background: rgba(0, 0, 0, 0.7) !important;
187
+ backdrop-filter: none !important;
188
+ }
189
+ }
221
190
 
222
- // ── Options (action icons in header) ──
223
- .matcha-modal-options {
224
- display: flex;
225
- align-items: center;
226
- gap: var(--matcha-space-100, 8px);
191
+ // ── Reduced transparency (acessibilidade visual) ──
192
+ // Usuários com dificuldade de ler texto sobre blur preferem solid bg.
193
+ @media (prefers-reduced-transparency: reduce) {
194
+ .matcha-modal-backdrop {
195
+ background: rgba(0, 0, 0, 0.85) !important;
196
+ backdrop-filter: none !important;
227
197
  }
198
+ }
228
199
 
229
- // ── Focus ring on modal ──
230
- .matcha-modal:focus-visible {
231
- outline: var(--matcha-state-focus-ring-width, 2px) solid var(--matcha-color-accent, #{getAccent($theme)});
232
- outline-offset: var(--matcha-state-focus-ring-offset, 2px);
200
+ // ── Print ──
201
+ // Convenção DSV3: chrome flutuante (modal/drawer/tooltip) some em impressão.
202
+ @media print {
203
+ .matcha-overlay-container,
204
+ .matcha-modal-backdrop,
205
+ matcha-modal {
206
+ display: none !important;
233
207
  }
234
208
  }