@inchurch/matcha-theme 22.20.0 → 22.21.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.
@@ -101,16 +101,26 @@
101
101
  }
102
102
  }
103
103
 
104
- // ── Autofill (Chrome/Safari) — mata o background amarelo/azul e usa os tokens ──
105
- // Browsers injetam background-color inline no -webkit-autofill (prioridade sobre CSS normal).
106
- // O workaround padrão: box-shadow inset transparente (não sobreposto) + text-fill-color pro texto.
107
- // `transition: ... 5000s` é o "truque dos 5000 segundos" impede o browser de re-aplicar o bg.
104
+ // ── Autofill (Chrome/Safari) — mata o azul/amarelo nativo e usa os tokens ──
105
+ // Browsers pintam autofill com um background-color INTERNO que ignora
106
+ // `background-color` normal via CSS (prioridade de UA style). O workaround
107
+ // padrão cobre esse fundo com um box-shadow inset opaco do tamanho da caixa
108
+ // e por isso a cor do box-shadow tem que ser OPACA e igual ao fundo real por
109
+ // trás do input, não `transparent` (bug anterior: transparent não cobre nada,
110
+ // o azul nativo do Chrome continuava visível por baixo -- ilegível no tema
111
+ // escuro, onde o contraste com o texto claro inverte). O input em si é
112
+ // `background-color: transparent` (linha ~33): o que aparece por trás é o
113
+ // matcha-card que envolve o form-field na esmagadora maioria dos usos deste
114
+ // painel -- por isso surface-card, não surface-bg (fundo da PÁGINA, um tom
115
+ // mais escuro/mais claro que o card e que deixaria um contorno visível).
116
+ // `transition: ... 5000s` é o "truque dos 5000 segundos" — impede o browser de
117
+ // reaplicar o bg nativo antes do box-shadow cobrir.
108
118
  input:-webkit-autofill,
109
119
  input:-webkit-autofill:hover,
110
120
  input:-webkit-autofill:focus,
111
121
  input:-webkit-autofill:active,
