import clsx from 'clsx' import { forwardRef, useState } from 'react' import { CollapsibleProps } from '@dao-dao/types/components/Collapsible' import { toAccessibleImageUrl } from '@dao-dao/utils' import { DropdownIconButton } from './icon_buttons/DropdownIconButton' import { TooltipInfoIcon } from './tooltip' const _titleClassName = 'flex grow flex-row items-center gap-2 overflow-hidden py-2 transition-opacity hover:opacity-70 active:opacity-60 cursor-pointer' export const Collapsible = forwardRef( function Collapsible( { label, tooltip, imageUrl, link, defaultCollapsed = false, onExpand, indentDropdownSize = 0, noHeaderIndent = false, noContentIndent = false, noPlaceholderDot = false, dropdownIconSize = 'sm', children, containerClassName, headerClassName, labelClassName, imageClassName, labelContainerClassName, dropdownContainerClassName, contentContainerClassName, }, ref ) { const [expanded, setExpanded] = useState(!defaultCollapsed) const toggleExpanded = () => { const newExpanded = !expanded setExpanded(newExpanded) onExpand?.(newExpanded) } const titleClassName = clsx(_titleClassName, labelContainerClassName) const titleContent = ( <> {!!imageUrl && (
)}

{label}

{tooltip && } ) return (
{[...Array(indentDropdownSize)].map((_, index) => (
))}
{children ? ( ) : ( !noPlaceholderDot && (
) )}
{link ? ( {titleContent} ) : (
{titleContent}
)}
{children && (
{children}
)}
) } )