jiti-meet/react/features/base/ui/functions.web.ts

60 lines
1.4 KiB
TypeScript
Raw Normal View History

import { createMuiTheme } from '@material-ui/core/styles';
2022-08-01 07:04:23 +00:00
import { Theme } from './types';
import { createColorTokens } from './utils';
2022-08-01 07:04:23 +00:00
interface ThemeProps {
breakpoints: Object;
colorMap: Object;
colors: Object;
font: Object;
shape: Object;
spacing: Array<number>;
typography: Object;
}
/**
* Creates a MUI theme based on local UI tokens.
*
* @param {Object} arg - The ui tokens.
* @returns {Object}
*/
2022-08-01 07:04:23 +00:00
export function createWebTheme({ font, colors, colorMap, shape, spacing, typography, breakpoints }: ThemeProps): Theme {
return createMuiTheme({
props: {
// disable ripple effect on buttons globally
MuiButtonBase: {
disableRipple: true
}
},
// use token spacing array
spacing
}, {
palette: createColorTokens(colorMap, colors),
shape,
typography: {
font,
...typography
},
breakpoints
2022-08-01 07:04:23 +00:00
}) as unknown as Theme;
}
/**
* Formats the common styles object to be interpreted as proper CSS.
*
* @param {Object} stylesObj - The styles object.
* @returns {Object}
*/
export function formatCommonClasses(stylesObj: Object) {
2022-08-01 07:04:23 +00:00
const formatted: any = {};
for (const [ key, value ] of Object.entries(stylesObj)) {
formatted[`.${key}`] = value;
}
return formatted;
}