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

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 (488) hide show
  1. package/.dockerignore +8 -0
  2. package/.github/workflows/publish.yml +107 -0
  3. package/.prettierrc +3 -0
  4. package/.storybook/main.ts +19 -0
  5. package/.storybook/preview.ts +14 -0
  6. package/.storybook/vitest.setup.ts +9 -0
  7. package/Dockerfile +37 -0
  8. package/build.js +102 -0
  9. package/chromatic.config.json +5 -0
  10. package/cleanDirectories.js +40 -0
  11. package/dist/README.md +243 -0
  12. package/{index.cjs → dist/index.cjs} +24 -0
  13. package/{index.cjs.map → dist/index.cjs.map} +1 -1
  14. package/{index.js → dist/index.js} +7 -1
  15. package/{mui.d.ts → dist/mui.d.ts} +1 -0
  16. package/dist/package.json +197 -0
  17. package/package.json +43 -164
  18. package/rollup.config.cjs +87 -0
  19. package/src/components/ActionMenu/ActionMenu.stories.tsx +230 -0
  20. package/src/components/ActionMenu/ActionMenu.tsx +174 -0
  21. package/src/components/ActionMenu/index.ts +2 -0
  22. package/src/components/AppBar/AppBar.stories.tsx +272 -0
  23. package/src/components/AppBar/AppBar.sx.ts +32 -0
  24. package/src/components/AppBar/AppBar.tsx +123 -0
  25. package/src/components/AppBar/AppBarBrand.tsx +120 -0
  26. package/src/components/AppBar/AppBarContext.ts +25 -0
  27. package/src/components/AppBar/AppBarMenuToggle.tsx +90 -0
  28. package/src/components/AppBar/AppBarUserMenu.tsx +217 -0
  29. package/src/components/AppBar/index.ts +25 -0
  30. package/src/components/Autocomplete/Autocomplete.definitions.ts +477 -0
  31. package/src/components/Autocomplete/Autocomplete.helpers.ts +60 -0
  32. package/src/components/Autocomplete/Autocomplete.stories.tsx +748 -0
  33. package/src/components/Autocomplete/Autocomplete.sx.ts +30 -0
  34. package/src/components/Autocomplete/Autocomplete.tsx +361 -0
  35. package/src/components/Autocomplete/Autocomplete.types.ts +13 -0
  36. package/src/components/Autocomplete/_parts/AutocompleteChips.tsx +55 -0
  37. package/src/components/Autocomplete/_parts/AutocompleteLoader.tsx +17 -0
  38. package/src/components/Autocomplete/_parts/AutocompleteOption.tsx +31 -0
  39. package/src/components/Autocomplete/index.ts +12 -0
  40. package/src/components/Avatar/Avatar.definitions.ts +162 -0
  41. package/src/components/Avatar/Avatar.stories.tsx +258 -0
  42. package/src/components/Avatar/Avatar.tsx +206 -0
  43. package/src/components/Avatar/index.ts +1 -0
  44. package/src/components/Button/Button.definition.ts +97 -0
  45. package/src/components/Button/Button.stories.tsx +285 -0
  46. package/src/components/Button/Button.tsx +67 -0
  47. package/src/components/Button/index.ts +1 -0
  48. package/src/components/Card/Card.definition.ts +5 -0
  49. package/src/components/Card/Card.stories.tsx +221 -0
  50. package/src/components/Card/Card.sx.ts +104 -0
  51. package/src/components/Card/Card.tsx +200 -0
  52. package/src/components/Card/index.ts +9 -0
  53. package/src/components/Chip/Chip.definitions.ts +167 -0
  54. package/src/components/Chip/Chip.stories.tsx +265 -0
  55. package/src/components/Chip/Chip.tsx +61 -0
  56. package/src/components/Chip/index.ts +1 -0
  57. package/src/components/Column/Column.tsx +29 -0
  58. package/src/components/Column/index.ts +1 -0
  59. package/src/components/DatePicker/DatePicker.definitions.ts +228 -0
  60. package/src/components/DatePicker/DatePicker.helpers.ts +24 -0
  61. package/src/components/DatePicker/DatePicker.stories.tsx +309 -0
  62. package/src/components/DatePicker/DatePicker.sx.ts +33 -0
  63. package/src/components/DatePicker/DatePicker.tsx +189 -0
  64. package/src/components/DatePicker/DatePicker.types.ts +10 -0
  65. package/src/components/DatePicker/index.ts +9 -0
  66. package/src/components/DateRangePicker/DateRangePicker.definitions.ts +191 -0
  67. package/src/components/DateRangePicker/DateRangePicker.stories.tsx +252 -0
  68. package/src/components/DateRangePicker/DateRangePicker.tsx +56 -0
  69. package/src/components/DateRangePicker/index.ts +1 -0
  70. package/src/components/DateTimePicker/DateTimePicker.definitions.ts +256 -0
  71. package/src/components/DateTimePicker/DateTimePicker.helpers.ts +38 -0
  72. package/src/components/DateTimePicker/DateTimePicker.stories.tsx +418 -0
  73. package/src/components/DateTimePicker/DateTimePicker.sx.ts +30 -0
  74. package/src/components/DateTimePicker/DateTimePicker.tsx +225 -0
  75. package/src/components/DateTimePicker/DateTimePicker.types.ts +10 -0
  76. package/src/components/DateTimePicker/index.ts +9 -0
  77. package/src/components/Drawer/Drawer.stories.tsx +270 -0
  78. package/src/components/Drawer/Drawer.sx.ts +106 -0
  79. package/src/components/Drawer/Drawer.tsx +214 -0
  80. package/src/components/Drawer/DrawerContext.ts +26 -0
  81. package/src/components/Drawer/DrawerItem.tsx +110 -0
  82. package/src/components/Drawer/index.ts +10 -0
  83. package/src/components/Flyout/Flyout.stories.tsx +282 -0
  84. package/src/components/Flyout/Flyout.tsx +122 -0
  85. package/src/components/Flyout/index.ts +1 -0
  86. package/src/components/Gallery/Gallery.definition.tsx +37 -0
  87. package/src/components/Gallery/Gallery.stories.tsx +82 -0
  88. package/src/components/Gallery/Gallery.tsx +118 -0
  89. package/src/components/Gallery/GalleryLightbox.tsx +170 -0
  90. package/src/components/Gallery/GalleryMain.tsx +84 -0
  91. package/src/components/Gallery/GalleryThumbnails.tsx +106 -0
  92. package/src/components/Gallery/index.ts +1 -0
  93. package/src/components/Icon/Icon.stories.tsx +121 -0
  94. package/src/components/Icon/Icon.tsx +175 -0
  95. package/src/components/Icon/index.ts +2 -0
  96. package/src/components/Input/Input.definitions.ts +324 -0
  97. package/src/components/Input/Input.helpers.ts +49 -0
  98. package/src/components/Input/Input.stories.tsx +499 -0
  99. package/src/components/Input/Input.sx.ts +42 -0
  100. package/src/components/Input/Input.tsx +141 -0
  101. package/src/components/Input/Input.types.ts +10 -0
  102. package/src/components/Input/index.ts +9 -0
  103. package/src/components/InputGroup/InputGroup.definitions.ts +158 -0
  104. package/src/components/InputGroup/InputGroup.stories.tsx +267 -0
  105. package/src/components/InputGroup/InputGroup.tsx +179 -0
  106. package/src/components/InputGroup/index.ts +1 -0
  107. package/src/components/MenuButton/MenuButton.stories.tsx +197 -0
  108. package/src/components/MenuButton/MenuButton.tsx +100 -0
  109. package/src/components/MenuButton/index.ts +1 -0
  110. package/src/components/Modal/Modal.stories.tsx +721 -0
  111. package/src/components/Modal/Modal.tsx +355 -0
  112. package/src/components/Modal/ModalBody.tsx +16 -0
  113. package/src/components/Modal/ModalFooter.tsx +71 -0
  114. package/src/components/Modal/ModalHeader.tsx +18 -0
  115. package/src/components/Modal/index.ts +6 -0
  116. package/src/components/PageLoader/PageLoader.stories.tsx +217 -0
  117. package/src/components/PageLoader/PageLoader.tsx +96 -0
  118. package/src/components/PageLoader/index.ts +2 -0
  119. package/src/components/ScrollTopButton/ScrollTopButton.stories.tsx +158 -0
  120. package/src/components/ScrollTopButton/ScrollTopButton.tsx +135 -0
  121. package/src/components/ScrollTopButton/index.ts +8 -0
  122. package/src/components/ScrollTopButton/scrollToTop.ts +37 -0
  123. package/src/components/Select/Select.definitions.ts +602 -0
  124. package/src/components/Select/Select.helpers.ts +71 -0
  125. package/src/components/Select/Select.stories.tsx +687 -0
  126. package/src/components/Select/Select.sx.ts +14 -0
  127. package/src/components/Select/Select.tsx +429 -0
  128. package/src/components/Select/Select.types.ts +15 -0
  129. package/src/components/Select/_parts/SelectMenuItem.tsx +40 -0
  130. package/src/components/Select/_parts/SelectSearchHeader.tsx +51 -0
  131. package/src/components/Select/_parts/SelectValue.tsx +96 -0
  132. package/src/components/Select/index.ts +14 -0
  133. package/src/components/Stat/Stat.stories.tsx +85 -0
  134. package/src/components/Stat/Stat.tsx +117 -0
  135. package/src/components/Stat/index.ts +2 -0
  136. package/src/components/StatusMessage/StatusMessage.stories.tsx +130 -0
  137. package/src/components/StatusMessage/StatusMessage.tsx +162 -0
  138. package/src/components/StatusMessage/index.ts +2 -0
  139. package/src/components/Stepper/Step.tsx +21 -0
  140. package/src/components/Stepper/Stepper.definition.ts +75 -0
  141. package/src/components/Stepper/Stepper.stories.tsx +122 -0
  142. package/src/components/Stepper/Stepper.tsx +75 -0
  143. package/src/components/Stepper/index.ts +2 -0
  144. package/src/components/Table/EmptyTable.png +0 -0
  145. package/src/components/Table/Table.definition.ts +580 -0
  146. package/src/components/Table/Table.stories.tsx +853 -0
  147. package/src/components/Table/Table.tsx +495 -0
  148. package/src/components/Table/data.ts +134 -0
  149. package/src/components/Table/exportsUtils.ts +195 -0
  150. package/src/components/Table/index.ts +3 -0
  151. package/src/components/Table/types.ts +34 -0
  152. package/src/components/Tabs/Tab.definition.ts +53 -0
  153. package/src/components/Tabs/Tab.tsx +19 -0
  154. package/src/components/Tabs/Tabs.stories.tsx +118 -0
  155. package/src/components/Tabs/Tabs.tsx +99 -0
  156. package/src/components/Tabs/_tabUtils.tsx +4 -0
  157. package/src/components/Tabs/index.ts +2 -0
  158. package/src/components/Timeline/Timeline.definition.ts +43 -0
  159. package/src/components/Timeline/Timeline.stories.tsx +108 -0
  160. package/src/components/Timeline/Timeline.tsx +49 -0
  161. package/src/components/Timeline/TimelineItem.tsx +31 -0
  162. package/src/components/Timeline/index.ts +2 -0
  163. package/src/components/Tooltip/Tooltip.stories.tsx +129 -0
  164. package/src/components/Tooltip/Tooltip.tsx +58 -0
  165. package/src/components/Tooltip/index.ts +1 -0
  166. package/src/components/_shared/formField.sx.ts +118 -0
  167. package/src/components/_shared/resolvePreset.ts +35 -0
  168. package/src/hooks/ClipBoard/ClipBoard.stories.tsx +168 -0
  169. package/src/hooks/ClipBoard/ClipBoard.tsx +131 -0
  170. package/src/hooks/ClipBoard/ClipboardUnifiedDemo.tsx +111 -0
  171. package/src/hooks/ClipBoard/index.ts +1 -0
  172. package/src/hooks/Wizard/Wizard.stories.tsx +301 -0
  173. package/src/hooks/Wizard/WizardContext.tsx +166 -0
  174. package/src/hooks/Wizard/index.ts +6 -0
  175. package/src/hooks/Wizard/useWizard.ts +13 -0
  176. package/src/index.ts +17 -0
  177. package/src/mui.ts +54 -0
  178. package/src/styles.css +3 -0
  179. package/src/theme/componentStyles.ts +47 -0
  180. package/src/theme/tokens.ts +43 -0
  181. package/tailwind.config.js +10 -0
  182. package/tsconfig.json +48 -0
  183. package/tsup.config.js +41 -0
  184. package/vite.config.js +132 -0
  185. package/vitest.config.ts +35 -0
  186. /package/{README.md → Readme.md} +0 -0
  187. /package/{Button-C17mExpd.cjs → dist/Button-C17mExpd.cjs} +0 -0
  188. /package/{Button-C17mExpd.cjs.map → dist/Button-C17mExpd.cjs.map} +0 -0
  189. /package/{Button-UkkP-bNw.js → dist/Button-UkkP-bNw.js} +0 -0
  190. /package/{Button-UkkP-bNw.js.map → dist/Button-UkkP-bNw.js.map} +0 -0
  191. /package/{components → dist/components}/ActionMenu/ActionMenu.cjs +0 -0
  192. /package/{components → dist/components}/ActionMenu/ActionMenu.cjs.map +0 -0
  193. /package/{components → dist/components}/ActionMenu/ActionMenu.d.ts +0 -0
  194. /package/{components → dist/components}/ActionMenu/ActionMenu.js +0 -0
  195. /package/{components → dist/components}/ActionMenu/ActionMenu.js.map +0 -0
  196. /package/{components → dist/components}/ActionMenu/index.d.ts +0 -0
  197. /package/{components → dist/components}/ActionMenu.d.ts +0 -0
  198. /package/{components → dist/components}/AppBar/AppBar.cjs +0 -0
  199. /package/{components → dist/components}/AppBar/AppBar.cjs.map +0 -0
  200. /package/{components → dist/components}/AppBar/AppBar.d.ts +0 -0
  201. /package/{components → dist/components}/AppBar/AppBar.js +0 -0
  202. /package/{components → dist/components}/AppBar/AppBar.js.map +0 -0
  203. /package/{components → dist/components}/AppBar/AppBar.sx.d.ts +0 -0
  204. /package/{components → dist/components}/AppBar/AppBarBrand.d.ts +0 -0
  205. /package/{components → dist/components}/AppBar/AppBarContext.d.ts +0 -0
  206. /package/{components → dist/components}/AppBar/AppBarMenuToggle.d.ts +0 -0
  207. /package/{components → dist/components}/AppBar/AppBarUserMenu.d.ts +0 -0
  208. /package/{components → dist/components}/AppBar/index.d.ts +0 -0
  209. /package/{components → dist/components}/AppBar.d.ts +0 -0
  210. /package/{components → dist/components}/Autocomplete/Autocomplete.cjs +0 -0
  211. /package/{components → dist/components}/Autocomplete/Autocomplete.cjs.map +0 -0
  212. /package/{components → dist/components}/Autocomplete/Autocomplete.d.ts +0 -0
  213. /package/{components → dist/components}/Autocomplete/Autocomplete.definitions.d.ts +0 -0
  214. /package/{components → dist/components}/Autocomplete/Autocomplete.helpers.d.ts +0 -0
  215. /package/{components → dist/components}/Autocomplete/Autocomplete.js +0 -0
  216. /package/{components → dist/components}/Autocomplete/Autocomplete.js.map +0 -0
  217. /package/{components → dist/components}/Autocomplete/Autocomplete.sx.d.ts +0 -0
  218. /package/{components → dist/components}/Autocomplete/Autocomplete.types.d.ts +0 -0
  219. /package/{components → dist/components}/Autocomplete/_parts/AutocompleteChips.d.ts +0 -0
  220. /package/{components → dist/components}/Autocomplete/_parts/AutocompleteLoader.d.ts +0 -0
  221. /package/{components → dist/components}/Autocomplete/_parts/AutocompleteOption.d.ts +0 -0
  222. /package/{components → dist/components}/Autocomplete/index.d.ts +0 -0
  223. /package/{components → dist/components}/Autocomplete.d.ts +0 -0
  224. /package/{components → dist/components}/Avatar/Avatar.cjs +0 -0
  225. /package/{components → dist/components}/Avatar/Avatar.cjs.map +0 -0
  226. /package/{components → dist/components}/Avatar/Avatar.d.ts +0 -0
  227. /package/{components → dist/components}/Avatar/Avatar.definitions.d.ts +0 -0
  228. /package/{components → dist/components}/Avatar/Avatar.js +0 -0
  229. /package/{components → dist/components}/Avatar/Avatar.js.map +0 -0
  230. /package/{components → dist/components}/Avatar/index.d.ts +0 -0
  231. /package/{components → dist/components}/Avatar.d.ts +0 -0
  232. /package/{components → dist/components}/Button/Button.cjs +0 -0
  233. /package/{components → dist/components}/Button/Button.cjs.map +0 -0
  234. /package/{components → dist/components}/Button/Button.d.ts +0 -0
  235. /package/{components → dist/components}/Button/Button.definition.d.ts +0 -0
  236. /package/{components → dist/components}/Button/Button.js +0 -0
  237. /package/{components → dist/components}/Button/Button.js.map +0 -0
  238. /package/{components → dist/components}/Button/index.d.ts +0 -0
  239. /package/{components → dist/components}/Button.d.ts +0 -0
  240. /package/{components → dist/components}/Card/Card.cjs +0 -0
  241. /package/{components → dist/components}/Card/Card.cjs.map +0 -0
  242. /package/{components → dist/components}/Card/Card.d.ts +0 -0
  243. /package/{components → dist/components}/Card/Card.definition.d.ts +0 -0
  244. /package/{components → dist/components}/Card/Card.js +0 -0
  245. /package/{components → dist/components}/Card/Card.js.map +0 -0
  246. /package/{components → dist/components}/Card/Card.sx.d.ts +0 -0
  247. /package/{components → dist/components}/Card/index.d.ts +0 -0
  248. /package/{components → dist/components}/Card.d.ts +0 -0
  249. /package/{components → dist/components}/Chip/Chip.cjs +0 -0
  250. /package/{components → dist/components}/Chip/Chip.cjs.map +0 -0
  251. /package/{components → dist/components}/Chip/Chip.d.ts +0 -0
  252. /package/{components → dist/components}/Chip/Chip.definitions.d.ts +0 -0
  253. /package/{components → dist/components}/Chip/Chip.js +0 -0
  254. /package/{components → dist/components}/Chip/Chip.js.map +0 -0
  255. /package/{components → dist/components}/Chip/index.d.ts +0 -0
  256. /package/{components → dist/components}/Chip.d.ts +0 -0
  257. /package/{components → dist/components}/Column/Column.cjs +0 -0
  258. /package/{components → dist/components}/Column/Column.cjs.map +0 -0
  259. /package/{components → dist/components}/Column/Column.d.ts +0 -0
  260. /package/{components → dist/components}/Column/Column.js +0 -0
  261. /package/{components → dist/components}/Column/Column.js.map +0 -0
  262. /package/{components → dist/components}/Column/index.d.ts +0 -0
  263. /package/{components → dist/components}/Column.d.ts +0 -0
  264. /package/{components → dist/components}/DatePicker/DatePicker.cjs +0 -0
  265. /package/{components → dist/components}/DatePicker/DatePicker.cjs.map +0 -0
  266. /package/{components → dist/components}/DatePicker/DatePicker.d.ts +0 -0
  267. /package/{components → dist/components}/DatePicker/DatePicker.definitions.d.ts +0 -0
  268. /package/{components → dist/components}/DatePicker/DatePicker.helpers.d.ts +0 -0
  269. /package/{components → dist/components}/DatePicker/DatePicker.js +0 -0
  270. /package/{components → dist/components}/DatePicker/DatePicker.js.map +0 -0
  271. /package/{components → dist/components}/DatePicker/DatePicker.sx.d.ts +0 -0
  272. /package/{components → dist/components}/DatePicker/DatePicker.types.d.ts +0 -0
  273. /package/{components → dist/components}/DatePicker/index.d.ts +0 -0
  274. /package/{components → dist/components}/DatePicker.d.ts +0 -0
  275. /package/{components → dist/components}/DateRangePicker/DateRangePicker.cjs +0 -0
  276. /package/{components → dist/components}/DateRangePicker/DateRangePicker.cjs.map +0 -0
  277. /package/{components → dist/components}/DateRangePicker/DateRangePicker.d.ts +0 -0
  278. /package/{components → dist/components}/DateRangePicker/DateRangePicker.definitions.d.ts +0 -0
  279. /package/{components → dist/components}/DateRangePicker/DateRangePicker.js +0 -0
  280. /package/{components → dist/components}/DateRangePicker/DateRangePicker.js.map +0 -0
  281. /package/{components → dist/components}/DateRangePicker/index.d.ts +0 -0
  282. /package/{components → dist/components}/DateRangePicker.d.ts +0 -0
  283. /package/{components → dist/components}/DateTimePicker/DateTimePicker.cjs +0 -0
  284. /package/{components → dist/components}/DateTimePicker/DateTimePicker.cjs.map +0 -0
  285. /package/{components → dist/components}/DateTimePicker/DateTimePicker.d.ts +0 -0
  286. /package/{components → dist/components}/DateTimePicker/DateTimePicker.definitions.d.ts +0 -0
  287. /package/{components → dist/components}/DateTimePicker/DateTimePicker.helpers.d.ts +0 -0
  288. /package/{components → dist/components}/DateTimePicker/DateTimePicker.js +0 -0
  289. /package/{components → dist/components}/DateTimePicker/DateTimePicker.js.map +0 -0
  290. /package/{components → dist/components}/DateTimePicker/DateTimePicker.sx.d.ts +0 -0
  291. /package/{components → dist/components}/DateTimePicker/DateTimePicker.types.d.ts +0 -0
  292. /package/{components → dist/components}/DateTimePicker/index.d.ts +0 -0
  293. /package/{components → dist/components}/DateTimePicker.d.ts +0 -0
  294. /package/{components → dist/components}/Drawer/Drawer.cjs +0 -0
  295. /package/{components → dist/components}/Drawer/Drawer.cjs.map +0 -0
  296. /package/{components → dist/components}/Drawer/Drawer.d.ts +0 -0
  297. /package/{components → dist/components}/Drawer/Drawer.js +0 -0
  298. /package/{components → dist/components}/Drawer/Drawer.js.map +0 -0
  299. /package/{components → dist/components}/Drawer/Drawer.sx.d.ts +0 -0
  300. /package/{components → dist/components}/Drawer/DrawerContext.d.ts +0 -0
  301. /package/{components → dist/components}/Drawer/DrawerItem.d.ts +0 -0
  302. /package/{components → dist/components}/Drawer/index.d.ts +0 -0
  303. /package/{components → dist/components}/Drawer.d.ts +0 -0
  304. /package/{components → dist/components}/Flyout/Flyout.cjs +0 -0
  305. /package/{components → dist/components}/Flyout/Flyout.cjs.map +0 -0
  306. /package/{components → dist/components}/Flyout/Flyout.d.ts +0 -0
  307. /package/{components → dist/components}/Flyout/Flyout.js +0 -0
  308. /package/{components → dist/components}/Flyout/Flyout.js.map +0 -0
  309. /package/{components → dist/components}/Flyout/index.d.ts +0 -0
  310. /package/{components → dist/components}/Flyout.d.ts +0 -0
  311. /package/{components → dist/components}/Gallery/Gallery.cjs +0 -0
  312. /package/{components → dist/components}/Gallery/Gallery.cjs.map +0 -0
  313. /package/{components → dist/components}/Gallery/Gallery.d.ts +0 -0
  314. /package/{components → dist/components}/Gallery/Gallery.definition.d.ts +0 -0
  315. /package/{components → dist/components}/Gallery/Gallery.js +0 -0
  316. /package/{components → dist/components}/Gallery/Gallery.js.map +0 -0
  317. /package/{components → dist/components}/Gallery/GalleryLightbox.d.ts +0 -0
  318. /package/{components → dist/components}/Gallery/GalleryMain.d.ts +0 -0
  319. /package/{components → dist/components}/Gallery/GalleryThumbnails.d.ts +0 -0
  320. /package/{components → dist/components}/Gallery/index.d.ts +0 -0
  321. /package/{components → dist/components}/Gallery.d.ts +0 -0
  322. /package/{components → dist/components}/Icon/Icon.cjs +0 -0
  323. /package/{components → dist/components}/Icon/Icon.cjs.map +0 -0
  324. /package/{components → dist/components}/Icon/Icon.d.ts +0 -0
  325. /package/{components → dist/components}/Icon/Icon.js +0 -0
  326. /package/{components → dist/components}/Icon/Icon.js.map +0 -0
  327. /package/{components → dist/components}/Icon/index.d.ts +0 -0
  328. /package/{components → dist/components}/Icon.d.ts +0 -0
  329. /package/{components → dist/components}/Input/Input.cjs +0 -0
  330. /package/{components → dist/components}/Input/Input.cjs.map +0 -0
  331. /package/{components → dist/components}/Input/Input.d.ts +0 -0
  332. /package/{components → dist/components}/Input/Input.definitions.d.ts +0 -0
  333. /package/{components → dist/components}/Input/Input.helpers.d.ts +0 -0
  334. /package/{components → dist/components}/Input/Input.js +0 -0
  335. /package/{components → dist/components}/Input/Input.js.map +0 -0
  336. /package/{components → dist/components}/Input/Input.sx.d.ts +0 -0
  337. /package/{components → dist/components}/Input/Input.types.d.ts +0 -0
  338. /package/{components → dist/components}/Input/index.d.ts +0 -0
  339. /package/{components → dist/components}/Input.d.ts +0 -0
  340. /package/{components → dist/components}/InputGroup/InputGroup.cjs +0 -0
  341. /package/{components → dist/components}/InputGroup/InputGroup.cjs.map +0 -0
  342. /package/{components → dist/components}/InputGroup/InputGroup.d.ts +0 -0
  343. /package/{components → dist/components}/InputGroup/InputGroup.definitions.d.ts +0 -0
  344. /package/{components → dist/components}/InputGroup/InputGroup.js +0 -0
  345. /package/{components → dist/components}/InputGroup/InputGroup.js.map +0 -0
  346. /package/{components → dist/components}/InputGroup/index.d.ts +0 -0
  347. /package/{components → dist/components}/InputGroup.d.ts +0 -0
  348. /package/{components → dist/components}/MenuButton/MenuButton.cjs +0 -0
  349. /package/{components → dist/components}/MenuButton/MenuButton.cjs.map +0 -0
  350. /package/{components → dist/components}/MenuButton/MenuButton.d.ts +0 -0
  351. /package/{components → dist/components}/MenuButton/MenuButton.js +0 -0
  352. /package/{components → dist/components}/MenuButton/MenuButton.js.map +0 -0
  353. /package/{components → dist/components}/MenuButton/index.d.ts +0 -0
  354. /package/{components → dist/components}/MenuButton.d.ts +0 -0
  355. /package/{components → dist/components}/Modal/Modal.cjs +0 -0
  356. /package/{components → dist/components}/Modal/Modal.cjs.map +0 -0
  357. /package/{components → dist/components}/Modal/Modal.d.ts +0 -0
  358. /package/{components → dist/components}/Modal/Modal.js +0 -0
  359. /package/{components → dist/components}/Modal/Modal.js.map +0 -0
  360. /package/{components → dist/components}/Modal/ModalBody.d.ts +0 -0
  361. /package/{components → dist/components}/Modal/ModalFooter.d.ts +0 -0
  362. /package/{components → dist/components}/Modal/ModalHeader.d.ts +0 -0
  363. /package/{components → dist/components}/Modal/index.d.ts +0 -0
  364. /package/{components → dist/components}/Modal.d.ts +0 -0
  365. /package/{components → dist/components}/PageLoader/PageLoader.cjs +0 -0
  366. /package/{components → dist/components}/PageLoader/PageLoader.cjs.map +0 -0
  367. /package/{components → dist/components}/PageLoader/PageLoader.d.ts +0 -0
  368. /package/{components → dist/components}/PageLoader/PageLoader.js +0 -0
  369. /package/{components → dist/components}/PageLoader/PageLoader.js.map +0 -0
  370. /package/{components → dist/components}/PageLoader/index.d.ts +0 -0
  371. /package/{components → dist/components}/PageLoader.d.ts +0 -0
  372. /package/{components → dist/components}/ScrollTopButton/ScrollTopButton.cjs +0 -0
  373. /package/{components → dist/components}/ScrollTopButton/ScrollTopButton.cjs.map +0 -0
  374. /package/{components → dist/components}/ScrollTopButton/ScrollTopButton.d.ts +0 -0
  375. /package/{components → dist/components}/ScrollTopButton/ScrollTopButton.js +0 -0
  376. /package/{components → dist/components}/ScrollTopButton/ScrollTopButton.js.map +0 -0
  377. /package/{components → dist/components}/ScrollTopButton/index.d.ts +0 -0
  378. /package/{components → dist/components}/ScrollTopButton/scrollToTop.d.ts +0 -0
  379. /package/{components → dist/components}/ScrollTopButton.d.ts +0 -0
  380. /package/{components → dist/components}/Select/Select.cjs +0 -0
  381. /package/{components → dist/components}/Select/Select.cjs.map +0 -0
  382. /package/{components → dist/components}/Select/Select.d.ts +0 -0
  383. /package/{components → dist/components}/Select/Select.definitions.d.ts +0 -0
  384. /package/{components → dist/components}/Select/Select.helpers.d.ts +0 -0
  385. /package/{components → dist/components}/Select/Select.js +0 -0
  386. /package/{components → dist/components}/Select/Select.js.map +0 -0
  387. /package/{components → dist/components}/Select/Select.sx.d.ts +0 -0
  388. /package/{components → dist/components}/Select/Select.types.d.ts +0 -0
  389. /package/{components → dist/components}/Select/_parts/SelectMenuItem.d.ts +0 -0
  390. /package/{components → dist/components}/Select/_parts/SelectSearchHeader.d.ts +0 -0
  391. /package/{components → dist/components}/Select/_parts/SelectValue.d.ts +0 -0
  392. /package/{components → dist/components}/Select/index.d.ts +0 -0
  393. /package/{components → dist/components}/Select.d.ts +0 -0
  394. /package/{components → dist/components}/Stat/Stat.cjs +0 -0
  395. /package/{components → dist/components}/Stat/Stat.cjs.map +0 -0
  396. /package/{components → dist/components}/Stat/Stat.d.ts +0 -0
  397. /package/{components → dist/components}/Stat/Stat.js +0 -0
  398. /package/{components → dist/components}/Stat/Stat.js.map +0 -0
  399. /package/{components → dist/components}/Stat/index.d.ts +0 -0
  400. /package/{components → dist/components}/Stat.d.ts +0 -0
  401. /package/{components → dist/components}/StatusMessage/StatusMessage.cjs +0 -0
  402. /package/{components → dist/components}/StatusMessage/StatusMessage.cjs.map +0 -0
  403. /package/{components → dist/components}/StatusMessage/StatusMessage.d.ts +0 -0
  404. /package/{components → dist/components}/StatusMessage/StatusMessage.js +0 -0
  405. /package/{components → dist/components}/StatusMessage/StatusMessage.js.map +0 -0
  406. /package/{components → dist/components}/StatusMessage/index.d.ts +0 -0
  407. /package/{components → dist/components}/StatusMessage.d.ts +0 -0
  408. /package/{components → dist/components}/Stepper/Step.d.ts +0 -0
  409. /package/{components → dist/components}/Stepper/Stepper.cjs +0 -0
  410. /package/{components → dist/components}/Stepper/Stepper.cjs.map +0 -0
  411. /package/{components → dist/components}/Stepper/Stepper.d.ts +0 -0
  412. /package/{components → dist/components}/Stepper/Stepper.definition.d.ts +0 -0
  413. /package/{components → dist/components}/Stepper/Stepper.js +0 -0
  414. /package/{components → dist/components}/Stepper/Stepper.js.map +0 -0
  415. /package/{components → dist/components}/Stepper/index.d.ts +0 -0
  416. /package/{components → dist/components}/Stepper.d.ts +0 -0
  417. /package/{components → dist/components}/Table/Table.cjs +0 -0
  418. /package/{components → dist/components}/Table/Table.cjs.map +0 -0
  419. /package/{components → dist/components}/Table/Table.d.ts +0 -0
  420. /package/{components → dist/components}/Table/Table.definition.d.ts +0 -0
  421. /package/{components → dist/components}/Table/Table.js +0 -0
  422. /package/{components → dist/components}/Table/Table.js.map +0 -0
  423. /package/{components → dist/components}/Table/data.d.ts +0 -0
  424. /package/{components → dist/components}/Table/exportsUtils.d.ts +0 -0
  425. /package/{components → dist/components}/Table/index.d.ts +0 -0
  426. /package/{components → dist/components}/Table/types.d.ts +0 -0
  427. /package/{components → dist/components}/Table.d.ts +0 -0
  428. /package/{components → dist/components}/Tabs/Tab.d.ts +0 -0
  429. /package/{components → dist/components}/Tabs/Tab.definition.d.ts +0 -0
  430. /package/{components → dist/components}/Tabs/Tabs.cjs +0 -0
  431. /package/{components → dist/components}/Tabs/Tabs.cjs.map +0 -0
  432. /package/{components → dist/components}/Tabs/Tabs.d.ts +0 -0
  433. /package/{components → dist/components}/Tabs/Tabs.js +0 -0
  434. /package/{components → dist/components}/Tabs/Tabs.js.map +0 -0
  435. /package/{components → dist/components}/Tabs/_tabUtils.d.ts +0 -0
  436. /package/{components → dist/components}/Tabs/index.d.ts +0 -0
  437. /package/{components → dist/components}/Tabs.d.ts +0 -0
  438. /package/{components → dist/components}/Timeline/Timeline.cjs +0 -0
  439. /package/{components → dist/components}/Timeline/Timeline.cjs.map +0 -0
  440. /package/{components → dist/components}/Timeline/Timeline.d.ts +0 -0
  441. /package/{components → dist/components}/Timeline/Timeline.definition.d.ts +0 -0
  442. /package/{components → dist/components}/Timeline/Timeline.js +0 -0
  443. /package/{components → dist/components}/Timeline/Timeline.js.map +0 -0
  444. /package/{components → dist/components}/Timeline/TimelineItem.d.ts +0 -0
  445. /package/{components → dist/components}/Timeline/index.d.ts +0 -0
  446. /package/{components → dist/components}/Timeline.d.ts +0 -0
  447. /package/{components → dist/components}/Tooltip/Tooltip.cjs +0 -0
  448. /package/{components → dist/components}/Tooltip/Tooltip.cjs.map +0 -0
  449. /package/{components → dist/components}/Tooltip/Tooltip.d.ts +0 -0
  450. /package/{components → dist/components}/Tooltip/Tooltip.js +0 -0
  451. /package/{components → dist/components}/Tooltip/Tooltip.js.map +0 -0
  452. /package/{components → dist/components}/Tooltip/index.d.ts +0 -0
  453. /package/{components → dist/components}/Tooltip.d.ts +0 -0
  454. /package/{components → dist/components}/_shared/formField.sx.d.ts +0 -0
  455. /package/{components → dist/components}/_shared/resolvePreset.d.ts +0 -0
  456. /package/{formField.sx-CQ1mbk9M.cjs → dist/formField.sx-CQ1mbk9M.cjs} +0 -0
  457. /package/{formField.sx-CQ1mbk9M.cjs.map → dist/formField.sx-CQ1mbk9M.cjs.map} +0 -0
  458. /package/{formField.sx-DfVbMe0V.js → dist/formField.sx-DfVbMe0V.js} +0 -0
  459. /package/{formField.sx-DfVbMe0V.js.map → dist/formField.sx-DfVbMe0V.js.map} +0 -0
  460. /package/{hooks → dist/hooks}/ClipBoard/ClipBoard.cjs +0 -0
  461. /package/{hooks → dist/hooks}/ClipBoard/ClipBoard.cjs.map +0 -0
  462. /package/{hooks → dist/hooks}/ClipBoard/ClipBoard.d.ts +0 -0
  463. /package/{hooks → dist/hooks}/ClipBoard/ClipBoard.js +0 -0
  464. /package/{hooks → dist/hooks}/ClipBoard/ClipBoard.js.map +0 -0
  465. /package/{hooks → dist/hooks}/ClipBoard/ClipboardUnifiedDemo.d.ts +0 -0
  466. /package/{hooks → dist/hooks}/ClipBoard/index.d.ts +0 -0
  467. /package/{hooks → dist/hooks}/ClipBoard.d.ts +0 -0
  468. /package/{hooks → dist/hooks}/Wizard/Wizard.cjs +0 -0
  469. /package/{hooks → dist/hooks}/Wizard/Wizard.cjs.map +0 -0
  470. /package/{hooks → dist/hooks}/Wizard/Wizard.js +0 -0
  471. /package/{hooks → dist/hooks}/Wizard/Wizard.js.map +0 -0
  472. /package/{hooks → dist/hooks}/Wizard/WizardContext.d.ts +0 -0
  473. /package/{hooks → dist/hooks}/Wizard/index.d.ts +0 -0
  474. /package/{hooks → dist/hooks}/Wizard/useWizard.d.ts +0 -0
  475. /package/{hooks → dist/hooks}/Wizard.d.ts +0 -0
  476. /package/{index.d.ts → dist/index.d.ts} +0 -0
  477. /package/{index.js.map → dist/index.js.map} +0 -0
  478. /package/{resolvePreset-B-IB0ehH.js → dist/resolvePreset-B-IB0ehH.js} +0 -0
  479. /package/{resolvePreset-B-IB0ehH.js.map → dist/resolvePreset-B-IB0ehH.js.map} +0 -0
  480. /package/{resolvePreset-CT3kU-K2.cjs → dist/resolvePreset-CT3kU-K2.cjs} +0 -0
  481. /package/{resolvePreset-CT3kU-K2.cjs.map → dist/resolvePreset-CT3kU-K2.cjs.map} +0 -0
  482. /package/{styles.css → dist/styles.css} +0 -0
  483. /package/{theme → dist/theme}/componentStyles.d.ts +0 -0
  484. /package/{theme → dist/theme}/tokens.d.ts +0 -0
  485. /package/{useWizard-CWdIxZzX.cjs → dist/useWizard-CWdIxZzX.cjs} +0 -0
  486. /package/{useWizard-CWdIxZzX.cjs.map → dist/useWizard-CWdIxZzX.cjs.map} +0 -0
  487. /package/{useWizard-CWq--C3o.js → dist/useWizard-CWq--C3o.js} +0 -0
  488. /package/{useWizard-CWq--C3o.js.map → dist/useWizard-CWq--C3o.js.map} +0 -0
