Skip to content

Commit c6a36ea

Browse files
committed
add createColorScheme
1 parent 47d98eb commit c6a36ea

File tree

4 files changed

+40
-21
lines changed

4 files changed

+40
-21
lines changed
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
import type { ColorSystemOptions } from './createThemeWithVars';
2+
import createPalette from './createPalette';
3+
import getOverlayAlpha from './getOverlayAlpha';
4+
5+
const defaultDarkOverlays = [...Array(25)].map((_, index) => {
6+
if (index === 0) {
7+
return undefined;
8+
}
9+
const overlay = getOverlayAlpha(index);
10+
return `linear-gradient(rgba(255 255 255 / ${overlay}), rgba(255 255 255 / ${overlay}))`;
11+
});
12+
13+
export function getOpacity(mode: 'light' | 'dark') {
14+
return {
15+
inputPlaceholder: mode === 'dark' ? 0.5 : 0.42,
16+
inputUnderline: mode === 'dark' ? 0.7 : 0.42,
17+
switchTrackDisabled: mode === 'dark' ? 0.2 : 0.12,
18+
switchTrack: mode === 'dark' ? 0.3 : 0.38,
19+
};
20+
}
21+
export function getOverlays(mode: 'light' | 'dark') {
22+
return mode === 'dark' ? defaultDarkOverlays : [];
23+
}
24+
25+
export default function createColorScheme(options: ColorSystemOptions) {
26+
const { palette = {}, opacity, overlays, ...rest } = options;
27+
return {
28+
palette: createPalette(palette),
29+
opacity: { ...getOpacity(palette.mode || 'light'), ...opacity },
30+
overlays: overlays || getOverlays(palette.mode || 'light'),
31+
...rest,
32+
} as unknown as ColorSystemOptions;
33+
}

packages/mui-material/src/styles/createThemeWithVars.js

Lines changed: 5 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -21,19 +21,11 @@ import {
2121
} from '@mui/system/colorManipulator';
2222

2323
import createThemeNoVars from './createThemeNoVars';
24+
import createColorScheme, { getOpacity, getOverlays } from './createColorScheme';
2425
import defaultShouldSkipGeneratingVar from './shouldSkipGeneratingVar';
25-
import getOverlayAlpha from './getOverlayAlpha';
2626
import defaultGetSelector from './createGetSelector';
2727
import { stringifyTheme } from './stringifyTheme';
2828

29-
const defaultDarkOverlays = [...Array(25)].map((_, index) => {
30-
if (index === 0) {
31-
return undefined;
32-
}
33-
const overlay = getOverlayAlpha(index);
34-
return `linear-gradient(rgba(255 255 255 / ${overlay}), rgba(255 255 255 / ${overlay}))`;
35-
});
36-
3729
function assignNode(obj, keys) {
3830
keys.forEach((k) => {
3931
if (!obj[k]) {
@@ -95,24 +87,16 @@ const silent = (fn) => {
9587

9688
export const createGetCssVar = (cssVarPrefix = 'mui') => systemCreateGetCssVar(cssVarPrefix);
9789

98-
function getOpacity(mode) {
99-
return {
100-
inputPlaceholder: mode === 'dark' ? 0.5 : 0.42,
101-
inputUnderline: mode === 'dark' ? 0.7 : 0.42,
102-
switchTrackDisabled: mode === 'dark' ? 0.2 : 0.12,
103-
switchTrack: mode === 'dark' ? 0.3 : 0.38,
104-
};
105-
}
106-
function getOverlays(mode) {
107-
return mode === 'dark' ? defaultDarkOverlays : [];
108-
}
109-
11090
function attachColorScheme(colorSchemes, scheme, restTheme, colorScheme) {
11191
if (!scheme) {
11292
return undefined;
11393
}
11494
scheme = scheme === true ? {} : scheme;
11595
const mode = colorScheme === 'dark' ? 'dark' : 'light';
96+
if (!restTheme) {
97+
colorSchemes[colorScheme] = createColorScheme(scheme);
98+
return undefined;
99+
}
116100
const { palette, ...muiTheme } = createThemeNoVars({
117101
...restTheme,
118102
palette: {

packages/mui-material/src/styles/index.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ export {
2121
TypeAction,
2222
TypeBackground,
2323
} from './createPalette';
24+
export { default as createColorScheme } from './createColorScheme';
2425
export { default as createStyles } from './createStyles';
2526
export {
2627
Typography as TypographyVariants,

packages/mui-material/src/styles/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ export { default as createStyles } from './createStyles';
3333
export { getUnit as unstable_getUnit, toUnitless as unstable_toUnitless } from './cssUtils';
3434
export { default as responsiveFontSizes } from './responsiveFontSizes';
3535
export { default as createTransitions, duration, easing } from './createTransitions';
36+
export { default as createColorScheme } from './createColorScheme';
3637
export { default as useTheme } from './useTheme';
3738
export { default as useThemeProps } from './useThemeProps';
3839
export { default as styled } from './styled';

0 commit comments

Comments
 (0)