@aurea-uds/core 0.17.0 → 0.18.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 +66 -1
  2. package/package.json +1 -1
package/dist/aurea.css CHANGED
@@ -494,6 +494,14 @@ img,svg { display:block; }
494
494
  .cluster-justify-center { justify-content:center; } .cluster-justify-end { justify-content:flex-end; } .cluster-justify-between { justify-content:space-between; }
495
495
  .cluster-nowrap { flex-wrap:nowrap; }
496
496
  .grid-fixed { grid-template-columns:repeat(var(--grid-cols,1),minmax(0,1fr)); }
497
+ /* AN-08 (03/10/2026): a largura mínima da coluna, por nome — a trava de um consumidor reprova medida
498
+ escrita, e `min="sm"` virava UMA coluna sem aviso (o `--grid-min` inválido derruba a regra inteira).
499
+ O HeroUI não tem `Grid`; nenhum número é novo, cada um já mede uma grade ou uma caixa daqui:
500
+ xs 8rem — a miniatura da `.gallery` (`--gallery-min`)
501
+ sm 12rem — a célula da `.health-matrix`
502
+ md 15rem — o padrão do `.grid`, logo acima (sem classe)
503
+ lg 20rem — o `.dialog-xs`, o `max-w-xs` do HeroUI */
504
+ .grid-min-xs { --grid-min:8rem; } .grid-min-sm { --grid-min:12rem; } .grid-min-lg { --grid-min:20rem; }
497
505
 
498
506
  /* ========================================================================== */
499
507
  /* 03. APP SHELL E DOCUMENTAÇÃO */
@@ -587,7 +595,10 @@ img,svg { display:block; }
587
595
  encostado, não sobre a lateral — a rente já encosta sozinha. */
588
596
  .app-shell-flush .sidebar:not(.sidebar-flush) { --shell-top:calc(var(--topbar-height) + var(--space-05)); margin-block-start:var(--space-05); }
589
597
  .app-shell-flush .content { margin-block-start:var(--space-05); }
590
- .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); }
598
+ /* A margem é LÓGICA desde 03/10/2026 (AN-01): era `margin:space-4 space-4 space-4 0`, física, e na
599
+ escrita da direita para a esquerda o conteúdo encostava na borda da página e deixava 32 de vão na
600
+ junção com a lateral. Medido no banco da moldura; na esquerda para a direita nada muda. */
601
+ .content { min-width:0; margin-block:var(--space-4); margin-inline:0 var(--space-4); padding:var(--space-6); border:1px solid var(--border); border-radius:var(--radius-card); background:var(--card); color:var(--card-foreground); }
591
602
  /* contentVariant="plain" (B-10): a área de conteúdo sem caixa. Os `Card` da tela passam a ser as
592
603
  únicas superfícies. A margem continua: é ela que afasta o conteúdo da lateral e da barra. */
593
604
  .content-plain { padding:0; border:0; border-radius:0; background:none; color:inherit; }
@@ -717,6 +728,33 @@ img,svg { display:block; }
717
728
  nada. Gate nenhum via, porque `sidebar.html` não tem baseline de pixel. */
718
729
  .app-shell:has(> .sidebar-collapsed) { --sidebar-track:calc(var(--sidebar-rail) + var(--space-4)*2); }
719
730
  .app-shell:has(> .sidebar-collapsed.sidebar-flush) { --sidebar-track:var(--sidebar-rail); }
