Instalación
Configura NachUI a mano en Next.js, Vite, TanStack Start o React Router. Instala Tailwind CSS v4, agrega los helpers y los tokens del tema, y copia los componentes que necesites.
NachUI es React y Tailwind CSS sin más, así que funciona en cualquier proyecto con React 19. El CLI todavía está en desarrollo, por eso por ahora la configuración es manual. Lleva unos minutos y se hace una sola vez.
Requisitos previos
Antes de comenzar, asegúrate de que tu proyecto tenga:
- React 19+
- Tailwind CSS v4
- TypeScript (recomendado, el código fuente está escrito en TypeScript)
- Node.js 20+
No depende de Next.js
Muchos componentes empiezan con
'use client'. Esa línea es una directiva de React, no algo propio de Next.js. Los frameworks que usan React Server Components (como el App Router de Next.js) la leen para saber qué archivos corren en el navegador. En el resto, como Vite, TanStack Start o React Router, es un string que el bundler ignora. Puedes dejarla en cualquier setup.Los componentes solo importan de
react, react-dom, motion, clsx, tailwind-merge y class-variance-authority. No usan router, ni cargador de fuentes, ni APIs de ningún framework.Instalación paso a paso
Configura tu framework con Tailwind CSS v4
Elige tu framework. Si ya tienes un proyecto con Tailwind CSS v4 funcionando, pasa al siguiente paso y solo fíjate dónde está tu hoja de estilos principal.
Crea la app con TypeScript, Tailwind CSS, el App Router y una carpeta
src/:Tailwind CSS v4 ya viene conectado a través de
@tailwindcss/postcss, así que no hace falta instalar nada más.- Carpeta de código:
src/ - Hoja de estilos principal:
src/app/globals.css
Si tu proyecto existente todavía usa Tailwind CSS v3, actualízalo primero con
npx @tailwindcss/upgrade.Instala las dependencias
npm install motion clsx tailwind-merge class-variance-authorityEstas librerías se usan para:
- motion: animaciones y transiciones
- clsx: construir clases de forma condicional
- tailwind-merge: combinar clases de Tailwind sin conflictos
- class-variance-authority: variantes de los componentes
Los iconos no necesitan ningún paquete extra. Los componentes traen sus propios SVG, y el set de iconos de NachUI, que es opcional, es un archivo por icono que copias igual que un componente. También sirve cualquier otra librería de iconos, porque todos los componentes los reciben por props.
Agrega el helper cn
Dentro de tu carpeta de código, crea el helper que usan todos los componentes para combinar clases:
Agrega los tokens de movimiento
Junto a
cn, crea el archivo que guarda el vocabulario de animación. Cada componente que se mueve lee sus springs y variantes de acá, así toda la librería comparte un mismo material físico y lo ajustas en un solo lugar:Tres springs cubren todo.
snappy es para hover, press y toggles, smooth para paneles, menús y collapsibles, y gentle para las superficies grandes como los diálogos. Los elementos flotantes abren desde el lado de su trigger y se van más rápido de lo que llegaron.Agrega los helpers de estado, overlays y posicionamiento
En
lib/ viven tres archivos más, y solo los necesitas cuando agregas un componente que los importa:use-controllable-state.tspermite que un componente funcione de las dos maneras: le pasasvalueuopeny lo controlas tú, o no los pasas y él maneja su propio estado. La mayoría de los componentes con estado lo usan.overlay.tstiene lo que comparten los diálogos, sheets, drawers, menús y toasts: el bloqueo del scroll, el focus trap y la pila de capas abiertas, para que Escape cierre solo la que está arriba.floating.tsubica popovers, tooltips, menús y selects junto a su trigger. Los pasa al otro lado cuando no hay lugar, los mantiene dentro de la pantalla y los renderiza al final de la página para que un padre conoverflow: hiddenno los corte.
Si un archivo que pegas importa
../lib/use-controllable-state, ../lib/overlay o ../lib/floating, copia ese helper en src/lib/, junto a cn.ts. La CLI lo hace por ti.Agrega los tokens del tema
Reemplaza el contenido de tu hoja de estilos principal (la que anotaste en el primer paso) por lo siguiente. Si tu archivo ya tiene su propia línea
@import 'tailwindcss', conserva la tuya y pega todo lo demás debajo.Este es el tema por defecto. Cada color es una variable tuya, así que puedes cambiarlo más adelante sin tocar ningún componente. En Theming se explica cómo funcionan los tokens.
Organiza las carpetas
Los componentes se importan entre sí y a los helpers con rutas relativas, como
../lib/cn o ../components/button. Si mantienes esta estructura dentro de tu carpeta de código, cada archivo que pegues funciona tal cual:src
components
button.tsx
card.tsx
dialog.tsx
...
ai
hybrids
lib
cn.ts
motion.ts
floating.ts
overlay.ts
use-controllable-state.ts
components/: elementos de UI y de layoutai/: elementos de IAhybrids/: híbridos, que combinan elementos de UI y de IAlib/: el helpercn, los tokens de movimiento y los helpers compartidos
Si prefieres otra estructura, como
components/ui/, también funciona. Solo actualiza los imports al principio de cada archivo que pegues para que apunten a tus carpetas, por ejemplo @/lib/cn en Next.js o ~/lib/cn en React Router.Agrega tu primer componente
- Abre la página del componente que quieres, por ejemplo Button.
- Copia el código desde la pestaña Manual.
- Pégalo en la carpeta que corresponde, en este caso
src/components/button.tsx. - Si la página indica dependencias extra, instálalas.
- Impórtalo y úsalo:
Algunos componentes usan otros. Cuando un archivo importa algo como
./label o ../components/dialog, copia ese componente también.Modo oscuro
El tema oscuro se activa cuando el elemento
<html> tiene la clase dark. Alterna esa clase de la forma en que tu app maneje el cambio de tema.Próximos pasos
- Recorre la galería de componentes para ver todo lo disponible
- Lee Theming para adaptar los tokens a tu marca
- Mira la página del CLI para ver hacia dónde va la instalación automática
¿Encontraste algo que mejorar?
¿Notaste un error, tipografía o detalle faltante en esta página? Ayúdanos a mejorar la documentación abriendo un issue en GitHub.