ReScript Shadcn
Get started
  • Installation
Components
  • Accordion
  • Alert
  • AlertDialog
  • AspectRatio
  • Attachment
  • Avatar
  • Badge
  • Breadcrumb
  • Bubble
  • Button
  • ButtonGroup
  • Calendar
  • Card
  • Carousel
  • Chart
  • Checkbox
  • Collapsible
  • Combobox
  • Command
  • ContextMenu
  • DataTable
  • DatePicker
  • Dialog
  • Direction
  • Drawer
  • DropdownMenu
  • Empty
  • Field
  • HoverCard
  • Input
  • InputGroup
  • InputOtp
  • Item
  • Kbd
  • Label
  • Marker
  • Menubar
  • Message
  • MessageScroller
  • NativeSelect
  • NavigationMenu
  • Pagination
  • Popover
  • Progress
  • RadioGroup
  • Resizable
  • ScrollArea
  • Select
  • Separator
  • Sheet
  • Sidebar
  • Skeleton
  • Slider
  • Sonner
  • Spinner
  • Switch
  • Table
  • Tabs
  • Textarea
  • Toast
  • Toggle
  • ToggleGroup
  • Tooltip
  • Typography

Collapsible

An interactive component which expands/collapses a panel.

Order #4189

StatusShipped

Installation#

npx shadcn@latest add @rescript-shadcn/Collapsible

Usage#

<Collapsible>
  <Collapsible.Trigger render={<Button variant=Ghost size=Icon />}>
    <Icons.ChevronsUpDown />
  </Collapsible.Trigger>
  <Collapsible.Content>
    {"Content here."->React.string}
  </Collapsible.Content>
</Collapsible>

Controlled State#

Use the open and onOpenChange props to control the state.

@react.component
let make = () => {
  let (open_, setOpen) = React.useState(() => false)
 
  <Collapsible open_= onOpenChange={o => setOpen(_ => o)}>
    <CollapsibleTrigger> {"Toggle"->React.string} </CollapsibleTrigger>
    <CollapsibleContent> {"Content"->React.string} </CollapsibleContent>
  </Collapsible>
}

Examples#

Basic#

Settings Panel#

Use a trigger button to reveal additional settings.

Radius
Set the corner radius of the element.

File Tree#

Use nested collapsibles to build a file tree.

API Reference#

See the Base UI documentation for more information.

@@directive("'use client'")

@react.component
@@directive("'use client'")

@react.component
@react.component
let make = () =>
  <Card className="mx-auto w-full max-w-sm">
type rec fileTreeItem =
  | File({name: string})
  | Folder({name: string, items: array<fileTreeItem>})