731
+ /* AN-01 (03/10/2026): O BOTÃO DE RECOLHER, no alto da junção do menu com o conteúdo — o lugar que o
732
+ Victor marcou. Só com `sidebarCollapsible`, e por isso mora sob `.app-shell-collapsible`: o
733
+ `.app-shell` cru (o catálogo escrito à mão o usa como raiz) não muda.
734
+ O botão é um item da grade na MESMA célula da lateral, e por isso a lateral e o conteúdo ganham
735
+ lugar escrito: sem ele, o posicionamento automático da grade empurraria a lateral para a coluna
736
+ do conteúdo. A caixa do botão é de tamanho zero na borda da coluna e copia da lateral a margem de
737
+ cima e o `--shell-top`, então gruda junto quando a página rola; o botão se centra nela.
738
+ No alto: o centro do botão na altura do centro do primeiro item da lateral (borda + `space-1` +
739
+ metade do `control-h-md`). Na junção: no meio do vão de `space-4` entre as duas caixas, ou em cima
740
+ do fio, na lateral rente. */
741
+ .app-shell-collapsible > .sidebar { grid-column:1; grid-row:2; }
742
+ .app-shell-collapsible > .content { grid-column:2; grid-row:2; }
743
+ .sidebar-toggle-slot { --toggle-top:calc(var(--topbar-height) + var(--space-4)*2); --toggle-x:calc(var(--space-4) / -2); --toggle-edge:var(--border-width);
744
+ grid-column:1; grid-row:2; justify-self:end; align-self:start; position:sticky; top:var(--toggle-top); z-index:var(--z-sticky); width:0; height:0; margin-block-start:var(--space-4); }
745
+ .app-shell-flush > .sidebar-toggle-slot { --toggle-top:calc(var(--topbar-height) + var(--space-05)); margin-block-start:var(--space-05); }
746
+ .app-shell-collapsible:has(> .sidebar-flush) > .sidebar-toggle-slot { --toggle-top:var(--topbar-height); --toggle-x:0px; --toggle-edge:0px; margin-block-start:0; }
747
+ /* O botão se centra por conta, com o lado dele escrito, e não por `translate` — que é físico e pede
748
+ `:dir(rtl)` para virar, e o empacotador do app reescreve `:dir()` (medido no Vite, 03/10/2026).
749
+ Com as margens lógicas ele vira sozinho. O lado é o `control-h-xs` do `IconButton size="xs"`, e o
750
+ alvo de toque com o dedo (`target-min`, a mesma troca do `.btn-icon` lá embaixo). A seta, quem
751
+ vira é o React, pela direção do provedor. */
752
+ .sidebar-toggle-slot > .btn.sidebar-toggle { --toggle-size:var(--control-h-xs); --btn-bg:var(--card); --btn-border:var(--border-strong); position:absolute; inline-size:var(--toggle-size); block-size:var(--toggle-size); min-inline-size:0; min-block-size:0;
753
+ inset-block-start:calc(var(--toggle-edge) + var(--space-1) + var(--control-h-md) / 2 - var(--toggle-size) / 2); inset-inline-start:calc(var(--toggle-x) - var(--toggle-size) / 2); }
754
+ @media (pointer:coarse) { .sidebar-toggle-slot > .btn.sidebar-toggle { --toggle-size:var(--target-min); } }
755
+ @media (max-width:1023px) {
756
+ .sidebar-toggle-slot { display:none; }
757
+ .app-shell-collapsible > .sidebar, .app-shell-collapsible > .content { grid-column:auto; grid-row:auto; } }
720
758
 
721
759
  /* ── Navegação inferior — o vocabulário de APLICATIVO ───────────────────────────────
722
760
  Lacuna estrutural medida no `CONSUMIDOR-1.md` §4.1: `.topbar` e `.sidebar` são
@@ -979,6 +1017,11 @@ img,svg { display:block; }
979
1017
  /* O VALOR E A SETA NÃO ENCOLHEM: valor cortado MENTE (um "R$ 1.2" no lugar de "R$ 1.234"), e seta
980
1018
  cortada deixa de dizer que a linha abre. Quem cede espaço é o texto, que reticencia dizendo. */
981
1019
  .nav-list-value { flex:none; color:var(--muted-foreground); font-size:var(--text-sm); }
