import { FontStyleTypeModel, ThemeTypesModel } from '../../Themes/theme_types'; import { Color, Size } from '../../types'; type availableSize = Size.s | Size.m | Size.l; type availableColor = Color.green | Color.dark | Color.blue; type widthProp = 'fixed' | 'full'; type rangePosition = 'first' | 'middle' | 'last'; interface segmentedItem { title: string; value: string; isActive?: boolean; icon?: string; className?: string; maxWidth?: number; activate?: () => void; } interface SegmentedControlItemProps { size: availableSize; color: availableColor; theme?: ThemeTypesModel; isDisabled?: boolean; isInverse?: boolean; hasDivider: boolean; type: 'text' | 'icon'; width: widthProp; rangePosition: rangePosition; orderPosition: number; segmentedItem: segmentedItem; hoverStarted: (item: segmentedItem, index: number) => void; hoverFinished: (item: segmentedItem, index: number) => void; activateItem: (item: segmentedItem) => void; } interface WrapperProps { theme: ThemeTypesModel; isFocused: boolean; maxWidthLimit?: number; isDisabled: boolean; styled: ModelView; size: availableSize; isActive: boolean; width: widthProp; rangePosition: rangePosition; hasDivider: boolean; color: availableColor; dayTime: 'day' | 'night'; } interface ItemProps { styled: ModelView; size: availableSize; theme: ThemeTypesModel; color: availableColor; isActive: boolean; rangePosition: rangePosition; isDisabled: boolean; width: widthProp; dayTime: 'day' | 'night'; } interface TextElProps { theme: ThemeTypesModel; styled: ModelView; size: availableSize; } interface IconElProps { theme: ThemeTypesModel; } interface styleParams { backgroundColor: string; fontColor: string; } interface styleStates { default: styleParams; hover: styleParams; active: styleParams; } interface styleVariants { green: styleStates; dark: styleStates; blue: styleStates; borderColor: string; } interface timeVariants { day: styleVariants; night: styleVariants; } interface sizeItemParams { paddingTop: number; paddingRight: number; paddingBottom: number; paddingLeft: number; } interface sizeVariants { item: sizeItemParams; font: FontStyleTypeModel; } interface ModelView { style: timeVariants; size: { s: sizeVariants; m: sizeVariants; l: sizeVariants; }; } export type { segmentedItem, SegmentedControlItemProps, WrapperProps, ItemProps, TextElProps, IconElProps, ModelView, };