Utilidades

Helpers pequeños que cubren patrones recurrentes en componentes: voltear, transiciones semánticas, fondos a pantalla completa, áreas clicables y custom variants basadas en :has() y :focus-within.


Flip

Voltea elementos horizontal o verticalmente. Internamente aplica scaleX(-1) o scaleY(-1).

<img class="flip-w" src="arrow.svg" alt="">
<svg class="flip-h">...</svg>
ClaseEfecto
.flip-wVoltea horizontalmente (scaleX(-1)).
.flip-hVoltea verticalmente (scaleY(-1)).

Duraciones de transición

Clases semánticas para transition-duration, alineadas con los tokens de motion.

ClaseValorUso
.duration-fast120 msHovers cortos, feedback inmediato.
.duration-base200 msPor defecto en componentes.
.duration-slow320 msTransiciones de estado, modales.
.duration-slower480 msCoreografías, énfasis.

Imagen de fondo

.bg-image convierte un <img> en imagen de fondo a pantalla completa con z-index negativo. Se usa dentro de secciones con contenido superpuesto.

<section class="relative">
  <img class="bg-image" src="hero.jpg" alt="">
  <div>
    <h1 class="display">Título sobre la imagen</h1>
  </div>
</section>

Equivale a absolute inset-0 w-full h-full object-cover -z-1. El padre necesita position: relative.


Click Parent

Hace clicable todo el contenedor a través de un pseudo-elemento ::after que cubre el área completa. Útil en cards con un único link principal.

<article class="card relative">
  <h3>Título</h3>
  <p>Descripción.</p>
  <a class="click-parent" href="/post">Leer más</a>
</article>

El padre necesita position: relative para que el ::after cubra el área esperada.


Focus from Child

El contenedor recibe estilos visuales cuando un hijo tiene foco. Ideal para cards con links internos donde quieres que el card entero refleje el estado de foco.

<article class="card focus-from-child">
  <h3>Título</h3>
  <a href="/post">Leer artículo</a>
</article>

Usa :focus-within, que se activa con cualquier hijo focusable (links, botones, inputs).


Custom variants

FDS define custom variants de Tailwind v4 vía @custom-variant para aplicar estilos basados en el estado del padre.

<div class="card group">
  <h3 class="parent-hover:text-primary-600">Título</h3>
  <p class="parent-focus-within:opacity-100 opacity-60">...</p>
</div>
VariantSelectorUso
parent-hover::has(:hover) en el padreReaccionar a hover del contenedor.
parent-focus-within::has(:focus-within)Reaccionar al foco interno.
parent-checked::has(:checked)Estados activos en cards seleccionables.

Compatibilidad

La variant parent: usa :has(), soportado en navegadores modernos. No funciona en IE ni en navegadores legacy.


Eyebrow

Etiqueta pequeña para categorías o labels que se coloca encima de un título.

<p class="eyebrow">Categoría</p>
<h2 class="heading">Título de sección</h2>

Aplica text-transform: uppercase, letter-spacing amplio, font-size reducido y un color semántico de soporte.