default.tsx
1import { Button } from '@/components/ui/button';23export function Default() {4 return <Button>Click me</Button>;5}
Instalación
pnpm dlx nachui add buttonAnatomía
1import { Button } from '@/components/ui/button';
1<Button variant="outline">Button</Button>
Variantes
Tamaños
sizes.tsx
1import { Plus, Settings } from 'lucide-react';2import { Button } from '@/components/ui/button';34const basicButtons = [5 { size: 'sm' as const, label: 'Small' },6 { size: 'default' as const, label: 'Default' },7 { size: 'lg' as const, label: 'Large' },8];910const iconButtons = [11 { size: 'sm' as const, label: 'Add small', icon: <Plus className="size-4" /> },12 { size: 'default' as const, label: 'Add default', icon: <Plus className="size-4" /> },13 { size: 'lg' as const, label: 'Add large', icon: <Plus className="size-5" /> },14];1516export function Sizes() {17 return (18 <div className="flex flex-col gap-6">19 <div className="flex flex-wrap items-center gap-4">20 {basicButtons.map((btn) => (21 <Button key={btn.size} size={btn.size}>22 {btn.label}23 </Button>24 ))}25 <Button size="icon" aria-label="Settings">26 <Settings className="size-4" />27 </Button>28 </div>29 <div className="flex flex-wrap items-center gap-4">30 {iconButtons.map((btn) => (31 <Button key={btn.size} size={btn.size} leftIcon={btn.icon}>32 {btn.label}33 </Button>34 ))}35 </div>36 </div>37 );38}
Secondary
secondary.tsx
1import { Button } from '@/components/ui/button';23export function Secondary() {4 return <Button variant="secondary">Secondary</Button>;5}
Destructive
destructive.tsx
1import { Button } from '@/components/ui/button';23export function Destructive() {4 return <Button variant="destructive">Destructive</Button>;5}
Outline
outline.tsx
1import { Button } from '@/components/ui/button';23export function Outline() {4 return <Button variant="outline">Outline</Button>;5}
Ghost
ghost.tsx
1import { Button } from '@/components/ui/button';23export function Ghost() {4 return <Button variant="ghost">Ghost</Button>;5}
Link
link.tsx
1import { Button } from '@/components/ui/button';23export function Link() {4 return <Button variant="link">Link</Button>;5}
Referencia de API
Button
| Prop | Tipo | Default | Descripción |
|---|---|---|---|
variant | "default" | "destructive" | "outline" | "secondary" | "ghost" | "link" | "default" | Estilo del botón. |
size | "default" | "sm" | "lg" | "icon" | "default" | Tamaño del botón. |
loading | boolean | false | Indica si el botón está en estado de carga. |
loader | React.ReactNode | <Loader2 /> | Componente loader personalizado para mostrar durante la carga. |
leftIcon | React.ReactNode | — | Ícono que aparece a la izquierda del contenido. |
rightIcon | React.ReactNode | — | Ícono que aparece a la derecha del contenido. |
fullWidth | boolean | false | Hace que el botón ocupe todo el ancho disponible. |
disabled | boolean | — | Desactiva el botón. |
className | string | — | Clases adicionales. |
type | "button" | "submit" | "reset" | "button" | Tipo de botón. |
children | React.ReactNode | — | Contenido del botón (texto, íconos, etc.). |
ButtonGroup
| Prop | Tipo | Default | Descripción |
|---|---|---|---|
orientation | "horizontal" | "vertical" | "horizontal" | Dirección del grupo de botones. |
attached | boolean | false | Une los botones (sin bordes redondeados entre ellos). |
className | string | — | Clases adicionales. |
children | React.ReactNode | — | Botones dentro del grupo. |
¿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.