Skip to content

Commit

Permalink
add createColorScheme
Browse files Browse the repository at this point in the history
  • Loading branch information
siriwatknp committed Aug 5, 2024
1 parent 47d98eb commit c6a36ea
Show file tree
Hide file tree
Showing 4 changed files with 40 additions and 21 deletions.
33 changes: 33 additions & 0 deletions packages/mui-material/src/styles/createColorScheme.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
import type { ColorSystemOptions } from './createThemeWithVars';
import createPalette from './createPalette';
import getOverlayAlpha from './getOverlayAlpha';

const defaultDarkOverlays = [...Array(25)].map((_, index) => {
if (index === 0) {
return undefined;
}
const overlay = getOverlayAlpha(index);
return `linear-gradient(rgba(255 255 255 / ${overlay}), rgba(255 255 255 / ${overlay}))`;
});

export function getOpacity(mode: 'light' | 'dark') {
return {
inputPlaceholder: mode === 'dark' ? 0.5 : 0.42,
inputUnderline: mode === 'dark' ? 0.7 : 0.42,
switchTrackDisabled: mode === 'dark' ? 0.2 : 0.12,
switchTrack: mode === 'dark' ? 0.3 : 0.38,
};
}
export function getOverlays(mode: 'light' | 'dark') {
return mode === 'dark' ? defaultDarkOverlays : [];
}

export default function createColorScheme(options: ColorSystemOptions) {
const { palette = {}, opacity, overlays, ...rest } = options;
return {
palette: createPalette(palette),
opacity: { ...getOpacity(palette.mode || 'light'), ...opacity },
overlays: overlays || getOverlays(palette.mode || 'light'),
...rest,
} as unknown as ColorSystemOptions;
}
26 changes: 5 additions & 21 deletions packages/mui-material/src/styles/createThemeWithVars.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,19 +21,11 @@ import {
} from '@mui/system/colorManipulator';

import createThemeNoVars from './createThemeNoVars';
import createColorScheme, { getOpacity, getOverlays } from './createColorScheme';
import defaultShouldSkipGeneratingVar from './shouldSkipGeneratingVar';
import getOverlayAlpha from './getOverlayAlpha';
import defaultGetSelector from './createGetSelector';
import { stringifyTheme } from './stringifyTheme';

const defaultDarkOverlays = [...Array(25)].map((_, index) => {
if (index === 0) {
return undefined;
}
const overlay = getOverlayAlpha(index);
return `linear-gradient(rgba(255 255 255 / ${overlay}), rgba(255 255 255 / ${overlay}))`;
});

function assignNode(obj, keys) {
keys.forEach((k) => {
if (!obj[k]) {
Expand Down Expand Up @@ -95,24 +87,16 @@ const silent = (fn) => {

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

function getOpacity(mode) {
return {
inputPlaceholder: mode === 'dark' ? 0.5 : 0.42,
inputUnderline: mode === 'dark' ? 0.7 : 0.42,
switchTrackDisabled: mode === 'dark' ? 0.2 : 0.12,
switchTrack: mode === 'dark' ? 0.3 : 0.38,
};
}
function getOverlays(mode) {
return mode === 'dark' ? defaultDarkOverlays : [];
}

function attachColorScheme(colorSchemes, scheme, restTheme, colorScheme) {
if (!scheme) {
return undefined;
}
scheme = scheme === true ? {} : scheme;
const mode = colorScheme === 'dark' ? 'dark' : 'light';
if (!restTheme) {
colorSchemes[colorScheme] = createColorScheme(scheme);
return undefined;
}
const { palette, ...muiTheme } = createThemeNoVars({
...restTheme,
palette: {
Expand Down
1 change: 1 addition & 0 deletions packages/mui-material/src/styles/index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ export {
TypeAction,
TypeBackground,
} from './createPalette';
export { default as createColorScheme } from './createColorScheme';
export { default as createStyles } from './createStyles';
export {
Typography as TypographyVariants,
Expand Down
1 change: 1 addition & 0 deletions packages/mui-material/src/styles/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ export { default as createStyles } from './createStyles';
export { getUnit as unstable_getUnit, toUnitless as unstable_toUnitless } from './cssUtils';
export { default as responsiveFontSizes } from './responsiveFontSizes';
export { default as createTransitions, duration, easing } from './createTransitions';
export { default as createColorScheme } from './createColorScheme';
export { default as useTheme } from './useTheme';
export { default as useThemeProps } from './useThemeProps';
export { default as styled } from './styled';
Expand Down

0 comments on commit c6a36ea

Please sign in to comment.