import { IconChevronDown as ChevronDown } from '@tabler/icons-react' import { cn } from '@/lib/utils' import { Collapsible, CollapsibleContent, CollapsibleTrigger } from './ui/collapsible' import { IconLogo } from './ui/icons' import { Separator } from './ui/separator' import { CurrentUserAvatar } from './current-user-avatar' interface CollapsibleMessageProps { children: React.ReactNode role: 'user' | 'assistant' isCollapsible?: boolean isOpen?: boolean header?: React.ReactNode onOpenChange?: (open: boolean) => void showBorder?: boolean showIcon?: boolean variant?: 'default' | 'minimal' | 'process' | 'process-sub' showSeparator?: boolean renderLeft?: React.ReactNode chevronSize?: 'sm' | 'md' headerClickBehavior?: 'toggle' | 'inspect' | 'split' } export function CollapsibleMessage({ children, role, isCollapsible = false, isOpen = true, header, onOpenChange, showBorder = true, showIcon = true, variant = 'default', showSeparator = true, renderLeft, chevronSize = 'md', headerClickBehavior = 'toggle' }: CollapsibleMessageProps) { const content = children return (
{renderLeft ? ( renderLeft ) : showIcon ? (
{role === 'assistant' ? ( ) : ( )}
) : null} {isCollapsible ? (
{header && (
onOpenChange(!isOpen) : undefined } > {header}
)} {(variant === 'minimal' || variant === 'process' || variant === 'process-sub') && ( )} {variant === 'default' && ( )}
{showSeparator && variant === 'default' && ( )}
{content}
) : (
{content}
)}
) }