@webpros/mui-theme 0.3.12 → 0.4.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.
Files changed (28) hide show
  1. package/dist/package.json +1 -2
  2. package/dist/src/components/data-display/Table/Table.theme.js +1 -1
  3. package/dist/src/components/inputs/Filter/Filter.js +2 -2
  4. package/dist/src/components/inputs/ToggleButton/ToggleButton.d.ts +10 -2
  5. package/dist/src/components/inputs/ToggleButton/ToggleButton.js +26 -3
  6. package/dist/src/components/inputs/ToggleButton/index.d.ts +1 -1
  7. package/dist/src/components/inputs/ToggleButton/index.js +2 -2
  8. package/dist/src/components/inputs/ToggleButtonGroup/ToggleButtonGroup.d.ts +12 -3
  9. package/dist/src/components/inputs/ToggleButtonGroup/ToggleButtonGroup.js +32 -3
  10. package/dist/src/components/inputs/ToggleButtonGroup/index.d.ts +1 -1
  11. package/dist/src/components/inputs/ToggleButtonGroup/index.js +2 -2
  12. package/dist/src/index.d.ts +3 -0
  13. package/dist/src/index.js +3 -0
  14. package/dist/src/tokens/ThemeColorTokens.d.ts +1 -0
  15. package/dist/src/tokens/ThemeColorTokens.js +16 -1
  16. package/dist/src/tokens/ThemeMode.d.ts +1 -1
  17. package/dist/src/tokens/ThemeScheme.d.ts +2 -0
  18. package/dist/src/tokens/ThemeScheme.js +2 -1
  19. package/dist/src/tokens/colors/Wptk.d.ts +24 -0
  20. package/dist/src/tokens/colors/Wptk.js +1496 -0
  21. package/dist/src/tokens/colors/index.d.ts +1 -0
  22. package/dist/src/tokens/colors/index.js +1 -0
  23. package/dist/src/utils/getMUIComponents.js +2 -2
  24. package/package.json +2 -3
  25. package/dist/src/components/inputs/ToggleButton/ToggleButton.theme.d.ts +0 -11
  26. package/dist/src/components/inputs/ToggleButton/ToggleButton.theme.js +0 -26
  27. package/dist/src/components/inputs/ToggleButtonGroup/ToggleButtonGroup.theme.d.ts +0 -11
  28. 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.3.12",
4
+ "version": "0.4.0",
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",
@@ -23,7 +23,7 @@ export const getTable = (theme) => {
23
23
  padding: 'checkbox',
24
24
  },
25
25
  style: {
26
- width: 38, // TODO: align with checbox width
26
+ width: 36,
27
27
  padding: 0,
28
28
  },
29
29
  },
@@ -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 { XIcon } from '../../../icons/XIcon';
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(XIcon, { size: 16 }) })) : null }),
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 './ToggleButton.theme';
2
- export declare const ToggleButton: import("@mui/material").ExtendButtonBase<import("@mui/material").ToggleButtonTypeMap<{}, "button">>;
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 { ToggleButton as MuiToggleButton } from '@mui/material';
3
- import './ToggleButton.theme';
4
- export const ToggleButton = MuiToggleButton;
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.theme';
1
+ export * from './ToggleButton';
@@ -1,2 +1,2 @@
1
- // Copyright 2025 WebPros International GmbH. All rights reserved.
2
- export * from './ToggleButton.theme';
1
+ // Copyright 2026 WebPros International GmbH. All rights reserved.
2
+ export * from './ToggleButton';
@@ -1,4 +1,13 @@
1
- import { ToggleButtonGroup as MuiToggleButtonGroup } from '@mui/material';
2
- import './ToggleButtonGroup.theme';
3
- export declare const ToggleButtonGroup: typeof MuiToggleButtonGroup;
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 { ToggleButtonGroup as MuiToggleButtonGroup } from '@mui/material';
3
- import './ToggleButtonGroup.theme';
4
- export const ToggleButtonGroup = MuiToggleButtonGroup;
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.theme';
1
+ export * from './ToggleButtonGroup';
@@ -1,2 +1,2 @@
1
- // Copyright 2025 WebPros International GmbH. All rights reserved.
2
- export * from './ToggleButtonGroup.theme';
1
+ // Copyright 2026 WebPros International GmbH. All rights reserved.
2
+ export * from './ToggleButtonGroup';
@@ -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';
@@ -15,3 +15,4 @@ export type ThemeColorTokens = {
15
15
  };
16
16
  export declare const LightTokensDefault: ThemeColorTokens;
17
17
  export declare const DarkTokensDefault: ThemeColorTokens;
18
+ export declare const WptkTokensDefault: ThemeColorTokens;
@@ -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
  };
@@ -0,0 +1,24 @@
1
+ import { Schemes } from './schemes';
2
+ import { StateLayers } from './stateLayers';
3
+ import { InverseSchemes } from './inverseSchemes';
4
+ import { InverseStateLayers } from './inverseStateLayers';
5
+ import { OnPrimarySchemes } from './onPrimarySchemes';
6
+ import { OnPrimaryStateLayers } from './onPrimaryStateLayers';
7
+ import { SchemesGenerated } from './schemes';
8
+ import { StateLayersGenerated } from './stateLayers';
9
+ import { InverseSchemesGenerated } from './inverseSchemes';
10
+ import { InverseStateLayersGenerated } from './inverseStateLayers';
11
+ import { OnPrimarySchemesGenerated } from './onPrimarySchemes';
12
+ import { OnPrimaryStateLayersGenerated } from './onPrimaryStateLayers';
13
+ export declare const WptkSchemes: Schemes;
14
+ export declare const WptkStateLayers: StateLayers;
15
+ export declare const WptkInverseSchemes: InverseSchemes;
16
+ export declare const WptkInverseStateLayers: InverseStateLayers;
17
+ export declare const WptkOnPrimarySchemes: OnPrimarySchemes;
18
+ export declare const WptkOnPrimaryStateLayers: OnPrimaryStateLayers;
19
+ export declare const WptkSchemesGenerated: SchemesGenerated;
20
+ export declare const WptkStateLayersGenerated: StateLayersGenerated;
21
+ export declare const WptkInverseSchemesGenerated: InverseSchemesGenerated;
22
+ export declare const WptkInverseStateLayersGenerated: InverseStateLayersGenerated;
23
+ export declare const WptkOnPrimarySchemesGenerated: OnPrimarySchemesGenerated;
24
+ export declare const WptkOnPrimaryStateLayersGenerated: OnPrimaryStateLayersGenerated;