///
export declare type ElementPropValueMethod = (value: any, theme: MoTheme) => string;
export declare type EPV = T | [T, boolean];
export declare type JSXChild = string | JSX.Element;
export declare type JSXChildren = JSXChild | JSXChild[];
export declare type Value = string | number;
export declare type ValueMix = Value | Value[];
export declare type SetValue = ((value: T) => void) | React.Dispatch>;
export interface ThemeVariable {
[key: string]: T;
}
export interface JSXElementProps {
[key: string]: any;
}
export interface Keys {
[key: string]: string | ElementPropValueMethod;
}
export interface VariantOptions {
util?: boolean;
alert?: boolean;
breadcrumb?: boolean;
button?: boolean;
dropdown?: boolean;
form?: boolean;
pagination?: boolean;
popover?: boolean;
progressBar?: boolean;
table?: boolean;
waveEffect?: boolean;
}
export interface ColorObject {
color: number[];
valpha: number;
isDark: () => boolean;
isLight: () => boolean;
hex: () => ColorObject;
rgb: () => ColorObject;
hsl: () => ColorObject;
darken: (value: number) => ColorObject;
alpha: (value: number) => ColorObject;
}
export interface Grid {
small: number;
medium: number;
large: number;
xlarge: number;
}
export interface Variant {
main: string;
font?: string;
dark?: string;
darker?: string;
darkest?: string;
light?: string;
lighter?: string;
lightest?: string;
shadow?: string;
alert?: {
background?: string;
border?: string;
font?: string;
fontFill?: string;
linkFont?: string;
hr?: string;
};
breadcrumb?: {
background?: string;
font?: string;
fontFill?: string;
};
button?: {
background?: string;
placeholder?: string;
placeholderFill?: string;
};
dropdown?: {
background?: string;
font?: string;
};
form?: {
radioColor?: string;
radioBorder?: string;
inputBackground?: string;
inputBorder?: string;
inputFont?: string;
inputPlaceholder?: string;
inputPlaceholderFill?: string;
};
pagination?: {
background?: string;
border?: string;
font?: string;
};
popover?: {
background?: string;
border?: string;
headerBackground?: string;
headerBorder?: string;
};
progressBar?: {
background?: string;
backgroundFill?: string;
backgroundAlt?: string;
};
table?: {
background?: string;
border?: string;
font?: string;
stripedBackground?: string;
stripedFont?: string;
hoverBackground?: string;
hoverFont?: string;
};
waveEffect?: {
color?: string;
};
}
export interface Coordinator {
x: T;
y: T;
}
export interface MoTheme {
variant: {
[key: string]: Variant;
};
isMobile: boolean;
zIndex: ThemeVariable;
length: ThemeVariable;
radius: ThemeVariable;
color: ThemeVariable;
fontFamily: ThemeVariable;
fontWeight: ThemeVariable;
fontSize: ThemeVariable;
iconSize: ThemeVariable;
alert: {
padding: ThemeVariable & {
xHalf: string;
}>;
radius: string;
fontSize: ThemeVariable;
linkFontWeight: string;
};
badge: {
fixedSize: ThemeVariable;
padding: ThemeVariable>;
margin: Coordinator;
radius: ThemeVariable;
fontSize: ThemeVariable;
};
breadcrumb: {
padding: Coordinator;
radius: ThemeVariable;
fontSize: string;
disabledOpacity: number;
transition: string;
};
button: {
fixedSize: ThemeVariable;
padding: ThemeVariable & {
xHalf: string;
}>;
radius: ThemeVariable;
fontSize: ThemeVariable;
disabledOpacity: number;
transition: string;
};
colorPicker: {
colorLight: string;
colorDark: string;
pickerBoxShadow: string;
draggerBoxShadow: string;
paletteIconColor: string;
paletteBorderColor: string;
};
datePicker: {
background: string;
font: string;
inactive: string;
arrowActive: string;
};
dropdown: {
padding: ThemeVariable;
margin: ThemeVariable>;
radius: ThemeVariable;
fontSize: ThemeVariable;
disabledOpacity: number;
};
fixedBox: {
boxShadow: string;
};
form: {
disabledOpacity: number;
radioSpanSpace: string;
radioSpanFontSize: ThemeVariable;
inputPadding: ThemeVariable>;
inputRadius: ThemeVariable;
inputFontSize: ThemeVariable;
optionPadding: ThemeVariable;
optionMargin: ThemeVariable>;
optionFontSize: ThemeVariable;
};
grid: {
breakpoint: Grid;
containerWidth: Grid;
columnGap: string;
};
loading: {
size: ThemeVariable;
animation: string;
};
modal: {
width: ThemeVariable;
borderColor: string;
borderRadius: string;
backgroundColor: string;
fontColor: string;
modalContentPadding: Coordinator;
modalContentBorderColor: string;
modalFooterPadding: Coordinator;
modalFooterContentMargin: Coordinator;
};
overlay: {
space: string;
background: string;
};
pagination: {
padding: Coordinator;
margin: Coordinator;
fixedSize: string;
radius: ThemeVariable;
fontSize: string;
disabledOpacity: number;
transition: string;
};
popover: {
radius: string;
fontSize: ThemeVariable;
headerPadding: ThemeVariable>;
bodyPadding: ThemeVariable>;
};
progressBar: {
radius: ThemeVariable;
transitionType: string;
stripedAnimationType: string;
};
table: {
padding: ThemeVariable;
fontSize: ThemeVariable;
stripedOrientation: string;
hoverTransition: string;
};
tooltip: {
padding: ThemeVariable>;
radius: string;
fontSize: ThemeVariable;
};
waveEffect: {
transition: string;
};
}
export interface SizeStrictProps {
size: string;
sizeSm: string;
sizeMd: string;
sizeLg: string;
sizeXl: string;
}