import type { ImageProps, ImageStyle, TextProps, TextStyle, ViewProps, ViewStyle } from 'react-native'; import type { propertyTokenMap } from './propertyTokenMap'; import type { CSSProperties, RefAttributes } from 'react'; export type RNStyledProps = ViewStyle | ImageStyle | TextStyle; export type RNProps = ViewProps | TextProps | ImageProps; export type GenericKey = string | number | symbol; export type PropertyTokenType = typeof propertyTokenMap; export type IState = 'indeterminate' | 'checked' | 'readOnly' | 'required' | 'invalid' | 'focus' | 'focusVisible' | 'hover' | 'pressed' | 'active' | 'loading' | 'disabled'; export type StyledValue = { [key: string]: any; }; export type CSSObject = { [key: string]: any; }; export type PLATFORMS = 'ios' | 'android' | 'web'; export type COLORMODES = 'dark' | 'light'; /*************************** CORE TYPES *************************************************/ export interface IStyledPlugin { config?: IStyled; register(styledUtils: IStyled): void; inputMiddleWare(styledObj: any): void; componentMiddleWare?(props: any): void; } export interface IAnimationDriverPlugin { config?: IStyled; register(styledUtils: IStyled): void; engine: any; } export declare class IAnimationResolver { aliases?: any; tokens?: any; ref?: any; } export declare class IStyled { aliases?: any; tokens?: any; ref?: any; } export interface Tokens { colors?: { [key: GenericKey]: Record & {}; }; sizes?: { [key: GenericKey]: Record & {}; }; space?: { [key: GenericKey]: Record & {}; }; borderWidths?: { [key: GenericKey]: Record & {}; }; radii?: { [key: GenericKey]: Record & {}; }; breakpoints?: { [key: GenericKey]: Record & {}; }; mediaQueries?: { [key: GenericKey]: Record & {}; }; letterSpacings?: { [key: GenericKey]: Record & {}; }; opacity?: { [key: GenericKey]: Record & {}; }; lineHeights?: { [key: GenericKey]: any; }; fontWeights?: { [key: GenericKey]: any; }; fonts?: { [key: GenericKey]: any; }; fontSizes?: { [key: GenericKey]: any; }; } export type AliasesType = { [key: string]: keyof RNStyledProps; }; export type GlobalPluginType = unknown; export type GenericAliases = {}; export type GenericGlobalStyle = {}; export type CreateConfig = { aliases: AliasesType; tokens: CreateGenericConfig['tokens']; globalStyle?: CreateGenericConfig['globalStyle']; }; export type ThemeStyles = Partial<{ [key: string]: { [key in keyof IToken]?: { [k in `${keyof IToken[key]}`]?: `$${key}$${keyof IToken[key]}` | (String & {}) | number; }; }; }>; export type GlueStackConfig = { tokens: IToken; aliases: IGlobalAliases; globalStyle?: GlobalStyles; plugins?: PluginType; themes?: ThemeStyles; }; export type ComponentsThemeType = { [key: string]: { theme: GlobalStyles; }; }; export type InferConfig = Conf extends GlueStackConfig ? GlueStackConfig : any; export type CreateGenericConfig = GlueStackConfig; export type CreateGenericComponents = GlueStackConfig; export type Aliases = GSConfig['aliases']; export type Plugins = GSConfig['plugins']; export type Components = GSConfig['components']; export type IMediaQueries = keyof GSConfig['tokens']['mediaQueries']; export type SxStyleProps = { sx?: Partial & { [Key in `@${IMediaQueries}`]?: SxProps; }>; }; type GlobalVariants = GSConfig['globalStyle']['variants']; type GlobalThemes = keyof GSConfig['themes']; export type IComponentStyleConfig = Partial<{ descendantStyle: any; ancestorStyle: any; resolveProps: any; componentName: ComCon; }>; export type Config = { alias: { [K: string]: any; }; tokens: { colors: { [K: string]: any; }; mediaQueries: { [K: string]: any; }; }; }; type PropertyTokenMapType = { [key: string]: keyof Tokens; }; type ResolverType = { [key: string]: (rawValue: any, resolver: any) => any; }; type PropsResolveType = { props?: Partial; }; type PropertyResolverType = PropsResolveType & ResolverType; export type ExtendedConfigType = { propertyTokenMap?: PropertyTokenMapType; propertyResolver?: PropertyResolverType; plugins?: Array; }; /*********************** GLOBAL STYLE TYPES ****************************************/ export type GlobalVariantAliasesProps = AliasesProps | RNStyledProps; export type GlobalVariantSx = Partial> & { props?: RNProps & RNStyledProps & GlobalVariantAliasesProps & { [k in keyof Variants]?: keyof Variants[k]; } & { as?: any; } & Partial<{ [Key: string]: any; }>; } & { [Key in `_${COLORMODES}`]?: GlobalVariantSx; } & { [Key in `:${IState}`]?: GlobalVariantSx; } & { [Key in `_${PLATFORMS}`]?: GlobalVariantSx; } & { [Key in `_${string & {}}`]?: GlobalVariantSx | { [key in string]?: any; }; }; type GlobalCompoundVariant = { [Key in keyof Variants]?: keyof Variants[Key]; } & { value?: GlobalVariantSx; }; type GlobalVariantType = { [Key: string & {}]: { [Key in keyof Variants | (string & {})]?: Partial & { [K in `@${keyof TokenTypes['mediaQueries']}`]?: GlobalVariantSx; }>; }; }; export type GlobalStyles = GlobalVariantSx & { [K in `@${keyof TokenTypes['mediaQueries']}`]?: GlobalVariantSx; } & { variants: GlobalVariantType<'variants' extends keyof Variants ? Variants['variants'] : unknown, AliasTypes, TokenTypes>; compoundVariants?: readonly GlobalCompoundVariant<'variants' extends keyof Variants ? Variants['variants'] : unknown, AliasTypes, TokenTypes>[]; }; /*********************** USER THEME / SX TYPES ****************************************/ export type ITheme = Partial>; export type StyledThemeProps = SxProps & { [Key in `@${IMediaQueries}`]: SxProps; } & { variants: VariantType; compoundVariants?: Array>; defaultProps?: { [Key in keyof MergeNested, GlobalVariants>]?: keyof MergeNested, GlobalVariants>[Key]; } & { [key: string]: any; }; }; type StylePropsType = (RNStyles & AliasesProps>) | (PLATFORM extends '_web' ? TokenizedRNStyleProps : {}); type PassingPropsType = MediaQuery extends '' ? { props?: Partial & AliasesProps> & { as?: any; } & { [Key in keyof MergeNested, GlobalVariants>]?: keyof MergeNested, GlobalVariants>[Key]; } & { [Key: string]: any; }>; } : {}; type AnimatedPropsType = { opacity: number | string; x: number | string | {}; y: number | string | {}; scale: any; scaleX: any; scaleY: any; skewX: any; skewY: any; perspective: any; rotate: number; rotateY: number; rotateZ: number; matrix: any; }; type PluginPropsType = { [key in keyof UnionToIntersection>]: Partial & Partial> & Partial; }; export type SxProps = Partial & PassingPropsType> | (Partial> & { [Key in `_${COLORMODES}`]?: SxProps; } & { [Key in `.${GlobalThemes}`]?: SxProps & PassingPropsType & Partial<{ [key: string]: any; }>; } & { [Key in `.${string}`]?: SxProps & PassingPropsType & Partial<{ [key: string]: any; }>; } & { [Key in `:${IState}`]?: SxProps; } & { [Key in `_${PLATFORMS}`]?: SxProps & PassingPropsType & Partial<{ [key: string]: any; }>; } & { [Key in `_${string}`]?: SxProps & PassingPropsType & Partial<{ [key: string]: any; }>; }); export type VariantType = { [Key1 in keyof Variants]: { [Key in keyof Variants[Key1]]: Partial & { [K in `@${IMediaQueries}`]?: SxProps; }>; }; }; type CompoundVariant = { [Key in keyof Variants]?: keyof Variants[Key] extends 'true' | 'false' ? boolean : keyof Variants[Key]; } & { value?: SxProps; }; /*********************** VERBOSED THEME / SX TYPES ****************************************/ export type VerbosedSxProps = { style?: (GenericComponentStyles | AliasesProps) & (PLATFORM extends 'web' ? { [key: string]: any; } : { [key: string]: any; }); state?: { [key: string]: VerbosedSxProps; }; colorMode?: { [key: string]: VerbosedSxProps; }; platform?: { [K in PLATFORMS]?: VerbosedSxProps; }; descendants?: Record>; }; export type StyledVerbosedThemeProps = { baseStyle: VerbosedSxProps & { queries?: Array>; }; variants: VerbosedVariantType; defaultProps?: { [Key in keyof Variants]?: keyof Variants[Key]; }; }; export type MediaQuery = { condition: `$${keyof GSConfig['tokens']['mediaQueries']}`; value: VerbosedSxProps; }; export type VerbosedVariantType = { [Key1 in keyof Variants]: { [Key in keyof Variants[Key1] | (string & {})]?: Partial>; }; } | { [Key: string & {}]: any; }; export type SxPropsTemp = { style?: any; state?: { [key: string]: VerbosedSxProps; }; platform?: { [key: string]: VerbosedSxProps; }; descendants?: { [key: string]: VerbosedSxProps; }; colorMode?: { [key: string]: VerbosedSxProps; }; }; export type Sx = { sx: VerbosedSxProps; variant: any; size: any; states?: { hover?: VerbosedSxProps; active?: VerbosedSxProps; focus?: VerbosedSxProps; }; ancestorStyle: { [key: string]: VerbosedSxProps; }; children?: React.ReactNode | { (resolveContextChildrenStyle: any): void; }; colorMode?: string; }; export type Path = Array; export type QueryType = { condition: string; value: VerbosedSX; }; export type QueryTypeResolved = { original: QueryType; resolved: QueryType; }; export type VerbosedSX = { style?: StyledValue; queries?: Array; platform?: { [K in PLATFORMS]?: VerbosedSX; }; colorMode?: { [K in COLORMODES]?: VerbosedSX; }; theme?: { [key: string]: VerbosedSX; }; state?: { [K in IState]?: VerbosedSX; }; descendants?: { [key: string]: VerbosedSX; }; }; export type VerbosedSxResolved = { styledValueResolvedWithMeta: StyledValueResolvedWithMeta; queriesResolved: Array; platform?: { [K in PLATFORMS]?: VerbosedSX; }; colorMode?: { [key: string]: VerbosedSxResolved; }; theme?: { [key: string]: VerbosedSxResolved; }; state?: { [key: string]: VerbosedSxResolved; }; descendants?: { [key: string]: VerbosedSxResolved; }; }; export type Styled = { baseStyle?: VerbosedSX; variants?: { [key: string]: VerbosedSX; }; sizes?: { [key: string]: VerbosedSX; }; defaultProps?: { [key: string]: any; }; }; export type StyledResolved = { baseStyle: VerbosedSxResolved | undefined; variants: { [key: string]: VerbosedSxResolved; } | undefined; compoundVariants?: Array | undefined; }; export type StyledValueResolvedWithMeta = { original?: StyledValue; resolved?: CSSObject; meta: { path?: Path; weight?: number; cssId: string; cssRuleset: string; colorMode?: string; queryCondition?: string; condition?: any; }; }; export type OrderedSXResolved = Array; export type IVerbosedTheme = Partial>; export type StateIds = { [key in IState | COLORMODES]?: { ids: Array; }; }; export type DefaultAndState = { default: Array; state: StateIds; }; export type IdsStateColorMode = { ids?: Array; state?: { [key: string]: IdsStateColorMode; }; colorMode?: { [key: string]: IdsStateColorMode; }; props?: any; }; export type StyleIds = { baseStyle: IdsStateColorMode & { theme?: { [key: string]: IdsStateColorMode; }; }; variants: { [key: string]: { [key: string]: IdsStateColorMode & { theme?: { [key: string]: IdsStateColorMode; }; }; }; }; compoundVariants: Array<{ [key: string]: IdsStateColorMode & { theme?: { [key: string]: IdsStateColorMode; }; }; condition: { [key: string]: any; }; }>; }; /********************* CONFIG FROM DECLARE MODULE *****************************************/ export interface ICustomConfig { } export interface ICustomComponents { } export interface GSConfig extends Omit, ICustomConfig, GenericComponents { components: ICustomComponents; } interface GenericComponents { components: {}; } /********************* COMPONENT PROPS TYPE *****************************************/ export type StyledComponentProps = Omit<'sx' extends keyof GenericComponentProps ? GenericComponentProps & VariantProps : Partial & VariantProps & UtilityProps, 'animationComponentGluestack'>> & RefAttributes

