UNPKG

oncss

Version:

A CSS framework for modern web development.

69 lines (66 loc) 3.14 kB
import * as CSS from 'csstype'; type CSSProperties = CSS.Properties<number | string>; type CSSNestedSelectors<Aliases, BreakpointKeys extends string> = { [key in `& ${string}` | `&:${string}`]: CSSPropsWithoutGlobal<Aliases, BreakpointKeys>; }; type CSSNestedSelectorsWithoutChild<Aliases, BreakpointKeys extends string> = { "&": CSSPropsWithoutGlobal<Aliases, BreakpointKeys>; }; type MediaCSS<Aliases, BreakpointKeys extends string> = { [key: `@${AtRules} ${string}`]: CSSProps<Aliases, BreakpointKeys>; }; type KeyframesCSS<Aliases> = { [key: `@keyframes ${string}`]: { from?: CSSValueWithoutBreakpoint<Aliases>; to?: CSSValueWithoutBreakpoint<Aliases>; [key: `${string}%`]: CSSValueWithoutBreakpoint<Aliases>; }; }; type GlobalCSS<Aliases, BreakpointKeys extends string> = { '@global'?: { [key: string]: CSSPropsWithoutGlobal<Aliases, BreakpointKeys>; }; }; type BreakpointTypes<BreakpointKeys extends string, ValueTypes> = { [key in number | BreakpointKeys]?: ValueTypes; }; type CSSValueWithoutBreakpoint<Aliases> = { [Property in keyof (CSSProperties & Aliases)]?: (CSSProperties & Aliases)[Property]; }; type CSSValue<Aliases, BreakpointKeys extends string> = { [Property in keyof (CSSProperties & Aliases)]?: (CSSProperties & Aliases)[Property] | BreakpointTypes<BreakpointKeys, (CSSProperties & Aliases)[Property]>; }; type CSSPropsWithoutGlobal<Aliases, BreakpointKeys extends string> = CSSValue<Aliases, BreakpointKeys> | KeyframesCSS<Aliases> | MediaCSS<Aliases, BreakpointKeys> | CSSNestedSelectors<Aliases, BreakpointKeys> | CSSNestedSelectorsWithoutChild<Aliases, BreakpointKeys>; type CSSProps<Aliases, BreakpointKeys extends string> = GlobalCSS<Aliases, BreakpointKeys> | CSSPropsWithoutGlobal<Aliases, BreakpointKeys>; type AliasFn<Aliases> = (value: any) => CSSValueWithoutBreakpoint<Aliases>; type OptionAliases<Aliases> = { [key in keyof Aliases]: AliasFn<Aliases>; }; interface CSSOptionProps<Aliases, BreakpointKeys extends string> { classPrefix?: string; breakpoints?: { [key in BreakpointKeys]: number; }; aliases?: OptionAliases<Aliases>; injectStyle?: boolean; container?: Document | HTMLElement; selector?: string; cacheId?: string; skipProps?: (prop: string, value: string | number, dept: number) => boolean | void; getValue?: (value: string | number, prop: string, css: CSSProps<Aliases, BreakpointKeys>, dept: number) => (string | number); getProps?: (prop: string, value: string | number, css: CSSProps<Aliases, BreakpointKeys>, dept: number) => CSSProps<Aliases, BreakpointKeys> | void; } type CSSFactoryType = { css: string; cachekey: string; classname: string; cssraw: CSSProps<any, any>; cache: boolean; skiped: string[]; cacheId: string; getStyleTag: () => HTMLStyleElement | null; deleteStyle: () => void; inject: () => HTMLStyleElement; refresh: () => HTMLStyleElement; }; export type { AliasFn, BreakpointTypes, CSSFactoryType, CSSOptionProps, CSSProps, CSSPropsWithoutGlobal, CSSValueWithoutBreakpoint, OptionAliases };