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
TypeScript
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 {};