@soyfri/shared-library 1.5.0 → 2.0.0-beta.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.
Files changed (283) hide show
  1. package/dist/components/ActionMenu/ActionMenu.cjs +107 -0
  2. package/dist/components/ActionMenu/ActionMenu.cjs.map +1 -0
  3. package/dist/components/ActionMenu/ActionMenu.d.ts +60 -0
  4. package/dist/components/ActionMenu/ActionMenu.js +107 -0
  5. package/dist/components/ActionMenu/ActionMenu.js.map +1 -0
  6. package/dist/components/ActionMenu/index.d.ts +2 -0
  7. package/dist/components/ActionMenu.d.ts +6 -0
  8. package/dist/components/AppBar/AppBar.cjs +346 -0
  9. package/dist/components/AppBar/AppBar.cjs.map +1 -0
  10. package/dist/components/AppBar/AppBar.d.ts +55 -0
  11. package/dist/components/AppBar/AppBar.js +346 -0
  12. package/dist/components/AppBar/AppBar.js.map +1 -0
  13. package/dist/components/AppBar/AppBar.sx.d.ts +12 -0
  14. package/dist/components/AppBar/AppBarBrand.d.ts +31 -0
  15. package/dist/components/AppBar/AppBarContext.d.ts +18 -0
  16. package/dist/components/AppBar/AppBarMenuToggle.d.ts +39 -0
  17. package/dist/components/AppBar/AppBarUserMenu.d.ts +65 -0
  18. package/dist/components/AppBar/index.d.ts +12 -0
  19. package/dist/components/AppBar.d.ts +6 -0
  20. package/dist/components/Autocomplete/Autocomplete.cjs +259 -54
  21. package/dist/components/Autocomplete/Autocomplete.cjs.map +1 -1
  22. package/dist/components/Autocomplete/Autocomplete.d.ts +64 -9
  23. package/dist/components/Autocomplete/Autocomplete.definitions.d.ts +6 -0
  24. package/dist/components/Autocomplete/Autocomplete.helpers.d.ts +18 -0
  25. package/dist/components/Autocomplete/Autocomplete.js +261 -56
  26. package/dist/components/Autocomplete/Autocomplete.js.map +1 -1
  27. package/dist/components/Autocomplete/Autocomplete.sx.d.ts +7 -0
  28. package/dist/components/Autocomplete/Autocomplete.types.d.ts +1 -0
  29. package/dist/components/Autocomplete/_parts/AutocompleteChips.d.ts +19 -0
  30. package/dist/components/Autocomplete/_parts/AutocompleteLoader.d.ts +9 -0
  31. package/dist/components/Autocomplete/_parts/AutocompleteOption.d.ts +19 -0
  32. package/dist/components/Autocomplete/index.d.ts +2 -1
  33. package/dist/components/Autocomplete.d.ts +4 -0
  34. package/dist/components/Avatar/Avatar.cjs +116 -79
  35. package/dist/components/Avatar/Avatar.cjs.map +1 -1
  36. package/dist/components/Avatar/Avatar.d.ts +16 -2
  37. package/dist/components/Avatar/Avatar.definitions.d.ts +11 -0
  38. package/dist/components/Avatar/Avatar.js +117 -80
  39. package/dist/components/Avatar/Avatar.js.map +1 -1
  40. package/dist/components/Card/Card.cjs +168 -9
  41. package/dist/components/Card/Card.cjs.map +1 -1
  42. package/dist/components/Card/Card.d.ts +78 -8
  43. package/dist/components/Card/Card.js +170 -11
  44. package/dist/components/Card/Card.js.map +1 -1
  45. package/dist/components/Card/Card.sx.d.ts +17 -0
  46. package/dist/components/Card/index.d.ts +4 -1
  47. package/dist/components/Card.d.ts +4 -0
  48. package/dist/components/DatePicker/DatePicker.cjs +201 -3
  49. package/dist/components/DatePicker/DatePicker.cjs.map +1 -1
  50. package/dist/components/DatePicker/DatePicker.d.ts +47 -9
  51. package/dist/components/DatePicker/DatePicker.definitions.d.ts +1 -0
  52. package/dist/components/DatePicker/DatePicker.helpers.d.ts +7 -0
  53. package/dist/components/DatePicker/DatePicker.js +200 -2
  54. package/dist/components/DatePicker/DatePicker.js.map +1 -1
  55. package/dist/components/DatePicker/DatePicker.sx.d.ts +9 -0
  56. package/dist/components/DatePicker/DatePicker.types.d.ts +1 -0
  57. package/dist/components/DatePicker/index.d.ts +2 -1
  58. package/dist/components/DatePicker.d.ts +4 -0
  59. package/dist/components/DateTimePicker/DateTimePicker.cjs +152 -138
  60. package/dist/components/DateTimePicker/DateTimePicker.cjs.map +1 -1
  61. package/dist/components/DateTimePicker/DateTimePicker.d.ts +46 -9
  62. package/dist/components/DateTimePicker/DateTimePicker.definitions.d.ts +1 -0
  63. package/dist/components/DateTimePicker/DateTimePicker.helpers.d.ts +11 -0
  64. package/dist/components/DateTimePicker/DateTimePicker.js +152 -138
  65. package/dist/components/DateTimePicker/DateTimePicker.js.map +1 -1
  66. package/dist/components/DateTimePicker/DateTimePicker.sx.d.ts +7 -0
  67. package/dist/components/DateTimePicker/DateTimePicker.types.d.ts +1 -0
  68. package/dist/components/DateTimePicker/index.d.ts +2 -1
  69. package/dist/components/DateTimePicker.d.ts +4 -0
  70. package/dist/components/Drawer/Drawer.cjs +271 -0
  71. package/dist/components/Drawer/Drawer.cjs.map +1 -0
  72. package/dist/components/Drawer/Drawer.d.ts +51 -0
  73. package/dist/components/Drawer/Drawer.js +271 -0
  74. package/dist/components/Drawer/Drawer.js.map +1 -0
  75. package/dist/components/Drawer/Drawer.sx.d.ts +23 -0
  76. package/dist/components/Drawer/DrawerContext.d.ts +18 -0
  77. package/dist/components/Drawer/DrawerItem.d.ts +35 -0
  78. package/dist/components/Drawer/index.d.ts +6 -0
  79. package/dist/components/Drawer.d.ts +6 -0
  80. package/dist/components/Icon/Icon.cjs +44 -3
  81. package/dist/components/Icon/Icon.cjs.map +1 -1
  82. package/dist/components/Icon/Icon.d.ts +34 -1
  83. package/dist/components/Icon/Icon.js +44 -3
  84. package/dist/components/Icon/Icon.js.map +1 -1
  85. package/dist/components/Input/Input.cjs +173 -3
  86. package/dist/components/Input/Input.cjs.map +1 -1
  87. package/dist/components/Input/Input.d.ts +20 -15
  88. package/dist/components/Input/Input.definitions.d.ts +5 -2
  89. package/dist/components/Input/Input.helpers.d.ts +14 -0
  90. package/dist/components/Input/Input.js +172 -2
  91. package/dist/components/Input/Input.js.map +1 -1
  92. package/dist/components/Input/Input.sx.d.ts +8 -0
  93. package/dist/components/Input/Input.types.d.ts +1 -0
  94. package/dist/components/Input/index.d.ts +2 -1
  95. package/dist/components/Input.d.ts +4 -0
  96. package/dist/components/InputGroup/InputGroup.cjs +104 -91
  97. package/dist/components/InputGroup/InputGroup.cjs.map +1 -1
  98. package/dist/components/InputGroup/InputGroup.d.ts +37 -1
  99. package/dist/components/InputGroup/InputGroup.definitions.d.ts +6 -0
  100. package/dist/components/InputGroup/InputGroup.js +106 -93
  101. package/dist/components/InputGroup/InputGroup.js.map +1 -1
  102. package/dist/components/Modal/Modal.cjs +226 -116
  103. package/dist/components/Modal/Modal.cjs.map +1 -1
  104. package/dist/components/Modal/Modal.d.ts +38 -2
  105. package/dist/components/Modal/Modal.js +227 -117
  106. package/dist/components/Modal/Modal.js.map +1 -1
  107. package/dist/components/Modal/ModalFooter.d.ts +9 -1
  108. package/dist/components/Modal/index.d.ts +5 -0
  109. package/dist/components/PageLoader/PageLoader.cjs +61 -0
  110. package/dist/components/PageLoader/PageLoader.cjs.map +1 -0
  111. package/dist/components/PageLoader/PageLoader.d.ts +38 -0
  112. package/dist/components/PageLoader/PageLoader.js +61 -0
  113. package/dist/components/PageLoader/PageLoader.js.map +1 -0
  114. package/dist/components/PageLoader/index.d.ts +2 -0
  115. package/dist/components/PageLoader.d.ts +6 -0
  116. package/dist/components/ScrollTopButton/ScrollTopButton.cjs +79 -0
  117. package/dist/components/ScrollTopButton/ScrollTopButton.cjs.map +1 -0
  118. package/dist/components/ScrollTopButton/ScrollTopButton.d.ts +48 -0
  119. package/dist/components/ScrollTopButton/ScrollTopButton.js +79 -0
  120. package/dist/components/ScrollTopButton/ScrollTopButton.js.map +1 -0
  121. package/dist/components/ScrollTopButton/index.d.ts +4 -0
  122. package/dist/components/ScrollTopButton/scrollToTop.d.ts +29 -0
  123. package/dist/components/ScrollTopButton.d.ts +6 -0
  124. package/dist/components/Select/Select.cjs +446 -4
  125. package/dist/components/Select/Select.cjs.map +1 -1
  126. package/dist/components/Select/Select.d.ts +33 -13
  127. package/dist/components/Select/Select.definitions.d.ts +3 -0
  128. package/dist/components/Select/Select.helpers.d.ts +28 -0
  129. package/dist/components/Select/Select.js +445 -3
  130. package/dist/components/Select/Select.js.map +1 -1
  131. package/dist/components/Select/Select.sx.d.ts +7 -0
  132. package/dist/components/Select/Select.types.d.ts +1 -0
  133. package/dist/components/Select/_parts/SelectMenuItem.d.ts +20 -0
  134. package/dist/components/Select/_parts/SelectSearchHeader.d.ts +15 -0
  135. package/dist/components/Select/_parts/SelectValue.d.ts +22 -0
  136. package/dist/components/Select/index.d.ts +2 -1
  137. package/dist/components/Select.d.ts +4 -0
  138. package/dist/components/Stat/Stat.cjs +1 -1
  139. package/dist/components/Stat/Stat.js +1 -1
  140. package/dist/components/Stepper/Stepper.cjs +4 -1
  141. package/dist/components/Stepper/Stepper.cjs.map +1 -1
  142. package/dist/components/Stepper/Stepper.d.ts +5 -0
  143. package/dist/components/Stepper/Stepper.js +4 -1
  144. package/dist/components/Stepper/Stepper.js.map +1 -1
  145. package/dist/components/_shared/formField.sx.d.ts +33 -0
  146. package/dist/components/_shared/resolvePreset.d.ts +18 -0
  147. package/dist/formField.sx-CQ1mbk9M.cjs +76 -0
  148. package/dist/formField.sx-CQ1mbk9M.cjs.map +1 -0
  149. package/dist/formField.sx-DfVbMe0V.js +77 -0
  150. package/dist/formField.sx-DfVbMe0V.js.map +1 -0
  151. package/dist/hooks/Wizard/Wizard.cjs +7 -0
  152. package/dist/hooks/Wizard/Wizard.cjs.map +1 -0
  153. package/dist/hooks/Wizard/Wizard.js +7 -0
  154. package/dist/hooks/Wizard/Wizard.js.map +1 -0
  155. package/dist/hooks/Wizard/WizardContext.d.ts +67 -0
  156. package/dist/hooks/Wizard/index.d.ts +3 -0
  157. package/dist/hooks/Wizard/useWizard.d.ts +9 -0
  158. package/dist/hooks/Wizard.d.ts +2 -0
  159. package/dist/index.cjs +99 -1
  160. package/dist/index.cjs.map +1 -1
  161. package/dist/index.d.ts +3 -0
  162. package/dist/index.js +31 -2
  163. package/dist/index.js.map +1 -1
  164. package/dist/mui.d.ts +5 -0
  165. package/dist/resolvePreset-B-IB0ehH.js +15 -0
  166. package/dist/resolvePreset-B-IB0ehH.js.map +1 -0
  167. package/dist/resolvePreset-CT3kU-K2.cjs +14 -0
  168. package/dist/resolvePreset-CT3kU-K2.cjs.map +1 -0
  169. package/dist/styles.css +3 -112
  170. package/dist/theme/componentStyles.d.ts +32 -0
  171. package/dist/theme/tokens.d.ts +28 -0
  172. package/dist/useWizard-CWdIxZzX.cjs +94 -0
  173. package/dist/useWizard-CWdIxZzX.cjs.map +1 -0
  174. package/dist/useWizard-CWq--C3o.js +95 -0
  175. package/dist/useWizard-CWq--C3o.js.map +1 -0
  176. package/package.json +1 -1
  177. package/src/components/ActionMenu/ActionMenu.stories.tsx +230 -0
  178. package/src/components/ActionMenu/ActionMenu.tsx +174 -0
  179. package/src/components/ActionMenu/index.ts +2 -0
  180. package/src/components/AppBar/AppBar.stories.tsx +272 -0
  181. package/src/components/AppBar/AppBar.sx.ts +32 -0
  182. package/src/components/AppBar/AppBar.tsx +123 -0
  183. package/src/components/AppBar/AppBarBrand.tsx +120 -0
  184. package/src/components/AppBar/AppBarContext.ts +25 -0
  185. package/src/components/AppBar/AppBarMenuToggle.tsx +90 -0
  186. package/src/components/AppBar/AppBarUserMenu.tsx +217 -0
  187. package/src/components/AppBar/index.ts +25 -0
  188. package/src/components/Autocomplete/Autocomplete.definitions.ts +223 -0
  189. package/src/components/Autocomplete/Autocomplete.helpers.ts +60 -0
  190. package/src/components/Autocomplete/Autocomplete.stories.tsx +363 -2
  191. package/src/components/Autocomplete/Autocomplete.sx.ts +30 -0
  192. package/src/components/Autocomplete/Autocomplete.tsx +312 -90
  193. package/src/components/Autocomplete/Autocomplete.types.ts +13 -0
  194. package/src/components/Autocomplete/_parts/AutocompleteChips.tsx +55 -0
  195. package/src/components/Autocomplete/_parts/AutocompleteLoader.tsx +17 -0
  196. package/src/components/Autocomplete/_parts/AutocompleteOption.tsx +31 -0
  197. package/src/components/Autocomplete/index.ts +12 -1
  198. package/src/components/Avatar/Avatar.definitions.ts +162 -0
  199. package/src/components/Avatar/Avatar.stories.tsx +205 -1
  200. package/src/components/Avatar/Avatar.tsx +166 -103
  201. package/src/components/Card/Card.stories.tsx +205 -16
  202. package/src/components/Card/Card.sx.ts +104 -0
  203. package/src/components/Card/Card.tsx +191 -35
  204. package/src/components/Card/index.ts +9 -1
  205. package/src/components/DatePicker/DatePicker.definitions.ts +24 -1
  206. package/src/components/DatePicker/DatePicker.helpers.ts +24 -0
  207. package/src/components/DatePicker/DatePicker.stories.tsx +29 -2
  208. package/src/components/DatePicker/DatePicker.sx.ts +33 -0
  209. package/src/components/DatePicker/DatePicker.tsx +163 -139
  210. package/src/components/DatePicker/DatePicker.types.ts +10 -0
  211. package/src/components/DatePicker/index.ts +9 -1
  212. package/src/components/DateTimePicker/DateTimePicker.definitions.ts +24 -0
  213. package/src/components/DateTimePicker/DateTimePicker.helpers.ts +38 -0
  214. package/src/components/DateTimePicker/DateTimePicker.stories.tsx +29 -1
  215. package/src/components/DateTimePicker/DateTimePicker.sx.ts +30 -0
  216. package/src/components/DateTimePicker/DateTimePicker.tsx +200 -166
  217. package/src/components/DateTimePicker/DateTimePicker.types.ts +10 -0
  218. package/src/components/DateTimePicker/index.ts +9 -1
  219. package/src/components/Drawer/Drawer.stories.tsx +270 -0
  220. package/src/components/Drawer/Drawer.sx.ts +106 -0
  221. package/src/components/Drawer/Drawer.tsx +214 -0
  222. package/src/components/Drawer/DrawerContext.ts +26 -0
  223. package/src/components/Drawer/DrawerItem.tsx +110 -0
  224. package/src/components/Drawer/index.ts +10 -0
  225. package/src/components/Flyout/Flyout.stories.tsx +26 -18
  226. package/src/components/Icon/Icon.stories.tsx +68 -1
  227. package/src/components/Icon/Icon.tsx +87 -6
  228. package/src/components/Input/Input.definitions.ts +74 -2
  229. package/src/components/Input/Input.helpers.ts +49 -0
  230. package/src/components/Input/Input.stories.tsx +116 -4
  231. package/src/components/Input/Input.sx.ts +42 -0
  232. package/src/components/Input/Input.tsx +117 -162
  233. package/src/components/Input/Input.types.ts +10 -0
  234. package/src/components/Input/index.ts +9 -1
  235. package/src/components/InputGroup/InputGroup.definitions.ts +158 -0
  236. package/src/components/InputGroup/InputGroup.stories.tsx +159 -28
  237. package/src/components/InputGroup/InputGroup.tsx +159 -116
  238. package/src/components/Modal/Modal.stories.tsx +434 -6
  239. package/src/components/Modal/Modal.tsx +303 -121
  240. package/src/components/Modal/ModalFooter.tsx +22 -12
  241. package/src/components/Modal/index.ts +6 -1
  242. package/src/components/PageLoader/PageLoader.stories.tsx +217 -0
  243. package/src/components/PageLoader/PageLoader.tsx +96 -0
  244. package/src/components/PageLoader/index.ts +2 -0
  245. package/src/components/ScrollTopButton/ScrollTopButton.stories.tsx +158 -0
  246. package/src/components/ScrollTopButton/ScrollTopButton.tsx +135 -0
  247. package/src/components/ScrollTopButton/index.ts +8 -0
  248. package/src/components/ScrollTopButton/scrollToTop.ts +37 -0
  249. package/src/components/Select/Select.definitions.ts +114 -0
  250. package/src/components/Select/Select.helpers.ts +71 -0
  251. package/src/components/Select/Select.stories.tsx +126 -8
  252. package/src/components/Select/Select.sx.ts +14 -0
  253. package/src/components/Select/Select.tsx +246 -285
  254. package/src/components/Select/Select.types.ts +15 -0
  255. package/src/components/Select/_parts/SelectMenuItem.tsx +40 -0
  256. package/src/components/Select/_parts/SelectSearchHeader.tsx +51 -0
  257. package/src/components/Select/_parts/SelectValue.tsx +96 -0
  258. package/src/components/Select/index.ts +14 -1
  259. package/src/components/Stepper/Stepper.tsx +17 -1
  260. package/src/components/Tooltip/Tooltip.stories.tsx +15 -3
  261. package/src/components/_shared/formField.sx.ts +118 -0
  262. package/src/components/_shared/resolvePreset.ts +35 -0
  263. package/src/hooks/Wizard/Wizard.stories.tsx +301 -0
  264. package/src/hooks/Wizard/WizardContext.tsx +166 -0
  265. package/src/hooks/Wizard/index.ts +6 -0
  266. package/src/hooks/Wizard/useWizard.ts +13 -0
  267. package/src/index.ts +17 -1
  268. package/src/mui.ts +44 -0
  269. package/src/theme/componentStyles.ts +47 -0
  270. package/src/theme/tokens.ts +43 -0
  271. package/dist/DatePicker-BSNboVhN.js +0 -201
  272. package/dist/DatePicker-BSNboVhN.js.map +0 -1
  273. package/dist/DatePicker-BoqxWAhj.cjs +0 -200
  274. package/dist/DatePicker-BoqxWAhj.cjs.map +0 -1
  275. package/dist/Input-DFHs7cJ_.js +0 -171
  276. package/dist/Input-DFHs7cJ_.js.map +0 -1
  277. package/dist/Input-c8MwNNPg.cjs +0 -170
  278. package/dist/Input-c8MwNNPg.cjs.map +0 -1
  279. package/dist/Select-BO2N56sm.cjs +0 -411
  280. package/dist/Select-BO2N56sm.cjs.map +0 -1
  281. package/dist/Select-BcLkyHSE.js +0 -412
  282. package/dist/Select-BcLkyHSE.js.map +0 -1
  283. package/dist/index.css +0 -3
