UNPKG

style-helper

Version:

Small helpers for working with CSS-in-JS

47 lines (46 loc) 1.94 kB
/** * Escape a string for use in double quotes. */ export declare function escape(value: string): string; /** * Quote a string for use in CSS. */ export declare function quote(value: string): string; /** * Wrap a string in a CSS `url()` function. */ export declare function url(value: string): string; /** * CSS Style object. */ export interface Style { [selector: string]: string | number | null | undefined | (string | number)[] | Style; } /** * Turn a list of styles into an object. */ export declare function objectify<T extends string, U extends Style[T]>(...styles: Array<[T | T[], U]>): Record<T, U>; /** * Repeats the same style for multiple selectors. * * Reference: https://github.com/blakeembrey/free-style/issues/72. */ export declare function multi<T extends string, U extends Style>(selectors: T[], style: U): Record<T, U>; /** * Check if an object looks like a style. */ export declare function isStyle(value: any): value is Style; /** * Recursive object merge type. */ export declare type Merge<T, U> = [T, U] extends [object, object] ? { [K in keyof T | keyof U]: K extends keyof (T | U) ? Merge<T[K], U[K]> : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; } : U; /** * Merge CSS styles recursively. */ export declare function merge<T1 extends Style>(s1: T1): T1; export declare function merge<T1 extends Style, T2 extends Style>(s1: T1, s2: T2): Merge<T1, T2>; export declare function merge<T1 extends Style, T2 extends Style, T3 extends Style>(s1: T1, s2: T2, s3: T3): Merge<Merge<T1, T2>, T3>; export declare function merge<T1 extends Style, T2 extends Style, T3 extends Style, T4 extends Style>(s1: T1, s2: T2, s3: T3, s4: T4): Merge<Merge<Merge<T1, T2>, T3>, T4>; export declare function merge<T1 extends Style, T2 extends Style, T3 extends Style, T4 extends Style, T5 extends Style>(s1: T1, s2: T2, s3: T3, s4: T4, s5: T5): Merge<Merge<Merge<Merge<T1, T2>, T3>, T4>, T5>;