Beta

Search Documentation

Search through documentation pages

Components

Collapsible

An interactive component which expands or collapses a panel.

Preview

'use client';

import { Button } from '@/registry/san-francisco/ui/button';
import { Collapsible, CollapsibleContent, CollapsibleTrigger } from '@/registry/san-francisco/ui/collapsible';
import { ChevronsUpDown } from 'lucide-react';
import * as React from 'react';

export default function CollapsibleDemo() {
  const [isOpen, setIsOpen] = React.useState(false);

  return (
    <Collapsible open={isOpen} onOpenChange={setIsOpen} className="flex w-full max-w-sm flex-col gap-2">
      <div className="flex items-center justify-between gap-4 px-1">
        <h4 className="text-sm font-semibold">Order #4189</h4>
        <CollapsibleTrigger render={<Button variant="ghost" size="icon" className="size-8 shrink-0" />}>
          <ChevronsUpDown />
          <span className="sr-only">Toggle details</span>
        </CollapsibleTrigger>
      </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>
  );
}

Installation

bun
bunx shadcn@latest add @sft-ui/collapsible

API Reference

See the Base UI Collapsible documentation for the full API.