import type { CSSProperties, FC, ReactNode } from 'react'; import useLocalStorageState from 'use-local-storage-state'; import { LOCAL_STORAGE_KEY } from '../App.types.ts'; import { keyboardHandler } from '../helpers/keyboard-handler.ts'; import { Button } from './Button.tsx'; import { Icon, IconName } from './Icon/Icon.tsx'; interface DropdownButtonProps { label?: string; title?: string; iconName?: IconName; iconComponent?: ReactNode; active?: boolean; onClick?: () => void; className?: string; style?: CSSProperties; buttonStyle?: CSSProperties; dataId: string; children?: ReactNode; defaultOpen?: boolean; } export const DropdownButton: FC = ({ label, title, iconName, iconComponent, className, style, buttonStyle, dataId, children, defaultOpen = false, }) => { const [isOpen, setIsOpen] = useLocalStorageState( `${LOCAL_STORAGE_KEY.DROPDOWN}___${dataId}`, { defaultValue: defaultOpen } ); const classParts = [ 'flex flex-col gap-2 relative', className || '', isOpen ? ' bg-slate-900' : '', ]; return (
); };