collapsible.tsx 783 B

123456789101112131415161718192021
  1. "use client"
  2. import * as React from "react"
  3. import { Collapsible as CollapsiblePrimitive } from "@base-ui/react/collapsible"
  4. const Collapsible = CollapsiblePrimitive.Root
  5. const CollapsibleTrigger = React.forwardRef<
  6. HTMLButtonElement,
  7. React.ComponentPropsWithoutRef<typeof CollapsiblePrimitive.Trigger> & { asChild?: boolean }
  8. >(({ asChild, children, ...props }, ref) => {
  9. if (asChild) {
  10. return <CollapsiblePrimitive.Trigger ref={ref} render={children as React.ReactElement} {...props} />
  11. }
  12. return <CollapsiblePrimitive.Trigger ref={ref} {...props}>{children}</CollapsiblePrimitive.Trigger>
  13. })
  14. CollapsibleTrigger.displayName = "CollapsibleTrigger"
  15. const CollapsibleContent = CollapsiblePrimitive.Panel
  16. export { Collapsible, CollapsibleTrigger, CollapsibleContent }