@@ -0,0 +1,162 @@
1
+ export const DefaultAvatarDefinition = `
2
+ import { Avatar } from './Avatar';
3
+
4
+ export const DefaultAvatarExample = () => (
5
+ <Avatar
6
+ items={[
7
+ { text: 'User One', imageUrl: 'https://i.pravatar.cc/150?img=1' },
8
+ { text: 'User Two', imageUrl: 'https://i.pravatar.cc/150?img=2' },
9
+ ]}
10
+ />
11
+ );
12
+ `;
13
+
14
+ export const WithTypeAndTextDefinition = `
15
+ import { Avatar } from './Avatar';
16
+
17
+ export const WithTypeAndTextExample = () => (
18
+ <Avatar
19
+ type="Owner"
20
+ items={[{ text: 'Maria', imageUrl: 'https://i.pravatar.cc/150?img=5' }]}
21
+ showText
22
+ />
23
+ );
24
+ `;
25
+
26
+ export const WithBadgesAndTooltipDefinition = `
27
+ import { Avatar } from './Avatar';
28
+
29
+ export const WithBadgesAndTooltipExample = () => (
30
+ <Avatar
31
+ showTooltip
32
+ items={[
33
+ { text: 'John D.', badge: 'JD', backgroundColor: '#EF5350', color: '#fff' },
34
+ { text: 'Alice B.', badge: 'AB', backgroundColor: '#AB47BC', color: '#fff' },
35
+ ]}
36
+ />
37
+ );
38
+ `;
39
+
40
+ export const SizeSmallDefinition = `
41
+ import { Avatar } from './Avatar';
42
+
43
+ export const SizeSmallExample = () => (
44
+ <Avatar
45
+ size="sm"
46
+ items={[
47
+ { text: 'User One', imageUrl: 'https://i.pravatar.cc/150?img=11' },
48
+ { text: 'User Two', imageUrl: 'https://i.pravatar.cc/150?img=12' },
49
+ { text: 'User Three', imageUrl: 'https://i.pravatar.cc/150?img=13' },
50
+ ]}
51
+ />
52
+ );
53
+ `;
54
+
55
+ export const SizeMediumDefinition = `
56
+ import { Avatar } from './Avatar';
57
+
58
+ export const SizeMediumExample = () => (
59
+ <Avatar
60
+ size="md"
61
+ items={[
62
+ { text: 'User One', imageUrl: 'https://i.pravatar.cc/150?img=21' },
63
+ { text: 'User Two', imageUrl: 'https://i.pravatar.cc/150?img=22' },
64
+ { text: 'User Three', imageUrl: 'https://i.pravatar.cc/150?img=23' },
65
+ ]}
66
+ />
67
+ );
68
+ `;
69
+
70
+ export const SizeLargeDefinition = `
71
+ import { Avatar } from './Avatar';
72
+
73
+ export const SizeLargeExample = () => (
74
+ <Avatar
75
+ size="lg"
76
+ items={[
77
+ { text: 'User One', imageUrl: 'https://i.pravatar.cc/150?img=31' },
78
+ { text: 'User Two', imageUrl: 'https://i.pravatar.cc/150?img=32' },
79
+ ]}
80
+ />
81
+ );
82
+ `;
83
+
84
+ export const SizeExtraLargeDefinition = `
85
+ import { Avatar } from './Avatar';
86
+
87
+ export const SizeExtraLargeExample = () => (
88
+ <Avatar
89
+ size="xl"
90
+ items={[{ text: 'Maria', imageUrl: 'https://i.pravatar.cc/150?img=5' }]}
91
+ showText={false}
92
+ />
93
+ );
94
+ `;
95
+
96
+ export const NumericSizeDefinition = `
97
+ import { Avatar } from './Avatar';
98
+
99
+ export const NumericSizeExample = () => (
100
+ <Avatar
101
+ size={72}
102
+ items={[
103
+ { text: 'User One', imageUrl: 'https://i.pravatar.cc/150?img=41' },
104
+ { text: 'User Two', imageUrl: 'https://i.pravatar.cc/150?img=42' },
105
+ ]}
106
+ showText={false}
107
+ />
108
+ );
109
+ `;
110
+
111
+ export const FallbackIconDefinition = `
112
+ import { Avatar } from './Avatar';
113
+
114
+ export const FallbackIconExample = () => (
115
+ <Avatar
116
+ items={[
117
+ { text: 'Without image' },
118
+ { text: 'Broken image', imageUrl: 'https://example.invalid/broken.png' },
119
+ ]}
120
+ showTooltip
121
+ />
122
+ );
123
+ `;
124
+
125
+ export const DisplayedAvatarsLimitDefinition = `
126
+ import { Avatar } from './Avatar';
127
+
128
+ export const DisplayedAvatarsLimitExample = () => (
129
+ <Avatar
130
+ displayedAvatars={3}
131
+ items={[
132
+ { text: 'User 1', imageUrl: 'https://i.pravatar.cc/150?img=51' },
133
+ { text: 'User 2', imageUrl: 'https://i.pravatar.cc/150?img=52' },
134
+ { text: 'User 3', imageUrl: 'https://i.pravatar.cc/150?img=53' },
135
+ { text: 'User 4', imageUrl: 'https://i.pravatar.cc/150?img=54' },
136
+ { text: 'User 5', imageUrl: 'https://i.pravatar.cc/150?img=55' },
137
+ ]}
138
+ />
139
+ );
140
+ `;
141
+
142
+ export const CustomStylingDefinition = `
143
+ import { Avatar } from './Avatar';
144
+
145
+ export const CustomStylingExample = () => (
146
+ <Avatar
147
+ size="md"
148
+ items={[
149
+ { text: 'User One', imageUrl: 'https://i.pravatar.cc/150?img=61' },
150
+ { text: 'User Two', imageUrl: 'https://i.pravatar.cc/150?img=62' },
151
+ ]}
152
+ sx={{
153
+ p: 1,
154
+ borderRadius: 2,
155
+ bgcolor: 'action.hover',
156
+ }}
157
+ avatarSx={{
158
+ border: (theme) => '3px solid ' + theme.palette.primary.main,
159
+ }}
160
+ />
161
+ );
162
+ `;
@@ -1,14 +1,72 @@
1
1
  import type { Meta, StoryObj } from '@storybook/react-vite';
