Migrar desde shadcn
Tienes componentes de shadcn/ui en una app React. Quieres los mismos componentes en plantillas de Django, HTML plano o cualquier stack al que apunte Chiralkit, sin reescribirlos a mano. Este es el flujo.
Prerrequisitos
- El CLI de Chiralkit instalado global (
pnpm add -g chiralkit). - El source de un componente shadcn/ui (un
.tsxque exporta el componente). - Un
tokens.map.jsonque mapee nombres de clases Tailwind a tus design tokens.
El mapa le dice al extractor qué clases Tailwind tratar como tokens vs. estilos sin mapear. Un shape mínimo:
{
"colors": {
"bg-primary": "color.primary",
"text-primary-foreground": "color.primary-foreground",
"bg-destructive": "color.destructive"
},
"spacing": { "px-4": "spacing.4", "h-10": "spacing.10" },
"radius": { "rounded-md": "radius.md" }
}0. Migra tus tokens
Ejecuta primero ck tokens migrate. No necesita IA ni clave de API: lee el globals.css de tu shadcn a través de components.json y escribe ck/chiraltokens.css, con tus colores, radios y fuentes traducidos a tokens de ChiralUI. Después importa ese archivo tras @chiralkit/tokens/tokens.css.
@import "@chiralkit/tokens/tokens.css";
@import "./ck/chiraltokens.css";1. Extraer el spec
Apunta spec from-react al código fuente del componente y a tu mapa de tokens. Recorre el type-checker de TypeScript para inferir props y analiza las variantes de cva y las cadenas de className en busca de uso de tokens.
Output (extracto):
{
"name": "shadcn-button",
"version": "1.0.0",
"props": {
"variant": {
"type": "enum",
"values": ["default", "destructive", "outline", "secondary", "ghost", "link"],
"default": "default"
},
"size": {
"type": "enum",
"values": ["default", "sm", "lg", "icon"],
"default": "default"
},
"asChild": { "type": "boolean", "default": false },
"disabled": { "type": "boolean", "default": false },
"href": { "type": "string" }
},
"tokens_used": {
"colors": ["color.primary", "color.primary-foreground", "color.destructive", ...],
"spacing": ["spacing.10", "spacing.4", "spacing.9", ...],
"radius": ["radius.md"],
"font": ["font.size-sm", "font.weight-medium"],
"_unmapped": ["inline-flex", "items-center", "focus-visible:ring-2", ...]
}
}2. Revisar el spec
Dos campos merecen una segunda lectura. props recoge la API pública del componente React: cualquier cosa que no quieras exponer en la versión web component, quítala aquí. tokens_used._unmapped enumera cada clase de Tailwind que el mapa no reconoció; cada una es o bien un estilo real que conviene tokenizar (añádelo al mapa y vuelve a ejecutarlo) o un estilo literal intencionado que se queda así.
3. Generar una implementación
Pasas la spec a generate y le indicas el stack de destino. Chiralkit compone un prompt a partir de la spec y, según registry/generator.config.json, lanza tu agente local (Claude Code, Cursor, Aider) o llama a un LLM a través del AI SDK.
El generador produce archivos fuente por stack en registry/shadcn-button/implementations/<stack>/. Revisa el resultado como cualquier otro código: la spec es el contrato; la implementación, una interpretación.
4. Usarlo en tu proyecto
Una vez el módulo vive en el registry, consumirlo es el flujo add estándar — igual que cualquier módulo de Chiralkit.
Los archivos aterrizan en tu proyecto, listos para commitear y editar como código propio.