import { CSSProperties } from 'react'; import { Size, Color, Kind } from '../../types'; type availableColor = Color.green | Color.dark | Color.blue; export interface sourceOption { label: string; selected?: boolean; disabled?: boolean; [key: string]: any; } export interface Source { [key: string]: sourceOption[]; } export interface MenuItem { type: 'menuItem'; value: { label: string; isActive: boolean; isDisabled: boolean; ariaLabel?: string; }; } export interface Divider { type: 'Divider'; value: boolean; } export type MenuOption = MenuItem | Divider; export interface ListboxOptions { size: Size; color: availableColor; kind: Kind; className?: string; minHeight?: number; maxHeight?: number; destinationBtnIcon?: string; sourceBtnIcon?: string; isInverse?: boolean; isMultiSelect?: boolean; source?: Source; destination?: Source; destinationChanged?: (items: Source) => void; sourceChanged?: (source: Source) => void; } export interface StateContextOptions { size: Size; color: availableColor; kind: Kind; isInverse: boolean; controlType: 'checkbox' | 'none'; dayTime: 'light' | 'dark'; } export interface ListboxContextOptions { state: StateContextOptions; styles: styledMapScheme; minHeight?: number; } type styleObj = { placeholder: { color: CSSProperties['color']; borderColor: CSSProperties['borderColor']; backgroundColor: CSSProperties['backgroundColor']; }; }; type sizeObj = { spaceGap: CSSProperties['gap']; }; export interface styledMapScheme { style: { light: styleObj; dark: styleObj; }; size: { s: sizeObj; m: sizeObj; l: sizeObj; }; } export {};