Files
erikghandClaude Opus 5 2383e63bc5 feat(hilo): retira el hilo conductor de la página
La dueña pidió quitarlo. Con él se van las dos cosas que solo existían
para sostenerlo: el `relative` de <main> —ninguna sección lo necesita,
todas son relative por su cuenta salvo Disciplinas, que no tiene hijos
absolutos— y el export RADIO_BARRA, sin consumidores.

BARRAS_SIMBOLO se queda como forma canónica del ≡ aunque ya nadie dibuje
las barras: LINEAS_SIMBOLO se deriva de ella y el test que obliga a las
dos representaciones a coincidir es lo que mantiene honesta la geometría
frente al Manual.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-03 11:11:36 -06:00

47 lines
1.8 KiB
TypeScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// Single source of truth for the ≡ glyph geometry. Everything that draws the
// mark reads from here — today that is SecuenciaClaridad, which resolves its
// tangle into it — so the symbol it produces is provably the same one and not a
// lookalike. BARRAS_SIMBOLO stays the canonical form even with no one drawing
// the bars directly: the strokes below are derived from it, and the test that
// holds the two representations to each other is what keeps them honest.
//
// The proportions are the Manual de Identidad Visual's, already measured and
// traced in Wordmark.tsx: bar length = 5.919 × thickness, gap = 2 × thickness,
// ends fully rounded. Three bars and two gaps make the mark exactly seven
// thicknesses tall. These are not cosmetic: with stubby bars and tight gaps the
// mark stops reading as an E — the owner's 28/jul instruction — and starts
// reading as a hamburger menu icon.
export const VIEWBOX_SIMBOLO = '0 0 64 64';
const LADO = 64;
const LARGO_POR_GROSOR = 5.919;
const HUECO_POR_GROSOR = 2;
export const GROSOR_BARRA = 8;
const LARGO_BARRA = GROSOR_BARRA * LARGO_POR_GROSOR;
const HUECO = GROSOR_BARRA * HUECO_POR_GROSOR;
const PASO = GROSOR_BARRA + HUECO;
const IZQUIERDA = (LADO - LARGO_BARRA) / 2;
const ARRIBA = (LADO - (3 * GROSOR_BARRA + 2 * HUECO)) / 2;
export const BARRAS_SIMBOLO = [0, 1, 2].map((i) => ({
x: IZQUIERDA,
y: ARRIBA + i * PASO,
width: LARGO_BARRA,
height: GROSOR_BARRA,
}));
// The same three bars as strokes. A round cap reaches half the stroke width
// past its endpoint, so the ends are inset by exactly that much — otherwise the
// drawn line overshoots by a full thickness the rect it has to reproduce.
export const LINEAS_SIMBOLO = BARRAS_SIMBOLO.map((b) => ({
x1: b.x + b.height / 2,
y1: b.y + b.height / 2,
x2: b.x + b.width - b.height / 2,
y2: b.y + b.height / 2,
grosor: b.height,
}));