Copy import * as React from "react"
import { Button } from "@/components/ui/button"
import {
Collapsible,
CollapsibleContent,
CollapsibleTrigger,
} from "@/components/ui/collapsible"
import { ChevronsUpDown } from "lucide-react"
export default function CollapsibleDemo () {
const [ isOpen , setIsOpen ] = React. useState ( true )
return (
< Collapsible
open = {isOpen}
onOpenChange = {({ open }) => setIsOpen (open)}
className = "w-[350px] space-y-2"
>
< div className = "flex items-center justify-between space-x-4 px-4" >
< h4 className = "font-semibold text-sm" >Ark UI supported frameworks</ h4 >
< CollapsibleTrigger asChild >
< Button variant = "ghost" size = "sm" className = "w-9 p-0" >
< ChevronsUpDown className = "h-4 w-4" />
< span className = "sr-only" >Toggle</ span >
</ Button >
</ CollapsibleTrigger >
</ div >
< div className = "rounded-md border px-4 py-3 font-mono text-sm" >
@ark-ui/react
</ div >
< CollapsibleContent className = "space-y-2" >
< div className = "rounded-md border px-4 py-3 font-mono text-sm" >
@ark-ui/solid
</ div >
< div className = "rounded-md border px-4 py-3 font-mono text-sm" >
@ark-ui/vue
</ div >
</ CollapsibleContent >
</ Collapsible >
)
}
Installation
Copy and paste the following code into your project. Copy "use client"
import * as React from "react"
import { Collapsible as CollapsiblePrimitive } from "@ark-ui/react/collapsible"
import { cn } from "@/lib/utils"
const Collapsible = CollapsiblePrimitive.Root
const CollapsibleContent = React.forwardRef <
React.ElementRef <typeof CollapsiblePrimitive.Content > ,
CollapsiblePrimitive.ContentProps
> (({ className , ... props }, ref ) => (
< CollapsiblePrimitive.Content
ref = {ref}
className = { cn (
"overflow-hidden transition-all data-[state=closed]:animate-collapsible-up data-[state=open]:animate-collapsible-down" ,
className
)}
{ ... props}
/>
))
CollapsibleContent.displayName = "CollapsibleContent"
const CollapsibleContext = CollapsiblePrimitive.Context
const CollapsibleIndicator = CollapsiblePrimitive.Indicator
const CollapsibleTrigger = CollapsiblePrimitive.Trigger
export {
Collapsible,
CollapsibleContent,
CollapsibleContext,
CollapsibleIndicator,
CollapsibleTrigger,
}
Expand Update the import paths to match your project setup. bunx --bun shadcn@latest add @shipbase/collapsible
npx shadcn@latest add @shipbase/collapsible
pnpm dlx shadcn@latest add @shipbase/collapsible
yarn dlx shadcn@latest add @shipbase/collapsible
Usage
Copy import {
Collapsible,
CollapsibleContent,
CollapsibleTrigger,
} from "@/components/ui/collapsible"
Copy < Collapsible >
< CollapsibleTrigger >Can I use this in my project?</ CollapsibleTrigger >
< CollapsibleContent >
Yes. Free to use for personal and commercial projects. No attribution
required.
</ CollapsibleContent >
</ Collapsible >