ui
Collapsible
A collapsible component that can show or hide content with smooth animations.
1. Import
Import the Collapsible component from the design system.
import {
Collapsible,
CollapsibleContent,
CollapsibleTrigger,
} from "@/design-system/components/ui/collapsible"2. Props
Collapsible component props.
| Prop | Type | Default |
|---|---|---|
| open | boolean | false |
| defaultOpen | boolean | false |
| onOpenChange | (open: boolean) => void | -- |
| disabled | boolean | false |
| className | string | -- |
3. Usages
Common Collapsible patterns and configurations.
Order #4189
StatusShipped
import React from 'react';
import {
Collapsible,
CollapsibleContent,
CollapsibleTrigger,
} from "@/components/ui/collapsible";
import { Button } from "@/components/ui/button";
import { ChevronsUpDown } from "lucide-react";
export function CollapsibleDemo() {
const [isOpen, setIsOpen] = React.useState(false);
return (
<Collapsible
open={isOpen}
onOpenChange={setIsOpen}
className="flex w-[350px] flex-col gap-2"
>
<div className="flex items-center justify-between gap-4 px-4">
<h4 className="text-sm font-semibold">Order #4189</h4>
<CollapsibleTrigger
render={
<Button variant="ghost" size="icon" className="size-8">
<ChevronsUpDown />
<span className="sr-only">Toggle details</span>
</Button>
}
/>
</div>
<div className="flex items-center justify-between rounded-md border px-4 py-2 text-sm">
<span className="text-muted-foreground">Status</span>
<span className="font-medium">Shipped</span>
</div>
<CollapsibleContent className="flex flex-col gap-2">
<div className="rounded-md border px-4 py-2 text-sm">
<p className="font-medium">Shipping address</p>
<p className="text-muted-foreground">100 Market St, San Francisco</p>
</div>
<div className="rounded-md border px-4 py-2 text-sm">
<p className="font-medium">Items</p>
<p className="text-muted-foreground">2x Studio Headphones</p>
</div>
</CollapsibleContent>
</Collapsible>
);
}