Collapsible
Sección plegable individual. Más simple que Accordion, sin grupo.
Import
jsx
import {
Collapsible,
CollapsibleTrigger,
CollapsibleContent,
} from '@imansi/ui';Uso básico
jsx
<Collapsible>
<CollapsibleTrigger asChild>
<Button variant="outline">Ver detalles</Button>
</CollapsibleTrigger>
<CollapsibleContent>
<div className="mt-4 rounded-md border p-4">
<p>Contenido que se muestra y oculta.</p>
</div>
</CollapsibleContent>
</Collapsible>Con ícono que rota
jsx
import { ChevronsUpDown } from 'lucide-react';
import { useState } from 'react';
export function Ejemplo() {
const [abierto, setAbierto] = useState(false);
return (
<Collapsible open={abierto} onOpenChange={setAbierto}>
<CollapsibleTrigger asChild>
<Button variant="ghost" className="w-full justify-between">
3 usuarios asignados
<ChevronsUpDown className="h-4 w-4" />
</Button>
</CollapsibleTrigger>
<CollapsibleContent className="space-y-2 mt-2">
<div className="rounded-md border px-4 py-2 text-sm">
Juan Pérez
</div>
<div className="rounded-md border px-4 py-2 text-sm">
María García
</div>
<div className="rounded-md border px-4 py-2 text-sm">
Carlos López
</div>
</CollapsibleContent>
</Collapsible>
);
}Props
Collapsible
| Prop | Tipo | Default | Descripción |
|---|---|---|---|
open | boolean | — | Estado controlado |
defaultOpen | boolean | false | Estado inicial |
onOpenChange | (open: boolean) => void | — | Callback |
disabled | boolean | false | Deshabilita |
Accesibilidad
aria-expandeden el triggeraria-controlsconecta trigger y contentrole="region"en el content
