import type { ComponentType } from 'react'; import type { IconProps } from '../icon'; import type { FoundationColors, ComponentColors, SemanticColors, Animation, Breakpoints, Border, Borders, Font, Grid, Lighting, MediaQuery, Sizing, Typography, ZIndex } from '../themes'; import type { PrimitiveColors } from '../tokens'; export type { Animation, Breakpoints, Border, Borders, Font, Grid, Lighting, MediaQuery, Sizing, Typography, ZIndex, }; export type ColorTokens = PrimitiveColors & FoundationColors & ComponentColors & SemanticColors & { [key in string]: string; }; export type Theme = { name: string; animation: Animation; borders: Borders; breakpoints: Breakpoints; colors: ColorTokens; direction: 'auto' | 'rtl' | 'ltr'; grid: Grid; icons?: Icon; lighting: Lighting; mediaQuery: MediaQuery; sizing: Sizing; typography: Typography; zIndex: ZIndex; }; type ForwardedSVG = React.ForwardRefExoticComponent & IconProps, 'ref'> & React.RefAttributes>; export type Icon = { Alert?: ComponentType | ForwardedSVG; ArrowDown?: ComponentType | ForwardedSVG; ArrowLeft?: ComponentType | ForwardedSVG; ArrowRight?: ComponentType | ForwardedSVG; ArrowUp?: ComponentType | ForwardedSVG; Blank?: ComponentType | ForwardedSVG; Calendar?: ComponentType | ForwardedSVG; CheckIndeterminate?: ComponentType | ForwardedSVG; Check?: ComponentType | ForwardedSVG; ChevronDown?: ComponentType | ForwardedSVG; ChevronDownSmall?: ComponentType | ForwardedSVG; ChevronUp?: ComponentType | ForwardedSVG; ChevronUpSmall?: ComponentType | ForwardedSVG; ChevronLeft?: ComponentType | ForwardedSVG; ChevronLeftSmall?: ComponentType | ForwardedSVG; ChevronRight?: ComponentType | ForwardedSVG; ChevronRightSmall?: ComponentType | ForwardedSVG; CircleCheckFilled?: ComponentType | ForwardedSVG; CircleExclamationPointFilled?: ComponentType | ForwardedSVG; DeleteAlt?: ComponentType | ForwardedSVG; Delete?: ComponentType | ForwardedSVG; Filter?: ComponentType | ForwardedSVG; Grab?: ComponentType | ForwardedSVG; Hide?: ComponentType | ForwardedSVG; Menu?: ComponentType | ForwardedSVG; Overflow?: ComponentType | ForwardedSVG; PaperclipFilled?: ComponentType | ForwardedSVG; Plus?: ComponentType | ForwardedSVG; Search?: ComponentType | ForwardedSVG; Show?: ComponentType | ForwardedSVG; Spinner?: ComponentType | ForwardedSVG; TrashCanFilled?: ComponentType | ForwardedSVG; TriangleDown?: ComponentType | ForwardedSVG; TriangleLeft?: ComponentType | ForwardedSVG; TriangleRight?: ComponentType | ForwardedSVG; TriangleUp?: ComponentType | ForwardedSVG; Upload?: ComponentType | ForwardedSVG; }; export type DeepPartial = { [P in keyof T]?: T[P] extends (infer R)[] ? DeepPartial[] : T[P] extends object ? DeepPartial : T[P]; }; export type MakeExtendable = { [K in keyof T]: T[K] extends object ? MakeExtendable : T[K]; } & { [k: string]: any; };