import { ReactNode, ReactElement, ButtonHTMLAttributes } from 'react'; import { DropdownMenuContentProps } from '@radix-ui/react-dropdown-menu'; import { SelectV2MenuRootPropsBase, SelectV2SkeletonProps, SelectV2Size, SelectV2Variant } from '../SelectV2/selectV2.shared.types'; import { SelectV2MenuDimensions, SelectV2TriggerDimensions, SelectV2MenuPosition, SelectV2ErrorState, SelectV2SearchConfig } from '../SingleSelectV2/singleSelectV2.types'; import { MultiSelectV2GroupType, MultiSelectBaseProps } from './multiSelectV2.base.types'; export { SelectV2Alignment as MultiSelectV2Alignment, SelectV2Variant as MultiSelectV2Variant, SelectV2Size as MultiSelectV2Size, SelectV2Side as MultiSelectV2Side, } from '../SelectV2/selectV2.shared.types'; export type { SelectV2SkeletonProps as MultiSelectV2SkeletonProps }; export type { SelectV2MenuDimensions, SelectV2TriggerDimensions, SelectV2MenuPosition, SelectV2ErrorState, SelectV2SearchConfig, }; export { MultiSelectV2SelectionTagType } from './multiSelectV2.base.types'; export type { MultiSelectV2ItemType, MultiSelectV2GroupType, FlattenedMultiSelectV2Item, MultiSelectV2PrimaryAction, MultiSelectV2SecondaryAction, MultiSelectBaseProps, } from './multiSelectV2.base.types'; export type MultiSelectV2MenuProps = { items: MultiSelectV2GroupType[]; selected: string[]; onSelect: (value: string) => void; trigger: ReactElement; menuDimensions?: SelectV2MenuDimensions; disabled?: boolean; search?: SelectV2SearchConfig; enableSelectAll?: boolean; selectAllText?: string; onSelectAll?: (selectAll: boolean, filteredItems: MultiSelectV2GroupType[]) => void; maxSelections?: number; menuPosition?: SelectV2MenuPosition; collisionBoundary?: DropdownMenuContentProps['collisionBoundary']; open?: boolean; onOpenChange?: (open: boolean) => void; showActionButtons?: boolean; primaryAction?: { text: string; onClick: (selectedValues: string[]) => void; disabled?: boolean; loading?: boolean; }; secondaryAction?: { text: string; onClick: () => void; disabled?: boolean; loading?: boolean; }; enableVirtualization?: boolean; virtualListItemHeight?: number; virtualListOverscan?: number; onEndReached?: () => void; endReachedThreshold?: number; hasMore?: boolean; loadingComponent?: ReactNode; skeleton?: SelectV2SkeletonProps; size?: SelectV2Size; variant?: SelectV2Variant; allowCustomValue?: boolean; customValueLabel?: string; menuId?: string; menuFooter?: ReactNode; }; export type MultiSelectV2MenuRootProps = SelectV2MenuRootPropsBase & { onInteractOutside?: (e: Event) => void; onPointerDownOutside?: (e: Event) => void; }; export type MultiSelectV2Props = Omit, 'style' | 'className' | 'onChange' | 'slot'> & MultiSelectBaseProps & { /** * Legacy per-item toggle callback. Prefer `onSelectionChange` for * the complete resulting selection. */ onChange?: (value: string | string[]) => void; slot?: ReactNode; search?: SelectV2SearchConfig; customTrigger?: ReactElement; usePanelOnMobile?: boolean; triggerDimensions?: SelectV2TriggerDimensions; menuDimensions?: SelectV2MenuDimensions; menuPosition?: SelectV2MenuPosition; enableVirtualization?: boolean; virtualListItemHeight?: number; virtualListOverscan?: number; itemsToRender?: number; loadingComponent?: ReactNode; skeleton?: SelectV2SkeletonProps; multiSelectGroupPosition?: 'center' | 'left' | 'right'; menuFooter?: ReactNode; };