@inchurch/matcha-theme 20.0.11 → 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 (116) hide show
  1. package/abstracts/_colors.scss +404 -404
  2. package/abstracts/_elevation.scss +102 -102
  3. package/abstracts/_functions.scss +1186 -1212
  4. package/abstracts/_media-breakpoint.scss +23 -23
  5. package/abstracts/_theme-api.scss +230 -0
  6. package/abstracts/_typography.scss +127 -127
  7. package/base/_reset.scss +438 -438
  8. package/components/app-page-header.scss +259 -0
  9. package/components/matcha-accordion.scss +293 -157
  10. package/components/matcha-audio-player.scss +1 -2
  11. package/components/matcha-autocomplete.scss +10 -11
  12. package/components/matcha-avatar.scss +173 -33
  13. package/components/matcha-badge.scss +15 -15
  14. package/components/matcha-breadcrumb.scss +231 -126
  15. package/components/matcha-button-toggle.scss +46 -2
  16. package/components/matcha-buttons.scss +908 -784
  17. package/components/matcha-calendar.scss +99 -35
  18. package/components/matcha-cards.scss +58 -33
  19. package/components/matcha-chart-card.scss +5 -12
  20. package/components/matcha-checkbox.scss +191 -490
  21. package/components/matcha-chip.scss +297 -212
  22. package/components/matcha-color-pick.scss +1 -2
  23. package/components/matcha-command-palette.scss +290 -63
  24. package/components/matcha-crop.scss +406 -172
  25. package/components/matcha-date.scss +81 -81
  26. package/components/matcha-divider.scss +86 -31
  27. package/components/matcha-draggable.scss +4 -5
  28. package/components/matcha-drawer.scss +207 -66
  29. package/components/matcha-drop-image.scss +14 -0
  30. package/components/matcha-drop-list.scss +87 -47
  31. package/components/matcha-emoji.scss +2 -2
  32. package/components/matcha-empty-state.scss +195 -83
  33. package/components/matcha-file-uploader.scss +462 -0
  34. package/components/matcha-flag.scss +93 -52
  35. package/components/matcha-footer.scss +67 -164
  36. package/components/matcha-form-field.scss +55 -3
  37. package/components/matcha-form-section.scss +100 -101
  38. package/components/matcha-header.scss +134 -325
  39. package/components/matcha-highlight.scss +65 -197
  40. package/components/matcha-hint-text.scss +25 -4
  41. package/components/matcha-horizontal-tree.scss +316 -317
  42. package/components/matcha-icon.scss +37 -45
  43. package/components/matcha-image.scss +2 -3
  44. package/components/matcha-list.scss +14 -15
  45. package/components/matcha-menu.scss +15 -2
  46. package/components/matcha-modal.scss +59 -86
  47. package/components/matcha-nav.scss +362 -231
  48. package/components/matcha-notification.scss +412 -197
  49. package/components/matcha-option.scss +98 -23
  50. package/components/matcha-page-builder.scss +16 -16
  51. package/components/matcha-paginator.scss +688 -235
  52. package/components/matcha-panel.scss +42 -27
  53. package/components/matcha-profile-card.scss +50 -50
  54. package/components/matcha-progress-bar.scss +257 -153
  55. package/components/matcha-radio.scss +244 -452
  56. package/components/matcha-scrollbar.scss +1 -2
  57. package/components/matcha-scrollbox-shadow.scss +120 -122
  58. package/components/matcha-section.scss +5 -9
  59. package/components/matcha-select-multiple.scss +56 -0
  60. package/components/matcha-select.scss +10 -10
  61. package/components/matcha-skeleton.scss +24 -7
  62. package/components/matcha-slide-toggle.scss +80 -301
  63. package/components/matcha-slider.scss +174 -77
  64. package/components/matcha-snack-bar.scss +123 -131
  65. package/components/matcha-spin.scss +12 -103
  66. package/components/matcha-spinner.scss +76 -57
  67. package/components/matcha-status-pill.scss +82 -0
  68. package/components/matcha-stepper.scss +376 -177
  69. package/components/matcha-table.scss +568 -785
  70. package/components/matcha-tabs.scss +622 -469
  71. package/components/matcha-text-editor.scss +78 -78
  72. package/components/matcha-time.scss +2 -2
  73. package/components/matcha-toolbar.scss +359 -206
  74. package/components/matcha-tooltip.scss +158 -62
  75. package/components/matcha-tree-view.scss +189 -0
  76. package/fonts/manrope/manrope-latin-ext.woff2 +0 -0
  77. package/fonts/manrope/manrope-latin.woff2 +0 -0
  78. package/layout/matcha-page-layout.scss +4 -4
  79. package/main.scss +237 -265
  80. package/package.json +1 -1
  81. package/tokens/_animations-tokens.scss +37 -37
  82. package/tokens/_breakpoints-tokens.scss +35 -26
  83. package/tokens/_color-tokens.scss +1149 -1152
  84. package/tokens/_css-custom-properties.scss +704 -568
  85. package/tokens/_primitives.scss +82 -0
  86. package/tokens/_semantic-aliases.scss +120 -0
  87. package/tokens/_spacing-tokens.scss +94 -94
  88. package/vendors/angular-editor.scss +56 -56
  89. package/vendors/angular-material-fixes.scss +297 -297
  90. package/vendors/charts.scss +92 -92
  91. package/vendors/ng5-slider.scss +56 -56
  92. package/vendors/ngx-material-timepicker.scss +50 -50
  93. package/components/matcha-uploader.scss +0 -215
  94. package/fonts/CircularStd-Black.eot +0 -0
  95. package/fonts/CircularStd-Black.svg +0 -3426
  96. package/fonts/CircularStd-Black.ttf +0 -0
  97. package/fonts/CircularStd-Black.woff +0 -0
  98. package/fonts/CircularStd-Black.woff2 +0 -0
  99. package/fonts/CircularStd-Bold.eot +0 -0
  100. package/fonts/CircularStd-Bold.otf +0 -0
  101. package/fonts/CircularStd-Bold.svg +0 -13532
  102. package/fonts/CircularStd-Bold.ttf +0 -0
  103. package/fonts/CircularStd-Bold.woff +0 -0
  104. package/fonts/CircularStd-Bold.woff2 +0 -0
  105. package/fonts/CircularStd-Medium.eot +0 -0
  106. package/fonts/CircularStd-Medium.otf +0 -0
  107. package/fonts/CircularStd-Medium.svg +0 -13511
  108. package/fonts/CircularStd-Medium.ttf +0 -0
  109. package/fonts/CircularStd-Medium.woff +0 -0
  110. package/fonts/CircularStd-Medium.woff2 +0 -0
  111. package/fonts/CircularStd-Regular.eot +0 -0
  112. package/fonts/CircularStd-Regular.otf +0 -0
  113. package/fonts/CircularStd-Regular.svg +0 -2378
  114. package/fonts/CircularStd-Regular.ttf +0 -0
  115. package/fonts/CircularStd-Regular.woff +0 -0
  116. package/fonts/CircularStd-Regular.woff2 +0 -0
