Skip to Content
FrontendComponentes

Componentes

El frontend usa diseño atómico — los componentes se organizan en tres niveles de complejidad creciente.


Átomos (components/atoms/)

Componentes base sin dependencias internas. Son los bloques de construcción del sistema de diseño.

ComponenteDescripción
ButtonBotón base con variantes
ContainerContenedor con max-width y padding
HeadingTítulos (h1h4) con estilos de fuente
EyebrowTexto pequeño en mayúsculas para categorías
CloudinaryImageImagen optimizada via Cloudinary
ReservationStatusBadgeBadge de estado de reservación

Moléculas (components/molecules/)

Compuestos de átomos. Resuelven un problema de UI específico.

ComponenteDescripción
EventCardTarjeta de evento con imagen, título y CTA
ReservationCardTarjeta de reservación con estado y detalles
EmptyReservationsEstado vacío para la lista de reservaciones

Organismos (components/organisms/)

Secciones completas de página. Pueden combinar múltiples moléculas y átomos, pero no importan otros organismos directamente.

ComponenteDescripción
NavBarBarra de navegación fija con estado de auth
FooterPie de página
HeroSectionSección hero de la página principal
EventsSectionGrid de eventos
ReservationModalModal completo de reservación + pago PayPal
ReservationListSkeletonSkeleton de carga para lista de reservaciones

Barrel exports

Cada nivel tiene un index.ts que re-exporta todos sus componentes:

// components/atoms/index.ts export { Button } from "./Button"; export { Container } from "./Container"; // ...

Al crear un componente nuevo:

  1. Crear el archivo en el nivel correspondiente
  2. Agregarlo al index.ts de ese nivel
  3. Importarlo siempre desde el barrel: import { Button } from "@/components/atoms"

Convenciones de estilos

El sistema usa variables CSS definidas en app/globals.css:

--color-base /* Fondo principal */ --color-card /* Fondo de tarjetas */ --color-primary /* Texto primario */ --color-secondary /* Texto secundario */ --color-alt /* Bordes */

Y clases de fuente configuradas en layout.tsx:

  • font-display — DM Serif Display (títulos)
  • font-body — Jost (cuerpo de texto)
Last updated on