@webpros/mui-theme 0.3.12 → 0.4.1
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 -2
- package/dist/src/components/data-display/Chip/Chip.theme.js +13 -0
- package/dist/src/components/data-display/Table/Table.theme.js +1 -1
- package/dist/src/components/inputs/Filter/Filter.js +2 -2
- package/dist/src/components/inputs/ToggleButton/ToggleButton.d.ts +10 -2
- package/dist/src/components/inputs/ToggleButton/ToggleButton.js +26 -3
- package/dist/src/components/inputs/ToggleButton/index.d.ts +1 -1
- package/dist/src/components/inputs/ToggleButton/index.js +2 -2
- package/dist/src/components/inputs/ToggleButtonGroup/ToggleButtonGroup.d.ts +12 -3
- package/dist/src/components/inputs/ToggleButtonGroup/ToggleButtonGroup.js +32 -3
- package/dist/src/components/inputs/ToggleButtonGroup/index.d.ts +1 -1
- package/dist/src/components/inputs/ToggleButtonGroup/index.js +2 -2
- package/dist/src/index.d.ts +3 -0
- package/dist/src/index.js +3 -0
- package/dist/src/tokens/ThemeColorTokens.d.ts +1 -0
- package/dist/src/tokens/ThemeColorTokens.js +16 -1
- package/dist/src/tokens/ThemeMode.d.ts +1 -1
- package/dist/src/tokens/ThemeScheme.d.ts +2 -0
- package/dist/src/tokens/ThemeScheme.js +2 -1
- package/dist/src/tokens/colors/Dark.js +92 -88
- package/dist/src/tokens/colors/Light.js +92 -88
- package/dist/src/tokens/colors/Wptk.d.ts +24 -0
- package/dist/src/tokens/colors/Wptk.js +1500 -0
- package/dist/src/tokens/colors/index.d.ts +1 -0
- package/dist/src/tokens/colors/index.js +1 -0
- package/dist/src/tokens/colors/stateLayers.d.ts +2 -0
- package/dist/src/utils/getMUIComponents.js +2 -2
- package/package.json +2 -3
- package/dist/src/components/inputs/ToggleButton/ToggleButton.theme.d.ts +0 -11
- package/dist/src/components/inputs/ToggleButton/ToggleButton.theme.js +0 -26
- package/dist/src/components/inputs/ToggleButtonGroup/ToggleButtonGroup.theme.d.ts +0 -11
- package/dist/src/components/inputs/ToggleButtonGroup/ToggleButtonGroup.theme.js +0 -18
package/dist/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.4.1",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
@@ -83,7 +83,6 @@
|
|
|
83
83
|
"@storybook/addon-a11y": "^9.1.16",
|
|
84
84
|
"@storybook/addon-docs": "^9.1.16",
|
|
85
85
|
"@storybook/addon-onboarding": "^9.1.16",
|
|
86
|
-
"@storybook/addon-themes": "^9.1.16",
|
|
87
86
|
"@storybook/builder-vite": "^9.1.16",
|
|
88
87
|
"@storybook/react-vite": "^9.1.16",
|
|
89
88
|
"@stylistic/eslint-plugin": "^5.5.0",
|
|
@@ -48,6 +48,7 @@ export const getChip = (theme) => {
|
|
|
48
48
|
const getStylesByColor = (color, viewContext) => {
|
|
49
49
|
const chipColors = viewContext === 'inverse' ? inverseColorsMap[color] : colorsMap[color];
|
|
50
50
|
return [
|
|
51
|
+
// Base styles for all chips
|
|
51
52
|
{
|
|
52
53
|
props: { color, viewContext },
|
|
53
54
|
style: {
|
|
@@ -62,6 +63,12 @@ export const getChip = (theme) => {
|
|
|
62
63
|
color: chipColors.baseColor.deleteIcon.hover,
|
|
63
64
|
},
|
|
64
65
|
},
|
|
66
|
+
},
|
|
67
|
+
},
|
|
68
|
+
// Interactive styles only for clickable chips
|
|
69
|
+
{
|
|
70
|
+
props: { color, viewContext, clickable: true },
|
|
71
|
+
style: {
|
|
65
72
|
'&:hover': {
|
|
66
73
|
background: chipColors.hover,
|
|
67
74
|
},
|
|
@@ -104,6 +111,12 @@ export const getChip = (theme) => {
|
|
|
104
111
|
color: chipColors.selectedColor.deleteIcon.hover,
|
|
105
112
|
},
|
|
106
113
|
},
|
|
114
|
+
},
|
|
115
|
+
},
|
|
116
|
+
// Interactive styles for selected + clickable chips
|
|
117
|
+
{
|
|
118
|
+
props: { color, viewContext, selected: true, clickable: true },
|
|
119
|
+
style: {
|
|
107
120
|
'&:hover, &:focus, &:active': {
|
|
108
121
|
background: chipColors.selectedColor.background,
|
|
109
122
|
},
|
|
@@ -4,7 +4,7 @@ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-run
|
|
|
4
4
|
import { useCallback } from 'react';
|
|
5
5
|
import { Autocomplete, Box, IconButton, TextField, autocompleteClasses, } from '@mui/material';
|
|
6
6
|
import { FunnelSimpleIcon } from '../../../icons/FunnelSimpleIcon';
|
|
7
|
-
import {
|
|
7
|
+
import { CloseIcon } from '../../../icons/CloseIcon';
|
|
8
8
|
const FILTER_SX = {
|
|
9
9
|
'& .MuiAutocomplete-inputRoot': {
|
|
10
10
|
flexWrap: 'nowrap',
|
|
@@ -75,7 +75,7 @@ export const Filter = (_a) => {
|
|
|
75
75
|
var _a;
|
|
76
76
|
const chips = (_a = params.InputProps) === null || _a === void 0 ? void 0 : _a.startAdornment;
|
|
77
77
|
return (_jsx(TextField, Object.assign({}, params, { placeholder: placeholder, slotProps: {
|
|
78
|
-
input: Object.assign(Object.assign({}, params.InputProps), { startAdornment: (_jsxs(_Fragment, { children: [_jsx(Box, { sx: FILTER_ICON_SX, children: _jsx(FunnelSimpleIcon, { size: 20 }) }), _jsx(Box, { sx: CHIPS_CONTAINER_SX, children: chips })] })), endAdornment: chips ? (_jsx(IconButton, { size: "small", onClick: handleClear, sx: CLEAR_BUTTON_SX, "aria-label": "Clear", children: _jsx(
|
|
78
|
+
input: Object.assign(Object.assign({}, params.InputProps), { startAdornment: (_jsxs(_Fragment, { children: [_jsx(Box, { sx: FILTER_ICON_SX, children: _jsx(FunnelSimpleIcon, { size: 20 }) }), _jsx(Box, { sx: CHIPS_CONTAINER_SX, children: chips })] })), endAdornment: chips ? (_jsx(IconButton, { size: "small", onClick: handleClear, sx: CLEAR_BUTTON_SX, "aria-label": "Clear", children: _jsx(CloseIcon, { size: 16 }) })) : null }),
|
|
79
79
|
} })));
|
|
80
80
|
}, [placeholder, handleClear]);
|
|
81
81
|
return (_jsx(Autocomplete, Object.assign({}, props, { multiple: true, size: size, value: value, onChange: onChange, filterSelectedOptions: filterSelectedOptions, forcePopupIcon: false, disableClearable: true, renderInput: renderInput !== null && renderInput !== void 0 ? renderInput : defaultRenderInput, slotProps: Object.assign(Object.assign({}, slotProps), { chip: {
|
|
@@ -1,3 +1,11 @@
|
|
|
1
|
-
import '
|
|
2
|
-
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { IconButtonOwnProps } from '@mui/material';
|
|
3
|
+
import { ButtonOwnProps } from '@mui/material/Button';
|
|
4
|
+
type ToggleButtonProps = {
|
|
5
|
+
children: ReactNode;
|
|
6
|
+
value: string;
|
|
7
|
+
isIconButton?: boolean;
|
|
8
|
+
} & ButtonOwnProps & IconButtonOwnProps;
|
|
9
|
+
export declare const ToggleButton: ({ children, value, isIconButton, ...props }: ToggleButtonProps) => import("react/jsx-runtime").JSX.Element;
|
|
3
10
|
export type ToggleButtonComponentType = typeof ToggleButton;
|
|
11
|
+
export {};
|
|
@@ -1,4 +1,27 @@
|
|
|
1
|
+
import { __rest } from "tslib";
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
1
3
|
// Copyright 2025 WebPros International GmbH. All rights reserved.
|
|
2
|
-
import {
|
|
3
|
-
import '
|
|
4
|
-
|
|
4
|
+
import { useContext } from 'react';
|
|
5
|
+
import { Button } from '../Button/Button';
|
|
6
|
+
import { ToggleContext } from '../ToggleButtonGroup/ToggleButtonGroup';
|
|
7
|
+
import { IconButton } from '@mui/material';
|
|
8
|
+
const isSelected = (btnValue, contextValue) => {
|
|
9
|
+
if (Array.isArray(contextValue)) {
|
|
10
|
+
return contextValue.includes(btnValue);
|
|
11
|
+
}
|
|
12
|
+
return btnValue === contextValue;
|
|
13
|
+
};
|
|
14
|
+
export const ToggleButton = (_a) => {
|
|
15
|
+
var { children, value, isIconButton = false } = _a, props = __rest(_a, ["children", "value", "isIconButton"]);
|
|
16
|
+
const { value: contextValue, handleToggle } = useContext(ToggleContext);
|
|
17
|
+
const isBtnSelected = isSelected(value, contextValue);
|
|
18
|
+
const toggleProps = {
|
|
19
|
+
'aria-pressed': isBtnSelected,
|
|
20
|
+
onClick: handleToggle,
|
|
21
|
+
value: value,
|
|
22
|
+
};
|
|
23
|
+
const borderRadiusSX = {
|
|
24
|
+
borderRadius: isBtnSelected ? '17px' : '6px',
|
|
25
|
+
};
|
|
26
|
+
return isIconButton ? (_jsx(IconButton, Object.assign({}, toggleProps, props, { variant: "tonal", color: isBtnSelected ? 'primary' : 'default', sx: borderRadiusSX, children: children }))) : (_jsx(Button, Object.assign({}, toggleProps, props, { variant: "tonal", color: isBtnSelected ? 'primary' : 'default', sx: borderRadiusSX, children: children })));
|
|
27
|
+
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from './ToggleButton
|
|
1
|
+
export * from './ToggleButton';
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
// Copyright
|
|
2
|
-
export * from './ToggleButton
|
|
1
|
+
// Copyright 2026 WebPros International GmbH. All rights reserved.
|
|
2
|
+
export * from './ToggleButton';
|
|
@@ -1,4 +1,13 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
type ToggleButtonGroupProps = {
|
|
3
|
+
children: ReactNode;
|
|
4
|
+
multiple?: boolean;
|
|
5
|
+
};
|
|
6
|
+
export type ToggleContextType = {
|
|
7
|
+
value: string | Array<string>;
|
|
8
|
+
handleToggle: React.MouseEventHandler;
|
|
9
|
+
};
|
|
10
|
+
export declare const ToggleContext: import("react").Context<ToggleContextType>;
|
|
11
|
+
export declare const ToggleButtonGroup: ({ children, multiple }: ToggleButtonGroupProps) => import("react/jsx-runtime").JSX.Element;
|
|
4
12
|
export type ToggleButtonGroupComponentType = typeof ToggleButtonGroup;
|
|
13
|
+
export {};
|
|
@@ -1,4 +1,33 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
1
2
|
// Copyright 2025 WebPros International GmbH. All rights reserved.
|
|
2
|
-
import {
|
|
3
|
-
import '
|
|
4
|
-
export const
|
|
3
|
+
import { Box } from '@mui/material';
|
|
4
|
+
import { createContext, useState } from 'react';
|
|
5
|
+
export const ToggleContext = createContext({
|
|
6
|
+
value: '',
|
|
7
|
+
handleToggle: () => { },
|
|
8
|
+
});
|
|
9
|
+
const toggleGroupSX = {
|
|
10
|
+
borderRadius: '50px',
|
|
11
|
+
overflow: 'clip',
|
|
12
|
+
display: 'inline-flex',
|
|
13
|
+
gap: 0.25,
|
|
14
|
+
width: 'fit-content',
|
|
15
|
+
};
|
|
16
|
+
export const ToggleButtonGroup = ({ children, multiple = false }) => {
|
|
17
|
+
const [value, setValue] = useState(multiple ? [] : '');
|
|
18
|
+
const handleToggle = (e) => {
|
|
19
|
+
const clickedValue = e.currentTarget.value;
|
|
20
|
+
if (Array.isArray(value)) {
|
|
21
|
+
const newValue = value.includes(clickedValue)
|
|
22
|
+
? value.filter((item) => item !== clickedValue)
|
|
23
|
+
: [...value, clickedValue];
|
|
24
|
+
setValue(newValue);
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
setValue(clickedValue);
|
|
28
|
+
}
|
|
29
|
+
e.currentTarget.blur();
|
|
30
|
+
};
|
|
31
|
+
const toggleContextValue = { value, handleToggle };
|
|
32
|
+
return (_jsx(ToggleContext.Provider, { value: toggleContextValue, children: _jsx(Box, { sx: toggleGroupSX, children: children }) }));
|
|
33
|
+
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from './ToggleButtonGroup
|
|
1
|
+
export * from './ToggleButtonGroup';
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
// Copyright
|
|
2
|
-
export * from './ToggleButtonGroup
|
|
1
|
+
// Copyright 2026 WebPros International GmbH. All rights reserved.
|
|
2
|
+
export * from './ToggleButtonGroup';
|
package/dist/src/index.d.ts
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
export { default as WebProsMuiThemeProvider } from './providers/WebProsMuiThemeProvider';
|
|
2
2
|
export type { WebProsMuiThemeProviderProps } from './providers/WebProsMuiThemeProvider';
|
|
3
3
|
export { useThemeModeContext } from './providers/ThemeModeProvider';
|
|
4
|
+
export { ToggleButtonGroup } from './components/inputs/ToggleButtonGroup';
|
|
5
|
+
export { ToggleButton } from './components/inputs/ToggleButton';
|
|
6
|
+
export { Filter } from './components/inputs/Filter';
|
|
4
7
|
export * from './utils';
|
|
5
8
|
export * from './tokens';
|
|
6
9
|
export * from './constants';
|
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
3
|
export { useThemeModeContext } from './providers/ThemeModeProvider';
|
|
4
|
+
export { ToggleButtonGroup } from './components/inputs/ToggleButtonGroup';
|
|
5
|
+
export { ToggleButton } from './components/inputs/ToggleButton';
|
|
6
|
+
export { Filter } from './components/inputs/Filter';
|
|
4
7
|
export * from './utils';
|
|
5
8
|
export * from './tokens';
|
|
6
9
|
export * from './constants';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// Copyright 2025 WebPros International GmbH. All rights reserved.
|
|
2
|
-
import { DarkSchemes, DarkSchemesGenerated, DarkStateLayers, DarkStateLayersGenerated, DarkInverseSchemes, DarkInverseSchemesGenerated, DarkInverseStateLayers, DarkInverseStateLayersGenerated, DarkOnPrimarySchemes, DarkOnPrimarySchemesGenerated, DarkOnPrimaryStateLayers, DarkOnPrimaryStateLayersGenerated, LightSchemes, LightSchemesGenerated, LightStateLayers, LightStateLayersGenerated, LightInverseSchemes, LightInverseSchemesGenerated, LightInverseStateLayers, LightInverseStateLayersGenerated, LightOnPrimarySchemes, LightOnPrimarySchemesGenerated, LightOnPrimaryStateLayers, LightOnPrimaryStateLayersGenerated, } from '../tokens/colors';
|
|
2
|
+
import { DarkSchemes, DarkSchemesGenerated, DarkStateLayers, DarkStateLayersGenerated, DarkInverseSchemes, DarkInverseSchemesGenerated, DarkInverseStateLayers, DarkInverseStateLayersGenerated, DarkOnPrimarySchemes, DarkOnPrimarySchemesGenerated, DarkOnPrimaryStateLayers, DarkOnPrimaryStateLayersGenerated, LightSchemes, LightSchemesGenerated, LightStateLayers, LightStateLayersGenerated, LightInverseSchemes, LightInverseSchemesGenerated, LightInverseStateLayers, LightInverseStateLayersGenerated, LightOnPrimarySchemes, LightOnPrimarySchemesGenerated, LightOnPrimaryStateLayers, LightOnPrimaryStateLayersGenerated, WptkSchemes, WptkSchemesGenerated, WptkStateLayers, WptkStateLayersGenerated, WptkInverseSchemes, WptkInverseSchemesGenerated, WptkInverseStateLayers, WptkInverseStateLayersGenerated, WptkOnPrimarySchemes, WptkOnPrimarySchemesGenerated, WptkOnPrimaryStateLayers, WptkOnPrimaryStateLayersGenerated, } from '../tokens/colors';
|
|
3
3
|
// reference
|
|
4
4
|
export const LightTokensDefault = {
|
|
5
5
|
schemes: LightSchemes,
|
|
@@ -31,3 +31,18 @@ export const DarkTokensDefault = {
|
|
|
31
31
|
generatedOnPrimarySchemes: DarkOnPrimarySchemesGenerated,
|
|
32
32
|
generatedOnPrimaryStateLayers: DarkOnPrimaryStateLayersGenerated,
|
|
33
33
|
};
|
|
34
|
+
// WPTK theme
|
|
35
|
+
export const WptkTokensDefault = {
|
|
36
|
+
schemes: WptkSchemes,
|
|
37
|
+
stateLayers: WptkStateLayers,
|
|
38
|
+
inverseSchemes: WptkInverseSchemes,
|
|
39
|
+
inverseStateLayers: WptkInverseStateLayers,
|
|
40
|
+
onPrimarySchemes: WptkOnPrimarySchemes,
|
|
41
|
+
onPrimaryStateLayers: WptkOnPrimaryStateLayers,
|
|
42
|
+
generatedSchemes: WptkSchemesGenerated,
|
|
43
|
+
generatedStateLayers: WptkStateLayersGenerated,
|
|
44
|
+
generatedInverseSchemes: WptkInverseSchemesGenerated,
|
|
45
|
+
generatedInverseStateLayers: WptkInverseStateLayersGenerated,
|
|
46
|
+
generatedOnPrimarySchemes: WptkOnPrimarySchemesGenerated,
|
|
47
|
+
generatedOnPrimaryStateLayers: WptkOnPrimaryStateLayersGenerated,
|
|
48
|
+
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export type ThemeMode = 'light' | 'dark';
|
|
1
|
+
export type ThemeMode = 'light' | 'dark' | 'wptk';
|
|
@@ -2,8 +2,10 @@ import { ThemeColorTokens } from './ThemeColorTokens';
|
|
|
2
2
|
export type ThemeScheme = {
|
|
3
3
|
light: ThemeColorTokens;
|
|
4
4
|
dark: ThemeColorTokens;
|
|
5
|
+
wptk: ThemeColorTokens;
|
|
5
6
|
};
|
|
6
7
|
export declare const ThemeSchemeDefault: {
|
|
7
8
|
light: ThemeColorTokens;
|
|
8
9
|
dark: ThemeColorTokens;
|
|
10
|
+
wptk: ThemeColorTokens;
|
|
9
11
|
};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// Copyright 2025 WebPros International GmbH. All rights reserved.
|
|
2
|
-
import { DarkTokensDefault, LightTokensDefault } from './ThemeColorTokens';
|
|
2
|
+
import { DarkTokensDefault, LightTokensDefault, WptkTokensDefault, } from './ThemeColorTokens';
|
|
3
3
|
export const ThemeSchemeDefault = {
|
|
4
4
|
light: LightTokensDefault,
|
|
5
5
|
dark: DarkTokensDefault,
|
|
6
|
+
wptk: WptkTokensDefault,
|
|
6
7
|
};
|