import { ReactNode } from "react"; export interface SelectProps { label?: string; showLabel?: boolean; optionsList: Option[]; selectedOption?: Option; onChange: (option: Option) => void; errorMsg?: string; className?: string; optionZIndex?: number; disabled?: boolean; borderRadius?: boolean; showBorder?: boolean; required?: boolean; } export interface DrowdownPosition { positionX: number; positionY: number; width: number; fromBottom: number; } export interface SelectState { isInputFocused: boolean; iconColor: string; isIconClick: boolean; showOptions: boolean; options: Option[]; option: string; dropdownPosition: DrowdownPosition; } export type SelectAction = { type: 'FOCUS_INPUT'; } | { type: 'BLUR_INPUT'; payload: { optionsList: Option[]; option: Option['value']; }; } | { type: 'MOUSE_ENTER'; } | { type: 'MOUSE_LEAVE'; } | { type: 'UPDATE_DROPDOWN_POSITION'; payload: { positionX: number; positionY: number; width: number; fromBottom: number; }; } | { type: 'UPDATE_OPTION'; payload: string; } | { type: 'UPDATE_OPTION_LIST'; payload: Option[]; } | { type: 'SHOW_ERROR'; payload: { optionsList: Option[]; option: Option['value']; }; }; export interface Option { label: string | ReactNode; value: string; disabled?: boolean; }