2
- import { Avatar, AvatarProps } from './Avatar';
3
2
  import { within, expect } from 'storybook/test';
3
+ import { Avatar } from './Avatar';
4
+ import {
5
+ DefaultAvatarDefinition,
6
+ WithTypeAndTextDefinition,
7
+ WithBadgesAndTooltipDefinition,
8
+ SizeSmallDefinition,
9
+ SizeMediumDefinition,
10
+ SizeLargeDefinition,
11
+ SizeExtraLargeDefinition,
12
+ NumericSizeDefinition,
13
+ FallbackIconDefinition,
14
+ DisplayedAvatarsLimitDefinition,
15
+ CustomStylingDefinition,
16
+ } from './Avatar.definitions';
4
17
 
5
18
  const meta: Meta<typeof Avatar> = {
6
19
  title: 'Components/Avatar',
7
20
  component: Avatar,
8
21
  parameters: {
9
22
  layout: 'centered',
23
+ docs: {
24
+ description: {
25
+ component:
26
+ 'Avatar basado en MUI Avatar con soporte para stacking, tooltips, fallback a icono/badge y passthrough de sx. Admite imagen, texto y badge por cada item.',
27
+ },
28
+ },
10
29
  },
11
30
  tags: ['autodocs'],
31
+ argTypes: {
32
+ items: {
33
+ control: 'object',
34
+ description: 'Array de `AvatarItem` (text/imageUrl/badge/color/backgroundColor).',
35
+ },
36
+ type: {
37
+ control: 'text',
38
+ description: 'Etiqueta que antecede al texto cuando hay un único item (ej. "Owner: Maria").',
39
+ },
40
+ displayedAvatars: {
41
+ control: 'number',
42
+ description: 'Número máximo de avatares visibles. El resto se contabiliza como `+N`.',
43
+ },
44
+ size: {
45
+ control: 'select',
46
+ options: ['sm', 'md', 'lg', 'xl'],
47
+ description: 'Tamaño del avatar. Acepta presets (`sm | md | lg | xl`) o un número libre en px.',
48
+ },
49
+ showText: {
50
+ control: 'boolean',
51
+ description: 'Muestra el texto al lado del avatar.',
52
+ },
53
+ showTooltip: {
54
+ control: 'boolean',
55
+ description: 'Muestra el tooltip con `item.text` al hover.',
56
+ },
57
+ overlap: {
58
+ control: 'number',
59
+ description: 'Overlap en px entre avatares cuando hay varios (override del default por tamaño).',
60
+ },
61
+ sx: {
62
+ control: false,
63
+ description: 'sx del contenedor raíz. Se mergea sobre los defaults.',
64
+ },
65
+ avatarSx: {
66
+ control: false,
67
+ description: 'sx aplicado a cada MuiAvatar individual (borde, colores, etc).',
68
+ },
69
+ },
12
70
  };
