@chakra-v2/styled-system
Version:
Style function for css-in-js building component libraries
46 lines (45 loc) • 1.54 kB
TypeScript
import * as CSS from "csstype";
import { ThemeScale } from "../create-theme-vars";
import type { CssTheme, Transform } from "./types";
type CSSProp = keyof CSS.Properties | (string & {});
type MaybeArray<T> = T | T[];
type MaybeThemeFunction<T> = T | ((theme: CssTheme) => T);
type StringUnion<T> = T | (string & {});
export interface PropConfig {
/**
* This is useful for props that need to leverage CSS variables
* Static styles to append to the computed styles.
*
* It does not get replicated if value is responsive or styles are nested.
*/
static?: MaybeThemeFunction<Record<string, any>>;
/**
* The theme scale this maps to
*/
scale?: ThemeScale;
/**
* Css property or Css variable the prop maps to
*/
property?: MaybeThemeFunction<MaybeArray<StringUnion<CSSProp>>>;
/**
* Function to transform the value passed
*/
transform?: Transform;
/**
* Useful for `layerStyle`, tex`tStyles and `apply` where their
* transform function returns theme aware styles
*/
processResult?: boolean;
}
export type Config = Record<string, PropConfig | true>;
export declare function toConfig(scale: ThemeScale, transform?: Transform): <T extends CSSProp>(property: MaybeThemeFunction<T | T[]>) => PropConfig;
interface Opts {
scale?: ThemeScale;
property: {
ltr: MaybeArray<CSSProp>;
rtl: MaybeArray<CSSProp>;
};
transform?: Transform;
}
export declare function logical(options: Opts): PropConfig;
export {};