UNPKG

react-classnaming

Version:

Tools to establish CSS classes as an explicit abstraction layer and to handle it as an interface between React and CSSStyleDeclaration

22 lines (21 loc) 971 B
import type { Ever, EmptyObject, AnyObject } from "./ts-swiss.types"; import type { RCC, RFC } from "./react-swiss.types"; /** Primitive for global CSS and CSS module */ export declare type ClassHash = undefined | string; export declare type ClassNamesCombiner<C extends CssModule> = Ever<C, Ever<keyof C, { classnames: { [K in keyof C]: ClassHash; }; }>>; declare type WithClassNames = { classnames: CssModule; }; export declare type CssModule = Record<string, ClassHash>; export declare type GetClassNames<T, D = EmptyObject, R = never> = [T] extends [never] ? D : "classnames" extends keyof T ? T["classnames"] : R; export declare type ActionsOf<Source extends CssModule> = { [K in keyof Source]?: Action; }; export declare type Act4Used<A extends Action> = A extends ClassHash ? true : A; export declare type Action = ClassHash | boolean; export declare type ReactRelated = (AnyObject & WithClassNames) | RFC | RCC<WithClassNames>; export {};