@aurea-uds/core 0.9.0 → 0.10.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.
Files changed (2) hide show
  1. package/dist/aurea.css +42 -6
  2. package/package.json +1 -1
package/dist/aurea.css CHANGED
@@ -512,6 +512,11 @@ img,svg { display:block; }
512
512
  `--space-4` dos dois lados; reservar só o token fazia 264px virarem 232px. A rente não tem
513
513
  margem, então a trilha dela continua sendo o token cru. */
514
514
  .app-shell:has(> .sidebar-flush) { --sidebar-track:var(--sidebar-width); }
515
+ /* Sem linhas declaradas, o grid repartia a sobra do `min-height:100vh` entre as linhas `auto`:
516
+ em tela estreita (a lateral vira gaveta) e página curta, a BARRA DO TOPO esticava. Medido no
517
+ desenho da B-10 (24/09/2026): 78px viraram 100px com `contentVariant="plain"`. A sobra vai
518
+ para a linha do conteúdo. Só com topo: sem ele, a primeira linha já é o conteúdo. */
519
+ .app-shell:has(> .topbar) { grid-template-rows:auto 1fr; }
515
520
  /* A base do topo carrega só o ARRANJO; cada variante traz a própria superfície.
516
521
  floating = caixa solta (a que já estava) · flush = faixa encostada nas bordas com fio
517
522
  embaixo, para o topo virar moldura da janela · pill = cápsula centrada, de cabeçalho
@@ -523,6 +528,8 @@ img,svg { display:block; }
523
528
  e sem superfície própria: ela se funde ao fundo e cola no conteúdo, que começa logo
524
529
  abaixo. É o topo do nosso catálogo. */
525
530
  .topbar-flush { top:0; padding:var(--space-2) var(--space-5); background:var(--background); }
531
+ /* divider (B-07): a linha que separa a barra grudada do conteúdo que passa por baixo. */
532
+ .topbar-divider { border-block-end:var(--border-width) solid var(--border); }
526
533
  .topbar-pill { top:var(--space-4); width:max-content; max-width:calc(100% - var(--space-8)); margin:var(--space-4) auto 0; justify-content:flex-start; gap:var(--space-2); padding:var(--space-2); border:1px solid var(--border); border-radius:var(--radius-control); background:var(--card); color:var(--card-foreground); }
527
534
  /* .brand nasceu como cabeçalho VERTICAL da lateral (borda embaixo + respiro); no topo
528
535
  ele deita, então some com a borda e a margem — o lockup em si continua o mesmo. */
@@ -578,6 +585,9 @@ img,svg { display:block; }
578
585
  .app-shell-flush .sidebar:not(.sidebar-flush) { --shell-top:calc(var(--topbar-height) + var(--space-05)); margin-block-start:var(--space-05); }
579
586
  .app-shell-flush .content { margin-block-start:var(--space-05); }
580
587
  .content { min-width:0; margin:var(--space-4) var(--space-4) var(--space-4) 0; padding:var(--space-6); border:1px solid var(--border); border-radius:var(--radius-card); background:var(--card); color:var(--card-foreground); }
588
+ /* contentVariant="plain" (B-10): a área de conteúdo sem caixa. Os `Card` da tela passam a ser as
589
+ únicas superfícies. A margem continua: é ela que afasta o conteúdo da lateral e da barra. */
590
+ .content-plain { padding:0; border:0; border-radius:0; background:none; color:inherit; }
581
591
  /* O topo é presentational — não conhece o conteúdo — então garante o mínimo universal:
582
592
  os filhos encolhem em vez de forçar rolagem lateral. O COLAPSO de conteúdo (esconder a
583
593
  busca, trocar a nav por menu) é do consumidor, com os utilitários responsivos abaixo. */
@@ -663,7 +673,16 @@ img,svg { display:block; }
663
673
  uso no core — token publicado que ninguém usa é promessa sem entrega, e era o par certo o
664
674
  tempo todo. O defeito não é da marca: a marca só o tornou visível. */
665
675
  @media (hover:hover) and (pointer:fine) { .sidebar-item:hover { background:var(--sidebar-accent); } }
