@soyfri/shared-library 1.5.0-beta.3 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (349) 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/styles.css +112 -0
  12. package/package.json +43 -134
  13. package/rollup.config.cjs +87 -0
  14. package/src/components/Autocomplete/Autocomplete.definitions.ts +254 -0
  15. package/src/components/Autocomplete/Autocomplete.stories.tsx +387 -0
  16. package/src/components/Autocomplete/Autocomplete.tsx +139 -0
  17. package/src/components/Autocomplete/index.ts +1 -0
  18. package/src/components/Avatar/Avatar.stories.tsx +54 -0
  19. package/src/components/Avatar/Avatar.tsx +143 -0
  20. package/src/components/Avatar/index.ts +1 -0
  21. package/src/components/Button/Button.definition.ts +97 -0
  22. package/src/components/Button/Button.stories.tsx +285 -0
  23. package/src/components/Button/Button.tsx +67 -0
  24. package/src/components/Button/index.ts +1 -0
  25. package/src/components/Card/Card.definition.ts +5 -0
  26. package/src/components/Card/Card.stories.tsx +32 -0
  27. package/src/components/Card/Card.tsx +44 -0
  28. package/src/components/Card/index.ts +1 -0
  29. package/src/components/Chip/Chip.definitions.ts +167 -0
  30. package/src/components/Chip/Chip.stories.tsx +265 -0
  31. package/src/components/Chip/Chip.tsx +61 -0
  32. package/src/components/Chip/index.ts +1 -0
  33. package/src/components/Column/Column.tsx +29 -0
  34. package/src/components/Column/index.ts +1 -0
  35. package/src/components/DatePicker/DatePicker.definitions.ts +205 -0
  36. package/src/components/DatePicker/DatePicker.stories.tsx +282 -0
  37. package/src/components/DatePicker/DatePicker.tsx +165 -0
  38. package/src/components/DatePicker/index.ts +1 -0
  39. package/src/components/DateRangePicker/DateRangePicker.definitions.ts +191 -0
  40. package/src/components/DateRangePicker/DateRangePicker.stories.tsx +252 -0
  41. package/src/components/DateRangePicker/DateRangePicker.tsx +56 -0
  42. package/src/components/DateRangePicker/index.ts +1 -0
  43. package/src/components/DateTimePicker/DateTimePicker.definitions.ts +232 -0
  44. package/src/components/DateTimePicker/DateTimePicker.stories.tsx +390 -0
  45. package/src/components/DateTimePicker/DateTimePicker.tsx +191 -0
  46. package/src/components/DateTimePicker/index.ts +1 -0
  47. package/src/components/Flyout/Flyout.stories.tsx +274 -0
  48. package/src/components/Flyout/Flyout.tsx +122 -0
  49. package/src/components/Flyout/index.ts +1 -0
  50. package/src/components/Gallery/Gallery.definition.tsx +37 -0
  51. package/src/components/Gallery/Gallery.stories.tsx +82 -0
  52. package/src/components/Gallery/Gallery.tsx +118 -0
  53. package/src/components/Gallery/GalleryLightbox.tsx +170 -0
  54. package/src/components/Gallery/GalleryMain.tsx +84 -0
  55. package/src/components/Gallery/GalleryThumbnails.tsx +106 -0
  56. package/src/components/Gallery/index.ts +1 -0
  57. package/src/components/Icon/Icon.stories.tsx +54 -0
  58. package/src/components/Icon/Icon.tsx +94 -0
  59. package/src/components/Icon/index.ts +2 -0
  60. package/src/components/Input/Input.definitions.ts +252 -0
  61. package/src/components/Input/Input.stories.tsx +387 -0
  62. package/src/components/Input/Input.tsx +186 -0
  63. package/src/components/Input/index.ts +1 -0
  64. package/src/components/InputGroup/InputGroup.stories.tsx +136 -0
  65. package/src/components/InputGroup/InputGroup.tsx +136 -0
  66. package/src/components/InputGroup/index.ts +1 -0
  67. package/src/components/MenuButton/MenuButton.stories.tsx +197 -0
  68. package/src/components/MenuButton/MenuButton.tsx +100 -0
  69. package/src/components/MenuButton/index.ts +1 -0
  70. package/src/components/Modal/Modal.stories.tsx +293 -0
  71. package/src/components/Modal/Modal.tsx +173 -0
  72. package/src/components/Modal/ModalBody.tsx +16 -0
  73. package/src/components/Modal/ModalFooter.tsx +61 -0
  74. package/src/components/Modal/ModalHeader.tsx +18 -0
  75. package/src/components/Modal/index.ts +1 -0
  76. package/src/components/Select/Select.definitions.ts +488 -0
  77. package/src/components/Select/Select.stories.tsx +569 -0
  78. package/src/components/Select/Select.tsx +468 -0
  79. package/src/components/Select/index.ts +1 -0
  80. package/src/components/Stat/Stat.stories.tsx +85 -0
  81. package/src/components/Stat/Stat.tsx +117 -0
  82. package/src/components/Stat/index.ts +2 -0
  83. package/src/components/StatusMessage/StatusMessage.stories.tsx +130 -0
  84. package/src/components/StatusMessage/StatusMessage.tsx +162 -0
  85. package/src/components/StatusMessage/index.ts +2 -0
  86. package/src/components/Stepper/Step.tsx +21 -0
  87. package/src/components/Stepper/Stepper.definition.ts +75 -0
  88. package/src/components/Stepper/Stepper.stories.tsx +122 -0
  89. package/src/components/Stepper/Stepper.tsx +59 -0
  90. package/src/components/Stepper/index.ts +2 -0
  91. package/src/components/Table/EmptyTable.png +0 -0
  92. package/src/components/Table/Table.definition.ts +580 -0
  93. package/src/components/Table/Table.stories.tsx +853 -0
  94. package/src/components/Table/Table.tsx +495 -0
  95. package/src/components/Table/data.ts +134 -0
  96. package/src/components/Table/exportsUtils.ts +195 -0
  97. package/src/components/Table/index.ts +3 -0
  98. package/src/components/Table/types.ts +34 -0
  99. package/src/components/Tabs/Tab.definition.ts +53 -0
  100. package/src/components/Tabs/Tab.tsx +19 -0
  101. package/src/components/Tabs/Tabs.stories.tsx +118 -0
  102. package/src/components/Tabs/Tabs.tsx +99 -0
  103. package/src/components/Tabs/_tabUtils.tsx +4 -0
  104. package/src/components/Tabs/index.ts +2 -0
  105. package/src/components/Timeline/Timeline.definition.ts +43 -0
  106. package/src/components/Timeline/Timeline.stories.tsx +108 -0
  107. package/src/components/Timeline/Timeline.tsx +49 -0
  108. package/src/components/Timeline/TimelineItem.tsx +31 -0
  109. package/src/components/Timeline/index.ts +2 -0
  110. package/src/components/Tooltip/Tooltip.stories.tsx +117 -0
  111. package/src/components/Tooltip/Tooltip.tsx +58 -0
  112. package/src/components/Tooltip/index.ts +1 -0
  113. package/src/hooks/ClipBoard/ClipBoard.stories.tsx +168 -0
  114. package/src/hooks/ClipBoard/ClipBoard.tsx +131 -0
  115. package/src/hooks/ClipBoard/ClipboardUnifiedDemo.tsx +111 -0
  116. package/src/hooks/ClipBoard/index.ts +1 -0
  117. package/src/index.ts +1 -0
  118. package/src/styles.css +3 -0
  119. package/tailwind.config.js +10 -0
  120. package/tsconfig.json +48 -0
  121. package/tsup.config.js +41 -0
  122. package/vite.config.js +132 -0
  123. package/vitest.config.ts +35 -0
  124. /package/{README.md → Readme.md} +0 -0
  125. /package/{Button-C17mExpd.cjs → dist/Button-C17mExpd.cjs} +0 -0
  126. /package/{Button-C17mExpd.cjs.map → dist/Button-C17mExpd.cjs.map} +0 -0
  127. /package/{Button-UkkP-bNw.js → dist/Button-UkkP-bNw.js} +0 -0
  128. /package/{Button-UkkP-bNw.js.map → dist/Button-UkkP-bNw.js.map} +0 -0
  129. /package/{DatePicker-BSNboVhN.js → dist/DatePicker-BSNboVhN.js} +0 -0
  130. /package/{DatePicker-BSNboVhN.js.map → dist/DatePicker-BSNboVhN.js.map} +0 -0
  131. /package/{DatePicker-BoqxWAhj.cjs → dist/DatePicker-BoqxWAhj.cjs} +0 -0
  132. /package/{DatePicker-BoqxWAhj.cjs.map → dist/DatePicker-BoqxWAhj.cjs.map} +0 -0
  133. /package/{Input-DFHs7cJ_.js → dist/Input-DFHs7cJ_.js} +0 -0
  134. /package/{Input-DFHs7cJ_.js.map → dist/Input-DFHs7cJ_.js.map} +0 -0
  135. /package/{Input-c8MwNNPg.cjs → dist/Input-c8MwNNPg.cjs} +0 -0
  136. /package/{Input-c8MwNNPg.cjs.map → dist/Input-c8MwNNPg.cjs.map} +0 -0
  137. /package/{Select-BO2N56sm.cjs → dist/Select-BO2N56sm.cjs} +0 -0
  138. /package/{Select-BO2N56sm.cjs.map → dist/Select-BO2N56sm.cjs.map} +0 -0
  139. /package/{Select-BcLkyHSE.js → dist/Select-BcLkyHSE.js} +0 -0
  140. /package/{Select-BcLkyHSE.js.map → dist/Select-BcLkyHSE.js.map} +0 -0
  141. /package/{components → dist/components}/Autocomplete/Autocomplete.cjs +0 -0
  142. /package/{components → dist/components}/Autocomplete/Autocomplete.cjs.map +0 -0
  143. /package/{components → dist/components}/Autocomplete/Autocomplete.d.ts +0 -0
  144. /package/{components → dist/components}/Autocomplete/Autocomplete.definitions.d.ts +0 -0
  145. /package/{components → dist/components}/Autocomplete/Autocomplete.js +0 -0
  146. /package/{components → dist/components}/Autocomplete/Autocomplete.js.map +0 -0
  147. /package/{components → dist/components}/Autocomplete/index.d.ts +0 -0
  148. /package/{components → dist/components}/Autocomplete.d.ts +0 -0
  149. /package/{components → dist/components}/Avatar/Avatar.cjs +0 -0
  150. /package/{components → dist/components}/Avatar/Avatar.cjs.map +0 -0
  151. /package/{components → dist/components}/Avatar/Avatar.d.ts +0 -0
  152. /package/{components → dist/components}/Avatar/Avatar.js +0 -0
  153. /package/{components → dist/components}/Avatar/Avatar.js.map +0 -0
  154. /package/{components → dist/components}/Avatar/index.d.ts +0 -0
  155. /package/{components → dist/components}/Avatar.d.ts +0 -0
  156. /package/{components → dist/components}/Button/Button.cjs +0 -0
  157. /package/{components → dist/components}/Button/Button.cjs.map +0 -0
  158. /package/{components → dist/components}/Button/Button.d.ts +0 -0
  159. /package/{components → dist/components}/Button/Button.definition.d.ts +0 -0
  160. /package/{components → dist/components}/Button/Button.js +0 -0
  161. /package/{components → dist/components}/Button/Button.js.map +0 -0
  162. /package/{components → dist/components}/Button/index.d.ts +0 -0
  163. /package/{components → dist/components}/Button.d.ts +0 -0
  164. /package/{components → dist/components}/Card/Card.cjs +0 -0
  165. /package/{components → dist/components}/Card/Card.cjs.map +0 -0
  166. /package/{components → dist/components}/Card/Card.d.ts +0 -0
  167. /package/{components → dist/components}/Card/Card.definition.d.ts +0 -0
  168. /package/{components → dist/components}/Card/Card.js +0 -0
  169. /package/{components → dist/components}/Card/Card.js.map +0 -0
  170. /package/{components → dist/components}/Card/index.d.ts +0 -0
  171. /package/{components → dist/components}/Card.d.ts +0 -0
  172. /package/{components → dist/components}/Chip/Chip.cjs +0 -0
  173. /package/{components → dist/components}/Chip/Chip.cjs.map +0 -0
  174. /package/{components → dist/components}/Chip/Chip.d.ts +0 -0
  175. /package/{components → dist/components}/Chip/Chip.definitions.d.ts +0 -0
  176. /package/{components → dist/components}/Chip/Chip.js +0 -0
  177. /package/{components → dist/components}/Chip/Chip.js.map +0 -0
  178. /package/{components → dist/components}/Chip/index.d.ts +0 -0
  179. /package/{components → dist/components}/Chip.d.ts +0 -0
  180. /package/{components → dist/components}/Column/Column.cjs +0 -0
  181. /package/{components → dist/components}/Column/Column.cjs.map +0 -0
  182. /package/{components → dist/components}/Column/Column.d.ts +0 -0
  183. /package/{components → dist/components}/Column/Column.js +0 -0
  184. /package/{components → dist/components}/Column/Column.js.map +0 -0
  185. /package/{components → dist/components}/Column/index.d.ts +0 -0
  186. /package/{components → dist/components}/Column.d.ts +0 -0
  187. /package/{components → dist/components}/DatePicker/DatePicker.cjs +0 -0
  188. /package/{components → dist/components}/DatePicker/DatePicker.cjs.map +0 -0
  189. /package/{components → dist/components}/DatePicker/DatePicker.d.ts +0 -0
  190. /package/{components → dist/components}/DatePicker/DatePicker.definitions.d.ts +0 -0
  191. /package/{components → dist/components}/DatePicker/DatePicker.js +0 -0
  192. /package/{components → dist/components}/DatePicker/DatePicker.js.map +0 -0
  193. /package/{components → dist/components}/DatePicker/index.d.ts +0 -0
  194. /package/{components → dist/components}/DatePicker.d.ts +0 -0
  195. /package/{components → dist/components}/DateRangePicker/DateRangePicker.cjs +0 -0
  196. /package/{components → dist/components}/DateRangePicker/DateRangePicker.cjs.map +0 -0
  197. /package/{components → dist/components}/DateRangePicker/DateRangePicker.d.ts +0 -0
  198. /package/{components → dist/components}/DateRangePicker/DateRangePicker.definitions.d.ts +0 -0
  199. /package/{components → dist/components}/DateRangePicker/DateRangePicker.js +0 -0
  200. /package/{components → dist/components}/DateRangePicker/DateRangePicker.js.map +0 -0
  201. /package/{components → dist/components}/DateRangePicker/index.d.ts +0 -0
  202. /package/{components → dist/components}/DateRangePicker.d.ts +0 -0
  203. /package/{components → dist/components}/DateTimePicker/DateTimePicker.cjs +0 -0
  204. /package/{components → dist/components}/DateTimePicker/DateTimePicker.cjs.map +0 -0
  205. /package/{components → dist/components}/DateTimePicker/DateTimePicker.d.ts +0 -0
  206. /package/{components → dist/components}/DateTimePicker/DateTimePicker.definitions.d.ts +0 -0
  207. /package/{components → dist/components}/DateTimePicker/DateTimePicker.js +0 -0
  208. /package/{components → dist/components}/DateTimePicker/DateTimePicker.js.map +0 -0
  209. /package/{components → dist/components}/DateTimePicker/index.d.ts +0 -0
  210. /package/{components → dist/components}/DateTimePicker.d.ts +0 -0
  211. /package/{components → dist/components}/Flyout/Flyout.cjs +0 -0
  212. /package/{components → dist/components}/Flyout/Flyout.cjs.map +0 -0
  213. /package/{components → dist/components}/Flyout/Flyout.d.ts +0 -0
  214. /package/{components → dist/components}/Flyout/Flyout.js +0 -0
  215. /package/{components → dist/components}/Flyout/Flyout.js.map +0 -0
  216. /package/{components → dist/components}/Flyout/index.d.ts +0 -0
  217. /package/{components → dist/components}/Flyout.d.ts +0 -0
  218. /package/{components → dist/components}/Gallery/Gallery.cjs +0 -0
  219. /package/{components → dist/components}/Gallery/Gallery.cjs.map +0 -0
  220. /package/{components → dist/components}/Gallery/Gallery.d.ts +0 -0
  221. /package/{components → dist/components}/Gallery/Gallery.definition.d.ts +0 -0
  222. /package/{components → dist/components}/Gallery/Gallery.js +0 -0
  223. /package/{components → dist/components}/Gallery/Gallery.js.map +0 -0
  224. /package/{components → dist/components}/Gallery/GalleryLightbox.d.ts +0 -0
  225. /package/{components → dist/components}/Gallery/GalleryMain.d.ts +0 -0
  226. /package/{components → dist/components}/Gallery/GalleryThumbnails.d.ts +0 -0
  227. /package/{components → dist/components}/Gallery/index.d.ts +0 -0
  228. /package/{components → dist/components}/Gallery.d.ts +0 -0
  229. /package/{components → dist/components}/Icon/Icon.cjs +0 -0
  230. /package/{components → dist/components}/Icon/Icon.cjs.map +0 -0
  231. /package/{components → dist/components}/Icon/Icon.d.ts +0 -0
  232. /package/{components → dist/components}/Icon/Icon.js +0 -0
  233. /package/{components → dist/components}/Icon/Icon.js.map +0 -0
  234. /package/{components → dist/components}/Icon/index.d.ts +0 -0
  235. /package/{components → dist/components}/Icon.d.ts +0 -0
  236. /package/{components → dist/components}/Input/Input.cjs +0 -0
  237. /package/{components → dist/components}/Input/Input.cjs.map +0 -0
  238. /package/{components → dist/components}/Input/Input.d.ts +0 -0
  239. /package/{components → dist/components}/Input/Input.definitions.d.ts +0 -0
  240. /package/{components → dist/components}/Input/Input.js +0 -0
  241. /package/{components → dist/components}/Input/Input.js.map +0 -0
  242. /package/{components → dist/components}/Input/index.d.ts +0 -0
  243. /package/{components → dist/components}/Input.d.ts +0 -0
  244. /package/{components → dist/components}/InputGroup/InputGroup.cjs +0 -0
  245. /package/{components → dist/components}/InputGroup/InputGroup.cjs.map +0 -0
  246. /package/{components → dist/components}/InputGroup/InputGroup.d.ts +0 -0
  247. /package/{components → dist/components}/InputGroup/InputGroup.js +0 -0
  248. /package/{components → dist/components}/InputGroup/InputGroup.js.map +0 -0
  249. /package/{components → dist/components}/InputGroup/index.d.ts +0 -0
  250. /package/{components → dist/components}/InputGroup.d.ts +0 -0
  251. /package/{components → dist/components}/MenuButton/MenuButton.cjs +0 -0
  252. /package/{components → dist/components}/MenuButton/MenuButton.cjs.map +0 -0
  253. /package/{components → dist/components}/MenuButton/MenuButton.d.ts +0 -0
  254. /package/{components → dist/components}/MenuButton/MenuButton.js +0 -0
  255. /package/{components → dist/components}/MenuButton/MenuButton.js.map +0 -0
  256. /package/{components → dist/components}/MenuButton/index.d.ts +0 -0
  257. /package/{components → dist/components}/MenuButton.d.ts +0 -0
  258. /package/{components → dist/components}/Modal/Modal.cjs +0 -0
  259. /package/{components → dist/components}/Modal/Modal.cjs.map +0 -0
  260. /package/{components → dist/components}/Modal/Modal.d.ts +0 -0
  261. /package/{components → dist/components}/Modal/Modal.js +0 -0
  262. /package/{components → dist/components}/Modal/Modal.js.map +0 -0
  263. /package/{components → dist/components}/Modal/ModalBody.d.ts +0 -0
  264. /package/{components → dist/components}/Modal/ModalFooter.d.ts +0 -0
  265. /package/{components → dist/components}/Modal/ModalHeader.d.ts +0 -0
  266. /package/{components → dist/components}/Modal/index.d.ts +0 -0
  267. /package/{components → dist/components}/Modal.d.ts +0 -0
  268. /package/{components → dist/components}/Select/Select.cjs +0 -0
  269. /package/{components → dist/components}/Select/Select.cjs.map +0 -0
  270. /package/{components → dist/components}/Select/Select.d.ts +0 -0
  271. /package/{components → dist/components}/Select/Select.definitions.d.ts +0 -0
  272. /package/{components → dist/components}/Select/Select.js +0 -0
  273. /package/{components → dist/components}/Select/Select.js.map +0 -0
  274. /package/{components → dist/components}/Select/index.d.ts +0 -0
  275. /package/{components → dist/components}/Select.d.ts +0 -0
  276. /package/{components → dist/components}/Stat/Stat.cjs +0 -0
  277. /package/{components → dist/components}/Stat/Stat.cjs.map +0 -0
  278. /package/{components → dist/components}/Stat/Stat.d.ts +0 -0
  279. /package/{components → dist/components}/Stat/Stat.js +0 -0
  280. /package/{components → dist/components}/Stat/Stat.js.map +0 -0
  281. /package/{components → dist/components}/Stat/index.d.ts +0 -0
  282. /package/{components → dist/components}/Stat.d.ts +0 -0
  283. /package/{components → dist/components}/StatusMessage/StatusMessage.cjs +0 -0
  284. /package/{components → dist/components}/StatusMessage/StatusMessage.cjs.map +0 -0
  285. /package/{components → dist/components}/StatusMessage/StatusMessage.d.ts +0 -0
  286. /package/{components → dist/components}/StatusMessage/StatusMessage.js +0 -0
  287. /package/{components → dist/components}/StatusMessage/StatusMessage.js.map +0 -0
  288. /package/{components → dist/components}/StatusMessage/index.d.ts +0 -0
  289. /package/{components → dist/components}/StatusMessage.d.ts +0 -0
  290. /package/{components → dist/components}/Stepper/Step.d.ts +0 -0
  291. /package/{components → dist/components}/Stepper/Stepper.cjs +0 -0
  292. /package/{components → dist/components}/Stepper/Stepper.cjs.map +0 -0
  293. /package/{components → dist/components}/Stepper/Stepper.d.ts +0 -0
  294. /package/{components → dist/components}/Stepper/Stepper.definition.d.ts +0 -0
  295. /package/{components → dist/components}/Stepper/Stepper.js +0 -0
  296. /package/{components → dist/components}/Stepper/Stepper.js.map +0 -0
  297. /package/{components → dist/components}/Stepper/index.d.ts +0 -0
  298. /package/{components → dist/components}/Stepper.d.ts +0 -0
  299. /package/{components → dist/components}/Table/Table.cjs +0 -0
  300. /package/{components → dist/components}/Table/Table.cjs.map +0 -0
  301. /package/{components → dist/components}/Table/Table.d.ts +0 -0
  302. /package/{components → dist/components}/Table/Table.definition.d.ts +0 -0
  303. /package/{components → dist/components}/Table/Table.js +0 -0
  304. /package/{components → dist/components}/Table/Table.js.map +0 -0
  305. /package/{components → dist/components}/Table/data.d.ts +0 -0
  306. /package/{components → dist/components}/Table/exportsUtils.d.ts +0 -0
  307. /package/{components → dist/components}/Table/index.d.ts +0 -0
  308. /package/{components → dist/components}/Table/types.d.ts +0 -0
  309. /package/{components → dist/components}/Table.d.ts +0 -0
  310. /package/{components → dist/components}/Tabs/Tab.d.ts +0 -0
  311. /package/{components → dist/components}/Tabs/Tab.definition.d.ts +0 -0
  312. /package/{components → dist/components}/Tabs/Tabs.cjs +0 -0
  313. /package/{components → dist/components}/Tabs/Tabs.cjs.map +0 -0
  314. /package/{components → dist/components}/Tabs/Tabs.d.ts +0 -0
  315. /package/{components → dist/components}/Tabs/Tabs.js +0 -0
  316. /package/{components → dist/components}/Tabs/Tabs.js.map +0 -0
  317. /package/{components → dist/components}/Tabs/_tabUtils.d.ts +0 -0
  318. /package/{components → dist/components}/Tabs/index.d.ts +0 -0
  319. /package/{components → dist/components}/Tabs.d.ts +0 -0
  320. /package/{components → dist/components}/Timeline/Timeline.cjs +0 -0
  321. /package/{components → dist/components}/Timeline/Timeline.cjs.map +0 -0
  322. /package/{components → dist/components}/Timeline/Timeline.d.ts +0 -0
  323. /package/{components → dist/components}/Timeline/Timeline.definition.d.ts +0 -0
  324. /package/{components → dist/components}/Timeline/Timeline.js +0 -0
  325. /package/{components → dist/components}/Timeline/Timeline.js.map +0 -0
  326. /package/{components → dist/components}/Timeline/TimelineItem.d.ts +0 -0
  327. /package/{components → dist/components}/Timeline/index.d.ts +0 -0
  328. /package/{components → dist/components}/Timeline.d.ts +0 -0
  329. /package/{components → dist/components}/Tooltip/Tooltip.cjs +0 -0
  330. /package/{components → dist/components}/Tooltip/Tooltip.cjs.map +0 -0
  331. /package/{components → dist/components}/Tooltip/Tooltip.d.ts +0 -0
  332. /package/{components → dist/components}/Tooltip/Tooltip.js +0 -0
  333. /package/{components → dist/components}/Tooltip/Tooltip.js.map +0 -0
  334. /package/{components → dist/components}/Tooltip/index.d.ts +0 -0
  335. /package/{components → dist/components}/Tooltip.d.ts +0 -0
  336. /package/{hooks → dist/hooks}/ClipBoard/ClipBoard.cjs +0 -0
  337. /package/{hooks → dist/hooks}/ClipBoard/ClipBoard.cjs.map +0 -0
  338. /package/{hooks → dist/hooks}/ClipBoard/ClipBoard.d.ts +0 -0
  339. /package/{hooks → dist/hooks}/ClipBoard/ClipBoard.js +0 -0
  340. /package/{hooks → dist/hooks}/ClipBoard/ClipBoard.js.map +0 -0
  341. /package/{hooks → dist/hooks}/ClipBoard/ClipboardUnifiedDemo.d.ts +0 -0
  342. /package/{hooks → dist/hooks}/ClipBoard/index.d.ts +0 -0
  343. /package/{hooks → dist/hooks}/ClipBoard.d.ts +0 -0
  344. /package/{index.cjs → dist/index.cjs} +0 -0
  345. /package/{index.cjs.map → dist/index.cjs.map} +0 -0
  346. /package/{index.css → dist/index.css} +0 -0
  347. /package/{index.d.ts → dist/index.d.ts} +0 -0
  348. /package/{index.js → dist/index.js} +0 -0
  349. /package/{index.js.map → dist/index.js.map} +0 -0
