@inchurch/matcha-theme 22.30.1 → 22.32.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.
package/base/_reset.scss CHANGED
@@ -8,6 +8,47 @@
8
8
  *, *:before, *:after {
9
9
  box-sizing: border-box;
10
10
  }
11
+
12
+ // Seleção de texto na cor da marca. Antes só existia escopada em input/
13
+ // textarea (matcha-form-field) — no resto da aplicação valia o azul do
14
+ // sistema operacional. `accent-text-on` é o foreground DERIVADO do accent
15
+ // (matcha-text-on); `accent-contrast` é legado e sempre preto, não serve.
16
+ // `background-color`, não `background`: ::selection só aceita um conjunto
17
+ // pequeno de propriedades, e a shorthand não é garantida.
18
+ &::selection,
19
+ & ::selection {
20
+ background-color: var(--matcha-color-accent);
21
+ color: var(--matcha-color-accent-text-on);
22
+ }
23
+
24
+ // `a[matcha-cell-link]` — a âncora que identifica um registro numa listagem
25
+ // (célula de tabela ou título de card). Global porque vale nas duas
26
+ // superfícies; o realce da LINHA no hover é específico da tabela e mora em
27
+ // components/matcha-table.scss.
28
+ //
29
+ // Por que âncora e não clique na linha/card inteiro: só com `href` o browser
30
+ // entrega ctrl+clique, clique do meio e "abrir em nova aba" — e restringir o
31
+ // alvo ao nome devolve a seleção de texto na listagem.
32
+ a[matcha-cell-link] {
33
+ display: inline-flex;
34
+ align-items: center;
35
+ gap: var(--matcha-space-50, 4px);
36
+ color: inherit;
37
+ text-decoration: none;
38
+ cursor: pointer;
39
+
40
+ // Affordance que não depende de cor (a11y) — o tom accent sozinho não
41
+ // serve pra quem não distingue cor.
42
+ &:hover {
43
+ text-decoration: underline;
44
+ }
45
+
46
+ &:focus-visible {
47
+ outline: 2px solid var(--matcha-color-accent);
48
+ outline-offset: 2px;
49
+ border-radius: var(--matcha-radius-sm, 2px);
50
+ }
51
+ }
11
52
  }
12
53
  }
13
54
 
@@ -373,11 +373,13 @@ matcha-form-field[size="huge"] .matcha-form-field:has(input[type="search"])::aft
373
373
  caret-color: var(--matcha-color-primary);
374
374
  }
375
375
 
376
- // Selection highlight (quando user seleciona texto) — usa token de primary com alpha
376
+ // Selection highlight (quando user seleciona texto) — mesmo par accent do
377
+ // ::selection global (base/_reset.scss). Era primary-alpha aqui e azul do SO no
378
+ // resto da app: duas cores de seleção diferentes na mesma tela.
377
379
  input::selection,
378
380
  textarea::selection {
379
- background: var(--matcha-color-primary-alpha);
380
- color: var(--matcha-color-text-primary);
381
+ background-color: var(--matcha-color-accent);
382
+ color: var(--matcha-color-accent-text-on);
381
383
  }
382
384
 
383
385
  // Componentes projetados — todos preenchem a largura e não adicionam borda/padding próprio
@@ -107,7 +107,7 @@
107
107
  justify-content: center;
108
108
  position: fixed;
109
109
  inset: 0;
110
- z-index: 999;
110
+ z-index: var(--matcha-z-modal, 999);
111
111
 
112
112
  @include generate-matcha-modal-sizes-classes($helper-breakpoints);
113
113
 
