@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.
Files changed (47) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/README.md +54 -0
  3. package/dist/components/Avatar/Avatar.stories.d.ts +7 -0
  4. package/dist/components/Avatar/Avatar.stories.js +73 -0
  5. package/dist/lib/makeDarkOverrides.js +7 -47
  6. package/dist/lib/makeLightOverrides.js +659 -39
  7. package/dist/stories/Alert.stories.d.ts +7 -0
  8. package/dist/stories/Alert.stories.js +81 -0
  9. package/dist/stories/Button.stories.d.ts +7 -0
  10. package/dist/stories/Button.stories.js +78 -0
  11. package/dist/stories/Dialog.stories.d.ts +7 -0
  12. package/dist/stories/Dialog.stories.js +40 -0
  13. package/dist/stories/Input.stories.d.ts +7 -0
  14. package/dist/stories/Input.stories.js +41 -0
  15. package/dist/stories/Selection.stories.d.ts +7 -0
  16. package/dist/stories/Selection.stories.js +37 -0
  17. package/dist/stories/Typography.stories.d.ts +7 -0
  18. package/dist/stories/Typography.stories.js +50 -0
  19. package/package.json +36 -26
  20. package/dist/lib/overrides/accordionOverrides.d.ts +0 -2
  21. package/dist/lib/overrides/accordionOverrides.js +0 -63
  22. package/dist/lib/overrides/autocompleteOverrides.d.ts +0 -2
  23. package/dist/lib/overrides/autocompleteOverrides.js +0 -31
  24. package/dist/lib/overrides/avatarOverrides.d.ts +0 -2
  25. package/dist/lib/overrides/avatarOverrides.js +0 -85
  26. package/dist/lib/overrides/backdropOverrides.d.ts +0 -2
  27. package/dist/lib/overrides/backdropOverrides.js +0 -17
  28. package/dist/lib/overrides/buttonOverrides.d.ts +0 -2
  29. package/dist/lib/overrides/buttonOverrides.js +0 -86
  30. package/dist/lib/overrides/checkboxOverrides.d.ts +0 -2
  31. package/dist/lib/overrides/checkboxOverrides.js +0 -11
  32. package/dist/lib/overrides/datePickerOverrides.d.ts +0 -2
  33. package/dist/lib/overrides/datePickerOverrides.js +0 -150
  34. package/dist/lib/overrides/dialogOverrides.d.ts +0 -5
  35. package/dist/lib/overrides/dialogOverrides.js +0 -43
  36. package/dist/lib/overrides/iconButtonOverrides.d.ts +0 -2
  37. package/dist/lib/overrides/iconButtonOverrides.js +0 -13
  38. package/dist/lib/overrides/menuItemOverrides.d.ts +0 -2
  39. package/dist/lib/overrides/menuItemOverrides.js +0 -22
  40. package/dist/lib/overrides/popoverOverrides.d.ts +0 -2
  41. package/dist/lib/overrides/popoverOverrides.js +0 -11
  42. package/dist/lib/overrides/swipeableDrawerOverrides.d.ts +0 -2
  43. package/dist/lib/overrides/swipeableDrawerOverrides.js +0 -26
  44. package/dist/lib/overrides/textFieldOverrides.d.ts +0 -5
  45. package/dist/lib/overrides/textFieldOverrides.js +0 -95
  46. package/dist/lib/overrides/toggleButtonOverrides.d.ts +0 -3
  47. 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 { accordionOverrides } from './overrides/accordionOverrides';
3
- import { autocompleteOverrides } from './overrides/autocompleteOverrides';
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 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),
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
- ...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
- };
15
+ }
16
+ });
17
+ const DarkOverrides = merge(makeLightOverrides(theme), makeOverridesForDarkTheme(theme));
18
+ return DarkOverrides;
59
19
  };