style-helper
Version:
Small helpers for working with CSS-in-JS
47 lines (46 loc) • 1.94 kB
TypeScript
/**
* 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>;