You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
svelte-kit-vice/scripts/__table-rowhover.ts

35 lines
1.4 KiB

docs(next-features): el registro de incidencias del eje theme-reach Encargo del autor: anotar todas las incidencias de esta clase para resolverlas después. Van al registro canónico (`next-features.md`), no a un sitio nuevo, y con su MEDICIÓN — no como impresión. **§12 — El contrato de cascada del velo de estado.** Seis incidencias que resultaron ser la misma: nadie fijó nunca cómo compone el velo de `archetypes.css` con las reglas de una receta. Y la raíz explica por qué se manifiestan de formas tan distintas: el velo se pinta con DOS pesos según el arquetipo — `:where()` (0,0,0) para `trigger`, especificidad plena (0,5,0) para `item`/`option`. 131 declaraciones-atajo en 45 componentes cancelan el velo (66 BASE · 32 ACENTO · 23 HOVER · 10 OTRA; cero valores con gradiente, así que el paso a longhand no tiene riesgo técnico; 32 nodos velados que hoy no reaccionan al ratón pasarían a hacerlo) · la prop `hoverable` de table no suprime nada · en tree-grid el empate (0,5,0) lo decide el ORDEN DE CARGA y varía entre recargas · la banda de tree-grid mata el hover en las filas pares · un token de tinta no puede ganar al arquetipo (`selected-row-fg` se retiró por eso) · el thumb de scroll-area no tiene velo al que migrar. Esto explica de paso la adopción 21/135 que midió la auditoría del 2026-07-01: el velo estaba escrito y estructuralmente derrotado. **§13 — Huecos de instrumento y de demo.** Lo que hizo que una medición mintiera o no existiera, que importa porque el eje entero se apoya en ellas: falsos negativos del centinela sobre propiedades transicionadas, pseudo-elementos y componentes compuestos que no ve, la sonda que no pasa el ratón por un `<tr>`, y la lección general —**una sonda sobre una parte que la demo no monta compara CERO valores y pasa**—, con la lista de partes condicionales afectadas. El handoff gana la regla para las sesiones del eje: si una incidencia mueve píxel o toca morfo, se mide, se anota ahí y se sigue; no se arregla dentro del commit del componente. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2 months ago
// ¿La fila coge el velo del sistema al pasar el ratón? Y si la tabla NO es
// hoverable, ¿lo coge igual? (el velo de `item` no está gated por la prop)
import { chromium } from 'playwright';
const url = process.argv[2] ?? 'http://localhost:5180/uix/components/table';
const browser = await chromium.launch();
const page = await browser.newPage({ viewport: { width: 1440, height: 1000 } });
await page.goto(url, { waitUntil: 'networkidle' });
await page.waitForTimeout(500);
await page.addStyleTag({ content: '*, *::before, *::after { transition: none !important; }' });
const read = async (label: string) => {
const row = page.locator('[data-table-body] [data-table-row]').first();
const before = await row.evaluate((n) => {
const cs = getComputedStyle(n);
return { img: cs.backgroundImage, bg: cs.backgroundColor };
});
await row.hover();
await page.waitForTimeout(120);
const after = await row.evaluate((n) => {
const cs = getComputedStyle(n);
return { img: cs.backgroundImage, bg: cs.backgroundColor };
});
console.log(`${label}\n reposo img: ${before.img}\n hover img: ${after.img}\n hover bg : ${after.bg}`);
await page.mouse.move(0, 0);
await page.waitForTimeout(120);
};
await read('CON data-hoverable (como la demo)');
await page.evaluate(() => {
for (const r of document.querySelectorAll('[data-table-root]')) r.removeAttribute('data-hoverable');
});
await read('SIN data-hoverable (la prop apagada)');
await browser.close();

Powered by TurnKey Linux.