@linagora/twake-mui 1.5.0 → 1.6.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/CHANGELOG.md +21 -0
- package/README.md +54 -0
- package/dist/components/Avatar/Avatar.stories.d.ts +7 -0
- package/dist/components/Avatar/Avatar.stories.js +73 -0
- package/dist/lib/makeDarkOverrides.js +7 -47
- package/dist/lib/makeLightOverrides.js +659 -39
- package/dist/stories/Alert.stories.d.ts +7 -0
- package/dist/stories/Alert.stories.js +81 -0
- package/dist/stories/Button.stories.d.ts +7 -0
- package/dist/stories/Button.stories.js +78 -0
- package/dist/stories/Dialog.stories.d.ts +7 -0
- package/dist/stories/Dialog.stories.js +40 -0
- package/dist/stories/Input.stories.d.ts +7 -0
- package/dist/stories/Input.stories.js +41 -0
- package/dist/stories/Selection.stories.d.ts +7 -0
- package/dist/stories/Selection.stories.js +37 -0
- package/dist/stories/Typography.stories.d.ts +7 -0
- package/dist/stories/Typography.stories.js +50 -0
- package/package.json +36 -26
- package/dist/lib/overrides/accordionOverrides.d.ts +0 -2
- package/dist/lib/overrides/accordionOverrides.js +0 -63
- package/dist/lib/overrides/autocompleteOverrides.d.ts +0 -2
- package/dist/lib/overrides/autocompleteOverrides.js +0 -31
- package/dist/lib/overrides/avatarOverrides.d.ts +0 -2
- package/dist/lib/overrides/avatarOverrides.js +0 -85
- package/dist/lib/overrides/backdropOverrides.d.ts +0 -2
- package/dist/lib/overrides/backdropOverrides.js +0 -17
- package/dist/lib/overrides/buttonOverrides.d.ts +0 -2
- package/dist/lib/overrides/buttonOverrides.js +0 -86
- package/dist/lib/overrides/checkboxOverrides.d.ts +0 -2
- package/dist/lib/overrides/checkboxOverrides.js +0 -11
- package/dist/lib/overrides/datePickerOverrides.d.ts +0 -2
- package/dist/lib/overrides/datePickerOverrides.js +0 -150
- package/dist/lib/overrides/dialogOverrides.d.ts +0 -5
- package/dist/lib/overrides/dialogOverrides.js +0 -43
- package/dist/lib/overrides/iconButtonOverrides.d.ts +0 -2
- package/dist/lib/overrides/iconButtonOverrides.js +0 -13
- package/dist/lib/overrides/menuItemOverrides.d.ts +0 -2
- package/dist/lib/overrides/menuItemOverrides.js +0 -22
- package/dist/lib/overrides/popoverOverrides.d.ts +0 -2
- package/dist/lib/overrides/popoverOverrides.js +0 -11
- package/dist/lib/overrides/swipeableDrawerOverrides.d.ts +0 -2
- package/dist/lib/overrides/swipeableDrawerOverrides.js +0 -26
- package/dist/lib/overrides/textFieldOverrides.d.ts +0 -5
- package/dist/lib/overrides/textFieldOverrides.js +0 -95
- package/dist/lib/overrides/toggleButtonOverrides.d.ts +0 -3
- package/dist/lib/overrides/toggleButtonOverrides.js +0 -42
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,24 @@
|
|
|
1
|
+
## [1.6.1](https://github.com/linagora/twake-ui/compare/v1.6.0...v1.6.1) (2026-05-06)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* trigger release ([be0544c](https://github.com/linagora/twake-ui/commit/be0544c8603365348ea02b9c5af59ce4254f7fc1))
|
|
7
|
+
|
|
8
|
+
# [1.6.0](https://github.com/linagora/twake-ui/compare/v1.5.0...v1.6.0) (2026-04-22)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Bug Fixes
|
|
12
|
+
|
|
13
|
+
* ESM/CJS mismatch in exports ([bd31d2d](https://github.com/linagora/twake-ui/commit/bd31d2db3b8993da5cafe582cb350441a7d05685))
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
### Features
|
|
17
|
+
|
|
18
|
+
* Add all storybook/argos config files ([6a774a9](https://github.com/linagora/twake-ui/commit/6a774a97cedfacaa8387f3b4d5b75503efd7ae65))
|
|
19
|
+
* Add packages for storybook and argos ([729e937](https://github.com/linagora/twake-ui/commit/729e93734f0e09d639871410f0256cbba0939ad9))
|
|
20
|
+
* Add storybook stories ([9a141ca](https://github.com/linagora/twake-ui/commit/9a141ca06d2c5cfd9ec8a8142a5c5a34452cfd90))
|
|
21
|
+
|
|
1
22
|
# [1.5.0](https://github.com/linagora/twake-ui/compare/v1.4.0...v1.5.0) (2026-04-14)
|
|
2
23
|
|
|
3
24
|
|
package/README.md
CHANGED
|
@@ -70,6 +70,43 @@ This package is part of the `twake-ui` monorepo.
|
|
|
70
70
|
npm run build
|
|
71
71
|
```
|
|
72
72
|
|
|
73
|
+
### Storybook
|
|
74
|
+
|
|
75
|
+
Use Storybook for isolated component development and visual testing:
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
# Start Storybook development server
|
|
79
|
+
npm run doc
|
|
80
|
+
|
|
81
|
+
# Build static Storybook
|
|
82
|
+
npm run build:doc
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
Stories are located in:
|
|
86
|
+
- `src/components/**/*.stories.tsx` - Component stories (e.g., Avatar)
|
|
87
|
+
- `src/stories/*.stories.tsx` - Override showcase stories (Button, Input, Dialog, etc.)
|
|
88
|
+
|
|
89
|
+
Access Storybook at http://localhost:6006
|
|
90
|
+
|
|
91
|
+
### Visual Regression Testing
|
|
92
|
+
|
|
93
|
+
We use Argos for visual regression testing. Screenshots are automatically captured from Storybook stories during CI.
|
|
94
|
+
|
|
95
|
+
To run visual tests locally (requires ARGOS_TOKEN):
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
npm run build:doc
|
|
99
|
+
npm run screenshots
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
To add visual regression coverage to a story:
|
|
103
|
+
|
|
104
|
+
```typescript
|
|
105
|
+
export const MyStory = {
|
|
106
|
+
tags: ['argos']
|
|
107
|
+
}
|
|
108
|
+
```
|
|
109
|
+
|
|
73
110
|
### Local Development
|
|
74
111
|
|
|
75
112
|
To use this package locally in another project:
|
|
@@ -92,6 +129,23 @@ Or use file path in package.json:
|
|
|
92
129
|
}
|
|
93
130
|
```
|
|
94
131
|
|
|
132
|
+
### About dependencies
|
|
133
|
+
|
|
134
|
+
Because of inter-dependencies between these packages:
|
|
135
|
+
- `storybook`, `@storybook/*`
|
|
136
|
+
- `vite`, `@vitejs/*`
|
|
137
|
+
- `vitest`, `@vitest/*`
|
|
138
|
+
- `@argos-ci/*`, `playwright`
|
|
139
|
+
|
|
140
|
+
you may encounter problem to install packages. So you can:
|
|
141
|
+
|
|
142
|
+
```bash
|
|
143
|
+
rm -rf node_modules packages/twake-mui/node_modules package-lock.json
|
|
144
|
+
npm install
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
We can maybe use **pnpm** in the future that support hoisting disabling via `.npmrc`
|
|
148
|
+
|
|
95
149
|
## License
|
|
96
150
|
|
|
97
151
|
MIT
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/react-vite';
|
|
2
|
+
import { Avatar } from './index';
|
|
3
|
+
declare const meta: Meta<typeof Avatar>;
|
|
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,73 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { supportedColors } from './helpers';
|
|
3
|
+
import { Avatar } from './index';
|
|
4
|
+
const meta = {
|
|
5
|
+
title: 'Avatar',
|
|
6
|
+
component: Avatar,
|
|
7
|
+
parameters: { layout: 'centered' },
|
|
8
|
+
tags: ['autodocs'],
|
|
9
|
+
argTypes: {
|
|
10
|
+
color: {
|
|
11
|
+
control: 'select',
|
|
12
|
+
options: ['none', ...supportedColors]
|
|
13
|
+
},
|
|
14
|
+
size: {
|
|
15
|
+
control: 'select',
|
|
16
|
+
options: ['xs', 's', 'm', 'l', 'xl']
|
|
17
|
+
},
|
|
18
|
+
border: { control: 'boolean' },
|
|
19
|
+
innerBorder: { control: 'boolean' },
|
|
20
|
+
disabled: { control: 'boolean' },
|
|
21
|
+
display: {
|
|
22
|
+
control: 'select',
|
|
23
|
+
options: ['initial', 'inline']
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
export default meta;
|
|
28
|
+
export const Default = {
|
|
29
|
+
args: {
|
|
30
|
+
children: 'JD'
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
// Visual Regression - Combined view for Argos testing
|
|
34
|
+
export const Screenshot = {
|
|
35
|
+
tags: ['argos'],
|
|
36
|
+
render: () => (React.createElement("div", { style: { display: 'flex', flexDirection: 'column', gap: '32px' } },
|
|
37
|
+
React.createElement("section", null,
|
|
38
|
+
React.createElement("h3", { style: { marginBottom: '12px' } }, "Sizes"),
|
|
39
|
+
React.createElement("div", { style: { display: 'flex', gap: '16px', alignItems: 'center' } },
|
|
40
|
+
React.createElement(Avatar, { size: "xs" }, "XS"),
|
|
41
|
+
React.createElement(Avatar, { size: "s" }, "S"),
|
|
42
|
+
React.createElement(Avatar, { size: "m" }, "M"),
|
|
43
|
+
React.createElement(Avatar, { size: "l" }, "L"),
|
|
44
|
+
React.createElement(Avatar, { size: "xl" }, "XL"))),
|
|
45
|
+
React.createElement("section", null,
|
|
46
|
+
React.createElement("h3", { style: { marginBottom: '12px' } }, "Colors"),
|
|
47
|
+
React.createElement("div", { style: { display: 'flex', gap: '16px', flexWrap: 'wrap' } }, supportedColors.map(color => (React.createElement(Avatar, { key: color, color: color, size: "l" }, color.slice(0, 2).toUpperCase()))))),
|
|
48
|
+
React.createElement("section", null,
|
|
49
|
+
React.createElement("h3", { style: { marginBottom: '12px' } }, "Name-based Colors"),
|
|
50
|
+
React.createElement("div", { style: { display: 'flex', gap: '16px' } },
|
|
51
|
+
React.createElement(Avatar, { size: "l" }, "Alice"),
|
|
52
|
+
React.createElement(Avatar, { size: "l" }, "Bob"),
|
|
53
|
+
React.createElement(Avatar, { size: "l" }, "Charlie"),
|
|
54
|
+
React.createElement(Avatar, { size: "l" }, "Diana"))),
|
|
55
|
+
React.createElement("section", null,
|
|
56
|
+
React.createElement("h3", { style: { marginBottom: '12px' } }, "With Image"),
|
|
57
|
+
React.createElement("div", { style: { display: 'flex', gap: '16px' } },
|
|
58
|
+
React.createElement(Avatar, { src: "https://i.pravatar.cc/150?img=11", alt: "User 1", size: "l" }),
|
|
59
|
+
React.createElement(Avatar, { src: "https://i.pravatar.cc/150?img=12", alt: "User 2", size: "l" }),
|
|
60
|
+
React.createElement(Avatar, { src: "https://i.pravatar.cc/150?img=13", alt: "User 3", size: "l" }))),
|
|
61
|
+
React.createElement("section", null,
|
|
62
|
+
React.createElement("h3", { style: { marginBottom: '12px' } }, "Border Variants"),
|
|
63
|
+
React.createElement("div", { style: { display: 'flex', gap: '16px' } },
|
|
64
|
+
React.createElement(Avatar, { size: "l" }, "Default"),
|
|
65
|
+
React.createElement(Avatar, { size: "l", border: true }, "Border"),
|
|
66
|
+
React.createElement(Avatar, { size: "l", innerBorder: true }, "Inner"),
|
|
67
|
+
React.createElement(Avatar, { size: "l", border: true, innerBorder: true }, "Both"))),
|
|
68
|
+
React.createElement("section", null,
|
|
69
|
+
React.createElement("h3", { style: { marginBottom: '12px' } }, "Disabled State"),
|
|
70
|
+
React.createElement("div", { style: { display: 'flex', gap: '16px' } },
|
|
71
|
+
React.createElement(Avatar, { size: "l", disabled: true }, "D"),
|
|
72
|
+
React.createElement(Avatar, { size: "l", disabled: true, src: "https://i.pravatar.cc/150?img=14", alt: "Disabled" })))))
|
|
73
|
+
};
|
|
@@ -1,39 +1,8 @@
|
|
|
1
1
|
import { alpha } from '@mui/material/styles';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { avatarOverrides } from './overrides/avatarOverrides';
|
|
5
|
-
import { backdropOverrides } from './overrides/backdropOverrides';
|
|
6
|
-
import { buttonOverrides } from './overrides/buttonOverrides';
|
|
7
|
-
import { checkboxOverrides } from './overrides/checkboxOverrides';
|
|
8
|
-
import { datePickerOverrides } from './overrides/datePickerOverrides';
|
|
9
|
-
import { dialogOverrides, dialogTitleOverrides, dialogContentOverrides, dialogActionsOverrides } from './overrides/dialogOverrides';
|
|
10
|
-
import { iconButtonOverrides } from './overrides/iconButtonOverrides';
|
|
11
|
-
import { menuItemOverrides } from './overrides/menuItemOverrides';
|
|
12
|
-
import { popoverOverrides } from './overrides/popoverOverrides';
|
|
13
|
-
import { swipeableDrawerOverrides } from './overrides/swipeableDrawerOverrides';
|
|
14
|
-
import { textFieldOverrides, outlinedInputOverrides, inputBaseOverrides, selectOverrides } from './overrides/textFieldOverrides';
|
|
15
|
-
import { toggleButtonGroupOverrides, toggleButtonOverrides } from './overrides/toggleButtonOverrides';
|
|
2
|
+
import { merge } from 'lodash';
|
|
3
|
+
import { makeLightOverrides } from './makeLightOverrides';
|
|
16
4
|
export const makeDarkOverrides = (theme) => {
|
|
17
|
-
const
|
|
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),
|
|
5
|
+
const makeOverridesForDarkTheme = (theme) => ({
|
|
37
6
|
MuiTypography: {
|
|
38
7
|
styleOverrides: {
|
|
39
8
|
root: {
|
|
@@ -43,17 +12,8 @@ export const makeDarkOverrides = (theme) => {
|
|
|
43
12
|
// Typography caption overrides will be implemented later
|
|
44
13
|
}
|
|
45
14
|
}
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
MuiCssBaseline: {
|
|
51
|
-
styleOverrides: {
|
|
52
|
-
...(datePickerOverridesResult.MuiCssBaseline?.styleOverrides || {}),
|
|
53
|
-
...(accordionOverridesResult.MuiCssBaseline?.styleOverrides || {})
|
|
54
|
-
}
|
|
55
|
-
},
|
|
56
|
-
MuiMenuItem: menuItemOverrides(theme),
|
|
57
|
-
MuiSwipeableDrawer: swipeableDrawerOverrides(theme)
|
|
58
|
-
};
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
const DarkOverrides = merge(makeLightOverrides(theme), makeOverridesForDarkTheme(theme));
|
|
18
|
+
return DarkOverrides;
|
|
59
19
|
};
|