@aurea-uds/core 0.54.1 → 0.59.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 +113 -16
- package/package.json +1 -1
package/dist/aurea.css
CHANGED
|
@@ -381,7 +381,9 @@
|
|
|
381
381
|
--field-bg:oklch(0.19 0.02 250);
|
|
382
382
|
--ring:oklch(0.72 0.19 48);
|
|
383
383
|
--focus:oklch(0.72 0.19 48);
|
|
384
|
-
--focus-strong:oklch(0.
|
|
384
|
+
--focus-strong:oklch(0.72 0.19 48);
|
|
385
|
+
--link:oklch(0.72 0.19 48);
|
|
386
|
+
--link-hover:oklch(0.78 0.17 50);
|
|
385
387
|
--selection:oklch(0.32 0.08 50);
|
|
386
388
|
--control-selected:oklch(0.72 0.19 48);
|
|
387
389
|
--control-selected-foreground:oklch(1 0 0);
|
|
@@ -452,7 +454,7 @@
|
|
|
452
454
|
--field-bg:oklch(1 0 0);
|
|
453
455
|
--ring:oklch(0.682 0.197 44.5);
|
|
454
456
|
--focus:oklch(0.682 0.197 44.5);
|
|
455
|
-
--focus-strong
|
|
457
|
+
--focus-strong:#ff6600;
|
|
456
458
|
--selection:oklch(0.96 0.04 60);
|
|
457
459
|
--control-selected:oklch(0.682 0.197 44.5);
|
|
458
460
|
--control-selected-foreground:oklch(1 0 0);
|
|
@@ -484,8 +486,8 @@
|
|
|
484
486
|
--warning-bg:oklch(0.95 0.06 80);
|
|
485
487
|
--danger-bg:oklch(0.95 0.05 25);
|
|
486
488
|
--info-bg:oklch(0.95 0.04 235);
|
|
487
|
-
--link:oklch(0.
|
|
488
|
-
--link-hover:oklch(0.
|
|
489
|
+
--link:oklch(0.682 0.197 44.5);
|
|
490
|
+
--link-hover:oklch(0.63 0.197 44.5);
|
|
489
491
|
--brand-yellow-ink:#242424;
|
|
490
492
|
--warning-foreground:#242424;
|
|
491
493
|
--control-thumb:var(--primary-mark);
|
|
@@ -1096,6 +1098,15 @@
|
|
|
1096
1098
|
--card-pad:1.25rem;
|
|
1097
1099
|
--section-gap:2rem;
|
|
1098
1100
|
}
|
|
1101
|
+
[data-text="lg"]{
|
|
1102
|
+
--text-xs:0.875rem;
|
|
1103
|
+
--text-sm:1rem;
|
|
1104
|
+
--text-base:1.125rem;
|
|
1105
|
+
--text-lg:1.25rem;
|
|
1106
|
+
--text-xl:1.375rem;
|
|
1107
|
+
--text-2xl:1.625rem;
|
|
1108
|
+
--control-h-md:var(--target-min);
|
|
1109
|
+
}
|
|
1099
1110
|
/* Aurea core — component styles. Built with @aurea-uds/tokens into dist/aurea.css. Load @aurea-uds/fonts/css for Inter, Sora and IBM Plex Mono (ADR-0077). */
|
|
1100
1111
|
/* ========================================================================== */
|
|
1101
1112
|
/* 02. RESET, ACESSIBILIDADE E BASE */
|
|
@@ -2623,13 +2634,16 @@ img,svg { display:block; }
|
|
|
2623
2634
|
que um grupo vertical tem de não ter. */
|
|
2624
2635
|
.btn-group-vertical { flex-direction:column; align-items:stretch; --btn-group-h:0; --btn-group-v:var(--radius-full); --btn-group-sep-i:25%; --btn-group-sep-b:0; --btn-group-sep-w:50%; --btn-group-sep-h:var(--border-width); --btn-group-bi:var(--border-width); --btn-group-bb:0; }
|
|
2625
2636
|
:is(.btn-group:not(.btn-group-detached),.toggle-group:not(.toggle-group-detached)) > .btn { position:relative; border-radius:0; }
|
|
2626
|
-
|
|
2627
|
-
|
|
2628
|
-
|
|
2629
|
-
:is(.btn-group:not(.btn-group-detached),.toggle-group:not(.toggle-group-detached)) > .btn
|
|
2637
|
+
/* O PRIMEIRO e o ÚLTIMO BOTÃO, e não o primeiro e o último filho (o Victor, 04/11/2026: "quando clico botão fica quadrado"): com
|
|
2638
|
+
um menu aberto, o motor dele põe marcadores de foco invisíveis ao lado do gatilho, e a setinha de um botão dividido deixava
|
|
2639
|
+
de ser o último filho — perdia a ponta redonda e a linha do meio. `:where()` mantém a força de antes. */
|
|
2640
|
+
:is(.btn-group:not(.btn-group-detached),.toggle-group:not(.toggle-group-detached)) > .btn:where(:not(.btn ~ .btn)) { border-start-start-radius:var(--radius-full); border-end-start-radius:var(--btn-group-h); border-start-end-radius:var(--btn-group-v); }
|
|
2641
|
+
:is(.btn-group:not(.btn-group-detached),.toggle-group:not(.toggle-group-detached)) > .btn:where(:not(:has(~ .btn))) { border-end-end-radius:var(--radius-full); border-start-end-radius:var(--btn-group-h); border-end-start-radius:var(--btn-group-v); }
|
|
2642
|
+
:is(.btn-group:not(.btn-group-detached),.toggle-group:not(.toggle-group-detached)) > .btn:where(:not(.btn ~ .btn):not(:has(~ .btn))) { border-radius:var(--radius-full); }
|
|
2643
|
+
:is(.btn-group:not(.btn-group-detached),.toggle-group:not(.toggle-group-detached)) > .btn ~ .btn::before { content:""; position:absolute; inset-inline-start:var(--btn-group-sep-i); inset-block-start:var(--btn-group-sep-b); inline-size:var(--btn-group-sep-w); block-size:var(--btn-group-sep-h); border-radius:var(--radius-full); background:currentColor; opacity:.15; pointer-events:none; }
|
|
2630
2644
|
:is(.btn-group:not(.btn-group-detached),.toggle-group:not(.toggle-group-detached)) > .btn:active:not(:disabled) { transform:none; }
|
|
2631
|
-
:is(.btn-group:not(.btn-group-detached),.toggle-group:not(.toggle-group-detached)) > .btn-outline:
|
|
2632
|
-
:is(.btn-group:not(.btn-group-detached),.toggle-group:not(.toggle-group-detached)) > .btn-outline:
|
|
2645
|
+
:is(.btn-group:not(.btn-group-detached),.toggle-group:not(.toggle-group-detached)) > .btn-outline:where(:has(~ .btn)) { border-inline-end-width:var(--btn-group-bi); border-block-end-width:var(--btn-group-bb); }
|
|
2646
|
+
:is(.btn-group:not(.btn-group-detached),.toggle-group:not(.toggle-group-detached)) > .btn-outline:where(.btn ~ .btn) { border-inline-start-width:var(--btn-group-bi); border-block-start-width:var(--btn-group-bb); }
|
|
2633
2647
|
/* o anel de foco de um botão do meio fica por cima dos vizinhos, e não por baixo */
|
|
2634
2648
|
:is(.btn-group,.toggle-group) > .btn:focus-visible { z-index:1; }
|
|
2635
2649
|
.btn-group-detached,.toggle-group-detached { flex-wrap:wrap; gap:var(--space-1); }
|
|
@@ -3147,8 +3161,8 @@ img,svg { display:block; }
|
|
|
3147
3161
|
.slider-color .slider-thumb { box-sizing:border-box; inline-size:var(--space-4); block-size:var(--space-4); align-self:center; border:0; background:var(--color-checker) center/var(--space-2) var(--space-2); box-shadow:inset 0 0 0 var(--space-4) var(--slider-thumb-color,var(--primary)), var(--shadow-md); forced-color-adjust:none; }
|
|
3148
3162
|
.slider-color .slider-thumb::after { content:none; }
|
|
3149
3163
|
.slider-color[data-orientation="vertical"] .slider-thumb { inline-size:var(--space-4); block-size:var(--space-4); }
|
|
3150
|
-
/* COLORAREA (0.32.0, ADR-0069) — a área de cor. A pintura (o gradiente
|
|
3151
|
-
variável que o componente põe (`--color-area-fill`)
|
|
3164
|
+
/* COLORAREA (0.32.0, ADR-0069) — a área de cor. A pintura (o gradiente) chega pela
|
|
3165
|
+
variável que o componente põe (`--color-area-fill`).
|
|
3152
3166
|
Medidas da referência, lidas no CSS publicado dela (3.2.6): quadrada, até 224 de largura, canto 16; o pino de
|
|
3153
3167
|
16 que cresce para 20 ao arrastar, com o anel de 3. 224 não tem token: sai de dois `--space-24` e um `--space-8`.
|
|
3154
3168
|
O anel é BRANCO nos dois temas, e não um token de tema: ele fica sobre a cor escolhida, e não sobre a página.
|
|
@@ -3648,6 +3662,17 @@ img,svg { display:block; }
|
|
|
3648
3662
|
.tabs-secondary .tab { border-radius:0; }
|
|
3649
3663
|
.tabs-secondary .tab.active,.tabs-secondary .tab[data-active] { background:transparent; box-shadow:none; color:var(--foreground); }
|
|
3650
3664
|
.tabs-secondary .tab[data-active]::after { display:block; }
|
|
3665
|
+
/* O ESCOLHIDO DESLIZA (S-04, 05/11/2026): no `SegmentedControl` e no `Tabs` ele PULAVA, porque o fundo do escolhido é
|
|
3666
|
+
pintado no próprio item. A referência tem uma peça separada atrás dos itens, que anda. Aqui o desenho do escolhido NÃO
|
|
3667
|
+
muda (as sete cores do segmento, as treze marcas e os dois temas continuam nas regras de sempre): quando a escolha
|
|
3668
|
+
troca, o gancho `useDeslize` copia a pintura do NOVO escolhido para uma peça de passagem (`.selection-indicator`, atrás
|
|
3669
|
+
dos itens), esconde a do item e a leva da posição de antes até a nova — a cápsula, a sombra, o aro e o fio de baixo,
|
|
3670
|
+
que na aba secundária é o próprio indicador. No fim, a peça sai e o item volta a se pintar. Quem pede "reduzir
|
|
3671
|
+
movimento" vê a troca de uma vez, como antes. A letra troca de cor no mesmo passo, em vez de saltar. */
|
|
3672
|
+
.segmented :is(button,a),.tab { transition:color var(--duration-base) var(--ease-standard); }
|
|
3673
|
+
.selection-indicator { position:absolute; z-index:-1; pointer-events:none; }
|
|
3674
|
+
.selection-indicator > span { position:absolute; }
|
|
3675
|
+
:is(.segmented :is(button,a),.tab)[data-sliding]::after { visibility:hidden; }
|
|
3651
3676
|
/* `panel="plain"` (MNT-05 e C9, 06/10/2026): o painel sem caixa, como o painel de abas da
|
|
3652
3677
|
referência. Sem recheio dos lados — o conteúdo começa na linha do que está fora do `Tabs` —, e o
|
|
3653
3678
|
espaço de cima é o mesmo `space-3` do painel do nativo. Na vertical, quem separa é o `gap` da
|
|
@@ -3787,6 +3812,13 @@ img,svg { display:block; }
|
|
|
3787
3812
|
.table tbody tr:last-child > :last-child,.table-wrap tbody tr:last-child > :last-child { border-end-end-radius:var(--table-cell-r); }
|
|
3788
3813
|
.table tr:last-child td,.table-wrap tr:last-child td { border-bottom:0; }
|
|
3789
3814
|
@media (hover:hover) { .table tbody tr:hover > :is(td,th),.table-wrap tbody tr:hover > :is(td,th) { background:color-mix(in oklab,var(--card) 40%,var(--surface-2)); } }
|
|
3815
|
+
/* A LINHA ENTRE AS FILEIRAS (MNT-38, `dividers` na `Table` e na `DataGrid` — a forma "A", aprovada pela bancada em 05/11/2026,
|
|
3816
|
+
*"Pode, sem a Ember"*): a moldura de sempre e uma linha clara entre as fileiras do corpo, menos depois da última, como a
|
|
3817
|
+
referência (a linha de baixo da célula, a 50% do separador). A borda de baixo da célula já existe, transparente (ADR-0072);
|
|
3818
|
+
a variação só lhe dá cor — o texto a 10%, a mesma linha clara do cartão de contorno —, e nenhuma medida muda. É uma exceção
|
|
3819
|
+
NOMEADA ao sem linha: só com a escolha do app, e só esta regra (`tests/unit/sem-linha.test.tsx`). A Ember fica sem ela. Sem
|
|
3820
|
+
efeito no arranjo `rows`, onde cada fileira já é uma cápsula solta. */
|
|
3821
|
+
:is(.table.table-dividers:not(.table-rows),.datagrid-dividers .table-wrap table) tbody tr:not(:last-child) > :is(td,th):where(:not([data-brand="ember"] *)) { border-bottom-color:color-mix(in oklab,var(--foreground) 10%,transparent); }
|
|
3790
3822
|
/* AS LINHAS EM CÁPSULA (`Table variant="rows"`, o site B — a lista de membros da página inicial, aprovada pela bancada em
|
|
3791
3823
|
01/11/2026, o D-7.6): sem a caixa em volta; cada linha é uma cápsula de 54 (`--target-min` + 10), 4 entre elas; com o
|
|
3792
3824
|
mouse o `--fill-1`; a linha com `data-selected` (a que o app marcou), o amarelo a 14% (18% com o mouse). O cabeçalho em
|
|
@@ -3834,6 +3866,9 @@ img,svg { display:block; }
|
|
|
3834
3866
|
.table td[data-best],.table-wrap td[data-best] { font-weight:var(--weight-semibold); }
|
|
3835
3867
|
/* `fit`: sem o mínimo de 720 — a comparação de dois itens cabe num celular de 360. */
|
|
3836
3868
|
.table.table-fit { min-width:0; }
|
|
3869
|
+
/* E na `DataGrid` (S-02, *"Pode, com fit"*, 05/11/2026): o mesmo `fit` — as tabelas do site, numa coluna de texto de ~680,
|
|
3870
|
+
passavam do mínimo de 720 e saíam cortadas, rolando de lado. */
|
|
3871
|
+
.datagrid-fit .table-wrap table { min-width:0; }
|
|
3837
3872
|
/* `differencesOnly`: o "Só diferenças" esconde as linhas que o site marcou como iguais. */
|
|
3838
3873
|
.table-differences-only tr[data-same] { display:none; }
|
|
3839
3874
|
/* `stickyHeader`: o mesmo mecanismo do `DataGrid` (F6, mais abaixo). A caixa é o contêiner de
|
|
@@ -4241,8 +4276,7 @@ button.tag-main { cursor:pointer; }
|
|
|
4241
4276
|
/* A CAIXA EMPILHADA (`CodeBlock previewLayout="stacked"`, o site B, 02/11/2026 — o Victor: "preciso que seja fiel a
|
|
4242
4277
|
referencia", e "Com degradê"; ADR-0089): a peça em cima e o código embaixo, sem a chave Prévia | Código, nas medidas da
|
|
4243
4278
|
referência — a peça em 350 (3 x 96 + 48 + 12 + 2) com recheio de 40, no fundo da página; o código no cartão, 16 em cima,
|
|
4244
|
-
12 dos lados e 14 embaixo. Mais de 5 linhas: recolhido em 150 (96 + 48 + 4 + 2), sumindo num
|
|
4245
|
-
regra sem gradiente, só nesta regra — o check 4 cobra), com o "Expand code" (32, letra 12) a 8 do fundo; aberto, o código
|
|
4279
|
+
12 dos lados e 14 embaixo. Mais de 5 linhas: recolhido em 150 (96 + 48 + 4 + 2), sumindo num DEGRADÊ, com o "Expand code" (32, letra 12) a 8 do fundo; aberto, o código
|
|
4246
4280
|
inteiro e o "Collapse code" embaixo dele. Sem linha: a peça e o código se separam pelo fundo. */
|
|
4247
4281
|
.demo.demo-stacked { display:flex; flex-direction:column; min-block-size:0; padding:0; overflow:hidden; }
|
|
4248
4282
|
.demo.demo-stacked > .demo-panel { flex:none; }
|
|
@@ -4682,6 +4716,14 @@ button.tag-main { cursor:pointer; }
|
|
|
4682
4716
|
.sortable-item[data-grabbed] { border-color:transparent; box-shadow:var(--shadow-lg); }
|
|
4683
4717
|
.sortable-handle { display:grid; place-items:center; min-width:var(--space-6); min-height:var(--space-6); padding:0; border:0; border-radius:var(--radius-sm); background:transparent; color:var(--muted-foreground); cursor:grab; touch-action:none; }
|
|
4684
4718
|
.sortable-handle[aria-pressed="true"] { cursor:grabbing; color:var(--primary); }
|
|
4719
|
+
/* O ARRASTO QUE ANDA (S-05, 05/11/2026): era "meio estático" — a linha pulava de casa em casa e os vizinhos pulavam junto.
|
|
4720
|
+
Agora a linha pega SEGUE o ponteiro (o `useReorder` a desloca com `translate`, sem transição: é a mão que move) e os
|
|
4721
|
+
vizinhos deslizam para abrir o lugar (o mesmo gancho, pela animação do navegador). A linha pega fica POR CIMA das outras
|
|
4722
|
+
(`z-index`) — e o fundo dela é o do cartão, opaco, então o texto de baixo não aparece através. A sombra de erguer entra
|
|
4723
|
+
e sai em vez de aparecer de uma vez. Quem pede "reduzir movimento": a linha continua seguindo o ponteiro (é
|
|
4724
|
+
manipulação direta, não animação), e os vizinhos trocam de lugar sem deslizar. */
|
|
4725
|
+
:is(.sortable-item,.block-item) { transition:box-shadow var(--duration-base) var(--ease-standard); }
|
|
4726
|
+
:is(.sortable-item,.block-item)[data-dragging] { position:relative; z-index:1; cursor:grabbing; }
|
|
4685
4727
|
.sortable-label { min-width:0; }
|
|
4686
4728
|
|
|
4687
4729
|
/* EDITOR POR BLOCOS (PLANO-1.0, item N1). A Aurea é dona da MOLDURA; o texto rico de dentro é do
|
|
@@ -4902,6 +4944,14 @@ button.tag-main { cursor:pointer; }
|
|
|
4902
4944
|
fica preso, então não declaramos modalidade que não entregamos. */
|
|
4903
4945
|
.command-overlay { position:fixed; inset:0; z-index:var(--z-modal); display:grid; place-items:start center; padding:var(--space-16) var(--space-5) var(--space-5); background:var(--overlay); backdrop-filter:blur(5px); }
|
|
4904
4946
|
.command-palette { display:grid; gap:var(--space-2); width:min(680px,100%); max-height:100%; overflow:auto; padding:var(--space-4); border:1px solid transparent; border-radius:var(--radius-card); background:var(--popover); color:var(--popover-foreground); box-shadow:var(--shadow-lg); }
|
|
4947
|
+
/* A PALETA ENTRA E SAI (S-04, 05/11/2026), como o `Dialog`: o fundo esmaece e a caixa cresce um pouco, pelos estados
|
|
4948
|
+
de abrir e fechar que o motor marca na moldura (`Viewport`) e na caixa (`Popup`). Fechar é mais rápido que abrir. */
|
|
4949
|
+
.command-overlay { transition:opacity var(--duration-slow) var(--ease-standard); }
|
|
4950
|
+
.command-overlay[data-starting-style],.command-overlay[data-ending-style] { opacity:0; }
|
|
4951
|
+
.command-overlay[data-ending-style] { transition-duration:var(--duration-fast); }
|
|
4952
|
+
.command-palette { transition:scale var(--duration-slow) var(--ease-emphasized); }
|
|
4953
|
+
.command-palette[data-starting-style],.command-palette[data-ending-style] { scale:.95; }
|
|
4954
|
+
.command-palette[data-ending-style] { transition-duration:var(--duration-fast); }
|
|
4905
4955
|
/* Camadas flutuantes (Base UI): tooltip, popover, menu. z-modal para funcionarem sobre diálogos; empilhamento mútuo pela ordem do portal no DOM. */
|
|
4906
4956
|
/* 0.32.0, a dica da referência: recheio de 8, letra de 12/16, até 320 de largura, o fundo das janelas
|
|
4907
4957
|
(era o fundo afundado), e a palavra longa quebra onde precisar. O canto continua o 10 da Aurea (o
|
|
@@ -4935,7 +4985,25 @@ button.tag-main { cursor:pointer; }
|
|
|
4935
4985
|
e `--space-1` de respiro. Vale para toda lista que usa `.menu`: Combobox, MultiCombobox,
|
|
4936
4986
|
DropdownMenu, ContextMenu, Menubar e a lista da CommandPalette. */
|
|
4937
4987
|
.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 transparent; border-radius:var(--radius-card); background:var(--popover); color:var(--popover-foreground); box-shadow:var(--shadow-lg); }
|
|
4988
|
+
/* O MENU ENTRA E SAI (S-04, 05/11/2026): aparecia de uma vez. Como o `Popover` e a dica daqui, e como a lista da
|
|
4989
|
+
referência: esmaece e cresce um pouco a partir do lado do gatilho (`--transform-origin`, que o motor publica), pelos
|
|
4990
|
+
estados de abrir e fechar que o motor marca (`data-starting-style`/`data-ending-style`). Vale para toda lista `.menu`
|
|
4991
|
+
que o motor abre: `DropdownMenu`, `ContextMenu`, `Menubar`, o submenu, o `Select`, o `Combobox`. A lista de DENTRO da
|
|
4992
|
+
`CommandPalette` (`.command-list`) não abre sozinha — quem entra é a janela, abaixo. Quem pede "reduzir movimento" não
|
|
4993
|
+
vê movimento: a regra global do fim da folha zera a duração. */
|
|
4994
|
+
.menu { transform-origin:var(--transform-origin,center); transition:opacity var(--duration-base) var(--ease-standard),scale var(--duration-base) var(--ease-standard); }
|
|
4995
|
+
.menu[data-starting-style],.menu[data-ending-style] { opacity:0; scale:.95; }
|
|
4996
|
+
.menu[data-ending-style] { transition-duration:var(--duration-fast); }
|
|
4938
4997
|
.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; text-decoration:none; cursor:pointer; }
|
|
4998
|
+
/* O ITEM COM EXPLICAÇÃO e o ÍCONE NA PONTA (0.55.0, o Victor, 04/11/2026: "pegue o código" da referência): a anatomia do
|
|
4999
|
+
item dela — o nome e, embaixo, a explicação na letra pequena e na cor de apoio; o recheio de 6 em cima e embaixo; o ícone
|
|
5000
|
+
da ponta (o "abre fora" de um link) empurrado para o fim. Só com `description` ou `trailingIcon`: sem eles, o item é o
|
|
5001
|
+
de sempre. */
|
|
5002
|
+
.menu-item:has(> .menu-item-text) { padding-block:calc(var(--space-1) + var(--space-05)); }
|
|
5003
|
+
.menu-item-text { display:grid; gap:var(--space-05); min-inline-size:0; }
|
|
5004
|
+
.menu-item-description { font-size:var(--text-xs); line-height:var(--leading-normal); font-weight:var(--weight-regular); color:var(--muted-foreground);
|
|
5005
|
+
overflow-wrap:break-word; }
|
|
5006
|
+
.menu-item > .menu-item-trailing { margin-inline-start:auto; color:var(--muted-foreground); }
|
|
4939
5007
|
.menu-item[data-highlighted],.menu-item:hover:not([data-disabled]) { background:var(--surface-3); }
|
|
4940
5008
|
/* Foco de TECLADO no item: a linha de foco, por dentro, porque a lista recorta o que passa da borda
|
|
4941
5009
|
(B-09 e a ordem de 25/09/2026, "a referência sempre primeiro": o item de menu dela
|
|
@@ -5316,6 +5384,10 @@ th[aria-sort] .datagrid-sort-icon { color:var(--primary); }
|
|
|
5316
5384
|
provadas. */
|
|
5317
5385
|
.datagrid-sticky thead th { position:sticky; inset-block-start:0; z-index:1; }
|
|
5318
5386
|
.datagrid-sticky .datagrid-filters th { inset-block-start:var(--table-head-h); }
|
|
5387
|
+
/* S-10 (o MNT-40), `stickyHeader="page"`: o cabeçalho preso ao topo da PÁGINA, sem caixa de rolagem própria — a caixa
|
|
5388
|
+
continua sem teto (uma rolagem só, a da página) e o `DataGrid` move as células do cabeçalho com `translate` enquanto a
|
|
5389
|
+
página rola. Aqui só a camada: as fileiras passam POR BAIXO do cabeçalho, que já tem o fundo da moldura. */
|
|
5390
|
+
.datagrid-sticky-page thead th { z-index:1; }
|
|
5319
5391
|
|
|
5320
5392
|
/* F7: a alça de redimensionar. Fina, colada no fim da célula e da altura toda —
|
|
5321
5393
|
alvo estreito de propósito, porque largo demais rouba o clique do cabeçalho
|
|
@@ -6074,8 +6146,7 @@ button.graph-node-body { cursor:pointer; }
|
|
|
6074
6146
|
variações saíam todas iguais: "Sim, como as outras"). O padrão dela, sem estilo escolhido, continua congelado — as
|
|
6075
6147
|
regras do passo A continuam sem alcançá-la. Por isso o botão ligado dela, com um estilo escolhido, ganha aqui a
|
|
6076
6148
|
pintura que o passo A dá às outras marcas (logo abaixo do 2.8).
|
|
6077
|
-
|
|
6078
|
-
depois da escolha de cor da ADR-0069) e os AROS dos estilos de aro (o desenho que dá nome ao estilo — exceção nomeada à
|
|
6149
|
+
A exceção desta seção, registrada na ADR-0084: os AROS dos estilos de aro (o desenho que dá nome ao estilo — exceção nomeada à
|
|
6079
6150
|
ADR-0072, só quando o app escolhe o estilo). */
|
|
6080
6151
|
|
|
6081
6152
|
/* 2.8 · O BOTÃO LIGADO (Toggle, ToggleGroup, ToolbarButton): o C, amarelo, é o padrão desde a 0.45.0 (a regra do passo A
|
|
@@ -6206,6 +6277,32 @@ button.graph-node-body { cursor:pointer; }
|
|
|
6206
6277
|
:is([data-ring="true"] :is(.badge:not(.badge-solid),.btn-soft,.btn-outline,.btn-primary-outline,.btn-danger-outline):not([data-ring]),:is(.badge:not(.badge-solid),.btn-soft,.btn-outline,.btn-primary-outline,.btn-danger-outline)[data-ring="true"]) {
|
|
6207
6278
|
box-shadow:inset 0 0 0 var(--border-width) color-mix(in oklab, var(--ring-tone, currentColor) 30%, transparent); }
|
|
6208
6279
|
|
|
6280
|
+
/* ═══ OS MODOS DE LEITURA (ADR-0090, 04/11/2026) ═══════════════════════════════════════════════════════════════
|
|
6281
|
+
Seção própria, FORA da paleta do passo A: a Ember recebe os dois modos ("Sim, recebe"), e as regras da paleta, não. */
|
|
6282
|
+
/* O ALTO CONTRASTE E O TEXTO GRANDE NO APP INTEIRO (o MNT-30, bloco 3 — ADR-0090, 04/11/2026). O app liga, e não o
|
|
6283
|
+
sistema: `data-contrast="high"` e `data-text="lg"` em qualquer contêiner (a raiz do app inclusive), ou o `highContrast` e
|
|
6284
|
+
o `textSize="lg"` do `AppShell`. As formas que o Victor escolheu no esboço e aprovou na bancada: o contraste "C" e o
|
|
6285
|
+
texto "B". Valem em todas as marcas, a Ember inclusive ("Sim, recebe"); sem o atributo, nada disto existe.
|
|
6286
|
+
O CONTRASTE: o mesmo do "aumentar contraste" do sistema (o contorno de 3:1 nos campos, as marcas na tinta, o foco do
|
|
6287
|
+
campo no `--focus-strong`) e mais: o texto de apoio mais perto do texto, contorno nos cartões, o link sempre sublinhado
|
|
6288
|
+
e o contorno do botão (por dentro, como os aros — nunca borda). São linhas que SÓ este modo acende: exceção nomeada à
|
|
6289
|
+
ADR-0072, como o contorno do `prefers-contrast`. */
|
|
6290
|
+
[data-contrast="high"],[data-contrast="high"] [data-theme] {
|
|
6291
|
+
--muted-foreground:color-mix(in oklab, var(--foreground) 80%, var(--background));
|
|
6292
|
+
--control-thumb:var(--brand-yellow-ink); --control-selected-foreground:var(--brand-yellow-ink); --control-selected-dot:var(--brand-yellow-ink); }
|
|
6293
|
+
[data-contrast="high"] :is(.input,.textarea,.select,.input-group,.combobox-multi,.input-secondary,.textarea-secondary) { border-color:var(--input-strong); }
|
|
6294
|
+
[data-contrast="high"] .input-group > :is(.input,.select,.textarea) { border:0; }
|
|
6295
|
+
[data-contrast="high"] .card { border-color:var(--input-strong); }
|
|
6296
|
+
[data-contrast="high"] :is(a,.link) { text-decoration-line:underline; text-decoration-color:currentColor; text-decoration-thickness:var(--border-width); text-underline-offset:0.2em; }
|
|
6297
|
+
[data-contrast="high"] .btn { box-shadow:inset 0 0 0 var(--border-width) var(--input-strong); }
|
|
6298
|
+
[data-contrast="high"] .btn.btn-primary { box-shadow:inset 0 0 0 var(--border-width) var(--primary-foreground); }
|
|
6299
|
+
[data-contrast="high"] :is(.input,.textarea,.select):focus-visible,
|
|
6300
|
+
[data-contrast="high"] :is(.input-group,.combobox-multi,.command-field):focus-within { outline-color:var(--focus-strong); }
|
|
6301
|
+
/* O TEXTO GRANDE: os tokens do `[data-text="lg"]` (a letra 2 acima, o controle médio a 44) vêm do `aurea.tokens.css`.
|
|
6302
|
+
Aqui só a letra do corpo: o `body` resolve a dele com os tokens de onde ELE está, então um contêiner que liga o modo
|
|
6303
|
+
(o `AppShell`) refaz a conta para o que tem dentro. Na raiz (`<html>`) não: lá o `font-size` mudaria o `rem`. */
|
|
6304
|
+
[data-text="lg"]:not(:root) { font-size:var(--text-sm); }
|
|
6305
|
+
|
|
6209
6306
|
/* >>> camada responsiva — GERADA por scripts/build-responsive-layer.mjs <<< */
|
|
6210
6307
|
/* As variáveis de passo NÃO HERDAM. Ver o comentário de VARIAVEIS no gerador: um ícone dentro
|
|
6211
6308
|
de um botão responsivo herdaria o passo do botão e mudaria de tamanho sozinho. */
|