import * as Css from 'csstype'; import { type CSSProperties } from 'react'; import { type Pseudos } from '../pseudos'; import { type StyleProps } from '../style-properties'; type CssDefinition = D | string | number | RecursiveCssSelector; type RecursiveCssSelector = { [selector: string]: (CssDefinition & D) | Array | ((theme: any) => string | number | Array); }; type PseudoKeys = keyof Css.Pseudos | Pseudos; type PseudoSelectorDefinition = D | RecursivePseudo; type RecursivePseudo = { [K in PseudoKeys]?: PseudoSelectorDefinition & D; }; type RecursiveCssObject = D & (D | RecursivePseudo | RecursiveCssSelector); type StylePropNames = keyof StyleProps; type ResponsiveValue = T | Array; type ReactCssPropertyValue = (string & {}) | (number & {}) | (boolean & {}); type ThemeThunk = T | ((theme: Record) => T); type RestNativeCssProperties = Omit; type ResponsiveRestNativeCssProperties = { [K in keyof RestNativeCssProperties]?: ThemeThunk>; }; export type ResponsiveSystemCssProperties = { [K in keyof StyleProps]?: ThemeThunk>; }; interface SystemCssProperties extends ResponsiveSystemCssProperties, ResponsiveRestNativeCssProperties { } export type SystemStyleObject = RecursiveCssObject; export {};