@linagora/twake-mui 9.11.2 → 9.13.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 +15 -0
- package/dist/components/Empty/Empty.stories.d.ts +7 -0
- package/dist/components/Empty/Empty.stories.js +52 -0
- package/dist/components/Empty/index.d.ts +24 -0
- package/dist/components/Empty/index.js +65 -0
- package/dist/components/ListItemSkeleton/ListItemSkeleton.stories.d.ts +7 -0
- package/dist/components/ListItemSkeleton/ListItemSkeleton.stories.js +43 -0
- package/dist/components/ListItemSkeleton/index.d.ts +9 -0
- package/dist/components/ListItemSkeleton/index.js +12 -0
- package/dist/components/ListSkeleton/ListSkeleton.stories.d.ts +7 -0
- package/dist/components/ListSkeleton/ListSkeleton.stories.js +40 -0
- package/dist/components/ListSkeleton/index.d.ts +9 -0
- package/dist/components/ListSkeleton/index.js +6 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +3 -0
- package/dist/stories/Menu.stories.js +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,18 @@
|
|
|
1
|
+
# @linagora/twake-mui [9.13.0](https://github.com/linagora/twake-ui/compare/@linagora/twake-mui@9.12.0...@linagora/twake-mui@9.13.0) (2026-09-29)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Features
|
|
5
|
+
|
|
6
|
+
* **twake-mui:** Migrate Empty from cozy-ui ([159c7e2](https://github.com/linagora/twake-ui/commit/159c7e2656c03989fed1c4ea6870dcf8889dd468))
|
|
7
|
+
|
|
8
|
+
# @linagora/twake-mui [9.12.0](https://github.com/linagora/twake-ui/compare/@linagora/twake-mui@9.11.2...@linagora/twake-mui@9.12.0) (2026-09-29)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Features
|
|
12
|
+
|
|
13
|
+
* **twake-mui:** Migrate ListItemSkeleton from cozy-ui ([b1ec8f8](https://github.com/linagora/twake-ui/commit/b1ec8f86a86f5caf1003dc139c57697e5e314bce))
|
|
14
|
+
* **twake-mui:** Migrate ListSkeleton from cozy-ui ([782492a](https://github.com/linagora/twake-ui/commit/782492a0a5b5f30f9454641e645081cb6689d415))
|
|
15
|
+
|
|
1
16
|
## @linagora/twake-mui [9.11.2](https://github.com/linagora/twake-ui/compare/@linagora/twake-mui@9.11.1...@linagora/twake-mui@9.11.2) (2026-09-29)
|
|
2
17
|
|
|
3
18
|
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/react-vite';
|
|
2
|
+
import { Empty } from './index';
|
|
3
|
+
declare const meta: Meta<typeof Empty>;
|
|
4
|
+
export default meta;
|
|
5
|
+
type Story = StoryObj<typeof meta>;
|
|
6
|
+
export declare const Default: Story;
|
|
7
|
+
export declare const Screenshot: Story;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { Icon, TwakeWorkplace } from '@linagora/twake-icons';
|
|
2
|
+
import { Box, Button, Stack } from '@mui/material';
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import { Empty } from './index';
|
|
5
|
+
const iconSizes = ['normal', 'medium', 'large'];
|
|
6
|
+
const image = 'https://i.pravatar.cc/150?img=11';
|
|
7
|
+
const longTitle = 'This is a very very long title, just to see and verify how it works with it';
|
|
8
|
+
const longText = 'Ada Lovelace was an English mathematician and writer, chiefly known for her work on the Analytical Engine. She was the first to recognise that the machine had applications beyond pure calculation, and published the first algorithm intended to be carried out by such a machine.';
|
|
9
|
+
const meta = {
|
|
10
|
+
title: 'Empty',
|
|
11
|
+
component: Empty,
|
|
12
|
+
tags: ['autodocs'],
|
|
13
|
+
argTypes: {
|
|
14
|
+
iconSize: { control: 'select', options: iconSizes },
|
|
15
|
+
title: { control: 'text' },
|
|
16
|
+
text: { control: 'text' },
|
|
17
|
+
centered: { control: 'boolean' }
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
export default meta;
|
|
21
|
+
export const Default = {
|
|
22
|
+
args: {
|
|
23
|
+
icon: TwakeWorkplace,
|
|
24
|
+
iconSize: 'normal',
|
|
25
|
+
title: 'This list is empty',
|
|
26
|
+
text: 'Try adding some content to this list',
|
|
27
|
+
centered: false
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
const Section = ({ title, children }) => (React.createElement("section", null,
|
|
31
|
+
React.createElement("h3", { style: { marginBottom: '12px' } }, title),
|
|
32
|
+
children));
|
|
33
|
+
// Visual Regression - Combined view for Argos testing
|
|
34
|
+
export const Screenshot = {
|
|
35
|
+
tags: ['argos'],
|
|
36
|
+
render: () => (React.createElement(Stack, { spacing: 4 },
|
|
37
|
+
React.createElement(Section, { title: "Icon sizes" }, iconSizes.map(iconSize => (React.createElement(Empty, { key: iconSize, icon: TwakeWorkplace, iconSize: iconSize, title: "This list is empty", text: "Try adding some content to this list" })))),
|
|
38
|
+
React.createElement(Section, { title: "Long title and text" },
|
|
39
|
+
React.createElement(Empty, { icon: TwakeWorkplace, title: longTitle, text: longText })),
|
|
40
|
+
React.createElement(Section, { title: "With content" },
|
|
41
|
+
React.createElement(Empty, { icon: TwakeWorkplace, title: "This list is empty", text: "Try adding some content to this list" },
|
|
42
|
+
React.createElement(Button, { variant: "contained", sx: { mt: 2 } }, "Try refreshing"))),
|
|
43
|
+
React.createElement(Section, { title: "Centered" },
|
|
44
|
+
React.createElement(Box, { sx: { display: 'flex', height: 500, transform: 'scale(1)' } },
|
|
45
|
+
React.createElement(Empty, { icon: TwakeWorkplace, title: "This list is empty", text: "Try adding some content to this list", centered: true }))),
|
|
46
|
+
React.createElement(Section, { title: "Custom images" },
|
|
47
|
+
React.createElement(Empty, { icon: TwakeWorkplace, title: "With functional SVG", text: "Try adding some content to this list" }),
|
|
48
|
+
React.createElement(Empty, { icon: React.createElement("img", { src: image, alt: "" }), title: "With IMG", text: "Try adding some content to this list" }),
|
|
49
|
+
React.createElement(Empty, { icon: React.createElement("svg", { width: "100", height: "100" },
|
|
50
|
+
React.createElement("circle", { cx: "50", cy: "50", r: "40", stroke: "var(--twake-palette-primary-main)", strokeWidth: "4", fill: "var(--twake-palette-background-paper)" })), title: "With SVG", text: "Try adding some content to this list" }),
|
|
51
|
+
React.createElement(Empty, { icon: React.createElement(Icon, { icon: TwakeWorkplace }), title: "With Icon component", text: "Try adding some content to this list" }))))
|
|
52
|
+
};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { IconProps } from '@linagora/twake-icons';
|
|
2
|
+
import { SxProps, TypographyProps } from '@mui/material';
|
|
3
|
+
import { Theme } from '@mui/material/styles';
|
|
4
|
+
import React from 'react';
|
|
5
|
+
export type EmptyIconSize = 'normal' | 'medium' | 'large';
|
|
6
|
+
export interface EmptyComponentsProps {
|
|
7
|
+
icon?: Partial<IconProps>;
|
|
8
|
+
title?: TypographyProps;
|
|
9
|
+
text?: TypographyProps;
|
|
10
|
+
childrenContainer?: React.ComponentPropsWithoutRef<'div'>;
|
|
11
|
+
}
|
|
12
|
+
export interface EmptyProps extends Omit<React.ComponentPropsWithoutRef<'div'>, 'title'> {
|
|
13
|
+
icon?: IconProps['icon'];
|
|
14
|
+
iconSize?: EmptyIconSize;
|
|
15
|
+
title?: React.ReactNode;
|
|
16
|
+
text?: React.ReactNode;
|
|
17
|
+
/** Below the `lg` breakpoint, pins the block to the centre of the viewport */
|
|
18
|
+
centered?: boolean;
|
|
19
|
+
componentsProps?: EmptyComponentsProps;
|
|
20
|
+
sx?: SxProps<Theme>;
|
|
21
|
+
}
|
|
22
|
+
export declare const EmptySubTitle: React.FC<TypographyProps>;
|
|
23
|
+
export declare const Empty: React.FC<EmptyProps>;
|
|
24
|
+
export default Empty;
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { Icon } from '@linagora/twake-icons';
|
|
2
|
+
import { Typography } from '@mui/material';
|
|
3
|
+
import { styled } from '@mui/material/styles';
|
|
4
|
+
import cx from 'classnames';
|
|
5
|
+
import React from 'react';
|
|
6
|
+
const ICON_CLASS_NAME = 'Empty-icon';
|
|
7
|
+
const iconHeights = {
|
|
8
|
+
normal: { desktop: 128, mobile: 96 },
|
|
9
|
+
medium: { desktop: 160, mobile: 128 },
|
|
10
|
+
large: { desktop: 192, mobile: 160 }
|
|
11
|
+
};
|
|
12
|
+
const EmptyRoot = styled('div', {
|
|
13
|
+
shouldForwardProp: prop => prop !== 'iconSize' && prop !== 'centered'
|
|
14
|
+
})(({ theme, iconSize, centered }) => ({
|
|
15
|
+
display: 'flex',
|
|
16
|
+
flexDirection: 'column',
|
|
17
|
+
justifyContent: 'center',
|
|
18
|
+
flex: '1 0 auto',
|
|
19
|
+
alignSelf: 'center',
|
|
20
|
+
margin: '0 auto',
|
|
21
|
+
boxSizing: 'content-box',
|
|
22
|
+
padding: theme.spacing(4),
|
|
23
|
+
textAlign: 'center',
|
|
24
|
+
width: `calc(100% - ${theme.spacing(8)})`,
|
|
25
|
+
maxWidth: 512,
|
|
26
|
+
[`& .${ICON_CLASS_NAME}`]: {
|
|
27
|
+
display: 'block',
|
|
28
|
+
margin: '0 auto 16px',
|
|
29
|
+
height: iconHeights[iconSize].desktop,
|
|
30
|
+
[theme.breakpoints.down('lg')]: {
|
|
31
|
+
marginBottom: 8,
|
|
32
|
+
height: iconHeights[iconSize].mobile
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
...(centered && {
|
|
36
|
+
[theme.breakpoints.down('lg')]: {
|
|
37
|
+
position: 'fixed',
|
|
38
|
+
top: '50%',
|
|
39
|
+
left: '50%',
|
|
40
|
+
transform: 'translate(-50%, -50%)'
|
|
41
|
+
}
|
|
42
|
+
})
|
|
43
|
+
}));
|
|
44
|
+
const EmptyContent = styled('div')(({ theme }) => ({
|
|
45
|
+
maxWidth: 1008,
|
|
46
|
+
color: theme.vars.palette.text.secondary,
|
|
47
|
+
lineHeight: 1.5
|
|
48
|
+
}));
|
|
49
|
+
export const EmptySubTitle = props => (React.createElement(Typography, { variant: "body1", color: "textSecondary", ...props }));
|
|
50
|
+
const renderIcon = (icon, iconProps) => {
|
|
51
|
+
if (React.isValidElement(icon)) {
|
|
52
|
+
return React.cloneElement(icon, {
|
|
53
|
+
className: cx(ICON_CLASS_NAME, icon.props.className),
|
|
54
|
+
size: icon.props.size ?? (icon.type === Icon ? '100%' : undefined),
|
|
55
|
+
...iconProps
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
return (React.createElement(Icon, { className: ICON_CLASS_NAME, icon: icon, size: "100%", ...iconProps }));
|
|
59
|
+
};
|
|
60
|
+
export const Empty = ({ icon, iconSize = 'normal', title, text, centered = false, componentsProps, children, ...props }) => (React.createElement(EmptyRoot, { iconSize: iconSize, centered: centered, ...props },
|
|
61
|
+
icon && renderIcon(icon, componentsProps?.icon),
|
|
62
|
+
title && (React.createElement(Typography, { gutterBottom: true, variant: "h3", color: "textPrimary", ...componentsProps?.title }, title)),
|
|
63
|
+
text && (React.createElement(EmptySubTitle, { gutterBottom: true, ...componentsProps?.text }, text)),
|
|
64
|
+
React.createElement(EmptyContent, { ...componentsProps?.childrenContainer }, children)));
|
|
65
|
+
export default Empty;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/react-vite';
|
|
2
|
+
import ListItemSkeleton from './index';
|
|
3
|
+
declare const meta: Meta<typeof ListItemSkeleton>;
|
|
4
|
+
export default meta;
|
|
5
|
+
type Story = StoryObj<typeof meta>;
|
|
6
|
+
export declare const Default: Story;
|
|
7
|
+
export declare const Screenshot: Story;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { Box, List, Stack } from '@mui/material';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import ListItemSkeleton from './index';
|
|
4
|
+
const meta = {
|
|
5
|
+
title: 'ListItemSkeleton',
|
|
6
|
+
component: ListItemSkeleton,
|
|
7
|
+
tags: ['autodocs'],
|
|
8
|
+
argTypes: {
|
|
9
|
+
hasSecondary: { control: 'boolean' },
|
|
10
|
+
divider: { control: 'boolean' },
|
|
11
|
+
gutters: {
|
|
12
|
+
control: 'select',
|
|
13
|
+
options: ['default', 'double', 'disabled']
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
decorators: [
|
|
17
|
+
(Story) => (React.createElement(Box, { sx: { maxWidth: 480 } },
|
|
18
|
+
React.createElement(List, null,
|
|
19
|
+
React.createElement(Story, null))))
|
|
20
|
+
]
|
|
21
|
+
};
|
|
22
|
+
export default meta;
|
|
23
|
+
export const Default = {
|
|
24
|
+
args: {
|
|
25
|
+
hasSecondary: false,
|
|
26
|
+
divider: false,
|
|
27
|
+
gutters: 'default'
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
const Example = ({ title, ...props }) => (React.createElement("section", null,
|
|
31
|
+
React.createElement("h3", null, title),
|
|
32
|
+
React.createElement(ListItemSkeleton, { ...props })));
|
|
33
|
+
// Visual Regression - Combined view for Argos testing
|
|
34
|
+
export const Screenshot = {
|
|
35
|
+
tags: ['argos'],
|
|
36
|
+
render: () => (React.createElement(Stack, { spacing: 4 },
|
|
37
|
+
React.createElement(Example, { title: "Default" }),
|
|
38
|
+
React.createElement(Example, { title: "With secondary", hasSecondary: true }),
|
|
39
|
+
React.createElement(Example, { title: "With divider", divider: true }),
|
|
40
|
+
React.createElement(Example, { title: "Disabled gutters", gutters: "disabled" }),
|
|
41
|
+
React.createElement(Example, { title: "Double gutters", gutters: "double" }),
|
|
42
|
+
React.createElement(Example, { title: "With secondary, divider and double gutters", hasSecondary: true, divider: true, gutters: "double" })))
|
|
43
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { ListItemGutters } from '../ListItem';
|
|
3
|
+
export interface ListItemSkeletonProps {
|
|
4
|
+
hasSecondary?: boolean;
|
|
5
|
+
divider?: boolean;
|
|
6
|
+
gutters?: ListItemGutters;
|
|
7
|
+
}
|
|
8
|
+
declare const ListItemSkeleton: ({ hasSecondary, divider, gutters }: ListItemSkeletonProps) => React.ReactElement;
|
|
9
|
+
export default ListItemSkeleton;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Divider, ListItemIcon, Skeleton } from '@mui/material';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { radius } from '../../lib/radius';
|
|
4
|
+
import ListItem from '../ListItem';
|
|
5
|
+
import ListItemText from '../ListItemText';
|
|
6
|
+
const ListItemSkeleton = ({ hasSecondary, divider, gutters }) => (React.createElement(React.Fragment, null,
|
|
7
|
+
React.createElement(ListItem, { gutters: gutters },
|
|
8
|
+
React.createElement(ListItemIcon, null,
|
|
9
|
+
React.createElement(Skeleton, { variant: "rectangular", width: 32, height: 32, sx: { borderRadius: radius.md } })),
|
|
10
|
+
React.createElement(ListItemText, { primary: React.createElement(Skeleton, { width: "75%", height: 13 }), secondary: hasSecondary ? React.createElement(Skeleton, { width: "37%", height: 13 }) : undefined })),
|
|
11
|
+
divider && React.createElement(Divider, null)));
|
|
12
|
+
export default ListItemSkeleton;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/react-vite';
|
|
2
|
+
import ListSkeleton from './index';
|
|
3
|
+
declare const meta: Meta<typeof ListSkeleton>;
|
|
4
|
+
export default meta;
|
|
5
|
+
type Story = StoryObj<typeof meta>;
|
|
6
|
+
export declare const Default: Story;
|
|
7
|
+
export declare const Screenshot: Story;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { Box, Stack } from '@mui/material';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import ListSkeleton from './index';
|
|
4
|
+
const meta = {
|
|
5
|
+
title: 'ListSkeleton',
|
|
6
|
+
component: ListSkeleton,
|
|
7
|
+
tags: ['autodocs'],
|
|
8
|
+
argTypes: {
|
|
9
|
+
count: { control: { type: 'number', min: 1 } },
|
|
10
|
+
hasSecondary: { control: 'boolean' },
|
|
11
|
+
withSubheader: { control: 'boolean' },
|
|
12
|
+
divider: { control: 'boolean' }
|
|
13
|
+
},
|
|
14
|
+
decorators: [
|
|
15
|
+
(Story) => (React.createElement(Box, { sx: { maxWidth: 480 } },
|
|
16
|
+
React.createElement(Story, null)))
|
|
17
|
+
]
|
|
18
|
+
};
|
|
19
|
+
export default meta;
|
|
20
|
+
export const Default = {
|
|
21
|
+
args: {
|
|
22
|
+
count: 5,
|
|
23
|
+
hasSecondary: false,
|
|
24
|
+
withSubheader: false,
|
|
25
|
+
divider: false
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
const Example = ({ title, ...props }) => (React.createElement("section", null,
|
|
29
|
+
React.createElement("h3", null, title),
|
|
30
|
+
React.createElement(ListSkeleton, { count: 3, ...props })));
|
|
31
|
+
// Visual Regression - Combined view for Argos testing
|
|
32
|
+
export const Screenshot = {
|
|
33
|
+
tags: ['argos'],
|
|
34
|
+
render: () => (React.createElement(Stack, { spacing: 4 },
|
|
35
|
+
React.createElement(Example, { title: "Default" }),
|
|
36
|
+
React.createElement(Example, { title: "With secondary", hasSecondary: true }),
|
|
37
|
+
React.createElement(Example, { title: "With subheader", withSubheader: true }),
|
|
38
|
+
React.createElement(Example, { title: "With divider", divider: true }),
|
|
39
|
+
React.createElement(Example, { title: "With secondary, subheader and divider", hasSecondary: true, withSubheader: true, divider: true })))
|
|
40
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface ListSkeletonProps {
|
|
3
|
+
count?: number;
|
|
4
|
+
hasSecondary?: boolean;
|
|
5
|
+
withSubheader?: boolean;
|
|
6
|
+
divider?: boolean;
|
|
7
|
+
}
|
|
8
|
+
declare const ListSkeleton: ({ count, hasSecondary, withSubheader, divider }: ListSkeletonProps) => React.ReactElement;
|
|
9
|
+
export default ListSkeleton;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { List } from '@mui/material';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import ListItemSkeleton from '../ListItemSkeleton';
|
|
4
|
+
import ListSubheader from '../ListSubheader';
|
|
5
|
+
const ListSkeleton = ({ count = 1, hasSecondary, withSubheader, divider }) => (React.createElement(List, { subheader: withSubheader ? React.createElement(ListSubheader, null, "\u00A0") : undefined }, Array.from({ length: count }, (_, idx) => (React.createElement(ListItemSkeleton, { key: idx, hasSecondary: hasSecondary, divider: divider })))));
|
|
6
|
+
export default ListSkeleton;
|
package/dist/index.d.ts
CHANGED
|
@@ -13,9 +13,12 @@ export { Dialog, default as DialogDefault } from './components/Dialog';
|
|
|
13
13
|
export { ContactPopover, default as ContactPopoverDefault } from './components/ContactPopover';
|
|
14
14
|
export { default as DropdownButton } from './components/DropdownButton';
|
|
15
15
|
export { default as DropdownText } from './components/DropdownText';
|
|
16
|
+
export { Empty, EmptySubTitle } from './components/Empty';
|
|
16
17
|
export { default as ListItem } from './components/ListItem';
|
|
17
18
|
export { default as ListItemButton } from './components/ListItemButton';
|
|
18
19
|
export { default as ListItemText } from './components/ListItemText';
|
|
20
|
+
export { default as ListItemSkeleton } from './components/ListItemSkeleton';
|
|
21
|
+
export { default as ListSkeleton } from './components/ListSkeleton';
|
|
19
22
|
export { default as ListSubheader } from './components/ListSubheader';
|
|
20
23
|
export { Tabs, default as TabsDefault } from './components/Tabs';
|
|
21
24
|
export { Switch, default as SwitchDefault } from './components/Switch';
|
|
@@ -47,11 +50,14 @@ export type { ContactPopoverCalendarActionProps } from './components/ContactPopo
|
|
|
47
50
|
export type { ContactPopoverEmailActionProps } from './components/ContactPopover/ContactPopoverEmailAction';
|
|
48
51
|
export type { ChipProps } from './components/Chip';
|
|
49
52
|
export type { DialogProps, DialogSize } from './components/Dialog';
|
|
53
|
+
export type { EmptyProps, EmptyIconSize, EmptyComponentsProps } from './components/Empty';
|
|
50
54
|
export type { DropdownButtonProps } from './components/DropdownButton';
|
|
51
55
|
export type { DropdownTextProps, DropdownTextVariant } from './components/DropdownText';
|
|
52
56
|
export type { ListItemProps, ListItemGutters, ListItemSize } from './components/ListItem';
|
|
53
57
|
export type { ListItemButtonProps } from './components/ListItemButton';
|
|
54
58
|
export type { ListItemTextProps } from './components/ListItemText';
|
|
59
|
+
export type { ListItemSkeletonProps } from './components/ListItemSkeleton';
|
|
60
|
+
export type { ListSkeletonProps } from './components/ListSkeleton';
|
|
55
61
|
export type { ListSubheaderProps } from './components/ListSubheader';
|
|
56
62
|
export type { TabsProps } from './components/Tabs';
|
|
57
63
|
export type { SwitchProps } from './components/Switch';
|
package/dist/index.js
CHANGED
|
@@ -16,9 +16,12 @@ export { Dialog, default as DialogDefault } from './components/Dialog';
|
|
|
16
16
|
export { ContactPopover, default as ContactPopoverDefault } from './components/ContactPopover';
|
|
17
17
|
export { default as DropdownButton } from './components/DropdownButton';
|
|
18
18
|
export { default as DropdownText } from './components/DropdownText';
|
|
19
|
+
export { Empty, EmptySubTitle } from './components/Empty';
|
|
19
20
|
export { default as ListItem } from './components/ListItem';
|
|
20
21
|
export { default as ListItemButton } from './components/ListItemButton';
|
|
21
22
|
export { default as ListItemText } from './components/ListItemText';
|
|
23
|
+
export { default as ListItemSkeleton } from './components/ListItemSkeleton';
|
|
24
|
+
export { default as ListSkeleton } from './components/ListSkeleton';
|
|
22
25
|
export { default as ListSubheader } from './components/ListSubheader';
|
|
23
26
|
export { Tabs, default as TabsDefault } from './components/Tabs';
|
|
24
27
|
export { Switch, default as SwitchDefault } from './components/Switch';
|
|
@@ -68,5 +68,5 @@ export const Screenshot = {
|
|
|
68
68
|
tags: ['argos'],
|
|
69
69
|
parameters: { layout: 'padded' },
|
|
70
70
|
render: () => (React.createElement(Box, { sx: { minHeight: 440 } },
|
|
71
|
-
React.createElement(ExampleMenu, { defaultOpen: true, autoFocus: false, disablePortal: true, disableScrollLock: true
|
|
71
|
+
React.createElement(ExampleMenu, { defaultOpen: true, autoFocus: false, disablePortal: true, disableScrollLock: true })))
|
|
72
72
|
};
|