@@ -123,7 +123,7 @@
123
123
  .matcha-modal-backdrop {
124
124
  position: fixed;
125
125
  inset: 0;
126
- z-index: 998;
126
+ z-index: var(--matcha-z-modal-bg, 998);
127
127
  cursor: pointer;
128
128
  // Figma matcha/overlay Type=Modal: scrim 50% + blur 6px
129
129
  background: var(--matcha-scrim-modal, rgba(0, 0, 0, 0.5));
@@ -139,7 +139,7 @@
139
139
  // bg surface/card · radius 16 · shadow 8r@4y + 32r@12y · sem border.
140
140
  .matcha-modal {
141
141
  position: relative;
142
- z-index: 999;
142
+ z-index: var(--matcha-z-modal, 999);
143
143
  display: flex;
144
144
  flex-direction: column;
145
145
  // Perf: contain layout/paint pra browser não recalcular reflow da page atrás.
@@ -61,6 +61,11 @@
61
61
  border: 0;
62
62
  background: transparent;
63
63
  cursor: pointer;
64
+ // O row é <a> quando o item tem [routerLink]/[href] — sem este reset a âncora
65
+ // traz sublinhado e a cor de link do browser. As demais regras já eram agnósticas
66
+ // de tag (border: 0, background: transparent atendiam o <button>).
67
+ text-decoration: none;
68
+ color: inherit;
64
69
  width: 100%;
65
70
  box-sizing: border-box;
66
71
  transition: background-color var(--matcha-duration-instant, 80ms) ease,
@@ -75,7 +75,8 @@
75
75
  // barra sem cortar texto (fica sob o padding do item). Escopado a menu porque
76
76
  // submenus são portados pro <body> (não são descendentes) — logo não são clipados;
77
77
  // select/autocomplete/calendar ficam intactos.
78
- .matcha-panel:has(> .matcha-menu-content) {
78
+ .matcha-panel:has(> .matcha-menu-content),
79
+ .matcha-panel:has(.matcha-select-options) {
79
80
  overflow-x: hidden;
80
81
  }
81
82
 
@@ -12,7 +12,15 @@
12
12
  //
13
13
  // Companion directives (a11y automática):
14
14
  // [matcha-table-sortable] em <th> — aria-sort + tabindex + keyboard
15
- // [rowClick] em <tr> — o binding já ativa tudo (tabindex + Enter/Space + hover accent)
15
+ // [rowClick] em <tr> — AÇÃO na linha (abrir modal, selecionar). o
16
+ // binding já ativa tudo (tabindex + Enter/Space
17
+ // + hover accent na linha inteira)
18
+ //
19
+ // Navegação (leva pra outra página) NÃO é [rowClick]:
20
+ // <a matcha-cell-link [routerLink]> dentro do <td> — âncora de verdade, então
21
+ // ctrl+clique/clique do meio/botão direito funcionam e o resto da linha segue
22
+ // selecionável. Ponteiro e tom accent aparecem só sobre a âncora, pintando a linha
23
+ // inteira. Os dois no mesmo <tr> é proibido pelo canon (dois hovers competindo).
16
24
  //
17
25
  // Helpers CSS-only:
18
26
  // td.numeric → tabular-nums
@@ -75,6 +83,10 @@
75
83
  --matcha-table-row-bg-hover: rgba(var(--matcha-color-fg), 0.12);
76
84
  --matcha-table-row-bg-hover-striped: rgba(var(--matcha-color-fg), 0.18);
77
85
  --matcha-table-header-bg-hover: rgba(var(--matcha-color-fg), 0.10);
86
+ // Hover da linha que NAVEGA: tom accent, disparado só quando o ponteiro está
87
+ // sobre a âncora da célula (ver "Row navegável" adiante). Fora dela a linha usa
88
+ // o hover neutro acima — é esse contraste que diz ao usuário onde clicar.
89
+ --matcha-table-row-bg-hover-accent: var(--matcha-color-accent-surface-hover);
78
90
 
79
91
  // ── Sort indicator colors ─────────────────────────────────────────────
80
92
  // Inactive usa alpha 0.45 no foreground — claramente VISÍVEL como "ali tem
@@ -382,6 +394,36 @@
382
394
  // table-clickable-row.directive.ts) — nenhuma regra de tema necessária
383
395
  // aqui, o estilo inline já vence qualquer especificidade.
384
396
 
397
+ // ── Row navegável (`<a matcha-cell-link>` na célula) ───────────────────
398
+ // A linha que LEVA PRA OUTRA PÁGINA não é clicável inteira: quem navega é uma
399
+ // âncora de verdade na célula, pra que ctrl+clique, clique do meio e o menu do
400
+ // botão direito funcionem — e pra que o resto da linha continue selecionável
401
+ // com o mouse (com a linha toda clicável, não dava pra copiar texto da tabela).
402
+ //
403
+ // O feedback visual é o inverso do rowClick: ponteiro e tom accent aparecem só
404
+ // quando o mouse está sobre a âncora, e aí a linha INTEIRA pinta. Fora dela vale
405
+ // o hover neutro de sempre.
406
+ //
407
+ // Pinta via --matcha-table-cell-bg em TODOS os td da linha (mesmo caminho do
408
+ // hover normal), não com background-color no <tr>: em tabela striped o fundo
409
+ // mora no td, e um background no tr ficaria por baixo dele — o resultado seria
410
+ // uma célula colorida e o resto não.
411
+ //
412
+ // Depois das regras de striped de propósito: mesma especificidade, e ordem de
413
+ // origem decide. `:has()` já é usado em ~10 componentes do tema.
414
+ // O estilo BASE da âncora é global (base/_reset.scss) — ela também aparece em
415
+ // card de listagem, fora de qualquer tabela. Aqui fica só o que é da tabela: o
416
+ // realce da linha inteira.
417
+ a[matcha-cell-link]:focus-visible {
418
+ outline: var(--matcha-table-focus-ring-width) solid
419
+ var(--matcha-table-focus-ring-color);
420
+ }
421
+
422
+ tbody tr:has(a[matcha-cell-link]:hover) td,
423
+ tbody tr:has(a[matcha-cell-link]:focus-visible) td {
424
+ --matcha-table-cell-bg: var(--matcha-table-row-bg-hover-accent);
425
+ }
426
+
385
427
  tbody tr.is-selected td {
386
428
  --matcha-table-cell-bg: var(--matcha-table-row-bg-selected);
387
429
  }
@@ -23,14 +23,21 @@
23
23
  // ── CSS vars (single source of truth) ─────────────────────────────────
24
24
  matcha-toolbar {
25
25
  // Spacing — alinhado ao Figma DSV3 15866:92.
26
- // Toolbar padding 16px simétrico, gap entre groups 12px (Figma Frame interno),
27
- // gap interno de actions group 8px. Height 68 = 16+36+16.
26
+ // Toolbar padding 16px simétrico, gap UNICO de 8px (space-100), height 68 = 16+36+16.
27
+ //
28
+ // O gap entre groups era 12px (space-150) contra 8px dentro do actions, e isso
29
+ // produzia tres distancias diferentes na mesma barra: busca->icon-button 12px,
30
+ // icon-button->icon-button 8px, ultimo icon-button->CTA 8px. Unificado em 8px, que e
31
+ // o que o proprio canon do slot declara no topo deste arquivo ("flex gap-100") --
32
+ // gap-100 E 8px. Os 12px vinham do "Figma Frame interno", outra medida, e nao do slot.
33
+ // Conferir 15866:92 quando alguem abrir o frame; se o slot for 12, e este comentario
34
+ // que esta errado, nao o valor.
28
35
  // Consumer pode override per-side via --matcha-toolbar-padding-left/right.
29
36
  --matcha-toolbar-padding-y: var(--matcha-space-200, 16px);
30
37
  --matcha-toolbar-padding-x: var(--matcha-space-200, 16px);
31
38
  --matcha-toolbar-padding-left: var(--matcha-toolbar-padding-x);
32
39
  --matcha-toolbar-padding-right: var(--matcha-toolbar-padding-x);
33
- --matcha-toolbar-gap: var(--matcha-space-150, 12px);
40
+ --matcha-toolbar-gap: var(--matcha-space-100, 8px);
34
41
  --matcha-toolbar-actions-gap: var(--matcha-space-100, 8px);
35
42
  --matcha-toolbar-min-height: 68px;
36
43
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@inchurch/matcha-theme",
3
- "version": "22.30.1",
3
+ "version": "22.32.0",
4
4
  "description": "Themes for matcha-design-system",
5
5
  "main": "main.scss",
6
6
  "scripts": {
@@ -86,7 +86,7 @@
86
86
  --matcha-z-dropdown: 100;
87
87
  --matcha-z-sticky: 200;
88
88
  --matcha-z-popover: 300;
89
- --matcha-z-tooltip: 400;
89
+ --matcha-z-tooltip: 1001;
90
90
  --matcha-z-modal-bg: 998;
91
91
  --matcha-z-modal: 999;
92
92
  --matcha-z-overlay: 1000;