@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
@@ -1,67 +1,69 @@
1
1
  // =============================================================================
2
- // matcha-slider.scss — Slider (single + range)
3
- // Aligned with Figma matcha/slider: Type(Single/Range) × State(5) = 10 variants
2
+ // matcha-slider.scss — Slider (single + range) — 1:1 com Figma DSV3
3
+ // =============================================================================
4
+ // Spec canônica matcha/slider (DSV3):
5
+ // • Track 4px · radius 2 · color disabled-bg (rail) / accent (selection)
6
+ // • Thumb 24×24 · radius pill · border 3px surface-bg · shadow level-1
7
+ // • State Layer halo 40×40 (::before) opacity 0 → 0.12 hover → 1 active
8
+ // • Active grow: thumb 24 → 26 + shadow level-2 (heavier)
9
+ // • Focus ring: outline 2px primary + offset 2px (geometry 32×32 vs thumb)
10
+ // • Pointer label (pill): 26×18 padding 2/6 · radius md · bg surface-card · caption text
11
+ // • Floor/Ceil labels: caption · color text/secondary · disabled-fg quando off
12
+ // • 6 cores semânticas DSV3: accent · primary · success · warn · danger · info
4
13
  // =============================================================================
5
14
 
6
15
  @mixin matcha-slider-theme($theme) {
7
- $color-functions: (
8
- red: getRed, pink: getPink, purple: getPurple, deep-purple: getDeepPurple,
9
- indigo: getIndigo, blue: getBlue, light-blue: getLightBlue, cyan: getCyan,
10
- teal: getTeal, green: getGreen, light-green: getLightGreen, lime: getLime,
11
- yellow: getYellow, amber: getAmber, orange: getOrange, deep-orange: getDeepOrange,
12
- brown: getBrown, grey: getGrey, blue-grey: getBlueGrey,
13
- primary: getPrimary, accent: getAccent, success: getSuccess,
14
- warn: getWarn, danger: getDanger, info: getInfo, disabled: getDisabled,
16
+ // 6 cores semânticas DSV3 (sem Material 1 legacy).
17
+ $semantic-colors: (
18
+ accent: getAccent,
19
+ primary: getPrimary,
20
+ success: getSuccess,
21
+ warn: getWarn,
22
+ danger: getDanger,
23
+ info: getInfo,
15
24
  );
16
25
 
17
26
  .matcha-slider {
18
- // Default accent
19
- &[data-color="accent"] {
20
- .selection-bar { background-color: var(--matcha-color-accent, #{getAccent($theme)}); }
21
-
22
- .pointer {
23
- background-color: var(--matcha-color-accent, #{getAccent($theme)});
27
+ // Default (sem data-color) cai em accent
28
+ --matcha-slider-fill: var(--matcha-color-accent);
24
29
 
25
- &.focused { box-shadow: 0 0 0 4px var(--matcha-color-accent, #{getAccent($theme)}); }
26
- &:hover { box-shadow: var(--matcha-shadow-1, #{$shadow-1-light}), 0 0 0 4px rgba(getAccent($theme), 0.24); } // ok: structural
27
- &:active { box-shadow: var(--matcha-shadow-1, #{$shadow-1-light}), 0 0 0 4px rgba(getAccent($theme), 0.24); } // ok: structural
30
+ // Bind por data-color CSS var pra cores serem trocáveis sem repetir regras
31
+ @each $name, $fn in $semantic-colors {
32
+ &[data-color="#{$name}"] {
33
+ --matcha-slider-fill: var(--matcha-color-#{$name}, #{call($fn, $theme)});
28
34
  }
29
35
  }
30
36
 
31
- .slider-track {
32
- background-color: var(--matcha-color-disabled-bg, #{getDisabled($theme)});
37
+ .selection-bar {
38
+ background-color: var(--matcha-slider-fill);
33
39
  }
34
40
 
35
- // Dynamic colors
36
- @each $colorName, $colorFn in $color-functions {
37
- &[data-color="#{'' + $colorName}"] {
38
- .selection-bar { background-color: call(#{$colorFn}, $theme); }
39
-
40
- .pointer {
41
- background-color: call(#{$colorFn}, $theme);
42
- &.focused { box-shadow: 0 0 0 4px call(#{$colorFn}, $theme); }
43
- &:hover { box-shadow: var(--matcha-shadow-1, #{$shadow-1-light}), 0 0 0 4px rgba(call(#{$colorFn}, $theme), 0.24); } // ok: structural
44
- &:active { box-shadow: var(--matcha-shadow-1, #{$shadow-1-light}), 0 0 0 4px rgba(call(#{$colorFn}, $theme), 0.24); } // ok: structural
45
- }
46
- }
41
+ .pointer {
42
+ background-color: var(--matcha-slider-fill);
47
43
  }
48
44
 
49
- // Disabled
45
+ // ── Disabled — sobrescreve fill, escurece labels ──
50
46
  &.disabled {
51
- .selection-bar { background-color: var(--matcha-color-disabled-bg, #{getDisabled($theme)}); }
52
- .pointer { background-color: var(--matcha-color-disabled-bg, #{getDisabled($theme)}); }
47
+ .selection-bar { background-color: var(--matcha-color-disabled-bg); }
48
+ .pointer { background-color: var(--matcha-color-disabled-bg); }
53
49
 
54
- .tick-value,
55
50
  .pointer-label,
56
51
  .floor-label,
57
52
  .ceil-label {
58
- color: var(--matcha-color-disabled-fg, #{getDisabledContrast($theme)});
53
+ color: var(--matcha-color-disabled-fg);
54
+ }
55
+
56
+ // Pill do label fica neutro no disabled (não destaca valor que não pode mudar)
57
+ .pointer-label {
58
+ background-color: var(--matcha-color-disabled-bg);
59
59
  }
60
60
  }
61
61
  }
62
62
  }
63
63
 
64
- // ── Structural ──────────────────────────────────────────────────────────────
64
+ // =============================================================================
65
+ // Structural — geometria + estados (independente de cor)
66
+ // =============================================================================
65
67
 
66
68
  .matcha-slider {
67
69
  position: relative;
@@ -70,22 +72,33 @@
70
72
  user-select: none;
71
73
  background-color: transparent;
72
74
 
75
+ // ── Track 4px ──
73
76
  .slider-track {
74
77
  position: relative;
75
78
  height: var(--matcha-slider-track-height, 4px);
76
79
  border-radius: var(--matcha-radius-sm, 2px);
80
+ background-color: var(--matcha-color-surface-border, rgba(255, 255, 255, 0.12));
77
81
  cursor: pointer;
78
82
  margin: 0 10px;
79
83
  }
80
84
 
85
+ // ── Selection (parte preenchida) ──
86
+ // Height padrão = 4px (100% do track). Cresce pra 6px durante drag pra sinalizar
87
+ // "estou mexendo nesta faixa" sem precisar destacar ambos os thumbs (ver dragging).
81
88
  .selection-bar {
82
89
  position: absolute;
90
+ top: 0;
83
91
  height: 100%;
84
92
  border-radius: var(--matcha-radius-sm, 2px);
85
- transition: width 200ms ease;
93
+ transition:
94
+ width var(--matcha-duration-instant, 80ms) ease,
95
+ height var(--matcha-duration-fast, 200ms) ease,
96
+ top var(--matcha-duration-fast, 200ms) ease;
86
97
  }
87
98
 
88
- // Figma matcha/slider thumb: 24×24 ellipse
99
+ // ── Thumb 24×24 (Figma matcha/slider) ──
100
+ // border 3px solid surface-bg (Figma #111318 dark = surface-bg dark)
101
+ // shadow nível 1 padrão; nível 2 quando dragging (active)
89
102
  .pointer {
90
103
  position: absolute;
91
104
  top: 50%;
@@ -93,96 +106,180 @@
93
106
  width: var(--matcha-slider-pointer-size, 24px);
94
107
  height: var(--matcha-slider-pointer-size, 24px);
95
108
  border-radius: var(--matcha-radius-pill, 9999px);
96
- cursor: grab;
97
- border: 2px solid var(--matcha-color-surface, white);
109
+ border: 3px solid var(--matcha-color-surface-bg, #111318);
98
110
  box-shadow: var(--matcha-shadow-1, 0 2px 4px rgba(0, 0, 0, 0.1));
99
- transition: box-shadow var(--matcha-duration-instant, 80ms) linear,
100
- transform var(--matcha-duration-instant, 80ms) ease;
111
+ cursor: grab;
112
+ transition:
113
+ width var(--matcha-duration-instant, 80ms) ease,
114
+ height var(--matcha-duration-instant, 80ms) ease,
115
+ box-shadow var(--matcha-duration-instant, 80ms) linear;
116
+
117
+ // ── State layer halo 40×40 (Figma "Thumb SL") ──
118
+ // ::before evita mexer no HTML; centralizado no thumb via translate.
119
+ // opacity 0 default → 0.12 hover → 1 active (drag)
120
+ &::before {
121
+ content: '';
122
+ position: absolute;
123
+ top: 50%;
124
+ left: 50%;
125
+ width: 40px;
126
+ height: 40px;
127
+ border-radius: 50%;
128
+ background-color: var(--matcha-slider-fill, var(--matcha-color-accent));
129
+ transform: translate(-50%, -50%);
130
+ opacity: 0;
131
+ pointer-events: none;
132
+ transition: opacity var(--matcha-duration-instant, 80ms) ease;
133
+ z-index: -1; // atrás do thumb pra não cobrir o ícone/cor sólida
134
+ }
135
+
136
+ &:hover::before {
137
+ opacity: 0.12;
138
+ }
101
139
  }
102
140
 
103
- // Figma value bubble: pad 2/6, radius 4, text 11/400/14 (caption)
141
+ // ── Pointer label (value pill — Figma 26×18, pad 2/6, radius 4) ──
142
+ // Posição acima do thumb (top -24px), background surface-card pra contraste
143
+ // sobre a linha do track. Anima junto com o thumb (slide horizontal).
104
144
  .pointer-label {
105
145
  position: absolute;
106
146
  top: -24px;
107
147
  left: 50%;
108
148
  transform: translateX(-50%);
109
149
  padding: var(--matcha-space-025, 2px) var(--matcha-space-075, 6px);
150
+ background-color: var(--matcha-color-surface-card, #1c1f26);
110
151
  border-radius: var(--matcha-radius-md, 4px);
111
- font-size: var(--matcha-text-caption, 11px);
152
+ font-family: var(--matcha-font-family);
153
+ font-size: var(--matcha-text-p-tiny, 11px);
112
154
  font-weight: var(--matcha-weight-regular, 400);
113
- line-height: var(--matcha-leading-caption, 14px);
114
- white-space: nowrap;
115
- }
116
-
117
- // Figma ticks + floor/ceil labels: 11/400/14
118
- .tick .tick-value {
119
- position: absolute;
120
- top: 15px;
121
- left: 50%;
122
- transform: translateX(-50%);
123
- font-size: var(--matcha-text-caption, 11px);
124
- line-height: var(--matcha-leading-caption, 14px);
155
+ line-height: var(--matcha-leading-p-tiny, 14px);
156
+ letter-spacing: 0.3px;
157
+ color: var(--matcha-color-text-primary, #e8eaed);
125
158
  white-space: nowrap;
159
+ pointer-events: none;
126
160
  }
127
161
 
162
+ // ── Floor / Ceil labels (escala visível abaixo do track) ──
163
+ // Figma: padding 0 16px, color text-secondary, caption typography
128
164
  .limit-labels {
129
165
  display: flex;
130
166
  justify-content: space-between;
131
167
  margin: var(--matcha-space-100, 8px) 10px 0;
132
168
  top: -18px;
133
169
  position: relative;
134
- font-size: var(--matcha-text-caption, 11px);
135
- line-height: var(--matcha-leading-caption, 14px);
170
+ font-family: var(--matcha-font-family);
171
+ font-size: var(--matcha-text-p-tiny, 11px);
172
+ font-weight: var(--matcha-weight-regular, 400);
173
+ line-height: var(--matcha-leading-p-tiny, 14px);
174
+ letter-spacing: 0.3px;
175
+ color: var(--matcha-color-text-secondary, rgba(255, 255, 255, 0.7));
136
176
  }
137
177
 
138
- // ── Disabled ──
178
+ // ── Disabled — opacity Figma é 0.6, mas usamos token DSV3 (0.38) ──
179
+ // que respeita melhor WCAG pra texto sobre fundo escuro.
139
180
  &.disabled {
140
181
  opacity: var(--matcha-opacity-disabled, 0.38);
141
182
  pointer-events: none;
142
183
  cursor: default;
143
184
 
144
- .slider-track { cursor: default; }
185
+ .slider-track,
145
186
  .pointer { cursor: default; }
146
187
  }
147
188
 
148
- // ── Range ──
189
+ // ── Range mode — z-index pra low ficar acima do high ──
149
190
  &.range {
150
- .pointer {
151
- &.low-pointer { z-index: 2; }
152
- &.high-pointer { z-index: 1; }
153
- }
191
+ .pointer.low-pointer { z-index: 2; }
192
+ .pointer.high-pointer { z-index: 1; }
154
193
  }
155
194
 
156
- // ── Dragging ──
195
+ // ── Active (dragging) — Figma "Type=Active" cresce thumb 24→26 ──
196
+ // + state layer 100% sólido + shadow elevation-2 (mais pesada)
197
+ // Selection bar cresce 4px → 6px (top: -1px pra manter centerline) sinalizando
198
+ // "esta faixa está sendo modificada" — reforça o feedback do range sem
199
+ // precisar destacar o thumb não-arrastado.
157
200
  &.dragging {
158
201
  .pointer {
159
202
  cursor: grabbing !important;
160
- transform: translate(-50%, -50%) scale(1.1);
161
- box-shadow: var(--matcha-shadow-2, 0 3px 1px -2px rgba(0,0,0,.2), 0 2px 2px 0 rgba(0,0,0,.14), 0 1px 5px 0 rgba(0,0,0,.12));
203
+ width: 26px;
204
+ height: 26px;
205
+ box-shadow: var(--matcha-shadow-2, 0 4px 12px rgba(0, 0, 0, 0.2));
206
+
207
+ &::before {
208
+ opacity: 1;
209
+ }
162
210
  }
163
211
 
164
212
  .selection-bar {
165
- transition: none;
213
+ // width muda em tempo real (segue o cursor); height/top animam suave
214
+ transition:
215
+ width 0s,
216
+ height var(--matcha-duration-fast, 200ms) ease,
217
+ top var(--matcha-duration-fast, 200ms) ease;
218
+ height: 6px;
219
+ top: -1px;
166
220
  }
167
221
  }
168
222
 
169
- // ── Focus ring ──
223
+ // ── Focus ring — Figma usa primary blue (#64B5F6 dark) ──
224
+ // outline + offset replica geometry 32×32 ring (24 thumb + 4*2 outline+offset)
170
225
  .pointer:focus-visible {
171
- outline: var(--matcha-state-focus-ring-width, 2px) solid var(--matcha-color-accent, #6200ee);
172
- outline-offset: var(--matcha-state-focus-ring-offset, 2px);
226
+ outline: 2px solid var(--matcha-color-primary, #64b5f6);
227
+ outline-offset: 2px;
173
228
  }
174
229
 
175
- // ── High contrast ──
230
+ // ── High contrast (a11y) ──
176
231
  @media (prefers-contrast: high) {
177
- .pointer { border-width: 3px; }
232
+ .pointer { border-width: 4px; }
178
233
  .selection-bar { border: var(--matcha-border-hairline, 1px) solid currentColor; }
179
234
  }
180
235
 
181
236
  // ── Reduced motion ──
182
237
  @media (prefers-reduced-motion: reduce) {
183
238
  .pointer,
239
+ .pointer::before,
184
240
  .selection-bar {
185
241
  transition: none;
186
242
  }
187
243
  }
188
244
  }
245
+
246
+ // ── Forced colors ──
247
+ @media (forced-colors: active) {
248
+ matcha-slider {
249
+ .slider-track,
250
+ .full-bar {
251
+ background: Canvas !important;
252
+ border: 1px solid CanvasText !important;
253
+ }
254
+
255
+ .selection-bar {
256
+ background: Highlight !important;
257
+ }
258
+
259
+ .pointer {
260
+ background: ButtonFace !important;
261
+ border: 2px solid CanvasText !important;
262
+
263
+ &:focus-visible,
264
+ &.is-active {
265
+ outline: 2px solid CanvasText !important;
266
+ outline-offset: 2px;
267
+ }
268
+ }
269
+
270
+ &[disabled],
271
+ &.is-disabled {
272
+ opacity: 0.5;
273
+ .pointer { border-color: GrayText !important; }
274
+ }
275
+ }
276
+ }
277
+
278
+ // ── Print ──
279
+ // Slider mostra valor estático em papel.
280
+ @media print {
281
+ matcha-slider {
282
+ .pointer { background: currentColor !important; }
283
+ .selection-bar { background: currentColor !important; }
284
+ }
285
+ }