Componentes

Tipografia (componentes)

FDS separa la semantica HTML de la apariencia visual. Los tags (h1, h2, p, blockquote, ul) siguen describiendo la estructura del contenido; las clases tipograficas (.display, .heading, .subheading, .text-*) deciden como se ve ese contenido dentro de una composicion.

Estas clases viven en components/typography.css y usan la escala fluida definida en theme/flowtitude.css. Si cambias los knobs de tipografia, todos los componentes se recalculan sin tocar el markup.


Que encapsula una clase

Cada clase tipografica agrupa varias decisiones que normalmente se repetirian en Tailwind:

DecisionDonde se aplica
font-sizeTokens fluidos text-xl a text-9xl
font-familyfont-display para display, heading y subheading; font-body en .text-medium
font-weightfont-medium en display/heading, font-semibold en subheading
line-heightleading-none, leading-tight, leading-snug, leading-normal, leading-relaxed
letter-spacingtracking-tight en display, headings y .subheading-lg
text-wraptext-balance para titulos; text-pretty para textos mas largos

La ventaja es que puedes escribir markup limpio y consistente sin recordar siempre la combinacion exacta de utilidades.


Sintaxis base

Usa el tag correcto para accesibilidad y aplica la clase que necesite la composicion:

<section>
  <div>
    <div class="content-flex top-left max-w-4xl">
      <span class="eyebrow">Sistema tipografico</span>
      <h1 class="display-sm">Un titulo heroico pero controlado</h1>
      <p class="text-large">
        Texto introductorio con mas presencia que el cuerpo normal.
      </p>
    </div>
  </div>
</section>

La clase no obliga al tag. Un h2 puede usar .display-sm si visualmente abre una seccion importante, y un h1 puede usar .heading si no es una pantalla hero.

Escala tipografica semantica

Preview renderizado con el CSS compilado de FDS

<div class="content-flex top-left">
  <span class="eyebrow">Escala visual</span>
  <h1 class="display-sm">Display para momentos de maximo impacto</h1>
  <h2 class="heading">Heading para estructurar secciones</h2>
  <h3 class="subheading">Subheading como puente entre titulo y cuerpo</h3>
  <p class="text-large">
    Text large funciona bien como entradilla, resumen o parrafo destacado.
  </p>
  <p class="text-medium">
    Text medium es el cuerpo principal para composiciones manuales en Bricks,
    Gutenberg o HTML escrito a mano.
  </p>
  <p class="text-small">
    Text small queda para notas, metadatos y texto auxiliar.
  </p>
</div>

Aliases

Algunas clases tienen alias para que el markup sea mas natural:

AliasEquivale aComentario
.display.display-lgAtajo para el display de maximo impacto
.display-single.display-smAtajo historico para display controlado
.heading.heading-mdOpcion por defecto para titulos de seccion
.subheading.subheading-mdOpcion por defecto para subtitulos
<h1 class="display">Display principal</h1>
<h2 class="heading">Titulo de seccion</h2>
<h3 class="subheading">Subtitulo de apoyo</h3>

Display

Para textos hero y de maximo impacto visual:

ClaseTokenUso
.display, .display-lgtext-9xlImpacto maximo: heroes, portadas, titulares de venta
.display-mdtext-8xlDisplay estandar: titulos grandes con algo mas de control
.display-single, .display-smtext-7xlImpacto controlado: heroes compactos o secciones destacadas

Todas usan font-display, font-medium, leading-none, tracking-tight y text-balance.


Heading

Para titulos y estructura de contenido:

ClaseTokenUso
.heading-lgtext-6xlTitulos principales dentro de una pagina
.heading, .heading-mdtext-5xlComodin para la mayoria de titulos de seccion
.heading-smtext-4xlSubdivisiones, bloques internos, cards grandes

La diferencia principal con .display no es solo el tamano: .heading esta pensada para crear jerarquia repetible en una pagina, mientras que .display deberia reservarse para momentos de maxima atencion.


Subheading

Puente entre heading y cuerpo:

ClaseTokenUso
.subheading-lgtext-3xlEntradillas grandes o soporte de un heading
.subheading, .subheading-mdtext-2xlSubtitulos habituales, destacados, claims secundarios
.subheading-smtext-xlMicrojerarquia dentro de cards, FAQs o listados

Usan font-semibold en lugar de font-medium.

text-pretty es mas apropiado aqui que text-balance porque los subtitulos suelen tener mas palabras. Ayuda a evitar lineas huerfanas sin forzar una composicion tan simetrica como la de los titulos.


Text

Para cuerpo de texto:

ClaseTokenUso
.text-largetext-lgTexto destacado, entradillas, resumen de seccion
.text-mediumtext-baseContenido principal escrito a mano
.text-smalltext-smInformacion de apoyo, notas, metadatos

.text-medium aplica font-body, leading-normal y text-pretty. Es la clase mas segura para parrafos que forman parte de una composicion manual, por ejemplo una seccion de Bricks o Gutenberg construida bloque a bloque.


Prose en la capa base

.prose vive en base/typography.css, no en la capa de componentes. Su funcion es distinta: sirve para contenido editorial donde el HTML ya viene dado por un editor, CMS o WYSIWYG.

<article class="prose">
  <h1>Titulo del articulo</h1>
  <p>
    Un parrafo normal con <a href="#">un enlace</a> dentro del contenido.
  </p>
  <h2>Subtitulo</h2>
  <ul>
    <li>Elemento de lista</li>
    <li>Otro elemento de lista</li>
  </ul>
  <blockquote>Una cita destacada dentro del flujo editorial.</blockquote>
