@aurea-uds/core 0.41.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 +97 -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; }
|
|
@@ -1240,6 +1247,33 @@ img,svg { display:block; }
|
|
|
1240
1247
|
@media (max-width:1023px) {
|
|
1241
1248
|
.sidebar-toggle-slot { display:none; }
|
|
1242
1249
|
.app-shell-collapsible > .sidebar, .app-shell-collapsible > .content { grid-column:auto; grid-row:auto; } }
|
|
1250
|
+
/* A LATERAL ATÉ O TOPO (MNT-34, `AppShell layout="sidebar"`, 23/10/2026) — o pedido do app de rede (*"sidebar de canto e
|
|
1251
|
+
que vá até o topo"*) e o PV-04 de um segundo app, na bancada aprovada pelo Victor (*"mantenha o atual e faça também os
|
|
1252
|
+
outros 4"*). A marca mora no topo da lateral (o `header` da `Sidebar`, 4-C); a barra de cima só existe se o app passar
|
|
1253
|
+
`topbar`, e fica só em cima do conteúdo (a coluna 2), como no sistema que serviu de modelo. Uma linha só na grade. */
|
|
1254
|
+
.app-shell-lateral { grid-template-rows:none; }
|
|
1255
|
+
.app-shell-lateral > .app-shell-column { grid-column:2; grid-row:1; min-width:0; display:flex; flex-direction:column; }
|
|
1256
|
+
.app-shell-lateral > .app-shell-column > .content { flex:1; }
|
|
1257
|
+
.app-shell-lateral.app-shell-collapsible > .sidebar { grid-row:1; }
|
|
1258
|
+
/* A lateral começa no topo da janela: a flutuante com a margem dela, a de canto encostada. Só na tela larga — abaixo de
|
|
1259
|
+
1024 ela é gaveta, com a altura e a margem da gaveta. */
|
|
1260
|
+
@media (min-width:1024px) {
|
|
1261
|
+
.app-shell-lateral > .sidebar { top:var(--space-4); height:calc(100vh - var(--space-4) * 2); max-height:none; }
|
|
1262
|
+
.app-shell-lateral > .sidebar-flush { top:0; height:100vh; }
|
|
1263
|
+
}
|
|
1264
|
+
/* O respiro: a de canto não tem margem, e o conteúdo encostava nela (o MNT-34 mediu no app). */
|
|
1265
|
+
.app-shell-lateral:has(> .sidebar-flush) > .app-shell-column > .content { margin-inline-start:var(--space-4); }
|
|
1266
|
+
/* O botão de recolher é o das quinze laterais aprovadas (`AppShell.SidebarToggle`): o botão de ícone sem fundo, a 12 do
|
|
1267
|
+
título — na barra do conteúdo, o primeiro dela. A bolinha da junção (ADR-0056) fica só no arranjo de sempre. Abaixo de
|
|
1268
|
+
1024 ele some: a lateral é gaveta, e quem abre é o botão da gaveta. */
|
|
1269
|
+
.app-shell-lateral > .app-shell-column > .topbar { gap:var(--space-3); justify-content:flex-start; }
|
|
1270
|
+
@media (max-width:1023px) { .btn.sidebar-collapse-trigger { display:none; } }
|
|
1271
|
+
/* Sem barra, abaixo de 1024, uma faixa com o botão da gaveta e a marca (a altura da barra pequena, 56). */
|
|
1272
|
+
.app-shell-narrow-bar { display:none; }
|
|
1273
|
+
@media (max-width:1023px) {
|
|
1274
|
+
.app-shell-lateral > .app-shell-column { grid-column:1; }
|
|
1275
|
+
.app-shell-narrow-bar { display:flex; align-items:center; gap:var(--space-3); min-height:calc(var(--space-12) + var(--space-2)); padding-inline:var(--space-4); }
|
|
1276
|
+
}
|
|
1243
1277
|
|
|
1244
1278
|
/* ── Navegação inferior — o vocabulário de APLICATIVO ───────────────────────────────
|
|
1245
1279
|
Lacuna estrutural medida no `CONSUMIDOR-1.md` §4.1: `.topbar` e `.sidebar` são
|
|
@@ -1651,24 +1685,19 @@ img,svg { display:block; }
|
|
|
1651
1685
|
Aurea não tinha o botão de ação secundária mais comum do mercado — contorno na cor da marca.
|
|
1652
1686
|
Nada de novo aqui: mesma receita do par `danger-*` logo abaixo, com o token do outro tom, e o
|
|
1653
1687
|
texto em `--primary` já era precedente do `.btn-link-primary`. */
|
|
1654
|
-
.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); }
|
|
1655
1689
|
.btn-primary-outline:hover:not(:disabled) { --btn-bg:color-mix(in oklab, var(--primary) 14%, transparent); }
|
|
1656
|
-
.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; }
|
|
1657
1691
|
.btn-primary-ghost:hover:not(:disabled) { --btn-bg:color-mix(in oklab, var(--primary) 14%, transparent); }
|
|
1658
1692
|
.btn-danger-outline { --btn-bg:transparent; --btn-fg:var(--danger-400); --btn-border:var(--danger-400); }
|
|
1659
1693
|
.btn-danger-outline:hover:not(:disabled):not([aria-disabled="true"]) { --btn-bg:color-mix(in oklab, var(--destructive) 14%, transparent); }
|
|
1660
1694
|
.btn-danger-ghost { --btn-bg:transparent; --btn-fg:var(--danger-400); --btn-border:transparent; }
|
|
1661
1695
|
.btn-danger-ghost:hover:not(:disabled):not([aria-disabled="true"]) { --btn-bg:color-mix(in oklab, var(--destructive) 14%, transparent); }
|
|
1662
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); }
|
|
1663
|
-
/* A
|
|
1664
|
-
|
|
1665
|
-
|
|
1666
|
-
|
|
1667
|
-
ela. Não é conserto local: é a mesma pergunta do §21 — quem MAIS tem esse problema? — e a
|
|
1668
|
-
resposta foram estas duas, mais a borda, que é componente de UI e pede 3:1. */
|
|
1669
|
-
[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)); }
|
|
1670
|
-
[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)); }
|
|
1671
|
-
[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). */
|
|
1672
1701
|
/* LINK: aparência de texto, sem cápsula e sem altura de controle — o sublinhado é o que diz
|
|
1673
1702
|
que é clicável, então ele existe desde o repouso (revelar no hover esconde a affordance).
|
|
1674
1703
|
Três tons: neutro, marca e destrutivo. No claro a marca aprofunda, senão não passa o AA. */
|
|
@@ -1677,8 +1706,7 @@ img,svg { display:block; }
|
|
|
1677
1706
|
prosa, e media 67×13px. O texto continua onde está — a caixa cresce centrada nele. */
|
|
1678
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; }
|
|
1679
1708
|
.btn-link:hover:not(:disabled):not([aria-disabled="true"]) { text-decoration-thickness:2px; }
|
|
1680
|
-
.btn-link-primary { --btn-fg:var(--primary); }
|
|
1681
|
-
[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); }
|
|
1682
1710
|
.btn-link-danger { --btn-fg:var(--danger-400); }
|
|
1683
1711
|
/* pressed entra na linguagem única de "selecionado" acima; só-ícone não leva o fio. */
|
|
1684
1712
|
/* Kbd — a tecla que dispara a ação, dentro ou fora do botão. Peça própria, não decoração.
|
|
@@ -1738,9 +1766,8 @@ img,svg { display:block; }
|
|
|
1738
1766
|
token de tom (`--success`) é o FUNDO cheio — a mesma cor funda nos dois temas —, e não serve
|
|
1739
1767
|
de letra no escuro. Letra, ícone, borda e barra sobre a superfície usam o par de letra
|
|
1740
1768
|
(`--success-400`, `--info-400`, `--warning-400`, `--danger-400`), que cada tema ajusta. */
|
|
1741
|
-
.btn-tone-brand,.btn-tone-brand:hover:not(:disabled) { --btn-fg:var(--primary); }
|
|
1742
|
-
|
|
1743
|
-
.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); }
|
|
1744
1771
|
.btn-tone-brand:not(.btn-link):hover:not(:disabled) { --btn-bg:color-mix(in oklab, var(--primary) 14%, transparent); }
|
|
1745
1772
|
.btn-tone-danger,.btn-tone-danger:hover:not(:disabled) { --btn-fg:var(--danger-400); }
|
|
1746
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); }
|
|
@@ -2358,13 +2385,19 @@ img,svg { display:block; }
|
|
|
2358
2385
|
/* A borda transparente de 1 (as abas não têm) entra no recheio: 1 + 3 = os 4 da referência, e o
|
|
2359
2386
|
trilho mede 40 como o das abas — sem o desconto, 42 (a geometria pegou). */
|
|
2360
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; }
|
|
2361
|
-
.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; }
|
|
2362
|
-
.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; }
|
|
2363
2390
|
/* `fullWidth` (A5, 06/10/2026): ocupa a linha, e cada segmento cresce a partir do rótulo sem
|
|
2364
2391
|
encolher abaixo dele — o mesmo desenho do nativo. `1 0 auto` e não `1` (= `1 1 0%`): base zero
|
|
2365
2392
|
reparte a largura em partes iguais, e é isso que quebrava o rótulo no nativo rodando no
|
|
2366
2393
|
navegador. Quando não cabe, rola pela regra de tela estreita, como sem a prop. */
|
|
2367
|
-
.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); }
|
|
2368
2401
|
/* Toggle (Lote 1): pressionado usa o MESMO par de tokens do segmento aceso, logo acima. Um
|
|
2369
2402
|
toggle solto e um segmento selecionado dizem a mesma coisa — se parecessem diferentes, o
|
|
2370
2403
|
sistema teria dois idiomas para "isto está ligado". O estado vem do motor (`data-pressed`),
|
|
@@ -2378,12 +2411,12 @@ img,svg { display:block; }
|
|
|
2378
2411
|
grita mais que o próprio rótulo. No tema CLARO o amarelo puro como texto dá 1.6:1, longe
|
|
2379
2412
|
dos 4.5:1 do AA, então o rótulo aprofunda com --foreground e segue âmbar. */
|
|
2380
2413
|
.is-selected,.btn-nav[aria-current]:not([aria-current="false"]),.btn[aria-pressed="true"],
|
|
2381
|
-
.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); }
|
|
2382
2415
|
/* A CÁPSULA ELEVADA que a regra acima promete, e que no trilho não se via (ADR-0059, 08/10/2026):
|
|
2383
2416
|
o segmento aceso e a aba escolhida vivem sobre --muted, e --secondary dava 1:1 contra ele no
|
|
2384
2417
|
claro e 1,02:1 no escuro. Sobre o trilho a cápsula é --segment, com a sombra pequena — como a
|
|
2385
2418
|
aba da referência principal. O rótulo na cor da marca e o fio continuam. */
|
|
2386
|
-
.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); }
|
|
2387
2420
|
/* O TOGGLE LIGADO tem fundo próprio (0.32.0). Com o solto no fundo neutro (o `default` da referência),
|
|
2388
2421
|
o cinza do "selecionado" acima deixava ligado e desligado com o MESMO fundo — só a letra e o fio
|
|
2389
2422
|
mudavam, e o `skin.spec` cobra que o ligado pareça ligado pelo fundo. O ligado dela é o tom suave
|
|
@@ -2412,7 +2445,7 @@ img,svg { display:block; }
|
|
|
2412
2445
|
saíram com a mesma cor. Com o `:not` ela pesa (0,3,1) e só alcança quem está em repouso. */
|
|
2413
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); }
|
|
2414
2447
|
.is-selected::after,.btn-nav[aria-current]:not([aria-current="false"])::after,
|
|
2415
|
-
.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,
|
|
2416
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); }
|
|
2417
2450
|
/* e o fio do ativo da lateral segue a marca DELA, pelo mesmo motivo da regra de cor acima. */
|
|
2418
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)); }
|
|
@@ -2424,7 +2457,7 @@ img,svg { display:block; }
|
|
|
2424
2457
|
botão: o azul sobre o amarelo mede 3,49:1 — o axe da varredura achou, no "12" do exemplo da `Sidebar`. */
|
|
2425
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); }
|
|
2426
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"] *),
|
|
2427
|
-
[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"] *)
|
|
2428
2461
|
{ --btn-fg:color-mix(in oklab, var(--primary) 45%, var(--foreground)); color:color-mix(in oklab, var(--primary) 45%, var(--foreground)); }
|
|
2429
2462
|
/* A NAV DA LATERAL SAIU DESTA LISTA em 20/08/2026. O ajuste existe porque o amarelo puro não se lê
|
|
2430
2463
|
sobre o claro — mas ele mistura o `--foreground` da PÁGINA, e o item da lateral não está sobre a
|
|
@@ -2517,9 +2550,13 @@ img,svg { display:block; }
|
|
|
2517
2550
|
seis deixam o contador sobre a superfície da barra, onde ele já se lê. */
|
|
2518
2551
|
|
|
2519
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; }
|
|
2520
|
-
.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; }
|
|
2521
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; }
|
|
2522
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; }
|
|
2523
2560
|
/* AS OITO CORES DE CATEGORIA (GAR-07, ADR-0060, 09/10/2026): marcam GRUPO, não estado — "Motos" e
|
|
2524
2561
|
"Carros" num site de notícias. Mesma receita dos quatro propósitos acima (acento, fundo suave e
|
|
2525
2562
|
o fio misturado com a borda), e por isso as três ênfases valem para elas sem regra nova. O
|
|
@@ -2530,7 +2567,7 @@ img,svg { display:block; }
|
|
|
2530
2567
|
.badge-teal { --badge-accent:var(--category-teal); color:var(--category-teal); background:var(--category-teal-bg); border-color:transparent; }
|
|
2531
2568
|
.badge-cyan { --badge-accent:var(--category-cyan); color:var(--category-cyan); background:var(--category-cyan-bg); border-color:transparent; }
|
|
2532
2569
|
.badge-blue { --badge-accent:var(--category-blue); color:var(--category-blue); background:var(--category-blue-bg); border-color:transparent; }
|
|
2533
|
-
.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; }
|
|
2534
2571
|
.badge-pink { --badge-accent:var(--category-pink); color:var(--category-pink); background:var(--category-pink-bg); border-color:transparent; }
|
|
2535
2572
|
/* ── AS TRÊS ÊNFASES — e elas vêm DEPOIS das variantes de propósito ─────────────────
|
|
2536
2573
|
Cada variante declara só o ACENTO; as ênfases saem dele. Antes cada variante escrevia
|
|
@@ -2912,6 +2949,12 @@ img,svg { display:block; }
|
|
|
2912
2949
|
.avatar:is(.avatar-tone-brand,.avatar-tone-danger,.avatar-tone-success,.avatar-tone-warning,.avatar-tone-info) { color:var(--avatar-ink); }
|
|
2913
2950
|
.avatar.avatar-soft { border-color:transparent; background:var(--muted); }
|
|
2914
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); }
|
|
2915
2958
|
.avatar img { width:100%; height:100%; object-fit:cover; }
|
|
2916
2959
|
/* LINK (0.32.0): o link de texto da referência — peso médio, a cor de link, sem sublinhado; com o mouse
|
|
2917
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
|
|
@@ -3128,6 +3171,21 @@ button.tag-main { cursor:pointer; }
|
|
|
3128
3171
|
é inalcançável por teclado (axe scrollable-region-focusable). Quem escreve esta marcação à
|
|
3129
3172
|
mão precisa de `tabindex="0"` no <pre> — o componente React já o emite. */
|
|
3130
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; }
|
|
3131
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
|
|
3132
3190
|
referência, medido na página dela: uma coluna de 16 (--space-4), alinhada à direita, a 24 do código (--space-6); ela
|
|
3133
3191
|
cresce com os algarismos da última linha (`--code-line-digits`, que o componente escreve), para a coluna não pular
|
|
@@ -3164,7 +3222,7 @@ button.tag-main { cursor:pointer; }
|
|
|
3164
3222
|
.code-preview { display:flex; flex-direction:column; block-size:var(--demo-height,auto); padding:0; overflow:hidden; }
|
|
3165
3223
|
.demo-tabs { display:flex; padding:var(--space-2); border-bottom:var(--border-width) solid transparent; }
|
|
3166
3224
|
.demo-tabs .segmented { flex:1; display:flex; }
|
|
3167
|
-
.demo-tabs .segmented button { flex:1; }
|
|
3225
|
+
.demo-tabs .segmented :is(button,a) { flex:1; }
|
|
3168
3226
|
.demo-panel { flex:1; min-height:0; overflow:auto; padding:var(--space-6); }
|
|
3169
3227
|
.demo-panel[hidden] { display:none; }
|
|
3170
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); }
|
|
@@ -3173,6 +3231,11 @@ button.tag-main { cursor:pointer; }
|
|
|
3173
3231
|
.demo-code .code-block-wrap { flex:1; }
|
|
3174
3232
|
.demo-code .code-block { padding:var(--space-6); border:0; border-radius:0; }
|
|
3175
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)); }
|
|
3176
3239
|
.copy-code .c-done { display:none; }
|
|
3177
3240
|
.copy-code.is-done .c-copy { display:none; } .copy-code.is-done .c-done { display:block; color:var(--primary); }
|
|
3178
3241
|
/* "On this page": índice da própria página, fixo na lateral. Navegação, não decoração —
|
|
@@ -3477,7 +3540,9 @@ button.tag-main { cursor:pointer; }
|
|
|
3477
3540
|
/* DOC-11 (0.32.0): o `tone` do nativo, na web. `link` é o amarelo de escrever; `primary`, o de
|
|
3478
3541
|
preencher (no claro quase some, como no nativo); as cores de estado, o par `-400` (ADR-0061). */
|
|
3479
3542
|
.typography-tone-subtle { color:var(--subtle-foreground); }
|
|
3480
|
-
|
|
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); }
|
|
3481
3546
|
.typography-tone-link { color:var(--link); }
|
|
3482
3547
|
.typography-tone-danger { color:var(--danger-400); }
|
|
3483
3548
|
.typography-tone-success { color:var(--success-400); }
|
|
@@ -3494,6 +3559,11 @@ button.tag-main { cursor:pointer; }
|
|
|
3494
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
|
|
3495
3560
|
da tabela fica no texto). Vem depois dos `.typography-h*`, e por isso o título com `numeric` também troca. */
|
|
3496
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; }
|
|
3497
3567
|
.typography-align-start { text-align:start; }
|
|
3498
3568
|
.typography-align-center { text-align:center; }
|
|
3499
3569
|
.typography-align-end { text-align:end; }
|
|
@@ -4587,8 +4657,6 @@ button.graph-node-body { cursor:pointer; }
|
|
|
4587
4657
|
}
|
|
4588
4658
|
|
|
4589
4659
|
|
|
4590
|
-
/* Aurea v1.7 stabilization patch — visual design unchanged. */
|
|
4591
|
-
.badge-running{background:var(--success-bg);color:var(--success-400);border-color:transparent}
|
|
4592
4660
|
/* superfície (overflow, borda, fundo, raio) mora junto com a do `.table-wrap` lá em cima — aqui
|
|
4593
4661
|
fica só o que é DESTA região: ela é focável, e o foco dela é a linha de dentro, abaixo. Era um
|
|
4594
4662
|
halo de `--focus` a 38% (B-09, 24/09/2026): claro demais para se ver, e fora do contrato de foco.
|