@@ -59,11 +59,11 @@
59
59
  @mixin matcha-emoji-theme($theme) {
60
60
  .matcha-emoji--outline svg {
61
61
  fill: none;
62
- stroke: var(--matcha-color-fg, #{getForeground($theme)});
62
+ stroke: var(--matcha-color-fg);
63
63
  stroke-width: 1.5;
64
64
  }
65
65
 
66
66
  .matcha-emoji--filled svg {
67
- fill: var(--matcha-color-fg, #{getForeground($theme)});
67
+ fill: var(--matcha-color-fg);
68
68
  }
69
69
  }
@@ -1,118 +1,230 @@
1
1
  // =============================================================================
2
- // matcha-empty-state.scss — Empty state placeholder
3
- // Aligned with Figma matcha/empty-state: Tamanho(2) × Ação(2) × Descrição(2)
2
+ // matcha-empty-state.scss — Figma DSV3 matcha/empty-state (14935:130)
3
+ // 6 variants: Tamanho (Padrão 400/Compacto 280) × Ação (Sim/Não) × Descrição (Sim/Não)
4
+ // + extensão DSV3: variantes semânticas (success/warning/error/info), slot media,
5
+ // heading level configurável, anúncio aria-live opt-in.
4
6
  // =============================================================================
5
7
 
6
8
  // ── Structural ──────────────────────────────────────────────────────────────
7
9
 
8
10
  matcha-empty-state {
9
- display: flex;
10
- flex-direction: column;
11
- align-items: center;
12
- justify-content: center;
13
- flex: 1;
14
- min-height: 0;
15
- width: 100%;
16
- padding: var(--matcha-space-600, 48px) var(--matcha-space-400, 32px);
17
- box-sizing: border-box;
18
- text-align: center;
19
- }
20
-
21
- .matcha-empty-state__content {
22
- display: flex;
23
- flex-direction: column;
24
- align-items: center;
25
- gap: var(--matcha-space-200, 16px);
26
- max-width: 400px;
27
- width: 100%;
28
- }
29
-
30
- .matcha-empty-state__icon {
31
- display: flex;
32
- align-items: center;
33
- justify-content: center;
34
- width: 64px;
35
- height: 64px;
36
- border-radius: var(--matcha-radius-xl, 16px);
37
- flex-shrink: 0;
11
+ display: flex;
12
+ flex-direction: column;
13
+ align-items: center;
14
+ justify-content: center;
15
+ gap: var(--matcha-space-200, 16px);
16
+ width: 400px;
17
+ max-width: 100%;
18
+ // Centraliza o bloco horizontalmente quando o parent é mais largo que 400px
19
+ // (canon Figma DSV3 — empty-state sempre no centro do container).
20
+ margin-inline: auto;
21
+ padding: var(--matcha-space-600, 48px) var(--matcha-space-400, 32px);
22
+ box-sizing: border-box;
23
+ text-align: center;
38
24
  }
39
25
 
26
+ // ── Container do ícone — 64×64 com bg disabled e opacity 0.4 ────────────────
27
+ .matcha-empty-state__icon-container {
28
+ display: flex;
29
+ align-items: center;
30
+ justify-content: center;
31
+ flex-shrink: 0;
32
+ width: 64px;
33
+ height: 64px;
34
+ border-radius: var(--matcha-radius-xl, 16px);
35
+ background-color: var(--matcha-color-interaction-disabled-bg, #282C34);
36
+ opacity: var(--matcha-opacity-overlay-soft, 0.4);
37
+ overflow: hidden;
38
+ }
39
+
40
+ // ── Ícone dentro do container — 28×28 (Figma exato) ────────────────────────
41
+ matcha-empty-state .matcha-empty-state__icon-container .matcha-empty-state__icon,
42
+ matcha-empty-state .matcha-empty-state__icon-container matcha-icon {
43
+ font-size: 28px;
44
+ width: 28px;
45
+ height: 28px;
46
+ line-height: 28px;
47
+ color: var(--matcha-color-text-primary, #E8EAED);
48
+ }
49
+
50
+ // ── Variantes semânticas — colorem o container do ícone ────────────────────
51
+ matcha-empty-state[variant="success"] .matcha-empty-state__icon-container {
52
+ background-color: var(--matcha-color-success, #4caf50);
53
+ }
54
+ matcha-empty-state[variant="warning"] .matcha-empty-state__icon-container {
55
+ background-color: var(--matcha-color-warn, #ff9800);
56
+ }
57
+ matcha-empty-state[variant="error"] .matcha-empty-state__icon-container {
58
+ background-color: var(--matcha-color-danger, #f44336);
59
+ }
60
+ matcha-empty-state[variant="info"] .matcha-empty-state__icon-container {
61
+ background-color: var(--matcha-color-info, #64B5F6);
62
+ }
63
+
64
+ // Em variantes semânticas, ícone fica branco/contraste, sem opacity baixa
65
+ matcha-empty-state[variant]:not([variant="default"]) .matcha-empty-state__icon-container {
66
+ opacity: 1;
67
+ }
68
+ matcha-empty-state[variant]:not([variant="default"]) .matcha-empty-state__icon-container .matcha-empty-state__icon,
69
+ matcha-empty-state[variant]:not([variant="default"]) .matcha-empty-state__icon-container matcha-icon {
70
+ color: var(--matcha-color-on-feedback, #FFFFFF);
71
+ }
72
+
73
+ // Pareamento canônico por variant — usa o token *-contrast de cada feedback,
74
+ // que respeita WCAG AA em ambos os themes (preto em dark / branco em light
75
+ // pros tons claros; e o inverso pros tons escuros).
76
+ // !important: a regra global do matcha-icon (`matcha-icon { color: ... }`)
77
+ // tem mesma specificity que esses descendant selectors em alguns casos, e o
78
+ // browser cai no source order. !important garante que o contrast vence sempre.
79
+ matcha-empty-state[variant="success"] .matcha-empty-state__icon-container .matcha-empty-state__icon,
80
+ matcha-empty-state[variant="success"] .matcha-empty-state__icon-container matcha-icon {
81
+ color: var(--matcha-color-success-contrast) !important;
82
+ }
83
+ matcha-empty-state[variant="warning"] .matcha-empty-state__icon-container .matcha-empty-state__icon,
84
+ matcha-empty-state[variant="warning"] .matcha-empty-state__icon-container matcha-icon {
85
+ color: var(--matcha-color-warn-contrast) !important;
86
+ }
87
+ matcha-empty-state[variant="error"] .matcha-empty-state__icon-container .matcha-empty-state__icon,
88
+ matcha-empty-state[variant="error"] .matcha-empty-state__icon-container matcha-icon {
89
+ color: var(--matcha-color-danger-contrast) !important;
90
+ }
91
+ matcha-empty-state[variant="info"] .matcha-empty-state__icon-container .matcha-empty-state__icon,
92
+ matcha-empty-state[variant="info"] .matcha-empty-state__icon-container matcha-icon {
93
+ color: var(--matcha-color-info-contrast) !important;
94
+ }
95
+
96
+ // ── Slot media (ilustração custom) — 64×64 default, 48×48 compact ──────────
97
+ matcha-empty-state [matchaEmptyStateMedia] {
98
+ display: block;
99
+ flex-shrink: 0;
100
+ max-width: 120px;
101
+ max-height: 120px;
102
+ object-fit: contain;
103
+ }
104
+
105
+ // Quando slot media presente, esconde o container do ícone padrão
106
+ matcha-empty-state:has([matchaEmptyStateMedia]) .matcha-empty-state__icon-container {
107
+ display: none;
108
+ }
109
+
110
+ // ── Bloco texto — título + descrição ────────────────────────────────────────
40
111
  .matcha-empty-state__text {
41
- display: flex;
42
- flex-direction: column;
43
- align-items: center;
44
- gap: var(--matcha-space-100, 8px);
112
+ display: flex;
113
+ flex-direction: column;
114
+ align-items: center;
115
+ gap: var(--matcha-space-100, 8px);
116
+ width: 100%;
45
117
  }
46
118
 
119
+ // ── Título — matcha/text/button-lg (16/600/22, letter-spacing 0.2) ─────────
47
120
  .matcha-empty-state__title {
48
- font-size: var(--matcha-text-lg, 16px);
49
- font-weight: var(--matcha-weight-semibold, 600);
50
- line-height: 1.4;
51
- margin: 0;
121
+ font-family: var(--matcha-font-family);
122
+ font-size: var(--matcha-text-label-lg, 16px);
123
+ font-weight: var(--matcha-weight-semibold, 600);
124
+ line-height: var(--matcha-leading-label-lg, 22px);
125
+ letter-spacing: 0.2px;
126
+ color: var(--matcha-color-text-primary, #E8EAED);
127
+ margin: 0;
128
+ max-width: 336px;
52
129
  }
53
130
 
131
+ // ── Descrição — matcha/text/body-md (14/400/20) — w fixo 210px (Figma) ─────
54
132
  .matcha-empty-state__description {
55
- font-size: var(--matcha-text-md, 14px);
56
- font-weight: var(--matcha-weight-regular, 400);
57
- line-height: 1.5;
58
- max-width: 320px;
59
- margin: 0;
133
+ font-family: var(--matcha-font-family);
134
+ font-size: var(--matcha-text-body-md, 14px);
135
+ font-weight: var(--matcha-weight-regular, 400);
136
+ line-height: var(--matcha-leading-body-md, 20px);
137
+ color: var(--matcha-color-text-secondary);
138
+ margin: 0;
139
+ max-width: 210px;
60
140
  }
61
141
 
142
+ // ── Slot da ação — suporta múltiplas ações com gap padrão ──────────────────
62
143
  .matcha-empty-state__action {
63
- display: inline-flex;
64
- align-items: center;
65
- justify-content: center;
144
+ display: inline-flex;
145
+ flex-wrap: wrap;
146
+ align-items: center;
147
+ justify-content: center;
148
+ gap: var(--matcha-space-100, 8px);
66
149
  }
67
150
 
68
- // ── Compact variant ──
151
+ // Esconde container vazio (sem ng-content projetado)
152
+ .matcha-empty-state__action:empty {
153
+ display: none;
154
+ }
155
+
156
+ // ── Compact variant — 280px largura, ícone menor, padding reduzido ─────────
157
+ matcha-empty-state[size="compact"],
69
158
  matcha-empty-state.matcha-empty-state--compact {
70
- padding: var(--matcha-space-300, 24px) var(--matcha-space-200, 16px);
159
+ width: 280px;
160
+ padding: var(--matcha-space-300, 24px) var(--matcha-space-200, 16px);
161
+ gap: var(--matcha-space-150, 12px);
162
+
163
+ .matcha-empty-state__icon-container {
164
+ width: 48px;
165
+ height: 48px;
166
+ border-radius: var(--matcha-radius-lg, 12px);
167
+ }
71
168
 
72
- .matcha-empty-state__content {
73
- max-width: 280px;
74
- gap: var(--matcha-space-150, 12px);
75
- }
169
+ .matcha-empty-state__icon,
170
+ matcha-icon.matcha-empty-state__icon {
171
+ font-size: 20px;
172
+ width: 20px;
173
+ height: 20px;
174
+ line-height: 20px;
175
+ }
76
176
 
77
- .matcha-empty-state__icon {
78
- width: 40px;
79
- height: 40px;
80
- border-radius: var(--matcha-radius-lg, 8px);
81
- }
177
+ .matcha-empty-state__title {
178
+ font-size: var(--matcha-text-body-md, 14px);
179
+ line-height: var(--matcha-leading-body-md, 20px);
180
+ max-width: 240px;
181
+ }
82
182
 
83
- .matcha-empty-state__title {
84
- font-size: var(--matcha-text-md, 14px);
85
- }
183
+ .matcha-empty-state__description {
184
+ max-width: 240px;
185
+ }
86
186
  }
87
187
 
88
- // ── Responsive fallback ──
188
+ // ── Responsive: telas pequenas reduzem padding lateral ─────────────────────
89
189
  @media (max-width: 479px) {
90
- matcha-empty-state:not(.matcha-empty-state--compact) {
91
- padding: var(--matcha-space-400, 32px) var(--matcha-space-250, 20px);
92
-
93
- .matcha-empty-state__icon {
94
- width: 48px;
95
- height: 48px;
96
- border-radius: var(--matcha-radius-lg, 8px);
190
+ matcha-empty-state:not([size="compact"]):not(.matcha-empty-state--compact) {
191
+ padding: var(--matcha-space-400, 32px) var(--matcha-space-250, 20px);
97
192
  }
98
- }
99
193
  }
100
194
 
101
195
  // =============================================================================
102
- // Theme
196
+ // Theme mixin — vazia. Tudo via CSS custom properties globais.
103
197
  // =============================================================================
104
198
 
105
199
  @mixin matcha-empty-state-theme($theme) {
106
- .matcha-empty-state__icon {
107
- background-color: var(--matcha-color-disabled-bg, #{getDisabled($theme)});
108
- opacity: var(--matcha-opacity-disabled, 0.38);
109
- }
110
-
111
- .matcha-empty-state__title {
112
- color: var(--matcha-color-fg, #{getForeground($theme)});
113
- }
114
-
115
- .matcha-empty-state__description {
116
- color: var(--matcha-color-hint, #{getGrey($theme)});
117
- }
200
+ // Sem overrides — tokens globais bastam.
201
+ }
202
+
203
+ // ── Forced colors ──
204
+ @media (forced-colors: active) {
205
+ matcha-empty-state {
206
+ .matcha-empty-state__icon-container {
207
+ background: Canvas !important;
208
+ border: 1px solid CanvasText !important;
209
+ opacity: 1 !important;
210
+
211
+ matcha-icon { color: CanvasText !important; }
212
+ }
213
+ }
214
+ }
215
+
216
+ // ── Reduced motion ──
217
+ @media (prefers-reduced-motion: reduce) {
218
+ matcha-empty-state * {
219
+ transition: none !important;
220
+ animation: none !important;
221
+ }
222
+ }
223
+
224
+ // ── Print ──
225
+ // Empty state é informacional — mantém visível, ação pode hide.
226
+ @media print {
227
+ matcha-empty-state .matcha-empty-state__action {
228
+ display: none !important;
229
+ }
118
230
  }