Collapsible

Display content in a collapsible container.

collapsible-demo.tsx
import { useState } from "react"
import { ChevronRightIcon } from "lucide-react"
 
import {
	Collapsible,
	CollapsibleContent,
	CollapsibleTrigger,
} from "@/components/ui/collapsible"
 
import { cn } from "@/lib/utils"
 
export function CollapsibleDemo() {
	const [open, setOpen] = useState(false)
 
	return (
		<Collapsible
			className="mx-auto w-40 py-12"
			open={open}
			onOpenChange={setOpen}
		>
			<CollapsibleTrigger className="flex w-full items-center justify-between px-1.5 py-1">
				<span className="text-sm font-medium">Components</span>
				<div className={cn("transition-all duration-200", open && "rotate-90")}>
					<ChevronRightIcon size={16} />
				</div>
			</CollapsibleTrigger>
			<CollapsibleContent>
				<ol className="mt-2 space-y-1">
					<li className="rounded border bg-secondary px-2 py-1">Button</li>
					<li className="rounded border bg-secondary px-2 py-1">Badge</li>
					<li className="rounded border bg-secondary px-2 py-1">Breadcrumbs</li>
				</ol>
			</CollapsibleContent>
		</Collapsible>
	)
}

Installation

npx shadcn@latest add https://9ui.dev/r/collapsible

Usage

Imports
import {
	Collapsible,
	CollapsibleContent,
	CollapsibleTrigger,
} from "@/components/ui/collapsible"
Anatomy
<Collapsible>
	<CollapsibleTrigger />
	<CollapsibleContent />
</Collapsible>