@linagora/twake-mui 1.2.0 → 1.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.
- package/CHANGELOG.md +14 -0
- package/dist/components/Avatar/helpers.d.ts +36 -0
- package/dist/components/Avatar/helpers.js +12 -13
- package/dist/components/Avatar/index.d.ts +16 -0
- package/dist/components/Avatar/index.js +14 -38
- package/dist/components/ThemeProvider/index.d.ts +3 -0
- package/dist/components/ThemeProvider/index.js +3 -4
- package/dist/components/ThemeProvider/types.d.ts +7 -0
- package/dist/index.d.ts +10 -0
- package/dist/lib/makeDarkOverrides.d.ts +2 -0
- package/dist/lib/makeDarkOverrides.js +36 -19
- package/dist/lib/makeLightOverrides.d.ts +2 -0
- package/dist/lib/makeLightOverrides.js +35 -19
- package/dist/lib/makePalette.d.ts +2 -0
- package/dist/lib/makePalette.js +3 -4
- package/dist/lib/makeTheme.d.ts +2 -0
- package/dist/lib/makeTheme.js +14 -19
- package/dist/lib/makeTypography.d.ts +2 -0
- package/dist/lib/makeTypography.js +1 -1
- package/dist/lib/overrides/accordionOverrides.d.ts +2 -0
- package/dist/lib/overrides/accordionOverrides.js +2 -2
- package/dist/lib/overrides/autocompleteOverrides.d.ts +2 -0
- package/dist/lib/overrides/autocompleteOverrides.js +1 -1
- package/dist/lib/overrides/avatarOverrides.d.ts +2 -0
- package/dist/lib/overrides/avatarOverrides.js +3 -3
- package/dist/lib/overrides/backdropOverrides.d.ts +2 -0
- package/dist/lib/overrides/backdropOverrides.js +1 -1
- package/dist/lib/overrides/buttonOverrides.d.ts +2 -0
- package/dist/lib/overrides/buttonOverrides.js +2 -2
- package/dist/lib/overrides/checkboxOverrides.d.ts +2 -0
- package/dist/lib/overrides/checkboxOverrides.js +1 -1
- package/dist/lib/overrides/datePickerOverrides.d.ts +2 -0
- package/dist/lib/overrides/datePickerOverrides.js +10 -3
- package/dist/lib/overrides/dialogOverrides.d.ts +5 -0
- package/dist/lib/overrides/dialogOverrides.js +4 -4
- package/dist/lib/overrides/iconButtonOverrides.d.ts +2 -0
- package/dist/lib/overrides/iconButtonOverrides.js +2 -2
- package/dist/lib/overrides/menuItemOverrides.d.ts +2 -0
- package/dist/lib/overrides/menuItemOverrides.js +8 -10
- package/dist/lib/overrides/popoverOverrides.d.ts +2 -0
- package/dist/lib/overrides/popoverOverrides.js +1 -1
- package/dist/lib/overrides/swipeableDrawerOverrides.d.ts +2 -0
- package/dist/lib/overrides/swipeableDrawerOverrides.js +24 -0
- package/dist/lib/overrides/textFieldOverrides.d.ts +5 -0
- package/dist/lib/overrides/textFieldOverrides.js +10 -5
- package/dist/lib/overrides/toggleButtonOverrides.d.ts +3 -0
- package/dist/lib/overrides/toggleButtonOverrides.js +2 -2
- package/dist/lib/radius.d.ts +7 -0
- package/dist/lib/radius.js +1 -1
- package/dist/lib/theme.d.ts +3 -0
- package/dist/lib/theme.js +1 -1
- package/dist/lib/types.d.ts +104 -0
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,17 @@
|
|
|
1
|
+
# [1.4.0](https://github.com/linagora/twake-ui/compare/v1.3.0...v1.4.0) (2026-04-09)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Features
|
|
5
|
+
|
|
6
|
+
* **twake-mui:** Now expose .d.ts ([945d3b2](https://github.com/linagora/twake-ui/commit/945d3b2e1616f9be237f1416630aef7014331226))
|
|
7
|
+
|
|
8
|
+
# [1.3.0](https://github.com/linagora/twake-ui/compare/v1.2.0...v1.3.0) (2026-04-09)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Features
|
|
12
|
+
|
|
13
|
+
* **twake-mui:** Update datePicker and textField overrides ([9a0013e](https://github.com/linagora/twake-ui/commit/9a0013e22184f6f480ccbf06ec205c582492a410))
|
|
14
|
+
|
|
1
15
|
# [1.2.0](https://github.com/linagora/twake-ui/compare/v1.1.0...v1.2.0) (2026-04-09)
|
|
2
16
|
|
|
3
17
|
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
export declare const sizeToFontSize: {
|
|
2
|
+
xs: number;
|
|
3
|
+
s: number;
|
|
4
|
+
m: number;
|
|
5
|
+
l: number;
|
|
6
|
+
xl: number;
|
|
7
|
+
};
|
|
8
|
+
export declare const sizeToNb: {
|
|
9
|
+
xs: number;
|
|
10
|
+
s: number;
|
|
11
|
+
m: number;
|
|
12
|
+
l: number;
|
|
13
|
+
xl: number;
|
|
14
|
+
};
|
|
15
|
+
export declare const sizeToFontWeight: {
|
|
16
|
+
xs: number;
|
|
17
|
+
s: number;
|
|
18
|
+
m: number;
|
|
19
|
+
l: number;
|
|
20
|
+
xl: number;
|
|
21
|
+
};
|
|
22
|
+
export declare const sizeToLineHeight: {
|
|
23
|
+
xs: number;
|
|
24
|
+
s: number;
|
|
25
|
+
m: number;
|
|
26
|
+
l: number;
|
|
27
|
+
xl: number;
|
|
28
|
+
};
|
|
29
|
+
export declare const supportedColors: readonly ["sunrise", "downy", "sugarCoral", "pinkBonnet", "blueMana", "nightBlue", "snowPea", "pluviophile", "cornflower", "paleGreen", "moonBlue"];
|
|
30
|
+
export declare const colorMapping: Record<string, string>;
|
|
31
|
+
/**
|
|
32
|
+
* Generate color from name
|
|
33
|
+
* @param name - Name string to generate color from
|
|
34
|
+
* @returns Color key from supportedColors
|
|
35
|
+
*/
|
|
36
|
+
export declare const nameToColor: (name?: string) => string | undefined;
|
|
@@ -1,32 +1,32 @@
|
|
|
1
|
-
export
|
|
1
|
+
export const sizeToFontSize = {
|
|
2
2
|
xs: 9.109,
|
|
3
3
|
s: 12.525,
|
|
4
4
|
m: 18.219,
|
|
5
5
|
l: 27.328,
|
|
6
6
|
xl: 36.438
|
|
7
7
|
};
|
|
8
|
-
export
|
|
8
|
+
export const sizeToNb = {
|
|
9
9
|
xs: 18,
|
|
10
10
|
s: 28,
|
|
11
11
|
m: 36,
|
|
12
12
|
l: 54,
|
|
13
13
|
xl: 72
|
|
14
14
|
};
|
|
15
|
-
export
|
|
15
|
+
export const sizeToFontWeight = {
|
|
16
16
|
xs: 500,
|
|
17
17
|
s: 500,
|
|
18
18
|
m: 500,
|
|
19
19
|
l: 600,
|
|
20
20
|
xl: 600
|
|
21
21
|
};
|
|
22
|
-
export
|
|
22
|
+
export const sizeToLineHeight = {
|
|
23
23
|
xs: 18.219,
|
|
24
24
|
s: 18.219,
|
|
25
25
|
m: 27.328,
|
|
26
26
|
l: 36.438,
|
|
27
27
|
xl: 45.547
|
|
28
28
|
};
|
|
29
|
-
export
|
|
29
|
+
export const supportedColors = [
|
|
30
30
|
'sunrise',
|
|
31
31
|
'downy',
|
|
32
32
|
'sugarCoral',
|
|
@@ -39,7 +39,7 @@ export var supportedColors = [
|
|
|
39
39
|
'paleGreen',
|
|
40
40
|
'moonBlue'
|
|
41
41
|
];
|
|
42
|
-
export
|
|
42
|
+
export const colorMapping = {
|
|
43
43
|
sunrise: 'linear-gradient(136deg, #F8D280 14.84%, #F2AC69 96.03%)',
|
|
44
44
|
downy: 'linear-gradient(136deg, #81EAD4 14.84%, #62C6B7 96.03%)',
|
|
45
45
|
sugarCoral: 'linear-gradient(136deg, #F19E86 14.84%, #F95967 96.03%)',
|
|
@@ -52,21 +52,20 @@ export var colorMapping = {
|
|
|
52
52
|
paleGreen: 'linear-gradient(135deg, #E2FA17 0%, #75D8CB 100%)',
|
|
53
53
|
moonBlue: 'linear-gradient(136deg, #6DCFFF 14.84%, #3D88F8 96.03%)'
|
|
54
54
|
};
|
|
55
|
-
|
|
56
|
-
|
|
55
|
+
const colors = supportedColors.filter(Boolean);
|
|
56
|
+
const makeKey = (colors, name) => {
|
|
57
57
|
return (Array.from(name.toUpperCase())
|
|
58
|
-
.map(
|
|
59
|
-
.reduce(
|
|
58
|
+
.map(letter => letter.charCodeAt(0))
|
|
59
|
+
.reduce((sum, number) => sum + number, 0) % colors.length);
|
|
60
60
|
};
|
|
61
61
|
/**
|
|
62
62
|
* Generate color from name
|
|
63
63
|
* @param name - Name string to generate color from
|
|
64
64
|
* @returns Color key from supportedColors
|
|
65
65
|
*/
|
|
66
|
-
export
|
|
67
|
-
if (name === void 0) { name = ''; }
|
|
66
|
+
export const nameToColor = (name = '') => {
|
|
68
67
|
if (!name)
|
|
69
68
|
return undefined;
|
|
70
|
-
|
|
69
|
+
const key = makeKey(colors, name);
|
|
71
70
|
return colors[key];
|
|
72
71
|
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { AvatarProps as MuiAvatarProps } from '@mui/material';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { supportedColors } from './helpers';
|
|
4
|
+
type AvatarSize = 'xs' | 's' | 'm' | 'l' | 'xl';
|
|
5
|
+
type AvatarColor = (typeof supportedColors)[number] | 'none';
|
|
6
|
+
type AvatarDisplay = 'initial' | 'inline';
|
|
7
|
+
export interface AvatarProps extends Omit<MuiAvatarProps, 'color'> {
|
|
8
|
+
color?: AvatarColor;
|
|
9
|
+
size?: AvatarSize | number;
|
|
10
|
+
border?: boolean;
|
|
11
|
+
innerBorder?: boolean;
|
|
12
|
+
disabled?: boolean;
|
|
13
|
+
display?: AvatarDisplay;
|
|
14
|
+
}
|
|
15
|
+
export declare const Avatar: React.FC<AvatarProps>;
|
|
16
|
+
export default Avatar;
|
|
@@ -1,54 +1,30 @@
|
|
|
1
|
-
var __assign = (this && this.__assign) || function () {
|
|
2
|
-
__assign = Object.assign || function(t) {
|
|
3
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
-
s = arguments[i];
|
|
5
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
-
t[p] = s[p];
|
|
7
|
-
}
|
|
8
|
-
return t;
|
|
9
|
-
};
|
|
10
|
-
return __assign.apply(this, arguments);
|
|
11
|
-
};
|
|
12
|
-
var __rest = (this && this.__rest) || function (s, e) {
|
|
13
|
-
var t = {};
|
|
14
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
15
|
-
t[p] = s[p];
|
|
16
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
17
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
18
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
19
|
-
t[p[i]] = s[p[i]];
|
|
20
|
-
}
|
|
21
|
-
return t;
|
|
22
|
-
};
|
|
23
1
|
import { Avatar as MuiAvatar } from '@mui/material';
|
|
24
2
|
import { styled } from '@mui/material/styles';
|
|
25
3
|
import React from 'react';
|
|
26
4
|
import { colorMapping, nameToColor, supportedColors } from './helpers';
|
|
27
|
-
|
|
5
|
+
const capitalize = (str) => {
|
|
28
6
|
return str.charAt(0).toUpperCase() + str.slice(1);
|
|
29
7
|
};
|
|
30
|
-
|
|
31
|
-
shouldForwardProp:
|
|
32
|
-
})(
|
|
33
|
-
|
|
34
|
-
return (__assign({}, (gradientColor && {
|
|
8
|
+
const StyledAvatar = styled(MuiAvatar, {
|
|
9
|
+
shouldForwardProp: prop => prop !== 'gradientColor'
|
|
10
|
+
})(({ theme, gradientColor }) => ({
|
|
11
|
+
...(gradientColor && {
|
|
35
12
|
color: theme.palette.primary.contrastText,
|
|
36
13
|
background: colorMapping[gradientColor] || undefined
|
|
37
|
-
})
|
|
38
|
-
});
|
|
39
|
-
export
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
var finalColor = color === 'none'
|
|
14
|
+
})
|
|
15
|
+
}));
|
|
16
|
+
export const Avatar = ({ className, color, size, border, innerBorder, disabled, display = 'initial', sx, ...props }) => {
|
|
17
|
+
const defaultColor = typeof props.children === 'string' ? nameToColor(props.children) : undefined;
|
|
18
|
+
const finalColor = color === 'none'
|
|
43
19
|
? undefined
|
|
44
20
|
: color && supportedColors.includes(color)
|
|
45
21
|
? color
|
|
46
22
|
: defaultColor;
|
|
47
|
-
|
|
23
|
+
const classNames = [];
|
|
48
24
|
if (className)
|
|
49
25
|
classNames.push(className);
|
|
50
26
|
if (size && typeof size === 'string')
|
|
51
|
-
classNames.push(
|
|
27
|
+
classNames.push(`size-${size}`);
|
|
52
28
|
if (disabled)
|
|
53
29
|
classNames.push('disabled');
|
|
54
30
|
if (border)
|
|
@@ -56,7 +32,7 @@ export var Avatar = function (_a) {
|
|
|
56
32
|
if (innerBorder)
|
|
57
33
|
classNames.push('innerBorder');
|
|
58
34
|
if (display !== 'initial')
|
|
59
|
-
classNames.push(
|
|
60
|
-
return (React.createElement(StyledAvatar,
|
|
35
|
+
classNames.push(`display${capitalize(display)}`);
|
|
36
|
+
return (React.createElement(StyledAvatar, { gradientColor: finalColor, className: classNames.join(' ') || undefined, sx: sx, ...props }));
|
|
61
37
|
};
|
|
62
38
|
export default Avatar;
|
|
@@ -2,10 +2,9 @@ import { CssBaseline } from '@mui/material';
|
|
|
2
2
|
import { ThemeProvider as MuiThemeProvider, createTheme } from '@mui/material/styles';
|
|
3
3
|
import React, { useMemo } from 'react';
|
|
4
4
|
import { makeTheme } from '../../lib/makeTheme';
|
|
5
|
-
export
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
var baseTheme = makeTheme(mode);
|
|
5
|
+
export const TwakeMuiThemeProvider = ({ children, mode = 'light', themeOptions }) => {
|
|
6
|
+
const theme = useMemo(() => {
|
|
7
|
+
const baseTheme = makeTheme(mode);
|
|
9
8
|
if (!themeOptions) {
|
|
10
9
|
return baseTheme;
|
|
11
10
|
}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export * from '@mui/material';
|
|
2
|
+
export { createTheme, ThemeProvider, styled, alpha, darken, lighten, useTheme } from '@mui/material/styles';
|
|
3
|
+
export { default as Autocomplete } from '@mui/material/Autocomplete';
|
|
4
|
+
export { TwakeMuiThemeProvider } from './components/ThemeProvider';
|
|
5
|
+
export { theme } from './lib/theme';
|
|
6
|
+
export type { TwakeTheme } from './lib/theme';
|
|
7
|
+
export { radius } from './lib/radius';
|
|
8
|
+
export { Avatar, default as AvatarDefault } from './components/Avatar';
|
|
9
|
+
export type { AvatarProps } from './components/Avatar';
|
|
10
|
+
export { nameToColor, supportedColors } from './components/Avatar/helpers';
|
|
@@ -1,14 +1,3 @@
|
|
|
1
|
-
var __assign = (this && this.__assign) || function () {
|
|
2
|
-
__assign = Object.assign || function(t) {
|
|
3
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
-
s = arguments[i];
|
|
5
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
-
t[p] = s[p];
|
|
7
|
-
}
|
|
8
|
-
return t;
|
|
9
|
-
};
|
|
10
|
-
return __assign.apply(this, arguments);
|
|
11
|
-
};
|
|
12
1
|
import { alpha } from '@mui/material/styles';
|
|
13
2
|
import { accordionOverrides } from './overrides/accordionOverrides';
|
|
14
3
|
import { autocompleteOverrides } from './overrides/autocompleteOverrides';
|
|
@@ -21,13 +10,31 @@ import { dialogOverrides, dialogTitleOverrides, dialogContentOverrides, dialogAc
|
|
|
21
10
|
import { iconButtonOverrides } from './overrides/iconButtonOverrides';
|
|
22
11
|
import { menuItemOverrides } from './overrides/menuItemOverrides';
|
|
23
12
|
import { popoverOverrides } from './overrides/popoverOverrides';
|
|
13
|
+
import { swipeableDrawerOverrides } from './overrides/swipeableDrawerOverrides';
|
|
24
14
|
import { textFieldOverrides, outlinedInputOverrides, inputBaseOverrides, selectOverrides } from './overrides/textFieldOverrides';
|
|
25
15
|
import { toggleButtonGroupOverrides, toggleButtonOverrides } from './overrides/toggleButtonOverrides';
|
|
26
|
-
export
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
16
|
+
export const makeDarkOverrides = (theme) => {
|
|
17
|
+
const datePickerOverridesResult = datePickerOverrides(theme);
|
|
18
|
+
const accordionOverridesResult = accordionOverrides(theme);
|
|
19
|
+
return {
|
|
20
|
+
MuiButton: buttonOverrides(theme),
|
|
21
|
+
MuiTextField: textFieldOverrides(),
|
|
22
|
+
MuiOutlinedInput: outlinedInputOverrides(),
|
|
23
|
+
MuiInputBase: inputBaseOverrides(),
|
|
24
|
+
MuiSelect: selectOverrides(),
|
|
25
|
+
MuiAutocomplete: autocompleteOverrides(),
|
|
26
|
+
MuiDialog: dialogOverrides(),
|
|
27
|
+
MuiDialogTitle: dialogTitleOverrides(),
|
|
28
|
+
MuiDialogContent: dialogContentOverrides(),
|
|
29
|
+
MuiDialogActions: dialogActionsOverrides(),
|
|
30
|
+
MuiPopover: popoverOverrides(),
|
|
31
|
+
MuiAvatar: avatarOverrides(theme),
|
|
32
|
+
MuiToggleButtonGroup: toggleButtonGroupOverrides(),
|
|
33
|
+
MuiToggleButton: toggleButtonOverrides(theme),
|
|
34
|
+
MuiIconButton: iconButtonOverrides(),
|
|
35
|
+
MuiCheckbox: checkboxOverrides(),
|
|
36
|
+
MuiBackdrop: backdropOverrides(theme),
|
|
37
|
+
MuiTypography: {
|
|
31
38
|
styleOverrides: {
|
|
32
39
|
root: {
|
|
33
40
|
color: alpha(theme.palette.grey[50], 0.9)
|
|
@@ -36,7 +43,17 @@ export var makeDarkOverrides = function (theme) {
|
|
|
36
43
|
// Typography caption overrides will be implemented later
|
|
37
44
|
}
|
|
38
45
|
}
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
|
|
46
|
+
},
|
|
47
|
+
...datePickerOverridesResult,
|
|
48
|
+
MuiAccordion: accordionOverridesResult.MuiAccordion,
|
|
49
|
+
MuiAccordionSummary: accordionOverridesResult.MuiAccordionSummary,
|
|
50
|
+
MuiCssBaseline: {
|
|
51
|
+
styleOverrides: {
|
|
52
|
+
...(datePickerOverridesResult.MuiCssBaseline?.styleOverrides || {}),
|
|
53
|
+
...(accordionOverridesResult.MuiCssBaseline?.styleOverrides || {})
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
MuiMenuItem: menuItemOverrides(theme),
|
|
57
|
+
MuiSwipeableDrawer: swipeableDrawerOverrides(theme)
|
|
58
|
+
};
|
|
42
59
|
};
|
|
@@ -1,14 +1,3 @@
|
|
|
1
|
-
var __assign = (this && this.__assign) || function () {
|
|
2
|
-
__assign = Object.assign || function(t) {
|
|
3
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
-
s = arguments[i];
|
|
5
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
-
t[p] = s[p];
|
|
7
|
-
}
|
|
8
|
-
return t;
|
|
9
|
-
};
|
|
10
|
-
return __assign.apply(this, arguments);
|
|
11
|
-
};
|
|
12
1
|
import { alpha } from '@mui/material/styles';
|
|
13
2
|
import { accordionOverrides } from './overrides/accordionOverrides';
|
|
14
3
|
import { autocompleteOverrides } from './overrides/autocompleteOverrides';
|
|
@@ -21,13 +10,31 @@ import { dialogOverrides, dialogTitleOverrides, dialogContentOverrides, dialogAc
|
|
|
21
10
|
import { iconButtonOverrides } from './overrides/iconButtonOverrides';
|
|
22
11
|
import { menuItemOverrides } from './overrides/menuItemOverrides';
|
|
23
12
|
import { popoverOverrides } from './overrides/popoverOverrides';
|
|
13
|
+
import { swipeableDrawerOverrides } from './overrides/swipeableDrawerOverrides';
|
|
24
14
|
import { textFieldOverrides, outlinedInputOverrides, inputBaseOverrides, selectOverrides } from './overrides/textFieldOverrides';
|
|
25
15
|
import { toggleButtonGroupOverrides, toggleButtonOverrides } from './overrides/toggleButtonOverrides';
|
|
26
|
-
export
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
16
|
+
export const makeLightOverrides = (theme) => {
|
|
17
|
+
const datePickerOverridesResult = datePickerOverrides(theme);
|
|
18
|
+
const accordionOverridesResult = accordionOverrides(theme);
|
|
19
|
+
return {
|
|
20
|
+
MuiButton: buttonOverrides(theme),
|
|
21
|
+
MuiTextField: textFieldOverrides(),
|
|
22
|
+
MuiOutlinedInput: outlinedInputOverrides(),
|
|
23
|
+
MuiInputBase: inputBaseOverrides(),
|
|
24
|
+
MuiSelect: selectOverrides(),
|
|
25
|
+
MuiAutocomplete: autocompleteOverrides(),
|
|
26
|
+
MuiDialog: dialogOverrides(),
|
|
27
|
+
MuiDialogTitle: dialogTitleOverrides(),
|
|
28
|
+
MuiDialogContent: dialogContentOverrides(),
|
|
29
|
+
MuiDialogActions: dialogActionsOverrides(),
|
|
30
|
+
MuiPopover: popoverOverrides(),
|
|
31
|
+
MuiAvatar: avatarOverrides(theme),
|
|
32
|
+
MuiToggleButtonGroup: toggleButtonGroupOverrides(),
|
|
33
|
+
MuiToggleButton: toggleButtonOverrides(theme),
|
|
34
|
+
MuiIconButton: iconButtonOverrides(),
|
|
35
|
+
MuiCheckbox: checkboxOverrides(),
|
|
36
|
+
MuiBackdrop: backdropOverrides(theme),
|
|
37
|
+
MuiTypography: {
|
|
31
38
|
styleOverrides: {
|
|
32
39
|
root: {
|
|
33
40
|
color: alpha(theme.palette.grey[900], 0.9)
|
|
@@ -36,7 +43,16 @@ export var makeLightOverrides = function (theme) {
|
|
|
36
43
|
// Typography caption overrides will be implemented later
|
|
37
44
|
}
|
|
38
45
|
}
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
|
|
46
|
+
},
|
|
47
|
+
...datePickerOverridesResult,
|
|
48
|
+
MuiAccordionSummary: accordionOverridesResult.MuiAccordionSummary,
|
|
49
|
+
MuiCssBaseline: {
|
|
50
|
+
styleOverrides: {
|
|
51
|
+
...(datePickerOverridesResult.MuiCssBaseline?.styleOverrides || {}),
|
|
52
|
+
...(accordionOverridesResult.MuiCssBaseline?.styleOverrides || {})
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
MuiMenuItem: menuItemOverrides(theme),
|
|
56
|
+
MuiSwipeableDrawer: swipeableDrawerOverrides(theme)
|
|
57
|
+
};
|
|
42
58
|
};
|
package/dist/lib/makePalette.js
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import paletteJson from './palette.json';
|
|
2
|
-
|
|
3
|
-
export
|
|
4
|
-
if (mode === void 0) { mode = 'light'; }
|
|
2
|
+
const paletteData = paletteJson;
|
|
3
|
+
export const makePalette = (mode = 'light') => {
|
|
5
4
|
return {
|
|
6
|
-
mode
|
|
5
|
+
mode,
|
|
7
6
|
primary: {
|
|
8
7
|
light: paletteData.Primary[300],
|
|
9
8
|
main: paletteData.Primary[600],
|
package/dist/lib/makeTheme.js
CHANGED
|
@@ -1,21 +1,10 @@
|
|
|
1
|
-
var __assign = (this && this.__assign) || function () {
|
|
2
|
-
__assign = Object.assign || function(t) {
|
|
3
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
-
s = arguments[i];
|
|
5
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
-
t[p] = s[p];
|
|
7
|
-
}
|
|
8
|
-
return t;
|
|
9
|
-
};
|
|
10
|
-
return __assign.apply(this, arguments);
|
|
11
|
-
};
|
|
12
1
|
import { createTheme } from '@mui/material/styles';
|
|
13
2
|
import { makeDarkOverrides } from './makeDarkOverrides';
|
|
14
3
|
import { makeLightOverrides } from './makeLightOverrides';
|
|
15
4
|
import { makePalette } from './makePalette';
|
|
16
5
|
import { makeTypography } from './makeTypography';
|
|
17
6
|
// DatePicker styles are applied through component overrides
|
|
18
|
-
|
|
7
|
+
const themesCommonConfig = {
|
|
19
8
|
shape: {
|
|
20
9
|
borderRadius: 6
|
|
21
10
|
},
|
|
@@ -32,12 +21,18 @@ var themesCommonConfig = {
|
|
|
32
21
|
modal: 1300
|
|
33
22
|
}
|
|
34
23
|
};
|
|
35
|
-
export
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
24
|
+
export const makeTheme = (mode = 'light') => {
|
|
25
|
+
const palette = makePalette(mode);
|
|
26
|
+
const typography = makeTypography();
|
|
27
|
+
const theme = createTheme({
|
|
28
|
+
...themesCommonConfig,
|
|
29
|
+
palette,
|
|
30
|
+
typography
|
|
31
|
+
});
|
|
32
|
+
const components = mode === 'dark' ? makeDarkOverrides(theme) : makeLightOverrides(theme);
|
|
41
33
|
// Create the final theme with components
|
|
42
|
-
return createTheme(
|
|
34
|
+
return createTheme({
|
|
35
|
+
...theme,
|
|
36
|
+
components
|
|
37
|
+
});
|
|
43
38
|
};
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { alpha } from '@mui/material/styles';
|
|
2
2
|
import paletteJson from '../palette.json';
|
|
3
|
-
|
|
3
|
+
const paletteData = paletteJson;
|
|
4
4
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
5
|
-
export
|
|
5
|
+
export const accordionOverrides = (theme) => {
|
|
6
6
|
return {
|
|
7
7
|
MuiAccordion: {
|
|
8
8
|
styleOverrides: {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export
|
|
1
|
+
export const avatarOverrides = (theme) => {
|
|
2
2
|
return {
|
|
3
3
|
styleOverrides: {
|
|
4
4
|
root: {
|
|
@@ -70,10 +70,10 @@ export var avatarOverrides = function (theme) {
|
|
|
70
70
|
display: 'inline-flex'
|
|
71
71
|
},
|
|
72
72
|
'&.border': {
|
|
73
|
-
border:
|
|
73
|
+
border: `2px solid ${theme.palette.background.paper}`
|
|
74
74
|
},
|
|
75
75
|
'&.innerBorder': {
|
|
76
|
-
boxShadow:
|
|
76
|
+
boxShadow: `inset 0px 0px 0px 1px ${theme.palette.divider}`
|
|
77
77
|
}
|
|
78
78
|
},
|
|
79
79
|
colorDefault: {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { alpha } from '@mui/material/styles';
|
|
2
2
|
import paletteJson from '../palette.json';
|
|
3
3
|
import { radius } from '../radius';
|
|
4
|
-
|
|
5
|
-
export
|
|
4
|
+
const paletteData = paletteJson;
|
|
5
|
+
export const buttonOverrides = (theme) => {
|
|
6
6
|
return {
|
|
7
7
|
styleOverrides: {
|
|
8
8
|
root: {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { alpha } from '@mui/material/styles';
|
|
2
2
|
// DatePicker component overrides using nested selectors for higher specificity
|
|
3
|
-
export
|
|
3
|
+
export const datePickerOverrides = (theme) => {
|
|
4
4
|
return {
|
|
5
5
|
MuiCssBaseline: {
|
|
6
6
|
styleOverrides: {
|
|
@@ -67,9 +67,9 @@ export var datePickerOverrides = function (theme) {
|
|
|
67
67
|
}
|
|
68
68
|
},
|
|
69
69
|
'.MuiDateCalendar-root .MuiButtonBase-root.MuiPickersDay-root.Mui-selected': {
|
|
70
|
-
backgroundColor:
|
|
70
|
+
backgroundColor: `${theme.palette.primary.main}`,
|
|
71
71
|
'&:hover': {
|
|
72
|
-
backgroundColor:
|
|
72
|
+
backgroundColor: `${theme.palette.primary.dark}`
|
|
73
73
|
}
|
|
74
74
|
},
|
|
75
75
|
'.MuiDateCalendar-root .MuiMonthCalendar-root': {
|
|
@@ -136,6 +136,13 @@ export var datePickerOverrides = function (theme) {
|
|
|
136
136
|
'&:focus': {
|
|
137
137
|
background: theme.palette.primary.dark
|
|
138
138
|
}
|
|
139
|
+
},
|
|
140
|
+
'.MuiButtonBase-root.MuiMenuItem-root.MuiDigitalClock-item.Mui-selected': {
|
|
141
|
+
backgroundColor: theme.palette.primary.main,
|
|
142
|
+
color: theme.palette.primary.contrastText,
|
|
143
|
+
'&:hover': {
|
|
144
|
+
backgroundColor: theme.palette.primary.dark
|
|
145
|
+
}
|
|
139
146
|
}
|
|
140
147
|
}
|
|
141
148
|
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { Components } from '@mui/material/styles';
|
|
2
|
+
export declare const dialogOverrides: () => Components["MuiDialog"];
|
|
3
|
+
export declare const dialogTitleOverrides: () => Components["MuiDialogTitle"];
|
|
4
|
+
export declare const dialogContentOverrides: () => Components["MuiDialogContent"];
|
|
5
|
+
export declare const dialogActionsOverrides: () => Components["MuiDialogActions"];
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { radius } from '../radius';
|
|
2
|
-
export
|
|
2
|
+
export const dialogOverrides = () => {
|
|
3
3
|
return {
|
|
4
4
|
styleOverrides: {
|
|
5
5
|
paper: {
|
|
@@ -10,7 +10,7 @@ export var dialogOverrides = function () {
|
|
|
10
10
|
}
|
|
11
11
|
};
|
|
12
12
|
};
|
|
13
|
-
export
|
|
13
|
+
export const dialogTitleOverrides = () => {
|
|
14
14
|
return {
|
|
15
15
|
styleOverrides: {
|
|
16
16
|
root: {
|
|
@@ -23,7 +23,7 @@ export var dialogTitleOverrides = function () {
|
|
|
23
23
|
}
|
|
24
24
|
};
|
|
25
25
|
};
|
|
26
|
-
export
|
|
26
|
+
export const dialogContentOverrides = () => {
|
|
27
27
|
return {
|
|
28
28
|
styleOverrides: {
|
|
29
29
|
root: {
|
|
@@ -32,7 +32,7 @@ export var dialogContentOverrides = function () {
|
|
|
32
32
|
}
|
|
33
33
|
};
|
|
34
34
|
};
|
|
35
|
-
export
|
|
35
|
+
export const dialogActionsOverrides = () => {
|
|
36
36
|
return {
|
|
37
37
|
styleOverrides: {
|
|
38
38
|
root: {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { alpha } from '@mui/material/styles';
|
|
2
2
|
import paletteJson from '../palette.json';
|
|
3
|
-
|
|
4
|
-
export
|
|
3
|
+
const paletteData = paletteJson;
|
|
4
|
+
export const iconButtonOverrides = () => {
|
|
5
5
|
return {
|
|
6
6
|
styleOverrides: {
|
|
7
7
|
root: {
|
|
@@ -1,24 +1,22 @@
|
|
|
1
1
|
import { menuItemClasses } from '@mui/material/MenuItem';
|
|
2
2
|
import { alpha } from '@mui/material/styles';
|
|
3
3
|
import { radius } from '../radius';
|
|
4
|
-
export
|
|
5
|
-
var _a;
|
|
4
|
+
export const menuItemOverrides = (theme) => {
|
|
6
5
|
return {
|
|
7
6
|
styleOverrides: {
|
|
8
|
-
root:
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
}
|
|
7
|
+
root: {
|
|
8
|
+
borderRadius: radius.md,
|
|
9
|
+
'&&&:hover': {
|
|
10
|
+
backgroundColor: `${alpha(theme.palette.primary.main, theme.palette.action.hoverOpacity)}`
|
|
13
11
|
},
|
|
14
|
-
|
|
12
|
+
[`&.${menuItemClasses.selected}`]: {
|
|
15
13
|
backgroundColor: alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity),
|
|
16
14
|
'&:hover': {
|
|
17
15
|
backgroundColor: alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity +
|
|
18
16
|
theme.palette.action.hoverOpacity)
|
|
19
17
|
}
|
|
20
|
-
}
|
|
21
|
-
|
|
18
|
+
}
|
|
19
|
+
}
|
|
22
20
|
}
|
|
23
21
|
};
|
|
24
22
|
};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { radius } from '../radius';
|
|
2
|
+
export const swipeableDrawerOverrides = (theme) => {
|
|
3
|
+
return {
|
|
4
|
+
defaultProps: {
|
|
5
|
+
sx: {
|
|
6
|
+
'& .MuiDrawer-paper': {
|
|
7
|
+
borderTopLeftRadius: radius.md,
|
|
8
|
+
borderTopRightRadius: radius.md,
|
|
9
|
+
'&::before': {
|
|
10
|
+
content: '""',
|
|
11
|
+
display: 'block',
|
|
12
|
+
width: '64px',
|
|
13
|
+
height: '4px',
|
|
14
|
+
backgroundColor: theme.palette.action.disabledBackground,
|
|
15
|
+
borderRadius: radius.md,
|
|
16
|
+
margin: '12px auto',
|
|
17
|
+
marginTop: '30px',
|
|
18
|
+
flexShrink: 0
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { Components } from '@mui/material/styles';
|
|
2
|
+
export declare const textFieldOverrides: () => Components["MuiTextField"];
|
|
3
|
+
export declare const outlinedInputOverrides: () => Components["MuiOutlinedInput"];
|
|
4
|
+
export declare const inputBaseOverrides: () => Components["MuiInputBase"];
|
|
5
|
+
export declare const selectOverrides: () => Components["MuiSelect"];
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { radius } from '../radius';
|
|
2
|
-
export
|
|
2
|
+
export const textFieldOverrides = () => {
|
|
3
3
|
return {
|
|
4
4
|
defaultProps: {
|
|
5
5
|
size: 'medium'
|
|
@@ -16,7 +16,7 @@ export var textFieldOverrides = function () {
|
|
|
16
16
|
}
|
|
17
17
|
};
|
|
18
18
|
};
|
|
19
|
-
export
|
|
19
|
+
export const outlinedInputOverrides = () => {
|
|
20
20
|
return {
|
|
21
21
|
styleOverrides: {
|
|
22
22
|
root: {
|
|
@@ -57,7 +57,7 @@ export var outlinedInputOverrides = function () {
|
|
|
57
57
|
]
|
|
58
58
|
};
|
|
59
59
|
};
|
|
60
|
-
export
|
|
60
|
+
export const inputBaseOverrides = () => {
|
|
61
61
|
return {
|
|
62
62
|
styleOverrides: {
|
|
63
63
|
root: {
|
|
@@ -68,14 +68,19 @@ export var inputBaseOverrides = function () {
|
|
|
68
68
|
}
|
|
69
69
|
};
|
|
70
70
|
};
|
|
71
|
-
export
|
|
71
|
+
export const selectOverrides = () => {
|
|
72
72
|
return {
|
|
73
73
|
styleOverrides: {
|
|
74
74
|
root: {
|
|
75
75
|
'&.MuiOutlinedInput-root': {
|
|
76
|
+
'& .MuiSvgIcon-root': {
|
|
77
|
+
fontSize: '25px'
|
|
78
|
+
},
|
|
76
79
|
'&.MuiInputBase-sizeSmall': {
|
|
77
80
|
'& .MuiSelect-select': {
|
|
78
|
-
padding: '
|
|
81
|
+
padding: '10px 25px 10px 15px',
|
|
82
|
+
fontSize: '14px',
|
|
83
|
+
lineHeight: '20px',
|
|
79
84
|
// Note: :has() selector removed due to jsdom compatibility in tests
|
|
80
85
|
// If SVG is present, padding should be handled via component-level sx prop
|
|
81
86
|
'& svg': {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { alpha } from '@mui/material/styles';
|
|
2
|
-
export
|
|
2
|
+
export const toggleButtonGroupOverrides = () => {
|
|
3
3
|
return {
|
|
4
4
|
styleOverrides: {
|
|
5
5
|
root: {
|
|
@@ -18,7 +18,7 @@ export var toggleButtonGroupOverrides = function () {
|
|
|
18
18
|
}
|
|
19
19
|
};
|
|
20
20
|
};
|
|
21
|
-
export
|
|
21
|
+
export const toggleButtonOverrides = (theme) => {
|
|
22
22
|
return {
|
|
23
23
|
styleOverrides: {
|
|
24
24
|
root: {
|
package/dist/lib/radius.js
CHANGED
package/dist/lib/theme.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { makeTheme } from './makeTheme';
|
|
2
|
-
export
|
|
2
|
+
export const theme = makeTheme();
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { TypographyVariantsOptions } from '@mui/material/styles';
|
|
2
|
+
export interface PaletteColor {
|
|
3
|
+
50: string;
|
|
4
|
+
100: string;
|
|
5
|
+
200: string;
|
|
6
|
+
300: string;
|
|
7
|
+
400: string;
|
|
8
|
+
500: string;
|
|
9
|
+
600: string;
|
|
10
|
+
700: string;
|
|
11
|
+
800: string;
|
|
12
|
+
900: string;
|
|
13
|
+
ContrastText?: string;
|
|
14
|
+
A400?: string;
|
|
15
|
+
}
|
|
16
|
+
export interface GreyPalette {
|
|
17
|
+
50: string;
|
|
18
|
+
100: string;
|
|
19
|
+
200: string;
|
|
20
|
+
300: string;
|
|
21
|
+
400: string;
|
|
22
|
+
500: string;
|
|
23
|
+
600: string;
|
|
24
|
+
700: string;
|
|
25
|
+
800: string;
|
|
26
|
+
900: string;
|
|
27
|
+
A100: string;
|
|
28
|
+
A200: string;
|
|
29
|
+
A400: string;
|
|
30
|
+
A700: string;
|
|
31
|
+
A900: string;
|
|
32
|
+
}
|
|
33
|
+
export interface TextPalette {
|
|
34
|
+
primary: string;
|
|
35
|
+
secondary: string;
|
|
36
|
+
secondaryContainer: string;
|
|
37
|
+
disabled: string;
|
|
38
|
+
hint: string;
|
|
39
|
+
icon: string;
|
|
40
|
+
}
|
|
41
|
+
export interface BackgroundPalette {
|
|
42
|
+
default: string;
|
|
43
|
+
paper: string;
|
|
44
|
+
contrast: string;
|
|
45
|
+
}
|
|
46
|
+
export interface ActionPalette {
|
|
47
|
+
active: string;
|
|
48
|
+
hover: string;
|
|
49
|
+
selected: string;
|
|
50
|
+
disabled: string;
|
|
51
|
+
disabledBackground: string;
|
|
52
|
+
focus: string;
|
|
53
|
+
}
|
|
54
|
+
export interface BorderPalette {
|
|
55
|
+
main: string;
|
|
56
|
+
disabled: string;
|
|
57
|
+
ghost: string;
|
|
58
|
+
}
|
|
59
|
+
export interface PaletteJson {
|
|
60
|
+
Primary: PaletteColor;
|
|
61
|
+
Secondary: PaletteColor;
|
|
62
|
+
Error: PaletteColor;
|
|
63
|
+
Warning: PaletteColor;
|
|
64
|
+
Success: PaletteColor;
|
|
65
|
+
Info: Omit<PaletteColor, 'ContrastText'>;
|
|
66
|
+
Grey: GreyPalette;
|
|
67
|
+
}
|
|
68
|
+
export type TypographyOptions = TypographyVariantsOptions;
|
|
69
|
+
declare module '@mui/material/TextField' {
|
|
70
|
+
interface TextFieldPropsSizeOverrides {
|
|
71
|
+
large: true;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
declare module '@mui/material/InputBase' {
|
|
75
|
+
interface InputBasePropsSizeOverrides {
|
|
76
|
+
large: true;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
export interface TypographyConfig {
|
|
80
|
+
fontFamily?: string;
|
|
81
|
+
fontSize?: number;
|
|
82
|
+
fontWeight?: number | string;
|
|
83
|
+
lineHeight?: number | string;
|
|
84
|
+
letterSpacing?: string;
|
|
85
|
+
textTransform?: 'none' | 'uppercase' | 'lowercase' | 'capitalize';
|
|
86
|
+
}
|
|
87
|
+
export interface TypographyVariants {
|
|
88
|
+
h1: TypographyConfig;
|
|
89
|
+
h2: TypographyConfig;
|
|
90
|
+
h3: TypographyConfig;
|
|
91
|
+
h4: TypographyConfig;
|
|
92
|
+
h5: TypographyConfig;
|
|
93
|
+
h6: TypographyConfig;
|
|
94
|
+
subtitle1: TypographyConfig;
|
|
95
|
+
subtitle2: TypographyConfig;
|
|
96
|
+
body1: TypographyConfig;
|
|
97
|
+
body2: TypographyConfig;
|
|
98
|
+
button: TypographyConfig;
|
|
99
|
+
buttonLarge: TypographyConfig;
|
|
100
|
+
buttonSmall: TypographyConfig;
|
|
101
|
+
caption: TypographyConfig;
|
|
102
|
+
overline: TypographyConfig;
|
|
103
|
+
}
|
|
104
|
+
export type MakeTypography = () => TypographyOptions;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@linagora/twake-mui",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.4.0",
|
|
4
4
|
"description": "MUI v7 theme system for Twake applications",
|
|
5
5
|
"author": "Twake",
|
|
6
6
|
"license": "MIT",
|
|
@@ -58,7 +58,7 @@
|
|
|
58
58
|
"devDependencies": {
|
|
59
59
|
"@types/react": "18.3.26",
|
|
60
60
|
"@types/react-dom": "18.3.7",
|
|
61
|
-
"cozy-tsconfig": "1.
|
|
61
|
+
"cozy-tsconfig": "^1.9.0",
|
|
62
62
|
"eslint": "10.1.0",
|
|
63
63
|
"eslint-config-cozy-app": "7.0.0"
|
|
64
64
|
},
|