import { breakpoints, cssStyles, pseudo1, pseudo2, pseudoClasses, pseudoGroupClasses } from './core/boxStyles'; import { ClassNameType } from './core/classNames'; import { BoxStyle, BoxStylesType, ExtractKeys } from './core/coreTypes'; import { default as boxComponents } from './core/extends/boxComponents'; export * from './array'; export type ArrayType = T extends (infer U)[] ? U : T; export declare namespace Augmented { interface BoxProps { } interface BoxPropTypes { } interface ComponentsTypes { } } type ExtractBoxStylesInternal> = { [K in keyof T]?: K extends keyof Augmented.BoxPropTypes ? BoxStylesType['values']> | Augmented.BoxPropTypes[K] : BoxStylesType['values']>; }; export type ExtractBoxStyles> = { [K in keyof T]?: BoxStylesType['values']>; }; export type PseudoClassesType = keyof typeof pseudoClasses; export type BoxStyles = ExtractBoxStylesInternal & Augmented.BoxProps; type BoxPseudoClassesStyles1 = ExtractKeys; type BoxPseudoClassesStyles2Nested = ExtractKeys; type BoxPseudoClassesStyles2TopLevel = ExtractKeys; export interface BoxStylesWithPseudoClasses extends BoxStyles, BoxPseudoClassesStyles1, BoxPseudoClassesStyles2Nested { } type BoxPseudoGroupClassesStyles = ExtractKeys>; type BoxBreakpointsStyles = ExtractKeys; type ExtractVariants = T extends { variants?: infer Variants; } ? keyof Variants extends never ? never : Extract : never; type ExtractChildrenVariants = T extends { children?: infer Children; } ? { [K in keyof Children & string]: ExtractVariants | ExtractChildrenVariants; }[keyof Children & string] : never; type ExtractChildrenNames = T extends { children?: infer Children; } ? { [K in keyof Children & string]: `${Prefix}${Prefix extends '' ? '' : '.'}${K}` | ExtractChildrenNames; }[keyof Children & string] : never; export type ExtractComponentsAndVariants = { [K in keyof T & string]: ExtractVariants | ExtractChildrenVariants; } & { [K in keyof T & string as ExtractChildrenNames]: ExtractChildrenVariants; }; type MergeUnion = { [K in keyof T | keyof U]: K extends keyof T ? K extends keyof U ? T[K] | U[K] : T[K] : K extends keyof U ? U[K] : never; }; type Simplify = T extends infer U ? { [K in keyof U]: U[K]; } : never; export type ComponentsAndVariants = Simplify, Augmented.ComponentsTypes>>; export interface ComponentProps { clean?: boolean; component?: TKey; variant?: ClassNameType; } export type BoxStyleProps = Simplify>; export type BoxComponentStyles = Simplify;