@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,49 @@
1
+ import * as React from "react";
2
+ import MuiTimeline from "@mui/lab/Timeline";
3
+ import { timelineContentClasses } from "@mui/lab/TimelineContent";
4
+ import { timelineItemClasses, TimelineItemProps as MuiTimelineItemProps } from "@mui/lab/TimelineItem";
5
+ import { Box } from "@mui/material";
6
+
7
+ interface TimelineItemProps extends MuiTimelineItemProps {
8
+ connectorColor?: string;
9
+ sx?: object;
10
+ }
11
+
12
+ interface TimelineProps {
13
+ children: React.ReactElement<TimelineItemProps>[];
14
+ position?: "left" | "right" | 'alternate' | 'alternate-reverse' ;
15
+ sx?: object;
16
+ }
17
+
18
+ export const Timeline: React.FC<TimelineProps> = ({ children, position = "right", sx }) => {
19
+ const count = React.Children.count(children);
20
+
21
+ const customSx = (position === "left" || position === "right")
22
+ ? {
23
+ [`& .${timelineItemClasses.root}:before`]: {
24
+ flex: 0,
25
+ padding: 0,
26
+ },
27
+ ...sx,
28
+ }
29
+ : sx;
30
+
31
+ return (
32
+ <MuiTimeline position={position}
33
+ sx={{...customSx}}
34
+ >
35
+ {React.Children.map(children, (child, idx) =>
36
+ React.isValidElement(child)
37
+ ? React.cloneElement(child, {
38
+ connectorColor: idx < count - 1
39
+ ? child.props.connectorColor ?? 'gray.main'
40
+ : undefined,
41
+ })
42
+ : null
43
+ )}
44
+ </MuiTimeline>
45
+
46
+ );
47
+ };
48
+
49
+ export default Timeline;
@@ -0,0 +1,31 @@
1
+
2
+ import MuiTimelineItem from "@mui/lab/TimelineItem";
3
+ import MuiTimelineSeparator from "@mui/lab/TimelineSeparator";
4
+ import MuiTimelineConnector from "@mui/lab/TimelineConnector";
5
+ import MuiTimelineContent from "@mui/lab/TimelineContent";
6
+ import MuiTimelineDot from "@mui/lab/TimelineDot";
7
+
8
+ export interface TimelineItemProps {
9
+ dotColor?: 'primary' | 'secondary' | 'grey' | 'inherit' | 'success' | 'error' | 'info' | 'warning';
10
+ connectorColor?: 'success' | 'error' | 'info' | 'warning' | 'primary' | 'secondary' | 'grey';
11
+ children: React.ReactNode;
12
+ }
13
+
14
+ export const TimelineItem: React.FC<TimelineItemProps> = ({
15
+ dotColor = 'grey',
16
+ connectorColor,
17
+ children
18
+ }) => {
19
+ const color = connectorColor ? `${connectorColor}.main` : 'secondary.main';
20
+ return (
21
+ <MuiTimelineItem>
22
+ <MuiTimelineSeparator>
23
+ <MuiTimelineDot color={dotColor} />
24
+ {connectorColor !== undefined && <MuiTimelineConnector sx={{ bgcolor: color }} />}
25
+ </MuiTimelineSeparator>
26
+ <MuiTimelineContent>{children}</MuiTimelineContent>
27
+ </MuiTimelineItem>
28
+ );
29
+ };
30
+
31
+ export default TimelineItem
@@ -0,0 +1,2 @@
1
+ export { default as Timeline } from './Timeline';
2
+ export { default as TimelineItem } from './TimelineItem';
@@ -0,0 +1,129 @@
1
+ import React, { useState } from 'react';
2
+ import type { Meta, StoryObj } from '@storybook/react';
3
+ import Tooltip from './Tooltip'; // Asegúrate que la ruta sea correcta
4
+ import Button from '@mui/material/Button';
5
+ import Stack from '@mui/material/Stack';
6
+ import { Input } from '../Input/Input';
7
+
8
+ // Helper controlado para envolver nuestro Input propio con estado local
9
+ const TooltipNameInput: React.FC = () => {
10
+ const [value, setValue] = useState<string | number>('');
11
+ return (
12
+ <Input
13
+ label="Nombre"
14
+ value={value}
15
+ onChange={(next) => setValue(next)}
16
+ />
17
+ );
18
+ };
19
+
20
+ // --- Metadatos de la Historia ---
21
+ // Define la configuración global de tu componente en Storybook
22
+ const meta: Meta<typeof Tooltip> = {
23
+ // Título que aparecerá en el sidebar de Storybook
24
+ title: 'Components/Tooltip',
25
+ component: Tooltip,
26
+ // Parámetros para configurar el comportamiento en la documentación
27
+ parameters: {
28
+ layout: 'centered', // Centra el componente en el lienzo
29
+ },
30
+ // Documentación de los argumentos (props)
31
+
32
+ tags: ["autodocs"]
33
+ };
34
+
35
+ export default meta;
36
+
37
+ // Define el tipo de tu historia para inferir los argumentos (props)
38
+ type Story = StoryObj<typeof Tooltip>;
39
+
40
+ // --- Definición de Historias ---
41
+
42
+ const textoLargo = "Este es un texto de Tooltip muy largo para demostrar cómo el 'maxWidth' limita la longitud de la línea y obliga al texto a saltar a la siguiente línea, mejorando la legibilidad en tooltips largos.";
43
+
44
+
45
+ /**
46
+ * Historia 1: Tooltip Básico
47
+ * Muestra el Tooltip sobre un botón sin especificar un ancho máximo.
48
+ */
49
+ export const TooltipBasico: Story = {
50
+ args: {
51
+ text: 'Información corta y concisa.',
52
+ children: <Button variant="contained">Pasa el ratón aquí</Button>,
53
+ },
54
+ };
55
+
56
+ /**
57
+ * Historia 2: Tooltip con Ancho Máximo Específico
58
+ * Muestra un texto largo y aplica un ancho máximo para forzar el salto de línea.
59
+ */
60
+ export const TooltipConAnchoMaximo: Story = {
61
+ args: {
62
+ text: textoLargo,
63
+ maxWidth: 200, // Aplicamos el ancho máximo
64
+ children: <Button variant="outlined">Tooltip con Ancho Máximo (200px)</Button>,
65
+ },
66
+ };
67
+
68
+ /**
69
+ * Historia 3: Tooltip Aplicado a un Campo de Texto (TextField)
70
+ * Demuestra que el componente funciona con cualquier elemento.
71
+ */
72
+ export const AplicadoAElementoDeFormulario: Story = {
73
+ args: {
74
+ text: 'Introduce tu nombre completo y validado.',
75
+ maxWidth: 300,
76
+ children: <TooltipNameInput />,
77
+ },
78
+ };
79
+
80
+ /**
81
+ * Historia 4: Ejemplo en un Contenedor con Estilos
82
+ * Muestra el uso de la propiedad 'sx' opcional en el contenedor.
83
+ */
84
+ export const ContenedorEstilizado: Story = {
85
+ args: {
86
+ text: 'Este texto se muestra al pasar el ratón sobre el span estilizado.',
87
+ maxWidth: 250,
88
+ sx: { // Estilos aplicados al Box que envuelve el children
89
+ border: '2px dashed #007bff',
90
+ padding: '8px',
91
+ borderRadius: '4px',
92
+ backgroundColor: '#e6f7ff',
93
+ },
94
+ children: <span>Contenedor Estilizado (Hover aquí)</span>,
95
+ }
96
+ }
97
+
98
+
99
+ /**
100
+ * Historia 5: Variantes Múltiples
101
+ * Utiliza el 'render' para mostrar varios ejemplos a la vez.
102
+ */
103
+ export const VariantesMultiples: Story = {
104
+ // Necesitamos un Stack para organizar los elementos
105
+ render: (args) => (
106
+ <Stack spacing={4} alignItems="flex-start" sx={{ padding: '20px' }}>
107
+ <Tooltip {...args} text="Tooltip #1: Básico" maxWidth={150}>
108
+ <Button variant="contained" color="primary">Botón A</Button>
109
+ </Tooltip>
110
+
111
+ <Tooltip {...args} text="Tooltip #2: Un poco más de info" maxWidth={180}>
112
+ <Button variant="contained" color="secondary">Botón B</Button>
113
+ </Tooltip>
114
+
115
+ <Tooltip {...args} text={textoLargo} maxWidth={280}>
116
+ <Button variant="text">Texto Largo</Button>
117
+ </Tooltip>
118
+ </Stack>
119
+ ),
120
+ // Eliminamos el layout centered para esta historia
121
+ parameters: {
122
+ layout: 'padded',
123
+ },
124
+ // Dejamos el 'args' de 'text' vacío ya que se sobrescribe en el render
125
+ args: {
126
+ text: '',
127
+ children: undefined,
128
+ }
129
+ };
@@ -0,0 +1,58 @@
1
+ import React from 'react';
2
+ import MuiTooltip from '@mui/material/Tooltip';
3
+ import Typography from '@mui/material/Typography';
4
+ import Box from '@mui/material/Box';
5
+ import { SxProps, Theme } from '@mui/material';
6
+
7
+ /**
8
+ * Propiedades del componente Tooltip.
9
+ * @param {string} text - El texto a mostrar dentro del Tooltip.
10
+ * @param {number} [maxWidth] - El ancho máximo opcional del Tooltip en píxeles.
11
+ * @param {React.ReactNode} children - El elemento al que se le aplicará el Tooltip.
12
+ * @param {SxProps<Theme>} [sx] - Estilos opcionales para el Box contenedor.
13
+ */
14
+ interface TooltipProps {
15
+ text: string;
16
+ maxWidth?: number;
17
+ children: React.ReactNode;
18
+ sx?: SxProps<Theme>;
19
+ }
20
+
21
+ /**
22
+ * Componente Tooltip reutilizable.
23
+ * Muestra un texto al pasar el ratón sobre su elemento hijo,
24
+ * permitiendo un ancho máximo configurable.
25
+ * * @param {TooltipProps} props - Propiedades del Tooltip.
26
+ */
27
+ const Tooltip: React.FC<TooltipProps> = ({ text, maxWidth, children, sx }) => {
28
+
29
+ const tooltipContentStyle: SxProps<Theme> = {
30
+
31
+ ...(maxWidth && { maxWidth: maxWidth }),
32
+ padding: '4px 8px',
33
+ textAlign: 'center',
34
+
35
+ };
36
+
37
+ return (
38
+
39
+ <MuiTooltip
40
+ title={
41
+
42
+ <Typography variant="caption" component="span" sx={tooltipContentStyle}>
43
+ {text}
44
+ </Typography>
45
+ }
46
+
47
+ placement="top"
48
+ arrow
49
+ >
50
+
51
+ <Box component="span" sx={{ display: 'inline-block', ...sx }}>
52
+ {children}
53
+ </Box>
54
+ </MuiTooltip>
55
+ );
56
+ };
57
+
58
+ export default Tooltip;
@@ -0,0 +1 @@
1
+ export { default as Tooltip } from './Tooltip';
@@ -0,0 +1,118 @@
1
+ import type { SxProps, Theme } from '@mui/material/styles';
2
+
3
+ import {
4
+ LABEL_COLOR_FILLED,
5
+ LABEL_COLOR_FOCUSED,
6
+ LABEL_COLOR_REST,
7
+ LABEL_FONT_WEIGHT_FILLED,
8
+ LABEL_MARGIN_TOP,
9
+ LABEL_SHRINK_TRANSFORM,
10
+ LABEL_TRANSFORM_ORIGIN,
11
+ LABEL_TRANSITION,
12
+ } from '../../theme/tokens';
13
+
14
+ export type LabelPosition = 'outside' | 'floating';
15
+
16
+ export interface BuildFormFieldSxOptions {
17
+ borderRadius: number | string;
18
+ labelPosition: LabelPosition;
19
+ /**
20
+ * Si es `true`, los selectores incluyen también la API nueva de MUI X
21
+ * Pickers (v8): `MuiPickersInputBase-root`, `MuiPickersOutlinedInput-*`.
22
+ */
23
+ includePickersApi?: boolean;
24
+ /**
25
+ * Selectores/valores extra que se mergean SOLO cuando labelPosition === 'outside'.
26
+ * Usar para paddings específicos del componente (p.ej. MuiAutocomplete-input).
27
+ */
28
+ extraOutsideSx?: Record<string, any>;
29
+ /**
30
+ * Selectores/valores extra que se mergean SOLO cuando labelPosition === 'floating'.
31
+ */
32
+ extraFloatingSx?: Record<string, any>;
33
+ }
34
+
35
+ const toRadius = (borderRadius: number | string) =>
36
+ typeof borderRadius === 'number' ? `${borderRadius}px` : borderRadius;
37
+
38
+ /**
39
+ * Builder del sx compartido por todos los campos de formulario
40
+ * (Input/Select/Autocomplete/DatePicker/DateTimePicker).
41
+ *
42
+ * Produce:
43
+ * - en modo "floating": sólo el border-radius del outlined input;
44
+ * - en modo "outside": todo el pack (margen superior, label flotante afuera,
45
+ * input base, notched outline oculto, helper text sin margen izquierdo).
46
+ *
47
+ * Componentes con paddings o selectores propios pueden inyectarlos vía
48
+ * `extraOutsideSx` / `extraFloatingSx`.
49
+ */
50
+ export const buildFormFieldSx = ({
51
+ borderRadius,
52
+ labelPosition,
53
+ includePickersApi = false,
54
+ extraOutsideSx,
55
+ extraFloatingSx,
56
+ }: BuildFormFieldSxOptions): SxProps<Theme> => {
57
+ const radius = toRadius(borderRadius);
58
+
59
+ // ── Selectores (alternan según la API de pickers) ────────────────────
60
+ const outlinedRootSelector = includePickersApi
61
+ ? '& .MuiOutlinedInput-root, & .MuiPickersOutlinedInput-root'
62
+ : '& .MuiOutlinedInput-root';
63
+
64
+ const inputBaseSelector = includePickersApi
65
+ ? '& .MuiInputBase-root, & .MuiPickersInputBase-root'
66
+ : '& .MuiInputBase-root';
67
+
68
+ const notchedOutlineSelector = includePickersApi
69
+ ? '& .MuiOutlinedInput-notchedOutline, & .MuiPickersOutlinedInput-notchedOutline'
70
+ : '& .MuiOutlinedInput-notchedOutline';
71
+
72
+ // ── Floating ─────────────────────────────────────────────────────────
73
+ if (labelPosition === 'floating') {
74
+ return {
75
+ [outlinedRootSelector]: { borderRadius: radius },
76
+ ...(extraFloatingSx ?? {}),
77
+ };
78
+ }
79
+
80
+ // ── Outside ──────────────────────────────────────────────────────────
81
+ return {
82
+ marginTop: LABEL_MARGIN_TOP,
83
+
84
+ '& .MuiInputLabel-root': {
85
+ color: LABEL_COLOR_REST,
86
+ transition: LABEL_TRANSITION,
87
+
88
+ // Estado shrunk (focused o con valor): flota ARRIBA del input.
89
+ '&.MuiInputLabel-shrink': {
90
+ transform: LABEL_SHRINK_TRANSFORM,
91
+ transformOrigin: LABEL_TRANSFORM_ORIGIN,
92
+ color: LABEL_COLOR_FILLED,
93
+ fontWeight: LABEL_FONT_WEIGHT_FILLED,
94
+ },
95
+
96
+ '&.Mui-focused': { color: LABEL_COLOR_FOCUSED },
97
+ },
98
+
99
+ // Input base — centra verticalmente (clásico y, si aplica, pickers).
100
+ [inputBaseSelector]: {
101
+ borderRadius: radius,
102
+ display: 'flex',
103
+ alignItems: 'center',
104
+ },
105
+
106
+ // El label flota afuera: ocultar legend del notch.
107
+ [notchedOutlineSelector]: {
108
+ top: 0,
109
+ '& legend': { display: 'none' },
110
+ },
111
+
112
+ '& .MuiFormHelperText-root': {
113
+ marginLeft: 0,
114
+ },
115
+
116
+ ...(extraOutsideSx ?? {}),
117
+ };
118
+ };
@@ -0,0 +1,35 @@
1
+ import type { SxProps, Theme } from '@mui/material/styles';
2
+
3
+ import type { LibraryComponentName, PresetStyle } from '../../theme/componentStyles';
4
+
5
+ /**
6
+ * Nombre del preset built-in del paquete. No se registra en el theme: si un
7
+ * componente recibe `preset="default"` (o no recibe preset), sólo aplica el
8
+ * estilo base de fábrica.
9
+ */
10
+ export const DEFAULT_PRESET_NAME = 'default';
11
+
12
+ /**
13
+ * Resuelve el sx de un preset registrado en `theme.styles[componentName]`.
14
+ *
15
+ * - Si `presetName` es `"default"` o `undefined`, devuelve `undefined`
16
+ * (caller sólo aplicará el estilo base del paquete).
17
+ * - Si la entrada en el theme es una función `(theme) => sx`, se ejecuta.
18
+ * - Si la entrada no existe, devuelve `undefined` silenciosamente (no se
19
+ * rompe el componente — la responsabilidad de registrarlo es del consumer).
20
+ */
21
+ export function resolvePreset(
22
+ componentName: LibraryComponentName,
23
+ presetName: string | undefined,
24
+ theme: Theme,
25
+ ): SxProps<Theme> | undefined {
26
+ if (!presetName || presetName === DEFAULT_PRESET_NAME) return undefined;
27
+
28
+ const componentPresets = theme.styles?.[componentName];
29
+ if (!componentPresets) return undefined;
30
+
31
+ const entry: PresetStyle | undefined = componentPresets[presetName];
32
+ if (!entry) return undefined;
33
+
34
+ return typeof entry === 'function' ? entry(theme) : entry;
35
+ }
@@ -0,0 +1,168 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import React from 'react';
3
+ import { Box, Button, Typography } from '@mui/material';
4
+
5
+ // Importa el componente de demostración unificado
6
+ import ClipboardUnifiedDemo from './ClipboardUnifiedDemo';
7
+
8
+ // Importa las definiciones de las historias
9
+
10
+ import useClipboard from './ClipBoard';
11
+
12
+ // Componente Wrapper (Mantenido para la tipificación)
13
+ const ClipboardDemoWrapper: React.FC = () => <ClipboardUnifiedDemo {...(meta.args as any)} />;
14
+
15
+ // =============================================================================
16
+ // Definición de las meta-propiedades para Storybook
17
+ // =============================================================================
18
+ const meta: Meta<typeof ClipboardUnifiedDemo> = {
19
+ title: 'Hooks/useClipboard (Unificado Ref & Función)',
20
+ component: ClipboardUnifiedDemo,
21
+ tags: ['autodocs'],
22
+ parameters: {
23
+ layout: 'padded',
24
+ docs: {
25
+ description: {
26
+ component: 'Hook unificado que soporta la **copia por Referencia (`ref`)** para un solo elemento y la **copia por Función (`copy(text)`)** para iteraciones (tablas, listas), proporcionando feedback visual con un Snackbar de Material UI.',
27
+ },
28
+ },
29
+ },
30
+ // Argumentos de control para el MODO FUNCIÓN
31
+ argTypes: {
32
+ message: { control: 'text', description: 'Mensaje de éxito para el MODO FUNCIÓN.' },
33
+ severity: { control: 'select', options: ['success', 'info', 'warning', 'error'], description: 'Gravedad del Alert para el MODO FUNCIÓN.' },
34
+ duration: { control: { type: 'number', min: 0, max: 5000, step: 500 }, description: 'Duración del Snackbar.' },
35
+ vertical: { control: 'select', options: ['top', 'bottom'], description: 'Posición vertical.' },
36
+ horizontal: { control: 'select', options: ['left', 'center', 'right'], description: 'Posición horizontal.' },
37
+ },
38
+ args: {
39
+ message: '¡Dato copiado con la función!',
40
+ severity: 'success',
41
+ duration: 2000,
42
+ vertical: 'bottom',
43
+ horizontal: 'center',
44
+ },
45
+ };
46
+
47
+ export default meta;
48
+ type Story = StoryObj<typeof ClipboardUnifiedDemo>;
49
+
50
+ // =============================================================================
51
+ // Historias
52
+ // =============================================================================
53
+
54
+ export const DemoUnificada: Story = {
55
+ name: 'A. Demostración Completa',
56
+ args: {
57
+ message: 'Dato copiado con éxito (Función)',
58
+ severity: 'success',
59
+ },
60
+ parameters: {
61
+ docs: {
62
+ description: {
63
+ story: "Muestra ambos modos de uso (`ref` y `copy`) simultáneamente. El feedback del modo `ref` tiene color amarillo (warning) por defecto para diferenciarlo del modo `copy`."
64
+ },
65
+ // source: { code: MultipleFunctionElementsDefinition.trim() }
66
+ }
67
+ }
68
+ };
69
+
70
+ // --------------------------------------------------
71
+
72
+ export const UsoBasicoPorRef: Story = {
73
+ name: 'B. Modo Ref: Uso Básico',
74
+ render: () => {
75
+ const { ref, CopyMessage } = useClipboard(); // Sin opciones, usa valores por defecto
76
+ return (
77
+ <Box>
78
+ <Typography ref={ref} sx={{ p: 2, border: '1px solid #ccc', cursor: 'pointer' }}>
79
+ Texto para copiar por ref (click aquí).
80
+ </Typography>
81
+ <CopyMessage />
82
+ </Box>
83
+ );
84
+ },
85
+ parameters: {
86
+ docs: {
87
+ description: {
88
+ story: "Demuestra el modo **Referencia**, donde el hook adjunta un listener de clic al elemento y copia su `innerText`."
89
+ },
90
+ // source: { code: BasicRefUsageDefinition.trim() }
91
+ }
92
+ }
93
+ };
94
+
95
+ // --------------------------------------------------
96
+
97
+ // Datos simulados para la demostración del modo función
98
+ const mockData = [
99
+ { id: 1, content: 'Dato 1' },
100
+ { id: 2, content: 'Dato 2' },
101
+ { id: 3, content: 'Dato 3' },
102
+ ];
103
+
104
+ export const UsoPorFuncionEnIteracion: Story = {
105
+ name: 'C. Modo Función: Uso en Iteración',
106
+ render: () => {
107
+ const { copy, CopyMessage } = useClipboard({
108
+ message: 'Contenido de la fila copiado.',
109
+ severity: 'info',
110
+ position: { vertical: 'top', horizontal: 'right' }
111
+ });
112
+
113
+ return (
114
+ <Box>
115
+ <Typography variant="h6">Copiar datos individuales:</Typography>
116
+ {mockData.map(item => (
117
+ <Button
118
+ key={item.id}
119
+ variant="outlined"
120
+ onClick={() => copy(item.content)}
121
+ sx={{ mr: 2 }}
122
+ >
123
+ Copiar: {item.content}
124
+ </Button>
125
+ ))}
126
+ <CopyMessage />
127
+ </Box>
128
+ );
129
+ },
130
+ parameters: {
131
+ docs: {
132
+ description: {
133
+ story: "Demuestra el modo **Función**, donde se llama a `copy(text)` dentro de un bucle, permitiendo controlar exactamente qué texto se copia."
134
+ },
135
+ // source: { code: FunctionModeUsageDefinition.trim() }
136
+ }
137
+ }
138
+ };
139
+
140
+ // --------------------------------------------------
141
+
142
+ export const CustomConfiguracionRef: Story = {
143
+ name: 'D. Modo Ref: Con Configuración Custom',
144
+ render: () => {
145
+ const { ref, CopyMessage } = useClipboard({
146
+ message: 'Copia OK en la parte superior.',
147
+ severity: 'success',
148
+ duration: 1800,
149
+ position: { vertical: 'top', horizontal: 'left' }
150
+ });
151
+ return (
152
+ <Box>
153
+ <Typography ref={ref} sx={{ p: 2, border: '1px solid #0a0', backgroundColor: '#eef', cursor: 'pointer' }}>
154
+ Clic. Snackbar aparecerá arriba a la izquierda.
155
+ </Typography>
156
+ <CopyMessage />
157
+ </Box>
158
+ );
159
+ },
160
+ parameters: {
161
+ docs: {
162
+ description: {
163
+ story: "Muestra cómo aplicar opciones personalizadas de Snackbar al modo **Referencia**."
164
+ },
165
+ // source: { code: CustomRefUsageDefinition.trim() }
166
+ }
167
+ }
168
+ };