@@ -0,0 +1,205 @@
1
+ // DatePicker.definitions.ts
2
+
3
+ export const BasicDatePickerDefinition = `
4
+ import React, { useState } from 'react';
5
+ import { DatePicker } from '@soyfri/shared-library/DatePicker';
6
+ import dayjs from 'dayjs';
7
+ import { Box, Typography } from '@mui/material';
8
+
9
+ export const BasicDatePickerExample = () => {
10
+ const [selectedDate, setSelectedDate] = useState(dayjs());
11
+ return (
12
+ <Box sx={{ width: 300 }}>
13
+ <DatePicker
14
+ label="Seleccionar Fecha"
15
+ selectedDate={selectedDate}
16
+ onDateChange={setSelectedDate}
17
+ />
18
+ <Typography sx={{ mt: 2 }}>
19
+ Fecha seleccionada: {selectedDate ? selectedDate.format('YYYY-MM-DD') : 'Ninguna'}
20
+ </Typography>
21
+ </Box>
22
+ );
23
+ };
24
+ `;
25
+
26
+ export const DatePickerWithMinMaxDefinition = `
27
+ import React, { useState } from 'react';
28
+ import { DatePicker } from '@soyfri/shared-library/DatePicker';
29
+ import dayjs from 'dayjs';
30
+ import { Box, Typography } from '@mui/material';
31
+
32
+ export const DatePickerWithMinMaxExample = () => {
33
+ const [selectedDate, setSelectedDate] = useState(dayjs('2023-06-15'));
34
+ const minDate = dayjs('2023-06-01');
35
+ const maxDate = dayjs('2023-06-30');
36
+ return (
37
+ <Box sx={{ width: 300 }}>
38
+ <DatePicker
39
+ label="Fecha en Junio"
40
+ selectedDate={selectedDate}
41
+ onDateChange={setSelectedDate}
42
+ minDate={minDate}
43
+ maxDate={maxDate}
44
+ />
45
+ <Typography sx={{ mt: 2 }}>
46
+ Fecha seleccionada: {selectedDate ? selectedDate.format('YYYY-MM-DD') : 'Ninguna'}
47
+ </Typography>
48
+ <Typography variant="caption" color="text.secondary">
49
+ (Rango: \${minDate.format('YYYY-MM-DD')} a \${maxDate.format('YYYY-MM-DD')})
50
+ </Typography>
51
+ </Box>
52
+ );
53
+ };
54
+ `;
55
+
56
+ export const DateRangePickerDefinition = `
57
+ import React, { useState } from 'react';
58
+ import { DatePicker } from '@soyfri/shared-library/DatePicker';
59
+ import dayjs from 'dayjs';
60
+ import { Box, Typography } from '@mui/material';
61
+
62
+ export const DateRangePickerExample = () => {
63
+ const [startDate, setStartDate] = useState(dayjs('2023-01-01'));
64
+ const [endDate, setEndDate] = useState(dayjs('2023-01-31'));
65
+
66
+ const handleStartDateChange = (date) => {
67
+ setStartDate(date);
68
+ if (date && endDate && date.isAfter(endDate)) {
69
+ setEndDate(date);
70
+ }
71
+ };
72
+
73
+ const handleEndDateChange = (date) => {
74
+ setEndDate(date);
75
+ if (date && startDate && date.isBefore(startDate)) {
76
+ setStartDate(date);
77
+ }
78
+ };
79
+
80
+ return (
81
+ <Box sx={{ display: 'flex', gap: 3, flexDirection: 'column' }}>
82
+ <DatePicker
83
+ label="Fecha de Inicio"
84
+ selectedDate={startDate}
85
+ onDateChange={handleStartDateChange}
86
+ maxDate={endDate || undefined}
87
+ />
88
+ <DatePicker
89
+ label="Fecha de Fin"
90
+ selectedDate={endDate}
91
+ onDateChange={handleEndDateChange}
92
+ minDate={startDate || undefined}
93
+ />
94
+ <Typography>
95
+ Inicio: {startDate ? startDate.format('YYYY-MM-DD') : 'N/A'} |
96
+ Fin: {endDate ? endDate.format('YYYY-MM-DD') : 'N/A'}
97
+ </Typography>
98
+ </Box>
99
+ );
100
+ };
101
+ `;
102
+
103
+ export const DatePickerWithErrorDefinition = `
104
+ import React, { useState } from 'react';
105
+ import { DatePicker } from '@soyfri/shared-library/DatePicker';
106
+ import dayjs from 'dayjs';
107
+ import { Box, Typography } from '@mui/material';
108
+
109
+ export const DatePickerWithErrorExample = () => {
110
+ const [selectedDate, setSelectedDate] = useState(dayjs('2023-01-01'));
111
+ // Intentamos establecer una fecha fuera de un rango muy restringido para forzar un error
112
+ const minDate = dayjs('2023-01-05');
113
+ const maxDate = dayjs('2023-01-10');
114
+
115
+ return (
116
+ <Box sx={{ width: 300 }}>
117
+ <DatePicker
118
+ label="Fecha (con error de rango)"
119
+ selectedDate={selectedDate}
120
+ onDateChange={setSelectedDate}
121
+ minDate={minDate}
122
+ maxDate={maxDate}
123
+ />
124
+ <Typography sx={{ mt: 2 }}>
125
+ Fecha seleccionada: {selectedDate ? selectedDate.format('YYYY-MM-DD') : 'Ninguna'}
126
+ </Typography>
127
+ <Typography variant="caption" color="error">
128
+ (Intenta seleccionar una fecha fuera de \${minDate.format('YYYY-MM-DD')} - \${maxDate.format('YYYY-MM-DD')})
129
+ </Typography>
130
+ </Box>
131
+ );
132
+ };
133
+ `;
134
+
135
+ export const DatePickerSmallSizeDefinition = `
136
+ import React, { useState } from 'react';
137
+ import { DatePicker } from '@soyfri/shared-library/DatePicker';
138
+ import dayjs from 'dayjs';
139
+ import { Box, Typography } from '@mui/material';
140
+
141
+ export const DatePickerSmallSizeExample = () => {
142
+ const [selectedDate, setSelectedDate] = useState(dayjs());
143
+ return (
144
+ <Box sx={{ width: 250 }}>
145
+ <DatePicker
146
+ label="Fecha (Pequeño)"
147
+ selectedDate={selectedDate}
148
+ onDateChange={setSelectedDate}
149
+ slotProps={{ textField: { size: 'small' } }} // Prop para hacer el TextField pequeño
150
+ />
151
+ <Typography sx={{ mt: 2 }}>
152
+ Fecha seleccionada: {selectedDate ? selectedDate.format('YYYY-MM-DD') : 'Ninguna'}
153
+ </Typography>
154
+ </Box>
155
+ );
156
+ };
157
+ `;
158
+
159
+ export const DatePickerDisabledDefinition = `
160
+ import React, { useState } from 'react';
161
+ import { DatePicker } from '@soyfri/shared-library/DatePicker';
162
+ import dayjs from 'dayjs';
163
+ import { Box, Typography } from '@mui/material';
164
+
165
+ export const DatePickerDisabledExample = () => {
166
+ const [selectedDate, setSelectedDate] = useState(dayjs());
167
+ return (
168
+ <Box sx={{ width: 300 }}>
169
+ <DatePicker
170
+ label="Fecha (Deshabilitado)"
171
+ selectedDate={selectedDate}
172
+ onDateChange={setSelectedDate}
173
+ disabled
174
+ />
175
+ <Typography sx={{ mt: 2 }}>
176
+ Fecha seleccionada: {selectedDate ? selectedDate.format('YYYY-MM-DD') : 'Ninguna'}
177
+ </Typography>
178
+ </Box>
179
+ );
180
+ };
181
+ `;
182
+
183
+ export const DatePickerReadOnlyDefinition = `
184
+ import React, { useState } from 'react';
185
+ import { DatePicker } from '@soyfri/shared-library/DatePicker';
186
+ import dayjs from 'dayjs';
187
+ import { Box, Typography } from '@mui/material';
188
+
189
+ export const DatePickerReadOnlyDefinition = () => {
190
+ const [selectedDate, setSelectedDate] = useState<Dayjs | null>(dayjs('2024-07-24'));
191
+ return (
192
+ <Box sx={{ width: 300 }}>
193
+ <DatePicker
194
+ label="Fecha (Solo Lectura)"
195
+ selectedDate={selectedDate}
196
+ onDateChange={() => {}} // No permite cambios
197
+ readOnly
198
+ />
199
+ <Typography sx={{ mt: 2 }}>
200
+ Fecha seleccionada: {selectedDate ? selectedDate.format('YYYY-MM-DD') : 'Ninguna'}
201
+ </Typography>
202
+ </Box>
203
+ );
204
+ };
205
+ `;
@@ -0,0 +1,282 @@
1
+
2
+ import type { Meta, StoryObj } from '@storybook/react';
3
+ import React, { useState, useMemo } from 'react';
4
+ import {
5
+ Box,
6
+ Typography,
7
+ TextField,
8
+ } from '@mui/material';
9
+
10
+ // Importar las definiciones de las historias
11
+ import {
12
+ BasicDatePickerDefinition,
13
+ DatePickerWithMinMaxDefinition,
14
+ DateRangePickerDefinition,
15
+ DatePickerWithErrorDefinition,
16
+ DatePickerSmallSizeDefinition,
17
+ DatePickerDisabledDefinition,
18
+ DatePickerReadOnlyDefinition,
19
+
20
+ } from './DatePicker.definitions'; // Mantener el nombre del archivo de definiciones como está
21
+ import DatePicker from './DatePicker';
22
+ import dayjs, { Dayjs } from 'dayjs';
23
+
24
+ // =============================================================================
25
+ // Definición de las meta-propiedades para Storybook
26
+ // =============================================================================
27
+ const meta: Meta<typeof DatePicker> = { // Renombrado a DatePicker
28
+ title: 'Components/DatePicker', // Renombrado en el título del Storybook
29
+ component: DatePicker, // Renombrado a DatePicker
30
+ tags: ['autodocs'],
31
+ parameters: {
32
+ layout: 'centered',
33
+ docs: {
34
+ description: {
35
+ component: 'Un componente `DatePicker` personalizado de Material UI que gestiona el estado de fecha, rangos y validación de errores.',
36
+ },
37
+ },
38
+ },
39
+ argTypes: {
40
+ label: { control: 'text', description: 'Etiqueta para el selector de fecha.' },
41
+ selectedDate: { control: 'object', description: 'La fecha actualmente seleccionada.', type: { name: 'object', required: false, value: {} } },
42
+ onDateChange: { action: 'dateChanged', description: 'Callback que se dispara cuando la fecha cambia.' },
43
+ minDate: { control: 'object', description: 'La fecha mínima permitida.', type: { name: 'object', required: false, value: {} } },
44
+ maxDate: { control: 'object', description: 'La fecha máxima permitida.', type: { name: 'object', required: false, value: {} } },
45
+ disabled: { control: 'boolean', description: 'Si es verdadero, el selector de fecha estará deshabilitado.' },
46
+ readOnly: { control: 'boolean', description: 'Si es verdadero, el selector de fecha estará en modo de solo lectura.' },
47
+ slotProps: { control: 'object', description: 'Props pasadas a los slots internos del DatePicker, como `textField`.' },
48
+ },
49
+ };
50
+
51
+ export default meta;
52
+ type Story = StoryObj<typeof DatePicker>; // Renombrado a DatePicker
53
+
54
+ // =============================================================================
55
+ // Historias
56
+ // =============================================================================
57
+
58
+ export const BasicDatePicker: Story = {
59
+ render: () => {
60
+ const [selectedDate, setSelectedDate] = useState<Dayjs | null>(dayjs());
61
+ return (
62
+ <Box sx={{ width: 300 }}>
63
+ <DatePicker // Renombrado
64
+ label="Seleccionar Fecha"
65
+ selectedDate={selectedDate}
66
+ onDateChange={setSelectedDate}
67
+ />
68
+ <Typography sx={{ mt: 2 }}>
69
+ Fecha seleccionada: {selectedDate ? selectedDate.format('YYYY-MM-DD') : 'Ninguna'}
70
+ </Typography>
71
+ </Box>
72
+ );
73
+ },
74
+ parameters: {
75
+ docs: {
76
+ description: {
77
+ story: "Un `DatePicker` básico con selección de una única fecha."
78
+ },
79
+ source: { code: BasicDatePickerDefinition.trim() }
80
+ }
81
+ }
82
+ };
83
+
84
+ export const DatePickerWithMinMax: Story = {
85
+ render: () => {
86
+ const [selectedDate, setSelectedDate] = useState<Dayjs | null>(dayjs('2023-06-15'));
87
+ const minDate = dayjs('2023-06-01');
88
+ const maxDate = dayjs('2023-06-30');
89
+ return (
90
+ <Box sx={{ width: 300 }}>
91
+ <DatePicker // Renombrado
92
+ label="Fecha en Junio (Rango)"
93
+ selectedDate={selectedDate}
94
+ onDateChange={setSelectedDate}
95
+ minDate={minDate}
96
+ maxDate={maxDate}
97
+ />
98
+ <Typography sx={{ mt: 2 }}>
99
+ Fecha seleccionada: {selectedDate ? selectedDate.format('YYYY-MM-DD') : 'Ninguna'}
100
+ </Typography>
101
+ <Typography variant="caption" color="text.secondary">
102
+ (Rango: ${minDate.format('YYYY-MM-DD')} a ${maxDate.format('YYYY-MM-DD')})
103
+ </Typography>
104
+ </Box>
105
+ );
106
+ },
107
+ parameters: {
108
+ docs: {
109
+ description: {
110
+ story: "Muestra un `DatePicker` con fechas mínimas y máximas permitidas."
111
+ },
112
+ source: { code: DatePickerWithMinMaxDefinition.trim() }
113
+ }
114
+ }
115
+ };
116
+
117
+ export const DateRangePicker: Story = {
118
+ render: () => {
119
+ const [startDate, setStartDate] = useState<Dayjs | null>(dayjs('2023-01-01'));
120
+ const [endDate, setEndDate] = useState<Dayjs | null>(dayjs('2023-01-31'));
121
+
122
+ const handleStartDateChange = (date: Dayjs | null) => {
123
+ setStartDate(date);
124
+ if (date && endDate && date.isAfter(endDate)) {
125
+ setEndDate(date);
126
+ }
127
+ };
128
+
129
+ const handleEndDateChange = (date: Dayjs | null) => {
130
+ setEndDate(date);
131
+ if (date && startDate && date.isBefore(startDate)) {
132
+ setStartDate(date);
133
+ }
134
+ };
135
+
136
+ return (
137
+ <Box sx={{ display: 'flex', gap: 3, flexDirection: 'column', width: 300 }}>
138
+ <DatePicker // Renombrado
139
+ label="Fecha de Inicio"
140
+ selectedDate={startDate}
141
+ onDateChange={handleStartDateChange}
142
+ maxDate={endDate || undefined}
143
+ />
144
+ <DatePicker // Renombrado
145
+ label="Fecha de Fin"
146
+ selectedDate={endDate}
147
+ onDateChange={handleEndDateChange}
148
+ minDate={startDate || undefined}
149
+ />
150
+ <Typography>
151
+ Inicio: {startDate ? startDate.format('YYYY-MM-DD') : 'N/A'} |
152
+ Fin: {endDate ? endDate.format('YYYY-MM-DD') : 'N/A'}
153
+ </Typography>
154
+ </Box>
155
+ );
156
+ },
157
+ parameters: {
158
+ docs: {
159
+ description: {
160
+ story: "Dos `DatePicker`s que funcionan como un selector de rango de fechas, donde la fecha de inicio y fin se restringen mutuamente."
161
+ },
162
+ source: { code: DateRangePickerDefinition.trim() }
163
+ }
164
+ }
165
+ };
166
+
167
+ export const DatePickerWithError: Story = {
168
+ render: () => {
169
+ const [selectedDate, setSelectedDate] = useState<Dayjs | null>(dayjs('2023-01-01'));
170
+ const minDate = dayjs('2023-01-05');
171
+ const maxDate = dayjs('2023-01-10');
172
+
173
+ return (
174
+ <Box sx={{ width: 300 }}>
175
+ <DatePicker // Renombrado
176
+ label="Fecha (con error de rango)"
177
+ selectedDate={selectedDate}
178
+ onDateChange={setSelectedDate}
179
+ minDate={minDate}
180
+ maxDate={maxDate}
181
+ />
182
+ <Typography sx={{ mt: 2 }}>
183
+ Fecha seleccionada: {selectedDate ? selectedDate.format('YYYY-MM-DD') : 'Ninguna'}
184
+ </Typography>
185
+ <Typography variant="caption" color="error">
186
+ (Intenta seleccionar una fecha fuera de ${minDate.format('YYYY-MM-DD')} - ${maxDate.format('YYYY-MM-DD')})
187
+ </Typography>
188
+ </Box>
189
+ );
190
+ },
191
+ parameters: {
192
+ docs: {
193
+ description: {
194
+ story: "Demuestra cómo el `DatePicker` maneja los errores de validación, por ejemplo, al seleccionar una fecha fuera del rango permitido."
195
+ },
196
+ source: { code: DatePickerWithErrorDefinition.trim() }
197
+ }
198
+ }
199
+ };
200
+
201
+ export const DatePickerSmallSize: Story = {
202
+ render: () => {
203
+ const [selectedDate, setSelectedDate] = useState<Dayjs | null>(dayjs());
204
+ return (
205
+ <Box sx={{ width: 250 }}>
206
+ <DatePicker // Renombrado
207
+ label="Fecha (Pequeño)"
208
+ selectedDate={selectedDate}
209
+ onDateChange={setSelectedDate}
210
+ slotProps={{ textField: { size: 'small' } }}
211
+ />
212
+ <Typography sx={{ mt: 2 }}>
213
+ Fecha seleccionada: {selectedDate ? selectedDate.format('YYYY-MM-DD') : 'Ninguna'}
214
+ </Typography>
215
+ </Box>
216
+ );
217
+ },
218
+ parameters: {
219
+ docs: {
220
+ description: {
221
+ story: "Muestra el `DatePicker` en un tamaño más pequeño utilizando `slotProps.textField.size`."
222
+ },
223
+ source: { code: DatePickerSmallSizeDefinition.trim() }
224
+ }
225
+ }
226
+ };
227
+
228
+ export const DatePickerDisabled: Story = {
229
+ render: () => {
230
+ const [selectedDate, setSelectedDate] = useState<Dayjs | null>(dayjs());
231
+ return (
232
+ <Box sx={{ width: 300 }}>
233
+ <DatePicker // Renombrado
234
+ label="Fecha (Deshabilitado)"
235
+ selectedDate={selectedDate}
236
+ onDateChange={setSelectedDate}
237
+ disabled
238
+ />
239
+ <Typography sx={{ mt: 2 }}>
240
+ Fecha seleccionada: {selectedDate ? selectedDate.format('YYYY-MM-DD') : 'Ninguna'}
241
+ </Typography>
242
+ </Box>
243
+ );
244
+ },
245
+ parameters: {
246
+ docs: {
247
+ description: {
248
+ story: "Demuestra un `DatePicker` en estado deshabilitado, donde no se puede interactuar con él."
249
+ },
250
+ source: { code: DatePickerDisabledDefinition.trim() }
251
+ }
252
+ }
253
+ };
254
+
255
+ export const DatePickerReadOnly: Story = {
256
+ render: () => {
257
+ const [selectedDate, setSelectedDate] = useState<Dayjs | null>(dayjs('2024-07-24'));
258
+ return (
259
+ <Box sx={{ width: 300 }}>
260
+ <DatePicker // Renombrado
261
+ label="Fecha (Solo Lectura)"
262
+ selectedDate={selectedDate}
263
+ onDateChange={() => {}} // No permite cambios
264
+ readOnly
265
+ />
266
+ <Typography sx={{ mt: 2 }}>
267
+ Fecha seleccionada: {selectedDate ? selectedDate.format('YYYY-MM-DD') : 'Ninguna'}
268
+ </Typography>
269
+ </Box>
270
+ );
271
+ },
272
+ parameters: {
273
+ docs: {
274
+ description: {
275
+ story: "Muestra el `DatePicker` en modo de solo lectura. El usuario puede ver la fecha pero no modificarla."
276
+ },
277
+ source: {
278
+ code: DatePickerReadOnlyDefinition.trim() // Usar la definición importada
279
+ }
280
+ }
281
+ }
282
+ };
@@ -0,0 +1,165 @@
1
+ import React, { useMemo } from 'react';
2
+ import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';
3
+ import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';
4
+ import { DatePicker as MuiDatePicker } from '@mui/x-date-pickers/DatePicker';
5
+ import { DateValidationError } from '@mui/x-date-pickers/models';
6
+ import { Dayjs } from 'dayjs';
7
+ import { styled } from '@mui/system';
8
+ import { Box, TextField } from '@mui/material';
9
+ import 'dayjs/locale/en-gb';
10
+
11
+ // Define las props para el CustomDatePicker
12
+ interface DatePickerProps {
13
+ label: string;
14
+ selectedDate: Dayjs | null;
15
+ onDateChange: (date: Dayjs | null) => void;
16
+ minDate?: Dayjs;
17
+ maxDate?: Dayjs;
18
+ disabled?: boolean;
19
+ readOnly?: boolean;
20
+ slotProps?: any;
21
+ }
22
+
23
+ // 1. Reutilizar el componente estilizado del Input
24
+ // El DatePicker renderiza un TextField por dentro, así que podemos usar el mismo componente estilizado.
25
+ const StyledTextField = styled(TextField)(({ theme }) => ({
26
+ '& .MuiInputBase-root': {
27
+ maxHeight: '34px',
28
+ padding: '8px 10px',
29
+ borderRadius: '10px',
30
+ display: 'flex',
31
+ alignItems: 'center',
32
+ fontSize: '14px',
33
+ },
34
+ '& .MuiInputBase-input': {
35
+ padding: '0 !important',
36
+ height: '18px',
37
+ display: 'flex',
38
+ alignItems: 'center',
39
+ marginTop: '-4px'
40
+ },
41
+ '& .MuiInputLabel-root': {
42
+ top: '50%',
43
+ transform: 'translate(14px, -50%)',
44
+ '&.MuiInputLabel-shrink': {
45
+ transform: 'translate(1px, -200%) scale(0.75)',
46
+ fontSize: '16px !important',
47
+ '> legend': {
48
+ display: 'none',
49
+ }
50
+ },
51
+ },
52
+ '& .MuiOutlinedInput-notchedOutline': {
53
+ border: '0.7px solid',
54
+ borderColor: '#e0e0e0',
55
+ },
56
+ }));
57
+
58
+ /**
59
+ * Componente de DatePicker personalizado de Material UI.
60
+ * Permite seleccionar una fecha y actualiza un estado Dayjs.
61
+ */
62
+ export const DatePicker: React.FC<DatePickerProps> = ({
63
+ label,
64
+ selectedDate,
65
+ onDateChange,
66
+ minDate,
67
+ maxDate,
68
+ disabled,
69
+ readOnly,
70
+ slotProps,
71
+ ...rest
72
+ }) => {
73
+ const [error, setError] = React.useState<DateValidationError | null>(null);
74
+
75
+ const errorMessage = useMemo(() => {
76
+ switch (error) {
77
+ case 'minDate':
78
+ case 'maxDate': {
79
+ return 'Fecha fuera del rango permitido';
80
+ }
81
+ case 'invalidDate': {
82
+ return 'Formato de fecha inválido';
83
+ }
84
+ case 'disableFuture': {
85
+ return 'No se permiten fechas futuras';
86
+ }
87
+ case 'disablePast': {
88
+ return 'No se permiten fechas pasadas';
89
+ }
90
+ default: {
91
+ return '';
92
+ }
93
+ }
94
+ }, [error]);
95
+
96
+ return (
97
+ <LocalizationProvider dateAdapter={AdapterDayjs} adapterLocale="en-gb">
98
+ <Box
99
+ sx={{
100
+ width: '100%',
101
+ display: 'grid',
102
+ marginBottom: '10px',
103
+ marginTop: '10px'
104
+ }}
105
+
106
+ >
107
+ <MuiDatePicker
108
+ label={label}
109
+ value={selectedDate}
110
+ onChange={onDateChange}
111
+ minDate={minDate}
112
+ maxDate={maxDate}
113
+ onError={(newError) => setError(newError)}
114
+ disabled={disabled}
115
+ readOnly={readOnly}
116
+ className='date-picker-custom'
117
+ sx={{
118
+
119
+
120
+ '& .MuiPickersInputBase-root, .MuiPickersOutlinedInput-root': {
121
+ maxHeight: '28px',
122
+ borderRadius: '10px'
123
+ },
124
+
125
+ // 3. Sobreescribir el label para que esté centrado verticalmente
126
+ '& .MuiInputLabel-root': {
127
+ // El label se alinea con el padding del input base.
128
+ top: '50%',
129
+ transform: 'translate(14px, -50%)',
130
+
131
+ // Estilo para el label "encogido" cuando el input está lleno o en foco
132
+ '&.MuiInputLabel-shrink': {
133
+ transform: 'translate(1px, -200%) scale(0.75)', // Ajustar la posición para que se vea por encima del input
134
+ fontSize: '16px !important',
135
+ '> legend': {
136
+ display: 'none', // Ocultar el legend del outline
137
+ }
138
+ },
139
+ },
140
+ '& .MuiPickersInputBase-root > fieldset > legend':{
141
+ display: 'none', // Ocultar el legend del outline
142
+ },
143
+
144
+ }}
145
+ // 2. Usar 'slotProps' para pasar el componente estilizado al TextField
146
+ slotProps={{
147
+ ...slotProps,
148
+ textField: {
149
+ ...slotProps?.textField,
150
+ helperText: errorMessage || slotProps?.textField?.helperText,
151
+ error: !!errorMessage || slotProps?.textField?.error,
152
+ InputProps: {
153
+ ...slotProps?.textField?.InputProps,
154
+ inputComponent: StyledTextField,
155
+ },
156
+ },
157
+ }}
158
+ {...rest}
159
+ />
160
+ </Box>
161
+ </LocalizationProvider>
162
+ );
163
+ };
164
+
165
+ export default DatePicker;
@@ -0,0 +1 @@
1
+ export { default as DatePicker } from './DatePicker'