import { FontStyleTypeModel, ThemeTypesModel } from '../../Themes/theme_types'; import React from 'react'; import { Size, Color } from '../../types'; type availableSizes = Size.s | Size.m | Size.l; interface nodeObjectType { label: string; id: string; children: nodeObjectType[]; icon?: string; className?: string; isDisabled?: boolean; isChecked?: boolean | 'mixed'; isExpanded?: boolean; isActive?: boolean; } interface TreeViewItemProps { node: nodeObjectType; size: availableSizes; color: Color.green | Color.blue | Color.dark; level?: number; recursionDeepness?: number; theme?: ThemeTypesModel; expandIcon?: string; isCheckboxVisible?: boolean; isInverse?: boolean; focusBorderState: boolean; onBlur?: (e: React.FocusEvent) => void; expandedHandler: (node: nodeObjectType) => void; checkboxHandler: (node: nodeObjectType) => void; itemActivated: (node: nodeObjectType) => void; } interface ContainerProps { theme: ThemeTypesModel; disabled: boolean; } interface OptionProps { level: number; theme: ThemeTypesModel; styled: ModelView; outlineAllowed: boolean; size: availableSizes; color: 'dark' | 'inverse'; isCheckbox?: boolean; bgHighlight: boolean; } interface WrapperProps { level: number; theme: ThemeTypesModel; styled: ModelView; size: availableSizes; } interface ArrowWrapperProps { theme: ThemeTypesModel; expanded: boolean; } interface iconSizeParams { marginRight: number; width: number; height: number; } interface buttonSizeParams { paddingTop: number; paddingRight: number; paddingBottom: number; paddingLeft: number; checkboxSize: number; } interface elementsInSize { levelOffset: number; checkbox: { marginRight: number; top: number; left: number; }; expandIcon: { top: number; left: number; marginRight: number; }; children: { marginBottom: number; }; icon: iconSizeParams; button: buttonSizeParams; font: FontStyleTypeModel; } interface styleComponentParams { backgroundColor: string; fontColor: string; } interface stateTypeComponent { default: styleComponentParams; hover: styleComponentParams; active: styleComponentParams; } interface styleType { dark: stateTypeComponent; inverse: stateTypeComponent; } interface ModelView { style: styleType; size: { s: elementsInSize; m: elementsInSize; l: elementsInSize; }; } export type { nodeObjectType, TreeViewItemProps, ContainerProps, OptionProps, WrapperProps, ArrowWrapperProps, ModelView, };