@aurea-uds/core 0.8.7 → 0.8.10
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 +34 -10
- package/dist/aurea.js +30 -0
- package/package.json +1 -1
package/dist/aurea.css
CHANGED
|
@@ -6,14 +6,14 @@
|
|
|
6
6
|
--font-ui:"IBM Plex Sans","Segoe UI",sans-serif;
|
|
7
7
|
--font-editorial:"IBM Plex Serif",Georgia,serif;
|
|
8
8
|
--font-code:"IBM Plex Mono",SFMono-Regular,Consolas,monospace;
|
|
9
|
-
--text-xs:0.
|
|
10
|
-
--text-sm:
|
|
11
|
-
--text-md:
|
|
9
|
+
--text-xs:0.8125rem;
|
|
10
|
+
--text-sm:1rem;
|
|
11
|
+
--text-md:1rem;
|
|
12
12
|
--text-base:1rem;
|
|
13
|
-
--text-lg:1.
|
|
13
|
+
--text-lg:1.25rem;
|
|
14
14
|
--text-xl:1.25rem;
|
|
15
|
-
--text-2xl:1.
|
|
16
|
-
--text-3xl:1.
|
|
15
|
+
--text-2xl:1.5625rem;
|
|
16
|
+
--text-3xl:1.9375rem;
|
|
17
17
|
--text-4xl:2.25rem;
|
|
18
18
|
--text-5xl:3rem;
|
|
19
19
|
--leading-tight:1.2;
|
|
@@ -691,7 +691,12 @@ img,svg { display:block; }
|
|
|
691
691
|
espaço normal — degrada, não quebra. Nenhuma das nove referências usa isto: medido,
|
|
692
692
|
`grep -ri safe-area-inset Referencia/` = 0. Veio de pesquisa, pelo BUILDING.md §2
|
|
693
693
|
passo 4. */
|
|
694
|
-
|
|
694
|
+
/* A folga do sistema fica POR FORA da pilula: `margin-bottom`, nao `padding-bottom`. Conserto de
|
|
695
|
+
19/09/2026, medido em Android com os tres botoes — como recheio, os ~48 pontos da faixa do
|
|
696
|
+
sistema faziam a pilula crescer para baixo e a barriga dela ficava atras dos botoes. A borda de
|
|
697
|
+
baixo agora fica `--space-4` acima da area do sistema, em qualquer aparelho.
|
|
698
|
+
A variante `edge` reverte isto mais abaixo, e la o recheio e' o certo. */
|
|
699
|
+
.bottom-nav { --bottomnav-ring:2rem; --bottomnav-surface:var(--card); position:sticky; bottom:0; z-index:var(--z-sticky); display:flex; gap:var(--space-1); margin:var(--space-4); margin-bottom:calc(var(--space-4) + env(safe-area-inset-bottom)); padding:var(--space-1); border:1px solid var(--border); border-radius:var(--radius-control); background:var(--card); color:var(--card-foreground); box-shadow:var(--shadow-md); }
|
|
695
700
|
/* `--control-h-lg` e não `--control-h-md`: alvo de toque. O md dá 36px em comfortable e
|
|
696
701
|
o alvo confortável de dedo é maior — com o recuo, o item renderiza acima de 44px. */
|
|
697
702
|
.bottom-nav-item { flex:1; min-width:0; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:var(--space-1); min-height:var(--control-h-lg); padding:var(--space-1); border:0; border-radius:var(--radius-control); background:transparent; color:var(--muted-foreground); font:inherit; font-size:var(--text-xs); text-align:center; text-decoration:none; cursor:pointer; }
|
|
@@ -778,7 +783,9 @@ img,svg { display:block; }
|
|
|
778
783
|
|
|
779
784
|
`--bottomnav-ring` é a moldura do ícone quando o indicador é redondo. Válvula no idioma do
|
|
780
785
|
`--chart-h` e do `--datagrid-max-h`: quem hospeda decide, o componente não vira prop nova. */
|
|
781
|
-
|
|
786
|
+
/* `edge` encosta na borda, entao a folga do sistema volta a ser RECHEIO — por fora ela deixaria
|
|
787
|
+
uma faixa de fundo entre a barra e o pe' da tela. `max` e nao soma, como sempre foi. */
|
|
788
|
+
.bottom-nav-edge { --bottomnav-surface:var(--background); margin:0; padding-inline:0; padding-bottom:max(var(--space-1),env(safe-area-inset-bottom)); border-width:1px 0 0; border-radius:0; background:var(--background); box-shadow:none; }
|
|
782
789
|
/* `--primary-emphasis` e não `--primary`: sem fundo, a marca vira TEXTO, e o amarelo puro
|
|
783
790
|
sobre o claro não se lê. É o mesmo token que o `.badge-primary` já usa por essa razão. */
|
|
784
791
|
.bottom-nav-ind-none .bottom-nav-item[aria-current] { color:var(--primary-emphasis); }
|
|
@@ -2035,8 +2042,15 @@ img,svg { display:block; }
|
|
|
2035
2042
|
/* `--menu-px` existe porque o RÓTULO DE GRUPO tem de alinhar com o texto dos itens, e o número
|
|
2036
2043
|
estava escrito duas vezes. Uma relação entre duas regras não se mantém repetindo a constante:
|
|
2037
2044
|
quem mudar o recuo do item mudaria o alinhamento do rótulo sem perceber. */
|
|
2038
|
-
|
|
2039
|
-
|
|
2045
|
+
/* O RAIO DA LINHA DO MENU SAI DA CONTA DA CASA (C-09, 23/09/2026 — decidido pelo Victor: 18px).
|
|
2046
|
+
O item tinha `--radius-sm` cravado (8px) dentro de um painel de 16px com 6px de respiro: nem a
|
|
2047
|
+
conta (16 − 6 = 10) ele seguia. Ele comparou 8, 10 e 18 no popup real e escolheu 18 — que é
|
|
2048
|
+
exatamente o que a conta já dá na `.sidebar-item` e na `.nav-list-row` (22 − 4). Para o 18
|
|
2049
|
+
continuar sendo CONTA e não número, o painel passa a ter as medidas da lateral: raio de cartão
|
|
2050
|
+
e `--space-1` de respiro. Vale para toda lista que usa `.menu`: Combobox, MultiCombobox,
|
|
2051
|
+
DropdownMenu, ContextMenu, Menubar e a lista da CommandPalette. */
|
|
2052
|
+
.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); }
|
|
2053
|
+
.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; }
|
|
2040
2054
|
.menu-item[data-highlighted],.menu-item:hover:not([data-disabled]) { background:var(--surface-3); outline:none; }
|
|
2041
2055
|
.menu-item[data-disabled] { opacity:.5; cursor:not-allowed; }
|
|
2042
2056
|
/* CommandPalette (M6): a lista dentro da paleta. Reusa `.menu` e `.menu-item` — a paleta nao
|
|
@@ -2095,11 +2109,21 @@ img,svg { display:block; }
|
|
|
2095
2109
|
/* No lg os dois botões da direita sobem para md, então o reservado sobe junto (G-FORM-01). */
|
|
2096
2110
|
.combobox-group .input-lg { padding-inline-end:calc(var(--control-h-md) * 2 + var(--space-3)); }
|
|
2097
2111
|
.combobox-actions { position:absolute; inset-inline-end:5px; display:flex; align-items:center; gap:2px; }
|
|
2112
|
+
/* O gatilho do `Select` é um <button> vestido da pele `.select`: a cápsula, a seta e o degrau de
|
|
2113
|
+
tamanho são os de sempre. O que o botão traz do navegador e o <select> não tinha é o texto
|
|
2114
|
+
centralizado; e o valor longo termina em "…" em vez de passar por baixo da seta. */
|
|
2115
|
+
.select-trigger { display:flex; align-items:center; text-align:start; cursor:pointer; }
|
|
2116
|
+
.select-trigger:disabled,.select-trigger[data-disabled] { cursor:not-allowed; }
|
|
2117
|
+
.select-value { flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
|
|
2118
|
+
.select-value[data-placeholder] { color:var(--muted-foreground); }
|
|
2098
2119
|
.combobox-popup { inline-size:var(--anchor-width); min-inline-size:0; max-inline-size:none; max-block-size:min(320px,var(--available-height)); overflow-y:auto; overscroll-behavior:contain; }
|
|
2099
2120
|
.combobox-empty { padding:12px 10px; color:var(--muted-foreground); font-size:var(--text-sm); }
|
|
2100
2121
|
.combobox-empty:empty { display:none; }
|
|
2101
2122
|
.combobox-item { display:grid; grid-template-columns:16px minmax(0,1fr); gap:8px; align-items:center; }
|
|
2102
2123
|
.combobox-check { display:inline-flex; color:var(--primary); }
|
|
2124
|
+
/* A-01: o texto vai SEMPRE para a segunda coluna, mesmo em HTML escrito à mão sem o invólucro do
|
|
2125
|
+
check — é quem monta a lista sem o React que ficaria de novo com o rótulo na coluna de 16px. */
|
|
2126
|
+
.combobox-item > :last-child { grid-column:2; }
|
|
2103
2127
|
/* MultiCombobox (Fase 4) — chips de multi-seleção + grupos. Espaçamento novo tokenizado. */
|
|
2104
2128
|
.combobox-multi { display:flex; align-items:center; gap:var(--space-2); width:100%; min-width:0; min-height:var(--control-h-md); padding:var(--space-1) var(--space-2); background:var(--field-bg); border:1px solid var(--border-strong); border-radius:var(--radius-control); transition:border-color var(--duration-fast); }
|
|
2105
2129
|
.combobox-multi:hover { border-color:var(--border); }
|
package/dist/aurea.js
CHANGED
|
@@ -174,6 +174,36 @@
|
|
|
174
174
|
}
|
|
175
175
|
document.addEventListener("toggle", focoDaGaveta, true);
|
|
176
176
|
|
|
177
|
+
// ── Gaveta de navegação: o FECHAMENTO (A-06 e A-07, 23/09/2026) ─────────────────────────
|
|
178
|
+
// A gaveta abria por popover e nada a fechava por código — só Escape e clique fora. Faltavam os
|
|
179
|
+
// dois gatilhos que o uso real dispara primeiro, e os dois têm gêmeo no `@aurea-uds/react`
|
|
180
|
+
// (`Sidebar` e `AppShell`): este runtime serve a página sem React, aquele serve quem instala só
|
|
181
|
+
// o pacote de componentes. Rodar os dois é inofensivo — o segundo encontra a gaveta já fechada.
|
|
182
|
+
//
|
|
183
|
+
// 1. Escolher um item fecha. A página mudou por baixo; a gaveta na frente dela esconde a mudança.
|
|
184
|
+
function estaAberta(gaveta) {
|
|
185
|
+
try { return gaveta.matches(":popover-open"); } catch (_) { return false; } // motor sem popover
|
|
186
|
+
}
|
|
187
|
+
document.addEventListener("click", function (event) {
|
|
188
|
+
if (event.defaultPrevented || !event.target || !event.target.closest) return;
|
|
189
|
+
var alvo = event.target.closest("a[href], .sidebar-item");
|
|
190
|
+
var gaveta = alvo && alvo.closest(".sidebar[popover]");
|
|
191
|
+
if (gaveta && estaAberta(gaveta)) gaveta.hidePopover();
|
|
192
|
+
});
|
|
193
|
+
// 2. Subir para o desktop fecha. O top layer é estado do DOM, e nenhuma media query tira um
|
|
194
|
+
// elemento de lá: sem isto a gaveta ficava flutuando, sem véu, e o botão que a fecharia sumia.
|
|
195
|
+
// 1024 é o `--breakpoint-lg`, o mesmo corte do `@media (max-width:1023px)` acima; o
|
|
196
|
+
// `consumidores-lote1.test` reprova se os dois divergirem.
|
|
197
|
+
if (typeof window.matchMedia === "function") {
|
|
198
|
+
var desktop = window.matchMedia("(min-width: 1024px)");
|
|
199
|
+
var aoSubir = function (e) {
|
|
200
|
+
if (!e.matches) return;
|
|
201
|
+
var abertas = document.querySelectorAll(".sidebar[popover]");
|
|
202
|
+
for (var g = 0; g < abertas.length; g++) if (estaAberta(abertas[g])) abertas[g].hidePopover();
|
|
203
|
+
};
|
|
204
|
+
if (desktop.addEventListener) desktop.addEventListener("change", aoSubir);
|
|
205
|
+
}
|
|
206
|
+
|
|
177
207
|
function toastStack() {
|
|
178
208
|
var stack = document.querySelector(".toast-stack");
|
|
179
209
|
if (!stack) {
|