import { Collapsible, CollapsibleContent, CollapsibleTrigger, } from '@/components/ui/collapsible'; import { cn } from '@/lib/utils'; import { CollapsibleProps } from '@radix-ui/react-collapsible'; import { PropsWithChildren, ReactNode, useCallback, useEffect, useState, } from 'react'; import { IconFontFill } from './icon-font'; type CollapseProps = Omit & { title?: ReactNode; rightContent?: ReactNode; } & PropsWithChildren; export function Collapse({ title, children, rightContent, open = true, defaultOpen = false, onOpenChange, disabled, }: CollapseProps) { const [currentOpen, setCurrentOpen] = useState(open); useEffect(() => { setCurrentOpen(open); }, [open]); const handleOpenChange = useCallback( (open: boolean) => { setCurrentOpen(open); onOpenChange?.(open); }, [onOpenChange], ); return (
{title}
{rightContent}
{children}
); }