@omnia/fx
Version:
Provide Omnia Fx typings and tooling for clientside Omnia development.
38 lines (37 loc) • 2.06 kB
TypeScript
import { types } from "typestyle";
import { NestedCSSPropertiesExtends } from "@omnia/fx/models";
type CSSClassNames<T extends string> = {
[P in T]?: string | any;
};
type CSSClasses<K extends keyof any> = CustomRecord<K, types.NestedCSSProperties>;
type CSSClassesExtends<K extends string> = CustomRecord<K, NestedCSSPropertiesExtends>;
type CustomRecord<K extends keyof any, T> = {
[P in K]?: T | ((...args: any[]) => T);
};
export declare module StyleFlow {
export function define<TCSSClasses extends CSSClasses<any> = any>(targetCSSClasses: TCSSClasses, classes?: TCSSClasses, prefixClassName?: string): TCSSClasses;
export function override<T extends CSSClassesExtends<string>>(target: T): InternalStyleFlow.StyleOverride<T>;
export function use<Names extends string = any>(targetCSSClasses: CSSClassesExtends<Names>, ...mergeCSSClasses: Array<CSSClassesExtends<Names>>): CSSClassNames<Names>;
/**
* Takes CSSProperties and registers it to a global selector (body, html, etc.)
*/
export function stylesheet(selector: string, ...objects: types.NestedCSSProperties[]): void;
module InternalStyleFlow {
function define<Names extends string = any, TCSSClasses extends CSSClasses<Names> = any>(target: TCSSClasses, classes?: TCSSClasses, prefixClassName?: string): TCSSClasses;
function override<T>(target: T): StyleOverride<T>;
function use<Names extends string = any>(target: CSSClassesExtends<Names>, ...mergeCSSClasses: Array<CSSClassesExtends<Names>>): CSSClassNames<Names>;
function stylesheet(selector: string, ...objects: types.NestedCSSProperties[]): void;
class StyleOverride<T> {
private target;
constructor(target: T);
define<K extends keyof T>(classes: T,
/**
* This influence the order of the nodes, be nice, use ordering with gap -100, 0, 100, 200
So other extensions etc can inject between
*/
weight?: number): void;
}
}
export {};
}
export {};