112
122
  textarea:-webkit-autofill {
113
- -webkit-box-shadow: 0 0 0 1000px transparent inset !important;
123
+ -webkit-box-shadow: 0 0 0 1000px var(--matcha-color-surface-card) inset !important;
114
124
  -webkit-text-fill-color: var(--matcha-color-text-primary) !important;
115
125
  caret-color: var(--matcha-color-primary) !important;
116
126
  transition: background-color 5000s ease-in-out 0s, color 5000s ease-in-out 0s;
@@ -308,10 +308,17 @@ matcha-tabs {
308
308
  background: transparent;
309
309
  position: relative;
310
310
 
311
- // Mobile-friendly horizontal scroll
312
- &.matcha-tab-scrollable {
311
+ // ── Scroll horizontal é o DEFAULT do underline (desktop e mobile) ─────
312
+ // A linha de tabs nunca deve vazar do container: quando não cabe, rola.
313
+ // O input `scrollable` continua existindo (compat) mas virou no-op — o
314
+ // comportamento que ele ligava agora é o padrão.
315
+ // Exceção: com [responsiveGrid] ativo o nav vira grid multi-linha abaixo de
316
+ // 1024px e precisa de overflow visível pra crescer em altura — quem manda
317
+ // no overflow nesse caso é a regra de `.tabs-nav-responsive-grid`
318
+ // (matcha-components/.../tabs/tabs.component.scss).
319
+ &:not(.tabs-nav-responsive-grid) {
313
320
  overflow-x: auto;
314
- scrollbar-width: thin;
321
+ overflow-y: hidden;
315
322
  -webkit-overflow-scrolling: touch;
316
323
  }
317
324
 
@@ -381,6 +388,11 @@ matcha-tabs {
381
388
  font-weight: var(--matcha-weight-semibold, 600);
382
389
  line-height: var(--matcha-leading-title-sm, 22px);
383
390
  border-bottom-color: var(--matcha-color-accent);
391
+ // Ícone acompanha o label no Underline. matcha-icon não herda
392
+ // currentColor por design — resolve `--matcha-icon-color`, então o
393
+ // override é via CSS var (pattern documentado em matcha-icon.scss).
394
+ // Card NÃO faz isso: lá o selected é text-primary, não accent.
395
+ --matcha-icon-color: var(--matcha-color-accent);
384
396
  }
385
397
 
386
398
  // ── Disabled ──
@@ -404,7 +416,8 @@ matcha-tabs {
404
416
  }
405
417
 
406
418
  // ── Card Tab (canon Figma) ────────────────────────────────────────────
407
- // Card 2px border accent quando selected · texto text-primary (NÃO accent).
419
+ // Card 2px border accent quando selected · texto e ícone accent também
420
+ // (decisão de Design 2026-08-04 — antes era text-primary).
408
421
  // Suporta horizontal (default) e vertical (icon stacked).
409
422
  .matcha-tab-card {
410
423
  display: flex;
@@ -482,12 +495,18 @@ matcha-tabs {
482
495
  }
483
496
  &:active:not(:disabled)::before { opacity: var(--matcha-tab-state-opacity-active); }
484
497
 
485
- // ── Selecionado (Figma: border accent · texto text-primary NÃO accent) ──
498
+ // ── Selecionado (border + texto + ícone accent) ──
499
+ // Decisão de Design 2026-08-04: o selected do Card passa a ser accent no
500
+ // texto e no ícone também, não só na border — antes o texto era
501
+ // text-primary (canon Figma antigo). Figma `matcha/tabs` pendente de
502
+ // atualização; até lá o código é a fonte da verdade deste estado.
486
503
  &.active,
487
504
  &[aria-selected="true"] {
488
505
  border-color: var(--matcha-color-accent);
489
- color: var(--matcha-color-fg);
506
+ color: var(--matcha-color-accent);
490
507
  font-weight: var(--matcha-weight-medium, 500);
508
+ // matcha-icon não herda currentColor — override via CSS var.
509
+ --matcha-icon-color: var(--matcha-color-accent);
491
510
  }
492
511
 
493
512
  // ── Disabled ──
@@ -515,6 +534,31 @@ matcha-tabs {
515
534
  .matcha-tab-item matcha-icon { flex-shrink: 0; }
516
535
  }
517
536
 
537
+ // ── Scrollbar do tablist que rola ─────────────────────────────────────
538
+ // Fonte única da APARÊNCIA do scroll horizontal — vale pro `scrollable` e
539
+ // pro grid responsivo no desktop, que só declaram o overflow. A barra
540
+ // nativa do OS (grossa, com setas) competia visualmente com as tabs.
541
+ // Propriedades são inertes quando não há overflow, então podem ficar nos
542
+ // dois tipos sem condicional.
543
+ .matcha-tab-underline,
544
+ .matcha-tab-card {
545
+ scrollbar-width: thin;
546
+ scrollbar-color: var(--matcha-color-surface-border) transparent;
547
+
548
+ &::-webkit-scrollbar {
549
+ height: var(--matcha-space-050, 4px);
550
+ }
551
+
552
+ &::-webkit-scrollbar-track {
553
+ background: transparent;
554
+ }
555
+
556
+ &::-webkit-scrollbar-thumb {
557
+ background: var(--matcha-color-surface-border);
558
+ border-radius: var(--matcha-radius-pill, 9999px);
559
+ }
560
+ }
561
+
518
562
  // ── Badge (notificações, contagens) ───────────────────────────────────
519
563
  .matcha-tab-item__badge {
520
564
  display: inline-flex;
@@ -578,13 +622,9 @@ matcha-tabs {
578
622
  }
579
623
  }
580
624
 
581
- // ── Mobile: Underline auto-scrollable em viewports estreitos ────────────
582
- @media (max-width: 639px) {
583
- .matcha-tab-underline:not(.matcha-tab-scrollable) {
584
- overflow-x: auto;
585
- scrollbar-width: thin;
586
- }
587
- }
625
+ // (Antes havia aqui um bloco @media (max-width: 639px) ligando overflow-x no
626
+ // underline "não scrollable" — redundante desde que o scroll virou o default do
627
+ // tipo em qualquer viewport.)
588
628
 
589
629
  // ── Reduced motion (WCAG 2.2.2) ─────────────────────────────────────────
590
630
  @media (prefers-reduced-motion: reduce) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@inchurch/matcha-theme",
3
- "version": "22.20.0",
3
+ "version": "22.21.0",
4
4
  "description": "Themes for matcha-design-system",
5
5
  "main": "main.scss",
6
6
  "scripts": {