@plteam/chat-ui
Version:
CUI Kit is a free and open-source library for creating AI assistant chat interfaces, built with React, Material UI, and TypeScript
41 lines (40 loc) • 1.48 kB
JavaScript
import * as React from 'react';
import { createTheme, ThemeProvider } from '@mui/material';
import { ThemeProvider as StyledProvider } from '@mui/material/styles';
import { createBreakpoints } from '@mui/system';
import createCache from '@emotion/cache';
import { CacheProvider } from '@emotion/react';
const defaultTheme = createTheme({
breakpoints: createBreakpoints({
values: {
xs: 0,
sm: 650,
md: 900,
lg: 1200,
xl: 1536,
},
}),
});
const ChatTheme = ({ children, userTheme, mode = 'light', lightPalette, darkPalette }) => {
const emotionCache = React.useMemo(() => {
const cache = createCache({ key: 'css', prepend: true });
cache.compat = true;
return cache;
}, []);
const palette = React.useMemo(() => ({
light: {
mode: "light",
...lightPalette,
},
dark: {
mode: "dark",
...darkPalette,
},
}), [lightPalette, darkPalette]);
const chatTheme = React.useMemo(() => (createTheme({ ...defaultTheme, palette: palette[mode] })), [mode]);
const theme = userTheme ?? chatTheme;
return (React.createElement(CacheProvider, { value: emotionCache },
React.createElement(ThemeProvider, { theme: theme },
React.createElement(StyledProvider, { theme: theme }, children))));
};
export default React.memo(ChatTheme);