</article>

Dentro de .prose, FDS aplica estilos a los tags anidados:

SelectorQue controla
.prose h1 a .prose h6Escala de titulos editorial, mas contenida que .display
.prose p y p + pRitmo vertical de parrafos
.prose a y p > a:hoverColor, decoracion y hover de enlaces
.prose ul, .prose ol, .prose liEspaciado y bullets de listas
.prose blockquoteBorde, color e italica
.prose tableRitmo, bordes y alineacion de tablas

Regla practica

Usa .prose para contenido largo que llega del editor. Usa .display, .heading, .subheading y .text-* para composiciones disenadas a mano. Mezclarlas solo tiene sentido en casos puntuales, por ejemplo una portada manual seguida de un articulo .prose.

Prose para contenido editorial

Preview renderizado con el CSS compilado de FDS

<article class="prose">
  <h1>Contenido largo del editor</h1>
  <p>
    La clase prose se aplica al contenedor, no a cada etiqueta. FDS estiliza
    titulos, parrafos, listas, enlaces, citas y tablas dentro de ese flujo.
  </p>
  <h2>Cuando usar prose</h2>
  <p>
    Usala en articulos, entradas de blog, paginas legales, documentacion larga
    o cualquier contenido que llegue desde un editor visual.
  </p>
  <ul>
    <li>Respeta la semantica HTML original.</li>
    <li>Mantiene ritmo vertical consistente.</li>
    <li>Permite enlaces con hover editorial.</li>
  </ul>
  <blockquote>Las clases semanticas son para composicion; prose es para lectura larga.</blockquote>
</article>

Casos de uso

CasoCombinacion recomendada
Hero principal.display o .display-sm + .text-large
Cabecera de seccion.heading + .text-large
Card o feature.subheading-sm + .text-medium
Metadatos o notas.text-small
Articulo, legal, blogContenedor .prose y HTML semantico dentro
Landing editorialCabecera manual con .display-* seguida de bloque .prose

La pregunta clave es si estas disenando una composicion o dejando que un editor genere contenido. Para composicion, usa clases semanticas de componente. Para contenido largo, usa .prose.


Configurar la escala

Las clases de tipografia no tienen tamanos fijos propios: dependen de los tokens text-*. Por eso se ajustan desde theme/flowtitude.css:

--ft-text-min: 1rem;
--ft-text-max: 1.125rem;
--ft-type-step-min: 1.125;
--ft-type-step-max: 1.2;
--ft-text-factor: 1;
ObjetivoAjuste recomendado
Todo se ve pequenoSube --ft-text-factor ligeramente
El cuerpo esta bien pero los titulos son timidosSube --ft-type-step-max
Los titulos rompen demasiado en mobileBaja --ft-type-step-min
Quieres una web mas editorialSube --ft-type-step-max y revisa .display-*
Quieres una interfaz mas compactaBaja --ft-text-factor o reduce los steps

Despues de tocar un knob, revisa al menos tres contextos: un hero con .display, una card con .subheading-sm y un articulo .prose. Asi compruebas impacto, microjerarquia y lectura larga.


WordPress y Gutenberg

En una plantilla hecha a mano con Bricks, normalmente usaras clases como .heading, .text-large o .subheading-sm en los elementos concretos. En contenido que viene del editor de WordPress, lo mas estable es envolver el bloque en .prose y dejar que FDS estilice los tags.

FDS incluye ademas una regla fuera de @layer para neutralizar el subrayado global que Gutenberg aplica con a:where(:not(.wp-element-button)). Por eso los enlaces generales no quedan subrayados por defecto, mientras que .prose p > a:hover conserva el subrayado editorial al pasar el cursor.


Referencia completa

ClaseAliasTokenPesoWrapUso recomendado
.display-lg.displaytext-9xl500balanceHero principal, maximo impacto
.display-md-text-8xl500balanceDisplay estandar
.display-sm.display-singletext-7xl500balanceDisplay compacto
.heading-lg-text-6xl500balanceTitulo principal de seccion
.heading-md.headingtext-5xl500balanceTitulo de seccion habitual
.heading-sm-text-4xl500balanceSubdivision o bloque interno
.subheading-lg-text-3xl600prettyEntradilla grande
.subheading-md.subheadingtext-2xl600prettySubtitulo habitual
.subheading-sm-text-xl600prettyCard header o microjerarquia
.text-large-text-lgHeredadoprettyLead, resumen, texto destacado
.text-medium-text-baseHeredadoprettyCuerpo manual principal
.text-small-text-smHeredadoNormalMetadatos y apoyo

Ejemplo combinado

Este patron combina una cabecera disenada manualmente con un bloque editorial. La cabecera usa clases de componente; el contenido largo delega en .prose.

<main>
  <section>
    <div>
      <header class="content-flex top-left max-w-4xl">
        <span class="eyebrow">Guia</span>
        <h1 class="display-sm">Como usar la tipografia de FDS</h1>
        <p class="text-large">
          Las clases semanticas controlan la jerarquia visual sin romper la
          estructura HTML.
        </p>
      </header>

      <article class="prose max-w-3xl">
        <h2>Contenido editorial</h2>
        <p>
          En un articulo, una entrada de blog o una pagina legal, la clase
          prose evita tener que asignar clases a cada parrafo, enlace o lista.
        </p>
        <p>
          Si cambias los tokens fluidos, los tamanos basados en
          <code>text-*</code> se actualizan en todo el sistema.
        </p>
      </article>
    </div>
  </section>
</main>
Previous
Botones
Next
Cards