13
71
 
14
72
  export default meta;
@@ -21,6 +79,9 @@ export const Default: Story = {
21
79
  { text: 'User Two', imageUrl: 'https://i.pravatar.cc/150?img=2' },
22
80
  ],
23
81
  },
82
+ parameters: {
83
+ docs: { source: { code: DefaultAvatarDefinition.trim() } },
84
+ },
24
85
  };
25
86
 
26
87
  export const WithTypeAndText: Story = {
@@ -36,6 +97,9 @@ export const WithTypeAndText: Story = {
36
97
  expect(text).toBeInTheDocument();
37
98
  expect(type).toHaveTextContent('Owner:');
38
99
  },
100
+ parameters: {
101
+ docs: { source: { code: WithTypeAndTextDefinition.trim() } },
102
+ },
39
103
  };
40
104
 
41
105
  export const WithBadgesAndTooltip: Story = {
@@ -51,4 +115,144 @@ export const WithBadgesAndTooltip: Story = {
51
115
  const badges = await canvas.findAllByTestId('badge');
52
116
  expect(badges.length).toBe(2);
53
117
  },
118
+ parameters: {
119
+ docs: { source: { code: WithBadgesAndTooltipDefinition.trim() } },
120
+ },
121
+ };
122
+
123
+ export const SizeSmall: Story = {
124
+ args: {
125
+ size: 'sm',
126
+ items: [
127
+ { text: 'User One', imageUrl: 'https://i.pravatar.cc/150?img=11' },
128
+ { text: 'User Two', imageUrl: 'https://i.pravatar.cc/150?img=12' },
129
+ { text: 'User Three', imageUrl: 'https://i.pravatar.cc/150?img=13' },
130
+ ],
131
+ },
132
+ parameters: {
133
+ docs: { source: { code: SizeSmallDefinition.trim() } },
134
+ },
135
+ };
136
+
137
+ export const SizeMedium: Story = {
138
+ args: {
139
+ size: 'md',
140
+ items: [
141
+ { text: 'User One', imageUrl: 'https://i.pravatar.cc/150?img=21' },
142
+ { text: 'User Two', imageUrl: 'https://i.pravatar.cc/150?img=22' },
143
+ { text: 'User Three', imageUrl: 'https://i.pravatar.cc/150?img=23' },
144
+ ],
145
+ },
146
+ parameters: {
147
+ docs: { source: { code: SizeMediumDefinition.trim() } },
148
+ },
149
+ };
150
+
151
+ export const SizeLarge: Story = {
152
+ args: {
153
+ size: 'lg',
154
+ items: [
155
+ { text: 'User One', imageUrl: 'https://i.pravatar.cc/150?img=31' },
156
+ { text: 'User Two', imageUrl: 'https://i.pravatar.cc/150?img=32' },
157
+ ],
158
+ },
159
+ parameters: {
160
+ docs: { source: { code: SizeLargeDefinition.trim() } },
161
+ },
162
+ };
163
+
164
+ export const SizeExtraLarge: Story = {
165
+ args: {
166
+ size: 'xl',
167
+ items: [{ text: 'Maria', imageUrl: 'https://i.pravatar.cc/150?img=5' }],
168
+ showText: false,
169
+ },
170
+ parameters: {
171
+ docs: { source: { code: SizeExtraLargeDefinition.trim() } },
172
+ },
173
+ };
174
+
175
+ export const NumericSize: Story = {
176
+ args: {
177
+ size: 72,
178
+ items: [
179
+ { text: 'User One', imageUrl: 'https://i.pravatar.cc/150?img=41' },
180
+ { text: 'User Two', imageUrl: 'https://i.pravatar.cc/150?img=42' },
181
+ ],
182
+ showText: false,
183
+ },
184
+ parameters: {
185
+ docs: {
186
+ description: {
187
+ story: 'Pasando un número en `size` se calcula automáticamente el borde, font-size y overlap proporcional.',
188
+ },
189
+ source: { code: NumericSizeDefinition.trim() },
190
+ },
191
+ },
192
+ };
193
+
194
+ export const FallbackIcon: Story = {
195
+ args: {
196
+ showTooltip: true,
197
+ items: [
198
+ { text: 'Without image' },
199
+ { text: 'Broken image', imageUrl: 'https://example.invalid/broken.png' },
200
+ ],
201
+ },
202
+ parameters: {
203
+ docs: {
204
+ description: {
205
+ story: 'Cuando no hay imagen (o falla la carga) y no hay badge, cae al icono `AccountCircle`.',
206
+ },
207
+ source: { code: FallbackIconDefinition.trim() },
208
+ },
209
+ },
210
+ };
211
+
212
+ export const DisplayedAvatarsLimit: Story = {
213
+ args: {
214
+ displayedAvatars: 3,
215
+ items: [
216
+ { text: 'User 1', imageUrl: 'https://i.pravatar.cc/150?img=51' },
217
+ { text: 'User 2', imageUrl: 'https://i.pravatar.cc/150?img=52' },
218
+ { text: 'User 3', imageUrl: 'https://i.pravatar.cc/150?img=53' },
219
+ { text: 'User 4', imageUrl: 'https://i.pravatar.cc/150?img=54' },
220
+ { text: 'User 5', imageUrl: 'https://i.pravatar.cc/150?img=55' },
221
+ ],
222
+ },
223
+ parameters: {
224
+ docs: {
225
+ description: {
226
+ story: 'Solo se renderizan `displayedAvatars` avatares; el resto se cuenta en el `+N` del texto.',
227
+ },
228
+ source: { code: DisplayedAvatarsLimitDefinition.trim() },
229
+ },
230
+ },
231
+ };
232
+
233
+ export const CustomStyling: Story = {
234
+ args: {
235
+ size: 'md',
236
+ items: [
237
+ { text: 'User One', imageUrl: 'https://i.pravatar.cc/150?img=61' },
238
+ { text: 'User Two', imageUrl: 'https://i.pravatar.cc/150?img=62' },
239
+ ],
240
+ sx: {
241
+ p: 1,
242
+ borderRadius: 2,
243
+ bgcolor: 'action.hover',
244
+ },
245
+ avatarSx: {
246
+ border: (theme) => `3px solid ${theme.palette.primary.main}`,
247
+ },
248
+ },
249
+ parameters: {
250
+ docs: {
251
+ description: {
252
+ story:
253
+ 'Demo del passthrough de `sx` (contenedor) y `avatarSx` (cada avatar). El consumidor puede overridear bordes, colores y el layout del wrapper sin tocar el componente.',
254
+ },
255
+ source: { code: CustomStylingDefinition.trim() },
256
+ },
257
+ },
54
258
  };