UNPKG

@re-flex/styles

Version:
221 lines (220 loc) 5.96 kB
import dayjs from "dayjs"; import { SxType } from "./sx"; export interface Breakpoints { values: { xs: number | string; sm: number | string; md: number | string; lg: number | string; xl: number | string; }; up(breakPointType: BreakPointsKeys): string; down(breakPointType: BreakPointsKeys): string; has(key: BreakPointsKeys): boolean; } export declare type BreakPointsKeys = keyof Breakpoints["values"]; export interface Mixins { [key: string]: MixinsField; } export interface MixinsField { [key: string]: string | number | object; } export interface Overrides { [key: string]: object; } export interface SystemComponentSizeMultipler { xs: number; sm: number; md: number; lg: number; xl: number; } export declare type ComponentSizeMultipler = keyof SystemComponentSizeMultipler | number; export declare type ComponentNames = "AppBar" | "Avatar" | "Backdrop" | "BackgroundImage" | "Banner" | "BaseLine" | "Navigation" | "Box" | "Button" | "ButtonBase" | "Card" | "Carousel" | "Chip" | "Collapse" | "DataTable" | "DatePicker" | "Dialog" | "Divider" | "FAB" | "FormField" | "Grid" | "Hidden" | "Icon" | "IconButton" | "ImageList" | "List" | "Menu" | "NavigationDrawer" | "NavigationRail" | "Popper" | "ProgressIndicator" | "Ripple" | "Select" | "SelectionControl" | "Sheet" | "Snackbar" | "Stepper" | "Styled" | "Tab" | "Table" | "TextField" | "TimePicker" | "Tooltip" | "Transition" | "Typography"; export interface ComponentClasses { root?: string; } export declare type RexComponentOverridesPrefix = `Rex${ComponentNames}`; export interface ComponentOverridesContent { sx: SxType; className: string; } export declare type ComponentOverrides = { [key in RexComponentOverridesPrefix]: ComponentOverridesContent; }; export interface Palette { common: Common; type: string; primary: ColorDepth; secondary: ColorDepth; error: ColorDepth; warning: ColorDepth; info: ColorDepth; success: ColorDepth; grey: Grey; contrastThreshold: number; tonalOffset: number; text: Text; divider: string; background: Background; action: Action; } export interface Action { active: string; hover: string; hoverOpacity: number; selected: string; selectedOpacity: number; disabled: string; disabledBackground: string; disabledOpacity: number; focus: string; focusOpacity: number; activatedOpacity: number; } export interface Background { paper: string; default: string; level1?: string; level2?: string; level3?: string; } export interface Common { black: string; white: string; } export interface ColorDepth { light: string; main: string; dark: string; contrastText: string; } export interface Grey { 50: string; 100: string; 200: string; 300: string; 400: string; 500: string; 600: string; 700: string; 800: string; 900: string; A100: string; A200: string; A400: string; A700: string; } export interface Text { primary: string; secondary: string; disabled: string; hint: string; } export interface Shape { borderRadius: number; } export interface Space { normal: number; dense: number; large: number; } export interface Transitions { easing: Easing; duration: Duration; } export interface Duration { shortest: number; shorter: number; short: number; standard: number; complex: number; enteringScreen: number; leavingScreen: number; } export interface Easing { easeInOut: string; easeOut: string; easeIn: string; sharp: string; linear: string; } export interface Typography { importFonts: string; htmlFontSize: number; fontFamily: string; fontSize: number | string; fontWeightLight: number; fontWeightRegular: number; fontWeightMedium: number; fontWeightBold: number; fontWeight: number; fontStyle: string; fontStretch: string; textTransform: string; opacity: number; letterSpacing: number; h1: TypographyTag; h2: TypographyTag; h3: TypographyTag; h4: TypographyTag; h5: TypographyTag; h6: H6; subtitle1: TypographyTag; subtitle2: TypographyTag; body1: TypographyTag; body2: TypographyTag; button: TypographyTag; caption: TypographyTag; overline: TypographyTag; } export interface TypographyTag { textTransform: TextTransform; fontSize: number | string; fontWeight: number; lineHeight?: number; letterSpacing: number; opacity?: number; } export declare type TextTransform = "capitalize" | "uppercase" | "lowercase"; export interface H6 { opacity: number; textTransform: TextTransform; fontSize: number | string; fontWeight: string; letterSpacing: number; } export interface ZIndex { mobileStepper: number; speedDial: number; appBar: number; drawer: number; modal: number; snackbar: number; tooltip: number; } export interface Theme { prefix: string; breakpoints: Breakpoints; spaceValues: Space; spaceTypes: "dense" | "normal" | "large"; space: number; sizes: SystemComponentSizeMultipler; direction: string; mixins: Mixins; overrides: Overrides; palette: Palette; props: Overrides; shadows: string[]; typography: Typography; shape: Shape; transitions: Transitions; zIndex: ZIndex; dayjs?: typeof dayjs; } declare type Primitive = string | number | bigint | boolean | undefined | symbol; export declare type PropertyStringPath<T, Prefix = ""> = { [K in keyof T]: T[K] extends Primitive | Array<any> ? `${string & Prefix}${string & K}` : `${string & Prefix}${string & K}` | PropertyStringPath<T[K], `${string & Prefix}${string & K}.`>; }[keyof T]; export declare type ColorStringPaths = PropertyStringPath<Palette>; export default Theme;