From 11fc93b97f93b9d4baab07e4ae865adb8a749de6 Mon Sep 17 00:00:00 2001 From: dev Date: Fri, 5 Jun 2026 05:40:41 +0200 Subject: [PATCH] =?UTF-8?q?feat(demos):=20/temas/tipografia=20showcase=20?= =?UTF-8?q?=E2=80=94=20live=20type=20scale=20+=20axes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Typography showcase mirroring /temas/color: dogfoods the engine through live CSS tokens. - Escala: live `buildTypeScale` ladder — base + modular ratio (+ fluid ratioMax/viewport) re-derive all 8 sizes; the named styles (hero/h1-h6/ body/caption) re-scale too (they reference --font-size-* via var()). - Familias: the 4 config-driven @font-face slots in their own fonts. - Ejes: tracking / leading / measure / wrap / numeric driven live via the --_text-* per-instance vars the recipe reads. Self-contained (eidos foundation CSS + raw recipe data-attrs + data-theme), same posture as the color demo. Editorial Lora-display aesthetic. Verified in browser: live scale responds (xxxl 16->77px at ratio 1.6); 4 real fonts load (Instrument Sans / Lora / Azeret Mono); axes apply (measure narrow = 54ch). `npm run check` 0 errors. Co-Authored-By: Claude Opus 4.8 (1M context) --- web/routes/temas/tipografia/+page.svelte | 457 +++++++++++++++++++++++ 1 file changed, 457 insertions(+) create mode 100644 web/routes/temas/tipografia/+page.svelte diff --git a/web/routes/temas/tipografia/+page.svelte b/web/routes/temas/tipografia/+page.svelte new file mode 100644 index 000000000..52ee73cfb --- /dev/null +++ b/web/routes/temas/tipografia/+page.svelte @@ -0,0 +1,457 @@ + + +Tipografía · Eidos + +
+
+
+

Eidos · sistema tipográfico

+ +
+

Tipografía que se construye sola

+

+ Escala fluida derivada de un ratio · familias config-driven · ejes ópticos en vivo. + Todo a través de los tokens del motor — mueve un control y mira recomponerse. +

+
+ + +
+
+

Escala

+

+ buildTypeScale · el motor de applyTypeScale. Un ratio modular + deriva los 8 pasos desde md; con fluido el ratio interpola entre 480 y 1280px. +

+
+ +
+ + +
+ presets +
+ {#each RATIOS as r} + + {/each} +
+
+ + {#if fluid} + + + {/if} +
+ +
+ {#each scale.sizes as s} +
+ {s.key} + Grumpy wizards + + {#if s.minPx === s.maxPx}{s.minPx}px{:else}{pxAt(s.minPx, s.maxPx)}px ·{s.minPx}–{s.maxPx}{/if} + +
+ {/each} +
+
+ + +
+
+

Estilos nombrados

+

+ hero · h1–h6 · body · caption referencian --font-size-* por + var() → re-escalan con el ratio de arriba. +

+
+
+ {#each STYLES as st} +
+ {st.label} + {#if st.style === 'body' || st.style === 'caption'} +

{st.sample}

+ {:else} +
{st.sample}
+ {/if} +
+ {/each} +
+
+ + +
+
+

Familias

+

@font-face config-driven · fallback con métricas (anti-CLS).

+
+
+ {#each FAMILIES as f} +
+
{f.label}{f.note}
+
+ Aa + Habría jugado · 0123456789 · ¿Qué? ¡Ya! +
+
+ {/each} +
+
+ + +
+
+

Ejes ópticos

+

tracking · leading · measure · wrap · numeric — vía los --_text-* que lee el recipe.

+
+
+
+ tracking +
{#each TRACKINGS as t}{/each}
+
+
+ leading +
{#each LEADINGS as l}{/each}
+
+
+ measure +
{#each MEASURES as m}{/each}
+
+
+ wrap +
{#each WRAPS as w}{/each}
+
+ +
+
+

+ La tipografía no es lo que ves, es lo que ocurre cuando lees: 1.250 palabras, 48px de + salto, 66ch de medida. El tracking se afina, el interlineado respira, la columna se + contiene — y el texto desaparece para dejar pasar el sentido. +

+
+
+
+ +