@soyfri/shared-library 2.0.0-beta.4 → 2.0.0-beta.6

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 (490) hide show
  1. package/{dist/components → components}/Drawer/Drawer.cjs +14 -17
  2. package/components/Drawer/Drawer.cjs.map +1 -0
  3. package/{dist/components → components}/Drawer/Drawer.d.ts +8 -1
  4. package/{dist/components → components}/Drawer/Drawer.js +14 -17
  5. package/components/Drawer/Drawer.js.map +1 -0
  6. package/package.json +164 -43
  7. package/.dockerignore +0 -8
  8. package/.github/workflows/publish.yml +0 -107
  9. package/.prettierrc +0 -3
  10. package/.storybook/main.ts +0 -19
  11. package/.storybook/preview.ts +0 -14
  12. package/.storybook/vitest.setup.ts +0 -9
  13. package/Dockerfile +0 -37
  14. package/Readme.md +0 -243
  15. package/build.js +0 -102
  16. package/chromatic.config.json +0 -5
  17. package/cleanDirectories.js +0 -40
  18. package/dist/components/Drawer/Drawer.cjs.map +0 -1
  19. package/dist/components/Drawer/Drawer.js.map +0 -1
  20. package/dist/package.json +0 -197
  21. package/rollup.config.cjs +0 -87
  22. package/src/components/ActionMenu/ActionMenu.stories.tsx +0 -230
  23. package/src/components/ActionMenu/ActionMenu.tsx +0 -174
  24. package/src/components/ActionMenu/index.ts +0 -2
  25. package/src/components/AppBar/AppBar.stories.tsx +0 -272
  26. package/src/components/AppBar/AppBar.sx.ts +0 -32
  27. package/src/components/AppBar/AppBar.tsx +0 -123
  28. package/src/components/AppBar/AppBarBrand.tsx +0 -120
  29. package/src/components/AppBar/AppBarContext.ts +0 -25
  30. package/src/components/AppBar/AppBarMenuToggle.tsx +0 -90
  31. package/src/components/AppBar/AppBarUserMenu.tsx +0 -217
  32. package/src/components/AppBar/index.ts +0 -25
  33. package/src/components/Autocomplete/Autocomplete.definitions.ts +0 -477
  34. package/src/components/Autocomplete/Autocomplete.helpers.ts +0 -60
  35. package/src/components/Autocomplete/Autocomplete.stories.tsx +0 -748
  36. package/src/components/Autocomplete/Autocomplete.sx.ts +0 -30
  37. package/src/components/Autocomplete/Autocomplete.tsx +0 -361
  38. package/src/components/Autocomplete/Autocomplete.types.ts +0 -13
  39. package/src/components/Autocomplete/_parts/AutocompleteChips.tsx +0 -55
  40. package/src/components/Autocomplete/_parts/AutocompleteLoader.tsx +0 -17
  41. package/src/components/Autocomplete/_parts/AutocompleteOption.tsx +0 -31
  42. package/src/components/Autocomplete/index.ts +0 -12
  43. package/src/components/Avatar/Avatar.definitions.ts +0 -162
  44. package/src/components/Avatar/Avatar.stories.tsx +0 -258
  45. package/src/components/Avatar/Avatar.tsx +0 -206
  46. package/src/components/Avatar/index.ts +0 -1
  47. package/src/components/Button/Button.definition.ts +0 -97
  48. package/src/components/Button/Button.stories.tsx +0 -285
  49. package/src/components/Button/Button.tsx +0 -67
  50. package/src/components/Button/index.ts +0 -1
  51. package/src/components/Card/Card.definition.ts +0 -5
  52. package/src/components/Card/Card.stories.tsx +0 -221
  53. package/src/components/Card/Card.sx.ts +0 -104
  54. package/src/components/Card/Card.tsx +0 -200
  55. package/src/components/Card/index.ts +0 -9
  56. package/src/components/Chip/Chip.definitions.ts +0 -167
  57. package/src/components/Chip/Chip.stories.tsx +0 -265
  58. package/src/components/Chip/Chip.tsx +0 -61
  59. package/src/components/Chip/index.ts +0 -1
  60. package/src/components/Column/Column.tsx +0 -29
  61. package/src/components/Column/index.ts +0 -1
  62. package/src/components/DatePicker/DatePicker.definitions.ts +0 -228
  63. package/src/components/DatePicker/DatePicker.helpers.ts +0 -24
  64. package/src/components/DatePicker/DatePicker.stories.tsx +0 -309
  65. package/src/components/DatePicker/DatePicker.sx.ts +0 -33
  66. package/src/components/DatePicker/DatePicker.tsx +0 -189
  67. package/src/components/DatePicker/DatePicker.types.ts +0 -10
  68. package/src/components/DatePicker/index.ts +0 -9
  69. package/src/components/DateRangePicker/DateRangePicker.definitions.ts +0 -191
  70. package/src/components/DateRangePicker/DateRangePicker.stories.tsx +0 -252
  71. package/src/components/DateRangePicker/DateRangePicker.tsx +0 -56
  72. package/src/components/DateRangePicker/index.ts +0 -1
  73. package/src/components/DateTimePicker/DateTimePicker.definitions.ts +0 -256
  74. package/src/components/DateTimePicker/DateTimePicker.helpers.ts +0 -38
  75. package/src/components/DateTimePicker/DateTimePicker.stories.tsx +0 -418
  76. package/src/components/DateTimePicker/DateTimePicker.sx.ts +0 -30
  77. package/src/components/DateTimePicker/DateTimePicker.tsx +0 -225
  78. package/src/components/DateTimePicker/DateTimePicker.types.ts +0 -10
  79. package/src/components/DateTimePicker/index.ts +0 -9
  80. package/src/components/Drawer/Drawer.stories.tsx +0 -270
  81. package/src/components/Drawer/Drawer.sx.ts +0 -106
  82. package/src/components/Drawer/Drawer.tsx +0 -214
  83. package/src/components/Drawer/DrawerContext.ts +0 -26
  84. package/src/components/Drawer/DrawerItem.tsx +0 -110
  85. package/src/components/Drawer/index.ts +0 -10
  86. package/src/components/Flyout/Flyout.stories.tsx +0 -282
  87. package/src/components/Flyout/Flyout.tsx +0 -122
  88. package/src/components/Flyout/index.ts +0 -1
  89. package/src/components/Gallery/Gallery.definition.tsx +0 -37
  90. package/src/components/Gallery/Gallery.stories.tsx +0 -82
  91. package/src/components/Gallery/Gallery.tsx +0 -118
  92. package/src/components/Gallery/GalleryLightbox.tsx +0 -170
  93. package/src/components/Gallery/GalleryMain.tsx +0 -84
  94. package/src/components/Gallery/GalleryThumbnails.tsx +0 -106
  95. package/src/components/Gallery/index.ts +0 -1
  96. package/src/components/Icon/Icon.stories.tsx +0 -121
  97. package/src/components/Icon/Icon.tsx +0 -175
  98. package/src/components/Icon/index.ts +0 -2
  99. package/src/components/Input/Input.definitions.ts +0 -324
  100. package/src/components/Input/Input.helpers.ts +0 -49
  101. package/src/components/Input/Input.stories.tsx +0 -499
  102. package/src/components/Input/Input.sx.ts +0 -42
  103. package/src/components/Input/Input.tsx +0 -141
  104. package/src/components/Input/Input.types.ts +0 -10
  105. package/src/components/Input/index.ts +0 -9
  106. package/src/components/InputGroup/InputGroup.definitions.ts +0 -158
  107. package/src/components/InputGroup/InputGroup.stories.tsx +0 -267
  108. package/src/components/InputGroup/InputGroup.tsx +0 -179
  109. package/src/components/InputGroup/index.ts +0 -1
  110. package/src/components/MenuButton/MenuButton.stories.tsx +0 -197
  111. package/src/components/MenuButton/MenuButton.tsx +0 -100
  112. package/src/components/MenuButton/index.ts +0 -1
  113. package/src/components/Modal/Modal.stories.tsx +0 -721
  114. package/src/components/Modal/Modal.tsx +0 -355
  115. package/src/components/Modal/ModalBody.tsx +0 -16
  116. package/src/components/Modal/ModalFooter.tsx +0 -71
  117. package/src/components/Modal/ModalHeader.tsx +0 -18
  118. package/src/components/Modal/index.ts +0 -6
  119. package/src/components/PageLoader/PageLoader.stories.tsx +0 -217
  120. package/src/components/PageLoader/PageLoader.tsx +0 -96
  121. package/src/components/PageLoader/index.ts +0 -2
  122. package/src/components/ScrollTopButton/ScrollTopButton.stories.tsx +0 -158
  123. package/src/components/ScrollTopButton/ScrollTopButton.tsx +0 -135
  124. package/src/components/ScrollTopButton/index.ts +0 -8
  125. package/src/components/ScrollTopButton/scrollToTop.ts +0 -37
  126. package/src/components/Select/Select.definitions.ts +0 -602
  127. package/src/components/Select/Select.helpers.ts +0 -71
  128. package/src/components/Select/Select.stories.tsx +0 -687
  129. package/src/components/Select/Select.sx.ts +0 -14
  130. package/src/components/Select/Select.tsx +0 -429
  131. package/src/components/Select/Select.types.ts +0 -15
  132. package/src/components/Select/_parts/SelectMenuItem.tsx +0 -40
  133. package/src/components/Select/_parts/SelectSearchHeader.tsx +0 -51
  134. package/src/components/Select/_parts/SelectValue.tsx +0 -96
  135. package/src/components/Select/index.ts +0 -14
  136. package/src/components/Stat/Stat.stories.tsx +0 -85
  137. package/src/components/Stat/Stat.tsx +0 -117
  138. package/src/components/Stat/index.ts +0 -2
  139. package/src/components/StatusMessage/StatusMessage.stories.tsx +0 -130
  140. package/src/components/StatusMessage/StatusMessage.tsx +0 -162
  141. package/src/components/StatusMessage/index.ts +0 -2
  142. package/src/components/Stepper/Step.tsx +0 -21
  143. package/src/components/Stepper/Stepper.definition.ts +0 -75
  144. package/src/components/Stepper/Stepper.stories.tsx +0 -122
  145. package/src/components/Stepper/Stepper.tsx +0 -75
  146. package/src/components/Stepper/index.ts +0 -2
  147. package/src/components/Table/EmptyTable.png +0 -0
  148. package/src/components/Table/Table.definition.ts +0 -580
  149. package/src/components/Table/Table.stories.tsx +0 -853
  150. package/src/components/Table/Table.tsx +0 -495
  151. package/src/components/Table/data.ts +0 -134
  152. package/src/components/Table/exportsUtils.ts +0 -195
  153. package/src/components/Table/index.ts +0 -3
  154. package/src/components/Table/types.ts +0 -34
  155. package/src/components/Tabs/Tab.definition.ts +0 -53
  156. package/src/components/Tabs/Tab.tsx +0 -19
  157. package/src/components/Tabs/Tabs.stories.tsx +0 -118
  158. package/src/components/Tabs/Tabs.tsx +0 -99
  159. package/src/components/Tabs/_tabUtils.tsx +0 -4
  160. package/src/components/Tabs/index.ts +0 -2
  161. package/src/components/Timeline/Timeline.definition.ts +0 -43
  162. package/src/components/Timeline/Timeline.stories.tsx +0 -108
  163. package/src/components/Timeline/Timeline.tsx +0 -49
  164. package/src/components/Timeline/TimelineItem.tsx +0 -31
  165. package/src/components/Timeline/index.ts +0 -2
  166. package/src/components/Tooltip/Tooltip.stories.tsx +0 -129
  167. package/src/components/Tooltip/Tooltip.tsx +0 -58
  168. package/src/components/Tooltip/index.ts +0 -1
  169. package/src/components/_shared/formField.sx.ts +0 -118
  170. package/src/components/_shared/resolvePreset.ts +0 -35
  171. package/src/hooks/ClipBoard/ClipBoard.stories.tsx +0 -168
  172. package/src/hooks/ClipBoard/ClipBoard.tsx +0 -131
  173. package/src/hooks/ClipBoard/ClipboardUnifiedDemo.tsx +0 -111
  174. package/src/hooks/ClipBoard/index.ts +0 -1
  175. package/src/hooks/Wizard/Wizard.stories.tsx +0 -301
  176. package/src/hooks/Wizard/WizardContext.tsx +0 -166
  177. package/src/hooks/Wizard/index.ts +0 -6
  178. package/src/hooks/Wizard/useWizard.ts +0 -13
  179. package/src/index.ts +0 -17
  180. package/src/mui.ts +0 -54
  181. package/src/styles.css +0 -3
  182. package/src/theme/componentStyles.ts +0 -47
  183. package/src/theme/tokens.ts +0 -43
  184. package/tailwind.config.js +0 -10
  185. package/tsconfig.json +0 -48
  186. package/tsup.config.js +0 -41
  187. package/vite.config.js +0 -132
  188. package/vitest.config.ts +0 -35
  189. /package/{dist/Button-C17mExpd.cjs → Button-C17mExpd.cjs} +0 -0
  190. /package/{dist/Button-C17mExpd.cjs.map → Button-C17mExpd.cjs.map} +0 -0
  191. /package/{dist/Button-UkkP-bNw.js → Button-UkkP-bNw.js} +0 -0
  192. /package/{dist/Button-UkkP-bNw.js.map → Button-UkkP-bNw.js.map} +0 -0
  193. /package/{dist/README.md → README.md} +0 -0
  194. /package/{dist/components → components}/ActionMenu/ActionMenu.cjs +0 -0
  195. /package/{dist/components → components}/ActionMenu/ActionMenu.cjs.map +0 -0
  196. /package/{dist/components → components}/ActionMenu/ActionMenu.d.ts +0 -0
  197. /package/{dist/components → components}/ActionMenu/ActionMenu.js +0 -0
  198. /package/{dist/components → components}/ActionMenu/ActionMenu.js.map +0 -0
  199. /package/{dist/components → components}/ActionMenu/index.d.ts +0 -0
  200. /package/{dist/components → components}/ActionMenu.d.ts +0 -0
  201. /package/{dist/components → components}/AppBar/AppBar.cjs +0 -0
  202. /package/{dist/components → components}/AppBar/AppBar.cjs.map +0 -0
  203. /package/{dist/components → components}/AppBar/AppBar.d.ts +0 -0
  204. /package/{dist/components → components}/AppBar/AppBar.js +0 -0
  205. /package/{dist/components → components}/AppBar/AppBar.js.map +0 -0
  206. /package/{dist/components → components}/AppBar/AppBar.sx.d.ts +0 -0
  207. /package/{dist/components → components}/AppBar/AppBarBrand.d.ts +0 -0
  208. /package/{dist/components → components}/AppBar/AppBarContext.d.ts +0 -0
  209. /package/{dist/components → components}/AppBar/AppBarMenuToggle.d.ts +0 -0
  210. /package/{dist/components → components}/AppBar/AppBarUserMenu.d.ts +0 -0
  211. /package/{dist/components → components}/AppBar/index.d.ts +0 -0
  212. /package/{dist/components → components}/AppBar.d.ts +0 -0
  213. /package/{dist/components → components}/Autocomplete/Autocomplete.cjs +0 -0
  214. /package/{dist/components → components}/Autocomplete/Autocomplete.cjs.map +0 -0
  215. /package/{dist/components → components}/Autocomplete/Autocomplete.d.ts +0 -0
  216. /package/{dist/components → components}/Autocomplete/Autocomplete.definitions.d.ts +0 -0
  217. /package/{dist/components → components}/Autocomplete/Autocomplete.helpers.d.ts +0 -0
  218. /package/{dist/components → components}/Autocomplete/Autocomplete.js +0 -0
  219. /package/{dist/components → components}/Autocomplete/Autocomplete.js.map +0 -0
  220. /package/{dist/components → components}/Autocomplete/Autocomplete.sx.d.ts +0 -0
  221. /package/{dist/components → components}/Autocomplete/Autocomplete.types.d.ts +0 -0
  222. /package/{dist/components → components}/Autocomplete/_parts/AutocompleteChips.d.ts +0 -0
  223. /package/{dist/components → components}/Autocomplete/_parts/AutocompleteLoader.d.ts +0 -0
  224. /package/{dist/components → components}/Autocomplete/_parts/AutocompleteOption.d.ts +0 -0
  225. /package/{dist/components → components}/Autocomplete/index.d.ts +0 -0
  226. /package/{dist/components → components}/Autocomplete.d.ts +0 -0
  227. /package/{dist/components → components}/Avatar/Avatar.cjs +0 -0
  228. /package/{dist/components → components}/Avatar/Avatar.cjs.map +0 -0
  229. /package/{dist/components → components}/Avatar/Avatar.d.ts +0 -0
  230. /package/{dist/components → components}/Avatar/Avatar.definitions.d.ts +0 -0
  231. /package/{dist/components → components}/Avatar/Avatar.js +0 -0
  232. /package/{dist/components → components}/Avatar/Avatar.js.map +0 -0
  233. /package/{dist/components → components}/Avatar/index.d.ts +0 -0
  234. /package/{dist/components → components}/Avatar.d.ts +0 -0
  235. /package/{dist/components → components}/Button/Button.cjs +0 -0
  236. /package/{dist/components → components}/Button/Button.cjs.map +0 -0
  237. /package/{dist/components → components}/Button/Button.d.ts +0 -0
  238. /package/{dist/components → components}/Button/Button.definition.d.ts +0 -0
  239. /package/{dist/components → components}/Button/Button.js +0 -0
  240. /package/{dist/components → components}/Button/Button.js.map +0 -0
  241. /package/{dist/components → components}/Button/index.d.ts +0 -0
  242. /package/{dist/components → components}/Button.d.ts +0 -0
  243. /package/{dist/components → components}/Card/Card.cjs +0 -0
  244. /package/{dist/components → components}/Card/Card.cjs.map +0 -0
  245. /package/{dist/components → components}/Card/Card.d.ts +0 -0
  246. /package/{dist/components → components}/Card/Card.definition.d.ts +0 -0
  247. /package/{dist/components → components}/Card/Card.js +0 -0
  248. /package/{dist/components → components}/Card/Card.js.map +0 -0
  249. /package/{dist/components → components}/Card/Card.sx.d.ts +0 -0
  250. /package/{dist/components → components}/Card/index.d.ts +0 -0
  251. /package/{dist/components → components}/Card.d.ts +0 -0
  252. /package/{dist/components → components}/Chip/Chip.cjs +0 -0
  253. /package/{dist/components → components}/Chip/Chip.cjs.map +0 -0
  254. /package/{dist/components → components}/Chip/Chip.d.ts +0 -0
  255. /package/{dist/components → components}/Chip/Chip.definitions.d.ts +0 -0
  256. /package/{dist/components → components}/Chip/Chip.js +0 -0
  257. /package/{dist/components → components}/Chip/Chip.js.map +0 -0
  258. /package/{dist/components → components}/Chip/index.d.ts +0 -0
  259. /package/{dist/components → components}/Chip.d.ts +0 -0
  260. /package/{dist/components → components}/Column/Column.cjs +0 -0
  261. /package/{dist/components → components}/Column/Column.cjs.map +0 -0
  262. /package/{dist/components → components}/Column/Column.d.ts +0 -0
  263. /package/{dist/components → components}/Column/Column.js +0 -0
  264. /package/{dist/components → components}/Column/Column.js.map +0 -0
  265. /package/{dist/components → components}/Column/index.d.ts +0 -0
  266. /package/{dist/components → components}/Column.d.ts +0 -0
  267. /package/{dist/components → components}/DatePicker/DatePicker.cjs +0 -0
  268. /package/{dist/components → components}/DatePicker/DatePicker.cjs.map +0 -0
  269. /package/{dist/components → components}/DatePicker/DatePicker.d.ts +0 -0
  270. /package/{dist/components → components}/DatePicker/DatePicker.definitions.d.ts +0 -0
  271. /package/{dist/components → components}/DatePicker/DatePicker.helpers.d.ts +0 -0
  272. /package/{dist/components → components}/DatePicker/DatePicker.js +0 -0
  273. /package/{dist/components → components}/DatePicker/DatePicker.js.map +0 -0
  274. /package/{dist/components → components}/DatePicker/DatePicker.sx.d.ts +0 -0
  275. /package/{dist/components → components}/DatePicker/DatePicker.types.d.ts +0 -0
  276. /package/{dist/components → components}/DatePicker/index.d.ts +0 -0
  277. /package/{dist/components → components}/DatePicker.d.ts +0 -0
  278. /package/{dist/components → components}/DateRangePicker/DateRangePicker.cjs +0 -0
  279. /package/{dist/components → components}/DateRangePicker/DateRangePicker.cjs.map +0 -0
  280. /package/{dist/components → components}/DateRangePicker/DateRangePicker.d.ts +0 -0
  281. /package/{dist/components → components}/DateRangePicker/DateRangePicker.definitions.d.ts +0 -0
  282. /package/{dist/components → components}/DateRangePicker/DateRangePicker.js +0 -0
  283. /package/{dist/components → components}/DateRangePicker/DateRangePicker.js.map +0 -0
  284. /package/{dist/components → components}/DateRangePicker/index.d.ts +0 -0
  285. /package/{dist/components → components}/DateRangePicker.d.ts +0 -0
  286. /package/{dist/components → components}/DateTimePicker/DateTimePicker.cjs +0 -0
  287. /package/{dist/components → components}/DateTimePicker/DateTimePicker.cjs.map +0 -0
  288. /package/{dist/components → components}/DateTimePicker/DateTimePicker.d.ts +0 -0
  289. /package/{dist/components → components}/DateTimePicker/DateTimePicker.definitions.d.ts +0 -0
  290. /package/{dist/components → components}/DateTimePicker/DateTimePicker.helpers.d.ts +0 -0
  291. /package/{dist/components → components}/DateTimePicker/DateTimePicker.js +0 -0
  292. /package/{dist/components → components}/DateTimePicker/DateTimePicker.js.map +0 -0
  293. /package/{dist/components → components}/DateTimePicker/DateTimePicker.sx.d.ts +0 -0
  294. /package/{dist/components → components}/DateTimePicker/DateTimePicker.types.d.ts +0 -0
  295. /package/{dist/components → components}/DateTimePicker/index.d.ts +0 -0
  296. /package/{dist/components → components}/DateTimePicker.d.ts +0 -0
  297. /package/{dist/components → components}/Drawer/Drawer.sx.d.ts +0 -0
  298. /package/{dist/components → components}/Drawer/DrawerContext.d.ts +0 -0
  299. /package/{dist/components → components}/Drawer/DrawerItem.d.ts +0 -0
  300. /package/{dist/components → components}/Drawer/index.d.ts +0 -0
  301. /package/{dist/components → components}/Drawer.d.ts +0 -0
  302. /package/{dist/components → components}/Flyout/Flyout.cjs +0 -0
  303. /package/{dist/components → components}/Flyout/Flyout.cjs.map +0 -0
  304. /package/{dist/components → components}/Flyout/Flyout.d.ts +0 -0
  305. /package/{dist/components → components}/Flyout/Flyout.js +0 -0
  306. /package/{dist/components → components}/Flyout/Flyout.js.map +0 -0
  307. /package/{dist/components → components}/Flyout/index.d.ts +0 -0
  308. /package/{dist/components → components}/Flyout.d.ts +0 -0
  309. /package/{dist/components → components}/Gallery/Gallery.cjs +0 -0
  310. /package/{dist/components → components}/Gallery/Gallery.cjs.map +0 -0
  311. /package/{dist/components → components}/Gallery/Gallery.d.ts +0 -0
  312. /package/{dist/components → components}/Gallery/Gallery.definition.d.ts +0 -0
  313. /package/{dist/components → components}/Gallery/Gallery.js +0 -0
  314. /package/{dist/components → components}/Gallery/Gallery.js.map +0 -0
  315. /package/{dist/components → components}/Gallery/GalleryLightbox.d.ts +0 -0
  316. /package/{dist/components → components}/Gallery/GalleryMain.d.ts +0 -0
  317. /package/{dist/components → components}/Gallery/GalleryThumbnails.d.ts +0 -0
  318. /package/{dist/components → components}/Gallery/index.d.ts +0 -0
  319. /package/{dist/components → components}/Gallery.d.ts +0 -0
  320. /package/{dist/components → components}/Icon/Icon.cjs +0 -0
  321. /package/{dist/components → components}/Icon/Icon.cjs.map +0 -0
  322. /package/{dist/components → components}/Icon/Icon.d.ts +0 -0
  323. /package/{dist/components → components}/Icon/Icon.js +0 -0
  324. /package/{dist/components → components}/Icon/Icon.js.map +0 -0
  325. /package/{dist/components → components}/Icon/index.d.ts +0 -0
  326. /package/{dist/components → components}/Icon.d.ts +0 -0
  327. /package/{dist/components → components}/Input/Input.cjs +0 -0
  328. /package/{dist/components → components}/Input/Input.cjs.map +0 -0
  329. /package/{dist/components → components}/Input/Input.d.ts +0 -0
  330. /package/{dist/components → components}/Input/Input.definitions.d.ts +0 -0
  331. /package/{dist/components → components}/Input/Input.helpers.d.ts +0 -0
  332. /package/{dist/components → components}/Input/Input.js +0 -0
  333. /package/{dist/components → components}/Input/Input.js.map +0 -0
  334. /package/{dist/components → components}/Input/Input.sx.d.ts +0 -0
  335. /package/{dist/components → components}/Input/Input.types.d.ts +0 -0
  336. /package/{dist/components → components}/Input/index.d.ts +0 -0
  337. /package/{dist/components → components}/Input.d.ts +0 -0
  338. /package/{dist/components → components}/InputGroup/InputGroup.cjs +0 -0
  339. /package/{dist/components → components}/InputGroup/InputGroup.cjs.map +0 -0
  340. /package/{dist/components → components}/InputGroup/InputGroup.d.ts +0 -0
  341. /package/{dist/components → components}/InputGroup/InputGroup.definitions.d.ts +0 -0
  342. /package/{dist/components → components}/InputGroup/InputGroup.js +0 -0
  343. /package/{dist/components → components}/InputGroup/InputGroup.js.map +0 -0
  344. /package/{dist/components → components}/InputGroup/index.d.ts +0 -0
  345. /package/{dist/components → components}/InputGroup.d.ts +0 -0
  346. /package/{dist/components → components}/MenuButton/MenuButton.cjs +0 -0
  347. /package/{dist/components → components}/MenuButton/MenuButton.cjs.map +0 -0
  348. /package/{dist/components → components}/MenuButton/MenuButton.d.ts +0 -0
  349. /package/{dist/components → components}/MenuButton/MenuButton.js +0 -0
  350. /package/{dist/components → components}/MenuButton/MenuButton.js.map +0 -0
  351. /package/{dist/components → components}/MenuButton/index.d.ts +0 -0
  352. /package/{dist/components → components}/MenuButton.d.ts +0 -0
  353. /package/{dist/components → components}/Modal/Modal.cjs +0 -0
  354. /package/{dist/components → components}/Modal/Modal.cjs.map +0 -0
  355. /package/{dist/components → components}/Modal/Modal.d.ts +0 -0
  356. /package/{dist/components → components}/Modal/Modal.js +0 -0
  357. /package/{dist/components → components}/Modal/Modal.js.map +0 -0
  358. /package/{dist/components → components}/Modal/ModalBody.d.ts +0 -0
  359. /package/{dist/components → components}/Modal/ModalFooter.d.ts +0 -0
  360. /package/{dist/components → components}/Modal/ModalHeader.d.ts +0 -0
  361. /package/{dist/components → components}/Modal/index.d.ts +0 -0
  362. /package/{dist/components → components}/Modal.d.ts +0 -0
  363. /package/{dist/components → components}/PageLoader/PageLoader.cjs +0 -0
  364. /package/{dist/components → components}/PageLoader/PageLoader.cjs.map +0 -0
  365. /package/{dist/components → components}/PageLoader/PageLoader.d.ts +0 -0
  366. /package/{dist/components → components}/PageLoader/PageLoader.js +0 -0
  367. /package/{dist/components → components}/PageLoader/PageLoader.js.map +0 -0
  368. /package/{dist/components → components}/PageLoader/index.d.ts +0 -0
  369. /package/{dist/components → components}/PageLoader.d.ts +0 -0
  370. /package/{dist/components → components}/ScrollTopButton/ScrollTopButton.cjs +0 -0
  371. /package/{dist/components → components}/ScrollTopButton/ScrollTopButton.cjs.map +0 -0
  372. /package/{dist/components → components}/ScrollTopButton/ScrollTopButton.d.ts +0 -0
  373. /package/{dist/components → components}/ScrollTopButton/ScrollTopButton.js +0 -0
  374. /package/{dist/components → components}/ScrollTopButton/ScrollTopButton.js.map +0 -0
  375. /package/{dist/components → components}/ScrollTopButton/index.d.ts +0 -0
  376. /package/{dist/components → components}/ScrollTopButton/scrollToTop.d.ts +0 -0
  377. /package/{dist/components → components}/ScrollTopButton.d.ts +0 -0
  378. /package/{dist/components → components}/Select/Select.cjs +0 -0
  379. /package/{dist/components → components}/Select/Select.cjs.map +0 -0
  380. /package/{dist/components → components}/Select/Select.d.ts +0 -0
  381. /package/{dist/components → components}/Select/Select.definitions.d.ts +0 -0
  382. /package/{dist/components → components}/Select/Select.helpers.d.ts +0 -0
  383. /package/{dist/components → components}/Select/Select.js +0 -0
  384. /package/{dist/components → components}/Select/Select.js.map +0 -0
  385. /package/{dist/components → components}/Select/Select.sx.d.ts +0 -0
  386. /package/{dist/components → components}/Select/Select.types.d.ts +0 -0
  387. /package/{dist/components → components}/Select/_parts/SelectMenuItem.d.ts +0 -0
  388. /package/{dist/components → components}/Select/_parts/SelectSearchHeader.d.ts +0 -0
  389. /package/{dist/components → components}/Select/_parts/SelectValue.d.ts +0 -0
  390. /package/{dist/components → components}/Select/index.d.ts +0 -0
  391. /package/{dist/components → components}/Select.d.ts +0 -0
  392. /package/{dist/components → components}/Stat/Stat.cjs +0 -0
  393. /package/{dist/components → components}/Stat/Stat.cjs.map +0 -0
  394. /package/{dist/components → components}/Stat/Stat.d.ts +0 -0
  395. /package/{dist/components → components}/Stat/Stat.js +0 -0
  396. /package/{dist/components → components}/Stat/Stat.js.map +0 -0
  397. /package/{dist/components → components}/Stat/index.d.ts +0 -0
  398. /package/{dist/components → components}/Stat.d.ts +0 -0
  399. /package/{dist/components → components}/StatusMessage/StatusMessage.cjs +0 -0
  400. /package/{dist/components → components}/StatusMessage/StatusMessage.cjs.map +0 -0
  401. /package/{dist/components → components}/StatusMessage/StatusMessage.d.ts +0 -0
  402. /package/{dist/components → components}/StatusMessage/StatusMessage.js +0 -0
  403. /package/{dist/components → components}/StatusMessage/StatusMessage.js.map +0 -0
  404. /package/{dist/components → components}/StatusMessage/index.d.ts +0 -0
  405. /package/{dist/components → components}/StatusMessage.d.ts +0 -0
  406. /package/{dist/components → components}/Stepper/Step.d.ts +0 -0
  407. /package/{dist/components → components}/Stepper/Stepper.cjs +0 -0
  408. /package/{dist/components → components}/Stepper/Stepper.cjs.map +0 -0
  409. /package/{dist/components → components}/Stepper/Stepper.d.ts +0 -0
  410. /package/{dist/components → components}/Stepper/Stepper.definition.d.ts +0 -0
  411. /package/{dist/components → components}/Stepper/Stepper.js +0 -0
  412. /package/{dist/components → components}/Stepper/Stepper.js.map +0 -0
  413. /package/{dist/components → components}/Stepper/index.d.ts +0 -0
  414. /package/{dist/components → components}/Stepper.d.ts +0 -0
  415. /package/{dist/components → components}/Table/Table.cjs +0 -0
  416. /package/{dist/components → components}/Table/Table.cjs.map +0 -0
  417. /package/{dist/components → components}/Table/Table.d.ts +0 -0
  418. /package/{dist/components → components}/Table/Table.definition.d.ts +0 -0
  419. /package/{dist/components → components}/Table/Table.js +0 -0
  420. /package/{dist/components → components}/Table/Table.js.map +0 -0
  421. /package/{dist/components → components}/Table/data.d.ts +0 -0
  422. /package/{dist/components → components}/Table/exportsUtils.d.ts +0 -0
  423. /package/{dist/components → components}/Table/index.d.ts +0 -0
  424. /package/{dist/components → components}/Table/types.d.ts +0 -0
  425. /package/{dist/components → components}/Table.d.ts +0 -0
  426. /package/{dist/components → components}/Tabs/Tab.d.ts +0 -0
  427. /package/{dist/components → components}/Tabs/Tab.definition.d.ts +0 -0
  428. /package/{dist/components → components}/Tabs/Tabs.cjs +0 -0
  429. /package/{dist/components → components}/Tabs/Tabs.cjs.map +0 -0
  430. /package/{dist/components → components}/Tabs/Tabs.d.ts +0 -0
  431. /package/{dist/components → components}/Tabs/Tabs.js +0 -0
  432. /package/{dist/components → components}/Tabs/Tabs.js.map +0 -0
  433. /package/{dist/components → components}/Tabs/_tabUtils.d.ts +0 -0
  434. /package/{dist/components → components}/Tabs/index.d.ts +0 -0
  435. /package/{dist/components → components}/Tabs.d.ts +0 -0
  436. /package/{dist/components → components}/Timeline/Timeline.cjs +0 -0
  437. /package/{dist/components → components}/Timeline/Timeline.cjs.map +0 -0
  438. /package/{dist/components → components}/Timeline/Timeline.d.ts +0 -0
  439. /package/{dist/components → components}/Timeline/Timeline.definition.d.ts +0 -0
  440. /package/{dist/components → components}/Timeline/Timeline.js +0 -0
  441. /package/{dist/components → components}/Timeline/Timeline.js.map +0 -0
  442. /package/{dist/components → components}/Timeline/TimelineItem.d.ts +0 -0
  443. /package/{dist/components → components}/Timeline/index.d.ts +0 -0
  444. /package/{dist/components → components}/Timeline.d.ts +0 -0
  445. /package/{dist/components → components}/Tooltip/Tooltip.cjs +0 -0
  446. /package/{dist/components → components}/Tooltip/Tooltip.cjs.map +0 -0
  447. /package/{dist/components → components}/Tooltip/Tooltip.d.ts +0 -0
  448. /package/{dist/components → components}/Tooltip/Tooltip.js +0 -0
  449. /package/{dist/components → components}/Tooltip/Tooltip.js.map +0 -0
  450. /package/{dist/components → components}/Tooltip/index.d.ts +0 -0
  451. /package/{dist/components → components}/Tooltip.d.ts +0 -0
  452. /package/{dist/components → components}/_shared/formField.sx.d.ts +0 -0
  453. /package/{dist/components → components}/_shared/resolvePreset.d.ts +0 -0
  454. /package/{dist/formField.sx-CQ1mbk9M.cjs → formField.sx-CQ1mbk9M.cjs} +0 -0
  455. /package/{dist/formField.sx-CQ1mbk9M.cjs.map → formField.sx-CQ1mbk9M.cjs.map} +0 -0
  456. /package/{dist/formField.sx-DfVbMe0V.js → formField.sx-DfVbMe0V.js} +0 -0
  457. /package/{dist/formField.sx-DfVbMe0V.js.map → formField.sx-DfVbMe0V.js.map} +0 -0
  458. /package/{dist/hooks → hooks}/ClipBoard/ClipBoard.cjs +0 -0
  459. /package/{dist/hooks → hooks}/ClipBoard/ClipBoard.cjs.map +0 -0
  460. /package/{dist/hooks → hooks}/ClipBoard/ClipBoard.d.ts +0 -0
  461. /package/{dist/hooks → hooks}/ClipBoard/ClipBoard.js +0 -0
  462. /package/{dist/hooks → hooks}/ClipBoard/ClipBoard.js.map +0 -0
  463. /package/{dist/hooks → hooks}/ClipBoard/ClipboardUnifiedDemo.d.ts +0 -0
  464. /package/{dist/hooks → hooks}/ClipBoard/index.d.ts +0 -0
  465. /package/{dist/hooks → hooks}/ClipBoard.d.ts +0 -0
  466. /package/{dist/hooks → hooks}/Wizard/Wizard.cjs +0 -0
  467. /package/{dist/hooks → hooks}/Wizard/Wizard.cjs.map +0 -0
  468. /package/{dist/hooks → hooks}/Wizard/Wizard.js +0 -0
  469. /package/{dist/hooks → hooks}/Wizard/Wizard.js.map +0 -0
  470. /package/{dist/hooks → hooks}/Wizard/WizardContext.d.ts +0 -0
  471. /package/{dist/hooks → hooks}/Wizard/index.d.ts +0 -0
  472. /package/{dist/hooks → hooks}/Wizard/useWizard.d.ts +0 -0
  473. /package/{dist/hooks → hooks}/Wizard.d.ts +0 -0
  474. /package/{dist/index.cjs → index.cjs} +0 -0
  475. /package/{dist/index.cjs.map → index.cjs.map} +0 -0
  476. /package/{dist/index.d.ts → index.d.ts} +0 -0
  477. /package/{dist/index.js → index.js} +0 -0
  478. /package/{dist/index.js.map → index.js.map} +0 -0
  479. /package/{dist/mui.d.ts → mui.d.ts} +0 -0
  480. /package/{dist/resolvePreset-B-IB0ehH.js → resolvePreset-B-IB0ehH.js} +0 -0
  481. /package/{dist/resolvePreset-B-IB0ehH.js.map → resolvePreset-B-IB0ehH.js.map} +0 -0
  482. /package/{dist/resolvePreset-CT3kU-K2.cjs → resolvePreset-CT3kU-K2.cjs} +0 -0
  483. /package/{dist/resolvePreset-CT3kU-K2.cjs.map → resolvePreset-CT3kU-K2.cjs.map} +0 -0
  484. /package/{dist/styles.css → styles.css} +0 -0
  485. /package/{dist/theme → theme}/componentStyles.d.ts +0 -0
  486. /package/{dist/theme → theme}/tokens.d.ts +0 -0
  487. /package/{dist/useWizard-CWdIxZzX.cjs → useWizard-CWdIxZzX.cjs} +0 -0
  488. /package/{dist/useWizard-CWdIxZzX.cjs.map → useWizard-CWdIxZzX.cjs.map} +0 -0
  489. /package/{dist/useWizard-CWq--C3o.js → useWizard-CWq--C3o.js} +0 -0
  490. /package/{dist/useWizard-CWq--C3o.js.map → useWizard-CWq--C3o.js.map} +0 -0
