@aurea-uds/core 0.9.0 → 0.10.1

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 (3) hide show
  1. package/README.md +15 -16
  2. package/dist/aurea.css +42 -6
  3. package/package.json +6 -2
package/README.md CHANGED
@@ -1,39 +1,38 @@
1
1
  # @aurea-uds/core
2
2
 
3
- The **Aurea UDS** stylesheet, plus the small amount of vanilla behaviour that does not need
4
- React.
3
+ A folha de estilo da **Aurea UDS**, mais o pouco de comportamento em JavaScript puro que não
4
+ precisa de React.
5
5
 
6
6
  ```bash
7
7
  pnpm add @aurea-uds/core @aurea-uds/fonts
8
8
  ```
9
9
 
10
10
  ```js
11
- import "@aurea-uds/fonts/css"; // before the core: it no longer embeds IBM Plex
11
+ import "@aurea-uds/fonts/css"; // antes do core: ele não embute mais a IBM Plex
12
12
  import "@aurea-uds/core/css";
13
- import "@aurea-uds/core/js"; // optional — tabs, disclosure, and the like, without React
13
+ import "@aurea-uds/core/js"; // opcional — abas, abrir e fechar e afins, sem React
14
14
  ```
15
15
 
16
- The JavaScript is a no-op without a DOM, so it is safe to import during server rendering.
16
+ O JavaScript não faz nada sem DOM, então é seguro importá-lo durante a renderização no servidor.
17
17
 
18
- ## What is in here
18
+ ## O que tem aqui
19
19
 
20
- Every rule the system needs and nothing else. Documentation chrome and product mock-ups used
21
- to live here; they were moved out, and a gate keeps them out — a class in this stylesheet has
22
- to be one a component can actually produce.
20
+ Toda regra de que o sistema precisa, e nada além. Enfeite de documentação e maquete de produto já
21
+ moraram aqui; saíram, e um check os mantém fora — uma classe desta folha tem de ser uma que
22
+ algum componente de fato produz.
23
23
 
24
- Values come from `@aurea-uds/tokens`. A raw pixel for spacing, radius, type size, weight or
25
- line height fails a gate rather than a review.
24
+ Os valores vêm do `@aurea-uds/tokens`. Um pixel cru de espaço, raio, tamanho de letra, peso ou
25
+ altura de linha reprova no CI, e não numa revisão.
26
26
 
27
- ## Themes and density
27
+ ## Tema e densidade
28
28
 
29
29
  ```html
30
30
  <html data-theme="dark" data-density="comfortable">
31
31
  ```
32
32
 
33
- `data-theme` is `dark` or `light`; `data-density` is `compact`, `comfortable` or `spacious`.
34
- Both are read from the root element, and a control of a given size measures the same in every
35
- combination.
33
+ `data-theme` é `dark` ou `light`; `data-density` é `compact`, `comfortable` ou `spacious`. Os dois
34
+ são lidos do elemento raiz, e um controle de um dado tamanho mede o mesmo em toda combinação.
36
35
 
37
- ## Licence
36
+ ## Licença
38
37
 
39
38
  Apache-2.0.
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,7 +1,7 @@
1
1
  {
2
2
  "name": "@aurea-uds/core",
3
- "version": "0.9.0",
4
- "description": "The Aurea UDS stylesheet and its vanilla behaviour. Import @aurea-uds/fonts/css before this.",
3
+ "version": "0.10.1",
4
+ "description": "O CSS da Aurea UDS e o comportamento em JavaScript puro. Importe @aurea-uds/fonts/css antes deste.",
5
5
  "keywords": [
6
6
  "aurea",
7
7
  "design-system",
@@ -14,6 +14,10 @@
14
14
  "url": "git+https://github.com/victor1mor/aurea-uds.git",
15
15
  "directory": "packages/core"
16
16
  },
17
+ "homepage": "https://github.com/victor1mor/aurea-uds/tree/main/packages/core#readme",
18
+ "bugs": {
19
+ "url": "https://github.com/victor1mor/aurea-uds/issues"
20
+ },
17
21
  "publishConfig": {
18
22
  "access": "public"
19
23
  },