666
- .sidebar-item[aria-current] { background:var(--sidebar-accent); color:var(--sidebar-accent-foreground); font-weight:var(--weight-medium); }
676
+ /* A-05 (24/09/2026), decisão do Victor: o item atual da lateral passa a usar a MARCA DA CASA para
677
+ "selecionado" — fundo, texto na cor da marca e o fio de 2px embaixo —, que o `Toggle`, o
678
+ `SegmentedControl`, o `Button variant="nav"` e a navegação do catálogo (`.doc-nav`) já usavam.
679
+ Era o único de fora: pílula cinza com texto branco, e um app copiou a regra da casa à mão.
680
+ As cores saem da escala DA LATERAL (`--sidebar-accent`, `--sidebar-primary`), exatamente como o
681
+ `.doc-nav a.active` — não da página. Foi a lição de 20/08/2026 sob a marca `lory`: com
682
+ `--secondary`/`--primary` da página, a lateral escura desenhava as cores invertidas.
683
+ O FIO não mora aqui: a lateral entrou na lista da regra da casa (`.is-selected::after`, mais
684
+ abaixo), com o do `.doc-nav`. Copiar a regra faria duas cópias do mesmo fio divergirem. */
685
+ .sidebar-item[aria-current] { position:relative; background:var(--sidebar-accent); color:var(--sidebar-primary); font-weight:var(--weight-medium); }
667
686
  .sidebar-item[aria-current] .icon { opacity:1; }
668
687
  /* Alinha com o TEXTO do item: padding do painel (4) + padding do item (12) = 16px. Com o
669
688
  painel apertado, os 8px de antes deixavam a rubrica fora do prumo da lista. */
@@ -682,6 +701,8 @@ img,svg { display:block; }
682
701
  que, com o raio de linha, fechava nas pontas e lia como CÁPSULA. Quadrado é o que a referência
683
702
  desenha, e é o que o olho reconhece como botão de ícone. */
684
703
  .sidebar-collapsed .sidebar-item { justify-content:center; width:var(--control-h-md); padding-inline:0; margin-inline:auto; }
704
+ /* recolhida, o item tem só a largura do ícone: com os 15px de cada lado o fio sumiria. */
705
+ .sidebar-collapsed .sidebar-item[aria-current]::after { inset-inline:var(--space-2); }
685
706
  .sidebar-collapsed .sidebar-sub { padding-inline-start:0; }
686
707
  /* Estas regras tocam `.app-shell` porque a coluna do grid é do shell: a
687
708
  lateral não consegue encolher a própria trilha. `--sidebar-rail` continua sendo a largura
@@ -851,9 +872,12 @@ img,svg { display:block; }
851
872
  /* ── A LINHA DE LISTA TOCÁVEL (§4.3 do CONSUMIDOR-1) ──────────────────────────
852
873
  A LISTA NÃO PINTA SUPERFÍCIE. Quem dá o card é o `Card`, e repintar aqui seria um segundo
853
874
  lugar para a mesma coisa — a `DIRECTION.md` §3.9 diz que composto REUSA o menor.
854
- E SEM DIVISOR entre as linhas, que é decisão e não esquecimento: o realce de linha desta casa
855
- é a PÍLULA (é o que `.sidebar-item` faz), e pílula com traço embaixo se contradizem — o traço
856
- promete grade, a pílula promete alvo. Quem agrupa é a superfície de fora. */
875
+ E SEM DIVISOR entre as linhas, que é decisão e não esquecimento: um traço ENTRE linhas promete
876
+ grade, e quem agrupa é a superfície de fora.
877
+ ⚠ Até 24/09/2026 este comentário dizia também que "o realce desta casa é a PÍLULA, e pílula com
878
+ traço embaixo se contradizem". Era falso: cinco seletores da casa faziam pílula com fio, e desde
879
+ a A-05 a lateral também. O fio embaixo do item ATUAL não é divisor — é a marca de "selecionado",
880
+ uma por lista, e não promete grade nenhuma. */
857
881
  .nav-list { display:flex; flex-direction:column; gap:var(--space-05); margin:0; padding:0; list-style:none; }
858
882
  /* ── O RAIO DA LINHA SAI DE UMA CONTA, NÃO DE UM NÚMERO ─────────────────────────────
859
883
  `raio do filho = raio do pai − padding do pai`. É o que faz o vão ser CONSTANTE na curva; sem
@@ -1317,6 +1341,8 @@ img,svg { display:block; }
1317
1341
  Formulário é ARRANJO, e arranjo é do Stack/Grid; se esta classe crescer, ela vira uma terceira
1318
1342
  maneira de fazer layout e passa a brigar com as duas que já existem. */