@@ -0,0 +1,195 @@
1
+ import React from 'react';
2
+ import { AlertProps } from '@mui/material/Alert';
3
+ import { ColumnProps } from '../Column/Column'; // Importa ColumnProps y FieldName desde Column.tsx
4
+
5
+ // Define las propiedades comunes para las funciones de exportación
6
+ interface ExportOptions<T> {
7
+ data: T[]; // Los datos a exportar
8
+ columns: React.ReactElement<ColumnProps<T>>[]; // Las definiciones de las columnas
9
+ fileName: string; // El nombre del archivo a descargar
10
+ exportColumns?: string[]; // Nombres de columnas específicas para exportar
11
+ setSnackbarOpen: React.Dispatch<React.SetStateAction<boolean>>; // Setter para abrir/cerrar el Snackbar
12
+ setSnackbarMessage: React.Dispatch<React.SetStateAction<string>>; // Setter para el mensaje del Snackbar
13
+ setSnackbarSeverity: React.Dispatch<React.SetStateAction<AlertProps['severity']>>; // Setter para la severidad del Snackbar
14
+ }
15
+
16
+ /**
17
+ * Función para exportar datos a un archivo CSV.
18
+ * @param options Opciones de exportación, incluyendo datos, columnas, nombre de archivo y setters de Snackbar.
19
+ */
20
+ export const exportToCSV = <T>(options: ExportOptions<T>) => {
21
+ const { data, columns, fileName, exportColumns, setSnackbarOpen, setSnackbarMessage, setSnackbarSeverity } = options;
22
+
23
+ if (!data || data.length === 0) {
24
+ setSnackbarMessage("No hay datos para exportar a CSV.");
25
+ setSnackbarSeverity('warning');
26
+ setSnackbarOpen(true);
27
+ return;
28
+ }
29
+
30
+ setSnackbarMessage("Exportando datos a CSV...");
31
+ setSnackbarSeverity('info');
32
+ setSnackbarOpen(true);
33
+
34
+ try {
35
+ // Filtra las columnas si se especifican columnas para exportar, de lo contrario, usa todas las columnas definidas.
36
+ const columnsToExport = exportColumns
37
+ ? columns.filter(col => exportColumns.includes(col.props.name))
38
+ : columns;
39
+
40
+ // Obtiene los encabezados (nombres de las columnas) y los escapa para CSV.
41
+ const headers = columnsToExport.map(col => `"${col.props.name.replace(/"/g, '""')}"`).join(',');
42
+
43
+ // Mapea los datos a filas CSV.
44
+ const csvRows = data.map(row => {
45
+ const values = columnsToExport.map(col => {
46
+ const field = col.props.field;
47
+ let cellValue: any;
48
+
49
+ // Si 'field' es un array, toma el valor del primer campo para la exportación.
50
+ if (Array.isArray(field)) {
51
+ cellValue = (row as any)[field[0]];
52
+ } else {
53
+ cellValue = (row as any)[field];
54
+ }
55
+
56
+ // Convierte a string y maneja comas, comillas dobles y saltos de línea para CSV.
57
+ let formattedValue = String(cellValue || '');
58
+ if (formattedValue.includes(',') || formattedValue.includes('"') || formattedValue.includes('\n')) {
59
+ formattedValue = `"${formattedValue.replace(/"/g, '""')}"`;
60
+ }
61
+ return formattedValue;
62
+ });
63
+ return values.join(',');
64
+ });
65
+
66
+ const csvContent = [headers, ...csvRows].join('\n'); // Une los encabezados y las filas.
67
+ const blob = new Blob([csvContent], { type: 'text/csv;charset=utf-8;' });
68
+ const link = document.createElement('a');
69
+
70
+ if (link.download !== undefined) {
71
+ const url = URL.createObjectURL(blob);
72
+ link.setAttribute('href', url);
73
+ link.setAttribute('download', fileName + '.csv');
74
+ link.style.visibility = 'hidden';
75
+ document.body.appendChild(link);
76
+ link.click();
77
+ document.body.removeChild(link);
78
+ URL.revokeObjectURL(url);
79
+
80
+ setSnackbarMessage("¡Exportación a CSV completada!");
81
+ setSnackbarSeverity('success');
82
+ } else {
83
+ setSnackbarMessage("Tu navegador no soporta la descarga directa para CSV. Por favor, copia el contenido manualmente.");
84
+ setSnackbarSeverity('error');
85
+ }
86
+ } catch (error) {
87
+ console.error("Error al exportar los datos a CSV:", error);
88
+ setSnackbarMessage("Error al exportar los datos a CSV.");
89
+ setSnackbarSeverity('error');
90
+ } finally {
91
+ setSnackbarOpen(true);
92
+ }
93
+ };
94
+
95
+ /**
96
+ * Función para exportar datos a un archivo Excel (formato XLSX).
97
+ * Genera una tabla HTML que luego se descarga como un archivo .xlsx.
98
+ * @param options Opciones de exportación, incluyendo datos, columnas, nombre de archivo y setters de Snackbar.
99
+ */
100
+ export const exportToExcel = <T>(options: ExportOptions<T>) => {
101
+ const { data, columns, fileName, exportColumns, setSnackbarOpen, setSnackbarMessage, setSnackbarSeverity } = options;
102
+
103
+ if (!data || data.length === 0) {
104
+ setSnackbarMessage("No hay datos para exportar a Excel.");
105
+ setSnackbarSeverity('warning');
106
+ setSnackbarOpen(true);
107
+ return;
108
+ }
109
+
110
+ setSnackbarMessage("Exportando datos a Excel (XLSX)...");
111
+ setSnackbarSeverity('info');
112
+ setSnackbarOpen(true);
113
+
114
+ try {
115
+ const columnsToExport = exportColumns
116
+ ? columns.filter(col => exportColumns.includes(col.props.name))
117
+ : columns;
118
+
119
+ // Construye el contenido HTML de la tabla.
120
+ let tableHTML = `
121
+ <html xmlns:o="urn:schemas-microsoft-com:office:office"
122
+ xmlns:x="urn:schemas-microsoft-com:office:excel"
123
+ xmlns="http://www.w3.org/TR/REC-html40">
124
+ <head>
125
+ <meta charset="utf-8" />
126
+ <!--[if gte mso 9]><xml>
127
+ <x:ExcelWorkbook>
128
+ <x:ExcelWorksheets>
129
+ <x:ExcelWorksheet>
130
+ <x:Name>Hoja1</x:Name>
131
+ <x:WorksheetOptions>
132
+ <x:DisplayGridlines/>
133
+ </x:WorksheetOptions>
134
+ </x:ExcelWorksheet>
135
+ </x:ExcelWorksheets>
136
+ </x:ExcelWorkbook>
137
+ </xml><![endif]-->
138
+ </head>
139
+ <body>
140
+ <table>
141
+ <thead>
142
+ <tr>
143
+ ${columnsToExport.map(col => `<th>${col.props.name}</th>`).join('')}
144
+ </tr>
145
+ </thead>
146
+ <tbody>
147
+ ${data.map(row => `
148
+ <tr>
149
+ ${columnsToExport.map(col => {
150
+ const field = col.props.field;
151
+ let cellValue: any;
152
+ if (Array.isArray(field)) {
153
+ cellValue = (row as any)[field[0]];
154
+ } else {
155
+ cellValue = (row as any)[field];
156
+ }
157
+ // Escapa caracteres HTML para el contenido de la celda.
158
+ return `<td>${String(cellValue || '').replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;')}</td>`;
159
+ }).join('')}
160
+ </tr>
161
+ `).join('')}
162
+ </tbody>
163
+ </table>
164
+ </body>
165
+ </html>
166
+ `;
167
+
168
+ // Crea un Blob con el contenido HTML y el tipo MIME de XLSX.
169
+ const blob = new Blob([tableHTML], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8;' });
170
+
171
+ const link = document.createElement('a');
172
+ if (link.download !== undefined) {
173
+ const url = URL.createObjectURL(blob);
174
+ link.setAttribute('href', url);
175
+ link.setAttribute('download', fileName + '.xlsx'); // Usa la extensión .xlsx
176
+ link.style.visibility = 'hidden';
177
+ document.body.appendChild(link);
178
+ link.click();
179
+ document.body.removeChild(link);
180
+ URL.revokeObjectURL(url);
181
+
182
+ setSnackbarMessage("¡Exportación a Excel (XLSX) completada!");
183
+ setSnackbarSeverity('success');
184
+ } else {
185
+ setSnackbarMessage("Tu navegador no soporta la descarga directa para Excel (XLSX). Por favor, copia el contenido manualmente.");
186
+ setSnackbarSeverity('error');
187
+ }
188
+ } catch (error) {
189
+ console.error("Error al exportar los datos a Excel (XLSX):", error);
190
+ setSnackbarMessage("Error al exportar los datos a Excel (XLSX).");
191
+ setSnackbarSeverity('error');
192
+ } finally {
193
+ setSnackbarOpen(true);
194
+ }
195
+ };
@@ -0,0 +1,3 @@
1
+ // import './styles.css';
2
+ export { default as Table } from './Table'
3
+ // export { default } from './Table';
@@ -0,0 +1,34 @@
1
+ // Interfaces de ejemplo
2
+ interface Usuario {
3
+ id: number
4
+ nombre: string
5
+ email: string
6
+ avatar: string
7
+ edad: number
8
+ activo: boolean
9
+ rol: 'admin' | 'usuario' | 'moderador'
10
+ fechaRegistro: string
11
+ puntuacion: number
12
+ }
13
+
14
+ interface Producto {
15
+ id: number
16
+ nombre: string
17
+ precio: number
18
+ categoria: string
19
+ stock: number
20
+ imagen: string
21
+ enOferta: boolean
22
+ rating: number
23
+ }
24
+
25
+ interface Empleado {
26
+ id: number
27
+ nombre: string
28
+ apellido: string
29
+ departamento: string
30
+ salario: number
31
+ fechaIngreso: string
32
+ activo: boolean
33
+ avatar: string
34
+ }
@@ -0,0 +1,53 @@
1
+ import { ScrollTab } from './Tabs.stories';
2
+ export const DefaultTabDefinition = `
3
+ <Tabs>
4
+ <Tab label="Home" icon={<Home />}>
5
+ <div>
6
+ hola 1
7
+ </div>
8
+ </Tab>
9
+ <Tab label="Settings" icon={<Settings />}>
10
+ <div>
11
+ hola 2
12
+ </div>
13
+ </Tab>
14
+ <Tab label="Profile" icon={<Settings />}>
15
+ <div>
16
+ hola 3
17
+ </div>
18
+ </Tab>
19
+ </Tabs>`.trim();
20
+
21
+
22
+ export const ScrollTabDefinition = `
23
+ <Tabs {...args} variant="scrollable" scrollButtons="auto" allowScrollButtonsMobile>
24
+ {Array.from({ length: 20 }).map((_, idx) => (
25
+ <Tab key={idx} label={\`Tab \${idx + 1}\`} icon={<Settings />}>
26
+ <div>
27
+ hola {idx + 1}
28
+ </div>
29
+ </Tab>
30
+ ))}
31
+ </Tabs>
32
+ `.trim();
33
+
34
+
35
+ export const VeriticalTabDefinition = `
36
+ <Tabs orientation="vertical">
37
+ <Tab label="Home" >
38
+ <div>
39
+ hola 1
40
+ </div>
41
+ </Tab>
42
+ <Tab label="Settings" >
43
+ <div>
44
+ hola 2
45
+ </div>
46
+ </Tab>
47
+ <Tab label="Profile" >
48
+ <div>
49
+ hola 3
50
+ </div>
51
+ </Tab>
52
+ </Tabs>
53
+ `
@@ -0,0 +1,19 @@
1
+ import React from "react";
2
+ import { TabProps as MuiTabProps } from "@mui/material";
3
+
4
+ type PickMuiTabProps = Pick<
5
+ MuiTabProps,
6
+ "label" | "icon" | "disabled" | "sx" | "value" | "wrapped" | "iconPosition" | "className" | "disabled"| 'disableRipple'
7
+ >;
8
+
9
+ export interface TabProps extends PickMuiTabProps {
10
+ value?: number;
11
+ onChange?: () => void;
12
+ children?: React.ReactNode;
13
+ }
14
+
15
+ export const Tab = (_: TabProps): null => null;
16
+
17
+ Tab.displayName = "Tab";
18
+
19
+ export default Tab;
@@ -0,0 +1,118 @@
1
+ import type { Meta, StoryObj } from "@storybook/react";
2
+ import Tabs from "./Tabs";
3
+ import Tab from "./Tab";
4
+ import { Home, Settings } from "@mui/icons-material";
5
+ import { DefaultTabDefinition, ScrollTabDefinition, VeriticalTabDefinition } from "./Tab.definition";
6
+
7
+ const meta: Meta<typeof Tabs> = {
8
+ title: "Components/Tabs",
9
+ component: Tabs,
10
+ tags: ["autodocs"]
11
+ };
12
+ export default meta;
13
+ type Story = StoryObj<typeof Tabs>;
14
+
15
+ export const DefaultTab: Story = {
16
+ render: (args) => {
17
+ return (
18
+ <Tabs {...args}>
19
+ <Tab label="Home" icon={<Home />} >
20
+ <div>
21
+ hola 1
22
+ </div>
23
+ </Tab>
24
+ <Tab label="Settings" icon={<Settings />} >
25
+ <div>
26
+ hola 2
27
+ </div>
28
+ </Tab>
29
+ <Tab label="Profile" icon={<Settings />}>
30
+ <div>
31
+ hola 3
32
+ </div>
33
+ </Tab>
34
+ </Tabs>
35
+ );
36
+ },
37
+ parameters: {
38
+ docs: {
39
+ description: {
40
+ story: "Ejemplo básico de timeline"
41
+ },
42
+ source: {
43
+ code: DefaultTabDefinition,
44
+ }
45
+ }
46
+ },
47
+ argTypes: {
48
+ children: { control: false, description: 'Componentes `TabItems` que definen la estructura de el timeline' },
49
+ orientation: { description: 'Indica si la posicion de los tabs, es horizontal o vertical' },
50
+ defaultValue: { description: 'Indica si, se requiere iniciar con alguna tab preseleccionada, se inicia' },
51
+ variant: { description: 'Indica el estilo de los tabs "standard" | "scrollable" | "fullWidth" ' },
52
+ indicatorColor: { description: 'Indica el color del indicador de los tabs "primary" | "secondary"' },
53
+ labelColor: { description: 'Indica el color de las etiquetas de los tabs "primary" | "secondary" | "inherit"' },
54
+ sx: { description: 'Estilos personalizados para el tab' },
55
+ allowScrollButtonsMobile: { description: 'Si se usan scrollButtons, permite que se muestren en dispositivos móviles' },
56
+ onChange: { control: false, description: 'Permite enviar una función, al cambiar entre tabs, para obtener el id actual' },
57
+ }
58
+ };
59
+
60
+ export const ScrollTab: Story = {
61
+ render: (args) => {
62
+ return (
63
+ <Tabs {...args} variant="scrollable" scrollButtons="auto" allowScrollButtonsMobile>
64
+ {Array.from({ length: 20 }).map((_, idx) => (
65
+ <Tab key={idx} label={`Tab ${idx + 1}`} icon={<Settings />}>
66
+ <div>
67
+ hola {idx + 1}
68
+ </div>
69
+ </Tab>
70
+ ))}
71
+ </Tabs>
72
+ );
73
+ },
74
+ parameters: {
75
+ docs: {
76
+ description: {
77
+ story: "Ejemplo tab con scroll"
78
+ },
79
+ source: {
80
+ code: ScrollTabDefinition,
81
+ }
82
+ }
83
+ },
84
+ };
85
+
86
+ export const VeriticalTab: Story = {
87
+ render: (args) => {
88
+ return (
89
+ <Tabs {...args} orientation="vertical">
90
+ <Tab label="Home" >
91
+ <div>
92
+ hola 1
93
+ </div>
94
+ </Tab>
95
+ <Tab label="Settings" >
96
+ <div>
97
+ hola 2
98
+ </div>
99
+ </Tab>
100
+ <Tab label="Profile" >
101
+ <div>
102
+ hola 3
103
+ </div>
104
+ </Tab>
105
+ </Tabs>
106
+ );
107
+ },
108
+ parameters: {
109
+ docs: {
110
+ description: {
111
+ story: "Ejemplo tab vertical"
112
+ },
113
+ source: {
114
+ code: VeriticalTabDefinition,
115
+ }
116
+ }
117
+ },
118
+ };
@@ -0,0 +1,99 @@
1
+ import React, { useState, ReactElement } from "react";
2
+ import { Tabs as MuiTabs, Tab as MuiTab, Box, TabsProps as MuiTabsProps } from "@mui/material";
3
+ import { TabProps } from "./Tab";
4
+ import { TAB_DISPLAY_MAP } from "./_tabUtils";
5
+
6
+ type PickTabsProps = Pick<
7
+ MuiTabsProps,
8
+ "centered" | "indicatorColor" | "orientation" | "scrollButtons" | "variant" | "className" | "sx" | "visibleScrollbar" | 'indicatorColor'| 'allowScrollButtonsMobile'
9
+ >;
10
+
11
+ interface MyTabsProps extends PickTabsProps {
12
+ children: ReactElement<TabProps>[];
13
+ defaultValue?: number;
14
+ onChange?: () => void;
15
+ centered?: boolean;
16
+ orientation?: "horizontal" | "vertical";
17
+ scrollButtons?: "auto" | false | true;
18
+ variant?: "standard" | "scrollable" | "fullWidth";
19
+ indicatorColor?: "primary" | "secondary";
20
+ labelColor?: "primary" | "secondary" | "inherit";
21
+ onChangeValue?: (newValue: number) => void;
22
+ allowScrollButtonsMobile?: boolean;
23
+ }
24
+
25
+ export const Tabs: React.FC<MyTabsProps> = ({
26
+ children,
27
+ defaultValue,
28
+ onChange,
29
+ centered = true,
30
+ orientation = 'horizontal',
31
+ scrollButtons = "auto",
32
+ variant = "standard",
33
+ indicatorColor = "primary",
34
+ labelColor = "primary",
35
+ className,
36
+ onChangeValue,
37
+ allowScrollButtonsMobile = true,
38
+ sx,
39
+ }) => {
40
+ const firstValue = children[0]?.props.value;
41
+ const [currentValue, setCurrentValue] = useState<string | number>(
42
+ defaultValue ?? firstValue ?? 0
43
+ );
44
+
45
+ const handleChange = (event: React.SyntheticEvent, newValue: number) => {
46
+ setCurrentValue(newValue);
47
+ onChange?.();
48
+ onChangeValue?.(newValue);
49
+ };
50
+
51
+ return (
52
+ <Box sx={{ display: TAB_DISPLAY_MAP[orientation].display, flexDirection: TAB_DISPLAY_MAP[orientation].flexDirection}}>
53
+ <MuiTabs
54
+ value={currentValue}
55
+ onChange={handleChange}
56
+ centered={centered}
57
+ indicatorColor={indicatorColor}
58
+ orientation={orientation}
59
+ scrollButtons={scrollButtons}
60
+ variant={variant}
61
+ className={className}
62
+ textColor={labelColor}
63
+ sx={{ ...sx }}
64
+ allowScrollButtonsMobile={allowScrollButtonsMobile}
65
+
66
+
67
+ >
68
+ {children.map((child, idx) => {
69
+ const { label, icon, value = idx, disabled, wrapped, iconPosition, className: tabClassName, sx: tabSx } = child.props;
70
+ return (
71
+ <MuiTab
72
+ key={value}
73
+ label={label}
74
+ icon={icon}
75
+ value={value}
76
+ disabled={disabled}
77
+ wrapped={wrapped}
78
+ iconPosition={iconPosition}
79
+ className={tabClassName}
80
+ sx={tabSx}
81
+ />
82
+ );
83
+ })}
84
+ </MuiTabs>
85
+
86
+ <Box m={2} role="tabpanel" sx={{width:'100%'}} >
87
+ {children.map((child, idx) => {
88
+ const value = child.props.value ?? idx;
89
+ return value === currentValue ? (
90
+ <Box key={value}>{child.props.children}</Box>
91
+ ) : null;
92
+ })}
93
+ </Box>
94
+ </Box>
95
+
96
+ );
97
+ };
98
+
99
+ export default Tabs;
@@ -0,0 +1,4 @@
1
+ export const TAB_DISPLAY_MAP: Record<"horizontal" | "vertical", { display: string, flexDirection: string }> = {
2
+ horizontal: { display: "flex", flexDirection: "column" },
3
+ vertical: { display: "flex", flexDirection: "row" }
4
+ };
@@ -0,0 +1,2 @@
1
+ export { default as Tabs } from './Tabs';
2
+ export { default as Tab } from './Tab';
@@ -0,0 +1,43 @@
1
+ import { ColorVariant, PositionVariant } from './Timeline.stories';
2
+ export const DefaultTimelineDefinition = `
3
+ <Timeline>
4
+ <TimelineItem dotColor="primary" connectorColor="primary">
5
+ Primer paso
6
+ </TimelineItem>
7
+ <TimelineItem dotColor="secondary" connectorColor="secondary">
8
+ Segundo paso
9
+ </TimelineItem>
10
+ <TimelineItem dotColor="success">
11
+ Tercer paso
12
+ </TimelineItem>
13
+ </Timeline>
14
+ `.trim();
15
+
16
+
17
+ export const ColorVariantTimelineDefinition = `
18
+ <Timeline>
19
+ <TimelineItem dotColor="success" connectorColor="error">
20
+ eat
21
+ </TimelineItem>
22
+ <TimelineItem dotColor="primary" connectorColor="success">
23
+ code
24
+ </TimelineItem>
25
+ <TimelineItem dotColor="warning">
26
+ repeat
27
+ </TimelineItem>
28
+ </Timeline>`.trim();
29
+
30
+
31
+ export const PositionVariantTimelineDefinition = `
32
+ <Timeline position="alternate">
33
+ <TimelineItem>
34
+ eat
35
+ </TimelineItem>
36
+ <TimelineItem>
37
+ code
38
+ </TimelineItem>
39
+ <TimelineItem>
40
+ repeat
41
+ </TimelineItem>
42
+ </Timeline>
43
+ `.trim();
@@ -0,0 +1,108 @@
1
+ import type { Meta, StoryObj } from "@storybook/react";
2
+ import { TimelineItem } from "./TimelineItem";
3
+ import { DefaultTimelineDefinition } from "./Timeline.definition";
4
+ import { Timeline } from "./Timeline";
5
+ import { Box } from "@mui/material";
6
+
7
+ const meta: Meta<typeof Timeline> = {
8
+ title: "Components/Timeline",
9
+ component: Timeline,
10
+ parameters: {
11
+ layout: "centered"
12
+ },
13
+ tags: ["autodocs"]
14
+ };
15
+
16
+ export default meta;
17
+
18
+ type Story = StoryObj<typeof Timeline>;
19
+
20
+ export const Default: Story = {
21
+ args: {
22
+ position: "right"
23
+ },
24
+ render: (args) => (
25
+ <Box sx={{ width: 300 }}>
26
+ <Timeline {...args}>
27
+ <TimelineItem>
28
+ eat
29
+ </TimelineItem>
30
+ <TimelineItem>
31
+ code
32
+ </TimelineItem>
33
+ <TimelineItem>
34
+ sleep
35
+ </TimelineItem>
36
+ </Timeline>
37
+ </Box>
38
+ ),
39
+ parameters: {
40
+ docs: {
41
+ description: {
42
+ story: "Ejemplo básico de timeline"
43
+ },
44
+ source: {
45
+ code: DefaultTimelineDefinition
46
+ }
47
+ }
48
+ }
49
+ };
50
+
51
+ export const ColorVariant: Story = {
52
+ render: () => (
53
+ <Box sx={{ width: 300 }}>
54
+ <Timeline>
55
+ <TimelineItem dotColor="success" connectorColor="error">
56
+ eat
57
+ </TimelineItem>
58
+ <TimelineItem dotColor="primary" connectorColor="success">
59
+ code
60
+ </TimelineItem>
61
+ <TimelineItem dotColor="warning">
62
+ repeat
63
+ </TimelineItem>
64
+ </Timeline>
65
+ </Box>
66
+ ),
67
+ parameters: {
68
+ docs: {
69
+ description: {
70
+ story: "Variantes de color en los dots y conectores"
71
+ },
72
+ source: {
73
+ code: DefaultTimelineDefinition
74
+ }
75
+ }
76
+ }
77
+ };
78
+
79
+ export const PositionVariant: Story = {
80
+ render: () => (
81
+ <Box sx={{ width: 300 }}>
82
+ <Timeline position="alternate">
83
+ <TimelineItem>
84
+ eat
85
+ </TimelineItem>
86
+ <TimelineItem>
87
+ code
88
+ </TimelineItem>
89
+ <TimelineItem>
90
+ repeat
91
+ </TimelineItem>
92
+ </Timeline>
93
+ </Box>
94
+ ),
95
+ args: {
96
+ position: "alternate"
97
+ },
98
+ parameters: {
99
+ docs: {
100
+ description: {
101
+ story: "Variantes de color en los dots y conectores"
102
+ },
103
+ source: {
104
+ code: DefaultTimelineDefinition
105
+ }
106
+ }
107
+ }
108
+ };