@aurea-uds/core 0.42.0 → 0.43.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/dist/aurea.css +70 -29
- package/package.json +1 -1
package/dist/aurea.css
CHANGED
|
@@ -797,6 +797,13 @@ img,svg { display:block; }
|
|
|
797
797
|
.topbar-tabs { flex-basis:100%; display:flex; align-items:flex-end; gap:var(--space-1); min-block-size:var(--space-10);
|
|
798
798
|
overflow-x:auto; overflow-y:hidden; }
|
|
799
799
|
@media (min-width:768px) { .topbar-tabs { gap:var(--space-3); } }
|
|
800
|
+
/* A PONTA DA LINHA DAS ÁREAS (`Header tabsEnd`, bloco 1 — 23/10/2026): a chave Web | Native da documentação da
|
|
801
|
+
referência, do lado oposto das áreas e no meio da altura da linha. As áreas continuam rolando de lado quando não cabem;
|
|
802
|
+
a ponta não encolhe. Abaixo de 768 ela some, como lá. */
|
|
803
|
+
.topbar-tabs-row { flex-basis:100%; display:flex; align-items:center; gap:var(--space-4); min-inline-size:0; }
|
|
804
|
+
.topbar-tabs-row > .topbar-tabs { flex:1 1 auto; min-inline-size:0; }
|
|
805
|
+
.topbar-tabs-end { flex:none; }
|
|
806
|
+
@media (max-width:767px) { .topbar-tabs-end { display:none; } }
|
|
800
807
|
.topbar-tab { position:relative; flex-shrink:0; display:inline-flex; align-items:center; gap:var(--space-2);
|
|
801
808
|
padding:0 var(--space-1) calc(var(--space-2) + var(--focus-width)); color:var(--muted-foreground); font-size:var(--text-sm);
|
|
802
809
|
font-weight:var(--weight-medium); white-space:nowrap; text-decoration:none; }
|
|
@@ -1678,24 +1685,19 @@ img,svg { display:block; }
|
|
|
1678
1685
|
Aurea não tinha o botão de ação secundária mais comum do mercado — contorno na cor da marca.
|
|
1679
1686
|
Nada de novo aqui: mesma receita do par `danger-*` logo abaixo, com o token do outro tom, e o
|
|
1680
1687
|
texto em `--primary` já era precedente do `.btn-link-primary`. */
|
|
1681
|
-
.btn-primary-outline { --btn-bg:transparent; --btn-fg:var(--primary); --btn-border:var(--primary); }
|
|
1688
|
+
.btn-primary-outline { --btn-bg:transparent; --btn-fg:var(--primary-emphasis); --btn-border:var(--primary-emphasis); }
|
|
1682
1689
|
.btn-primary-outline:hover:not(:disabled) { --btn-bg:color-mix(in oklab, var(--primary) 14%, transparent); }
|
|
1683
|
-
.btn-primary-ghost { --btn-bg:transparent; --btn-fg:var(--primary); --btn-border:transparent; }
|
|
1690
|
+
.btn-primary-ghost { --btn-bg:transparent; --btn-fg:var(--primary-emphasis); --btn-border:transparent; }
|
|
1684
1691
|
.btn-primary-ghost:hover:not(:disabled) { --btn-bg:color-mix(in oklab, var(--primary) 14%, transparent); }
|
|
1685
1692
|
.btn-danger-outline { --btn-bg:transparent; --btn-fg:var(--danger-400); --btn-border:var(--danger-400); }
|
|
1686
1693
|
.btn-danger-outline:hover:not(:disabled):not([aria-disabled="true"]) { --btn-bg:color-mix(in oklab, var(--destructive) 14%, transparent); }
|
|
1687
1694
|
.btn-danger-ghost { --btn-bg:transparent; --btn-fg:var(--danger-400); --btn-border:transparent; }
|
|
1688
1695
|
.btn-danger-ghost:hover:not(:disabled):not([aria-disabled="true"]) { --btn-bg:color-mix(in oklab, var(--destructive) 14%, transparent); }
|
|
1689
1696
|
[data-theme="light"] .btn-danger-outline:where(:not([data-theme="dark"] *),[data-theme="dark"] [data-theme="light"] *),[data-theme="light"] .btn-danger-ghost:where(:not([data-theme="dark"] *),[data-theme="dark"] [data-theme="light"] *),[data-theme="light"] .btn-link-danger:where(:not([data-theme="dark"] *),[data-theme="dark"] [data-theme="light"] *) { --btn-fg:var(--danger-400); }
|
|
1690
|
-
/* A
|
|
1691
|
-
|
|
1692
|
-
|
|
1693
|
-
|
|
1694
|
-
ela. Não é conserto local: é a mesma pergunta do §21 — quem MAIS tem esse problema? — e a
|
|
1695
|
-
resposta foram estas duas, mais a borda, que é componente de UI e pede 3:1. */
|
|
1696
|
-
[data-theme="light"] .btn-primary-outline:where(:not([data-theme="dark"] *),[data-theme="dark"] [data-theme="light"] *),[data-theme="light"] .btn-primary-ghost:where(:not([data-theme="dark"] *),[data-theme="dark"] [data-theme="light"] *) { --btn-fg:color-mix(in oklab, var(--primary) 45%, var(--foreground)); }
|
|
1697
|
-
[data-theme="light"] .btn-primary-outline:where(:not([data-theme="dark"] *),[data-theme="dark"] [data-theme="light"] *) { --btn-border:color-mix(in oklab, var(--primary) 45%, var(--foreground)); }
|
|
1698
|
-
[data-theme="light"] .btn-outline.btn-tone-brand:where(:not([data-theme="dark"] *),[data-theme="dark"] [data-theme="light"] *) { --btn-border:color-mix(in oklab, var(--primary) 45%, var(--foreground)); }
|
|
1697
|
+
/* A LETRA DA MARCA nos botões sem caixa é a de DESTAQUE (ADR-0081, 24/10/2026 — a ADR-0076 aplicada a eles): o azul no
|
|
1698
|
+
claro, o amarelo no escuro, e na `lory` o laranja escuro dela. De 21/08 até aqui, o claro levava a mistura marrom
|
|
1699
|
+
(a marca a 45% no texto): passava sobre a página e caía para 4,22 dentro da barra de ferramentas; o azul dá 4,69. O
|
|
1700
|
+
`--primary-outline` não serve de letra: na `lory` ele é translúcido (é do contorno). */
|
|
1699
1701
|
/* LINK: aparência de texto, sem cápsula e sem altura de controle — o sublinhado é o que diz
|
|
1700
1702
|
que é clicável, então ele existe desde o repouso (revelar no hover esconde a affordance).
|
|
1701
1703
|
Três tons: neutro, marca e destrutivo. No claro a marca aprofunda, senão não passa o AA. */
|
|
@@ -1704,8 +1706,7 @@ img,svg { display:block; }
|
|
|
1704
1706
|
prosa, e media 67×13px. O texto continua onde está — a caixa cresce centrada nele. */
|
|
1705
1707
|
.btn-link { height:auto; min-height:24px; padding:0; gap:6px; border:0; border-radius:var(--radius-sm); --btn-bg:transparent; --btn-fg:var(--foreground); text-decoration:underline; text-underline-offset:3px; text-decoration-thickness:1px; }
|
|
1706
1708
|
.btn-link:hover:not(:disabled):not([aria-disabled="true"]) { text-decoration-thickness:2px; }
|
|
1707
|
-
.btn-link-primary { --btn-fg:var(--primary); }
|
|
1708
|
-
[data-theme="light"] .btn-link-primary:where(:not([data-theme="dark"] *),[data-theme="dark"] [data-theme="light"] *) { --btn-fg:color-mix(in oklab, var(--primary) 45%, var(--foreground)); }
|
|
1709
|
+
.btn-link-primary { --btn-fg:var(--primary-emphasis); }
|
|
1709
1710
|
.btn-link-danger { --btn-fg:var(--danger-400); }
|
|
1710
1711
|
/* pressed entra na linguagem única de "selecionado" acima; só-ícone não leva o fio. */
|
|
1711
1712
|
/* Kbd — a tecla que dispara a ação, dentro ou fora do botão. Peça própria, não decoração.
|
|
@@ -1765,9 +1766,8 @@ img,svg { display:block; }
|
|
|
1765
1766
|
token de tom (`--success`) é o FUNDO cheio — a mesma cor funda nos dois temas —, e não serve
|
|
1766
1767
|
de letra no escuro. Letra, ícone, borda e barra sobre a superfície usam o par de letra
|
|
1767
1768
|
(`--success-400`, `--info-400`, `--warning-400`, `--danger-400`), que cada tema ajusta. */
|
|
1768
|
-
.btn-tone-brand,.btn-tone-brand:hover:not(:disabled) { --btn-fg:var(--primary); }
|
|
1769
|
-
|
|
1770
|
-
.btn-outline.btn-tone-brand { --btn-border:var(--primary); }
|
|
1769
|
+
.btn-tone-brand,.btn-tone-brand:hover:not(:disabled) { --btn-fg:var(--primary-emphasis); }
|
|
1770
|
+
.btn-outline.btn-tone-brand { --btn-border:var(--primary-emphasis); }
|
|
1771
1771
|
.btn-tone-brand:not(.btn-link):hover:not(:disabled) { --btn-bg:color-mix(in oklab, var(--primary) 14%, transparent); }
|
|
1772
1772
|
.btn-tone-danger,.btn-tone-danger:hover:not(:disabled) { --btn-fg:var(--danger-400); }
|
|
1773
1773
|
[data-theme="light"] .btn-tone-danger:where(:not([data-theme="dark"] *),[data-theme="dark"] [data-theme="light"] *),[data-theme="light"] .btn-tone-danger:hover:not(:disabled):where(:not([data-theme="dark"] *),[data-theme="dark"] [data-theme="light"] *) { --btn-fg:var(--danger-400); }
|
|
@@ -2385,13 +2385,19 @@ img,svg { display:block; }
|
|
|
2385
2385
|
/* A borda transparente de 1 (as abas não têm) entra no recheio: 1 + 3 = os 4 da referência, e o
|
|
2386
2386
|
trilho mede 40 como o das abas — sem o desconto, 42 (a geometria pegou). */
|
|
2387
2387
|
.segmented { display:inline-flex; gap:0; padding:calc(var(--space-1) - var(--border-width)); border-radius:var(--radius-control); background:var(--muted); border:var(--border-width) solid transparent; box-shadow:none; }
|
|
2388
|
-
.segmented button { min-block-size:var(--control-h-sm); padding:0 var(--space-4); border:0; border-radius:var(--radius-control); color:var(--muted-foreground); background:transparent; font-weight:var(--weight-medium); cursor:pointer; }
|
|
2389
|
-
.segmented button.active { color:var(--foreground); background:var(--segment); box-shadow:var(--shadow-sm); border:0; }
|
|
2388
|
+
.segmented :is(button,a) { min-block-size:var(--control-h-sm); padding:0 var(--space-4); border:0; border-radius:var(--radius-control); color:var(--muted-foreground); background:transparent; font-weight:var(--weight-medium); cursor:pointer; }
|
|
2389
|
+
.segmented :is(button,a).active { color:var(--foreground); background:var(--segment); box-shadow:var(--shadow-sm); border:0; }
|
|
2390
2390
|
/* `fullWidth` (A5, 06/10/2026): ocupa a linha, e cada segmento cresce a partir do rótulo sem
|
|
2391
2391
|
encolher abaixo dele — o mesmo desenho do nativo. `1 0 auto` e não `1` (= `1 1 0%`): base zero
|
|
2392
2392
|
reparte a largura em partes iguais, e é isso que quebrava o rótulo no nativo rodando no
|
|
2393
2393
|
navegador. Quando não cabe, rola pela regra de tela estreita, como sem a prop. */
|
|
2394
|
-
.segmented-full { display:flex; } .segmented-full button { flex:1 0 auto; }
|
|
2394
|
+
.segmented-full { display:flex; } .segmented-full :is(button,a) { flex:1 0 auto; }
|
|
2395
|
+
/* A CÁPSULA QUE NAVEGA (bloco 1, o 5-A — 23/10/2026): com `href` nos itens, o `SegmentedControl` é um <nav> de links — a
|
|
2396
|
+
chave Web | Native do site, a peça "Tabs em pílula" da referência na ponta da linha das áreas. O link tem a pele do
|
|
2397
|
+
segmento; o atual leva `aria-current="page"` e a mesma marca do escolhido. */
|
|
2398
|
+
.segmented a { display:inline-flex; align-items:center; justify-content:center; gap:var(--space-1); text-decoration:none; }
|
|
2399
|
+
/* `size="sm"`: a da referência (abas de 24 numa cápsula de 32, letra 14) — a altura do controle `xs` da densidade. */
|
|
2400
|
+
.segmented-sm :is(button,a) { min-block-size:var(--control-h-xs); padding:0 var(--space-4); font-size:var(--text-sm); }
|
|
2395
2401
|
/* Toggle (Lote 1): pressionado usa o MESMO par de tokens do segmento aceso, logo acima. Um
|
|
2396
2402
|
toggle solto e um segmento selecionado dizem a mesma coisa — se parecessem diferentes, o
|
|
2397
2403
|
sistema teria dois idiomas para "isto está ligado". O estado vem do motor (`data-pressed`),
|
|
@@ -2405,12 +2411,12 @@ img,svg { display:block; }
|
|
|
2405
2411
|
grita mais que o próprio rótulo. No tema CLARO o amarelo puro como texto dá 1.6:1, longe
|
|
2406
2412
|
dos 4.5:1 do AA, então o rótulo aprofunda com --foreground e segue âmbar. */
|
|
2407
2413
|
.is-selected,.btn-nav[aria-current]:not([aria-current="false"]),.btn[aria-pressed="true"],
|
|
2408
|
-
.segmented button.active { --btn-bg:var(--secondary); --btn-fg:var(--primary); position:relative; background:var(--secondary); color:var(--primary); }
|
|
2414
|
+
.segmented :is(button,a).active { --btn-bg:var(--secondary); --btn-fg:var(--primary); position:relative; background:var(--secondary); color:var(--primary); }
|
|
2409
2415
|
/* A CÁPSULA ELEVADA que a regra acima promete, e que no trilho não se via (ADR-0059, 08/10/2026):
|
|
2410
2416
|
o segmento aceso e a aba escolhida vivem sobre --muted, e --secondary dava 1:1 contra ele no
|
|
2411
2417
|
claro e 1,02:1 no escuro. Sobre o trilho a cápsula é --segment, com a sombra pequena — como a
|
|
2412
2418
|
aba da referência principal. O rótulo na cor da marca e o fio continuam. */
|
|
2413
|
-
.segmented button.active { --btn-bg:var(--segment); background:var(--segment); box-shadow:var(--shadow-sm); }
|
|
2419
|
+
.segmented :is(button,a).active { --btn-bg:var(--segment); background:var(--segment); box-shadow:var(--shadow-sm); }
|
|
2414
2420
|
/* O TOGGLE LIGADO tem fundo próprio (0.32.0). Com o solto no fundo neutro (o `default` da referência),
|
|
2415
2421
|
o cinza do "selecionado" acima deixava ligado e desligado com o MESMO fundo — só a letra e o fio
|
|
2416
2422
|
mudavam, e o `skin.spec` cobra que o ligado pareça ligado pelo fundo. O ligado dela é o tom suave
|
|
@@ -2439,7 +2445,7 @@ img,svg { display:block; }
|
|
|
2439
2445
|
saíram com a mesma cor. Com o `:not` ela pesa (0,3,1) e só alcança quem está em repouso. */
|
|
2440
2446
|
[data-theme="light"] .doc-nav a:not(.active):where(:not([data-theme="dark"] *),[data-theme="dark"] [data-theme="light"] *) { color:color-mix(in oklab, var(--sidebar-foreground) 72%, transparent); }
|
|
2441
2447
|
.is-selected::after,.btn-nav[aria-current]:not([aria-current="false"])::after,
|
|
2442
|
-
.btn[aria-pressed="true"]:not(.btn-icon)::after,.segmented button.active::after,.tabs-secondary .tab[data-active]::after,
|
|
2448
|
+
.btn[aria-pressed="true"]:not(.btn-icon)::after,.segmented :is(button,a).active::after,.tabs-secondary .tab[data-active]::after,
|
|
2443
2449
|
.doc-nav a.active::after,.sidebar-item[aria-current]::after { content:""; position:absolute; inset-inline:15px; bottom:0; height:2px; border-radius:var(--radius-full); background:color-mix(in oklab, var(--primary) 75%, transparent); }
|
|
2444
2450
|
/* e o fio do ativo da lateral segue a marca DELA, pelo mesmo motivo da regra de cor acima. */
|
|
2445
2451
|
.doc-nav a.active::after,.sidebar-item[aria-current]::after { background:var(--sidebar-current-line, color-mix(in oklab, var(--sidebar-primary) 75%, transparent)); }
|
|
@@ -2451,7 +2457,7 @@ img,svg { display:block; }
|
|
|
2451
2457
|
botão: o azul sobre o amarelo mede 3,49:1 — o axe da varredura achou, no "12" do exemplo da `Sidebar`. */
|
|
2452
2458
|
[data-theme="light"] :is(.sidebar-item[aria-current],.doc-nav a.active):not(:where([data-brand],[data-brand] *)):where(:not([data-theme="dark"] *),[data-theme="dark"] [data-theme="light"] *) { --sidebar-current-line:transparent; --primary-emphasis:var(--primary-foreground); --sidebar-primary:var(--primary-foreground); background:var(--primary); color:var(--primary-foreground); }
|
|
2453
2459
|
[data-theme="light"] .is-selected:where(:not([data-theme="dark"] *),[data-theme="dark"] [data-theme="light"] *),[data-theme="light"] .btn-nav[aria-current]:not([aria-current="false"]):where(:not([data-theme="dark"] *),[data-theme="dark"] [data-theme="light"] *),
|
|
2454
|
-
[data-theme="light"] .btn[aria-pressed="true"]:where(:not([data-theme="dark"] *),[data-theme="dark"] [data-theme="light"] *),[data-theme="light"] .segmented button.active:where(:not([data-theme="dark"] *),[data-theme="dark"] [data-theme="light"] *)
|
|
2460
|
+
[data-theme="light"] .btn[aria-pressed="true"]:where(:not([data-theme="dark"] *),[data-theme="dark"] [data-theme="light"] *),[data-theme="light"] .segmented :is(button,a).active:where(:not([data-theme="dark"] *),[data-theme="dark"] [data-theme="light"] *)
|
|
2455
2461
|
{ --btn-fg:color-mix(in oklab, var(--primary) 45%, var(--foreground)); color:color-mix(in oklab, var(--primary) 45%, var(--foreground)); }
|
|
2456
2462
|
/* A NAV DA LATERAL SAIU DESTA LISTA em 20/08/2026. O ajuste existe porque o amarelo puro não se lê
|
|
2457
2463
|
sobre o claro — mas ele mistura o `--foreground` da PÁGINA, e o item da lateral não está sobre a
|
|
@@ -2544,9 +2550,13 @@ img,svg { display:block; }
|
|
|
2544
2550
|
seis deixam o contador sobre a superfície da barra, onde ele já se lê. */
|
|
2545
2551
|
|
|
2546
2552
|
.badge-success { --badge-accent:var(--success-400); --badge-fill:var(--success); --badge-on:var(--success-foreground); color:var(--success-400); background:var(--success-bg); border-color:transparent; }
|
|
2547
|
-
.badge-warning { --badge-accent:var(--warning-400); --badge-fill:var(--warning); --badge-on:var(--warning-foreground); color:var(--warning-400); background:var(--warning-bg); border-color:transparent; }
|
|
2553
|
+
.badge-warning,.badge-paused { --badge-accent:var(--warning-400); --badge-fill:var(--warning); --badge-on:var(--warning-foreground); color:var(--warning-400); background:var(--warning-bg); border-color:transparent; }
|
|
2548
2554
|
.badge-danger { --badge-accent:var(--danger-400); --badge-fill:var(--destructive); --badge-on:var(--destructive-foreground); color:var(--danger-400); background:var(--danger-bg); border-color:transparent; }
|
|
2549
2555
|
.badge-info,.badge-running { --badge-accent:var(--info-400); --badge-fill:var(--info); --badge-on:var(--info-foreground); color:var(--info-400); background:var(--info-bg); border-color:transparent; }
|
|
2556
|
+
/* Os tons de ESTADO DE TRABALHO (ADR-0081, 24/10/2026): running é o info (acima), paused o aviso, review o violeta de
|
|
2557
|
+
categoria, e offline o apagado — como o `Status offline`. Antes paused, offline e review saíam iguais ao neutral. O
|
|
2558
|
+
cheio do offline é o par do texto apagado invertido: a letra que passa sobre o fundo vira o fundo. */
|
|
2559
|
+
.badge-offline { --badge-accent:var(--subtle-foreground); --badge-fill:var(--muted-foreground); --badge-on:var(--background); color:var(--subtle-foreground); background:var(--fill-1); border-color:transparent; }
|
|
2550
2560
|
/* AS OITO CORES DE CATEGORIA (GAR-07, ADR-0060, 09/10/2026): marcam GRUPO, não estado — "Motos" e
|
|
2551
2561
|
"Carros" num site de notícias. Mesma receita dos quatro propósitos acima (acento, fundo suave e
|
|
2552
2562
|
o fio misturado com a borda), e por isso as três ênfases valem para elas sem regra nova. O
|
|
@@ -2557,7 +2567,7 @@ img,svg { display:block; }
|
|
|
2557
2567
|
.badge-teal { --badge-accent:var(--category-teal); color:var(--category-teal); background:var(--category-teal-bg); border-color:transparent; }
|
|
2558
2568
|
.badge-cyan { --badge-accent:var(--category-cyan); color:var(--category-cyan); background:var(--category-cyan-bg); border-color:transparent; }
|
|
2559
2569
|
.badge-blue { --badge-accent:var(--category-blue); color:var(--category-blue); background:var(--category-blue-bg); border-color:transparent; }
|
|
2560
|
-
.badge-violet { --badge-accent:var(--category-violet); color:var(--category-violet); background:var(--category-violet-bg); border-color:transparent; }
|
|
2570
|
+
.badge-violet,.badge-review { --badge-accent:var(--category-violet); color:var(--category-violet); background:var(--category-violet-bg); border-color:transparent; }
|
|
2561
2571
|
.badge-pink { --badge-accent:var(--category-pink); color:var(--category-pink); background:var(--category-pink-bg); border-color:transparent; }
|
|
2562
2572
|
/* ── AS TRÊS ÊNFASES — e elas vêm DEPOIS das variantes de propósito ─────────────────
|
|
2563
2573
|
Cada variante declara só o ACENTO; as ênfases saem dele. Antes cada variante escrevia
|
|
@@ -2939,6 +2949,12 @@ img,svg { display:block; }
|
|
|
2939
2949
|
.avatar:is(.avatar-tone-brand,.avatar-tone-danger,.avatar-tone-success,.avatar-tone-warning,.avatar-tone-info) { color:var(--avatar-ink); }
|
|
2940
2950
|
.avatar.avatar-soft { border-color:transparent; background:var(--muted); }
|
|
2941
2951
|
.avatar.avatar-soft:is(.avatar-tone-brand,.avatar-tone-danger,.avatar-tone-success,.avatar-tone-warning,.avatar-tone-info) { background:color-mix(in oklab, var(--avatar-tint) 14%, transparent); }
|
|
2952
|
+
/* Os quatro tons de ESTADO no fundo do selo suave (o `-bg` de cada um, a receita do `Badge` — ADR-0081, 24/10/2026): com
|
|
2953
|
+
o tom a 14%, o info media 4,12 no claro. A marca fica na mistura: o fundo dela não tem par. */
|
|
2954
|
+
.avatar.avatar-soft.avatar-tone-info { background:var(--info-bg); }
|
|
2955
|
+
.avatar.avatar-soft.avatar-tone-success { background:var(--success-bg); }
|
|
2956
|
+
.avatar.avatar-soft.avatar-tone-warning { background:var(--warning-bg); }
|
|
2957
|
+
.avatar.avatar-soft.avatar-tone-danger { background:var(--danger-bg); }
|
|
2942
2958
|
.avatar img { width:100%; height:100%; object-fit:cover; }
|
|
2943
2959
|
/* LINK (0.32.0): o link de texto da referência — peso médio, a cor de link, sem sublinhado; com o mouse
|
|
2944
2960
|
ou apertado, o sublinhado de 1,5 a 4 da letra, na cor esmaecida (a meia força com o mouse). A seta do
|
|
@@ -3155,6 +3171,21 @@ button.tag-main { cursor:pointer; }
|
|
|
3155
3171
|
é inalcançável por teclado (axe scrollable-region-focusable). Quem escreve esta marcação à
|
|
3156
3172
|
mão precisa de `tabindex="0"` no <pre> — o componente React já o emite. */
|
|
3157
3173
|
.code-block { overflow:auto; padding:16px; border:1px solid transparent; border-radius:var(--radius-lg); background:var(--surface-inset); color:var(--muted-foreground); font:12px/1.7 var(--font-code); }
|
|
3174
|
+
/* O CÓDIGO EM ABAS (`CodeBlock tabs`, bloco 1 — o 3-A): a caixa é UMA — a fileira em cima e o código embaixo —, como a
|
|
3175
|
+
documentação da referência, medida na página dela (1280 × 663, 23/10/2026): a fileira de 37 (o texto 14, peso médio, a
|
|
3176
|
+
entrelinha 20 → a `--leading-normal`, 21, com 8 em cima e embaixo), as abas a 14 uma da outra e a 16 da borda; o
|
|
3177
|
+
código é o bloco de sempre. A fileira é um degrau acima da página e o código um acima dela (a referência: a página, a
|
|
3178
|
+
superfície, o código) — no texto do site, a página 31, a fileira 41 e o código 51, a cor do bloco sozinho. A escolhida
|
|
3179
|
+
na cor do texto, com o traço cheio de baixo, como as abas de área do site (o indicador, não uma linha — ADR-0072). */
|
|
3180
|
+
.code-tabs { border-radius:var(--radius-lg); background:var(--surface-1); overflow:hidden; }
|
|
3181
|
+
.prose .code-tabs { border-radius:var(--radius-card); }
|
|
3182
|
+
.code-tabs-list { display:flex; gap:calc(var(--space-3) + var(--space-05)); padding:0 var(--space-4); overflow-x:auto; }
|
|
3183
|
+
.code-tab { position:relative; flex:none; padding:var(--space-2) 0; border:0; background:transparent; color:var(--muted-foreground);
|
|
3184
|
+
font-size:var(--text-sm); font-weight:var(--weight-medium); line-height:var(--leading-normal); cursor:pointer; }
|
|
3185
|
+
.code-tab:hover, .code-tab.active { color:var(--foreground); }
|
|
3186
|
+
.code-tab.active::after { content:""; position:absolute; inset-inline:0; inset-block-end:0; block-size:var(--focus-width); background:var(--primary); }
|
|
3187
|
+
.code-tab:focus-visible { outline-offset:calc(-1 * var(--focus-width)); }
|
|
3188
|
+
.code-tabs .code-block { border-radius:0; }
|
|
3158
3189
|
/* Lote V (20/10/2026): o número da linha e as cores do código (`CodeBlock lineNumbers` e `highlight`). O número é o da
|
|
3159
3190
|
referência, medido na página dela: uma coluna de 16 (--space-4), alinhada à direita, a 24 do código (--space-6); ela
|
|
3160
3191
|
cresce com os algarismos da última linha (`--code-line-digits`, que o componente escreve), para a coluna não pular
|
|
@@ -3191,7 +3222,7 @@ button.tag-main { cursor:pointer; }
|
|
|
3191
3222
|
.code-preview { display:flex; flex-direction:column; block-size:var(--demo-height,auto); padding:0; overflow:hidden; }
|
|
3192
3223
|
.demo-tabs { display:flex; padding:var(--space-2); border-bottom:var(--border-width) solid transparent; }
|
|
3193
3224
|
.demo-tabs .segmented { flex:1; display:flex; }
|
|
3194
|
-
.demo-tabs .segmented button { flex:1; }
|
|
3225
|
+
.demo-tabs .segmented :is(button,a) { flex:1; }
|
|
3195
3226
|
.demo-panel { flex:1; min-height:0; overflow:auto; padding:var(--space-6); }
|
|
3196
3227
|
.demo-panel[hidden] { display:none; }
|
|
3197
3228
|
.demo-panel[data-panel="preview"] { display:flex; flex-wrap:wrap; align-items:center; justify-content:center; gap:var(--space-4); background:var(--surface-inset); }
|
|
@@ -3200,6 +3231,11 @@ button.tag-main { cursor:pointer; }
|
|
|
3200
3231
|
.demo-code .code-block-wrap { flex:1; }
|
|
3201
3232
|
.demo-code .code-block { padding:var(--space-6); border:0; border-radius:0; }
|
|
3202
3233
|
.copy-code { position:absolute; top:var(--space-3); inset-inline-end:var(--space-3); z-index:1; }
|
|
3234
|
+
/* O fim da linha fica fora do botão de copiar (achado no 3-A, 23/10/2026): no Quick Start, o `pnpm add` de uma linha
|
|
3235
|
+
terminava a 915 e o botão começava a 901 — o fim do comando ficava embaixo dele. O código reserva no fim o lugar do
|
|
3236
|
+
botão (a distância da borda, o botão e um vão), e a linha mais longa ROLA antes de chegar nele. Vale para todo bloco
|
|
3237
|
+
com copiar: o sozinho, o do texto do site (`.prose pre`) e o do exemplo (`.demo-code`) — por isso vem depois deles. */
|
|
3238
|
+
.code-block-wrap > .code-block { padding-inline-end:calc(var(--space-3) + var(--control-h-md) + var(--space-2)); }
|
|
3203
3239
|
.copy-code .c-done { display:none; }
|
|
3204
3240
|
.copy-code.is-done .c-copy { display:none; } .copy-code.is-done .c-done { display:block; color:var(--primary); }
|
|
3205
3241
|
/* "On this page": índice da própria página, fixo na lateral. Navegação, não decoração —
|
|
@@ -3504,7 +3540,9 @@ button.tag-main { cursor:pointer; }
|
|
|
3504
3540
|
/* DOC-11 (0.32.0): o `tone` do nativo, na web. `link` é o amarelo de escrever; `primary`, o de
|
|
3505
3541
|
preencher (no claro quase some, como no nativo); as cores de estado, o par `-400` (ADR-0061). */
|
|
3506
3542
|
.typography-tone-subtle { color:var(--subtle-foreground); }
|
|
3507
|
-
|
|
3543
|
+
/* A letra do tom primary é a de DESTAQUE (ADR-0081, 24/10/2026): o azul no claro, o amarelo no escuro. Era o amarelo de
|
|
3544
|
+
preencher, de propósito — 1,75:1 no claro. */
|
|
3545
|
+
.typography-tone-primary { color:var(--primary-emphasis); }
|
|
3508
3546
|
.typography-tone-link { color:var(--link); }
|
|
3509
3547
|
.typography-tone-danger { color:var(--danger-400); }
|
|
3510
3548
|
.typography-tone-success { color:var(--success-400); }
|
|
@@ -3521,6 +3559,11 @@ button.tag-main { cursor:pointer; }
|
|
|
3521
3559
|
identificação, como no sistema que serviu de modelo (na tabela dele, só a coluna de número e a de valor; o resto
|
|
3522
3560
|
da tabela fica no texto). Vem depois dos `.typography-h*`, e por isso o título com `numeric` também troca. */
|
|
3523
3561
|
.typography-numeric { font-family:var(--font-code); font-variant-numeric:tabular-nums; }
|
|
3562
|
+
/* O alinhamento só existe num bloco: o `Text` (um <span>) e o `Code` (um <code>) são texto em linha, e com o
|
|
3563
|
+
`text-align` sozinho o `align` deles não fazia nada — achado pelo exemplo de cada valor (bloco 1, o catálogo fiel,
|
|
3564
|
+
23/10/2026). Com `align`, a peça vira bloco, como já faz o `truncate`; no `Heading` e no `Paragraph`, que já são
|
|
3565
|
+
bloco, nada muda. */
|
|
3566
|
+
.typography-align-start, .typography-align-center, .typography-align-end, .typography-align-justify { display:block; }
|
|
3524
3567
|
.typography-align-start { text-align:start; }
|
|
3525
3568
|
.typography-align-center { text-align:center; }
|
|
3526
3569
|
.typography-align-end { text-align:end; }
|
|
@@ -4614,8 +4657,6 @@ button.graph-node-body { cursor:pointer; }
|
|
|
4614
4657
|
}
|
|
4615
4658
|
|
|
4616
4659
|
|
|
4617
|
-
/* Aurea v1.7 stabilization patch — visual design unchanged. */
|
|
4618
|
-
.badge-running{background:var(--success-bg);color:var(--success-400);border-color:transparent}
|
|
4619
4660
|
/* superfície (overflow, borda, fundo, raio) mora junto com a do `.table-wrap` lá em cima — aqui
|
|
4620
4661
|
fica só o que é DESTA região: ela é focável, e o foco dela é a linha de dentro, abaixo. Era um
|
|
4621
4662
|
halo de `--focus` a 38% (B-09, 24/09/2026): claro demais para se ver, e fora do contrato de foco.
|