UNPKG

materialuiupgraded

Version:

Material-UI's workspace package

86 lines (73 loc) 2.32 kB
/* eslint-disable no-underscore-dangle */ import { create, SheetsRegistry } from 'jss'; import rtl from 'jss-rtl'; import { createMuiTheme, createGenerateClassName, jssPreset } from '@material-ui/core/styles'; import blue from '@material-ui/core/colors/blue'; import pink from '@material-ui/core/colors/pink'; import { darken } from '@material-ui/core/styles/colorManipulator'; function getTheme(uiTheme) { const theme = createMuiTheme({ direction: uiTheme.direction, nprogress: { color: uiTheme.paletteType === 'light' ? '#000' : '#fff', }, palette: { ...uiTheme.paletteColors, type: uiTheme.paletteType }, typography: { useNextVariants: true, }, }); // Expose the theme as a global variable so people can play with it. if (process.browser) { window.theme = theme; } return theme; } const theme = getTheme({ direction: 'ltr', paletteType: 'light', paletteColors: { primary: blue, secondary: { // Darken so we reach the AA contrast ratio level. main: darken(pink.A400, 0.08), }, }, }); // Configure JSS const jss = create({ insertionPoint: 'insertion-point-jss', plugins: [...jssPreset().plugins, rtl()], }); function createPageContext() { return { jss, theme, // This is needed in order to deduplicate the injection of CSS in the page. sheetsManager: new Map(), // This is needed in order to inject the critical CSS. sheetsRegistry: new SheetsRegistry(), generateClassName: createGenerateClassName({ productionPrefix: 'j', // Reduce the bandwidth usage. }), }; } export function updatePageContext(uiTheme) { const pageContext = { ...global.__MUI_PAGE_CONTEXT__, theme: getTheme(uiTheme), }; global.__MUI_PAGE_CONTEXT__ = pageContext; return pageContext; } export default function getPageContext() { // Make sure to create a new store for every server-side request so that data // isn't shared between connections (which would be bad) if (!process.browser) { return createPageContext(); } // Reuse context on the client-side if (!global.__MUI_PAGE_CONTEXT__) { global.__MUI_PAGE_CONTEXT__ = createPageContext(); } return global.__MUI_PAGE_CONTEXT__; }