Saltar al contenido
VEXA

Instalación

VEXA se distribuye mediante un registry compatible con shadcn. Apunta el namespace @vexa al endpoint y añade componentes como código editable.

Requisitos

  • React 19 y Next.js App Router (o cualquier setup con React 19).
  • Tailwind CSS v4.
  • Un components.json con el registry @vexa configurado.

1. Configura el registry

Añade el namespace @vexa a tu components.json para que la CLI de shadcn sepa dónde resolver los items @vexa/*:

components.json
{
  "registries": {
    "@vexa": "https://vexa.valfiguer.com/r/{name}.json"
  }
}
El endpoint es el destino canónico de VEXA. Hasta que se despliegue, sirve apps/registry/public/r tú mismo, o copia el código directamente desde cada página de componente.

2. Instala el tema

Añade el contrato de tokens una vez. Define los tokens semánticos --vexa-* para los tres temas más el mapeo de Tailwind v4. Impórtalo después de Tailwind:

npx shadcn@latest add https://vexa.valfiguer.com/r/theme.json

Luego importa la hoja de estilos en tu CSS global:

css
/* app/globals.css */
@import "tailwindcss";
@import "./vexa.css"; /* the installed VEXA token contract */

3. Añade tu primer componente

Instala un primitivo. Sus dependencias del registry (como @vexa/utils, que aporta el helper cn) se resuelven automáticamente:

npx shadcn@latest add https://vexa.valfiguer.com/r/button.json

Los archivos llegan a tu proyecto como código fuente — components/vexa/button.tsx y lib/utils.ts — listos para leer y editar.

4. Úsalo

Importa desde tu alias y compón. Los primitivos estáticos se quedan en el servidor; añade interactividad en la hoja cliente.

app/save-bar.tsx
import { Button } from "@/components/vexa/button";

// Server Component — no "use client" needed.
export function SaveBar() {
  return <Button variant="primary">Save changes</Button>;
}

¿Prefieres copiar a mano?

Cada página de componente muestra su código completo y su ruta destino. Instala utils y el tema primero, conecta los imports a tu alias @/ y pega el componente.