@aurea-uds/core 0.24.1 → 0.25.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 +36 -8
- package/package.json +1 -1
package/dist/aurea.css
CHANGED
|
@@ -47,6 +47,7 @@
|
|
|
47
47
|
--focus-width:2px;
|
|
48
48
|
--focus-offset:2px;
|
|
49
49
|
--opacity-disabled:0.5;
|
|
50
|
+
--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);
|
|
50
51
|
--shadow-md:0 16px 42px rgba(0,0,0,0.28);
|
|
51
52
|
--shadow-lg:0 28px 80px rgba(0,0,0,0.42);
|
|
52
53
|
--duration-fast:120ms;
|
|
@@ -176,6 +177,7 @@
|
|
|
176
177
|
--primary-hover:oklch(0.835 0.19 89);
|
|
177
178
|
--primary-active:oklch(0.74 0.17 84);
|
|
178
179
|
--secondary-hover:oklch(0.31 0.006 286.033);
|
|
180
|
+
--segment:oklch(0.3964 0.01 285.93);
|
|
179
181
|
--focus:var(--primary);
|
|
180
182
|
--focus-strong:var(--primary);
|
|
181
183
|
--primary-emphasis:var(--primary);
|
|
@@ -246,6 +248,7 @@
|
|
|
246
248
|
--primary-hover:oklch(0.835 0.19 89);
|
|
247
249
|
--primary-active:oklch(0.74 0.17 84);
|
|
248
250
|
--secondary-hover:var(--surface-hover);
|
|
251
|
+
--segment:oklch(1 0 0);
|
|
249
252
|
--focus:var(--primary);
|
|
250
253
|
--focus-strong:var(--brand-yellow-foreground);
|
|
251
254
|
--primary-emphasis:var(--brand-yellow-text);
|
|
@@ -295,6 +298,7 @@
|
|
|
295
298
|
--secondary:oklch(0.245 0.02 250);
|
|
296
299
|
--secondary-foreground:oklch(0.96 0.006 250);
|
|
297
300
|
--secondary-hover:oklch(0.28 0.02 250);
|
|
301
|
+
--segment:oklch(0.312 0.02 250);
|
|
298
302
|
--muted:oklch(0.19 0.02 250);
|
|
299
303
|
--muted-foreground:oklch(0.72 0.015 250);
|
|
300
304
|
--subtle-foreground:oklch(0.58 0.016 250);
|
|
@@ -437,7 +441,17 @@ body { margin:0; background:var(--background); color:var(--foreground); font-fam
|
|
|
437
441
|
::selection { background:var(--selection); }
|
|
438
442
|
button,input,textarea,select { font:inherit; }
|
|
439
443
|
button,a,[role="button"],input,textarea,select { outline:none; }
|
|
440
|
-
:focus-visible { outline:var(--focus-width) solid var(--focus-strong); outline-offset:var(--focus-offset); box-shadow:none;
|
|
444
|
+
:focus-visible { outline:var(--focus-width) solid var(--focus-strong); outline-offset:var(--focus-offset); box-shadow:none; }
|
|
445
|
+
/* UMA LINHA SÓ (ADR-0059, 08/10/2026). O anel afastado, sozinho, é uma linha — mas na peça que tem
|
|
446
|
+
BORDA PRÓPRIA ele desenhava borda + vão + anel: duas linhas, em 39 peças medidas no catálogo. E a
|
|
447
|
+
regra de cima pintava TODA borda de amarelo com `!important`, o que dava uma segunda linha até no
|
|
448
|
+
botão de borda transparente, depois da transição. Agora só a peça com borda muda a borda: ela
|
|
449
|
+
passa para a cor do foco e o anel ENCOSTA nela, sem vão — uma faixa só, de borda + anel, como o
|
|
450
|
+
anel colado do campo da referência principal. A peça sem borda (o botão cheio, a aba) continua com
|
|
451
|
+
o vão: colado, o anel amarelo sumiria no botão amarelo.
|
|
452
|
+
Quem cobra que nenhuma peça ficou de fora é o catálogo inteiro, no navegador:
|
|
453
|
+
`tests/visual/foco-uma-linha.spec.ts`. */
|
|
454
|
+
:is(.input,.textarea,.select,.btn-outline,.btn-primary-outline,.btn-danger-outline,.media-control,.card,.code-block,.graph-node-body):focus-visible { outline-offset:0; border-color:var(--focus-strong); }
|
|
441
455
|
button { color:inherit; }
|
|
442
456
|
/* O link NÃO é `--primary`. Medido em 22/08/2026 com o axe e depois à mão: o amarelo da
|
|
443
457
|
marca sobre o fundo do tema CLARO dá 1,73:1, e o AA de texto (WCAG 1.4.3) pede 4,5:1 —
|
|
@@ -1463,7 +1477,7 @@ img,svg { display:block; }
|
|
|
1463
1477
|
contorno do input de dentro ficaria escondido atrás da borda do grupo. */
|
|
1464
1478
|
.input-group { display:flex; flex-wrap:wrap; align-items:center; inline-size:100%; min-inline-size:0; min-block-size:var(--control-h-md); background:var(--field-bg); border:1px solid var(--border-strong); border-radius:var(--radius-control); transition:border-color var(--duration-fast),box-shadow var(--duration-fast); }
|
|
1465
1479
|
.input-group:hover { border-color:var(--border); }
|
|
1466
|
-
.input-group:focus-within { outline:var(--focus-width) solid var(--focus-strong); outline-offset:var(--focus-
|
|
1480
|
+
.input-group:focus-within { outline:var(--focus-width) solid var(--focus-strong); outline-offset:0; border-color:var(--focus-strong); }
|
|
1467
1481
|
.input-group:has(.input-sm) { min-block-size:var(--control-h-sm); }
|
|
1468
1482
|
.input-group:has(.input-lg) { min-block-size:var(--control-h-lg); }
|
|
1469
1483
|
/* O controle dentro do grupo abre mão da própria moldura: quem desenha a caixa é o grupo. */
|
|
@@ -1598,7 +1612,12 @@ img,svg { display:block; }
|
|
|
1598
1612
|
.control-mark-lg { --step-h:var(--control-h-lg); }
|
|
1599
1613
|
.checkbox .control-mark { border-radius:5px; } .radio .control-mark { border-radius:50%; }
|
|
1600
1614
|
.checkbox input:checked + .control-mark { background:var(--control-selected); border-color:var(--control-selected); color:var(--control-selected-foreground); }
|
|
1601
|
-
.checkbox input:focus-visible + .control-mark,.radio input:focus-visible + .control-mark,.switch input:focus-visible + .switch-track { outline:var(--focus-width) solid var(--focus-strong); outline-offset:var(--focus-
|
|
1615
|
+
.checkbox input:focus-visible + .control-mark,.radio input:focus-visible + .control-mark,.switch input:focus-visible + .switch-track { outline:var(--focus-width) solid var(--focus-strong); outline-offset:0; border-color:var(--focus-strong); }
|
|
1616
|
+
/* Cheia com a cor do foco (marcada, ligada), a peça volta ao VÃO (ADR-0059): colado, o anel sumiria
|
|
1617
|
+
no recheio, como no botão amarelo. A borda dela já é da cor do recheio, então continua uma linha
|
|
1618
|
+
só — é o que a referência principal faz no checkbox e no switch. Inválida, a borda é vermelha e o
|
|
1619
|
+
anel volta a colar (vermelho, pela regra do inválido). */
|
|
1620
|
+
.checkbox input:focus-visible:checked:not([aria-invalid="true"],:user-invalid) + .control-mark,.switch input:focus-visible:checked:not([aria-invalid="true"],:user-invalid) + .switch-track { outline-offset:var(--focus-offset); }
|
|
1602
1621
|
.checkbox input:checked + .control-mark:after { content:""; width:8px; height:4px; border-left:2px solid currentColor; border-bottom:2px solid currentColor; transform:rotate(-45deg) translateY(-1px); }
|
|
1603
1622
|
.radio input:checked + .control-mark:after { content:""; width:8px; height:8px; border-radius:50%; background:var(--control-selected); }
|
|
1604
1623
|
.switch { display:inline-flex; align-items:center; gap:10px; cursor:pointer; } .switch input { position:absolute; opacity:0; }
|
|
@@ -1646,7 +1665,7 @@ img,svg { display:block; }
|
|
|
1646
1665
|
os filhos esticam sozinhos (align-items é stretch por padrão) e a conta fecha nas TRÊS. */
|
|
1647
1666
|
.segmented { display:inline-flex; gap:3px; padding:3px; min-height:var(--control-h-md); border-radius:var(--radius-control); background:var(--muted); border:1px solid transparent; box-shadow:none; }
|
|
1648
1667
|
.segmented button { padding:0 14px; border:0; border-radius:var(--radius-control); color:var(--muted-foreground); background:transparent; cursor:pointer; }
|
|
1649
|
-
.segmented button.active { color:var(--foreground); background:var(--
|
|
1668
|
+
.segmented button.active { color:var(--foreground); background:var(--segment); box-shadow:var(--shadow-sm); border:0; }
|
|
1650
1669
|
/* `fullWidth` (A5, 06/10/2026): ocupa a linha, e cada segmento cresce a partir do rótulo sem
|
|
1651
1670
|
encolher abaixo dele — o mesmo desenho do nativo. `1 0 auto` e não `1` (= `1 1 0%`): base zero
|
|
1652
1671
|
reparte a largura em partes iguais, e é isso que quebrava o rótulo no nativo rodando no
|
|
@@ -1666,6 +1685,11 @@ img,svg { display:block; }
|
|
|
1666
1685
|
dos 4.5:1 do AA, então o rótulo aprofunda com --foreground e segue âmbar. */
|
|
1667
1686
|
.is-selected,.btn-nav[aria-current]:not([aria-current="false"]),.btn[aria-pressed="true"],
|
|
1668
1687
|
.segmented button.active { --btn-bg:var(--secondary); --btn-fg:var(--primary); position:relative; background:var(--secondary); color:var(--primary); }
|
|
1688
|
+
/* A CÁPSULA ELEVADA que a regra acima promete, e que no trilho não se via (ADR-0059, 08/10/2026):
|
|
1689
|
+
o segmento aceso e a aba escolhida vivem sobre --muted, e --secondary dava 1:1 contra ele no
|
|
1690
|
+
claro e 1,02:1 no escuro. Sobre o trilho a cápsula é --segment, com a sombra pequena — como a
|
|
1691
|
+
aba da referência principal. O rótulo na cor da marca e o fio continuam. */
|
|
1692
|
+
.segmented button.active { --btn-bg:var(--segment); background:var(--segment); box-shadow:var(--shadow-sm); }
|
|
1669
1693
|
/* O ATIVO DA NAV DA LATERAL sai da escala DELA, e não da página (20/08/2026, o Victor viu sob a
|
|
1670
1694
|
marca `lory`). Ele dividia esta regra com o `.segmented`, que vive no conteúdo — e `--secondary`
|
|
1671
1695
|
é quase branco no tema claro. Numa lateral escura isso desenhava uma pílula branca com texto
|
|
@@ -1905,7 +1929,7 @@ img,svg { display:block; }
|
|
|
1905
1929
|
sai serrilhada, que é o mesmo defeito que o `.btn-group-vertical` resolve com `stretch`. */
|
|
1906
1930
|
.tabs[data-orientation="vertical"] .tab { min-block-size:var(--control-h-md); text-align:start; }
|
|
1907
1931
|
.tab { position:relative; padding:0 14px; border:0; border-radius:var(--radius-control); background:transparent; color:var(--muted-foreground); cursor:pointer; }
|
|
1908
|
-
.tab.active,.tab[data-active] { color:var(--foreground); background:var(--
|
|
1932
|
+
.tab.active,.tab[data-active] { color:var(--foreground); background:var(--segment); box-shadow:var(--shadow-sm); } .tab.active:after,.tab[data-active]:after { display:none; }
|
|
1909
1933
|
/* `panel="plain"` (MNT-05 e C9, 06/10/2026): o painel sem caixa, como o painel de abas da
|
|
1910
1934
|
referência. Sem recheio dos lados — o conteúdo começa na linha do que está fora do `Tabs` —, e o
|
|
1911
1935
|
espaço de cima é o mesmo `space-3` do painel do nativo. Na vertical, quem separa é o `gap` da
|
|
@@ -2643,7 +2667,7 @@ img,svg { display:block; }
|
|
|
2643
2667
|
/* MultiCombobox (Fase 4) — chips de multi-seleção + grupos. Espaçamento novo tokenizado. */
|
|
2644
2668
|
.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); }
|
|
2645
2669
|
.combobox-multi:hover { border-color:var(--border); }
|
|
2646
|
-
.combobox-multi:focus-within { outline:var(--focus-width) solid var(--focus-strong); outline-offset:
|
|
2670
|
+
.combobox-multi:focus-within { outline:var(--focus-width) solid var(--focus-strong); outline-offset:0; border-color:var(--focus-strong); }
|
|
2647
2671
|
.combobox-multi>.combobox-actions { position:static; inset-inline-end:auto; }
|
|
2648
2672
|
/* o campo de chips não é `.input`, então a regra de :disabled dos campos não o alcança. Quem
|
|
2649
2673
|
marca aqui é o `data-disabled` que o Base UI põe no InputGroup a partir do estado da Root. */
|
|
@@ -2669,7 +2693,7 @@ img,svg { display:block; }
|
|
|
2669
2693
|
o arrastar-soltar é reforço. Espaçamento novo tokenizado; superfície = card. */
|
|
2670
2694
|
.dropzone { display:flex; flex-direction:column; align-items:center; gap:var(--space-2); padding:var(--space-8) var(--space-6); text-align:center; color:var(--muted-foreground); background:var(--surface-inset); border:1px dashed var(--border-strong); border-radius:var(--radius-card); cursor:pointer; transition:border-color var(--duration-fast),background-color var(--duration-fast); }
|
|
2671
2695
|
.dropzone:hover { border-color:var(--border); }
|
|
2672
|
-
.dropzone:focus-within { outline:var(--focus-width) solid var(--focus-strong); outline-offset:
|
|
2696
|
+
.dropzone:focus-within { outline:var(--focus-width) solid var(--focus-strong); outline-offset:0; border-color:var(--focus-strong); }
|
|
2673
2697
|
.dropzone[data-dragging="true"] { border-style:solid; border-color:var(--primary); background:var(--surface-2); }
|
|
2674
2698
|
.dropzone strong { color:var(--foreground); }
|
|
2675
2699
|
.dropzone-icon { color:var(--primary); }
|
|
@@ -2737,7 +2761,11 @@ img,svg { display:block; }
|
|
|
2737
2761
|
.combobox-multi:has([aria-invalid="true"]),
|
|
2738
2762
|
.combobox-multi:has(:user-invalid),
|
|
2739
2763
|
.dropzone:has([aria-invalid="true"]),
|
|
2740
|
-
.dropzone:has(:user-invalid) { border-color:var(--danger-400); }
|
|
2764
|
+
.dropzone:has(:user-invalid) { border-color:var(--danger-400); --focus-strong:var(--danger-400); }
|
|
2765
|
+
/* ↑ `--focus-strong` (ADR-0059, 08/10/2026): o anel de foco agora COLA na borda e a pinta — com o
|
|
2766
|
+
amarelo, o campo inválido perdia o vermelho justo enquanto a pessoa corrige. No inválido o anel é
|
|
2767
|
+
da cor do perigo, como o campo inválido da referência principal. Cor por contexto se faz assim,
|
|
2768
|
+
redefinindo `--focus-strong` (check 44). */
|
|
2741
2769
|
|
|
2742
2770
|
|
|
2743
2771
|
/* TreeView (Fase 4) — árvore headless própria (Base UI 1.6 não tem tree).
|