@@ -1,748 +0,0 @@
1
- import { useState, useEffect, useMemo } from "react";
2
- import type { Meta, StoryObj } from "@storybook/react";
3
- import { Box, Typography, Avatar, Stack, Button } from "@mui/material";
4
- import { useForm } from "react-hook-form";
5
-
6
- import Autocomplete, { SelectOption } from "./Autocomplete";
7
- import {
8
- CustomChipRenderAutocompleteDefinition,
9
- CustomRenderOptionAutocompleteDefinition,
10
- EmptyOptionsAutocompleteDefinition,
11
- LoadingAutocompleteDefinition,
12
- MultipleAutocompleteDefinition,
13
- MultipleWithLimitAutocompleteDefinition,
14
- SimpleAutocompleteDefinition,
15
- WithPlaceholderAutocompleteDefinition,
16
- WithErrorAutocompleteDefinition,
17
- LabelPositionAutocompleteDefinition,
18
- CustomBorderRadiusAutocompleteDefinition,
19
- EmptyWithPlaceholderAutocompleteDefinition,
20
- RHFAutocompleteDefinition,
21
- AsyncServiceAutocompleteDefinition,
22
- } from "./Autocomplete.definitions";
23
-
24
- // =============================================================================
25
- // Datos de ejemplo
26
- // =============================================================================
27
- const basicOptions: SelectOption[] = [
28
- { value: "10", label: "10" },
29
- { value: "25", label: "25" },
30
- { value: "50", label: "50" },
31
- { value: "100", label: "100" },
32
- ];
33
-
34
- const userOptions: SelectOption[] = [
35
- {
36
- value: "admin",
37
- label: "Administrador",
38
- img: "https://placehold.co/40x40?text=A",
39
- },
40
- { value: "user", label: "Usuario", img: "https://placehold.co/40x40?text=U" },
41
- {
42
- value: "moderator",
43
- label: "Moderador",
44
- img: "https://placehold.co/40x40?text=M",
45
- },
46
- ];
47
-
48
- const manyOptions = Array.from({ length: 50 }, (_, i) => ({
49
- value: `option-${i}`,
50
- label: `Opción ${i + 1}`,
51
- }));
52
-
53
- // =============================================================================
54
- // META
55
- // =============================================================================
56
- const meta: Meta<typeof Autocomplete> = {
57
- title: "Components/Autocomplete",
58
- component: Autocomplete,
59
- tags: ["autodocs"],
60
- parameters: {
61
- layout: "padded",
62
- docs: {
63
- description: {
64
- component:
65
- "Autocomplete personalizado basado en MUI con soporte para selección múltiple, chips, render custom y async.",
66
- },
67
- },
68
- },
69
- argTypes: {
70
- label: {
71
- control: "text",
72
- description: "Etiqueta para el campo de selección.",
73
- },
74
- options: {
75
- control: "object",
76
- description:
77
- "Array de objetos `SelectOption` para las opciones del menú.",
78
- },
79
- value: {
80
- control: "object",
81
- description: "Valor(es) seleccionado(s) del select.",
82
- },
83
- onChange: {
84
- action: "changed",
85
- description:
86
- "Función de callback que se llama cuando el valor del select cambia.",
87
- },
88
- multiple: {
89
- control: "boolean",
90
- description:
91
- "Si es verdadero, permite la selección de múltiples opciones.",
92
- },
93
- placeholder: {
94
- control: "text",
95
- description: "Texto que se muestra cuando no hay nada seleccionado.",
96
- },
97
- maxChipsToShow: {
98
- control: "number",
99
- description:
100
- "Número máximo de chips a mostrar en selección múltiple antes de agrupar.",
101
- if: { arg: "multiple", eq: true },
102
- },
103
- renderChipLabel: {
104
- control: false,
105
- description:
106
- "Función para personalizar el contenido del label de cada chip seleccionado (para múltiple) o del valor mostrado (para individual).",
107
- },
108
- },
109
- };
110
-
111
- export default meta;
112
- type Story = StoryObj<typeof Autocomplete>;
113
-
114
- // =============================================================================
115
- // STORIES
116
- // =============================================================================
117
-
118
- export const Simple: Story = {
119
- render: () => {
120
- const [value, setValue] = useState<string>("25");
121
-
122
- return (
123
- <Box sx={{ width: 250 }}>
124
- <Autocomplete
125
- label="Registros por página"
126
- options={basicOptions}
127
- value={value}
128
- onChange={(val) => {
129
- setValue(val as string);
130
- }}
131
- />
132
- <Typography sx={{ mt: 2 }}>Valor: {value}</Typography>
133
- </Box>
134
- );
135
- },
136
- parameters: {
137
- docs: {
138
- description: {
139
- story: "Autocomplete simple con opciones básicas y valor por defecto.",
140
- },
141
- source: { code: SimpleAutocompleteDefinition.trim() },
142
- },
143
- },
144
- };
145
-
146
- export const WithPlaceholder: Story = {
147
- render: () => {
148
- const [value, setValue] = useState<string>("");
149
-
150
- return (
151
- <Box sx={{ width: 300 }}>
152
- <Autocomplete
153
- label="Seleccione una opción"
154
- options={basicOptions}
155
- value={value}
156
- onChange={(val) => {
157
- setValue(val as string);
158
- }}
159
- placeholder="Ninguna opción seleccionada"
160
- />
161
- <Typography sx={{ mt: 2 }}>{value || "Ninguno"}</Typography>
162
- </Box>
163
- );
164
- },
165
- parameters: {
166
- docs: {
167
- description: {
168
- story:
169
- "Autocomplete sin valor inicial que muestra un placeholder cuando no hay selección.",
170
- },
171
- source: { code: WithPlaceholderAutocompleteDefinition.trim() },
172
- },
173
- },
174
- };
175
-
176
- export const Multiple: Story = {
177
- render: () => {
178
- const [value, setValue] = useState<string[]>([]);
179
-
180
- return (
181
- <Box sx={{ width: 400 }}>
182
- <Autocomplete
183
- label="Seleccionar valores"
184
- multiple
185
- options={basicOptions}
186
- value={value}
187
- onChange={(val) => {
188
- setValue(val as string[]);
189
- }}
190
- />
191
- <Typography sx={{ mt: 2 }}>
192
- Valor seleccionado: {JSON.stringify(value)}
193
- </Typography>
194
- </Box>
195
- );
196
- },
197
- parameters: {
198
- docs: {
199
- description: {
200
- story:
201
- "Autocomplete en modo múltiple que permite seleccionar varias opciones y las muestra como chips.",
202
- },
203
- source: { code: MultipleAutocompleteDefinition.trim() },
204
- },
205
- },
206
- };
207
-
208
- export const MultipleWithLimit: Story = {
209
- render: () => {
210
- const [value, setValue] = useState<string[]>(
211
- manyOptions.slice(0, 5).map((opt) => opt.value),
212
- );
213
-
214
- return (
215
- <Box sx={{ width: 400 }}>
216
- <Autocomplete
217
- label="Muchas selecciones"
218
- multiple
219
- maxChipsToShow={2}
220
- options={manyOptions}
221
- value={value}
222
- onChange={(val) => {
223
- setValue(val as string[]);
224
- }}
225
- />
226
- </Box>
227
- );
228
- },
229
- parameters: {
230
- docs: {
231
- description: {
232
- story:
233
- "Autocomplete múltiple con límite de chips visibles, agrupando el resto en un contador.",
234
- },
235
- source: { code: MultipleWithLimitAutocompleteDefinition.trim() },
236
- },
237
- },
238
- };
239
-
240
- export const CustomRenderOption: Story = {
241
- render: () => {
242
- const [value, setValue] = useState<string[]>([]);
243
-
244
- return (
245
- <Box sx={{ width: 300 }}>
246
- <Autocomplete
247
- label="Usuarios"
248
- multiple
249
- options={userOptions}
250
- value={value}
251
- onChange={(val) => {
252
- setValue(val as string[]);
253
- }}
254
- renderOptionItem={(item) => (
255
- <Box sx={{ display: "flex", gap: 1, alignItems: "center" }}>
256
- <Avatar src={item.img} sx={{ width: 24, height: 24 }} />
257
- {item.label}
258
- </Box>
259
- )}
260
- />
261
- </Box>
262
- );
263
- },
264
- parameters: {
265
- docs: {
266
- description: {
267
- story:
268
- "Autocomplete con renderizado personalizado de opciones, incluyendo avatar e información adicional.",
269
- },
270
- source: { code: CustomRenderOptionAutocompleteDefinition.trim() },
271
- },
272
- },
273
- };
274
-
275
- export const CustomChipRender: Story = {
276
- render: () => {
277
- const [value, setValue] = useState<string[]>([]);
278
-
279
- return (
280
- <Box sx={{ width: 400 }}>
281
- <Autocomplete
282
- label="Usuarios seleccionados"
283
- multiple
284
- options={userOptions}
285
- value={value}
286
- onChange={(val) => {
287
- setValue(val as string[]);
288
- }}
289
- maxChipsToShow={2}
290
- renderChipLabel={(item) => (
291
- <Typography variant="caption" fontWeight="bold">
292
- {item.label.charAt(0)}
293
- </Typography>
294
- )}
295
- />
296
- </Box>
297
- );
298
- },
299
- parameters: {
300
- docs: {
301
- description: {
302
- story:
303
- "Autocomplete múltiple con renderizado personalizado de chips, mostrando solo la inicial del label.",
304
- },
305
- source: { code: CustomChipRenderAutocompleteDefinition.trim() },
306
- },
307
- },
308
- };
309
-
310
- export const Loading: Story = {
311
- render: () => {
312
- const [value, setValue] = useState<string>("");
313
-
314
- return (
315
- <Box sx={{ width: 300 }}>
316
- <Autocomplete
317
- label="Cargando..."
318
- options={[]}
319
- loading
320
- value={value}
321
- onChange={(val) => {
322
- setValue(val as string);
323
- }}
324
- />
325
- </Box>
326
- );
327
- },
328
- parameters: {
329
- docs: {
330
- description: {
331
- story:
332
- "Autocomplete en estado de carga, útil para integraciones con APIs o búsquedas asíncronas.",
333
- },
334
- source: { code: LoadingAutocompleteDefinition.trim() },
335
- },
336
- },
337
- };
338
-
339
- export const EmptyOptions: Story = {
340
- render: () => {
341
- const [value, setValue] = useState<string>("");
342
-
343
- return (
344
- <Box sx={{ width: 300 }}>
345
- <Autocomplete
346
- label="Sin opciones"
347
- options={[]}
348
- value={value}
349
- onChange={(val) => {
350
- setValue(val as string);
351
- }}
352
- placeholder="No hay opciones"
353
- />
354
- </Box>
355
- );
356
- },
357
- parameters: {
358
- docs: {
359
- description: {
360
- story:
361
- "Autocomplete sin opciones disponibles, mostrando mensaje vacío al usuario.",
362
- },
363
- source: { code: EmptyOptionsAutocompleteDefinition.trim() },
364
- },
365
- },
366
- };
367
-
368
- export const ManyOptions: Story = {
369
- render: () => {
370
- const [value, setValue] = useState<string>("");
371
-
372
- return (
373
- <Box sx={{ width: 300 }}>
374
- <Autocomplete
375
- label="Muchas opciones"
376
- options={manyOptions}
377
- value={value}
378
- onChange={(val) => {
379
- setValue(val as string);
380
- }}
381
- />
382
- </Box>
383
- );
384
- },
385
- parameters: {
386
- docs: {
387
- description: {
388
- story:
389
- "Autocomplete sin opciones disponibles, mostrando mensaje vacío al usuario.",
390
- },
391
- source: { code: EmptyOptionsAutocompleteDefinition.trim() },
392
- },
393
- },
394
- };
395
-
396
- // =============================================================================
397
- // NUEVAS STORIES — API refactorizada
398
- // =============================================================================
399
-
400
- export const WithError: Story = {
401
- render: () => {
402
- const [value, setValue] = useState<string | null>(null);
403
- return (
404
- <Box sx={{ width: 300 }}>
405
- <Autocomplete
406
- label="Cantidad"
407
- options={basicOptions}
408
- value={value}
409
- onChange={(val) => setValue(val as string | null)}
410
- error={!value}
411
- helperText={!value ? "Debes seleccionar una cantidad" : " "}
412
- />
413
- </Box>
414
- );
415
- },
416
- parameters: {
417
- docs: {
418
- description: {
419
- story:
420
- "Autocomplete en estado de error con `helperText`. Muestra la validación visual (borde + label + texto en rojo).",
421
- },
422
- source: { code: WithErrorAutocompleteDefinition.trim() },
423
- },
424
- },
425
- };
426
-
427
- export const LabelPosition: Story = {
428
- render: () => {
429
- const [a, setA] = useState<string | null>(null);
430
- const [b, setB] = useState<string | null>(null);
431
- return (
432
- <Stack spacing={3} sx={{ width: 320 }}>
433
- <Autocomplete
434
- label="Outside (default)"
435
- labelPosition="outside"
436
- options={basicOptions}
437
- value={a}
438
- onChange={(val) => setA(val as string | null)}
439
- />
440
- <Autocomplete
441
- label="Floating"
442
- labelPosition="floating"
443
- options={basicOptions}
444
- value={b}
445
- onChange={(val) => setB(val as string | null)}
446
- />
447
- </Stack>
448
- );
449
- },
450
- parameters: {
451
- docs: {
452
- description: {
453
- story:
454
- "Comparación entre `labelPosition='outside'` (label arriba del input, consistente con Input/Select/DatePicker) y `labelPosition='floating'` (comportamiento nativo MUI dentro del notch).",
455
- },
456
- source: { code: LabelPositionAutocompleteDefinition.trim() },
457
- },
458
- },
459
- };
460
-
461
- export const CustomBorderRadius: Story = {
462
- render: () => {
463
- const [a, setA] = useState<string | null>(null);
464
- const [b, setB] = useState<string | null>(null);
465
- const [c, setC] = useState<string | null>(null);
466
- return (
467
- <Stack spacing={2} sx={{ width: 300 }}>
468
- <Autocomplete
469
- label="0"
470
- borderRadius={0}
471
- options={basicOptions}
472
- value={a}
473
- onChange={(v) => setA(v as string | null)}
474
- />
475
- <Autocomplete
476
- label="10 (default)"
477
- borderRadius={10}
478
- options={basicOptions}
479
- value={b}
480
- onChange={(v) => setB(v as string | null)}
481
- />
482
- <Autocomplete
483
- label="24 (pill)"
484
- borderRadius={24}
485
- options={basicOptions}
486
- value={c}
487
- onChange={(v) => setC(v as string | null)}
488
- />
489
- </Stack>
490
- );
491
- },
492
- parameters: {
493
- docs: {
494
- description: {
495
- story:
496
- "La prop `borderRadius` permite personalizar el radio del borde sin usar `sx` (acepta number en px o string).",
497
- },
498
- source: { code: CustomBorderRadiusAutocompleteDefinition.trim() },
499
- },
500
- },
501
- };
502
-
503
- export const EmptyWithPlaceholder: Story = {
504
- render: () => {
505
- const [value, setValue] = useState<string | null>(null);
506
- const countries: SelectOption[] = [
507
- { value: "mx", label: "México" },
508
- { value: "co", label: "Colombia" },
509
- { value: "ar", label: "Argentina" },
510
- ];
511
- return (
512
- <Box sx={{ width: 300 }}>
513
- <Autocomplete
514
- label="País"
515
- placeholder="Buscar país..."
516
- options={countries}
517
- value={value}
518
- onChange={(val) => setValue(val as string | null)}
519
- />
520
- <Typography sx={{ mt: 2 }} variant="caption" color="text.secondary">
521
- Al estar vacío y sin foco, solo se ve el label como placeholder. Al
522
- enfocar, el label sube y aparece el placeholder real.
523
- </Typography>
524
- </Box>
525
- );
526
- },
527
- parameters: {
528
- docs: {
529
- description: {
530
- story:
531
- "Autocomplete vacío con placeholder. El placeholder solo se muestra cuando el campo está enfocado (mismo patrón que Select/Input).",
532
- },
533
- source: { code: EmptyWithPlaceholderAutocompleteDefinition.trim() },
534
- },
535
- },
536
- };
537
-
538
- export const WithReactHookForm: Story = {
539
- render: () => {
540
- type FormValues = { country: string | null };
541
- const { control, handleSubmit, watch } = useForm<FormValues>({
542
- defaultValues: { country: null },
543
- });
544
- const countries: SelectOption[] = [
545
- { value: "mx", label: "México" },
546
- { value: "co", label: "Colombia" },
547
- { value: "ar", label: "Argentina" },
548
- ];
549
-
550
- const [submitted, setSubmitted] = useState<FormValues | null>(null);
551
-
552
- return (
553
- <Box
554
- component="form"
555
- onSubmit={handleSubmit((data) => setSubmitted(data))}
556
- >
557
- <Stack spacing={2} sx={{ width: 320 }}>
558
- <Autocomplete
559
- name="country"
560
- control={control}
561
- validation={{ required: "Campo requerido" }}
562
- label="País"
563
- placeholder="Seleccione..."
564
- options={countries}
565
- />
566
- <Button type="submit" variant="contained">
567
- Guardar
568
- </Button>
569
- <Typography variant="caption" color="text.secondary">
570
- Valor actual (watch): {JSON.stringify(watch("country"))}
571
- </Typography>
572
- {submitted && (
573
- <Typography variant="caption" color="success.main">
574
- Submit: {JSON.stringify(submitted)}
575
- </Typography>
576
- )}
577
- </Stack>
578
- </Box>
579
- );
580
- },
581
- parameters: {
582
- docs: {
583
- description: {
584
- story:
585
- "Integración con React Hook Form usando `name`/`control`/`validation`. El error de validación se renderiza automáticamente como helperText.",
586
- },
587
- source: { code: RHFAutocompleteDefinition.trim() },
588
- },
589
- },
590
- };
591
-
592
- // =============================================================================
593
- // ASYNC — búsqueda remota contra un servicio
594
- // =============================================================================
595
- // Simulador de servicio: hace una "llamada" a una API fake con latencia.
596
- const mockUsersDb: SelectOption[] = [
597
- { value: 1, label: "Andrea García" },
598
- { value: 2, label: "Andrés Pérez" },
599
- { value: 3, label: "Beatriz López" },
600
- { value: 4, label: "Carlos Ruiz" },
601
- { value: 5, label: "Camila Torres" },
602
- { value: 6, label: "Diego Fernández" },
603
- { value: 7, label: "Elena Morales" },
604
- { value: 8, label: "Fabián Núñez" },
605
- ];
606
-
607
- const fakeFetchUsers = (query: string): Promise<SelectOption[]> =>
608
- new Promise((resolve) => {
609
- setTimeout(() => {
610
- if (!query) return resolve([]);
611
- const q = query.toLowerCase();
612
- resolve(mockUsersDb.filter((u) => u.label.toLowerCase().includes(q)));
613
- }, 400);
614
- });
615
-
616
- // Debounce casero (para no agregar lodash como dep de la story).
617
- function debounce<T extends (...args: any[]) => void>(fn: T, ms: number) {
618
- let t: ReturnType<typeof setTimeout>;
619
- return (...args: Parameters<T>) => {
620
- clearTimeout(t);
621
- t = setTimeout(() => fn(...args), ms);
622
- };
623
- }
624
-
625
- export const AsyncService: Story = {
626
- render: () => {
627
- const [value, setValue] = useState<number | null>(null);
628
- const [input, setInput] = useState("");
629
- const [options, setOptions] = useState<SelectOption[]>([]);
630
- const [loading, setLoading] = useState(false);
631
-
632
- const search = useMemo(
633
- () =>
634
- debounce(async (q: string) => {
635
- if (!q) {
636
- setOptions([]);
637
- return;
638
- }
639
- setLoading(true);
640
- try {
641
- const res = await fakeFetchUsers(q);
642
- setOptions(res);
643
- } finally {
644
- setLoading(false);
645
- }
646
- }, 300),
647
- [],
648
- );
649
-
650
- useEffect(() => {
651
- search(input);
652
- }, [input, search]);
653
-
654
- return (
655
- <Box sx={{ width: 320 }}>
656
- <Autocomplete<number>
657
- label="Usuario"
658
- placeholder="Buscar usuario..."
659
- options={options}
660
- value={value}
661
- onChange={(v) => setValue(v as number | null)}
662
- inputValue={input}
663
- onInputChange={(_, v) => setInput(v)}
664
- loading={loading}
665
- // Desactiva filtro cliente: confiamos en el servicio.
666
- filterOptions={(x) => x}
667
- />
668
- <Typography sx={{ mt: 2 }} variant="caption" color="text.secondary">
669
- {"Escribe para buscar. El servicio se consulta con debounce (300ms). filterOptions={(x) => x} desactiva el filtro cliente."}
670
- </Typography>
671
- </Box>
672
- );
673
- },
674
- parameters: {
675
- docs: {
676
- description: {
677
- story:
678
- "Búsqueda asíncrona contra un servicio. El consumer maneja el estado de `options`/`loading` y reacciona a `onInputChange` para llamar al servicio. Usar `filterOptions={(x) => x}` para desactivar el filtro cliente.",
679
- },
680
- source: { code: AsyncServiceAutocompleteDefinition.trim() },
681
- },
682
- },
683
- };
684
-
685
- export const AsyncServiceMultiple: Story = {
686
- render: () => {
687
- const [value, setValue] = useState<number[]>([]);
688
- const [input, setInput] = useState("");
689
- const [options, setOptions] = useState<SelectOption[]>([]);
690
- const [loading, setLoading] = useState(false);
691
-
692
- const search = useMemo(
693
- () =>
694
- debounce(async (q: string) => {
695
- if (!q) {
696
- setOptions([]);
697
- return;
698
- }
699
- setLoading(true);
700
- try {
701
- const res = await fakeFetchUsers(q);
702
- setOptions(res);
703
- } finally {
704
- setLoading(false);
705
- }
706
- }, 300),
707
- [],
708
- );
709
-
710
- useEffect(() => {
711
- search(input);
712
- }, [input, search]);
713
-
714
- return (
715
- <Box sx={{ width: 420 }}>
716
- <Autocomplete<number>
717
- multiple
718
- maxChipsToShow={4}
719
- label="Usuarios"
720
- placeholder="Buscar y seleccionar varios..."
721
- options={options}
722
- value={value}
723
- onChange={(v) => setValue(v as number[])}
724
- inputValue={input}
725
- onInputChange={(_, v) => setInput(v)}
726
- loading={loading}
727
- filterOptions={(x) => x}
728
- />
729
- <Typography sx={{ mt: 2 }} variant="caption" color="text.secondary">
730
- Selecciona varios usuarios buscando con diferentes queries. Los chips
731
- persisten aunque el search cambie las `options` (cache interno).
732
- </Typography>
733
- <Typography sx={{ mt: 1 }} variant="caption" display="block">
734
- Seleccionados: {JSON.stringify(value)}
735
- </Typography>
736
- </Box>
737
- );
738
- },
739
- parameters: {
740
- docs: {
741
- description: {
742
- story:
743
- "Búsqueda asíncrona **con selección múltiple**. El componente mantiene un cache interno de opciones ya vistas, así los chips de los items seleccionados NO desaparecen cuando el usuario busca otros términos. Flujo: buscar 'an' → seleccionar Andrea → buscar 'be' → seleccionar Beatriz → los dos chips siguen visibles.",
744
- },
745
- source: { code: AsyncServiceAutocompleteDefinition.trim() },
746
- },
747
- },
748
- };