@re-flex/styles
Version:
Core Style Util Package
221 lines (220 loc) • 5.96 kB
TypeScript
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;