UNPKG

@radix-ui/themes

Version:

[![Radix Themes Logo](https://radix-ui.com/social/themes.png)](https://radix-ui.com/themes)

59 lines (58 loc) 2.47 kB
import type React from 'react'; type Union<S = string, T extends string | number = string> = T | Omit<S, T>; declare const breakpoints: readonly ["initial", "xs", "sm", "md", "lg", "xl"]; type Breakpoint = (typeof breakpoints)[number]; type Responsive<T> = T | Partial<Record<Breakpoint, T>>; type BooleanPropDef = { type: 'boolean'; default?: boolean; required?: boolean; className?: string; }; type StringPropDef = { type: 'string'; default?: string; required?: boolean; }; type ReactNodePropDef = { type: 'ReactNode'; default?: React.ReactNode; required?: boolean; }; type EnumPropDef<T> = { type: 'enum'; values: readonly T[]; default?: T; required?: boolean; }; type EnumOrStringPropDef<T> = { type: 'enum | string'; values: readonly T[]; default?: T | string; required?: boolean; }; type NonStylingPropDef = { className?: never; customProperties?: never; parseValue?: never; }; type StylingPropDef = { className: string; parseValue?: (value: string) => string | undefined; }; type ArbitraryStylingPropDef = { className: string; customProperties: `--${string}`[]; parseValue?: (value: string) => string | undefined; }; type RegularPropDef<T> = ReactNodePropDef | BooleanPropDef | (StringPropDef & ArbitraryStylingPropDef) | (StringPropDef & NonStylingPropDef) | (EnumPropDef<T> & StylingPropDef) | (EnumPropDef<T> & NonStylingPropDef) | (EnumOrStringPropDef<T> & ArbitraryStylingPropDef) | (EnumOrStringPropDef<T> & NonStylingPropDef); type ResponsivePropDef<T = any> = RegularPropDef<T> & { responsive: true; }; type PropDef<T = any> = RegularPropDef<T> | ResponsivePropDef<T>; type GetPropDefType<Def> = Def extends BooleanPropDef ? (Def extends ResponsivePropDef ? Responsive<boolean> : boolean) : Def extends StringPropDef ? (Def extends ResponsivePropDef ? Responsive<string> : string) : Def extends ReactNodePropDef ? (Def extends ResponsivePropDef ? Responsive<React.ReactNode> : React.ReactNode) : Def extends EnumOrStringPropDef<infer Type> ? Def extends ResponsivePropDef<infer Type extends string> ? Responsive<Union<string, Type>> : Type : Def extends EnumPropDef<infer Type> ? (Def extends ResponsivePropDef<infer Type> ? Responsive<Type> : Type) : never; type GetPropDefTypes<P> = { [K in keyof P]?: GetPropDefType<P[K]>; }; export { breakpoints }; export type { PropDef, GetPropDefTypes, ResponsivePropDef, Breakpoint, Responsive, Union, };