@soyfri/shared-library 2.0.0-beta.1 → 2.0.0-beta.3

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 (486) hide show
  1. package/package.json +164 -43
  2. package/.dockerignore +0 -8
  3. package/.github/workflows/publish.yml +0 -107
  4. package/.prettierrc +0 -3
  5. package/.storybook/main.ts +0 -19
  6. package/.storybook/preview.ts +0 -14
  7. package/.storybook/vitest.setup.ts +0 -9
  8. package/Dockerfile +0 -37
  9. package/build.js +0 -139
  10. package/chromatic.config.json +0 -5
  11. package/cleanDirectories.js +0 -40
  12. package/rollup.config.cjs +0 -87
  13. package/src/components/ActionMenu/ActionMenu.stories.tsx +0 -230
  14. package/src/components/ActionMenu/ActionMenu.tsx +0 -174
  15. package/src/components/ActionMenu/index.ts +0 -2
  16. package/src/components/AppBar/AppBar.stories.tsx +0 -272
  17. package/src/components/AppBar/AppBar.sx.ts +0 -32
  18. package/src/components/AppBar/AppBar.tsx +0 -123
  19. package/src/components/AppBar/AppBarBrand.tsx +0 -120
  20. package/src/components/AppBar/AppBarContext.ts +0 -25
  21. package/src/components/AppBar/AppBarMenuToggle.tsx +0 -90
  22. package/src/components/AppBar/AppBarUserMenu.tsx +0 -217
  23. package/src/components/AppBar/index.ts +0 -25
  24. package/src/components/Autocomplete/Autocomplete.definitions.ts +0 -477
  25. package/src/components/Autocomplete/Autocomplete.helpers.ts +0 -60
  26. package/src/components/Autocomplete/Autocomplete.stories.tsx +0 -748
  27. package/src/components/Autocomplete/Autocomplete.sx.ts +0 -30
  28. package/src/components/Autocomplete/Autocomplete.tsx +0 -361
  29. package/src/components/Autocomplete/Autocomplete.types.ts +0 -13
  30. package/src/components/Autocomplete/_parts/AutocompleteChips.tsx +0 -55
  31. package/src/components/Autocomplete/_parts/AutocompleteLoader.tsx +0 -17
  32. package/src/components/Autocomplete/_parts/AutocompleteOption.tsx +0 -31
  33. package/src/components/Autocomplete/index.ts +0 -12
  34. package/src/components/Avatar/Avatar.definitions.ts +0 -162
  35. package/src/components/Avatar/Avatar.stories.tsx +0 -258
  36. package/src/components/Avatar/Avatar.tsx +0 -206
  37. package/src/components/Avatar/index.ts +0 -1
  38. package/src/components/Button/Button.definition.ts +0 -97
  39. package/src/components/Button/Button.stories.tsx +0 -285
  40. package/src/components/Button/Button.tsx +0 -67
  41. package/src/components/Button/index.ts +0 -1
  42. package/src/components/Card/Card.definition.ts +0 -5
  43. package/src/components/Card/Card.stories.tsx +0 -221
  44. package/src/components/Card/Card.sx.ts +0 -104
  45. package/src/components/Card/Card.tsx +0 -200
  46. package/src/components/Card/index.ts +0 -9
  47. package/src/components/Chip/Chip.definitions.ts +0 -167
  48. package/src/components/Chip/Chip.stories.tsx +0 -265
  49. package/src/components/Chip/Chip.tsx +0 -61
  50. package/src/components/Chip/index.ts +0 -1
  51. package/src/components/Column/Column.tsx +0 -29
  52. package/src/components/Column/index.ts +0 -1
  53. package/src/components/DatePicker/DatePicker.definitions.ts +0 -228
  54. package/src/components/DatePicker/DatePicker.helpers.ts +0 -24
  55. package/src/components/DatePicker/DatePicker.stories.tsx +0 -309
  56. package/src/components/DatePicker/DatePicker.sx.ts +0 -33
  57. package/src/components/DatePicker/DatePicker.tsx +0 -189
  58. package/src/components/DatePicker/DatePicker.types.ts +0 -10
  59. package/src/components/DatePicker/index.ts +0 -9
  60. package/src/components/DateRangePicker/DateRangePicker.definitions.ts +0 -191
  61. package/src/components/DateRangePicker/DateRangePicker.stories.tsx +0 -252
  62. package/src/components/DateRangePicker/DateRangePicker.tsx +0 -56
  63. package/src/components/DateRangePicker/index.ts +0 -1
  64. package/src/components/DateTimePicker/DateTimePicker.definitions.ts +0 -256
  65. package/src/components/DateTimePicker/DateTimePicker.helpers.ts +0 -38
  66. package/src/components/DateTimePicker/DateTimePicker.stories.tsx +0 -418
  67. package/src/components/DateTimePicker/DateTimePicker.sx.ts +0 -30
  68. package/src/components/DateTimePicker/DateTimePicker.tsx +0 -225
  69. package/src/components/DateTimePicker/DateTimePicker.types.ts +0 -10
  70. package/src/components/DateTimePicker/index.ts +0 -9
  71. package/src/components/Drawer/Drawer.stories.tsx +0 -270
  72. package/src/components/Drawer/Drawer.sx.ts +0 -106
  73. package/src/components/Drawer/Drawer.tsx +0 -214
  74. package/src/components/Drawer/DrawerContext.ts +0 -26
  75. package/src/components/Drawer/DrawerItem.tsx +0 -110
  76. package/src/components/Drawer/index.ts +0 -10
  77. package/src/components/Flyout/Flyout.stories.tsx +0 -282
  78. package/src/components/Flyout/Flyout.tsx +0 -122
  79. package/src/components/Flyout/index.ts +0 -1
  80. package/src/components/Gallery/Gallery.definition.tsx +0 -37
  81. package/src/components/Gallery/Gallery.stories.tsx +0 -82
  82. package/src/components/Gallery/Gallery.tsx +0 -118
  83. package/src/components/Gallery/GalleryLightbox.tsx +0 -170
  84. package/src/components/Gallery/GalleryMain.tsx +0 -84
  85. package/src/components/Gallery/GalleryThumbnails.tsx +0 -106
  86. package/src/components/Gallery/index.ts +0 -1
  87. package/src/components/Icon/Icon.stories.tsx +0 -121
  88. package/src/components/Icon/Icon.tsx +0 -175
  89. package/src/components/Icon/index.ts +0 -2
  90. package/src/components/Input/Input.definitions.ts +0 -324
  91. package/src/components/Input/Input.helpers.ts +0 -49
  92. package/src/components/Input/Input.stories.tsx +0 -499
  93. package/src/components/Input/Input.sx.ts +0 -42
  94. package/src/components/Input/Input.tsx +0 -141
  95. package/src/components/Input/Input.types.ts +0 -10
  96. package/src/components/Input/index.ts +0 -9
  97. package/src/components/InputGroup/InputGroup.definitions.ts +0 -158
  98. package/src/components/InputGroup/InputGroup.stories.tsx +0 -267
  99. package/src/components/InputGroup/InputGroup.tsx +0 -179
  100. package/src/components/InputGroup/index.ts +0 -1
  101. package/src/components/MenuButton/MenuButton.stories.tsx +0 -197
  102. package/src/components/MenuButton/MenuButton.tsx +0 -100
  103. package/src/components/MenuButton/index.ts +0 -1
  104. package/src/components/Modal/Modal.stories.tsx +0 -721
  105. package/src/components/Modal/Modal.tsx +0 -355
  106. package/src/components/Modal/ModalBody.tsx +0 -16
  107. package/src/components/Modal/ModalFooter.tsx +0 -71
  108. package/src/components/Modal/ModalHeader.tsx +0 -18
  109. package/src/components/Modal/index.ts +0 -6
  110. package/src/components/PageLoader/PageLoader.stories.tsx +0 -217
  111. package/src/components/PageLoader/PageLoader.tsx +0 -96
  112. package/src/components/PageLoader/index.ts +0 -2
  113. package/src/components/ScrollTopButton/ScrollTopButton.stories.tsx +0 -158
  114. package/src/components/ScrollTopButton/ScrollTopButton.tsx +0 -135
  115. package/src/components/ScrollTopButton/index.ts +0 -8
  116. package/src/components/ScrollTopButton/scrollToTop.ts +0 -37
  117. package/src/components/Select/Select.definitions.ts +0 -602
  118. package/src/components/Select/Select.helpers.ts +0 -71
  119. package/src/components/Select/Select.stories.tsx +0 -687
  120. package/src/components/Select/Select.sx.ts +0 -14
  121. package/src/components/Select/Select.tsx +0 -429
  122. package/src/components/Select/Select.types.ts +0 -15
  123. package/src/components/Select/_parts/SelectMenuItem.tsx +0 -40
  124. package/src/components/Select/_parts/SelectSearchHeader.tsx +0 -51
  125. package/src/components/Select/_parts/SelectValue.tsx +0 -96
  126. package/src/components/Select/index.ts +0 -14
  127. package/src/components/Stat/Stat.stories.tsx +0 -85
  128. package/src/components/Stat/Stat.tsx +0 -117
  129. package/src/components/Stat/index.ts +0 -2
  130. package/src/components/StatusMessage/StatusMessage.stories.tsx +0 -130
  131. package/src/components/StatusMessage/StatusMessage.tsx +0 -162
  132. package/src/components/StatusMessage/index.ts +0 -2
  133. package/src/components/Stepper/Step.tsx +0 -21
  134. package/src/components/Stepper/Stepper.definition.ts +0 -75
  135. package/src/components/Stepper/Stepper.stories.tsx +0 -122
  136. package/src/components/Stepper/Stepper.tsx +0 -75
  137. package/src/components/Stepper/index.ts +0 -2
  138. package/src/components/Table/EmptyTable.png +0 -0
  139. package/src/components/Table/Table.definition.ts +0 -580
  140. package/src/components/Table/Table.stories.tsx +0 -853
  141. package/src/components/Table/Table.tsx +0 -495
  142. package/src/components/Table/data.ts +0 -134
  143. package/src/components/Table/exportsUtils.ts +0 -195
  144. package/src/components/Table/index.ts +0 -3
  145. package/src/components/Table/types.ts +0 -34
  146. package/src/components/Tabs/Tab.definition.ts +0 -53
  147. package/src/components/Tabs/Tab.tsx +0 -19
  148. package/src/components/Tabs/Tabs.stories.tsx +0 -118
  149. package/src/components/Tabs/Tabs.tsx +0 -99
  150. package/src/components/Tabs/_tabUtils.tsx +0 -4
  151. package/src/components/Tabs/index.ts +0 -2
  152. package/src/components/Timeline/Timeline.definition.ts +0 -43
  153. package/src/components/Timeline/Timeline.stories.tsx +0 -108
  154. package/src/components/Timeline/Timeline.tsx +0 -49
  155. package/src/components/Timeline/TimelineItem.tsx +0 -31
  156. package/src/components/Timeline/index.ts +0 -2
  157. package/src/components/Tooltip/Tooltip.stories.tsx +0 -129
  158. package/src/components/Tooltip/Tooltip.tsx +0 -58
  159. package/src/components/Tooltip/index.ts +0 -1
  160. package/src/components/_shared/formField.sx.ts +0 -118
  161. package/src/components/_shared/resolvePreset.ts +0 -35
  162. package/src/hooks/ClipBoard/ClipBoard.stories.tsx +0 -168
  163. package/src/hooks/ClipBoard/ClipBoard.tsx +0 -131
  164. package/src/hooks/ClipBoard/ClipboardUnifiedDemo.tsx +0 -111
  165. package/src/hooks/ClipBoard/index.ts +0 -1
  166. package/src/hooks/Wizard/Wizard.stories.tsx +0 -301
  167. package/src/hooks/Wizard/WizardContext.tsx +0 -166
  168. package/src/hooks/Wizard/index.ts +0 -6
  169. package/src/hooks/Wizard/useWizard.ts +0 -13
  170. package/src/index.ts +0 -17
  171. package/src/mui.ts +0 -44
  172. package/src/styles.css +0 -3
  173. package/src/theme/componentStyles.ts +0 -47
  174. package/src/theme/tokens.ts +0 -43
  175. package/tailwind.config.js +0 -10
  176. package/tsconfig.json +0 -48
  177. package/tsup.config.js +0 -41
  178. package/vite.config.js +0 -132
  179. package/vitest.config.ts +0 -35
  180. /package/{dist/Button-C17mExpd.cjs → Button-C17mExpd.cjs} +0 -0
  181. /package/{dist/Button-C17mExpd.cjs.map → Button-C17mExpd.cjs.map} +0 -0
  182. /package/{dist/Button-UkkP-bNw.js → Button-UkkP-bNw.js} +0 -0
  183. /package/{dist/Button-UkkP-bNw.js.map → Button-UkkP-bNw.js.map} +0 -0
  184. /package/{Readme.md → README.md} +0 -0
  185. /package/{dist/components → components}/ActionMenu/ActionMenu.cjs +0 -0
  186. /package/{dist/components → components}/ActionMenu/ActionMenu.cjs.map +0 -0
  187. /package/{dist/components → components}/ActionMenu/ActionMenu.d.ts +0 -0
  188. /package/{dist/components → components}/ActionMenu/ActionMenu.js +0 -0
  189. /package/{dist/components → components}/ActionMenu/ActionMenu.js.map +0 -0
  190. /package/{dist/components → components}/ActionMenu/index.d.ts +0 -0
  191. /package/{dist/components → components}/ActionMenu.d.ts +0 -0
  192. /package/{dist/components → components}/AppBar/AppBar.cjs +0 -0
  193. /package/{dist/components → components}/AppBar/AppBar.cjs.map +0 -0
  194. /package/{dist/components → components}/AppBar/AppBar.d.ts +0 -0
  195. /package/{dist/components → components}/AppBar/AppBar.js +0 -0
  196. /package/{dist/components → components}/AppBar/AppBar.js.map +0 -0
  197. /package/{dist/components → components}/AppBar/AppBar.sx.d.ts +0 -0
  198. /package/{dist/components → components}/AppBar/AppBarBrand.d.ts +0 -0
  199. /package/{dist/components → components}/AppBar/AppBarContext.d.ts +0 -0
  200. /package/{dist/components → components}/AppBar/AppBarMenuToggle.d.ts +0 -0
  201. /package/{dist/components → components}/AppBar/AppBarUserMenu.d.ts +0 -0
  202. /package/{dist/components → components}/AppBar/index.d.ts +0 -0
  203. /package/{dist/components → components}/AppBar.d.ts +0 -0
  204. /package/{dist/components → components}/Autocomplete/Autocomplete.cjs +0 -0
  205. /package/{dist/components → components}/Autocomplete/Autocomplete.cjs.map +0 -0
  206. /package/{dist/components → components}/Autocomplete/Autocomplete.d.ts +0 -0
  207. /package/{dist/components → components}/Autocomplete/Autocomplete.definitions.d.ts +0 -0
  208. /package/{dist/components → components}/Autocomplete/Autocomplete.helpers.d.ts +0 -0
  209. /package/{dist/components → components}/Autocomplete/Autocomplete.js +0 -0
  210. /package/{dist/components → components}/Autocomplete/Autocomplete.js.map +0 -0
  211. /package/{dist/components → components}/Autocomplete/Autocomplete.sx.d.ts +0 -0
  212. /package/{dist/components → components}/Autocomplete/Autocomplete.types.d.ts +0 -0
  213. /package/{dist/components → components}/Autocomplete/_parts/AutocompleteChips.d.ts +0 -0
  214. /package/{dist/components → components}/Autocomplete/_parts/AutocompleteLoader.d.ts +0 -0
  215. /package/{dist/components → components}/Autocomplete/_parts/AutocompleteOption.d.ts +0 -0
  216. /package/{dist/components → components}/Autocomplete/index.d.ts +0 -0
  217. /package/{dist/components → components}/Autocomplete.d.ts +0 -0
  218. /package/{dist/components → components}/Avatar/Avatar.cjs +0 -0
  219. /package/{dist/components → components}/Avatar/Avatar.cjs.map +0 -0
  220. /package/{dist/components → components}/Avatar/Avatar.d.ts +0 -0
  221. /package/{dist/components → components}/Avatar/Avatar.definitions.d.ts +0 -0
  222. /package/{dist/components → components}/Avatar/Avatar.js +0 -0
  223. /package/{dist/components → components}/Avatar/Avatar.js.map +0 -0
  224. /package/{dist/components → components}/Avatar/index.d.ts +0 -0
  225. /package/{dist/components → components}/Avatar.d.ts +0 -0
  226. /package/{dist/components → components}/Button/Button.cjs +0 -0
  227. /package/{dist/components → components}/Button/Button.cjs.map +0 -0
  228. /package/{dist/components → components}/Button/Button.d.ts +0 -0
  229. /package/{dist/components → components}/Button/Button.definition.d.ts +0 -0
  230. /package/{dist/components → components}/Button/Button.js +0 -0
  231. /package/{dist/components → components}/Button/Button.js.map +0 -0
  232. /package/{dist/components → components}/Button/index.d.ts +0 -0
  233. /package/{dist/components → components}/Button.d.ts +0 -0
  234. /package/{dist/components → components}/Card/Card.cjs +0 -0
  235. /package/{dist/components → components}/Card/Card.cjs.map +0 -0
  236. /package/{dist/components → components}/Card/Card.d.ts +0 -0
  237. /package/{dist/components → components}/Card/Card.definition.d.ts +0 -0
  238. /package/{dist/components → components}/Card/Card.js +0 -0
  239. /package/{dist/components → components}/Card/Card.js.map +0 -0
  240. /package/{dist/components → components}/Card/Card.sx.d.ts +0 -0
  241. /package/{dist/components → components}/Card/index.d.ts +0 -0
  242. /package/{dist/components → components}/Card.d.ts +0 -0
  243. /package/{dist/components → components}/Chip/Chip.cjs +0 -0
  244. /package/{dist/components → components}/Chip/Chip.cjs.map +0 -0
  245. /package/{dist/components → components}/Chip/Chip.d.ts +0 -0
  246. /package/{dist/components → components}/Chip/Chip.definitions.d.ts +0 -0
  247. /package/{dist/components → components}/Chip/Chip.js +0 -0
  248. /package/{dist/components → components}/Chip/Chip.js.map +0 -0
  249. /package/{dist/components → components}/Chip/index.d.ts +0 -0
  250. /package/{dist/components → components}/Chip.d.ts +0 -0
  251. /package/{dist/components → components}/Column/Column.cjs +0 -0
  252. /package/{dist/components → components}/Column/Column.cjs.map +0 -0
  253. /package/{dist/components → components}/Column/Column.d.ts +0 -0
  254. /package/{dist/components → components}/Column/Column.js +0 -0
  255. /package/{dist/components → components}/Column/Column.js.map +0 -0
  256. /package/{dist/components → components}/Column/index.d.ts +0 -0
  257. /package/{dist/components → components}/Column.d.ts +0 -0
  258. /package/{dist/components → components}/DatePicker/DatePicker.cjs +0 -0
  259. /package/{dist/components → components}/DatePicker/DatePicker.cjs.map +0 -0
  260. /package/{dist/components → components}/DatePicker/DatePicker.d.ts +0 -0
  261. /package/{dist/components → components}/DatePicker/DatePicker.definitions.d.ts +0 -0
  262. /package/{dist/components → components}/DatePicker/DatePicker.helpers.d.ts +0 -0
  263. /package/{dist/components → components}/DatePicker/DatePicker.js +0 -0
  264. /package/{dist/components → components}/DatePicker/DatePicker.js.map +0 -0
  265. /package/{dist/components → components}/DatePicker/DatePicker.sx.d.ts +0 -0
  266. /package/{dist/components → components}/DatePicker/DatePicker.types.d.ts +0 -0
  267. /package/{dist/components → components}/DatePicker/index.d.ts +0 -0
  268. /package/{dist/components → components}/DatePicker.d.ts +0 -0
  269. /package/{dist/components → components}/DateRangePicker/DateRangePicker.cjs +0 -0
  270. /package/{dist/components → components}/DateRangePicker/DateRangePicker.cjs.map +0 -0
  271. /package/{dist/components → components}/DateRangePicker/DateRangePicker.d.ts +0 -0
  272. /package/{dist/components → components}/DateRangePicker/DateRangePicker.definitions.d.ts +0 -0
  273. /package/{dist/components → components}/DateRangePicker/DateRangePicker.js +0 -0
  274. /package/{dist/components → components}/DateRangePicker/DateRangePicker.js.map +0 -0
  275. /package/{dist/components → components}/DateRangePicker/index.d.ts +0 -0
  276. /package/{dist/components → components}/DateRangePicker.d.ts +0 -0
  277. /package/{dist/components → components}/DateTimePicker/DateTimePicker.cjs +0 -0
  278. /package/{dist/components → components}/DateTimePicker/DateTimePicker.cjs.map +0 -0
  279. /package/{dist/components → components}/DateTimePicker/DateTimePicker.d.ts +0 -0
  280. /package/{dist/components → components}/DateTimePicker/DateTimePicker.definitions.d.ts +0 -0
  281. /package/{dist/components → components}/DateTimePicker/DateTimePicker.helpers.d.ts +0 -0
  282. /package/{dist/components → components}/DateTimePicker/DateTimePicker.js +0 -0
  283. /package/{dist/components → components}/DateTimePicker/DateTimePicker.js.map +0 -0
  284. /package/{dist/components → components}/DateTimePicker/DateTimePicker.sx.d.ts +0 -0
  285. /package/{dist/components → components}/DateTimePicker/DateTimePicker.types.d.ts +0 -0
  286. /package/{dist/components → components}/DateTimePicker/index.d.ts +0 -0
  287. /package/{dist/components → components}/DateTimePicker.d.ts +0 -0
  288. /package/{dist/components → components}/Drawer/Drawer.cjs +0 -0
  289. /package/{dist/components → components}/Drawer/Drawer.cjs.map +0 -0
  290. /package/{dist/components → components}/Drawer/Drawer.d.ts +0 -0
  291. /package/{dist/components → components}/Drawer/Drawer.js +0 -0
  292. /package/{dist/components → components}/Drawer/Drawer.js.map +0 -0
  293. /package/{dist/components → components}/Drawer/Drawer.sx.d.ts +0 -0
  294. /package/{dist/components → components}/Drawer/DrawerContext.d.ts +0 -0
  295. /package/{dist/components → components}/Drawer/DrawerItem.d.ts +0 -0
  296. /package/{dist/components → components}/Drawer/index.d.ts +0 -0
  297. /package/{dist/components → components}/Drawer.d.ts +0 -0
  298. /package/{dist/components → components}/Flyout/Flyout.cjs +0 -0
  299. /package/{dist/components → components}/Flyout/Flyout.cjs.map +0 -0
  300. /package/{dist/components → components}/Flyout/Flyout.d.ts +0 -0
  301. /package/{dist/components → components}/Flyout/Flyout.js +0 -0
  302. /package/{dist/components → components}/Flyout/Flyout.js.map +0 -0
  303. /package/{dist/components → components}/Flyout/index.d.ts +0 -0
  304. /package/{dist/components → components}/Flyout.d.ts +0 -0
  305. /package/{dist/components → components}/Gallery/Gallery.cjs +0 -0
  306. /package/{dist/components → components}/Gallery/Gallery.cjs.map +0 -0
  307. /package/{dist/components → components}/Gallery/Gallery.d.ts +0 -0
  308. /package/{dist/components → components}/Gallery/Gallery.definition.d.ts +0 -0
  309. /package/{dist/components → components}/Gallery/Gallery.js +0 -0
  310. /package/{dist/components → components}/Gallery/Gallery.js.map +0 -0
  311. /package/{dist/components → components}/Gallery/GalleryLightbox.d.ts +0 -0
  312. /package/{dist/components → components}/Gallery/GalleryMain.d.ts +0 -0
  313. /package/{dist/components → components}/Gallery/GalleryThumbnails.d.ts +0 -0
  314. /package/{dist/components → components}/Gallery/index.d.ts +0 -0
  315. /package/{dist/components → components}/Gallery.d.ts +0 -0
  316. /package/{dist/components → components}/Icon/Icon.cjs +0 -0
  317. /package/{dist/components → components}/Icon/Icon.cjs.map +0 -0
  318. /package/{dist/components → components}/Icon/Icon.d.ts +0 -0
  319. /package/{dist/components → components}/Icon/Icon.js +0 -0
  320. /package/{dist/components → components}/Icon/Icon.js.map +0 -0
  321. /package/{dist/components → components}/Icon/index.d.ts +0 -0
  322. /package/{dist/components → components}/Icon.d.ts +0 -0
  323. /package/{dist/components → components}/Input/Input.cjs +0 -0
  324. /package/{dist/components → components}/Input/Input.cjs.map +0 -0
  325. /package/{dist/components → components}/Input/Input.d.ts +0 -0
  326. /package/{dist/components → components}/Input/Input.definitions.d.ts +0 -0
  327. /package/{dist/components → components}/Input/Input.helpers.d.ts +0 -0
  328. /package/{dist/components → components}/Input/Input.js +0 -0
  329. /package/{dist/components → components}/Input/Input.js.map +0 -0
  330. /package/{dist/components → components}/Input/Input.sx.d.ts +0 -0
  331. /package/{dist/components → components}/Input/Input.types.d.ts +0 -0
  332. /package/{dist/components → components}/Input/index.d.ts +0 -0
  333. /package/{dist/components → components}/Input.d.ts +0 -0
  334. /package/{dist/components → components}/InputGroup/InputGroup.cjs +0 -0
  335. /package/{dist/components → components}/InputGroup/InputGroup.cjs.map +0 -0
  336. /package/{dist/components → components}/InputGroup/InputGroup.d.ts +0 -0
  337. /package/{dist/components → components}/InputGroup/InputGroup.definitions.d.ts +0 -0
  338. /package/{dist/components → components}/InputGroup/InputGroup.js +0 -0
  339. /package/{dist/components → components}/InputGroup/InputGroup.js.map +0 -0
  340. /package/{dist/components → components}/InputGroup/index.d.ts +0 -0
  341. /package/{dist/components → components}/InputGroup.d.ts +0 -0
  342. /package/{dist/components → components}/MenuButton/MenuButton.cjs +0 -0
  343. /package/{dist/components → components}/MenuButton/MenuButton.cjs.map +0 -0
  344. /package/{dist/components → components}/MenuButton/MenuButton.d.ts +0 -0
  345. /package/{dist/components → components}/MenuButton/MenuButton.js +0 -0
  346. /package/{dist/components → components}/MenuButton/MenuButton.js.map +0 -0
  347. /package/{dist/components → components}/MenuButton/index.d.ts +0 -0
  348. /package/{dist/components → components}/MenuButton.d.ts +0 -0
  349. /package/{dist/components → components}/Modal/Modal.cjs +0 -0
  350. /package/{dist/components → components}/Modal/Modal.cjs.map +0 -0
  351. /package/{dist/components → components}/Modal/Modal.d.ts +0 -0
  352. /package/{dist/components → components}/Modal/Modal.js +0 -0
  353. /package/{dist/components → components}/Modal/Modal.js.map +0 -0
  354. /package/{dist/components → components}/Modal/ModalBody.d.ts +0 -0
  355. /package/{dist/components → components}/Modal/ModalFooter.d.ts +0 -0
  356. /package/{dist/components → components}/Modal/ModalHeader.d.ts +0 -0
  357. /package/{dist/components → components}/Modal/index.d.ts +0 -0
  358. /package/{dist/components → components}/Modal.d.ts +0 -0
  359. /package/{dist/components → components}/PageLoader/PageLoader.cjs +0 -0
  360. /package/{dist/components → components}/PageLoader/PageLoader.cjs.map +0 -0
  361. /package/{dist/components → components}/PageLoader/PageLoader.d.ts +0 -0
  362. /package/{dist/components → components}/PageLoader/PageLoader.js +0 -0
  363. /package/{dist/components → components}/PageLoader/PageLoader.js.map +0 -0
  364. /package/{dist/components → components}/PageLoader/index.d.ts +0 -0
  365. /package/{dist/components → components}/PageLoader.d.ts +0 -0
  366. /package/{dist/components → components}/ScrollTopButton/ScrollTopButton.cjs +0 -0
  367. /package/{dist/components → components}/ScrollTopButton/ScrollTopButton.cjs.map +0 -0
  368. /package/{dist/components → components}/ScrollTopButton/ScrollTopButton.d.ts +0 -0
  369. /package/{dist/components → components}/ScrollTopButton/ScrollTopButton.js +0 -0
  370. /package/{dist/components → components}/ScrollTopButton/ScrollTopButton.js.map +0 -0
  371. /package/{dist/components → components}/ScrollTopButton/index.d.ts +0 -0
  372. /package/{dist/components → components}/ScrollTopButton/scrollToTop.d.ts +0 -0
  373. /package/{dist/components → components}/ScrollTopButton.d.ts +0 -0
  374. /package/{dist/components → components}/Select/Select.cjs +0 -0
  375. /package/{dist/components → components}/Select/Select.cjs.map +0 -0
  376. /package/{dist/components → components}/Select/Select.d.ts +0 -0
  377. /package/{dist/components → components}/Select/Select.definitions.d.ts +0 -0
  378. /package/{dist/components → components}/Select/Select.helpers.d.ts +0 -0
  379. /package/{dist/components → components}/Select/Select.js +0 -0
  380. /package/{dist/components → components}/Select/Select.js.map +0 -0
  381. /package/{dist/components → components}/Select/Select.sx.d.ts +0 -0
  382. /package/{dist/components → components}/Select/Select.types.d.ts +0 -0
  383. /package/{dist/components → components}/Select/_parts/SelectMenuItem.d.ts +0 -0
  384. /package/{dist/components → components}/Select/_parts/SelectSearchHeader.d.ts +0 -0
  385. /package/{dist/components → components}/Select/_parts/SelectValue.d.ts +0 -0
  386. /package/{dist/components → components}/Select/index.d.ts +0 -0
  387. /package/{dist/components → components}/Select.d.ts +0 -0
  388. /package/{dist/components → components}/Stat/Stat.cjs +0 -0
  389. /package/{dist/components → components}/Stat/Stat.cjs.map +0 -0
  390. /package/{dist/components → components}/Stat/Stat.d.ts +0 -0
  391. /package/{dist/components → components}/Stat/Stat.js +0 -0
  392. /package/{dist/components → components}/Stat/Stat.js.map +0 -0
  393. /package/{dist/components → components}/Stat/index.d.ts +0 -0
  394. /package/{dist/components → components}/Stat.d.ts +0 -0
  395. /package/{dist/components → components}/StatusMessage/StatusMessage.cjs +0 -0
  396. /package/{dist/components → components}/StatusMessage/StatusMessage.cjs.map +0 -0
  397. /package/{dist/components → components}/StatusMessage/StatusMessage.d.ts +0 -0
  398. /package/{dist/components → components}/StatusMessage/StatusMessage.js +0 -0
  399. /package/{dist/components → components}/StatusMessage/StatusMessage.js.map +0 -0
  400. /package/{dist/components → components}/StatusMessage/index.d.ts +0 -0
  401. /package/{dist/components → components}/StatusMessage.d.ts +0 -0
  402. /package/{dist/components → components}/Stepper/Step.d.ts +0 -0
  403. /package/{dist/components → components}/Stepper/Stepper.cjs +0 -0
  404. /package/{dist/components → components}/Stepper/Stepper.cjs.map +0 -0
  405. /package/{dist/components → components}/Stepper/Stepper.d.ts +0 -0
  406. /package/{dist/components → components}/Stepper/Stepper.definition.d.ts +0 -0
  407. /package/{dist/components → components}/Stepper/Stepper.js +0 -0
  408. /package/{dist/components → components}/Stepper/Stepper.js.map +0 -0
  409. /package/{dist/components → components}/Stepper/index.d.ts +0 -0
  410. /package/{dist/components → components}/Stepper.d.ts +0 -0
  411. /package/{dist/components → components}/Table/Table.cjs +0 -0
  412. /package/{dist/components → components}/Table/Table.cjs.map +0 -0
  413. /package/{dist/components → components}/Table/Table.d.ts +0 -0
  414. /package/{dist/components → components}/Table/Table.definition.d.ts +0 -0
  415. /package/{dist/components → components}/Table/Table.js +0 -0
  416. /package/{dist/components → components}/Table/Table.js.map +0 -0
  417. /package/{dist/components → components}/Table/data.d.ts +0 -0
  418. /package/{dist/components → components}/Table/exportsUtils.d.ts +0 -0
  419. /package/{dist/components → components}/Table/index.d.ts +0 -0
  420. /package/{dist/components → components}/Table/types.d.ts +0 -0
  421. /package/{dist/components → components}/Table.d.ts +0 -0
  422. /package/{dist/components → components}/Tabs/Tab.d.ts +0 -0
  423. /package/{dist/components → components}/Tabs/Tab.definition.d.ts +0 -0
  424. /package/{dist/components → components}/Tabs/Tabs.cjs +0 -0
  425. /package/{dist/components → components}/Tabs/Tabs.cjs.map +0 -0
  426. /package/{dist/components → components}/Tabs/Tabs.d.ts +0 -0
  427. /package/{dist/components → components}/Tabs/Tabs.js +0 -0
  428. /package/{dist/components → components}/Tabs/Tabs.js.map +0 -0
  429. /package/{dist/components → components}/Tabs/_tabUtils.d.ts +0 -0
  430. /package/{dist/components → components}/Tabs/index.d.ts +0 -0
  431. /package/{dist/components → components}/Tabs.d.ts +0 -0
  432. /package/{dist/components → components}/Timeline/Timeline.cjs +0 -0
  433. /package/{dist/components → components}/Timeline/Timeline.cjs.map +0 -0
  434. /package/{dist/components → components}/Timeline/Timeline.d.ts +0 -0
  435. /package/{dist/components → components}/Timeline/Timeline.definition.d.ts +0 -0
  436. /package/{dist/components → components}/Timeline/Timeline.js +0 -0
  437. /package/{dist/components → components}/Timeline/Timeline.js.map +0 -0
  438. /package/{dist/components → components}/Timeline/TimelineItem.d.ts +0 -0
  439. /package/{dist/components → components}/Timeline/index.d.ts +0 -0
  440. /package/{dist/components → components}/Timeline.d.ts +0 -0
  441. /package/{dist/components → components}/Tooltip/Tooltip.cjs +0 -0
  442. /package/{dist/components → components}/Tooltip/Tooltip.cjs.map +0 -0
  443. /package/{dist/components → components}/Tooltip/Tooltip.d.ts +0 -0
  444. /package/{dist/components → components}/Tooltip/Tooltip.js +0 -0
  445. /package/{dist/components → components}/Tooltip/Tooltip.js.map +0 -0
  446. /package/{dist/components → components}/Tooltip/index.d.ts +0 -0
  447. /package/{dist/components → components}/Tooltip.d.ts +0 -0
  448. /package/{dist/components → components}/_shared/formField.sx.d.ts +0 -0
  449. /package/{dist/components → components}/_shared/resolvePreset.d.ts +0 -0
  450. /package/{dist/formField.sx-CQ1mbk9M.cjs → formField.sx-CQ1mbk9M.cjs} +0 -0
  451. /package/{dist/formField.sx-CQ1mbk9M.cjs.map → formField.sx-CQ1mbk9M.cjs.map} +0 -0
  452. /package/{dist/formField.sx-DfVbMe0V.js → formField.sx-DfVbMe0V.js} +0 -0
  453. /package/{dist/formField.sx-DfVbMe0V.js.map → formField.sx-DfVbMe0V.js.map} +0 -0
  454. /package/{dist/hooks → hooks}/ClipBoard/ClipBoard.cjs +0 -0
  455. /package/{dist/hooks → hooks}/ClipBoard/ClipBoard.cjs.map +0 -0
  456. /package/{dist/hooks → hooks}/ClipBoard/ClipBoard.d.ts +0 -0
  457. /package/{dist/hooks → hooks}/ClipBoard/ClipBoard.js +0 -0
  458. /package/{dist/hooks → hooks}/ClipBoard/ClipBoard.js.map +0 -0
  459. /package/{dist/hooks → hooks}/ClipBoard/ClipboardUnifiedDemo.d.ts +0 -0
  460. /package/{dist/hooks → hooks}/ClipBoard/index.d.ts +0 -0
  461. /package/{dist/hooks → hooks}/ClipBoard.d.ts +0 -0
  462. /package/{dist/hooks → hooks}/Wizard/Wizard.cjs +0 -0
  463. /package/{dist/hooks → hooks}/Wizard/Wizard.cjs.map +0 -0
  464. /package/{dist/hooks → hooks}/Wizard/Wizard.js +0 -0
  465. /package/{dist/hooks → hooks}/Wizard/Wizard.js.map +0 -0
  466. /package/{dist/hooks → hooks}/Wizard/WizardContext.d.ts +0 -0
  467. /package/{dist/hooks → hooks}/Wizard/index.d.ts +0 -0
  468. /package/{dist/hooks → hooks}/Wizard/useWizard.d.ts +0 -0
  469. /package/{dist/hooks → hooks}/Wizard.d.ts +0 -0
  470. /package/{dist/index.cjs → index.cjs} +0 -0
  471. /package/{dist/index.cjs.map → index.cjs.map} +0 -0
  472. /package/{dist/index.d.ts → index.d.ts} +0 -0
  473. /package/{dist/index.js → index.js} +0 -0
  474. /package/{dist/index.js.map → index.js.map} +0 -0
  475. /package/{dist/mui.d.ts → mui.d.ts} +0 -0
  476. /package/{dist/resolvePreset-B-IB0ehH.js → resolvePreset-B-IB0ehH.js} +0 -0
  477. /package/{dist/resolvePreset-B-IB0ehH.js.map → resolvePreset-B-IB0ehH.js.map} +0 -0
  478. /package/{dist/resolvePreset-CT3kU-K2.cjs → resolvePreset-CT3kU-K2.cjs} +0 -0
  479. /package/{dist/resolvePreset-CT3kU-K2.cjs.map → resolvePreset-CT3kU-K2.cjs.map} +0 -0
  480. /package/{dist/styles.css → styles.css} +0 -0
  481. /package/{dist/theme → theme}/componentStyles.d.ts +0 -0
  482. /package/{dist/theme → theme}/tokens.d.ts +0 -0
  483. /package/{dist/useWizard-CWdIxZzX.cjs → useWizard-CWdIxZzX.cjs} +0 -0
  484. /package/{dist/useWizard-CWdIxZzX.cjs.map → useWizard-CWdIxZzX.cjs.map} +0 -0
  485. /package/{dist/useWizard-CWq--C3o.js → useWizard-CWq--C3o.js} +0 -0
  486. /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
- };