@aurea-uds/core 0.8.13 → 0.9.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 +38 -6
- package/package.json +1 -1
package/dist/aurea.css
CHANGED
|
@@ -42,6 +42,7 @@
|
|
|
42
42
|
--radius-control:999px;
|
|
43
43
|
--radius-full:var(--radius-control);
|
|
44
44
|
--border-width:1px;
|
|
45
|
+
--opacity-disabled:0.5;
|
|
45
46
|
--shadow-md:0 16px 42px rgba(0,0,0,0.28);
|
|
46
47
|
--shadow-lg:0 28px 80px rgba(0,0,0,0.42);
|
|
47
48
|
--duration-fast:120ms;
|
|
@@ -469,6 +470,11 @@ img,svg { display:block; }
|
|
|
469
470
|
de um piso: sem `min-height` ele mede ZERO num pai que não define altura, e desaparece. */
|
|
470
471
|
.separator { flex:none; width:100%; height:1px; margin:0; border:0; background:var(--border); }
|
|
471
472
|
.separator-vertical { align-self:stretch; width:1px; height:auto; min-height:var(--space-2); }
|
|
473
|
+
/* spacing (C-04): os três degraus da ADR-0051. Na vertical a folga vai para os lados. */
|
|
474
|
+
.separator-space-tight { margin-block:var(--space-2); } .separator-space-normal { margin-block:var(--space-4); } .separator-space-loose { margin-block:var(--space-6); }
|
|
475
|
+
.separator-vertical.separator-space-tight { margin-block:0; margin-inline:var(--space-2); }
|
|
476
|
+
.separator-vertical.separator-space-normal { margin-block:0; margin-inline:var(--space-4); }
|
|
477
|
+
.separator-vertical.separator-space-loose { margin-block:0; margin-inline:var(--space-6); }
|
|
472
478
|
/* Grid: o terceiro primitivo de layout, com o mesmo gap do .stack. A pele nasceu na Fase 11
|
|
473
479
|
(achado A13): o componente existia desde sempre e saía `display:block` — empilhava. Ninguém
|
|
474
480
|
via porque o chrome do catálogo REDEFINIA .grid, então ele parecia pronto na nossa
|
|
@@ -476,6 +482,15 @@ img,svg { display:block; }
|
|
|
476
482
|
estoura o contêiner quando o texto vai a 200% e a coluna fica maior que a caixa (lição do
|
|
477
483
|
M12); --grid-min é o botão de ajuste, no idioma de --qr-module e --demo-height. */
|
|
478
484
|
.grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(min(var(--grid-min,15rem),100%),1fr)); gap:var(--space-4); }
|
|
485
|
+
/* B-01 (24/09/2026): as props de layout. `gap` tem três degraus — ADR-0051. Os nomes de alinhamento
|
|
486
|
+
são os mesmos do `Cluster` nativo (R-09). Sem prop, nenhuma destas classes sai. */
|
|
487
|
+
.stack-gap-tight,.cluster-gap-tight,.grid-gap-tight { gap:var(--space-2); }
|
|
488
|
+
.stack-gap-loose,.cluster-gap-loose,.grid-gap-loose { gap:var(--space-6); }
|
|
489
|
+
.stack-align-start { align-items:flex-start; } .stack-align-center { align-items:center; } .stack-align-end { align-items:flex-end; }
|
|
490
|
+
.cluster-align-start { align-items:flex-start; } .cluster-align-end { align-items:flex-end; } .cluster-align-baseline { align-items:baseline; }
|
|
491
|
+
.cluster-justify-center { justify-content:center; } .cluster-justify-end { justify-content:flex-end; } .cluster-justify-between { justify-content:space-between; }
|
|
492
|
+
.cluster-nowrap { flex-wrap:nowrap; }
|
|
493
|
+
.grid-fixed { grid-template-columns:repeat(var(--grid-cols,1),minmax(0,1fr)); }
|
|
479
494
|
|
|
480
495
|
/* ========================================================================== */
|
|
481
496
|
/* 03. APP SHELL E DOCUMENTAÇÃO */
|
|
@@ -938,6 +953,8 @@ img,svg { display:block; }
|
|
|
938
953
|
.btn-xl { --step-h:var(--control-h-xl); --step-px:26px; --step-gap:10px; --step-fs:var(--text-base); border-radius:var(--radius-control); }
|
|
939
954
|
/* Largura total: para rodapé de formulário e tela estreita. Só a largura muda. */
|
|
940
955
|
.btn-block { width:100%; }
|
|
956
|
+
/* grow (C-03): parte igual de uma fila. `min-width:0` deixa o rótulo encolher em vez de estourar. */
|
|
957
|
+
.btn-grow { flex:1 1 0%; min-width:0; }
|
|
941
958
|
/* SKIP LINK — WCAG 2.2 SC 2.4.1 (Bypass Blocks), nível A.
|
|
942
959
|
Medido em 21/08/2026: existia só no `apps/docs/index.html`, escrito à mão. O core não tinha,
|
|
943
960
|
o `AppShell` não tinha, e as 200 páginas do catálogo não tinham — ou seja, a página de
|
|
@@ -1122,7 +1139,7 @@ img,svg { display:block; }
|
|
|
1122
1139
|
.input,.textarea,.select { width:100%; min-width:0; block-size:var(--step-h,var(--control-h-md)); padding-block:0; padding-inline:var(--step-field-px,13px); color:var(--foreground); background:var(--field-bg); border:1px solid var(--border-strong); border-radius:var(--radius-control); transition:border-color var(--duration-fast),background-color var(--duration-fast),box-shadow var(--duration-fast); }
|
|
1123
1140
|
.input:hover,.textarea:hover,.select:hover { border-color:var(--border); }
|
|
1124
1141
|
.input::placeholder,.textarea::placeholder { color:var(--subtle-foreground); }
|
|
1125
|
-
.input:disabled,.textarea:disabled,.select:disabled { opacity
|
|
1142
|
+
.input:disabled,.textarea:disabled,.select:disabled { opacity:var(--opacity-disabled); cursor:not-allowed; }
|
|
1126
1143
|
/* O `padding-inline` daqui tem de LER a variável também, e com o próprio padrão: a base do
|
|
1127
1144
|
textarea vem DEPOIS da regra compartilhada e a sobrescrevia, congelando o padding em 14px nos
|
|
1128
1145
|
três degraus. Medido em 22/08/2026 contra o estado anterior — era 12/14/16 e virou 14/14/14.
|
|
@@ -1158,7 +1175,7 @@ img,svg { display:block; }
|
|
|
1158
1175
|
descrevendo um comportamento que não é o que acontece. */
|
|
1159
1176
|
.number-field-scrub-vertical { cursor:ns-resize; }
|
|
1160
1177
|
.number-field-scrub:hover { background:var(--surface-hover); color:var(--foreground); }
|
|
1161
|
-
.number-field-scrub[data-disabled] { opacity
|
|
1178
|
+
.number-field-scrub[data-disabled] { opacity:var(--opacity-disabled); cursor:not-allowed; }
|
|
1162
1179
|
/* O cursor virtual é PORTALADO para o <body> — o ponteiro do sistema fica escondido pelo Pointer
|
|
1163
1180
|
Lock durante o arraste, e este elemento é o que a pessoa vê no lugar dele. Portalado, ele sai
|
|
1164
1181
|
de qualquer contexto de empilhamento local, então precisa do degrau de overlay para não ficar
|
|
@@ -1419,6 +1436,10 @@ img,svg { display:block; }
|
|
|
1419
1436
|
badge com ícone fica mais alto que o badge de texto na mesma fila. 16px + 3+3 de padding
|
|
1420
1437
|
+ 1+1 de borda = 24px exatos: com ícone ou sem, mede o mesmo. */
|
|
1421
1438
|
.badge .icon { width:var(--icon-sm); height:var(--icon-sm); }
|
|
1439
|
+
/* fit="content" (R-01): o tamanho do texto mesmo numa coluna. `fit-content` e não `align-self`:
|
|
1440
|
+
numa fila, `align-self:flex-start` tiraria o selo do meio; o tamanho definido só desliga o
|
|
1441
|
+
esticar, que é o que a coluna faz com um item sem tamanho. */
|
|
1442
|
+
.badge-fit { inline-size:fit-content; }
|
|
1422
1443
|
.badge-primary { --badge-accent:var(--primary-emphasis); color:var(--primary-emphasis); border-color:var(--primary-outline); background:color-mix(in srgb,var(--primary) 10%,transparent); }
|
|
1423
1444
|
/* TAMANHOS. O md é a base (24px), que não muda — é o que as 103 fichas já usam. */
|
|
1424
1445
|
.badge-xs { min-height:var(--space-4); padding:0 var(--space-1); border-width:0; }
|
|
@@ -1512,6 +1533,8 @@ img,svg { display:block; }
|
|
|
1512
1533
|
.status-offline .status-dot { background:transparent; box-shadow:inset 0 0 0 2px currentColor,0 0 0 3px color-mix(in srgb,currentColor 14%,transparent); }
|
|
1513
1534
|
|
|
1514
1535
|
.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
|
+
/* padding="none" (C-05): sem respiro, e a mídia recortada no raio 22 do próprio cartão. */
|
|
1537
|
+
.card-flush { padding:0; overflow:hidden; }
|
|
1515
1538
|
.card-raised { box-shadow:none; } .card-inset { background:var(--secondary); }
|
|
1516
1539
|
/* A variante interativa é o ALVO, e desde o G-A11Y-11 ela exige `render` — o elemento vem de
|
|
1517
1540
|
quem consome, e é `<button>` ou `<a href>` conforme a promessa seja ação ou navegação.
|
|
@@ -2033,11 +2056,20 @@ img,svg { display:block; }
|
|
|
2033
2056
|
.icon-tile { min-height:86px; display:flex; flex-direction:column; align-items:flex-start; justify-content:space-between; gap:12px; padding:13px; border:1px solid var(--border); border-radius:var(--radius-lg); background:var(--secondary); color:var(--muted-foreground); cursor:pointer; text-align:start; transition:transform var(--duration-fast) var(--ease-standard),border-color var(--duration-fast),color var(--duration-fast); }
|
|
2034
2057
|
@media (hover:hover) and (pointer:fine) { .icon-tile:hover { color:var(--foreground); border-color:var(--primary); transform:translateY(-1px); } } .icon-tile:focus-visible { color:var(--foreground); border-color:var(--primary); } .icon-tile span { overflow:hidden; max-width:100%; text-overflow:ellipsis; white-space:nowrap; font:11px var(--font-code); }
|
|
2035
2058
|
.dialog-backdrop { position:fixed; inset:0; z-index:var(--z-modal); background:var(--overlay); backdrop-filter:blur(5px); }
|
|
2036
|
-
.dialog { position:fixed; top:50%; left:50%; transform:translate(-50%,-50%); z-index:var(--z-modal); width:min(
|
|
2059
|
+
.dialog { position:fixed; top:50%; left:50%; transform:translate(-50%,-50%); z-index:var(--z-modal); width:min(28rem,calc(100vw - 40px)); max-height:calc(100vh - 40px); overflow:auto; padding:24px; border:1px solid var(--border); border-radius:var(--radius-card); background:var(--popover); color:var(--popover-foreground); box-shadow:var(--shadow-lg); }
|
|
2060
|
+
/* size (B-03), decisão do Victor em 24/09/2026: as quatro larguras do HeroUI — `max-w-xs` a
|
|
2061
|
+
`max-w-lg` do @heroui/styles 3.2.6, 20/24/28/32rem = 320/384/448/512 — mais 1024 (o token
|
|
2062
|
+
--breakpoint-lg) e a tela cheia. O padrão passou a ser o `md` do HeroUI, 448; até a 0.8.14
|
|
2063
|
+
era 560. */
|
|
2064
|
+
.dialog-xs { width:min(20rem,calc(100vw - 40px)); }
|
|
2065
|
+
.dialog-sm { width:min(24rem,calc(100vw - 40px)); }
|
|
2066
|
+
.dialog-lg { width:min(32rem,calc(100vw - 40px)); }
|
|
2067
|
+
.dialog-xl { width:min(var(--breakpoint-lg),calc(100vw - 40px)); }
|
|
2068
|
+
.dialog-full { width:calc(100vw - 40px); height:calc(100vh - 40px); }
|
|
2037
2069
|
.dialog>header,.drawer>header { display:flex; align-items:flex-start; justify-content:space-between; gap:16px; margin-bottom:16px; } .dialog-body { display:grid; gap:14px; }
|
|
2038
2070
|
/* O ConfirmDialog é o MESMO `.dialog` — não nasce uma segunda superfície flutuante, que seria a
|
|
2039
2071
|
pele divergindo como divergiu entre `.table-wrap` e `.table-region`. O que muda é a caixa mais
|
|
2040
|
-
estreita (uma frase e dois botões não precisam
|
|
2072
|
+
estreita (uma frase e dois botões não precisam da largura do Dialog) e o rodapé alinhado ao fim, com o
|
|
2041
2073
|
destrutivo por último: a ordem visual é cancelar → agir, e é onde as quatro referências batem. */
|
|
2042
2074
|
.dialog-confirm { width:min(420px,calc(100vw - 40px)); }
|
|
2043
2075
|
.dialog-confirm>footer { display:flex; justify-content:flex-end; gap:var(--space-2); margin-block-start:var(--space-5); }
|
|
@@ -2082,7 +2114,7 @@ img,svg { display:block; }
|
|
|
2082
2114
|
.menu { --menu-px:10px; z-index:var(--z-modal); min-width:200px; max-width:min(320px,calc(100vw - 32px)); padding:var(--space-1); border:1px solid var(--border); border-radius:var(--radius-card); background:var(--popover); color:var(--popover-foreground); box-shadow:var(--shadow-lg); }
|
|
2083
2115
|
.menu-item { display:flex; align-items:center; gap:10px; width:100%; min-height:var(--control-h-md); padding:0 var(--menu-px,10px); border:0; border-radius:calc(var(--radius-card) - var(--space-1)); background:transparent; color:var(--foreground); font:inherit; text-align:start; cursor:pointer; }
|
|
2084
2116
|
.menu-item[data-highlighted],.menu-item:hover:not([data-disabled]) { background:var(--surface-3); outline:none; }
|
|
2085
|
-
.menu-item[data-disabled] { opacity
|
|
2117
|
+
.menu-item[data-disabled] { opacity:var(--opacity-disabled); cursor:not-allowed; }
|
|
2086
2118
|
/* CommandPalette (M6): a lista dentro da paleta. Reusa `.menu` e `.menu-item` — a paleta nao
|
|
2087
2119
|
inventa uma segunda pele de lista, que e o defeito que a `.table-region` cobrou caro. O que se
|
|
2088
2120
|
acrescenta e o teto de altura (a lista rola, a caixa nao cresce sem fim) e a linha do item,
|
|
@@ -2161,7 +2193,7 @@ img,svg { display:block; }
|
|
|
2161
2193
|
.combobox-multi>.combobox-actions { position:static; inset-inline-end:auto; }
|
|
2162
2194
|
/* o campo de chips não é `.input`, então a regra de :disabled dos campos não o alcança. Quem
|
|
2163
2195
|
marca aqui é o `data-disabled` que o Base UI põe no InputGroup a partir do estado da Root. */
|
|
2164
|
-
.combobox-multi[data-disabled] { opacity
|
|
2196
|
+
.combobox-multi[data-disabled] { opacity:var(--opacity-disabled); cursor:not-allowed; }
|
|
2165
2197
|
.combobox-multi[data-disabled] .combobox-chip-input { cursor:not-allowed; }
|
|
2166
2198
|
.combobox-chips { display:flex; flex:1; flex-wrap:wrap; align-items:center; gap:var(--space-2); min-width:0; }
|
|
2167
2199
|
.combobox-chip { display:inline-flex; align-items:center; gap:var(--space-1); padding-block:var(--space-1); padding-inline:var(--space-3) var(--space-1); background:var(--secondary); color:var(--foreground); border-radius:var(--radius-control); font-size:var(--text-sm); }
|