1020
+ /* AN-04 (03/10/2026): os sinais ao lado do valor — fixada, silenciada. Pequenos (`sm`), apagados como o
1021
+ valor, e o vão é o mesmo de dentro do texto (`space-1`). A foto é o `.avatar` de sempre. */
1022
+ .nav-list-indicators { flex:none; display:inline-flex; align-items:center; gap:var(--space-1); color:var(--muted-foreground); }
1023
+ .nav-list-indicators>span { display:inline-flex; }
1024
+ .nav-list-row>.avatar { flex:none; }
982
1025
  .nav-list-row .nav-list-chevron { flex:none; opacity:.6; }
983
1026
  @media (hover:hover) and (pointer:fine) { .nav-list-row:hover { background:var(--secondary); } }
984
1027
  /* `aria-disabled` e NÃO `:disabled` — a razão está escrita ao lado de `.btn:disabled`, medida em
@@ -1691,6 +1734,28 @@ img,svg { display:block; }
1691
1734
  @media (max-width:640px) { .banner { grid-template-columns:auto minmax(0,1fr); } .banner>:last-child { grid-column:2; justify-self:start; } }
1692
1735
  .progress { height:8px; overflow:hidden; border-radius:999px; background:var(--surface-3); }
1693
1736
  .progress>span { display:block; height:100%; border-radius:inherit; background:var(--primary); }
1737
+ /* AN-07 (03/10/2026): a caixa de fora, o texto de apoio e o tom. A anatomia é a do `ProgressBar` do
1738
+ HeroUI 3.2.6 (`@heroui/styles`, progress-bar.css): a saída no alto à direita, `text-sm` médio com
1739
+ algarismos de largura igual, e `gap-1` até o trilho. O tom é a lista fechada do `ButtonTone`:
1740
+ pausado é `neutral`, falha é `danger`. */
1741
+ .progress-field { display:grid; gap:var(--space-1); }
1742
+ .progress-detail { justify-self:end; color:var(--muted-foreground); font-size:var(--text-sm); font-weight:var(--weight-medium); font-variant-numeric:tabular-nums; }
1743
+ .progress-tone-neutral>span { background:var(--muted-foreground); }
1744
+ .progress-tone-success>span { background:var(--success); }
1745
+ .progress-tone-warning>span { background:var(--warning); }
1746
+ .progress-tone-danger>span { background:var(--destructive); }
1747
+ .progress-tone-info>span { background:var(--info); }
1748
+ /* Sem total, um pedaço de 2/5 corre pelo trilho: os números do HeroUI (`w-2/5`, de -100% a 350% da
1749
+ própria largura, 1,5 s, a curva dele). O HeroUI anda com `translateX`; aqui anda a MARGEM LÓGICA
1750
+ (de -40% a 140% do trilho, o mesmo percurso), para correr ao contrário na escrita da direita para
1751
+ a esquerda sem `:dir(rtl)` — o empacotador do app reescreve `:dir()` como lista de idiomas e a
1752
+ regra deixa de pegar (medido no Vite, 03/10/2026). O pedaço tem 8 de altura: a conta por quadro é
1753
+ desprezível.
1754
+ Com menos movimento ele não corre: a barra inteira, apagada — nunca um pedaço parado, que leria
1755
+ como 40% feito. */
1756
+ .progress-indeterminate>span { width:40%; animation:progress-indeterminate 1.5s cubic-bezier(0.65,0,0.35,1) infinite; }
1757
+ @keyframes progress-indeterminate { from { margin-inline-start:-40%; } to { margin-inline-start:140%; } }
1758
+ @media (prefers-reduced-motion:reduce) { .progress-indeterminate>span { width:100%; animation:none; opacity:var(--opacity-disabled); } }
1694
1759
  /* DataState (M3): a região que troca de cara. Ela NÃO desenha nada próprio — só empilha o que
1695
1760
  já existe (esqueleto, alerta, estado vazio, conteúdo) com respiro entre eles. Se ganhar borda
1696
1761
  ou fundo, viram duas superfícies para a mesma coisa — o defeito que a `.table-region` cobrou. */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aurea-uds/core",
3
- "version": "0.17.0",
3
+ "version": "0.18.0",
4
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",