Skip to content

Commit 9d6d05f

Browse files
committed
Re-export mui theme type def to capture the theme type before augmentation
1 parent 73c5816 commit 9d6d05f

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

52 files changed

+4071
-24
lines changed
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
/// <reference types="react" />
2+
import { SupportedColorScheme } from './experimental_extendTheme';
3+
declare const shouldSkipGeneratingVar: (keys: string[]) => boolean;
4+
declare const CssVarsProvider: (props: import("react").PropsWithChildren<Partial<import("@mui/system").CssVarsProviderConfig<SupportedColorScheme>> & {
5+
theme?: {
6+
cssVarPrefix?: string | undefined;
7+
colorSchemes: Record<SupportedColorScheme, Record<string, any>>;
8+
} | undefined;
9+
documentNode?: Document | null | undefined;
10+
colorSchemeNode?: Document | HTMLElement | null | undefined;
11+
colorSchemeSelector?: string | undefined;
12+
storageWindow?: Window | null | undefined;
13+
}>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>, useColorScheme: () => import("@mui/system").ColorSchemeContextValue<SupportedColorScheme>, getInitColorSchemeScript: typeof import("@mui/system").getInitColorSchemeScript;
14+
export { useColorScheme, getInitColorSchemeScript, shouldSkipGeneratingVar, CssVarsProvider as Experimental_CssVarsProvider, };
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
"use strict";
2+
3+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4+
5+
Object.defineProperty(exports, "__esModule", {
6+
value: true
7+
});
8+
exports.useColorScheme = exports.shouldSkipGeneratingVar = exports.getInitColorSchemeScript = exports.Experimental_CssVarsProvider = void 0;
9+
10+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11+
12+
var _system = require("@mui/system");
13+
14+
var _experimental_extendTheme = _interopRequireDefault(require("./experimental_extendTheme"));
15+
16+
var _createTypography = _interopRequireDefault(require("./createTypography"));
17+
18+
var _excludeVariablesFromRoot = _interopRequireDefault(require("./excludeVariablesFromRoot"));
19+
20+
const shouldSkipGeneratingVar = keys => {
21+
var _keys$;
22+
23+
return !!keys[0].match(/(typography|mixins|breakpoints|direction|transitions)/) || keys[0] === 'palette' && !!((_keys$ = keys[1]) != null && _keys$.match(/(mode|contrastThreshold|tonalOffset)/));
24+
};
25+
26+
exports.shouldSkipGeneratingVar = shouldSkipGeneratingVar;
27+
const defaultTheme = (0, _experimental_extendTheme.default)();
28+
const {
29+
CssVarsProvider,
30+
useColorScheme,
31+
getInitColorSchemeScript
32+
} = (0, _system.unstable_createCssVarsProvider)({
33+
theme: defaultTheme,
34+
attribute: 'data-mui-color-scheme',
35+
modeStorageKey: 'mui-mode',
36+
colorSchemeStorageKey: 'mui-color-scheme',
37+
defaultColorScheme: {
38+
light: 'light',
39+
dark: 'dark'
40+
},
41+
resolveTheme: theme => {
42+
const newTheme = (0, _extends2.default)({}, theme, {
43+
typography: (0, _createTypography.default)(theme.palette, theme.typography)
44+
});
45+
return newTheme;
46+
},
47+
shouldSkipGeneratingVar,
48+
excludeVariablesFromRoot: _excludeVariablesFromRoot.default
49+
});
50+
exports.getInitColorSchemeScript = getInitColorSchemeScript;
51+
exports.useColorScheme = useColorScheme;
52+
exports.Experimental_CssVarsProvider = CssVarsProvider;
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import { DefaultTheme } from '@mui/system';
2+
3+
export interface ThemeProviderProps<Theme = DefaultTheme> {
4+
children?: React.ReactNode;
5+
theme: Partial<Theme> | ((outerTheme: Theme) => Theme);
6+
}
7+
8+
/**
9+
* This component makes the `theme` available down the React tree.
10+
* It should preferably be used at **the root of your component tree**.
11+
* API:
12+
*
13+
* - [ThemeProvider API](https://mui.com/material-ui/customization/theming/#themeprovider)
14+
*/
15+
export default function ThemeProvider<T = DefaultTheme>(
16+
props: ThemeProviderProps<T>,
17+
): React.ReactElement<ThemeProviderProps<T>>;
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
"use strict";
2+
3+
Object.defineProperty(exports, "__esModule", {
4+
value: true
5+
});
6+
Object.defineProperty(exports, "default", {
7+
enumerable: true,
8+
get: function () {
9+
return _system.ThemeProvider;
10+
}
11+
});
12+
13+
var _system = require("@mui/system");
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
import { BreakpointsOptions, ShapeOptions, SpacingOptions } from '@mui/system';
2+
import { MixinsOptions } from './createMixins';
3+
import { Palette, PaletteOptions } from './createPalette';
4+
import { TypographyOptions } from './createTypography';
5+
import { Shadows } from './shadows';
6+
import { TransitionsOptions } from './createTransitions';
7+
import { ZIndexOptions } from './zIndex';
8+
import { ComponentsOverrides } from './overrides';
9+
import { ComponentsVariants } from './variants';
10+
import { ComponentsProps } from './props';
11+
import { Theme } from './createTheme';
12+
13+
export type Direction = 'ltr' | 'rtl';
14+
15+
export interface DeprecatedThemeOptions {
16+
shape?: ShapeOptions;
17+
breakpoints?: BreakpointsOptions;
18+
direction?: Direction;
19+
mixins?: MixinsOptions;
20+
overrides?: ComponentsOverrides;
21+
palette?: PaletteOptions;
22+
props?: ComponentsProps;
23+
shadows?: Shadows;
24+
spacing?: SpacingOptions;
25+
transitions?: TransitionsOptions;
26+
typography?: TypographyOptions | ((palette: Palette) => TypographyOptions);
27+
variants?: ComponentsVariants;
28+
zIndex?: ZIndexOptions;
29+
unstable_strictMode?: boolean;
30+
}
31+
32+
/**
33+
* Generate a theme base on the V4 theme options received.
34+
* @deprecated Follow the upgrade guide on https://mui.com/r/migration-v4#theme
35+
* @param options Takes an incomplete theme object and adds the missing parts.
36+
* @returns A complete, ready-to-use theme object.
37+
*/
38+
export default function adaptV4Theme(options?: DeprecatedThemeOptions): Theme;
Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
"use strict";
2+
3+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4+
5+
Object.defineProperty(exports, "__esModule", {
6+
value: true
7+
});
8+
exports.default = adaptV4Theme;
9+
10+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11+
12+
var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
13+
14+
var _system = require("@mui/system");
15+
16+
const _excluded = ["defaultProps", "mixins", "overrides", "palette", "props", "styleOverrides"],
17+
_excluded2 = ["type", "mode"];
18+
19+
function adaptV4Theme(inputTheme) {
20+
if (process.env.NODE_ENV !== 'production') {
21+
console.warn(['MUI: adaptV4Theme() is deprecated.', 'Follow the upgrade guide on https://mui.com/r/migration-v4#theme.'].join('\n'));
22+
}
23+
24+
const {
25+
defaultProps = {},
26+
mixins = {},
27+
overrides = {},
28+
palette = {},
29+
props = {},
30+
styleOverrides = {}
31+
} = inputTheme,
32+
other = (0, _objectWithoutPropertiesLoose2.default)(inputTheme, _excluded);
33+
const theme = (0, _extends2.default)({}, other, {
34+
components: {}
35+
}); // default props
36+
37+
Object.keys(defaultProps).forEach(component => {
38+
const componentValue = theme.components[component] || {};
39+
componentValue.defaultProps = defaultProps[component];
40+
theme.components[component] = componentValue;
41+
});
42+
Object.keys(props).forEach(component => {
43+
const componentValue = theme.components[component] || {};
44+
componentValue.defaultProps = props[component];
45+
theme.components[component] = componentValue;
46+
}); // CSS overrides
47+
48+
Object.keys(styleOverrides).forEach(component => {
49+
const componentValue = theme.components[component] || {};
50+
componentValue.styleOverrides = styleOverrides[component];
51+
theme.components[component] = componentValue;
52+
});
53+
Object.keys(overrides).forEach(component => {
54+
const componentValue = theme.components[component] || {};
55+
componentValue.styleOverrides = overrides[component];
56+
theme.components[component] = componentValue;
57+
}); // theme.spacing
58+
59+
theme.spacing = (0, _system.createSpacing)(inputTheme.spacing); // theme.mixins.gutters
60+
61+
const breakpoints = (0, _system.createBreakpoints)(inputTheme.breakpoints || {});
62+
const spacing = theme.spacing;
63+
theme.mixins = (0, _extends2.default)({
64+
gutters: (styles = {}) => {
65+
return (0, _extends2.default)({
66+
paddingLeft: spacing(2),
67+
paddingRight: spacing(2)
68+
}, styles, {
69+
[breakpoints.up('sm')]: (0, _extends2.default)({
70+
paddingLeft: spacing(3),
71+
paddingRight: spacing(3)
72+
}, styles[breakpoints.up('sm')])
73+
});
74+
}
75+
}, mixins);
76+
const {
77+
type: typeInput,
78+
mode: modeInput
79+
} = palette,
80+
paletteRest = (0, _objectWithoutPropertiesLoose2.default)(palette, _excluded2);
81+
const finalMode = modeInput || typeInput || 'light';
82+
theme.palette = (0, _extends2.default)({
83+
// theme.palette.text.hint
84+
text: {
85+
hint: finalMode === 'dark' ? 'rgba(255, 255, 255, 0.5)' : 'rgba(0, 0, 0, 0.38)'
86+
},
87+
mode: finalMode,
88+
type: finalMode
89+
}, paletteRest);
90+
return theme;
91+
}

0 commit comments

Comments
 (0)