@aurea-uds/core 0.52.0 → 0.54.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.
- package/dist/aurea.css +355 -10
- package/dist/aurea.js +13 -0
- package/package.json +1 -1
package/dist/aurea.css
CHANGED
|
@@ -243,6 +243,7 @@
|
|
|
243
243
|
--control-thumb:#ffffff;
|
|
244
244
|
--link-mark:rgba(0,0,0,0);
|
|
245
245
|
--link-underline:var(--primary);
|
|
246
|
+
--shadow-sm:0 1px 3px rgba(0,0,0,0.45);
|
|
246
247
|
}
|
|
247
248
|
[data-theme="light"]{
|
|
248
249
|
--background:#f5f5f5;
|
|
@@ -342,6 +343,7 @@
|
|
|
342
343
|
--link-underline:var(--primary);
|
|
343
344
|
--control-thumb:#ffffff;
|
|
344
345
|
--warning-500:#d07612;
|
|
346
|
+
--shadow-sm:0 2px 4px rgba(0,0,0,0.04), 0 1px 2px rgba(0,0,0,0.06), 0 0 1px rgba(0,0,0,0.06);
|
|
345
347
|
}
|
|
346
348
|
[data-brand="ember"][data-theme="dark"],[data-brand="ember"] [data-theme="dark"]{
|
|
347
349
|
--background:oklch(0.16 0.018 250);
|
|
@@ -1552,13 +1554,14 @@ img,svg { display:block; }
|
|
|
1552
1554
|
/* E sem a barra do índice abaixo de 1280: no desenho aprovado o índice só existe na coluna da direita (protótipo). */
|
|
1553
1555
|
.app-shell-docs.app-shell-pill > .docs-toc-bar { display:none; }
|
|
1554
1556
|
/* As colunas ficam a --space-4 das bordas da tela, alinhadas com a pílula (sem isto, abaixo de 1432 a lateral e o índice
|
|
1555
|
-
encostavam na borda — medido a 1280).
|
|
1556
|
-
|
|
1557
|
+
encostavam na borda — medido a 1280). De 768 para cima, e não de 1024 (0.52.1, aprovado pela imagem em 01/11/2026): de
|
|
1558
|
+
768 a 1023 a lateral é coluna, e encostava na borda com a cápsula a 16. */
|
|
1559
|
+
@media (min-width:768px) { .app-shell-docs.app-shell-pill { padding-inline:var(--space-4); } .app-shell-docs.app-shell-pill > .topbar { padding-inline:0; }
|
|
1557
1560
|
/* A lateral com caixa vai até 16 do pé da tela, e não mais (o desenho, medido em 31/10/2026). */
|
|
1558
1561
|
.app-shell-docs.app-shell-pill > .sidebar:not(.app-shell-aside, .sidebar-plain) { block-size:auto; max-block-size:calc(100vh - var(--shell-top) - var(--space-4)); } }
|
|
1559
|
-
/* O conteúdo começa a 18 da pílula, como a lateral (78 + 18 = 96); de
|
|
1560
|
-
bloco; no celular, o bloco fica a 16 das bordas. */
|
|
1561
|
-
@media (min-width:
|
|
1562
|
+
/* O conteúdo começa a 18 da pílula, como a lateral (78 + 18 = 96); de 768 a 1279, sem o índice, ele vai até a borda do
|
|
1563
|
+
bloco, a 28 da lateral; no celular, o bloco fica a 16 das bordas. */
|
|
1564
|
+
@media (min-width:768px) and (max-width:1279px) { .app-shell-docs.app-shell-pill > .content.content { padding:calc(var(--space-4) + var(--space-05)) 0 0 var(--space-7); } }
|
|
1562
1565
|
@media (max-width:767px) { .app-shell-docs.app-shell-pill > .content.content { padding:calc(var(--space-4) + var(--space-05)) var(--space-4) 0; } }
|
|
1563
1566
|
.app-shell-docs > .content > * { max-inline-size:var(--docs-text-width); }
|
|
1564
1567
|
/* O texto a 24 da borda também no celular (o da página da referência a 375 e a 768; com o recheio de sempre do
|
|
@@ -2282,6 +2285,25 @@ img,svg { display:block; }
|
|
|
2282
2285
|
/* `aria-disabled` e NÃO `:disabled` — a razão está escrita ao lado de `.btn:disabled`, medida em
|
|
2283
2286
|
13/08/2026: `:disabled` tira da ordem de foco e quem usa teclado nunca acha a linha. */
|
|
2284
2287
|
.nav-list-row[aria-disabled="true"] { opacity:.45; cursor:not-allowed; }
|
|
2288
|
+
/* A LISTA GRANDE (`NavList size="lg"`, o site B — o menu do celular, aprovado pela bancada em 01/11/2026, o item 10): a linha
|
|
2289
|
+
em cápsula de 56 (o círculo de 40 + 8 em cima e embaixo), 16 entre o círculo e o nome, a letra 18 seminegrito; o ícone de
|
|
2290
|
+
20 num círculo de 40 tingido pela cor de categoria (sem ela, o neutro). A linha ATUAL (`aria-current="page"`, nos dois
|
|
2291
|
+
tamanhos) ganha o fundo `--fill-2`, e o selo dela fica no lugar da seta. Sem `lg`, a lista de sempre. */
|
|
2292
|
+
.nav-list-lg { gap:var(--space-1); }
|
|
2293
|
+
.nav-list-lg .nav-list-row { min-block-size:calc(var(--space-10) + 2 * var(--space-2)); padding:var(--space-2); gap:var(--space-4); border-radius:var(--radius-control);
|
|
2294
|
+
font-size:var(--text-lg); font-weight:var(--weight-semibold); }
|
|
2295
|
+
.nav-list-tile { display:grid; place-items:center; flex:none; inline-size:var(--space-10); block-size:var(--space-10); border-radius:var(--radius-full); background:var(--fill-2); color:var(--foreground); }
|
|
2296
|
+
.nav-list-row .nav-list-tile .icon { inline-size:var(--icon-md); block-size:var(--icon-md); opacity:1; }
|
|
2297
|
+
.nav-list-tile[data-tone="red"] { background:var(--category-red-bg); color:var(--category-red); }
|
|
2298
|
+
.nav-list-tile[data-tone="orange"] { background:var(--category-orange-bg); color:var(--category-orange); }
|
|
2299
|
+
.nav-list-tile[data-tone="green"] { background:var(--category-green-bg); color:var(--category-green); }
|
|
2300
|
+
.nav-list-tile[data-tone="teal"] { background:var(--category-teal-bg); color:var(--category-teal); }
|
|
2301
|
+
.nav-list-tile[data-tone="cyan"] { background:var(--category-cyan-bg); color:var(--category-cyan); }
|
|
2302
|
+
.nav-list-tile[data-tone="blue"] { background:var(--category-blue-bg); color:var(--category-blue); }
|
|
2303
|
+
.nav-list-tile[data-tone="violet"] { background:var(--category-violet-bg); color:var(--category-violet); }
|
|
2304
|
+
.nav-list-tile[data-tone="pink"] { background:var(--category-pink-bg); color:var(--category-pink); }
|
|
2305
|
+
.nav-list-row[aria-current="page"] { background:var(--fill-2); }
|
|
2306
|
+
.nav-list-here { flex:none; }
|
|
2285
2307
|
/* O PAINEL DÁ QUASE NADA, A LINHA DÁ O RESTO. Medido em 18/08/2026, depois de o Victor circular a
|
|
2286
2308
|
folga no print: com o `--card-pad` de 20px o realce da linha começava a 21px da borda e o texto
|
|
2287
2309
|
a 65px, e a linha ocupava só 88% da largura — realce flutuando no meio de uma caixa grande em
|
|
@@ -2621,6 +2643,14 @@ img,svg { display:block; }
|
|
|
2621
2643
|
/* Vertical sai da pílula: --radius-control (999px) clampa em 50% da menor
|
|
2622
2644
|
dimensão e vira um oval num container alto. */
|
|
2623
2645
|
.toolbar[data-orientation="vertical"] { flex-direction:column; align-items:stretch; border-radius:var(--radius-lg); }
|
|
2646
|
+
/* A BARRA AMARELA (`Toolbar tone="brand"`, o site B — a seleção em lote da página inicial, aprovada pela bancada em
|
|
2647
|
+
01/11/2026, o D-7.7, a forma B): o amarelo da marca, 52 de altura (`--control-h-xl` + 2), 16 antes e 4 depois, o texto
|
|
2648
|
+
na tinta, 600, o que vem antes e o que vem depois nas pontas; os botões de dentro BRANCOS (as marcas dos controles) com a
|
|
2649
|
+
tinta. Sem `brand`, a barra de sempre. */
|
|
2650
|
+
.toolbar.toolbar-brand { justify-content:space-between; min-block-size:calc(var(--control-h-xl) + var(--space-05)); padding:0 var(--space-1) 0 var(--space-4);
|
|
2651
|
+
background:var(--primary); color:var(--primary-foreground); font-weight:var(--weight-semibold); }
|
|
2652
|
+
.toolbar-brand .btn { --btn-bg:var(--control-thumb); --btn-fg:var(--primary-foreground); background:var(--btn-bg); color:var(--btn-fg); }
|
|
2653
|
+
.toolbar-brand .btn:hover:not(:disabled) { --btn-bg:color-mix(in oklab,var(--control-thumb) 88%,var(--primary-foreground)); }
|
|
2624
2654
|
.toolbar-group { display:flex; align-items:center; gap:var(--space-1); }
|
|
2625
2655
|
.toolbar-sep { flex:none; align-self:stretch; inline-size:1px; min-block-size:20px; margin-inline:4px; margin-block:0; background:var(--border); border:0; }
|
|
2626
2656
|
/* SEPARADOR — a linha de divisão do sistema, num lugar só.
|
|
@@ -2953,6 +2983,24 @@ img,svg { display:block; }
|
|
|
2953
2983
|
.radio-group > .field-error { margin-block-start:var(--space-2); }
|
|
2954
2984
|
/* `labelHidden` (15/10/2026): sem o nome na tela, as opções começam no alto — nada do vão de 16 que o separava delas. */
|
|
2955
2985
|
.radio-group-bare > .label + :is(.radio,.radio-group-items) { margin-block-start:0; }
|
|
2986
|
+
/* O CARTÃO DE ESCOLHA (`variant="card"`, o site B — aprovado pela bancada em 01/11/2026, a opção B): o CHK-01 do nativo
|
|
2987
|
+
levado à web. Cada opção é um cartão inteiro (a pele do `Card`: canto 22, recheio do cartão, a cor do cartão), 12 entre
|
|
2988
|
+
eles; o escolhido SOBE 4 com a `--shadow-lg` e a cor da aba escolhida (`--segment`) — parado para quem pede menos
|
|
2989
|
+
movimento. O foco é o do cartão inteiro, uma linha só (ADR-0059): o da marca sai. `indicatorPlacement="none"` tira a
|
|
2990
|
+
bolinha (o Theming do site); o cartão continua o rádio nativo por dentro. Variação: sem `card`, o grupo é o de sempre. */
|
|
2991
|
+
.radio-group-cards { display:grid; gap:var(--space-3); align-self:stretch; margin-block-start:var(--space-4); }
|
|
2992
|
+
.radio-group-horizontal > .radio-group-cards { grid-auto-flow:column; grid-auto-columns:minmax(0,1fr); }
|
|
2993
|
+
.radio-group-bare > .label + .radio-group-cards { margin-block-start:0; }
|
|
2994
|
+
.radio-group-cards > .radio { margin:0; align-items:flex-start; gap:var(--space-3); min-inline-size:0; padding:var(--card-pad); border-radius:var(--radius-card); background:var(--card); cursor:pointer;
|
|
2995
|
+
transition:background-color var(--duration-fast),box-shadow var(--duration-fast),translate var(--duration-fast); }
|
|
2996
|
+
.radio-group-cards > .radio:has(input:checked) { background:var(--segment); box-shadow:var(--shadow-lg); translate:0 calc(-1 * var(--space-1)); }
|
|
2997
|
+
/* No escuro, o texto de apoio do cartão marcado lia 4,07:1 no --segment (o axe da varredura, 02/11/2026): ali dentro ele é o
|
|
2998
|
+
texto a 80% sobre o --segment, como a letra apagada de uma peça erguida. */
|
|
2999
|
+
[data-theme="dark"] .radio-group-cards > .radio:has(input:checked):where(:not([data-theme="light"] *),[data-theme="light"] [data-theme="dark"] *) { --muted-foreground:color-mix(in oklab, var(--foreground) 80%, var(--segment)); }
|
|
3000
|
+
.radio-group-cards > .radio:has(input:focus-visible) { outline:var(--focus-width) solid var(--focus-strong); outline-offset:var(--focus-offset); }
|
|
3001
|
+
.radio-group-cards > .radio input:focus-visible + .control-mark { outline:none; }
|
|
3002
|
+
.radio-group-indicator-none > .radio-group-cards > .radio > .control-mark { display:none; }
|
|
3003
|
+
@media (prefers-reduced-motion:reduce) { .radio-group-cards > .radio:has(input:checked) { translate:none; } }
|
|
2956
3004
|
.checkbox > span > .muted { font-size:var(--text-xs); font-weight:var(--weight-regular); line-height:var(--space-4); }
|
|
2957
3005
|
.checkbox input,.radio input { position:absolute; opacity:0; pointer-events:none; }
|
|
2958
3006
|
/* A MARCA DE SELEÇÃO acompanha a densidade, e antes não acompanhava. Era `18px` cru: em
|
|
@@ -2985,6 +3033,22 @@ img,svg { display:block; }
|
|
|
2985
3033
|
a folga de 3,5 virava 3 de um lado e 4 do outro. A escala gira em torno do centro exato da caixa. */
|
|
2986
3034
|
.radio input:checked + .control-mark:after { content:""; inline-size:100%; block-size:100%; border-radius:50%;
|
|
2987
3035
|
background:var(--control-selected-dot); scale:calc(3 / 7); }
|
|
3036
|
+
/* A CÁPSULA (`Checkbox variant="pill"`, o site B — o "Mark as done", aprovado pela bancada em 01/11/2026, o item 4): a
|
|
3037
|
+
cápsula em volta é o alvo inteiro — 44 (`--target-min`) com a caixa de 24, ou 36 (`--control-h-md`) com a caixa de 20; o
|
|
3038
|
+
recheio e o vão saem da conta (altura − caixa) / 2. Fundo `--fill-2` (sem linha, ADR-0072), letra 600. O foco é o da
|
|
3039
|
+
cápsula, uma linha só (ADR-0059). `data-tone="success"`: a marcada é "feito" — a cápsula no verde a 18%, a letra e a caixa
|
|
3040
|
+
no `--success-400`. Variação: sem `pill`, a caixa de sempre. */
|
|
3041
|
+
.checkbox.checkbox-pill { --pill-h:var(--target-min); --box:var(--space-6); --pill-in:calc((var(--pill-h) - var(--box)) / 2);
|
|
3042
|
+
align-items:center; gap:var(--pill-in); min-block-size:var(--pill-h); padding-inline:var(--pill-in) var(--space-4);
|
|
3043
|
+
border-radius:var(--radius-control); background:var(--fill-2); font-weight:var(--weight-semibold); white-space:nowrap;
|
|
3044
|
+
transition:background-color var(--duration-fast),color var(--duration-fast); }
|
|
3045
|
+
.checkbox.checkbox-pill-md { --pill-h:var(--control-h-md); --box:var(--space-5); padding-inline-end:var(--space-3); }
|
|
3046
|
+
.checkbox-pill > .control-mark { --mark:var(--box); margin:0; }
|
|
3047
|
+
.checkbox-pill > .control-mark:after { inline-size:70%; block-size:70%; }
|
|
3048
|
+
.checkbox-pill:has(input:focus-visible) { outline:var(--focus-width) solid var(--focus-strong); outline-offset:var(--focus-offset); }
|
|
3049
|
+
.checkbox.checkbox-pill input:focus-visible + .control-mark,.checkbox.checkbox-pill input:focus-visible:checked + .control-mark { outline:none; }
|
|
3050
|
+
.checkbox-pill[data-tone="success"]:has(input:checked) { background:color-mix(in oklab,var(--success-400) 18%,transparent); color:var(--success-400); }
|
|
3051
|
+
.checkbox-pill[data-tone="success"] input:checked + .control-mark { background:var(--success-400); color:var(--background); }
|
|
2988
3052
|
.switch { display:inline-flex; align-items:center; gap:var(--space-3); font-size:var(--text-sm); font-weight:var(--weight-medium); cursor:pointer; } .switch input { position:absolute; opacity:0; }
|
|
2989
3053
|
/* O TRILHO DO SWITCH (0.32.0): o da referência, 40 × 20 (sm 32 × 16, lg 48 × 24) — a largura é o
|
|
2990
3054
|
dobro da altura. Era 42 × 24. A altura é a de controle MENOS 16: dá exatamente os três dela
|
|
@@ -3135,11 +3199,44 @@ img,svg { display:block; }
|
|
|
3135
3199
|
.segmented a { display:inline-flex; align-items:center; justify-content:center; gap:var(--space-1); text-decoration:none; }
|
|
3136
3200
|
/* `size="sm"`: a da referência (abas de 24 numa cápsula de 32, letra 14) — a altura do controle `xs` da densidade. */
|
|
3137
3201
|
.segmented-sm :is(button,a) { min-block-size:var(--control-h-xs); padding:0 var(--space-4); font-size:var(--text-sm); }
|
|
3202
|
+
/* `size="lg"` e `size="xl"` (0.52.1, variação nova aprovada pela imagem em 01/11/2026): os segmentos na altura do controle
|
|
3203
|
+
`md` (36; a cápsula de 44, a chave Web | Native do site B) e na do `lg` (40; a cápsula de 48, as áreas no topo). O `sm` e
|
|
3204
|
+
o `md` não mudam. A referência não tem tamanho nessa peça. */
|
|
3205
|
+
.segmented-lg :is(button,a) { min-block-size:var(--control-h-md); }
|
|
3206
|
+
.segmented-xl :is(button,a) { min-block-size:var(--control-h-lg); }
|
|
3207
|
+
/* O SITE B (aprovado pela bancada em 01/11/2026, os itens 3 e 8), quatro variações; sem elas, a chave de sempre.
|
|
3208
|
+
O ÍCONE no item (`items[].icon`): 16 (`--icon-sm`), 8 do nome; o escolhido troca para a forma cheia (o `-fill`, como a
|
|
3209
|
+
lateral e a barra de baixo). `size="2xl"`: um tamanho a mais — segmento de 48 (`--space-12`), ícone 20, letra 16.
|
|
3210
|
+
`wrap`: a chave QUEBRA linha, e o trilho ganha o canto do cartão (22). `orientation="vertical"`: em pé, cada segmento
|
|
3211
|
+
na largura toda, com o mesmo canto. */
|
|
3212
|
+
.segmented :is(button,a):has(> .icon) { display:inline-flex; align-items:center; justify-content:center; gap:var(--space-2); }
|
|
3213
|
+
.segmented :is(button,a) > .icon { inline-size:var(--icon-sm); block-size:var(--icon-sm); flex:none; }
|
|
3214
|
+
.segmented-2xl :is(button,a) { min-block-size:var(--space-12); padding-inline:var(--space-4); font-size:var(--text-base); }
|
|
3215
|
+
.segmented-2xl :is(button,a) > .icon { inline-size:var(--icon-md); block-size:var(--icon-md); }
|
|
3216
|
+
.segmented-wrap { flex-wrap:wrap; border-radius:var(--radius-card); }
|
|
3217
|
+
.segmented-vertical { display:flex; flex-direction:column; border-radius:var(--radius-card); }
|
|
3218
|
+
.segmented-vertical :is(button,a) { inline-size:100%; padding-block:var(--space-2); text-align:center; }
|
|
3138
3219
|
/* Toggle (Lote 1): pressionado usa o MESMO par de tokens do segmento aceso, logo acima. Um
|
|
3139
3220
|
toggle solto e um segmento selecionado dizem a mesma coisa — se parecessem diferentes, o
|
|
3140
3221
|
sistema teria dois idiomas para "isto está ligado". O estado vem do motor (`data-pressed`),
|
|
3141
3222
|
não de uma classe que alguém precisa lembrar de pôr. */
|
|
3142
3223
|
.toggle[data-pressed] { --btn-bg:var(--secondary); --btn-fg:var(--primary); }
|
|
3224
|
+
/* A ÁREA (`Toggle area`, o site B — aprovada pela bancada em 01/11/2026, o D-3, o D-5 e o D-6): o toggle que é uma ÁREA
|
|
3225
|
+
clicável em volta de um bloco (a miniatura de uma página, um ícone com o nome). Recheio de 4, o canto concêntrico do
|
|
3226
|
+
cartão (22 − 2), o conteúdo como ele é (alinhado ao início, sem a altura do botão). Com `variant="ghost"`, transparente:
|
|
3227
|
+
com o mouse o amarelo a 18%, ligada a 42% (D-3). Com o fundo (`variant="default"`), o `--fill-2`; com o mouse o
|
|
3228
|
+
`--fill-3`; ligada, o amarelo cheio com a letra do botão primário (D-5, D-6). Sem o fio de baixo do ligado.
|
|
3229
|
+
`area="pill"`: a área do tamanho do conteúdo, em cápsula. Variação: sem `area`, o toggle de sempre. */
|
|
3230
|
+
.btn.toggle.toggle-area { --area-bg:transparent; --area-hover:color-mix(in oklab,var(--primary) 18%,transparent);
|
|
3231
|
+
--area-on:color-mix(in oklab,var(--primary) 42%,transparent); --area-on-fg:var(--foreground);
|
|
3232
|
+
display:block; inline-size:100%; min-inline-size:0; block-size:auto; min-block-size:0; padding:var(--space-1);
|
|
3233
|
+
border-radius:calc(var(--radius-card) - var(--space-05)); background:var(--area-bg); color:inherit; text-align:start; font:inherit; white-space:normal;
|
|
3234
|
+
transition:background-color var(--duration-fast); }
|
|
3235
|
+
.btn.toggle.toggle-area.btn-tertiary { --area-bg:var(--fill-2); --area-hover:var(--fill-3); --area-on:var(--primary); --area-on-fg:var(--primary-foreground); }
|
|
3236
|
+
.btn.toggle.toggle-area:hover:not(:disabled) { background:var(--area-hover); }
|
|
3237
|
+
.btn.toggle.toggle-area[aria-pressed="true"],.btn.toggle.toggle-area[aria-pressed="true"]:hover:not(:disabled) { --btn-bg:var(--area-on); background:var(--area-on); color:var(--area-on-fg); }
|
|
3238
|
+
.btn.toggle.toggle-area[aria-pressed="true"]::after { content:none; }
|
|
3239
|
+
.btn.toggle.toggle-area-pill { inline-size:auto; align-self:flex-start; border-radius:var(--radius-full); }
|
|
3143
3240
|
/* ── SELECIONADO: uma linguagem só ────────────────────────────────────────────────────
|
|
3144
3241
|
Item de nav ativo, aba ativa, item de lista lateral e botão alternado ligado mostram o
|
|
3145
3242
|
MESMO sinal: cápsula elevada + rótulo na cor da marca + fio amarelo encostado na borda de
|
|
@@ -3393,6 +3490,12 @@ img,svg { display:block; }
|
|
|
3393
3490
|
não. Quem cobra é o `link-sem-sublinhado.spec.ts`. */
|
|
3394
3491
|
.card-interactive { cursor:pointer; inline-size:100%; text-decoration:none; font:inherit; text-align:inherit; color:inherit; transition:transform var(--duration-fast),border-color var(--duration-fast),background var(--duration-fast); }
|
|
3395
3492
|
.card-interactive:hover { transform:translateY(-2px); border-color:transparent; background:var(--surface-2); }
|
|
3493
|
+
/* O LEVANTAR (`lift`, o site B — aprovado pela bancada em 01/11/2026): o cartão clicável que SOBE com sombra, em vez de
|
|
3494
|
+
trocar o fundo. Sobe 4 (`--space-1`), fica na cor do cartão e ganha a `--shadow-md`; parado para quem pede menos
|
|
3495
|
+
movimento. Variação: sem `lift`, o cartão clicável continua o de sempre (sobe 2 e troca o fundo). */
|
|
3496
|
+
.card-interactive.card-lift { transition:transform var(--duration-base),box-shadow var(--duration-base),background var(--duration-fast); }
|
|
3497
|
+
.card-interactive.card-lift:hover { transform:translateY(calc(-1 * var(--space-1))); background:var(--card); box-shadow:var(--shadow-md); }
|
|
3498
|
+
@media (prefers-reduced-motion:reduce) { .card-interactive.card-lift:hover { transform:none; } }
|
|
3396
3499
|
.card-selected { border-color:transparent; background:color-mix(in oklab,var(--primary) 12%,var(--card)); }
|
|
3397
3500
|
.card-danger { border-color:transparent; background:var(--danger-bg); }
|
|
3398
3501
|
/* MT-01 (10/10/2026, ADR-0063): o cartão `contrast` traz `data-theme="dark"` no próprio elemento —
|
|
@@ -3411,6 +3514,14 @@ img,svg { display:block; }
|
|
|
3411
3514
|
.card-accent-brand { --card-accent:var(--primary); } .card-accent-success { --card-accent:var(--success); }
|
|
3412
3515
|
.card-accent-info { --card-accent:var(--info); } .card-accent-warning { --card-accent:var(--warning); }
|
|
3413
3516
|
.card-accent-danger { --card-accent:var(--destructive); }
|
|
3517
|
+
/* `fill="brand"` (o site B, 02/11/2026 — o Victor escolheu a "B" na imagem): o cartão pintado no amarelo da marca, com a
|
|
3518
|
+
tinta por cima (`--primary-foreground`, 9,28:1 na Aurea Gold) — o título, o texto de apoio e o que lê a cor do cartão
|
|
3519
|
+
passam a ser a tinta e o amarelo. O traço do `accent` some (amarelo sobre amarelo); no clicável, o amarelo fica ao
|
|
3520
|
+
passar o mouse. NA EMBER, o cartão comum (o Victor, 02/11/2026: "Ember no cartão comum" — no claro, o branco no laranja
|
|
3521
|
+
media 3,08:1). Quem cobra: `tests/unit/site-b-pecas-0-54.test.tsx`. */
|
|
3522
|
+
.card.card-fill-brand:where(:not([data-brand="ember"],[data-brand="ember"] *)) { --card:var(--primary); --surface-2:var(--primary-hover); --card-foreground:var(--primary-foreground);
|
|
3523
|
+
--foreground:var(--primary-foreground); --muted-foreground:var(--primary-foreground); background:var(--primary); color:var(--primary-foreground); }
|
|
3524
|
+
.card.card-fill-brand.card-accent:where(:not([data-brand="ember"],[data-brand="ember"] *)) { box-shadow:none; }
|
|
3414
3525
|
/* 0.32.0: a descrição 14/20 colada no título. O `.card-header` e o `.card-title` desta linha (o cabeçalho em LINHA, com
|
|
3415
3526
|
16 de vão e 16 embaixo, da primeira versão pública) saíram em 15/10/2026: nenhuma peça os usava, e vindo DEPOIS das
|
|
3416
3527
|
partes do cartão eles separavam o título da descrição do `Card.Header` em 16 — na referência, colados. */
|
|
@@ -3444,6 +3555,16 @@ img,svg { display:block; }
|
|
|
3444
3555
|
/* A cor do glifo é a da variante, senão o ícone vira enfeite cinza e não repete o sinal.
|
|
3445
3556
|
Só o ícone DIRETO do alerta: um ícone dentro do corpo (num botão, num link) é do corpo. */
|
|
3446
3557
|
.alert>.icon { --step-icon:var(--icon-sm); margin:var(--space-1); color:var(--alert-tone); }
|
|
3558
|
+
/* `appearance="soft"` (o site B, 02/11/2026 — o Victor escolheu a "B" na imagem): o fundo é a cor do estado a 14%, sem a
|
|
3559
|
+
sombra do cartão; o corpo vai na cor do texto, a 16 com a linha de 1,5 (a do desenho, 1,6, no degrau mais perto — ADR-0088), e o título em negrito na cor do estado. O
|
|
3560
|
+
padrão continua o de cartão. O título é o tom com 25% da cor do texto: puro, o azul (info) no claro media 4,07:1 no
|
|
3561
|
+
fundo do tom (o axe, 02/11/2026). NA EMBER, o cartão de sempre (o Victor, 02/11/2026: "Ember no cartão" — no claro, o título
|
|
3562
|
+
de atenção dela no fundo do tom media 4,23:1).
|
|
3563
|
+
Quem cobra: `tests/unit/site-b-pecas-0-54.test.tsx`. */
|
|
3564
|
+
.alert.alert-soft:where(:not([data-brand="ember"],[data-brand="ember"] *)) { background:color-mix(in oklab, var(--alert-tone) 14%, transparent); box-shadow:none; color:var(--foreground);
|
|
3565
|
+
font-size:var(--text-base); line-height:var(--leading-normal); }
|
|
3566
|
+
.alert.alert-soft:where(:not([data-brand="ember"],[data-brand="ember"] *)) strong { color:color-mix(in oklab, var(--alert-tone) 75%, var(--foreground)); font-size:var(--text-base); font-weight:var(--weight-bold); line-height:var(--leading-normal); }
|
|
3567
|
+
.alert.alert-soft:where(:not([data-brand="ember"],[data-brand="ember"] *)) p { color:var(--foreground); font-size:var(--text-base); }
|
|
3447
3568
|
.banner strong { font-size:var(--text-sm); } .banner p { margin:0; color:var(--muted-foreground); font-size:var(--text-sm); }
|
|
3448
3569
|
/* GAR-19 (lote U, 19/10/2026): o aviso de cookies, Banner variant="consent". Uma coluna: o título (h2), o texto e os
|
|
3449
3570
|
três botões de MESMO peso numa linha que quebra — rejeitar tão fácil de ver quanto aceitar (o guia da ANPD) —; depois
|
|
@@ -3568,6 +3689,45 @@ img,svg { display:block; }
|
|
|
3568
3689
|
Cor semântica, não a primária — reprovar não é progredir. */
|
|
3569
3690
|
.step-error { color:var(--danger-400); } .step-error .step-dot { color:var(--danger-400); border-color:transparent; background:var(--danger-bg); }
|
|
3570
3691
|
.step-optional { display:block; color:var(--muted-foreground); font-size:var(--text-xs); }
|
|
3692
|
+
/* O CAMINHO QUE ESCOLHE (`Stepper variant="path"`, o site B — o Roadmap, aprovado pela bancada em 01/11/2026, o item 5): a
|
|
3693
|
+
mesma lista; a bolinha de 50 (`--control-h-xl`) no cartão, com a `--shadow-sm` e o número na `--font-code`; o rótulo fica
|
|
3694
|
+
para o leitor de tela; UM trilho de 8 (`--space-2`, `--fill-2`) de ponta a ponta; a escolhida invertida (fundo na cor do
|
|
3695
|
+
texto) e maior, 56 (50 + 4 + 2); as pontas (`startContent`, `endContent`) não clicam — a do início no amarelo. Estreito
|
|
3696
|
+
(o contêiner até 30rem): 4 por linha, sem trilho. `--stepper-cols` é o número de colunas (as etapas e as pontas). */
|
|
3697
|
+
.stepper-path { container-type:inline-size; }
|
|
3698
|
+
.stepper-path > .stepper { --dot:var(--control-h-xl); --dot-on:calc(var(--control-h-xl) + var(--space-1) + var(--space-05));
|
|
3699
|
+
position:relative; grid-auto-flow:row; grid-template-columns:repeat(var(--stepper-cols,4),minmax(0,1fr)); align-items:center; gap:var(--space-2) var(--space-1); }
|
|
3700
|
+
.stepper-path > .stepper:before { content:""; position:absolute; inset-inline:calc(100% / (2 * var(--stepper-cols,4))); inset-block-start:50%;
|
|
3701
|
+
block-size:var(--space-2); translate:0 -50%; border-radius:var(--radius-full); background:var(--fill-2); }
|
|
3702
|
+
.stepper-path > .stepper > .step { z-index:1; display:grid; place-items:center; block-size:var(--dot-on); }
|
|
3703
|
+
.stepper-path > .stepper > .step:before { content:none; }
|
|
3704
|
+
.stepper-path > .stepper > .step .step-trigger { inline-size:auto; border-radius:var(--radius-full); }
|
|
3705
|
+
.stepper-path > .stepper > .step :is(strong,.step-optional) { position:absolute; inline-size:1px; block-size:1px; overflow:hidden; clip-path:inset(50%); white-space:nowrap; }
|
|
3706
|
+
.stepper-path > .stepper > .step .step-dot { inline-size:var(--dot); block-size:var(--dot); margin:0; background:var(--card); color:var(--foreground); box-shadow:var(--shadow-sm);
|
|
3707
|
+
font-family:var(--font-code); font-weight:var(--weight-semibold); font-size:var(--text-base);
|
|
3708
|
+
transition:inline-size var(--duration-fast),block-size var(--duration-fast),background-color var(--duration-fast),color var(--duration-fast),box-shadow var(--duration-fast); }
|
|
3709
|
+
.stepper-path > .stepper > .step .step-trigger:hover .step-dot { box-shadow:var(--shadow-md); }
|
|
3710
|
+
.stepper-path > .stepper > .step-active .step-dot { inline-size:var(--dot-on); block-size:var(--dot-on); background:var(--foreground); color:var(--background); box-shadow:var(--shadow-sm); }
|
|
3711
|
+
.stepper-path > .stepper > .step-end { position:relative; z-index:1; justify-self:center; display:grid; place-items:center; block-size:var(--dot); min-inline-size:var(--dot);
|
|
3712
|
+
padding-inline:var(--space-3); border-radius:var(--radius-full); background:var(--fill-3-solid); color:var(--foreground); font-family:var(--font-code); font-size:var(--text-sm); }
|
|
3713
|
+
.stepper-path > .stepper > .step-end-start { background:var(--primary); color:var(--primary-foreground); }
|
|
3714
|
+
@container (max-width:30rem) {
|
|
3715
|
+
.stepper-path > .stepper { grid-template-columns:repeat(4,minmax(0,1fr)); }
|
|
3716
|
+
.stepper-path > .stepper:before { content:none; }
|
|
3717
|
+
}
|
|
3718
|
+
/* A BARRA EM PARTES (`Stepper variant="bar"`, o site B — o "Your setup" do Quick Start, aprovado pela bancada em 01/11/2026,
|
|
3719
|
+
o D-1): cada etapa é uma parte da barra, de 12 (`--space-3`), 6 entre elas, e é o LINK (ou o botão) da etapa — o nome
|
|
3720
|
+
fica para o leitor de tela; a feita fica verde (`--success-400`). `startContent` vem antes (o nome, 600) e `endContent`
|
|
3721
|
+
depois (a contagem, mono, anunciada ao mudar). Variação: sem `path` nem `bar`, o `Stepper` de sempre. */
|
|
3722
|
+
.stepper-bar { display:flex; align-items:center; gap:var(--space-4); }
|
|
3723
|
+
.stepper-bar-label { flex:none; font-weight:var(--weight-semibold); font-size:var(--text-base); white-space:nowrap; }
|
|
3724
|
+
.stepper-bar > .stepper { flex:1; display:flex; gap:calc(var(--space-1) + var(--space-05)); }
|
|
3725
|
+
.stepper-bar > .stepper > .step { flex:1; display:flex; }
|
|
3726
|
+
.stepper-bar > .stepper > .step:before { content:none; }
|
|
3727
|
+
.stepper-bar > .stepper > .step > .step-trigger { inline-size:100%; block-size:var(--space-3); border-radius:var(--radius-full); background:var(--fill-2); transition:background-color var(--duration-base); }
|
|
3728
|
+
.stepper-bar > .stepper > .step > .step-trigger:hover { background:var(--fill-3); }
|
|
3729
|
+
.stepper-bar > .stepper > .step-done > .step-trigger { background:var(--success-400); }
|
|
3730
|
+
.stepper-bar-count { flex:none; font-family:var(--font-code); font-weight:var(--weight-semibold); font-size:var(--text-sm); white-space:nowrap; }
|
|
3571
3731
|
/* Etapa clicável (fluxo não-linear): o alvo é um botão de verdade, com o foco do sistema.
|
|
3572
3732
|
E ele PRECISA GERAR CAIXA. `display:contents` era o que estava aqui, e um <button> sem caixa
|
|
3573
3733
|
não recebe foco — o Chromium recusa `.focus()`, e a etapa clicável só funcionava com o mouse.
|
|
@@ -3627,6 +3787,36 @@ img,svg { display:block; }
|
|
|
3627
3787
|
.table tbody tr:last-child > :last-child,.table-wrap tbody tr:last-child > :last-child { border-end-end-radius:var(--table-cell-r); }
|
|
3628
3788
|
.table tr:last-child td,.table-wrap tr:last-child td { border-bottom:0; }
|
|
3629
3789
|
@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)); } }
|
|
3790
|
+
/* AS LINHAS EM CÁPSULA (`Table variant="rows"`, o site B — a lista de membros da página inicial, aprovada pela bancada em
|
|
3791
|
+
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
|
+
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
|
|
3793
|
+
mono maiúsculo, apagado, sem fundo e sem os fios entre as colunas. Cabe na largura. Sem `rows`, a tabela de sempre. */
|
|
3794
|
+
.table-region.table-region-rows { padding:0; border-radius:0; background:transparent; }
|
|
3795
|
+
.table.table-rows { min-width:0; border-spacing:0 var(--space-1); }
|
|
3796
|
+
.table.table-rows thead th { background:transparent; font-family:var(--font-code); letter-spacing:.06em; text-transform:uppercase; }
|
|
3797
|
+
.table.table-rows thead th::after { content:none; }
|
|
3798
|
+
.table.table-rows tbody :is(td,th) { block-size:calc(var(--target-min) + var(--space-2) + var(--space-05)); padding-block:0; border-bottom:0; background:transparent;
|
|
3799
|
+
transition:background-color var(--duration-fast); }
|
|
3800
|
+
.table.table-rows tbody tr > :first-child { border-radius:var(--radius-full) 0 0 var(--radius-full); padding-inline-start:var(--space-1); }
|
|
3801
|
+
.table.table-rows tbody tr > :last-child { border-radius:0 var(--radius-full) var(--radius-full) 0; padding-inline-end:var(--space-3); }
|
|
3802
|
+
.table.table-rows tbody tr > :only-child { border-radius:var(--radius-full); }
|
|
3803
|
+
:dir(rtl) .table.table-rows tbody tr > :first-child,[dir="rtl"] .table.table-rows tbody tr > :first-child { border-radius:0 var(--radius-full) var(--radius-full) 0; }
|
|
3804
|
+
:dir(rtl) .table.table-rows tbody tr > :last-child,[dir="rtl"] .table.table-rows tbody tr > :last-child { border-radius:var(--radius-full) 0 0 var(--radius-full); }
|
|
3805
|
+
@media (hover:hover) { .table.table-rows tbody tr:hover > :is(td,th) { background:var(--fill-1); } }
|
|
3806
|
+
.table.table-rows tbody tr[data-selected] > :is(td,th) { background:color-mix(in oklab,var(--primary) 14%,transparent); }
|
|
3807
|
+
@media (hover:hover) { .table.table-rows tbody tr[data-selected]:hover > :is(td,th) { background:color-mix(in oklab,var(--primary) 18%,transparent); } }
|
|
3808
|
+
/* `striped` (o site B, 02/11/2026 — o Victor escolheu a "B" na imagem): as linhas ímpares do corpo com um fundo, a 1ª, a 3ª,
|
|
3809
|
+
a 5ª…, como o desenho. Na tabela de sempre, o cartão com o texto a 6% (opaco: a célula pinta a cor do cartão); nas
|
|
3810
|
+
linhas em cápsula (`rows`), o `--fill-1` e o canto de 16 (`--radius-lg`), e o mouse escurece para o `--fill-2`. É fundo,
|
|
3811
|
+
não linha (ADR-0072). Quem cobra: `tests/unit/site-b-pecas-0-54.test.tsx`. */
|
|
3812
|
+
.table.table-striped:not(.table-rows) tbody tr:nth-child(odd) > :is(td,th) { background:color-mix(in oklab, var(--foreground) 6%, var(--card)); }
|
|
3813
|
+
.table.table-striped.table-rows tbody tr:nth-child(odd) > :is(td,th) { background:var(--fill-1); }
|
|
3814
|
+
.table.table-striped.table-rows tbody tr > :first-child { border-start-start-radius:var(--radius-lg); border-end-start-radius:var(--radius-lg); }
|
|
3815
|
+
.table.table-striped.table-rows tbody tr > :last-child { border-start-end-radius:var(--radius-lg); border-end-end-radius:var(--radius-lg); }
|
|
3816
|
+
@media (hover:hover) {
|
|
3817
|
+
.table.table-striped:not(.table-rows) tbody tr:hover > :is(td,th) { background:color-mix(in oklab,var(--card) 40%,var(--surface-2)); }
|
|
3818
|
+
.table.table-striped.table-rows tbody tr:hover > :is(td,th) { background:var(--fill-2); }
|
|
3819
|
+
}
|
|
3630
3820
|
/* GAR-12 e GAR-13 (08/10/2026): a tabela de COMPARAÇÃO — as chaves da `Table` e a pele do HTML de
|
|
3631
3821
|
comparação. A referência principal só tem o cabeçalho preso, à mão, numa caixa de altura fixa; o
|
|
3632
3822
|
resto veio do mercado, por escolha do Victor (o detalhe está no comentário da `Table`).
|
|
@@ -3830,6 +4020,32 @@ button.tag-main { cursor:pointer; }
|
|
|
3830
4020
|
.kpi-tone-success { color:var(--success-400); }
|
|
3831
4021
|
.kpi-tone-danger { color:var(--danger-400); }
|
|
3832
4022
|
.kpi-tone-neutral { color:var(--muted-foreground); }
|
|
4023
|
+
/* O CARTÃO AMARELO E AS BARRAS (o site B — a página inicial, aprovado pela bancada em 01/11/2026, o D-7.3, a forma B "sem
|
|
4024
|
+
marrom"). `variant="brand"`: o cartão no amarelo da marca, com a tinta e a `--shadow-md`; o rótulo na tinta, 600; a
|
|
4025
|
+
tendência na tinta. `bars`: as barras embaixo, 128 de altura (2 × `--space-16`), 8 entre elas, cada uma até 32 de
|
|
4026
|
+
largura, a cápsula em cima. Cada barra é um BOTÃO DE OPÇÃO nativo (o KPI é marcação pura, roda no servidor): o clique e as
|
|
4027
|
+
setas escolhem; a leitura acima diz o nome e o valor da escolhida — e, com o mouse, da que está sob ele. No amarelo, as
|
|
4028
|
+
barras na tinta cheia e a escolhida BRANCA (as marcas dos controles); fora dele, o `--fill-3` e a cor do texto. */
|
|
4029
|
+
.kpi.kpi-brand { background:var(--primary); color:var(--primary-foreground); box-shadow:var(--shadow-md); padding:var(--space-5) var(--space-5) var(--space-4); }
|
|
4030
|
+
.kpi-brand > .muted { color:inherit; font-weight:var(--weight-semibold); font-size:var(--text-sm); }
|
|
4031
|
+
.kpi-brand :is(.kpi-tone-success,.kpi-tone-danger,.kpi-tone-neutral) { color:inherit; }
|
|
4032
|
+
.kpi-bars-wrap { position:relative; display:grid; gap:var(--space-1); margin:var(--space-3) 0 0; padding:var(--space-6) 0 0; border:0; min-inline-size:0; }
|
|
4033
|
+
.kpi-bars { display:grid; grid-template-columns:repeat(var(--kpi-bars,6),minmax(0,1fr)); gap:var(--space-2); align-items:end; block-size:calc(2 * var(--space-16)); }
|
|
4034
|
+
.kpi-bar { display:flex; flex-direction:column; justify-content:flex-end; align-items:center; block-size:100%; color:inherit; cursor:pointer; border-radius:var(--radius-xs); }
|
|
4035
|
+
.kpi-bar > .kpi-bar-input { position:absolute; opacity:0; pointer-events:none; }
|
|
4036
|
+
.kpi-bar:has(> input:focus-visible) { outline:var(--focus-width) solid var(--focus-strong); outline-offset:var(--focus-offset); }
|
|
4037
|
+
.kpi-bar-fill { inline-size:100%; max-inline-size:var(--space-8); block-size:var(--kpi-bar-h,0%); border-radius:var(--radius-full) var(--radius-full) var(--radius-xs) var(--radius-xs);
|
|
4038
|
+
background:var(--fill-3); transition:background-color var(--duration-base); }
|
|
4039
|
+
.kpi-bar-reading { position:absolute; inset-block-start:0; inset-inline-start:0; visibility:hidden; white-space:nowrap;
|
|
4040
|
+
font-family:var(--font-code); font-size:var(--text-sm); font-weight:var(--weight-semibold); }
|
|
4041
|
+
.kpi-bar:has(> input:checked) .kpi-bar-fill,.kpi-bar:hover .kpi-bar-fill { background:var(--foreground); }
|
|
4042
|
+
.kpi-bar:has(> input:checked) .kpi-bar-reading,.kpi-bar:hover .kpi-bar-reading { visibility:visible; }
|
|
4043
|
+
.kpi-bars:has(.kpi-bar:hover) .kpi-bar:has(> input:checked):not(:hover) .kpi-bar-reading { visibility:hidden; }
|
|
4044
|
+
.kpi-bars:has(.kpi-bar:hover) .kpi-bar:has(> input:checked):not(:hover) .kpi-bar-fill { background:var(--fill-3); }
|
|
4045
|
+
.kpi-brand .kpi-bar-fill,.kpi-brand .kpi-bars:has(.kpi-bar:hover) .kpi-bar:has(> input:checked):not(:hover) .kpi-bar-fill { background:var(--primary-foreground); }
|
|
4046
|
+
.kpi-brand .kpi-bar:has(> input:checked) .kpi-bar-fill,.kpi-brand .kpi-bar:hover .kpi-bar-fill { background:var(--control-thumb); }
|
|
4047
|
+
.kpi-brand { --focus-strong:var(--primary-foreground); }
|
|
4048
|
+
.kpi-bars-x { display:grid; grid-template-columns:repeat(var(--kpi-bars,6),minmax(0,1fr)); gap:var(--space-2); text-align:center; font-family:var(--font-code); font-size:var(--text-xs); }
|
|
3833
4049
|
/* DataList: chave/valor em duas colunas. O termo é secundário — mesmo idioma do cabeçalho de
|
|
3834
4050
|
tabela. Sem a regra (achado A13) o <dl> saía cru: dt e dd empilhados, com o recuo de 40px
|
|
3835
4051
|
que o navegador dá ao <dd>. */
|
|
@@ -3844,8 +4060,10 @@ button.tag-main { cursor:pointer; }
|
|
|
3844
4060
|
179px para 90px em vez de zerar. `minmax(0,max-content)` é o que encolhe: com espaço mede
|
|
3845
4061
|
igual ao que media antes (nenhuma baseline mudou), sem espaço o termo quebra. */
|
|
3846
4062
|
.data-list { display:grid; grid-template-columns:minmax(0,max-content) minmax(0,1fr); gap:var(--space-2) var(--space-6); margin:0; }
|
|
3847
|
-
|
|
3848
|
-
.
|
|
4063
|
+
/* A palavra que não cabe QUEBRA dentro da célula (0.52.1, aprovado pela imagem em 01/11/2026): um nome de código longo
|
|
4064
|
+
(`window.Aurea.setTheme`) saía da célula, e numa coluna estreita a página rolava de lado. */
|
|
4065
|
+
.data-list dt { min-width:0; color:var(--muted-foreground); overflow-wrap:anywhere; }
|
|
4066
|
+
.data-list dd { min-width:0; margin:0; overflow-wrap:anywhere; }
|
|
3849
4067
|
/* E no ESTREITO ele empilha — a outra metade da correção. Medido a 320px com termos de frase
|
|
3850
4068
|
inteira: duas colunas não cabem, o termo resolvia em 164px, a calha comia o resto e a coluna do
|
|
3851
4069
|
valor ficava com `0px`, jogando o texto para fora da PÁGINA. Mesmo remédio que `.message` e
|
|
@@ -3912,6 +4130,32 @@ button.tag-main { cursor:pointer; }
|
|
|
3912
4130
|
.accordion-lg .accordion-content { padding-inline:calc(var(--space-5) + var(--space-05)); padding-block-end:var(--space-5); font-size:var(--text-base); line-height:var(--leading-relaxed); }
|
|
3913
4131
|
.accordion-lg .accordion-content > p { margin:0; }
|
|
3914
4132
|
.accordion-surface > .accordion-item::after { inset-inline-start:3%; inline-size:94%; }
|
|
4133
|
+
/* O ACORDEÃO DE LADO (`orientation="horizontal"`, o site B — a página inicial, aprovado pela bancada em 01/11/2026, o
|
|
4134
|
+
D-7.1): os itens em pé, lado a lado, 12 entre eles; cada um é um cartão (canto 22, a cor do cartão, sem o fio de baixo),
|
|
4135
|
+
fechado com 104 (`--space-24` + `--space-2`) e o aberto toma o resto, numa curva de duas vezes o tempo lento. A pergunta
|
|
4136
|
+
fechada é uma coluna (o que vem antes em cima, o resto embaixo); aberta, uma linha. O fechado sobe a sombra média com o
|
|
4137
|
+
mouse. A seta sai. A altura é a do pai. Num contêiner estreito (até 47.5rem), vira o acordeão de pé. */
|
|
4138
|
+
.accordion-horizontal-frame { container-type:inline-size; block-size:100%; }
|
|
4139
|
+
.accordion.accordion-horizontal { flex-direction:row; gap:var(--space-3); block-size:100%; }
|
|
4140
|
+
.accordion-horizontal > .accordion-item { display:flex; flex-direction:column; flex:0 0 calc(var(--space-24) + var(--space-2)); min-inline-size:0; overflow:hidden;
|
|
4141
|
+
border-radius:var(--radius-card); background:var(--card);
|
|
4142
|
+
transition:flex-grow calc(2 * var(--duration-slow)) var(--ease-emphasized),flex-basis calc(2 * var(--duration-slow)) var(--ease-emphasized),box-shadow var(--duration-base); }
|
|
4143
|
+
.accordion-horizontal > .accordion-item::after { content:none; }
|
|
4144
|
+
.accordion-horizontal > .accordion-item[open] { flex:1 1 0; }
|
|
4145
|
+
.accordion-horizontal > .accordion-item:not([open]):hover { box-shadow:var(--shadow-md); }
|
|
4146
|
+
.accordion-horizontal > .accordion-item > summary { flex:1; flex-direction:column; align-items:flex-start; justify-content:space-between; gap:var(--space-3);
|
|
4147
|
+
padding:var(--space-5); border-radius:var(--radius-card); font-size:var(--text-base); }
|
|
4148
|
+
.accordion-horizontal > .accordion-item:not([open]) > summary:hover:not([aria-disabled="true"]) { background:transparent; }
|
|
4149
|
+
.accordion-horizontal > .accordion-item[open] > summary { flex:none; flex-direction:row; align-items:center; gap:var(--space-4); padding-block-end:var(--space-2); cursor:default; }
|
|
4150
|
+
.accordion-horizontal .accordion-chevron { display:none; }
|
|
4151
|
+
.accordion-horizontal > .accordion-item > .accordion-content { flex:1; min-block-size:0; overflow:auto; padding:var(--space-3) var(--space-6) var(--space-6); color:var(--foreground); font-size:var(--text-base); }
|
|
4152
|
+
@container (max-width:47.5rem) {
|
|
4153
|
+
.accordion.accordion-horizontal { flex-direction:column; block-size:auto; }
|
|
4154
|
+
.accordion-horizontal > .accordion-item,.accordion-horizontal > .accordion-item[open] { flex:none; }
|
|
4155
|
+
.accordion-horizontal > .accordion-item > summary { flex-direction:row; align-items:center; justify-content:flex-start; }
|
|
4156
|
+
.accordion-horizontal > .accordion-item > .accordion-content { padding:var(--space-3); }
|
|
4157
|
+
}
|
|
4158
|
+
@media (prefers-reduced-motion:reduce) { .accordion-horizontal > .accordion-item { transition:none; } }
|
|
3915
4159
|
.accordion-surface > .accordion-item:not([open]) > summary:hover:not([aria-disabled="true"]) { background:var(--secondary); }
|
|
3916
4160
|
@media (prefers-reduced-motion:reduce) { .accordion-chevron { transition:none; } }
|
|
3917
4161
|
/* Mockup do kit de origem (apps/docs) — não é o Accordion do sistema, que é <details> nativo. */
|
|
@@ -3994,6 +4238,27 @@ button.tag-main { cursor:pointer; }
|
|
|
3994
4238
|
.demo-code { display:flex; padding:0; overflow:hidden; }
|
|
3995
4239
|
.demo-code .code-block-wrap { flex:1; }
|
|
3996
4240
|
.demo-code .code-block { padding:var(--space-6); border:0; border-radius:0; }
|
|
4241
|
+
/* A CAIXA EMPILHADA (`CodeBlock previewLayout="stacked"`, o site B, 02/11/2026 — o Victor: "preciso que seja fiel a
|
|
4242
|
+
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
|
+
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 DEGRADÊ (a 3ª exceção à
|
|
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
|
|
4246
|
+
inteiro e o "Collapse code" embaixo dele. Sem linha: a peça e o código se separam pelo fundo. */
|
|
4247
|
+
.demo.demo-stacked { display:flex; flex-direction:column; min-block-size:0; padding:0; overflow:hidden; }
|
|
4248
|
+
.demo.demo-stacked > .demo-panel { flex:none; }
|
|
4249
|
+
.demo.demo-stacked > .demo-panel[data-panel="preview"] { min-block-size:calc(3 * var(--space-24) + var(--space-12) + var(--space-3) + var(--space-05));
|
|
4250
|
+
padding:var(--space-10); border-radius:var(--radius-card) var(--radius-card) 0 0; background:var(--background); }
|
|
4251
|
+
.demo.demo-stacked > .demo-code { position:relative; display:block; overflow:visible; background:var(--card); }
|
|
4252
|
+
.demo.demo-stacked > .demo-code .code-block-wrap { position:relative; }
|
|
4253
|
+
.demo.demo-stacked > .demo-code .code-block { padding:var(--space-4) var(--space-3) calc(var(--space-3) + var(--space-05)); background:transparent; }
|
|
4254
|
+
.demo.demo-stacked > .demo-code .copy-code { top:var(--space-3); inset-inline-end:var(--space-2); z-index:2; }
|
|
4255
|
+
.demo.demo-stacked[data-collapsed] > .demo-code .code-block-wrap { max-block-size:calc(var(--space-24) + var(--space-12) + var(--space-1) + var(--space-05)); overflow:hidden;
|
|
4256
|
+
-webkit-mask-image:linear-gradient(to bottom, var(--foreground) 40%, transparent); mask-image:linear-gradient(to bottom, var(--foreground) 40%, transparent); }
|
|
4257
|
+
.demo.demo-stacked[data-expanded] > .demo-code .code-block { padding-block-end:calc(var(--space-12) + var(--space-1)); }
|
|
4258
|
+
/* No alto contraste do sistema o degradê sai: o código recolhido aparece inteiro até o corte, sem esmaecer. */
|
|
4259
|
+
@media (forced-colors:active) { .demo.demo-stacked[data-collapsed] > .demo-code .code-block-wrap { -webkit-mask-image:none; mask-image:none; } }
|
|
4260
|
+
.demo-stacked-toggle { --step-fs:var(--text-xs); position:absolute; inset-block-end:var(--space-2); inset-inline-start:50%; translate:-50% 0; z-index:3;
|
|
4261
|
+
font-weight:var(--weight-medium); box-shadow:var(--shadow-sm); }
|
|
3997
4262
|
.copy-code { position:absolute; top:var(--space-3); inset-inline-end:var(--space-3); z-index:1; }
|
|
3998
4263
|
/* O fim da linha fica fora do botão de copiar (achado no 3-A, 23/10/2026): no Quick Start, o `pnpm add` de uma linha
|
|
3999
4264
|
terminava a 915 e o botão começava a 901 — o fim do comando ficava embaixo dele. O código reserva no fim o lugar do
|
|
@@ -4002,6 +4267,20 @@ button.tag-main { cursor:pointer; }
|
|
|
4002
4267
|
.code-block-wrap > .code-block { padding-inline-end:calc(var(--space-3) + var(--control-h-md) + var(--space-2)); }
|
|
4003
4268
|
.copy-code .c-done { display:none; }
|
|
4004
4269
|
.copy-code.is-done .c-copy { display:none; } .copy-code.is-done .c-done { display:block; color:var(--primary); }
|
|
4270
|
+
/* A CABEÇA DO ARQUIVO (`CodeBlock filename`, o site B — aprovada pela bancada em 01/11/2026, o item 6, "Ícone + nome"): o
|
|
4271
|
+
bloco é o cartão (canto 22, a cor do cartão); a cabeça tem 52 (`--control-h-md` + `--space-4`), o nome do arquivo em mono
|
|
4272
|
+
12, apagado, e o "Copy" escrito — o botão secundário de 36, o ícone antes do nome; copiado, os dois viram o visto e
|
|
4273
|
+
"Copied". O código a 14, na cor do texto, com 6 em cima e 20 dos lados e embaixo, e a linha longa DESCE (sem rolar). */
|
|
4274
|
+
.code-block-wrap.code-block-file { flex-direction:column; border-radius:var(--radius-card); background:var(--card); overflow:hidden; }
|
|
4275
|
+
.code-block-head { display:flex; align-items:center; gap:var(--space-3); min-block-size:calc(var(--control-h-md) + var(--space-4));
|
|
4276
|
+
padding:calc(var(--space-1) + var(--space-05)) var(--space-2) 0 var(--space-5); }
|
|
4277
|
+
.code-block-title { min-inline-size:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
|
|
4278
|
+
font-family:var(--font-code); font-weight:var(--weight-medium); font-size:var(--text-xs); color:var(--muted-foreground); }
|
|
4279
|
+
.code-block-head > .copy-code-text { margin-inline-start:auto; flex:none; }
|
|
4280
|
+
.copy-code-text .c-done { display:none; }
|
|
4281
|
+
.copy-code-text.is-done .c-copy { display:none; } .copy-code-text.is-done .c-done { display:inline-block; }
|
|
4282
|
+
.code-block-wrap.code-block-file > .code-block { padding:calc(var(--space-1) + var(--space-05)) var(--space-5) var(--space-5); border-radius:0; background:transparent;
|
|
4283
|
+
color:var(--foreground); font-size:var(--text-sm); font-weight:var(--weight-medium); overflow:visible; white-space:pre-wrap; overflow-wrap:anywhere; }
|
|
4005
4284
|
/* "On this page": índice da própria página, fixo na lateral. Navegação, não decoração —
|
|
4006
4285
|
por isso é <nav> com rótulo, e o item atual se marca com aria-current. */
|
|
4007
4286
|
.toc { position:sticky; top:var(--space-4); align-self:start; display:grid; gap:var(--space-1); max-height:calc(100vh - var(--space-8)); overflow:auto; padding:var(--space-2) 0; }
|
|
@@ -4470,6 +4749,15 @@ button.tag-main { cursor:pointer; }
|
|
|
4470
4749
|
.dialog-backdrop { position:fixed; inset:0; z-index:var(--z-modal); background:var(--overlay); backdrop-filter:blur(5px); transition:opacity var(--duration-slow) var(--ease-standard); }
|
|
4471
4750
|
.dialog-backdrop[data-starting-style],.dialog-backdrop[data-ending-style] { opacity:0; }
|
|
4472
4751
|
.dialog-backdrop[data-ending-style] { transition-duration:var(--duration-fast); }
|
|
4752
|
+
/* AS JANELAS PRESAS (`data-contained` num contêiner, o site B — aprovado pela bancada em 01/11/2026, o D-4): a janela, a
|
|
4753
|
+
gaveta, o balão e o aviso continuam os de sempre (a pele, as medidas, a entrada e a saída); só a posição muda — em vez da
|
|
4754
|
+
janela inteira do navegador, eles se prendem ao contêiner que os recebe (no React, o `portalContainer` do
|
|
4755
|
+
`AureaProvider` apontando para ele). Para demonstração e para um painel dentro da página. Sem o atributo, nada muda. */
|
|
4756
|
+
[data-contained] { position:relative; overflow:hidden; isolation:isolate; }
|
|
4757
|
+
[data-contained] :is(.dialog-backdrop,.dialog,.drawer,.toast-stack) { position:absolute; z-index:1; }
|
|
4758
|
+
[data-contained] .dialog { inline-size:min(var(--dialog-w),calc(100% - 2 * var(--dialog-margin))); max-block-size:calc(100% - 2 * var(--dialog-margin)); }
|
|
4759
|
+
[data-contained] .drawer-right,[data-contained] .drawer-left { inline-size:min(20rem,85%); }
|
|
4760
|
+
[data-contained] .toast-stack { inline-size:calc(100% - 2 * var(--space-3)); inset-block-end:var(--space-3); }
|
|
4473
4761
|
.dialog { --dialog-margin:var(--space-4); --dialog-w:28rem; position:fixed; inset-inline:0; top:50%; translate:0 -50%; z-index:var(--z-modal); display:flex; flex-direction:column; inline-size:min(var(--dialog-w),calc(100vw - 2 * var(--dialog-margin))); max-block-size:calc(100dvh - 2 * var(--dialog-margin)); margin-inline:auto; padding:var(--space-6); border:var(--border-width) solid transparent; border-radius:var(--radius-card); background:var(--popover); color:var(--popover-foreground); box-shadow:var(--shadow-lg); outline:none; transition:opacity var(--duration-slow) var(--ease-standard),scale var(--duration-slow) var(--ease-standard); }
|
|
4474
4762
|
.dialog[data-starting-style] { opacity:0; scale:1.05; }
|
|
4475
4763
|
.dialog[data-ending-style] { opacity:0; scale:.95; transition-duration:var(--duration-fast); }
|
|
@@ -4679,6 +4967,49 @@ button.tag-main { cursor:pointer; }
|
|
|
4679
4967
|
.command-shortcuts > span { display:inline-flex; align-items:center; gap:var(--space-1); }
|
|
4680
4968
|
.command-item { display:grid; grid-template-columns:auto minmax(0,1fr) auto; gap:var(--space-3); align-items:center; }
|
|
4681
4969
|
.command-item-label { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
|
|
4970
|
+
/* A BUSCA GRANDE (`CommandPalette size="lg"`, o site B — aprovada pela bancada em 01/11/2026, o item 2 e o D-2). Sem o
|
|
4971
|
+
`lg`, os invólucros novos não geram caixa (`display:contents`) e a paleta é a de sempre. A janela tem a largura `lg`
|
|
4972
|
+
(1024); o campo é uma cápsula de 64 (`--space-16`) no `--fill-2`, com a lupa de 20, a letra 18 e o "Esc" dentro — o
|
|
4973
|
+
foco é o do campo inteiro, como o `InputGroup`; os filtros do app vêm embaixo; a lista e a prévia lado a lado (a prévia
|
|
4974
|
+
no `--fill-1`, canto 22, presa ao alto); o título do grupo em mono maiúsculo, com a contagem na ponta; o item de 50
|
|
4975
|
+
(`--control-h-xl`) com o ícone num círculo de 40 tingido pela cor de categoria, o título 16/600 e a descrição cortada;
|
|
4976
|
+
o "↵" amarelo só na linha ativa; o pé com as teclas e o encaixe do app. Até 1280 (o `--breakpoint-xl`; o desenho
|
|
4977
|
+
tem 1240, fora da escala), a prévia some. */
|
|
4978
|
+
.command-body-plain,.command-foot-plain { display:contents; }
|
|
4979
|
+
.command-palette-lg { width:min(var(--breakpoint-lg),100%); gap:var(--space-3); }
|
|
4980
|
+
.command-field { display:flex; align-items:center; gap:var(--space-3); block-size:calc(var(--space-12) + var(--space-1)); padding-inline:var(--space-5) var(--space-3);
|
|
4981
|
+
border-radius:var(--radius-control); background:var(--fill-2); }
|
|
4982
|
+
.command-field:focus-within { outline:var(--focus-width) solid var(--focus-strong); outline-offset:0; }
|
|
4983
|
+
.command-field > .icon { inline-size:var(--icon-md); block-size:var(--icon-md); color:var(--muted-foreground); flex:none; }
|
|
4984
|
+
.command-input { flex:1; min-inline-size:0; border:0; padding:0; background:none; color:inherit; font:inherit; font-size:var(--text-lg); outline:none; }
|
|
4985
|
+
.command-input::placeholder { color:var(--muted-foreground); }
|
|
4986
|
+
.command-filters { display:flex; flex-wrap:wrap; gap:var(--space-2); }
|
|
4987
|
+
.command-group-count { flex:none; font-variant-numeric:tabular-nums; }
|
|
4988
|
+
.command-body { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,25rem); gap:var(--space-4); align-items:start; }
|
|
4989
|
+
.command-palette-lg .command-list { max-height:none; }
|
|
4990
|
+
.command-palette-lg .command-group-label { display:flex; justify-content:space-between; gap:var(--space-2); font-family:var(--font-code); text-transform:uppercase; letter-spacing:.06em; }
|
|
4991
|
+
.command-palette-lg .command-item { grid-template-columns:auto minmax(0,1fr) auto; min-block-size:var(--control-h-xl); padding-block:var(--space-1); border-radius:var(--radius-control); }
|
|
4992
|
+
.command-item-tile { display:inline-grid; place-items:center; inline-size:var(--space-10); block-size:var(--space-10); border-radius:var(--radius-full); flex:none;
|
|
4993
|
+
background:var(--fill-2); color:var(--foreground); }
|
|
4994
|
+
.command-item-tile:empty { visibility:hidden; }
|
|
4995
|
+
.command-item-tile[data-tone="red"] { background:var(--category-red-bg); color:var(--category-red); }
|
|
4996
|
+
.command-item-tile[data-tone="orange"] { background:var(--category-orange-bg); color:var(--category-orange); }
|
|
4997
|
+
.command-item-tile[data-tone="green"] { background:var(--category-green-bg); color:var(--category-green); }
|
|
4998
|
+
.command-item-tile[data-tone="teal"] { background:var(--category-teal-bg); color:var(--category-teal); }
|
|
4999
|
+
.command-item-tile[data-tone="cyan"] { background:var(--category-cyan-bg); color:var(--category-cyan); }
|
|
5000
|
+
.command-item-tile[data-tone="blue"] { background:var(--category-blue-bg); color:var(--category-blue); }
|
|
5001
|
+
.command-item-tile[data-tone="violet"] { background:var(--category-violet-bg); color:var(--category-violet); }
|
|
5002
|
+
.command-item-tile[data-tone="pink"] { background:var(--category-pink-bg); color:var(--category-pink); }
|
|
5003
|
+
.command-item-text { display:grid; min-inline-size:0; }
|
|
5004
|
+
.command-palette-lg .command-item-label { font-size:var(--text-base); font-weight:var(--weight-semibold); }
|
|
5005
|
+
.command-item-description { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:var(--muted-foreground); font-size:var(--text-sm); }
|
|
5006
|
+
.command-item-enter { visibility:hidden; background:var(--primary); color:var(--primary-foreground); }
|
|
5007
|
+
.command-item[data-highlighted] .command-item-enter { visibility:visible; }
|
|
5008
|
+
.command-preview { position:sticky; inset-block-start:0; display:flex; flex-direction:column; align-items:flex-start; gap:var(--space-4); padding:var(--space-5);
|
|
5009
|
+
border-radius:var(--radius-card); background:var(--fill-1); }
|
|
5010
|
+
.command-foot { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:var(--space-4); }
|
|
5011
|
+
.command-foot > .command-shortcuts { padding:0; }
|
|
5012
|
+
@media (max-width:1280px) { .command-body { grid-template-columns:minmax(0,1fr); } .command-preview { display:none; } }
|
|
4682
5013
|
|
|
4683
5014
|
.menu-sep { height:1px; margin:6px 4px; background:var(--border); border:0; }
|
|
4684
5015
|
/* G-API-02 — a anatomia que o menu ganhou quando o dado deixou de ter uma forma só.
|
|
@@ -4852,7 +5183,14 @@ button.tag-main { cursor:pointer; }
|
|
|
4852
5183
|
.combobox-multi:has([aria-invalid="true"]),
|
|
4853
5184
|
.combobox-multi:has(:user-invalid),
|
|
4854
5185
|
.dropzone:has([aria-invalid="true"]),
|
|
4855
|
-
.dropzone:has(:user-invalid)
|
|
5186
|
+
.dropzone:has(:user-invalid),
|
|
5187
|
+
.checkbox-pill[data-tone] input[aria-invalid="true"] + .control-mark,
|
|
5188
|
+
.checkbox-pill[data-tone] input:user-invalid + .control-mark,
|
|
5189
|
+
.radio-group-cards > .radio:has(input[aria-invalid="true"]),
|
|
5190
|
+
.radio-group-cards > .radio:has(input:user-invalid) { border-color:transparent; background-color:var(--danger-bg); --focus-strong:var(--danger-400); }
|
|
5191
|
+
/* ↑ A 0.54.0 (02/11/2026, a trava `invalido.spec.ts`): a cápsula com tom (`Checkbox variant="pill" tone`) tem a regra da
|
|
5192
|
+
marcada com a mesma força desta — aqui, depois, o inválido vence; e o cartão de escolha (`RadioGroup variant="card"`)
|
|
5193
|
+
pinta o CARTÃO inteiro, porque com `indicatorPlacement="none"` a marca que pintava está escondida. */
|
|
4856
5194
|
/* ↑ Sem linha (16/10/2026, o Victor: "quero tudo sem borda sem exceções"): o inválido era a borda vermelha; sem
|
|
4857
5195
|
borda, ele é o FUNDO de perigo (`--danger-bg`), o mesmo dos avisos. A frase de erro do `Field` continua embaixo.
|
|
4858
5196
|
`--focus-strong` (ADR-0059, 08/10/2026): o anel de foco agora COLA na borda e a pinta — com o
|
|
@@ -4925,6 +5263,9 @@ button.notification-item:hover { background:var(--surface-3); }
|
|
|
4925
5263
|
REFERENCES.md; a pele é Aurea. O título vinha com o h3 do NAVEGADOR (16,38px). */
|
|
4926
5264
|
.empty-state { display:flex; flex-direction:column; align-items:center; gap:var(--space-3); padding:var(--space-10) var(--space-6); color:var(--muted-foreground); text-align:center; }
|
|
4927
5265
|
.empty-state > .icon { color:var(--subtle-foreground); }
|
|
5266
|
+
/* A MOLDURA (`framed`, o site B — aprovada pela bancada em 01/11/2026): o ícone num círculo de 64 (`--space-16`), a
|
|
5267
|
+
mesma do `EmptyState` do nativo (R-15, `IconeEmMoldura`): o fundo e a cor do ícone são os dele (`muted`). */
|
|
5268
|
+
.empty-state-frame { display:grid; place-items:center; flex:none; inline-size:var(--space-16); block-size:var(--space-16); border-radius:var(--radius-full); background:var(--muted); color:var(--muted-foreground); }
|
|
4928
5269
|
.empty-state p { max-width:46ch; margin:0; }
|
|
4929
5270
|
.empty-title { margin:0; color:var(--foreground); font-size:var(--text-base); font-weight:var(--weight-semibold); line-height:var(--leading-tight); }
|
|
4930
5271
|
|
|
@@ -5698,7 +6039,7 @@ button.graph-node-body { cursor:pointer; }
|
|
|
5698
6039
|
/* O FOCO DOS CAMPOS no claro é o amarelo, uma linha só, como no escuro (decisão do Victor, 26/10/2026; a medida — 1,75:1
|
|
5699
6040
|
na página, 1,91:1 no cartão, abaixo dos 3:1 — vai à bancada do passo A). Os botões e o resto continuam com o grafite. */
|
|
5700
6041
|
[data-theme="light"] :is(.input,.textarea,.select):focus-visible:where(:not([data-brand="ember"],[data-brand="ember"] *)):where(:not([data-theme="dark"] *),[data-theme="dark"] [data-theme="light"] *),
|
|
5701
|
-
[data-theme="light"] :is(.input-group,.combobox-multi):focus-within:where(:not([data-brand="ember"],[data-brand="ember"] *)):where(:not([data-theme="dark"] *),[data-theme="dark"] [data-theme="light"] *) {
|
|
6042
|
+
[data-theme="light"] :is(.input-group,.combobox-multi,.command-field):focus-within:where(:not([data-brand="ember"],[data-brand="ember"] *)):where(:not([data-theme="dark"] *),[data-theme="dark"] [data-theme="light"] *) {
|
|
5702
6043
|
outline-color:var(--primary); }
|
|
5703
6044
|
|
|
5704
6045
|
/* "AUMENTAR CONTRASTE" do sistema (`prefers-contrast: more`: o "Aumentar contraste" do macOS, do iOS e do Android, o
|
|
@@ -5712,7 +6053,7 @@ button.graph-node-body { cursor:pointer; }
|
|
|
5712
6053
|
:root:where(:not([data-brand="ember"])),[data-theme]:where(:not([data-brand="ember"],[data-brand="ember"] *)) {
|
|
5713
6054
|
--control-thumb:var(--brand-yellow-ink); --control-selected-foreground:var(--brand-yellow-ink); --control-selected-dot:var(--brand-yellow-ink); }
|
|
5714
6055
|
[data-theme="light"] :is(.input,.textarea,.select):focus-visible:where(:not([data-brand="ember"],[data-brand="ember"] *)):where(:not([data-theme="dark"] *),[data-theme="dark"] [data-theme="light"] *),
|
|
5715
|
-
[data-theme="light"] :is(.input-group,.combobox-multi):focus-within:where(:not([data-brand="ember"],[data-brand="ember"] *)):where(:not([data-theme="dark"] *),[data-theme="dark"] [data-theme="light"] *) {
|
|
6056
|
+
[data-theme="light"] :is(.input-group,.combobox-multi,.command-field):focus-within:where(:not([data-brand="ember"],[data-brand="ember"] *)):where(:not([data-theme="dark"] *),[data-theme="dark"] [data-theme="light"] *) {
|
|
5716
6057
|
outline-color:var(--focus-strong); }
|
|
5717
6058
|
}
|
|
5718
6059
|
|
|
@@ -5767,6 +6108,10 @@ button.graph-node-body { cursor:pointer; }
|
|
|
5767
6108
|
:is([data-segment-style="brand"] .segmented:not([data-segment-style]),.segmented[data-segment-style="brand"]) :is(button,a).active { --seg-bg:var(--primary); --seg-fg:var(--primary-foreground); --seg-shadow:none; }
|
|
5768
6109
|
:is([data-segment-style="ring"] .segmented:not([data-segment-style]),.segmented[data-segment-style="ring"]) :is(button,a).active { --seg-bg:var(--segment); --seg-fg:var(--foreground); --seg-shadow:inset 0 0 0 calc(1.5 * var(--border-width)) var(--primary), var(--shadow-sm); }
|
|
5769
6110
|
:is([data-segment-style="dot"] .segmented:not([data-segment-style]),.segmented[data-segment-style="dot"]) :is(button,a).active { --seg-bg:var(--segment); --seg-fg:var(--foreground); --seg-shadow:var(--shadow-sm); }
|
|
6111
|
+
/* `emphasis` (o site B, 02/11/2026 — o Victor escolheu a "C" na imagem): a cápsula erguida do `neutral` com a letra do
|
|
6112
|
+
DESTAQUE, a mesma do escolhido de sempre (`--primary-emphasis`: o amarelo no escuro, a cor do texto no claro), e sem o
|
|
6113
|
+
fio de baixo. */
|
|
6114
|
+
:is([data-segment-style="emphasis"] .segmented:not([data-segment-style]),.segmented[data-segment-style="emphasis"]) :is(button,a).active { --seg-bg:var(--segment); --seg-fg:var(--primary-emphasis); --seg-shadow:var(--shadow-sm); }
|
|
5770
6115
|
:is([data-segment-style]:not([data-segment-style="current"]) .segmented:not([data-segment-style]),.segmented[data-segment-style]:not([data-segment-style="current"])) :is(button,a).active {
|
|
5771
6116
|
--btn-bg:var(--seg-bg); --btn-fg:var(--seg-fg); background:var(--seg-bg); color:var(--seg-fg); box-shadow:var(--seg-shadow); }
|
|
5772
6117
|
:is([data-segment-style]:not([data-segment-style="current"]) .segmented:not([data-segment-style]),.segmented[data-segment-style]:not([data-segment-style="current"])) :is(button,a).active::after { content:none; }
|
package/dist/aurea.js
CHANGED
|
@@ -108,6 +108,19 @@
|
|
|
108
108
|
if (trigger) copy(trigger);
|
|
109
109
|
});
|
|
110
110
|
|
|
111
|
+
// A CAIXA EMPILHADA (ADR-0089): o [data-aurea-code-expand] abre e recolhe o código da caixa — troca `data-collapsed` por
|
|
112
|
+
// `data-expanded`, o `aria-expanded` e o texto ("Expand code" / "Collapse code", lidos do próprio botão).
|
|
113
|
+
document.addEventListener("click", function (event) {
|
|
114
|
+
var botao = event.target.closest && event.target.closest("[data-aurea-code-expand]");
|
|
115
|
+
var caixa = botao && botao.closest(".demo-stacked");
|
|
116
|
+
if (!caixa) return;
|
|
117
|
+
var abre = caixa.hasAttribute("data-collapsed");
|
|
118
|
+
caixa.toggleAttribute("data-collapsed", !abre);
|
|
119
|
+
caixa.toggleAttribute("data-expanded", abre);
|
|
120
|
+
botao.setAttribute("aria-expanded", abre ? "true" : "false");
|
|
121
|
+
botao.textContent = botao.getAttribute(abre ? "data-label-collapse" : "data-label-expand") || botao.textContent;
|
|
122
|
+
});
|
|
123
|
+
|
|
111
124
|
// GAR-14 (0.28.0) · COMPARTILHAR. O gatilho marcado com [data-aurea-share] (o `Button share` do
|
|
112
125
|
// React emite isto) pergunta ao navegador se ele sabe compartilhar ESTE link — detectar o recurso,
|
|
113
126
|
// e não adivinhar o aparelho, é o padrão da web. Sabe: abre a janela do aparelho; a pessoa
|