Bloom Logo

Collapsible

An interactive component that expands and collapses content panels with smooth height transitions.

collapsible.tsx

Collapsible panel built with Radix Primitives for expanding and contracting UI elements.

ReactRadix UITailwindUI ComponentCollapsible
"use client";

import * as React from "react";
import * as CollapsiblePrimitive from "@radix-ui/react-collapsible";

const Collapsible = CollapsiblePrimitive.Root;

const CollapsibleTrigger = CollapsiblePrimitive.CollapsibleTrigger;

const CollapsibleContent = React.forwardRef<
  React.ElementRef<typeof CollapsiblePrimitive.CollapsibleContent>,
  React.ComponentPropsWithoutRef<typeof CollapsiblePrimitive.CollapsibleContent>
>(({ className, children, ...props }, ref) => (
  <CollapsiblePrimitive.CollapsibleContent
    ref={ref}
    className="overflow-hidden data-[state=closed]:animate-collapsible-up data-[state=open]:animate-collapsible-down transition-all duration-300"
    {...props}
  >
    {children}
  </CollapsiblePrimitive.CollapsibleContent>
));
CollapsibleContent.displayName = CollapsiblePrimitive.CollapsibleContent.displayName;

export { Collapsible, CollapsibleTrigger, CollapsibleContent };

Interactive Example

Toggle hidden items using a trigger button with rotation icon transition.

@peduarte starred 3 repositories

@radix-ui/primitives
API Reference

Props — Collapsible

Properties for configuring the Collapsible component.

PropTypeDefaultDescription
openbooleanControlled open state of the collapsible panel.
defaultOpenbooleanfalseInitial open state when uncontrolled.
onOpenChange(open: boolean) => voidCallback function fired when the open state changes.
disabledbooleanfalseDisables interaction with the collapsible trigger.