eo-n/ui
UIComponentsCollapsible

Collapsible

Shows or hides content sections dynamically.

Installation

CLI

npx shadcn@latest add "https://eo-n.vercel.app/r/collapsible"

Manual

Copy and paste the following code into your project.

"use client";
 
import * as React from "react";
import { Collapsible as CollapsiblePrimitive } from "@base-ui-components/react/collapsible";
 
import { cn } from "@/lib/utils";
 
function Collapsible({
  ...props
}: React.ComponentProps<typeof CollapsiblePrimitive.Root>) {
  return <CollapsiblePrimitive.Root data-slot="collapsible" {...props} />;
}
 
function CollapsibleTrigger({
  ...props
}: React.ComponentProps<typeof CollapsiblePrimitive.Trigger>) {
  return (
    <CollapsiblePrimitive.Trigger data-slot="collapsible-trigger" {...props} />
  );
}
 
function CollapsibleContent({
  className,
  ...props
}: React.ComponentProps<typeof CollapsiblePrimitive.Panel>) {
  return (
    <CollapsiblePrimitive.Panel
      data-slot="collapsible-content"
      className={cn(
        "flex h-[var(--collapsible-panel-height)] flex-col overflow-hidden text-sm transition-all duration-300 ease-out data-[ending-style]:h-0 data-[starting-style]:h-0",
        className
      )}
      {...props}
    />
  );
}
 
export { Collapsible, CollapsibleTrigger, CollapsibleContent };
Update the import paths to match your project setup.

Usage

Import all parts and piece them together.

import {
  Collapsible,
  CollapsibleContent,
  CollapsibleTrigger,
} from "@/components/ui/collapsible";
<Collapsible>
  <CollapsibleTrigger>Is there any cost involved?</CollapsibleTrigger>
  <CollapsibleContent>
    No, it's completely free to use for both personal and professional projects.
  </CollapsibleContent>
</Collapsible>

On this page