@aurea-uds/core 0.18.0 → 0.19.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 +59 -6
- package/package.json +1 -1
package/dist/aurea.css
CHANGED
|
@@ -2027,6 +2027,40 @@ img,svg { display:block; }
|
|
|
2027
2027
|
/* Chat React (Fase 5.4): estrutura fixa em classe, não inline (auditoria 18/07, M14). */
|
|
2028
2028
|
.message-status { display:flex; align-items:center; flex-wrap:wrap; gap:var(--space-3); margin-block-start:var(--space-2); }
|
|
2029
2029
|
.message-composer { display:flex; align-items:center; gap:var(--space-3); flex-wrap:nowrap; } .message-composer .input-group { flex:1; min-width:0; }
|
|
2030
|
+
/* AN-03 (Lote H, 04/10/2026). A FAIXA ACIMA DO CAMPO é o adorno em bloco da casa, empilhado: a
|
|
2031
|
+
citação (responder ou editar) em cima, os anexos embaixo. Com ela o grupo vira superfície (raio
|
|
2032
|
+
de cartão, a regra do adorno em bloco) e o botão de enviar desce para a linha do campo, onde
|
|
2033
|
+
está o texto — sem faixa, nada muda.
|
|
2034
|
+
A CITAÇÃO é a da prosa: o fio no começo da linha, apagado, com o recuo de dentro. O fio tem a
|
|
2035
|
+
espessura do `blockquote` da `.prose` (2), escrita a partir do `--border-width`. O título leva o
|
|
2036
|
+
peso médio, e o corpo fica numa linha só, com reticências. Ela serve também ao cabeçalho de
|
|
2037
|
+
resposta do `MessageList` (AN-02). */
|
|
2038
|
+
.message-composer:has(.message-composer-context) { align-items:flex-end; }
|
|
2039
|
+
.message-composer-context { flex-direction:column; align-items:stretch; gap:var(--space-2); color:var(--foreground); }
|
|
2040
|
+
.message-composer-context > .file-list { margin:0; }
|
|
2041
|
+
.message-quote { display:flex; align-items:center; gap:var(--space-2); padding-inline-start:var(--space-3); border-inline-start:calc(var(--border-width) * 2) solid var(--border-strong); color:var(--muted-foreground); font-size:var(--text-sm); }
|
|
2042
|
+
.message-quote > .icon { flex:none; }
|
|
2043
|
+
.message-quote-text { display:grid; flex:1; min-inline-size:0; }
|
|
2044
|
+
.message-quote-title { color:var(--foreground); font-weight:var(--weight-medium); }
|
|
2045
|
+
.message-quote-body { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
|
|
2046
|
+
/* AN-02 (Lote H, 04/10/2026). O LADO DA MENSAGEM. Quem declara `direction` ganha a bolha do
|
|
2047
|
+
tamanho do texto e uma folga do lado oposto igual ao avatar mais o vão (`--control-h-md` +
|
|
2048
|
+
`--space-3`): a conversa fica em duas margens, como em todo app de mensagem. Quem não declara
|
|
2049
|
+
continua como antes, com a bolha na largura toda.
|
|
2050
|
+
A MINHA vai para o fim, sem avatar, com o canto pequeno (`--radius-xs`, os mesmos 6 da bolha de
|
|
2051
|
+
sempre) do lado dela, e o fundo tingido da marca — o mesmo tom do nó escolhido do `TreeView`, que
|
|
2052
|
+
já é a forma desta folha de dizer "é seu" sem o amarelo cheio. Os cantos são lógicos: viram
|
|
2053
|
+
sozinhos na escrita da direita para a esquerda.
|
|
2054
|
+
O ÁLBUM é a `Gallery`, e a medida dela: no máximo duas miniaturas por linha (`--gallery-min` ×2
|
|
2055
|
+
mais o vão), e `auto-fit` para uma foto só ocupar a largura. */
|
|
2056
|
+
.message-in { padding-inline-end:calc(var(--control-h-md) + var(--space-3)); }
|
|
2057
|
+
.message-out { grid-template-columns:minmax(0,1fr); padding-inline-start:calc(var(--control-h-md) + var(--space-3)); }
|
|
2058
|
+
.message-in > .message-bubble { justify-self:start; border-radius:var(--radius-lg); border-start-start-radius:var(--radius-xs); }
|
|
2059
|
+
.message-out > .message-bubble { justify-self:end; border-radius:var(--radius-lg); border-start-end-radius:var(--radius-xs); background:color-mix(in srgb,var(--primary) 14%,transparent); }
|
|
2060
|
+
.message-day { display:flex; justify-content:center; }
|
|
2061
|
+
.message-forwarded { display:flex; align-items:center; gap:var(--space-1); color:var(--muted-foreground); font-size:var(--text-sm); }
|
|
2062
|
+
.message-bubble > .message-forwarded, .message-bubble > .message-quote, .message-bubble > .message-album, .message-bubble > .file-list { margin-block:0 var(--space-2); }
|
|
2063
|
+
.message-album { inline-size:min(100%, calc(var(--gallery-min,8rem) * 2 + var(--space-3))); grid-template-columns:repeat(auto-fit,minmax(var(--gallery-min,8rem),1fr)); }
|
|
2030
2064
|
|
|
2031
2065
|
/* ========================================================================== */
|
|
2032
2066
|
/* 07. MÍDIA */
|
|
@@ -2133,6 +2167,17 @@ img,svg { display:block; }
|
|
|
2133
2167
|
qualquer forma — ele é `buttonface`, não transparente. */
|
|
2134
2168
|
.gallery-tile:not(.is-selected) { background:transparent; color:var(--muted-foreground); }
|
|
2135
2169
|
.gallery-caption { font-size:var(--text-sm); }
|
|
2170
|
+
/* AN-05 (Lote H, 04/10/2026). O VÍDEO não inventa peça: é o `Badge` da casa, pousado no canto do
|
|
2171
|
+
fim da foto, com as cores do reprodutor: o véu (`--media-scrim`, preto a 82%) e a letra dele
|
|
2172
|
+
(`--media-foreground`). O `--media-track` que o `.media-player` dá ao `Badge` é branco a 18% e só
|
|
2173
|
+
funciona sobre o véu: sobre foto clara, o tempo sumia (visto no banco em 04/10/2026). O canto é lógico (`inset-inline-end`), então vira sozinho na escrita da
|
|
2174
|
+
direita para a esquerda; o recuo do canto é `--space-2`.
|
|
2175
|
+
A LINHA DE "CARREGANDO MAIS" tem a medida do `Table.LoadMore` do HeroUI (`py-3`, centrada): é
|
|
2176
|
+
ela que o observador vigia, então existe também parada, sem a rodinha. A do `MessageList` (AN-02),
|
|
2177
|
+
nas duas pontas da conversa, é a mesma linha. */
|
|
2178
|
+
.gallery-media { position:relative; display:block; }
|
|
2179
|
+
.gallery-media > .gallery-duration { position:absolute; inset-block-end:var(--space-2); inset-inline-end:var(--space-2); border-color:var(--media-scrim); background:var(--media-scrim); color:var(--media-foreground); }
|
|
2180
|
+
.gallery-more,.message-more { display:flex; align-items:center; justify-content:center; min-block-size:var(--icon-sm); padding-block:var(--space-3); color:var(--muted-foreground); }
|
|
2136
2181
|
|
|
2137
2182
|
/* TIPOGRAFIA (B-02, 25/09/2026) — `Text`, `Heading`, `Paragraph` e `Code`, no molde do HeroUI
|
|
2138
2183
|
3.2.6 (`typography.css`), por ordem do Victor: HeroUI sempre primeiro. O que vem dele é a FORMA:
|
|
@@ -2520,22 +2565,30 @@ img,svg { display:block; }
|
|
|
2520
2565
|
/* TreeView (Fase 4) — árvore headless própria (Base UI 1.6 não tem tree).
|
|
2521
2566
|
role=tree/treeitem/group + roving tabindex vêm do React; aqui só a pele.
|
|
2522
2567
|
A indentação por nível é padding-inline-start inline (style). Espaço novo
|
|
2523
|
-
tokenizado
|
|
2568
|
+
tokenizado. A linha é CÁPSULA (`--radius-control`): o escolhido e o realce de passar o mouse
|
|
2569
|
+
são cápsula, como os campos, as abas e os botões de texto — regra do Victor, dita olhando a
|
|
2570
|
+
bancada do Lote H em 04/10/2026. Antes era `--radius-sm` (8). O texto do nó é uma linha só
|
|
2571
|
+
(`.tree-label` não quebra), então a cápsula não deforma. */
|
|
2524
2572
|
.tree, .tree-group { margin:0; padding:0; list-style:none; }
|
|
2525
2573
|
.tree-item { outline:none; }
|
|
2526
|
-
.tree-node { display:flex; align-items:center; gap:var(--space-2); min-height:var(--control-h-md); padding-block:var(--space-1); padding-inline-end:var(--space-3); border-radius:var(--radius-
|
|
2574
|
+
.tree-node { display:flex; align-items:center; gap:var(--space-2); min-height:var(--control-h-md); padding-block:var(--space-1); padding-inline-end:var(--space-3); border-radius:var(--radius-control); color:var(--foreground); cursor:pointer; user-select:none; }
|
|
2527
2575
|
.tree-node:hover { background:var(--surface-3); }
|
|
2528
2576
|
.tree-item:focus-visible > .tree-node { outline:var(--focus-width) solid var(--focus-strong); outline-offset:calc(-1 * var(--focus-width)); }
|
|
2529
2577
|
.tree-node[data-selected] { background:color-mix(in srgb,var(--primary) 14%,transparent); }
|
|
2530
|
-
|
|
2531
|
-
|
|
2532
|
-
|
|
2578
|
+
/* A seta gira pela propriedade `rotate`, e não por `transform`: assim a rodinha que ocupa o lugar
|
|
2579
|
+
dela enquanto o nó carrega (AN-06) continua girando pela animação dela, que é `transform`.
|
|
2580
|
+
Na escrita da direita para a esquerda a seta fechada aponta para a esquerda. Quem diz a direção é
|
|
2581
|
+
o React, pela direção do provedor (`.tree-twist-rtl`), e não `:dir(rtl)` — o empacotador do app
|
|
2582
|
+
reescreve `:dir()` como lista de idiomas e a regra deixa de pegar (medido no Vite, 03/10/2026). */
|
|
2583
|
+
.tree-twist { flex:none; color:var(--muted-foreground); transition:rotate var(--duration-fast); }
|
|
2584
|
+
.tree-twist-rtl { rotate:180deg; }
|
|
2585
|
+
.tree-item[aria-expanded="true"] > .tree-node > .tree-twist { rotate:90deg; }
|
|
2533
2586
|
.tree-indent { flex:none; width:1rem; }
|
|
2534
2587
|
.tree-label { flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
|
|
2535
2588
|
|
|
2536
2589
|
/* NotificationCenter (Fase 4) — compõe o .popover; aqui só o gatilho com count,
|
|
2537
2590
|
o cabeçalho e as linhas do feed. Espaço novo tokenizado; a linha usa radius-sm
|
|
2538
|
-
(não é pill, como o .menu-item
|
|
2591
|
+
(não é pill, como o .menu-item; o .tree-node virou cápsula em 04/10/2026). O painel NÃO é live region — a
|
|
2539
2592
|
chegada é anunciada por um role=status à parte no React. */
|
|
2540
2593
|
.notification-trigger { position:relative; display:inline-flex; }
|
|
2541
2594
|
.notification-count { position:absolute; inset-block-start:-4px; inset-inline-end:-4px; display:inline-flex; align-items:center; justify-content:center; min-width:18px; height:18px; padding:0 var(--space-1); border-radius:var(--radius-control); background:var(--primary); color:var(--primary-foreground); font-size:var(--text-xs); font-weight:var(--weight-semibold); line-height:var(--leading-none); pointer-events:none; }
|