@webpros/mui-theme 0.4.12 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/package.json +1 -1
- package/dist/src/hooks/useLocalStorageThemeMode.d.ts +3 -0
- package/dist/src/hooks/{useThemeMode.js → useLocalStorageThemeMode.js} +1 -2
- package/dist/src/index.d.ts +5 -1
- package/dist/src/index.js +4 -1
- package/dist/src/providers/LocalStorageThemeModeProvider.d.ts +5 -0
- package/dist/src/providers/LocalStorageThemeModeProvider.js +15 -0
- package/dist/src/providers/ThemeModeProvider.d.ts +4 -1
- package/dist/src/providers/ThemeModeProvider.js +6 -4
- package/dist/src/providers/WebProsMuiThemeProvider.d.ts +1 -3
- package/dist/src/providers/WebProsMuiThemeProvider.js +1 -2
- package/dist/src/providers/WebProsTheme.d.ts +1 -3
- package/dist/src/providers/WebProsTheme.js +4 -5
- package/dist/src/tokens/index.d.ts +1 -0
- package/package.json +2 -2
- package/dist/src/hooks/useThemeMode.d.ts +0 -3
package/dist/package.json
CHANGED
|
@@ -2,8 +2,7 @@
|
|
|
2
2
|
import { useMediaQuery } from '@mui/material';
|
|
3
3
|
import { useLocalStorage } from 'usehooks-ts';
|
|
4
4
|
export const THEME_MODE_KEY = 'ThemeModeKey';
|
|
5
|
-
|
|
6
|
-
export const useThemeMode = () => {
|
|
5
|
+
export const useLocalStorageThemeMode = () => {
|
|
7
6
|
const prefersDarkMode = useMediaQuery('(prefers-color-scheme: dark)');
|
|
8
7
|
const [value, setValue] = useLocalStorage(THEME_MODE_KEY, prefersDarkMode ? 'dark' : 'light');
|
|
9
8
|
const toggleTheme = () => {
|
package/dist/src/index.d.ts
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
export { default as WebProsMuiThemeProvider } from './providers/WebProsMuiThemeProvider';
|
|
2
|
+
export { default as ThemeModeProvider } from './providers/ThemeModeProvider';
|
|
3
|
+
export { ThemeModeContext, useThemeModeContext } from './providers/ThemeModeProvider';
|
|
4
|
+
export type { ThemeModeContextType, ThemeModeProviderProps } from './providers/ThemeModeProvider';
|
|
5
|
+
export { default as LocalStorageThemeModeProvider } from './providers/LocalStorageThemeModeProvider';
|
|
6
|
+
export { useLocalStorageThemeMode, THEME_MODE_KEY } from './hooks/useLocalStorageThemeMode';
|
|
2
7
|
export type { WebProsMuiThemeProviderProps } from './providers/WebProsMuiThemeProvider';
|
|
3
|
-
export { useThemeModeContext } from './providers/ThemeModeProvider';
|
|
4
8
|
export { ToggleButtonGroup } from './components/inputs/ToggleButtonGroup';
|
|
5
9
|
export { ToggleButton } from './components/inputs/ToggleButton';
|
|
6
10
|
export { Filter } from './components/inputs/Filter';
|
package/dist/src/index.js
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
// Copyright 2025 WebPros International GmbH. All rights reserved.
|
|
2
2
|
export { default as WebProsMuiThemeProvider } from './providers/WebProsMuiThemeProvider';
|
|
3
|
-
export {
|
|
3
|
+
export { default as ThemeModeProvider } from './providers/ThemeModeProvider';
|
|
4
|
+
export { ThemeModeContext, useThemeModeContext } from './providers/ThemeModeProvider';
|
|
5
|
+
export { default as LocalStorageThemeModeProvider } from './providers/LocalStorageThemeModeProvider';
|
|
6
|
+
export { useLocalStorageThemeMode, THEME_MODE_KEY } from './hooks/useLocalStorageThemeMode';
|
|
4
7
|
export { ToggleButtonGroup } from './components/inputs/ToggleButtonGroup';
|
|
5
8
|
export { ToggleButton } from './components/inputs/ToggleButton';
|
|
6
9
|
export { Filter } from './components/inputs/Filter';
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export type LocalStorageThemeModeProviderProps = {
|
|
2
|
+
children?: React.ReactNode;
|
|
3
|
+
};
|
|
4
|
+
declare const LocalStorageThemeModeProvider: ({ children }: LocalStorageThemeModeProviderProps) => import("react/jsx-runtime").JSX.Element;
|
|
5
|
+
export default LocalStorageThemeModeProvider;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
// Copyright 2025 WebPros International GmbH. All rights reserved.
|
|
3
|
+
import { useMemo } from 'react';
|
|
4
|
+
import { useLocalStorageThemeMode } from '../hooks/useLocalStorageThemeMode';
|
|
5
|
+
import { ThemeModeProvider } from '../index';
|
|
6
|
+
const LocalStorageThemeModeProvider = ({ children }) => {
|
|
7
|
+
const [value, toggleTheme, setValue] = useLocalStorageThemeMode();
|
|
8
|
+
const contextValue = useMemo(() => ({
|
|
9
|
+
themeMode: value,
|
|
10
|
+
toggleTheme,
|
|
11
|
+
setThemeMode: setValue,
|
|
12
|
+
}), [value, toggleTheme, setValue]);
|
|
13
|
+
return _jsx(ThemeModeProvider, Object.assign({}, contextValue, { children: children }));
|
|
14
|
+
};
|
|
15
|
+
export default LocalStorageThemeModeProvider;
|
|
@@ -6,8 +6,11 @@ export type ThemeModeContextType = {
|
|
|
6
6
|
};
|
|
7
7
|
export type ThemeModeProviderProps = {
|
|
8
8
|
children?: React.ReactNode;
|
|
9
|
+
themeMode?: ThemeMode;
|
|
10
|
+
toggleTheme?: () => void;
|
|
11
|
+
setThemeMode?: (mode: ThemeMode) => void;
|
|
9
12
|
};
|
|
10
13
|
export declare const ThemeModeContext: import("react").Context<ThemeModeContextType>;
|
|
11
|
-
declare const ThemeModeProvider: ({ children }: ThemeModeProviderProps) => import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
declare const ThemeModeProvider: ({ children, themeMode, toggleTheme, setThemeMode, }: ThemeModeProviderProps) => import("react/jsx-runtime").JSX.Element;
|
|
12
15
|
export default ThemeModeProvider;
|
|
13
16
|
export declare const useThemeModeContext: () => ThemeModeContextType;
|
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
// Copyright 2025 WebPros International GmbH. All rights reserved.
|
|
3
3
|
import { createContext, useContext, useMemo } from 'react';
|
|
4
|
-
import { useThemeMode } from '../hooks/useThemeMode';
|
|
5
4
|
export const ThemeModeContext = createContext({
|
|
6
5
|
themeMode: 'light',
|
|
7
6
|
toggleTheme: () => { },
|
|
8
7
|
setThemeMode: () => { },
|
|
9
8
|
});
|
|
10
|
-
const ThemeModeProvider = ({ children }) => {
|
|
11
|
-
const
|
|
12
|
-
|
|
9
|
+
const ThemeModeProvider = ({ children, themeMode = 'light', toggleTheme, setThemeMode, }) => {
|
|
10
|
+
const value = useMemo(() => ({
|
|
11
|
+
themeMode,
|
|
12
|
+
toggleTheme: toggleTheme !== null && toggleTheme !== void 0 ? toggleTheme : (() => { }),
|
|
13
|
+
setThemeMode: setThemeMode !== null && setThemeMode !== void 0 ? setThemeMode : (() => { }),
|
|
14
|
+
}), [themeMode, toggleTheme, setThemeMode]);
|
|
13
15
|
return _jsx(ThemeModeContext.Provider, { value: value, children: children });
|
|
14
16
|
};
|
|
15
17
|
export default ThemeModeProvider;
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
import { Localization } from '@mui/material/locale';
|
|
2
|
-
import { ThemeMode } from '../tokens/ThemeMode';
|
|
3
2
|
import { ThemeOptions, Theme } from '@mui/material';
|
|
4
3
|
import { M3Components } from '../utils';
|
|
5
4
|
export type WebProsMuiThemeProviderProps = {
|
|
6
5
|
children?: React.ReactNode;
|
|
7
|
-
themeMode?: ThemeMode;
|
|
8
6
|
localization?: Localization;
|
|
9
7
|
/**
|
|
10
8
|
* Modifier function to customize theme foundation (palette, typography, spacing, etc.).
|
|
@@ -21,5 +19,5 @@ export type WebProsMuiThemeProviderProps = {
|
|
|
21
19
|
*/
|
|
22
20
|
themeComponentsModifier?: (options: M3Components, theme: Theme) => M3Components;
|
|
23
21
|
};
|
|
24
|
-
declare const WebProsMuiThemeProvider: ({ children, localization,
|
|
22
|
+
declare const WebProsMuiThemeProvider: ({ children, localization, themeOptionsModifier, themeComponentsModifier, }: WebProsMuiThemeProviderProps) => import("react/jsx-runtime").JSX.Element;
|
|
25
23
|
export default WebProsMuiThemeProvider;
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import ThemeModeProvider from './ThemeModeProvider';
|
|
3
2
|
import WebProsTheme from './WebProsTheme';
|
|
4
|
-
const WebProsMuiThemeProvider = ({ children, localization,
|
|
3
|
+
const WebProsMuiThemeProvider = ({ children, localization, themeOptionsModifier, themeComponentsModifier, }) => (_jsx(WebProsTheme, { localization: localization, themeOptionsModifier: themeOptionsModifier, themeComponentsModifier: themeComponentsModifier, children: children }));
|
|
5
4
|
export default WebProsMuiThemeProvider;
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
import { ThemeOptions, Theme } from '@mui/material';
|
|
2
2
|
import '../utils/getMUIThemeCustoimzationType';
|
|
3
3
|
import { M3Components } from '../utils/getMUIComponents';
|
|
4
|
-
import { ThemeMode } from '../tokens/ThemeMode';
|
|
5
4
|
import { Localization } from '@mui/material/locale';
|
|
6
5
|
type WebProsThemeProps = {
|
|
7
6
|
children?: React.ReactNode;
|
|
8
|
-
mode?: ThemeMode;
|
|
9
7
|
localization?: Localization;
|
|
10
8
|
/**
|
|
11
9
|
* Modifier function for theme foundation (palette, typography, spacing, etc.).
|
|
@@ -24,5 +22,5 @@ type WebProsThemeProps = {
|
|
|
24
22
|
*/
|
|
25
23
|
themeComponentsModifier?: (options: M3Components, theme: Theme) => M3Components;
|
|
26
24
|
};
|
|
27
|
-
export declare const WebProsTheme: ({ children,
|
|
25
|
+
export declare const WebProsTheme: ({ children, localization, themeOptionsModifier, themeComponentsModifier, }: WebProsThemeProps) => import("react/jsx-runtime").JSX.Element;
|
|
28
26
|
export default WebProsTheme;
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
// Copyright 2025 WebPros International GmbH. All rights reserved.
|
|
3
|
-
import {
|
|
3
|
+
import { useMemo } from 'react';
|
|
4
4
|
import { CssBaseline, createTheme, ThemeProvider } from '@mui/material';
|
|
5
5
|
import { deepmerge } from '@mui/utils';
|
|
6
|
-
import { ThemeModeContext } from '../providers/ThemeModeProvider';
|
|
7
6
|
import '../utils/getMUIThemeCustoimzationType';
|
|
8
7
|
import { getMUIPalette } from '../utils/getMUIPalette';
|
|
9
8
|
import { getMUIComponents } from '../utils/getMUIComponents';
|
|
@@ -11,9 +10,9 @@ import { enUS } from '@mui/material/locale';
|
|
|
11
10
|
import { patchMUIShadows } from '../utils/patchMUIShadows';
|
|
12
11
|
import { ThemeSchemeDefault } from '../tokens/ThemeScheme';
|
|
13
12
|
import { getMUITypography } from '../utils/getMUITypography';
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
const themeMode =
|
|
13
|
+
import { useThemeModeContext } from '../providers/ThemeModeProvider';
|
|
14
|
+
export const WebProsTheme = ({ children, localization = enUS, themeOptionsModifier, themeComponentsModifier, }) => {
|
|
15
|
+
const { themeMode } = useThemeModeContext();
|
|
17
16
|
const webprosTheme = useMemo(() => {
|
|
18
17
|
const typography = getMUITypography();
|
|
19
18
|
const muiPalette = getMUIPalette(themeMode, ThemeSchemeDefault);
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webpros/mui-theme",
|
|
3
3
|
"description": "MUI v7 theme for WebPros products",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.5.0",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
@@ -114,4 +114,4 @@
|
|
|
114
114
|
"resolutions": {
|
|
115
115
|
"react-is": "^18.3.1"
|
|
116
116
|
}
|
|
117
|
-
}
|
|
117
|
+
}
|