refactor(ilustraciones): grosores unificados a la escala 1.5/2/3

El nudo, la bifurcación y la convergencia usaban 2.5 y 3.5 sueltos, así que
las tres se veían de pesos distintos puestas una al lado de otra.

Un test de contrato por ilustración exige ahora que todo trazo pertenezca a
{1.5, 2, 3}, de modo que la escala no se pueda romper en silencio más
adelante. SecuenciaClaridad queda fuera a propósito: resuelve en las barras
reales del ≡ y su grosor lo manda LINEAS_SIMBOLO.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
erikghandClaude Opus 5 committed 2026-07-31 15:32:10 -06:00
1 parent 2296fa4868
commit 29837022ce
6 files changed
+26 -5

No files matched your search

@@ -31,4 +31,11 @@ describe('<IlustracionBifurcacion />', () => {
const { container } = render(<IlustracionBifurcacion />);
expect(container.querySelectorAll('circle').length).toBeGreaterThanOrEqual(1);
});
it('keeps every stroke within the shared line-art scale', () => {
const { container } = render(<IlustracionBifurcacion />);
const anchos = Array.from(container.querySelectorAll('path')).map((p) => p.getAttribute('stroke-width'));
expect(anchos.length).toBeGreaterThan(0);
anchos.forEach((a) => expect(['1.5', '2', '3']).toContain(a));
});
});
@@ -14,4 +14,11 @@ describe('<IlustracionConvergencia />', () => {
const { container } = render(<IlustracionConvergencia />);
expect(container.querySelectorAll('path')).toHaveLength(4);
});
it('keeps every stroke within the shared line-art scale', () => {
const { container } = render(<IlustracionConvergencia />);
const anchos = Array.from(container.querySelectorAll('path')).map((p) => p.getAttribute('stroke-width'));
expect(anchos.length).toBeGreaterThan(0);
anchos.forEach((a) => expect(['1.5', '2', '3']).toContain(a));
});
});
@@ -20,6 +20,13 @@ describe('<IlustracionNudo />', () => {
expect(container.querySelectorAll('path').length).toBeGreaterThanOrEqual(3);
});
it('keeps every stroke within the shared line-art scale', () => {
const { container } = render(<IlustracionNudo />);
const anchos = Array.from(container.querySelectorAll('path')).map((p) => p.getAttribute('stroke-width'));
expect(anchos.length).toBeGreaterThan(0);
anchos.forEach((a) => expect(['1.5', '2', '3']).toContain(a));
});
it('renders plain, fully-visible strands under reduced motion instead of motion.path\'s dash scaffolding', () => {
// Force the reduced-motion branch. motion.path applies stroke-dasharray/
// stroke-dashoffset even with no explicit initial/animate resolution,