@linagora/twake-mui 7.0.0 → 8.0.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 +57 -0
- package/dist/components/Apptitle/index.js +9 -5
- package/dist/components/Avatar/Avatar.stories.js +58 -37
- package/dist/components/Avatar/helpers.d.ts +0 -28
- package/dist/components/Avatar/helpers.js +0 -28
- package/dist/components/Avatar/index.d.ts +4 -6
- package/dist/components/Avatar/index.js +24 -31
- package/dist/components/Button/index.d.ts +12 -0
- package/dist/components/Button/index.js +8 -0
- package/dist/components/Chip/index.js +3 -3
- package/dist/{stories → components/Dialog}/Dialog.stories.d.ts +2 -2
- package/dist/components/Dialog/Dialog.stories.js +81 -0
- package/dist/components/Dialog/index.d.ts +9 -0
- package/dist/components/Dialog/index.js +9 -0
- package/dist/components/Switch/Switch.stories.d.ts +7 -0
- package/dist/components/Switch/Switch.stories.js +58 -0
- package/dist/components/Switch/index.d.ts +9 -0
- package/dist/components/Switch/index.js +8 -0
- package/dist/components/Tabs/Tabs.stories.d.ts +7 -0
- package/dist/components/Tabs/Tabs.stories.js +52 -0
- package/dist/components/Tabs/index.d.ts +10 -0
- package/dist/components/Tabs/index.js +5 -0
- package/dist/components/ThemeProvider/index.js +9 -10
- package/dist/components/ThemeProvider/types.d.ts +6 -0
- package/dist/index.d.ts +10 -1
- package/dist/index.js +5 -1
- package/dist/lib/makePalette.d.ts +1 -1
- package/dist/lib/makePalette.js +3 -1
- package/dist/lib/makeShadows.d.ts +1 -1
- package/dist/lib/makeShadows.js +2 -2
- package/dist/lib/makeTheme.d.ts +3 -2
- package/dist/lib/makeTheme.js +15 -16
- package/dist/lib/overrides.d.ts +2 -0
- package/dist/lib/overrides.js +1027 -0
- package/dist/lib/types.d.ts +19 -0
- package/dist/stories/Alert.stories.js +57 -53
- package/dist/stories/Badge.stories.d.ts +7 -0
- package/dist/stories/Badge.stories.js +84 -0
- package/dist/stories/Button.stories.d.ts +3 -3
- package/dist/stories/Button.stories.js +67 -58
- package/dist/stories/{Selection.stories.d.ts → Checkbox.stories.d.ts} +1 -1
- package/dist/stories/Checkbox.stories.js +72 -0
- package/dist/stories/Chip.stories.js +2 -2
- package/dist/stories/Divider.stories.d.ts +7 -0
- package/dist/stories/Divider.stories.js +56 -0
- package/dist/stories/IconButton.stories.d.ts +7 -0
- package/dist/stories/IconButton.stories.js +59 -0
- package/dist/stories/Radio.stories.d.ts +7 -0
- package/dist/stories/Radio.stories.js +60 -0
- package/dist/stories/Snackbar.stories.d.ts +7 -0
- package/dist/stories/Snackbar.stories.js +60 -0
- package/dist/stories/{Input.stories.d.ts → TextField.stories.d.ts} +1 -1
- package/dist/stories/TextField.stories.js +86 -0
- package/dist/stories/ThemePlayground.stories.js +20 -113
- package/dist/stories/Typography.stories.d.ts +1 -1
- package/dist/stories/Typography.stories.js +48 -34
- package/package.json +2 -1
- package/dist/lib/darkOverrides.d.ts +0 -2
- package/dist/lib/darkOverrides.js +0 -3
- package/dist/lib/lightOverrides.d.ts +0 -2
- package/dist/lib/lightOverrides.js +0 -520
- package/dist/stories/Dialog.stories.js +0 -40
- package/dist/stories/Input.stories.js +0 -41
- package/dist/stories/Selection.stories.js +0 -37
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { Stack, Tab } from '@mui/material';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { Tabs } from './index';
|
|
4
|
+
const variants = ['standard', 'fullWidth', 'scrollable'];
|
|
5
|
+
const meta = {
|
|
6
|
+
title: 'Tabs',
|
|
7
|
+
component: Tabs,
|
|
8
|
+
parameters: { layout: 'centered' },
|
|
9
|
+
tags: ['autodocs'],
|
|
10
|
+
argTypes: {
|
|
11
|
+
variant: { control: 'select', options: variants },
|
|
12
|
+
narrowed: { control: 'boolean' },
|
|
13
|
+
segmented: { control: 'boolean' },
|
|
14
|
+
centered: { control: 'boolean' }
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
export default meta;
|
|
18
|
+
const Example = props => {
|
|
19
|
+
const [value, setValue] = React.useState(0);
|
|
20
|
+
const scrollable = props.variant === 'scrollable';
|
|
21
|
+
return (React.createElement(Tabs, { value: value, "aria-label": "simple tabs example", onChange: (_event, newValue) => setValue(newValue), ...props },
|
|
22
|
+
React.createElement(Tab, { label: "Item One", id: "simple-tab-0", "aria-controls": "simple-tabpanel-0" }),
|
|
23
|
+
React.createElement(Tab, { label: "Item Two", id: "simple-tab-1", "aria-controls": "simple-tabpanel-1" }),
|
|
24
|
+
React.createElement(Tab, { label: "Item Disabled", id: "simple-tab-3", "aria-controls": "simple-tabpanel-3", disabled: true }),
|
|
25
|
+
React.createElement(Tab, { label: "Item Three", id: "simple-tab-2", "aria-controls": "simple-tabpanel-2" }),
|
|
26
|
+
scrollable && React.createElement(Tab, { label: "Item Four", id: "simple-tab-4" }),
|
|
27
|
+
scrollable && React.createElement(Tab, { label: "Item Five", id: "simple-tab-5" }),
|
|
28
|
+
scrollable && React.createElement(Tab, { label: "Item Six", id: "simple-tab-6" })));
|
|
29
|
+
};
|
|
30
|
+
export const Default = {
|
|
31
|
+
args: { variant: 'standard' },
|
|
32
|
+
render: args => React.createElement(Example, { ...args })
|
|
33
|
+
};
|
|
34
|
+
// Visual Regression - Every example of the cozy-ui Tabs doc
|
|
35
|
+
export const Screenshot = {
|
|
36
|
+
tags: ['argos'],
|
|
37
|
+
render: () => (React.createElement(Stack, { spacing: 4, sx: { width: 800 } },
|
|
38
|
+
React.createElement("section", null,
|
|
39
|
+
React.createElement("h3", { style: { marginBottom: '12px' } }, "Default"),
|
|
40
|
+
React.createElement(Example, null)),
|
|
41
|
+
React.createElement("section", null,
|
|
42
|
+
React.createElement("h3", { style: { marginBottom: '12px' } }, "Narrowed"),
|
|
43
|
+
React.createElement(Example, { narrowed: true })),
|
|
44
|
+
React.createElement("section", null,
|
|
45
|
+
React.createElement("h3", { style: { marginBottom: '12px' } }, "Segmented"),
|
|
46
|
+
React.createElement(Example, { segmented: true })),
|
|
47
|
+
variants.map(variant => (React.createElement("section", { key: variant },
|
|
48
|
+
React.createElement("h3", { style: { marginBottom: '12px' } }, variant),
|
|
49
|
+
React.createElement(Stack, { spacing: 4 },
|
|
50
|
+
React.createElement(Example, { variant: variant }),
|
|
51
|
+
React.createElement(Example, { variant: variant, segmented: true })))))))
|
|
52
|
+
};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { TabsProps as MuiTabsProps } from '@mui/material';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
export interface TabsProps extends MuiTabsProps {
|
|
4
|
+
/** Drops the minimum tab width */
|
|
5
|
+
narrowed?: boolean;
|
|
6
|
+
/** Pill container with the selected tab raised on a white pill */
|
|
7
|
+
segmented?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare const Tabs: React.FC<TabsProps>;
|
|
10
|
+
export default Tabs;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { Tabs as MuiTabs } from '@mui/material';
|
|
2
|
+
import cx from 'classnames';
|
|
3
|
+
import React from 'react';
|
|
4
|
+
export const Tabs = ({ className, narrowed, segmented, ...props }) => React.createElement(MuiTabs, { className: cx(className, { narrowed, segmented }), ...props });
|
|
5
|
+
export default Tabs;
|
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
import { CssBaseline } from '@mui/material';
|
|
2
|
-
import { ThemeProvider as MuiThemeProvider
|
|
2
|
+
import { ThemeProvider as MuiThemeProvider } from '@mui/material/styles';
|
|
3
3
|
import React, { useMemo } from 'react';
|
|
4
4
|
import { makeTheme } from '../../lib/makeTheme';
|
|
5
|
-
export const TwakeMuiThemeProvider = ({ children, mode = 'light', themeOptions }) => {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
return (React.createElement(MuiThemeProvider, { theme: theme },
|
|
5
|
+
export const TwakeMuiThemeProvider = ({ children, mode = 'light', palette, themeOptions }) => {
|
|
6
|
+
// The palette holds plain JSON, so comparing it by content lets consumers
|
|
7
|
+
// pass it inline without rebuilding the whole theme on every render.
|
|
8
|
+
const paletteKey = JSON.stringify(palette);
|
|
9
|
+
const theme = useMemo(() => makeTheme(mode, palette, themeOptions),
|
|
10
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
11
|
+
[mode, paletteKey, themeOptions]);
|
|
12
|
+
return (React.createElement(MuiThemeProvider, { theme: theme, defaultMode: mode },
|
|
14
13
|
React.createElement(CssBaseline, null),
|
|
15
14
|
children));
|
|
16
15
|
};
|
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
import { ThemeOptions } from '@mui/material/styles';
|
|
2
2
|
import { ReactNode } from 'react';
|
|
3
|
+
import { PaletteJson } from '../../lib/types';
|
|
3
4
|
export interface ThemeProviderProps {
|
|
4
5
|
children: ReactNode;
|
|
6
|
+
/**
|
|
7
|
+
* @deprecated Only sets `defaultColorScheme` now (both schemes are always
|
|
8
|
+
* present) - switch theme at runtime with MUI's `useColorScheme()` instead.
|
|
9
|
+
*/
|
|
5
10
|
mode?: 'light' | 'dark';
|
|
11
|
+
palette?: Partial<PaletteJson>;
|
|
6
12
|
themeOptions?: Partial<ThemeOptions>;
|
|
7
13
|
}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,17 +1,26 @@
|
|
|
1
1
|
export * from '@mui/material';
|
|
2
2
|
export * from '@mui/lab';
|
|
3
|
-
export { createTheme, ThemeProvider, styled, alpha, darken, lighten, useTheme } from '@mui/material/styles';
|
|
3
|
+
export { createTheme, ThemeProvider, styled, alpha, darken, lighten, useTheme, useColorScheme } from '@mui/material/styles';
|
|
4
4
|
export { default as Autocomplete } from '@mui/material/Autocomplete';
|
|
5
5
|
export { makePalette } from './lib/makePalette';
|
|
6
6
|
export { theme } from './lib/theme';
|
|
7
7
|
export { radius } from './lib/radius';
|
|
8
8
|
export { TwakeMuiThemeProvider } from './components/ThemeProvider';
|
|
9
9
|
export { Avatar, default as AvatarDefault } from './components/Avatar';
|
|
10
|
+
export { Button, default as ButtonDefault } from './components/Button';
|
|
10
11
|
export { default as Chip } from './components/Chip';
|
|
12
|
+
export { Dialog, default as DialogDefault } from './components/Dialog';
|
|
13
|
+
export { Tabs, default as TabsDefault } from './components/Tabs';
|
|
14
|
+
export { Switch, default as SwitchDefault } from './components/Switch';
|
|
11
15
|
export { nameToColor, supportedColors } from './components/Avatar/helpers';
|
|
12
16
|
export { default as AccordionExpandIcon } from './components/AccordionExpandIcon';
|
|
13
17
|
export { useBreakpoints } from './hooks/useBreakpoints';
|
|
14
18
|
export type { TwakeTheme } from './lib/theme';
|
|
19
|
+
export type { PaletteJson } from './lib/types';
|
|
15
20
|
export type { AvatarProps } from './components/Avatar';
|
|
21
|
+
export type { ButtonProps } from './components/Button';
|
|
16
22
|
export type { ChipProps } from './components/Chip';
|
|
23
|
+
export type { DialogProps, DialogSize } from './components/Dialog';
|
|
24
|
+
export type { TabsProps } from './components/Tabs';
|
|
25
|
+
export type { SwitchProps } from './components/Switch';
|
|
17
26
|
export type { Breakpoints } from './hooks/useBreakpoints';
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// MUI
|
|
2
2
|
export * from '@mui/material';
|
|
3
3
|
export * from '@mui/lab';
|
|
4
|
-
export { createTheme, ThemeProvider, styled, alpha, darken, lighten, useTheme } from '@mui/material/styles';
|
|
4
|
+
export { createTheme, ThemeProvider, styled, alpha, darken, lighten, useTheme, useColorScheme } from '@mui/material/styles';
|
|
5
5
|
export { default as Autocomplete } from '@mui/material/Autocomplete';
|
|
6
6
|
// LIB
|
|
7
7
|
export { makePalette } from './lib/makePalette';
|
|
@@ -10,7 +10,11 @@ export { radius } from './lib/radius';
|
|
|
10
10
|
// COMPONENTS & HELPERS
|
|
11
11
|
export { TwakeMuiThemeProvider } from './components/ThemeProvider';
|
|
12
12
|
export { Avatar, default as AvatarDefault } from './components/Avatar';
|
|
13
|
+
export { Button, default as ButtonDefault } from './components/Button';
|
|
13
14
|
export { default as Chip } from './components/Chip';
|
|
15
|
+
export { Dialog, default as DialogDefault } from './components/Dialog';
|
|
16
|
+
export { Tabs, default as TabsDefault } from './components/Tabs';
|
|
17
|
+
export { Switch, default as SwitchDefault } from './components/Switch';
|
|
14
18
|
export { nameToColor, supportedColors } from './components/Avatar/helpers';
|
|
15
19
|
export { default as AccordionExpandIcon } from './components/AccordionExpandIcon';
|
|
16
20
|
export { useBreakpoints } from './hooks/useBreakpoints';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { PaletteOptions } from '@mui/material/styles';
|
|
2
2
|
import { PaletteJson, BackgroundPalette, GreyPalette, BorderPalette } from './types';
|
|
3
|
-
export declare const makePalette: (mode?: "light" | "dark",
|
|
3
|
+
export declare const makePalette: (mode?: "light" | "dark", overrides?: Partial<PaletteJson>) => PaletteOptions & {
|
|
4
4
|
background: BackgroundPalette;
|
|
5
5
|
grey: GreyPalette;
|
|
6
6
|
border: BorderPalette;
|
package/dist/lib/makePalette.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { alpha } from '@mui/material/styles';
|
|
2
|
+
import { deepmerge } from '@mui/utils';
|
|
2
3
|
import paletteJson from './palette.json';
|
|
3
4
|
const paletteData = paletteJson;
|
|
4
|
-
export const makePalette = (mode = 'light',
|
|
5
|
+
export const makePalette = (mode = 'light', overrides = {}) => {
|
|
6
|
+
const palette = deepmerge(paletteData, overrides);
|
|
5
7
|
if (mode === 'dark') {
|
|
6
8
|
return {
|
|
7
9
|
mode,
|
package/dist/lib/makeShadows.js
CHANGED
|
@@ -39,8 +39,8 @@ const OUTLINE_OPACITY = 0.12;
|
|
|
39
39
|
* through the type. Kept to stay iso with cozy-ui.
|
|
40
40
|
*/
|
|
41
41
|
const EXTRA_ELEVATION_OPACITY = 0.04;
|
|
42
|
-
export const makeShadows = (
|
|
43
|
-
const shadowColor =
|
|
42
|
+
export const makeShadows = (palette = paletteData) => {
|
|
43
|
+
const shadowColor = palette.Common.black;
|
|
44
44
|
const outline = `0px 0px 0px 0.5px ${alpha(shadowColor, OUTLINE_OPACITY)}`;
|
|
45
45
|
const shadows = elevations.map(([y1, blur1, spread1, o1, y2, blur2, spread2, o2]) => [
|
|
46
46
|
`0px ${y1}px ${blur1}px ${spread1}px ${alpha(shadowColor, o1)}`,
|
package/dist/lib/makeTheme.d.ts
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
import { createTheme } from '@mui/material/styles';
|
|
2
|
-
|
|
1
|
+
import { createTheme, ThemeOptions } from '@mui/material/styles';
|
|
2
|
+
import { PaletteJson } from './types';
|
|
3
|
+
export declare const makeTheme: (mode?: "light" | "dark", paletteOverrides?: Partial<PaletteJson>, themeOptions?: ThemeOptions) => ReturnType<typeof createTheme>;
|
package/dist/lib/makeTheme.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { createTheme } from '@mui/material/styles';
|
|
2
|
-
import {
|
|
3
|
-
import { lightOverrides } from './lightOverrides';
|
|
2
|
+
import { deepmerge } from '@mui/utils';
|
|
4
3
|
import { makePalette } from './makePalette';
|
|
5
4
|
import { makeShadows } from './makeShadows';
|
|
6
5
|
import { makeTypography } from './makeTypography';
|
|
6
|
+
import { overrides } from './overrides';
|
|
7
7
|
// DatePicker styles are applied through component overrides
|
|
8
8
|
const themesCommonConfig = {
|
|
9
9
|
shape: {
|
|
@@ -22,19 +22,18 @@ const themesCommonConfig = {
|
|
|
22
22
|
modal: 1300
|
|
23
23
|
}
|
|
24
24
|
};
|
|
25
|
-
export const makeTheme = (mode = 'light') => {
|
|
26
|
-
const
|
|
27
|
-
const typography = makeTypography();
|
|
28
|
-
const theme = createTheme({
|
|
25
|
+
export const makeTheme = (mode = 'light', paletteOverrides, themeOptions) => {
|
|
26
|
+
const baseOptions = {
|
|
29
27
|
...themesCommonConfig,
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
components
|
|
39
|
-
}
|
|
28
|
+
cssVariables: { colorSchemeSelector: 'data-theme' },
|
|
29
|
+
defaultColorScheme: mode,
|
|
30
|
+
colorSchemes: {
|
|
31
|
+
light: { palette: makePalette('light', paletteOverrides) },
|
|
32
|
+
dark: { palette: makePalette('dark', paletteOverrides) }
|
|
33
|
+
},
|
|
34
|
+
typography: makeTypography(),
|
|
35
|
+
shadows: makeShadows(),
|
|
36
|
+
components: overrides
|
|
37
|
+
};
|
|
38
|
+
return createTheme(deepmerge(baseOptions, themeOptions ?? {}));
|
|
40
39
|
};
|