UNPKG

tss-react

Version:

Type safe CSS-in-JS API heavily inspired by react-jss

36 lines (35 loc) 1.99 kB
import type { ReactHTML } from "./tools/ReactHTML"; import type { ReactComponent } from "./tools/ReactComponent"; import type { CSSObject } from "./types"; import type { EmotionCache } from "@emotion/cache"; export declare function createWithStyles<Theme>(params: { useTheme: () => Theme; cache?: EmotionCache; }): { withStyles: { <C extends keyof import("./tools/ReactHTML").JSXIntrinsicElements | ReactComponent<any>, Props extends C extends ReactComponent<infer P> ? P : C extends keyof import("./tools/ReactHTML").JSXIntrinsicElements ? ReactHTML[C] extends ReactComponent<infer P_1> ? NonNullable<P_1> : never : never, CssObjectByRuleName extends Props extends { classes?: Partial<infer ClassNameByRuleName> | undefined; } ? { [RuleName in keyof ClassNameByRuleName]?: CSSObject | undefined; } & { [mediaQuery: `@media${string}`]: { [RuleName_1 in keyof ClassNameByRuleName]?: CSSObject | undefined; }; } : { root: CSSObject; } & { [mediaQuery: `@media${string}`]: { root: CSSObject; }; }>(Component: C, cssObjectByRuleNameOrGetCssObjectByRuleName: (CssObjectByRuleName & { [mediaQuery: `@media${string}`]: { [Key in keyof CssObjectByRuleName]?: CSSObject | undefined; }; }) | ((theme: Theme, props: Props, classes: Record<Exclude<keyof CssObjectByRuleName, `@media${string}`>, string>) => CssObjectByRuleName), params?: { name?: string | Record<string, unknown> | undefined; uniqId?: string | undefined; } | undefined): C extends keyof import("./tools/ReactHTML").JSXIntrinsicElements ? ReactHTML[C] : C; getClasses: typeof getClasses; }; }; declare function getClasses<Classes>(props: { className?: string; classes?: Classes; }): Classes extends Record<string, unknown> ? Classes extends Partial<Record<infer K, any>> ? Record<K, string> : Classes : { root: string; }; export {};