@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 +41 -0
- package/components/matcha-form-field.scss +5 -3
- package/components/matcha-modal.scss +3 -3
- package/components/matcha-nav.scss +5 -0
- package/components/matcha-panel.scss +2 -1
- package/components/matcha-table.scss +43 -1
- package/components/matcha-toolbar.scss +10 -3
- package/package.json +1 -1
- package/tokens/_static-tokens.scss +1 -1
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) —
|
|
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-
|
|
380
|
-
color: var(--matcha-color-text-
|
|
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> —
|
|
15
|
+
// [rowClick] em <tr> — AÇÃO na linha (abrir modal, selecionar). Só 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
|
|
27
|
-
//
|
|
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-
|
|
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