@aurea-uds/core 0.29.0 → 0.31.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 +123 -2
- package/package.json +1 -1
package/dist/aurea.css
CHANGED
|
@@ -3214,7 +3214,21 @@ th[aria-sort] .datagrid-sort-icon { color:var(--primary); }
|
|
|
3214
3214
|
--xy-edge-label-color:var(--muted-foreground);
|
|
3215
3215
|
--xy-edge-label-background-color:var(--card);
|
|
3216
3216
|
--xy-connectionline-stroke:var(--primary);
|
|
3217
|
-
--xy-attribution-background-color:transparent;
|
|
3217
|
+
--xy-attribution-background-color:transparent;
|
|
3218
|
+
/* O minimapa (ADR-0064) se veste pelas variáveis dele, como o resto do motor. */
|
|
3219
|
+
--xy-minimap-background-color:var(--card);
|
|
3220
|
+
--xy-minimap-mask-background-color:color-mix(in oklab,var(--background) 70%,transparent);
|
|
3221
|
+
--xy-minimap-mask-stroke-color:var(--border-strong);
|
|
3222
|
+
--xy-minimap-node-background-color:var(--muted-foreground);
|
|
3223
|
+
--xy-minimap-node-stroke-color:transparent;
|
|
3224
|
+
/* A espessura de base da linha: a do sistema (1). O alto contraste dobra a base, e os pesos e
|
|
3225
|
+
traços são múltiplos dela — por isso nada aqui é número solto. */
|
|
3226
|
+
--graph-edge-base:var(--border-width);
|
|
3227
|
+
/* (Rodada 2) O rótulo de HTML fica ACIMA das linhas e dos contêineres: o motor eleva a linha de quem
|
|
3228
|
+
está dentro de um contêiner ao andar do nó (1, 2…), e a caixa do contêiner é um nó — sem isto, o
|
|
3229
|
+
"10G" saía por baixo da fibra e o nome da porta, por baixo do site (medido na bancada). 1000 é o
|
|
3230
|
+
degrau que o próprio motor usa para elevar o escolhido; o rótulo que encosta num nó some (MNT-12.5). */
|
|
3231
|
+
--graph-label-z:1000; }
|
|
3218
3232
|
/* A atribuição do motor (que a licença dele manda manter, e mantemos) traz `color:#999`
|
|
3219
3233
|
CRAVADO no `init.css` — o único ponto em que a folha "estrutural" carrega cor. Reprovou
|
|
3220
3234
|
contraste no axe, tema claro. A regra é de ELEMENTO e vem ESCOPADA à nossa classe, que é a
|
|
@@ -3226,7 +3240,7 @@ th[aria-sort] .datagrid-sort-icon { color:var(--primary); }
|
|
|
3226
3240
|
.dependency-graph a[href] { color:var(--muted-foreground); }
|
|
3227
3241
|
/* O nó é uma superfície flutuante como qualquer outra da Aurea — mesmo raio de cartão, mesma
|
|
3228
3242
|
borda, mesmo fundo. É aqui que ele deixa de parecer React Flow. */
|
|
3229
|
-
.graph-node { position:relative; inline-size:180px; }
|
|
3243
|
+
.graph-node { position:relative; inline-size:var(--graph-node-w,180px); }
|
|
3230
3244
|
.graph-node-body { display:grid; gap:var(--space-05); inline-size:100%; padding:var(--space-2) var(--space-3); border:1px solid var(--border); border-radius:var(--radius-card); background:var(--card); color:var(--foreground); font-family:inherit; font-size:var(--text-sm); text-align:start; }
|
|
3231
3245
|
button.graph-node-body { cursor:pointer; }
|
|
3232
3246
|
.graph-node[data-selected] .graph-node-body { border-color:var(--primary); }
|
|
@@ -3235,6 +3249,113 @@ button.graph-node-body { cursor:pointer; }
|
|
|
3235
3249
|
que esta parte recusa a mesma coisa. */
|
|
3236
3250
|
.graph-node-kind { color:var(--subtle-foreground); font-size:var(--text-xs); letter-spacing:var(--tracking-wider); text-transform:uppercase; }
|
|
3237
3251
|
.graph-handle { inline-size:var(--space-2); block-size:var(--space-2); border:1px solid var(--border); background:var(--surface-2); }
|
|
3252
|
+
/* ── RODADA 1 DA REDE (ADR-0064, 10/10/2026) ───────────────────────────────────────────────
|
|
3253
|
+
O ÍCONE vai ao lado do texto, e o texto continua inteiro (o tipo é PALAVRA — a recusa das cores
|
|
3254
|
+
continua de pé). Os SELOS sentam na borda, nos cantos: a quantidade em cima, à direita; o estado
|
|
3255
|
+
embaixo, à esquerda — longe um do outro, e fora do nome. */
|
|
3256
|
+
/* A alça do grafo de LEITURA existe só para o motor medir a borda: invisível e surda ao ponteiro. */
|
|
3257
|
+
.graph-handle-oculta { visibility:hidden; pointer-events:none; }
|
|
3258
|
+
.graph-node-text { display:grid; gap:var(--space-05); min-inline-size:0; }
|
|
3259
|
+
.graph-node-has-icon { grid-template-columns:auto minmax(0,1fr); align-items:center; column-gap:var(--space-2); }
|
|
3260
|
+
.graph-node-icon { color:var(--muted-foreground); }
|
|
3261
|
+
.graph-node-count { position:absolute; inset-block-start:0; inset-inline-end:0; transform:translate(25%,-50%); }
|
|
3262
|
+
.graph-node-status { position:absolute; inset-block-end:0; inset-inline-start:var(--space-3); max-inline-size:calc(100% - var(--space-6)); transform:translateY(50%); }
|
|
3263
|
+
.graph-node-status .badge { max-inline-size:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
|
|
3264
|
+
/* "Ir até" (focusId): a marca de achado é a borda da marca com uma linha por dentro, como o
|
|
3265
|
+
cartão escolhido — e não o anel de foco, que é do teclado. */
|
|
3266
|
+
.graph-node[data-focused] .graph-node-body { border-color:var(--primary); box-shadow:inset 0 0 0 var(--border-width) var(--primary); }
|
|
3267
|
+
/* O resto apaga quando há caminho ou vizinhos acesos (MNT-18.3 e 18.6). */
|
|
3268
|
+
.graph-node[data-dimmed] { opacity:.3; }
|
|
3269
|
+
.dependency-graph .is-dimmed { opacity:.25; }
|
|
3270
|
+
/* AS LINHAS: o desenho diz o que ela é, sem depender de cor (MNT-08 e MNT-15).
|
|
3271
|
+
⚠ A ESPESSURA VAI PELA VARIÁVEL DO MOTOR (`--xy-edge-stroke-width`), e não por `stroke-width`:
|
|
3272
|
+
esta folha mora numa camada (`@layer aurea`) e a do motor não — e regra sem camada ganha de regra
|
|
3273
|
+
com camada, qualquer que seja a força do seletor. Medido na bancada da rodada 1: a fibra saía com
|
|
3274
|
+
1 de espessura em vez de 6. A variável não tem rival na linha, então a nossa vale. O `stroke-width`
|
|
3275
|
+
fica para os desenhos que são nossos (a amostra da legenda e o miolo do traço duplo). */
|
|
3276
|
+
.dependency-graph .graph-edge { --graph-edge-w:var(--graph-edge-base); --xy-edge-stroke-width:var(--graph-edge-w); stroke-width:var(--graph-edge-w); }
|
|
3277
|
+
.dependency-graph .graph-edge-thick { --graph-edge-w:calc(var(--graph-edge-base) * 2); }
|
|
3278
|
+
.dependency-graph .graph-edge-heavy { --graph-edge-w:calc(var(--graph-edge-base) * 3); }
|
|
3279
|
+
.dependency-graph .graph-edge-dashed { stroke-dasharray:var(--space-2) var(--space-1); }
|
|
3280
|
+
.dependency-graph .graph-edge-dotted { --xy-edge-stroke-width:calc(var(--graph-edge-w) * 2); stroke-width:calc(var(--graph-edge-w) * 2); stroke-dasharray:0 calc(var(--graph-edge-w) * 5); stroke-linecap:round; }
|
|
3281
|
+
.dependency-graph .graph-edge-double { --xy-edge-stroke-width:calc(var(--graph-edge-w) * 3); stroke-width:calc(var(--graph-edge-w) * 3); }
|
|
3282
|
+
.graph-edge-double-core { --graph-edge-w:var(--graph-edge-base); fill:none; stroke:var(--xy-edge-label-background-color); stroke-width:var(--graph-edge-w); pointer-events:none; }
|
|
3283
|
+
.graph-edge-double-core.graph-edge-thick { --graph-edge-w:calc(var(--graph-edge-base) * 2); }
|
|
3284
|
+
.graph-edge-double-core.graph-edge-heavy { --graph-edge-w:calc(var(--graph-edge-base) * 3); }
|
|
3285
|
+
/* A pastilha do meio (marca, número, grupo) e o nome da porta na ponta são HTML sobre o desenho. */
|
|
3286
|
+
.graph-edge-chip { position:absolute; z-index:var(--graph-label-z); display:inline-flex; align-items:center; gap:var(--space-1); padding:var(--space-05) var(--space-2); border-radius:var(--radius-control); background:var(--xy-edge-label-background-color); color:var(--xy-edge-label-color); font-size:var(--graph-edge-label-size,var(--text-xs)); line-height:var(--leading-tight); white-space:nowrap; pointer-events:all; }
|
|
3287
|
+
.graph-edge-end { position:absolute; z-index:var(--graph-label-z); padding:0 var(--space-1); border-radius:var(--radius-xs); background:var(--xy-edge-label-background-color); color:var(--xy-edge-label-color); font-size:var(--graph-edge-label-size,var(--text-xs)); line-height:var(--leading-tight); white-space:nowrap; pointer-events:none; }
|
|
3288
|
+
/* `nodrag`/`nopan`: a pastilha é HTML sobre o mapa, e as duas classes dizem ao motor para não arrastar
|
|
3289
|
+
nem rolar a tela por ela (o botão do grupo precisa do clique). Fora do botão, o cursor é o comum. */
|
|
3290
|
+
.graph-edge-chip.nodrag.nopan { cursor:default; }
|
|
3291
|
+
.graph-edge-count { font-variant-numeric:tabular-nums; font-weight:var(--weight-medium); }
|
|
3292
|
+
.graph-edge-group { display:inline-flex; align-items:center; min-block-size:var(--space-5); padding:0 var(--space-2); border:var(--border-width) solid var(--border-strong); border-radius:var(--radius-control); background:var(--secondary); color:var(--foreground); font:inherit; font-variant-numeric:tabular-nums; font-weight:var(--weight-medium); cursor:pointer; }
|
|
3293
|
+
.graph-edge-group[aria-expanded="true"] { border-color:var(--primary-outline); }
|
|
3294
|
+
.graph-edge-mark { display:inline-grid; place-items:center; color:var(--foreground); }
|
|
3295
|
+
.graph-edge-mark-cross:before { content:"\2715"; font-weight:var(--weight-bold); }
|
|
3296
|
+
.graph-edge-mark-dot { inline-size:var(--space-2); block-size:var(--space-2); border-radius:var(--radius-full); background:currentColor; }
|
|
3297
|
+
/* Os botões de zoom, o minimapa e a legenda flutuam sobre o mapa, com a pele de cartão. */
|
|
3298
|
+
.graph-controls { display:flex; gap:var(--space-1); padding:var(--space-1); border:var(--border-width) solid var(--border); border-radius:var(--radius-control); background:var(--card); }
|
|
3299
|
+
.graph-minimap { border:var(--border-width) solid var(--border); border-radius:var(--radius-md); overflow:hidden; }
|
|
3300
|
+
.graph-legend { display:grid; gap:var(--space-1); margin:0; padding:var(--space-2) var(--space-3); list-style:none; border:var(--border-width) solid var(--border); border-radius:var(--radius-md); background:var(--card); color:var(--foreground); font-size:var(--graph-edge-label-size,var(--text-xs)); }
|
|
3301
|
+
.graph-legend li { display:flex; align-items:center; gap:var(--space-2); }
|
|
3302
|
+
.graph-legend-sample { inline-size:var(--space-8); block-size:var(--space-2); overflow:visible; }
|
|
3303
|
+
.graph-legend-sample .graph-edge,.graph-legend-sample .graph-edge-double-core { fill:none; }
|
|
3304
|
+
.graph-legend-sample .graph-edge { stroke:var(--xy-edge-stroke); }
|
|
3305
|
+
/* TEXTO MAIOR, independente do zoom (MNT-19.3): o rótulo do nó vai a `--text-base`, o resto a
|
|
3306
|
+
`--text-sm`, e a caixa cresce na mesma razão (a conta mora no graph.tsx). */
|
|
3307
|
+
.dependency-graph[data-text="lg"] { --graph-edge-label-size:var(--text-sm); }
|
|
3308
|
+
.dependency-graph[data-text="lg"] .graph-node-body { font-size:var(--text-base); }
|
|
3309
|
+
.dependency-graph[data-text="lg"] .graph-node-kind,.dependency-graph[data-text="lg"] .graph-node-body .hint { font-size:var(--text-sm); }
|
|
3310
|
+
/* ALTO CONTRASTE (MNT-19.3): linha e letra no tom da letra, a base da linha dobra, e a borda do nó
|
|
3311
|
+
também. Tudo o mais (pesos, pontilhado, duplo) é múltiplo da base e acompanha sozinho. */
|
|
3312
|
+
.dependency-graph[data-contrast="high"] { --xy-edge-stroke:var(--foreground); --xy-edge-label-color:var(--foreground); --graph-edge-base:calc(var(--border-width) * 2); }
|
|
3313
|
+
.dependency-graph[data-contrast="high"] .graph-node-body { border-color:var(--foreground); border-width:calc(var(--border-width) * 2); }
|
|
3314
|
+
.dependency-graph[data-contrast="high"] .graph-node-kind,.dependency-graph[data-contrast="high"] .graph-node-icon { color:var(--foreground); }
|
|
3315
|
+
/* ── RODADA 2 DA REDE (ADR-0065, 10/10/2026) ───────────────────────────────────────────────
|
|
3316
|
+
O LAÇO do modo de arrumar e a caixa em volta dos escolhidos se vestem pelas variáveis do motor. */
|
|
3317
|
+
.dependency-graph { --xy-selection-background-color:color-mix(in oklab,var(--primary) 10%,transparent); --xy-selection-border:var(--border-width) dashed var(--primary); }
|
|
3318
|
+
/* No modo de arrumar, quem recebe o foco é a caixa do MOTOR (que não tem classe nossa): o anel vai
|
|
3319
|
+
no corpo do nó, com o raio dele, e é UMA linha — a borda vira a cor do foco e o anel encosta nela
|
|
3320
|
+
(ADR-0059). A caixa do motor, quadrada, não desenha anel nenhum. */
|
|
3321
|
+
.dependency-graph :focus-visible:has(> .graph-node) { outline:none; }
|
|
3322
|
+
.dependency-graph :focus-visible:has(> .graph-group) { outline:none; }
|
|
3323
|
+
.dependency-graph :focus-visible > .graph-node > .graph-node-body,.dependency-graph :focus-visible > .graph-group { outline:var(--focus-width) solid var(--focus-strong); outline-offset:0; border-color:var(--focus-strong); }
|
|
3324
|
+
/* O CONTÊINER aberto (site, andar, rack): a região em volta dos filhos, com a cabeça. A cabeça tem
|
|
3325
|
+
`--space-10` e o recheio `--space-4` — os mesmos números com que o graph.tsx monta a caixa. */
|
|
3326
|
+
/* O fundo é um VÉU leve, e não uma cor cheia: a linha entre dois nós de fora que passa por cima da
|
|
3327
|
+
região continua aparecendo (o contêiner é um nó, e o motor o desenha acima das linhas comuns). E o
|
|
3328
|
+
véu soma: o andar dentro do site fica um tom acima, e o aninhamento se lê sem cor nova. */
|
|
3329
|
+
.graph-group { position:relative; inline-size:100%; block-size:100%; border:var(--border-width) solid var(--border); border-radius:var(--radius-card); background:color-mix(in oklab,var(--foreground) 3%,transparent); }
|
|
3330
|
+
.graph-group[data-selected] { border-color:var(--primary); }
|
|
3331
|
+
.graph-group[data-dimmed] { opacity:.3; }
|
|
3332
|
+
.graph-group-head { display:flex; align-items:center; gap:var(--space-2); block-size:var(--space-10); padding-inline:var(--space-2) var(--space-3); color:var(--foreground); font-size:var(--text-sm); }
|
|
3333
|
+
.graph-group-label { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-weight:var(--weight-medium); }
|
|
3334
|
+
/* Os dois botões de fechar e abrir têm 24 de lado (`--space-6`): o alvo mínimo de toque (WCAG 2.5.8). */
|
|
3335
|
+
.graph-group-toggle { display:inline-grid; place-items:center; flex:none; inline-size:var(--space-6); block-size:var(--space-6); padding:0; border:0; border-radius:var(--radius-full); background:none; color:var(--muted-foreground); cursor:pointer; }
|
|
3336
|
+
.graph-group-toggle:hover { background:var(--secondary); color:var(--foreground); }
|
|
3337
|
+
/* O de NÓ senta no CANTO de baixo, à direita, como a quantidade no de cima: fechado, mostra QUANTOS
|
|
3338
|
+
guarda ("+12"). No canto, e não na borda: na borda ele cobria a alça da última porta (medido na
|
|
3339
|
+
bancada, a "porta 3" do núcleo saía por baixo dele). O selo de estado, embaixo à esquerda, encolhe. */
|
|
3340
|
+
.graph-node-toggle { position:absolute; inset-block-end:0; inset-inline-end:0; display:inline-flex; align-items:center; justify-content:center; min-inline-size:var(--space-6); block-size:var(--space-6); padding:0 var(--space-2); border:var(--border-width) solid var(--border-strong); border-radius:var(--radius-control); background:var(--secondary); color:var(--foreground); font:inherit; font-size:var(--text-xs); font-variant-numeric:tabular-nums; font-weight:var(--weight-medium); transform:translate(25%,50%); cursor:pointer; }
|
|
3341
|
+
.graph-node-toggle[aria-expanded="false"] { border-color:var(--primary-outline); }
|
|
3342
|
+
.graph-node:has(.graph-node-toggle) .graph-node-status { max-inline-size:calc(100% - var(--space-16)); }
|
|
3343
|
+
/* O ALFINETE (nó fixo), no canto de cima à esquerda — a quantidade fica no da direita. */
|
|
3344
|
+
.graph-node-pin { position:absolute; inset-block-start:0; inset-inline-start:0; display:inline-grid; place-items:center; inline-size:var(--space-5); block-size:var(--space-5); border:var(--border-width) solid var(--border); border-radius:var(--radius-full); background:var(--card); color:var(--foreground); transform:translate(-25%,-50%); }
|
|
3345
|
+
/* A NUVEM é desenho de FUNDO: a caixa do nó fica sem borda e sem fundo, e o texto vai ao centro. */
|
|
3346
|
+
.graph-node-cloud { position:absolute; inset:0; inline-size:100%; block-size:100%; overflow:visible; pointer-events:none; }
|
|
3347
|
+
.graph-node-cloud path { fill:var(--card); stroke:var(--border); stroke-width:var(--border-width); }
|
|
3348
|
+
/* E o ícone vai JUNTO do texto, no meio da nuvem: na borda da caixa, onde fica nos outros nós, ele
|
|
3349
|
+
saía para fora do contorno. */
|
|
3350
|
+
.graph-node[data-shape="cloud"] .graph-node-body { position:relative; border-color:transparent; background:none; justify-items:center; text-align:center; }
|
|
3351
|
+
.graph-node[data-shape="cloud"] .graph-node-has-icon { grid-template-columns:auto auto; justify-content:center; }
|
|
3352
|
+
.graph-node[data-shape="cloud"][data-selected] .graph-node-cloud path,.graph-node[data-shape="cloud"][data-focused] .graph-node-cloud path { stroke:var(--primary); }
|
|
3353
|
+
.dependency-graph[data-contrast="high"] .graph-node-cloud path { stroke:var(--foreground); stroke-width:calc(var(--border-width) * 2); }
|
|
3354
|
+
/* A BARRA do modo de arrumar quebra em mais linhas quando a tela é estreita. */
|
|
3355
|
+
.graph-toolbar { max-inline-size:calc(100% - var(--space-8)); }
|
|
3356
|
+
/* OS RÓTULOS QUE SOMEM (MNT-12.5): o que encosta noutro, pela prioridade (o graph.tsx mede e marca),
|
|
3357
|
+
e o texto das linhas inteiro quando a câmera está longe — a 60%, a letra viraria um risco. */
|
|
3358
|
+
.dependency-graph [data-crowded],.dependency-graph[data-far] :is(.graph-edge-text,.graph-edge-end,.graph-edge-chip-text) { visibility:hidden; }
|
|
3238
3359
|
.datagrid tbody tr[data-selected] { background:color-mix(in srgb,var(--primary) 14%,transparent); }
|
|
3239
3360
|
.datagrid-empty { padding:var(--space-6); color:var(--muted-foreground); text-align:center; }
|
|
3240
3361
|
|