, 'animationComponentGluestack'>; export type VariantProps = GSConfig['globalStyle'] extends object ? { [Key in keyof MergeNestedThree]?: keyof MergeNestedThree[Key] extends 'true' | 'false' ? boolean : keyof MergeNestedThree[Key]; } : { [Key in keyof MergeNested]?: keyof MergeNested[Key] extends 'true' | 'false' ? boolean : keyof MergeNested[Key]; }; export type ComponentProps = SxStyleProps & { states?: { [K in IState]?: boolean; }; as?: any; }; export type VerbosedUtilityProps = { [key in `$${IState}`]: SxProps; } & { [key in `$${PLATFORMS}`]?: SxProps; } & { [key in `$${IMediaQueries}`]?: SxProps; } & { [key in `$_${string}`]?: SxProps; }; type Permutations = T extends any ? U extends '' ? T : `$${T}-${Permutations, ''>}` : never; type StatePropsCombination = Permutations; type PlatformPropsCombination = Permutations; type MediaQueryCombination = Permutations; type ColorModeCombination = Permutations; type ThemeCombination = Permutations<`t_${GlobalThemes}`, T>; type LastPart = T extends `${string}-${infer Rest}` ? LastPart : T; export type UtilityPropsCombinations = StatePropsCombination | PlatformPropsCombination | MediaQueryCombination | ColorModeCombination | ThemeCombination; export type UtilityProps = Omit>, keyof GenericComponentProps> & Omit>, keyof GenericComponentProps> & Partial<{ [key in UtilityPropsCombinations, string>>]?: LastPart extends keyof PropertyTokenType ? PropertyTokenType[LastPart] extends 'sizes' ? key extends `$web-${string}` ? WithSizeNegativeValue | (string & {}) : WithSizeNegativeValue | ExtendRNStyle> : PropertyTokenType[LastPart] extends 'space' ? key extends `$web-${string}` ? WithNegativeValue]]>> | (string & {}) : WithNegativeValue]]>> | ExtendRNStyle, LastPart> : PropertyTokenType[LastPart] extends keyof GSConfig['tokens'] ? key extends `$web-${string}` ? (string & {}) | StringifyToken]]> | ExtendRNStyle, LastPart> : StringifyToken]]> | ExtendRNStyle, LastPart> : LastPart extends keyof GetRNStyles ? GetRNStyles[LastPart] : never : LastPart extends keyof GetRNStyles ? GetRNStyles[LastPart] : never; }> & Partial<{ [key in UtilityPropsCombinations]?: LastPart extends keyof Aliases ? Aliases[LastPart] extends keyof GetRNStyles ? PropertyTokenType[Aliases[LastPart]] extends 'sizes' ? key extends `$web-${string}` ? (string & {}) | WithSizeNegativeValue | ExtendRNStyle, Aliases[LastPart]> : WithSizeNegativeValue | ExtendRNStyle, Aliases[LastPart]> : PropertyTokenType[Aliases[LastPart]] extends 'space' ? key extends `$web-${string}` ? (string & {}) | WithNegativeValue]]]>> | ExtendRNStyle, Aliases[LastPart]> : WithNegativeValue]]]>> | ExtendRNStyle, Aliases[LastPart]> : key extends `$web-${string}` ? (string & {}) | StringifyToken]]]> | ExtendRNStyle, Aliases[LastPart]> : StringifyToken]]]> | ExtendRNStyle, Aliases[LastPart]> : never : any; }> & Partial>; /********************* UTILITY TYPE *****************************************/ export type StringifyToken = T extends number | string ? `$${T}` : T; type FilteredKeys = { [K in keyof T]: T[K] extends never | undefined ? never : K; }[keyof T]; export type RemoveNever = { [K in FilteredKeys]: T[K]; }; type WithNegativeValue = T extends string | number ? T | `-${T}` : T; export type AliasesProps = RemoveNever<{ [key in keyof Aliases]?: Aliases[key] extends keyof GenericComponentStyles ? PropertyTokenType[Aliases[key]] extends 'sizes' ? WithSizeNegativeValue | ExtendRNStyle : PropertyTokenType[Aliases[key]] extends 'space' ? WithNegativeValue> | ExtendRNStyle : StringifyToken | ExtendRNStyle : never; }>; type MergeNested = T extends object ? U extends object ? { [K in keyof (T & U)]: K extends keyof T ? K extends keyof U ? MergeNested : T[K] : U[K]; } : T : U; type MergeNestedThree = MergeNested, W>; export type RNStyles = TokenizedRNStyleProps>>>; export type UnionToIntersection = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never; export type GetRNStyles = UnionToIntersection>>; export type ExtendRNStyle = GenericComponentStyles[key] extends string | undefined | (symbol & { __TYPE__: 'Color'; }) ? string & {} : GenericComponentStyles[key] extends string | undefined ? string & {} : GenericComponentStyles[key] extends number | undefined ? number & {} : GenericComponentStyles[key] extends number | string | undefined ? (number & {}) | (string & {}) : GenericComponentStyles[key]; type WithSizeNegativeValue = keyof Tokens extends 'sizes' ? StringifyToken | StringifyToken : StringifyToken; export type TokenizedRNStyleProps = { [key in keyof GenericComponentStyles]?: key extends keyof PropertyTokenType ? PropertyTokenType[key] extends 'sizes' ? WithSizeNegativeValue | ExtendRNStyle : PropertyTokenType[key] extends 'space' ? WithNegativeValue> | ExtendRNStyle : StringifyToken | ExtendRNStyle : GenericComponentStyles[key]; }; export type IWrapperType = 'global' | 'forwarded-base' | 'forwarded-descendant-base' | 'forwarded-variant' | 'forwarded-descendant-variant' | 'boot-base' | 'boot-base-state' | 'boot-descendant-base' | 'boot-descendant-base-state' | 'boot-variant' | 'boot-variant-state' | 'boot-descendant-variant' | 'boot-descendant-variant-state' | 'extended-base' | 'extended-base-state' | 'extended-descendant-base' | 'extended-descendant-base-state' | 'extended-variant' | 'extended-variant-state' | 'extended-descendant-variant' | 'extended-descendant-variant-state' | 'composed-base' | 'composed-base-state' | 'composed-descendant-base' | 'composed-descendant-base-state' | 'composed-variant' | 'composed-variant-state' | 'composed-descendant-variant' | 'composed-descendant-variant-state' | 'passing-base' | 'inline-base' | 'inline-variant' | 'inline-descendant-base' | 'inline-base-state'; export type GlobalStyleMap = Map; }>>; export type ExtendedTheme = ITheme; export type CreateComponents = { [key in keyof T]: T[key]; }; export type StyledConfig = any; export {}; //# sourceMappingURL=types.d.ts.map