@inchurch/matcha-theme 22.30.1 → 22.31.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) —
|
|
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
|
|
@@ -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,
|
|
@@ -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
|
}
|