1319
1343
  .form { display:grid; gap:var(--space-5); }
1344
+ /* description (B-12): a frase de ajuda embaixo do controle, com a letra e a cor do `.hint`. */
1345
+ .field-description { color:var(--muted-foreground); font-size:var(--text-xs); }
1320
1346
  .field-error { color:var(--danger-400); font-size:var(--text-xs); }
1321
1347
  .checkbox,.radio { display:inline-flex; align-items:flex-start; gap:9px; color:var(--foreground); cursor:pointer; }
1322
1348
  .checkbox input,.radio input { position:absolute; opacity:0; pointer-events:none; }
@@ -1415,9 +1441,9 @@ img,svg { display:block; }
1415
1441
  [data-theme="light"] .doc-nav a:not(.active) { color:color-mix(in oklab, var(--sidebar-foreground) 72%, transparent); }
1416
1442
  .is-selected::after,.btn-nav[aria-current]:not([aria-current="false"])::after,
1417
1443
  .btn[aria-pressed="true"]:not(.btn-icon)::after,.segmented button.active::after,
1418
- .doc-nav a.active::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); }
1444
+ .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); }
1419
1445
  /* e o fio do ativo da lateral segue a marca DELA, pelo mesmo motivo da regra de cor acima. */
1420
- .doc-nav a.active::after { background:color-mix(in oklab, var(--sidebar-primary) 75%, transparent); }
1446
+ .doc-nav a.active::after,.sidebar-item[aria-current]::after { background:color-mix(in oklab, var(--sidebar-primary) 75%, transparent); }
1421
1447
  [data-theme="light"] .is-selected,[data-theme="light"] .btn-nav[aria-current]:not([aria-current="false"]),
1422
1448
  [data-theme="light"] .btn[aria-pressed="true"],[data-theme="light"] .segmented button.active
1423
1449
  { --btn-fg:color-mix(in oklab, var(--primary) 45%, var(--foreground)); color:color-mix(in oklab, var(--primary) 45%, var(--foreground)); }
@@ -1535,6 +1561,16 @@ img,svg { display:block; }
1535
1561
  .card { min-width:0; padding:var(--card-pad); border:1px solid var(--border); border-radius:var(--radius-card); background:var(--card); color:var(--card-foreground); box-shadow:none; }
1536
1562
  /* padding="none" (C-05): sem respiro, e a mídia recortada no raio 22 do próprio cartão. */
1537
1563
  .card-flush { padding:0; overflow:hidden; }
1564
+ /* Card.Media e orientation (A-14). Vertical: a mídia primeira sangra até a borda de cima e dos
1565
+ lados. Horizontal (o modo lista): a mídia à esquerda, 96 de largura (o `size-24` do exemplo do
1566
+ HeroUI, nosso --space-24), 16 até o texto, e o raio concêntrico da casa. */
1567
+ .card-media { display:block; overflow:hidden; }
1568
+ .card-media > :is(img,video,.image) { display:block; width:100%; }
1569
+ .card:not(.card-horizontal) > .card-media:first-child { margin:calc(var(--card-pad) * -1) calc(var(--card-pad) * -1) var(--card-pad); border-radius:calc(var(--radius-card) - var(--border-width)) calc(var(--radius-card) - var(--border-width)) 0 0; }
1570
+ .card-flush:not(.card-horizontal) > .card-media:first-child { margin:0; }
1571
+ .card-horizontal { display:grid; grid-template-columns:var(--space-24) minmax(0,1fr); align-items:start; column-gap:var(--space-4); }
1572
+ .card-horizontal > .card-media { grid-row:1 / span 99; border-radius:calc(var(--radius-card) - var(--card-pad)); }
1573
+ .card-horizontal > :not(.card-media) { grid-column:2; min-width:0; }
1538
1574
  .card-raised { box-shadow:none; } .card-inset { background:var(--secondary); }
1539
1575
  /* A variante interativa é o ALVO, e desde o G-A11Y-11 ela exige `render` — o elemento vem de
1540
1576
  quem consome, e é `<button>` ou `<a href>` conforme a promessa seja ação ou navegação.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aurea-uds/core",
3
- "version": "0.9.0",
3
+ "version": "0.10.0",
4
4
  "description": "The Aurea UDS stylesheet and its vanilla behaviour. Import @aurea-uds/fonts/css before this.",
5
5
  "keywords": [
6
6
  "aurea",