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

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 (512) hide show
  1. package/{dist/components → components}/Drawer/Drawer.cjs +14 -17
  2. package/components/Drawer/Drawer.cjs.map +1 -0
  3. package/{dist/components → components}/Drawer/Drawer.d.ts +8 -1
  4. package/{dist/components → components}/Drawer/Drawer.js +14 -17
  5. package/components/Drawer/Drawer.js.map +1 -0
  6. package/{dist/components → components}/Input/Input.definitions.d.ts +1 -0
  7. package/components/RadioGroup/RadioGroup.cjs +202 -0
  8. package/components/RadioGroup/RadioGroup.cjs.map +1 -0
  9. package/components/RadioGroup/RadioGroup.d.ts +53 -0
  10. package/components/RadioGroup/RadioGroup.definitions.d.ts +6 -0
  11. package/components/RadioGroup/RadioGroup.js +202 -0
  12. package/components/RadioGroup/RadioGroup.js.map +1 -0
  13. package/components/RadioGroup/RadioGroup.sx.d.ts +20 -0
  14. package/components/RadioGroup/RadioGroup.types.d.ts +1 -0
  15. package/components/RadioGroup/index.d.ts +2 -0
  16. package/components/RadioGroup.d.ts +6 -0
  17. package/components/Stepper/Stepper.cjs +162 -0
  18. package/components/Stepper/Stepper.cjs.map +1 -0
  19. package/components/Stepper/Stepper.js +162 -0
  20. package/components/Stepper/Stepper.js.map +1 -0
  21. package/components/Switch/Switch.cjs +181 -0
  22. package/components/Switch/Switch.cjs.map +1 -0
  23. package/components/Switch/Switch.d.ts +43 -0
  24. package/components/Switch/Switch.definitions.d.ts +7 -0
  25. package/components/Switch/Switch.js +181 -0
  26. package/components/Switch/Switch.js.map +1 -0
  27. package/components/Switch/Switch.sx.d.ts +22 -0
  28. package/components/Switch/Switch.types.d.ts +1 -0
  29. package/components/Switch/index.d.ts +2 -0
  30. package/components/Switch.d.ts +6 -0
  31. package/{dist/index.cjs → index.cjs} +24 -0
  32. package/{dist/index.cjs.map → index.cjs.map} +1 -1
  33. package/{dist/index.js → index.js} +7 -1
  34. package/{dist/mui.d.ts → mui.d.ts} +1 -0
  35. package/package.json +174 -43
  36. package/{dist/theme → theme}/componentStyles.d.ts +1 -1
  37. package/.dockerignore +0 -8
  38. package/.github/workflows/publish.yml +0 -107
  39. package/.prettierrc +0 -3
  40. package/.storybook/main.ts +0 -19
  41. package/.storybook/preview.ts +0 -14
  42. package/.storybook/vitest.setup.ts +0 -9
  43. package/Dockerfile +0 -37
  44. package/build.js +0 -139
  45. package/chromatic.config.json +0 -5
  46. package/cleanDirectories.js +0 -40
  47. package/dist/components/Drawer/Drawer.cjs.map +0 -1
  48. package/dist/components/Drawer/Drawer.js.map +0 -1
  49. package/dist/components/Stepper/Stepper.cjs +0 -49
  50. package/dist/components/Stepper/Stepper.cjs.map +0 -1
  51. package/dist/components/Stepper/Stepper.js +0 -49
  52. package/dist/components/Stepper/Stepper.js.map +0 -1
  53. package/rollup.config.cjs +0 -87
  54. package/src/components/ActionMenu/ActionMenu.stories.tsx +0 -230
  55. package/src/components/ActionMenu/ActionMenu.tsx +0 -174
  56. package/src/components/ActionMenu/index.ts +0 -2
  57. package/src/components/AppBar/AppBar.stories.tsx +0 -272
  58. package/src/components/AppBar/AppBar.sx.ts +0 -32
  59. package/src/components/AppBar/AppBar.tsx +0 -123
  60. package/src/components/AppBar/AppBarBrand.tsx +0 -120
  61. package/src/components/AppBar/AppBarContext.ts +0 -25
  62. package/src/components/AppBar/AppBarMenuToggle.tsx +0 -90
  63. package/src/components/AppBar/AppBarUserMenu.tsx +0 -217
  64. package/src/components/AppBar/index.ts +0 -25
  65. package/src/components/Autocomplete/Autocomplete.definitions.ts +0 -477
  66. package/src/components/Autocomplete/Autocomplete.helpers.ts +0 -60
  67. package/src/components/Autocomplete/Autocomplete.stories.tsx +0 -748
  68. package/src/components/Autocomplete/Autocomplete.sx.ts +0 -30
  69. package/src/components/Autocomplete/Autocomplete.tsx +0 -361
  70. package/src/components/Autocomplete/Autocomplete.types.ts +0 -13
  71. package/src/components/Autocomplete/_parts/AutocompleteChips.tsx +0 -55
  72. package/src/components/Autocomplete/_parts/AutocompleteLoader.tsx +0 -17
  73. package/src/components/Autocomplete/_parts/AutocompleteOption.tsx +0 -31
  74. package/src/components/Autocomplete/index.ts +0 -12
  75. package/src/components/Avatar/Avatar.definitions.ts +0 -162
  76. package/src/components/Avatar/Avatar.stories.tsx +0 -258
  77. package/src/components/Avatar/Avatar.tsx +0 -206
  78. package/src/components/Avatar/index.ts +0 -1
  79. package/src/components/Button/Button.definition.ts +0 -97
  80. package/src/components/Button/Button.stories.tsx +0 -285
  81. package/src/components/Button/Button.tsx +0 -67
  82. package/src/components/Button/index.ts +0 -1
  83. package/src/components/Card/Card.definition.ts +0 -5
  84. package/src/components/Card/Card.stories.tsx +0 -221
  85. package/src/components/Card/Card.sx.ts +0 -104
  86. package/src/components/Card/Card.tsx +0 -200
  87. package/src/components/Card/index.ts +0 -9
  88. package/src/components/Chip/Chip.definitions.ts +0 -167
  89. package/src/components/Chip/Chip.stories.tsx +0 -265
  90. package/src/components/Chip/Chip.tsx +0 -61
  91. package/src/components/Chip/index.ts +0 -1
  92. package/src/components/Column/Column.tsx +0 -29
  93. package/src/components/Column/index.ts +0 -1
  94. package/src/components/DatePicker/DatePicker.definitions.ts +0 -228
  95. package/src/components/DatePicker/DatePicker.helpers.ts +0 -24
  96. package/src/components/DatePicker/DatePicker.stories.tsx +0 -309
  97. package/src/components/DatePicker/DatePicker.sx.ts +0 -33
  98. package/src/components/DatePicker/DatePicker.tsx +0 -189
  99. package/src/components/DatePicker/DatePicker.types.ts +0 -10
  100. package/src/components/DatePicker/index.ts +0 -9
  101. package/src/components/DateRangePicker/DateRangePicker.definitions.ts +0 -191
  102. package/src/components/DateRangePicker/DateRangePicker.stories.tsx +0 -252
  103. package/src/components/DateRangePicker/DateRangePicker.tsx +0 -56
  104. package/src/components/DateRangePicker/index.ts +0 -1
  105. package/src/components/DateTimePicker/DateTimePicker.definitions.ts +0 -256
  106. package/src/components/DateTimePicker/DateTimePicker.helpers.ts +0 -38
  107. package/src/components/DateTimePicker/DateTimePicker.stories.tsx +0 -418
  108. package/src/components/DateTimePicker/DateTimePicker.sx.ts +0 -30
  109. package/src/components/DateTimePicker/DateTimePicker.tsx +0 -225
  110. package/src/components/DateTimePicker/DateTimePicker.types.ts +0 -10
  111. package/src/components/DateTimePicker/index.ts +0 -9
  112. package/src/components/Drawer/Drawer.stories.tsx +0 -270
  113. package/src/components/Drawer/Drawer.sx.ts +0 -106
  114. package/src/components/Drawer/Drawer.tsx +0 -214
  115. package/src/components/Drawer/DrawerContext.ts +0 -26
  116. package/src/components/Drawer/DrawerItem.tsx +0 -110
  117. package/src/components/Drawer/index.ts +0 -10
  118. package/src/components/Flyout/Flyout.stories.tsx +0 -282
  119. package/src/components/Flyout/Flyout.tsx +0 -122
  120. package/src/components/Flyout/index.ts +0 -1
  121. package/src/components/Gallery/Gallery.definition.tsx +0 -37
  122. package/src/components/Gallery/Gallery.stories.tsx +0 -82
  123. package/src/components/Gallery/Gallery.tsx +0 -118
  124. package/src/components/Gallery/GalleryLightbox.tsx +0 -170
  125. package/src/components/Gallery/GalleryMain.tsx +0 -84
  126. package/src/components/Gallery/GalleryThumbnails.tsx +0 -106
  127. package/src/components/Gallery/index.ts +0 -1
  128. package/src/components/Icon/Icon.stories.tsx +0 -121
  129. package/src/components/Icon/Icon.tsx +0 -175
  130. package/src/components/Icon/index.ts +0 -2
  131. package/src/components/Input/Input.definitions.ts +0 -324
  132. package/src/components/Input/Input.helpers.ts +0 -49
  133. package/src/components/Input/Input.stories.tsx +0 -499
  134. package/src/components/Input/Input.sx.ts +0 -42
  135. package/src/components/Input/Input.tsx +0 -141
  136. package/src/components/Input/Input.types.ts +0 -10
  137. package/src/components/Input/index.ts +0 -9
  138. package/src/components/InputGroup/InputGroup.definitions.ts +0 -158
  139. package/src/components/InputGroup/InputGroup.stories.tsx +0 -267
  140. package/src/components/InputGroup/InputGroup.tsx +0 -179
  141. package/src/components/InputGroup/index.ts +0 -1
  142. package/src/components/MenuButton/MenuButton.stories.tsx +0 -197
  143. package/src/components/MenuButton/MenuButton.tsx +0 -100
  144. package/src/components/MenuButton/index.ts +0 -1
  145. package/src/components/Modal/Modal.stories.tsx +0 -721
  146. package/src/components/Modal/Modal.tsx +0 -355
  147. package/src/components/Modal/ModalBody.tsx +0 -16
  148. package/src/components/Modal/ModalFooter.tsx +0 -71
  149. package/src/components/Modal/ModalHeader.tsx +0 -18
  150. package/src/components/Modal/index.ts +0 -6
  151. package/src/components/PageLoader/PageLoader.stories.tsx +0 -217
  152. package/src/components/PageLoader/PageLoader.tsx +0 -96
  153. package/src/components/PageLoader/index.ts +0 -2
  154. package/src/components/ScrollTopButton/ScrollTopButton.stories.tsx +0 -158
  155. package/src/components/ScrollTopButton/ScrollTopButton.tsx +0 -135
  156. package/src/components/ScrollTopButton/index.ts +0 -8
  157. package/src/components/ScrollTopButton/scrollToTop.ts +0 -37
  158. package/src/components/Select/Select.definitions.ts +0 -602
  159. package/src/components/Select/Select.helpers.ts +0 -71
  160. package/src/components/Select/Select.stories.tsx +0 -687
  161. package/src/components/Select/Select.sx.ts +0 -14
  162. package/src/components/Select/Select.tsx +0 -429
  163. package/src/components/Select/Select.types.ts +0 -15
  164. package/src/components/Select/_parts/SelectMenuItem.tsx +0 -40
  165. package/src/components/Select/_parts/SelectSearchHeader.tsx +0 -51
  166. package/src/components/Select/_parts/SelectValue.tsx +0 -96
  167. package/src/components/Select/index.ts +0 -14
  168. package/src/components/Stat/Stat.stories.tsx +0 -85
  169. package/src/components/Stat/Stat.tsx +0 -117
  170. package/src/components/Stat/index.ts +0 -2
  171. package/src/components/StatusMessage/StatusMessage.stories.tsx +0 -130
  172. package/src/components/StatusMessage/StatusMessage.tsx +0 -162
  173. package/src/components/StatusMessage/index.ts +0 -2
  174. package/src/components/Stepper/Step.tsx +0 -21
  175. package/src/components/Stepper/Stepper.definition.ts +0 -75
  176. package/src/components/Stepper/Stepper.stories.tsx +0 -122
  177. package/src/components/Stepper/Stepper.tsx +0 -75
  178. package/src/components/Stepper/index.ts +0 -2
  179. package/src/components/Table/EmptyTable.png +0 -0
  180. package/src/components/Table/Table.definition.ts +0 -580
  181. package/src/components/Table/Table.stories.tsx +0 -853
  182. package/src/components/Table/Table.tsx +0 -495
  183. package/src/components/Table/data.ts +0 -134
  184. package/src/components/Table/exportsUtils.ts +0 -195
  185. package/src/components/Table/index.ts +0 -3
  186. package/src/components/Table/types.ts +0 -34
  187. package/src/components/Tabs/Tab.definition.ts +0 -53
  188. package/src/components/Tabs/Tab.tsx +0 -19
  189. package/src/components/Tabs/Tabs.stories.tsx +0 -118
  190. package/src/components/Tabs/Tabs.tsx +0 -99
  191. package/src/components/Tabs/_tabUtils.tsx +0 -4
  192. package/src/components/Tabs/index.ts +0 -2
  193. package/src/components/Timeline/Timeline.definition.ts +0 -43
  194. package/src/components/Timeline/Timeline.stories.tsx +0 -108
  195. package/src/components/Timeline/Timeline.tsx +0 -49
  196. package/src/components/Timeline/TimelineItem.tsx +0 -31
  197. package/src/components/Timeline/index.ts +0 -2
  198. package/src/components/Tooltip/Tooltip.stories.tsx +0 -129
  199. package/src/components/Tooltip/Tooltip.tsx +0 -58
  200. package/src/components/Tooltip/index.ts +0 -1
  201. package/src/components/_shared/formField.sx.ts +0 -118
  202. package/src/components/_shared/resolvePreset.ts +0 -35
  203. package/src/hooks/ClipBoard/ClipBoard.stories.tsx +0 -168
  204. package/src/hooks/ClipBoard/ClipBoard.tsx +0 -131
  205. package/src/hooks/ClipBoard/ClipboardUnifiedDemo.tsx +0 -111
  206. package/src/hooks/ClipBoard/index.ts +0 -1
  207. package/src/hooks/Wizard/Wizard.stories.tsx +0 -301
  208. package/src/hooks/Wizard/WizardContext.tsx +0 -166
  209. package/src/hooks/Wizard/index.ts +0 -6
  210. package/src/hooks/Wizard/useWizard.ts +0 -13
  211. package/src/index.ts +0 -17
  212. package/src/mui.ts +0 -44
  213. package/src/styles.css +0 -3
  214. package/src/theme/componentStyles.ts +0 -47
  215. package/src/theme/tokens.ts +0 -43
  216. package/tailwind.config.js +0 -10
  217. package/tsconfig.json +0 -48
  218. package/tsup.config.js +0 -41
  219. package/vite.config.js +0 -132
  220. package/vitest.config.ts +0 -35
  221. /package/{dist/Button-C17mExpd.cjs → Button-C17mExpd.cjs} +0 -0
  222. /package/{dist/Button-C17mExpd.cjs.map → Button-C17mExpd.cjs.map} +0 -0
  223. /package/{dist/Button-UkkP-bNw.js → Button-UkkP-bNw.js} +0 -0
  224. /package/{dist/Button-UkkP-bNw.js.map → Button-UkkP-bNw.js.map} +0 -0
  225. /package/{Readme.md → README.md} +0 -0
  226. /package/{dist/components → components}/ActionMenu/ActionMenu.cjs +0 -0
  227. /package/{dist/components → components}/ActionMenu/ActionMenu.cjs.map +0 -0
  228. /package/{dist/components → components}/ActionMenu/ActionMenu.d.ts +0 -0
  229. /package/{dist/components → components}/ActionMenu/ActionMenu.js +0 -0
  230. /package/{dist/components → components}/ActionMenu/ActionMenu.js.map +0 -0
  231. /package/{dist/components → components}/ActionMenu/index.d.ts +0 -0
  232. /package/{dist/components → components}/ActionMenu.d.ts +0 -0
  233. /package/{dist/components → components}/AppBar/AppBar.cjs +0 -0
  234. /package/{dist/components → components}/AppBar/AppBar.cjs.map +0 -0
  235. /package/{dist/components → components}/AppBar/AppBar.d.ts +0 -0
  236. /package/{dist/components → components}/AppBar/AppBar.js +0 -0
  237. /package/{dist/components → components}/AppBar/AppBar.js.map +0 -0
  238. /package/{dist/components → components}/AppBar/AppBar.sx.d.ts +0 -0
  239. /package/{dist/components → components}/AppBar/AppBarBrand.d.ts +0 -0
  240. /package/{dist/components → components}/AppBar/AppBarContext.d.ts +0 -0
  241. /package/{dist/components → components}/AppBar/AppBarMenuToggle.d.ts +0 -0
  242. /package/{dist/components → components}/AppBar/AppBarUserMenu.d.ts +0 -0
  243. /package/{dist/components → components}/AppBar/index.d.ts +0 -0
  244. /package/{dist/components → components}/AppBar.d.ts +0 -0
  245. /package/{dist/components → components}/Autocomplete/Autocomplete.cjs +0 -0
  246. /package/{dist/components → components}/Autocomplete/Autocomplete.cjs.map +0 -0
  247. /package/{dist/components → components}/Autocomplete/Autocomplete.d.ts +0 -0
  248. /package/{dist/components → components}/Autocomplete/Autocomplete.definitions.d.ts +0 -0
  249. /package/{dist/components → components}/Autocomplete/Autocomplete.helpers.d.ts +0 -0
  250. /package/{dist/components → components}/Autocomplete/Autocomplete.js +0 -0
  251. /package/{dist/components → components}/Autocomplete/Autocomplete.js.map +0 -0
  252. /package/{dist/components → components}/Autocomplete/Autocomplete.sx.d.ts +0 -0
  253. /package/{dist/components → components}/Autocomplete/Autocomplete.types.d.ts +0 -0
  254. /package/{dist/components → components}/Autocomplete/_parts/AutocompleteChips.d.ts +0 -0
  255. /package/{dist/components → components}/Autocomplete/_parts/AutocompleteLoader.d.ts +0 -0
  256. /package/{dist/components → components}/Autocomplete/_parts/AutocompleteOption.d.ts +0 -0
  257. /package/{dist/components → components}/Autocomplete/index.d.ts +0 -0
  258. /package/{dist/components → components}/Autocomplete.d.ts +0 -0
  259. /package/{dist/components → components}/Avatar/Avatar.cjs +0 -0
  260. /package/{dist/components → components}/Avatar/Avatar.cjs.map +0 -0
  261. /package/{dist/components → components}/Avatar/Avatar.d.ts +0 -0
  262. /package/{dist/components → components}/Avatar/Avatar.definitions.d.ts +0 -0
  263. /package/{dist/components → components}/Avatar/Avatar.js +0 -0
  264. /package/{dist/components → components}/Avatar/Avatar.js.map +0 -0
  265. /package/{dist/components → components}/Avatar/index.d.ts +0 -0
  266. /package/{dist/components → components}/Avatar.d.ts +0 -0
  267. /package/{dist/components → components}/Button/Button.cjs +0 -0
  268. /package/{dist/components → components}/Button/Button.cjs.map +0 -0
  269. /package/{dist/components → components}/Button/Button.d.ts +0 -0
  270. /package/{dist/components → components}/Button/Button.definition.d.ts +0 -0
  271. /package/{dist/components → components}/Button/Button.js +0 -0
  272. /package/{dist/components → components}/Button/Button.js.map +0 -0
  273. /package/{dist/components → components}/Button/index.d.ts +0 -0
  274. /package/{dist/components → components}/Button.d.ts +0 -0
  275. /package/{dist/components → components}/Card/Card.cjs +0 -0
  276. /package/{dist/components → components}/Card/Card.cjs.map +0 -0
  277. /package/{dist/components → components}/Card/Card.d.ts +0 -0
  278. /package/{dist/components → components}/Card/Card.definition.d.ts +0 -0
  279. /package/{dist/components → components}/Card/Card.js +0 -0
  280. /package/{dist/components → components}/Card/Card.js.map +0 -0
  281. /package/{dist/components → components}/Card/Card.sx.d.ts +0 -0
  282. /package/{dist/components → components}/Card/index.d.ts +0 -0
  283. /package/{dist/components → components}/Card.d.ts +0 -0
  284. /package/{dist/components → components}/Chip/Chip.cjs +0 -0
  285. /package/{dist/components → components}/Chip/Chip.cjs.map +0 -0
  286. /package/{dist/components → components}/Chip/Chip.d.ts +0 -0
  287. /package/{dist/components → components}/Chip/Chip.definitions.d.ts +0 -0
  288. /package/{dist/components → components}/Chip/Chip.js +0 -0
  289. /package/{dist/components → components}/Chip/Chip.js.map +0 -0
  290. /package/{dist/components → components}/Chip/index.d.ts +0 -0
  291. /package/{dist/components → components}/Chip.d.ts +0 -0
  292. /package/{dist/components → components}/Column/Column.cjs +0 -0
  293. /package/{dist/components → components}/Column/Column.cjs.map +0 -0
  294. /package/{dist/components → components}/Column/Column.d.ts +0 -0
  295. /package/{dist/components → components}/Column/Column.js +0 -0
  296. /package/{dist/components → components}/Column/Column.js.map +0 -0
  297. /package/{dist/components → components}/Column/index.d.ts +0 -0
  298. /package/{dist/components → components}/Column.d.ts +0 -0
  299. /package/{dist/components → components}/DatePicker/DatePicker.cjs +0 -0
  300. /package/{dist/components → components}/DatePicker/DatePicker.cjs.map +0 -0
  301. /package/{dist/components → components}/DatePicker/DatePicker.d.ts +0 -0
  302. /package/{dist/components → components}/DatePicker/DatePicker.definitions.d.ts +0 -0
  303. /package/{dist/components → components}/DatePicker/DatePicker.helpers.d.ts +0 -0
  304. /package/{dist/components → components}/DatePicker/DatePicker.js +0 -0
  305. /package/{dist/components → components}/DatePicker/DatePicker.js.map +0 -0
  306. /package/{dist/components → components}/DatePicker/DatePicker.sx.d.ts +0 -0
  307. /package/{dist/components → components}/DatePicker/DatePicker.types.d.ts +0 -0
  308. /package/{dist/components → components}/DatePicker/index.d.ts +0 -0
  309. /package/{dist/components → components}/DatePicker.d.ts +0 -0
  310. /package/{dist/components → components}/DateRangePicker/DateRangePicker.cjs +0 -0
  311. /package/{dist/components → components}/DateRangePicker/DateRangePicker.cjs.map +0 -0
  312. /package/{dist/components → components}/DateRangePicker/DateRangePicker.d.ts +0 -0
  313. /package/{dist/components → components}/DateRangePicker/DateRangePicker.definitions.d.ts +0 -0
  314. /package/{dist/components → components}/DateRangePicker/DateRangePicker.js +0 -0
  315. /package/{dist/components → components}/DateRangePicker/DateRangePicker.js.map +0 -0
  316. /package/{dist/components → components}/DateRangePicker/index.d.ts +0 -0
  317. /package/{dist/components → components}/DateRangePicker.d.ts +0 -0
  318. /package/{dist/components → components}/DateTimePicker/DateTimePicker.cjs +0 -0
  319. /package/{dist/components → components}/DateTimePicker/DateTimePicker.cjs.map +0 -0
  320. /package/{dist/components → components}/DateTimePicker/DateTimePicker.d.ts +0 -0
  321. /package/{dist/components → components}/DateTimePicker/DateTimePicker.definitions.d.ts +0 -0
  322. /package/{dist/components → components}/DateTimePicker/DateTimePicker.helpers.d.ts +0 -0
  323. /package/{dist/components → components}/DateTimePicker/DateTimePicker.js +0 -0
  324. /package/{dist/components → components}/DateTimePicker/DateTimePicker.js.map +0 -0
  325. /package/{dist/components → components}/DateTimePicker/DateTimePicker.sx.d.ts +0 -0
  326. /package/{dist/components → components}/DateTimePicker/DateTimePicker.types.d.ts +0 -0
  327. /package/{dist/components → components}/DateTimePicker/index.d.ts +0 -0
  328. /package/{dist/components → components}/DateTimePicker.d.ts +0 -0
  329. /package/{dist/components → components}/Drawer/Drawer.sx.d.ts +0 -0
  330. /package/{dist/components → components}/Drawer/DrawerContext.d.ts +0 -0
  331. /package/{dist/components → components}/Drawer/DrawerItem.d.ts +0 -0
  332. /package/{dist/components → components}/Drawer/index.d.ts +0 -0
  333. /package/{dist/components → components}/Drawer.d.ts +0 -0
  334. /package/{dist/components → components}/Flyout/Flyout.cjs +0 -0
  335. /package/{dist/components → components}/Flyout/Flyout.cjs.map +0 -0
  336. /package/{dist/components → components}/Flyout/Flyout.d.ts +0 -0
  337. /package/{dist/components → components}/Flyout/Flyout.js +0 -0
  338. /package/{dist/components → components}/Flyout/Flyout.js.map +0 -0
  339. /package/{dist/components → components}/Flyout/index.d.ts +0 -0
  340. /package/{dist/components → components}/Flyout.d.ts +0 -0
  341. /package/{dist/components → components}/Gallery/Gallery.cjs +0 -0
  342. /package/{dist/components → components}/Gallery/Gallery.cjs.map +0 -0
  343. /package/{dist/components → components}/Gallery/Gallery.d.ts +0 -0
  344. /package/{dist/components → components}/Gallery/Gallery.definition.d.ts +0 -0
  345. /package/{dist/components → components}/Gallery/Gallery.js +0 -0
  346. /package/{dist/components → components}/Gallery/Gallery.js.map +0 -0
  347. /package/{dist/components → components}/Gallery/GalleryLightbox.d.ts +0 -0
  348. /package/{dist/components → components}/Gallery/GalleryMain.d.ts +0 -0
  349. /package/{dist/components → components}/Gallery/GalleryThumbnails.d.ts +0 -0
  350. /package/{dist/components → components}/Gallery/index.d.ts +0 -0
  351. /package/{dist/components → components}/Gallery.d.ts +0 -0
  352. /package/{dist/components → components}/Icon/Icon.cjs +0 -0
  353. /package/{dist/components → components}/Icon/Icon.cjs.map +0 -0
  354. /package/{dist/components → components}/Icon/Icon.d.ts +0 -0
  355. /package/{dist/components → components}/Icon/Icon.js +0 -0
  356. /package/{dist/components → components}/Icon/Icon.js.map +0 -0
  357. /package/{dist/components → components}/Icon/index.d.ts +0 -0
  358. /package/{dist/components → components}/Icon.d.ts +0 -0
  359. /package/{dist/components → components}/Input/Input.cjs +0 -0
  360. /package/{dist/components → components}/Input/Input.cjs.map +0 -0
  361. /package/{dist/components → components}/Input/Input.d.ts +0 -0
  362. /package/{dist/components → components}/Input/Input.helpers.d.ts +0 -0
  363. /package/{dist/components → components}/Input/Input.js +0 -0
  364. /package/{dist/components → components}/Input/Input.js.map +0 -0
  365. /package/{dist/components → components}/Input/Input.sx.d.ts +0 -0
  366. /package/{dist/components → components}/Input/Input.types.d.ts +0 -0
  367. /package/{dist/components → components}/Input/index.d.ts +0 -0
  368. /package/{dist/components → components}/Input.d.ts +0 -0
  369. /package/{dist/components → components}/InputGroup/InputGroup.cjs +0 -0
  370. /package/{dist/components → components}/InputGroup/InputGroup.cjs.map +0 -0
  371. /package/{dist/components → components}/InputGroup/InputGroup.d.ts +0 -0
  372. /package/{dist/components → components}/InputGroup/InputGroup.definitions.d.ts +0 -0
  373. /package/{dist/components → components}/InputGroup/InputGroup.js +0 -0
  374. /package/{dist/components → components}/InputGroup/InputGroup.js.map +0 -0
  375. /package/{dist/components → components}/InputGroup/index.d.ts +0 -0
  376. /package/{dist/components → components}/InputGroup.d.ts +0 -0
  377. /package/{dist/components → components}/MenuButton/MenuButton.cjs +0 -0
  378. /package/{dist/components → components}/MenuButton/MenuButton.cjs.map +0 -0
  379. /package/{dist/components → components}/MenuButton/MenuButton.d.ts +0 -0
  380. /package/{dist/components → components}/MenuButton/MenuButton.js +0 -0
  381. /package/{dist/components → components}/MenuButton/MenuButton.js.map +0 -0
  382. /package/{dist/components → components}/MenuButton/index.d.ts +0 -0
  383. /package/{dist/components → components}/MenuButton.d.ts +0 -0
  384. /package/{dist/components → components}/Modal/Modal.cjs +0 -0
  385. /package/{dist/components → components}/Modal/Modal.cjs.map +0 -0
  386. /package/{dist/components → components}/Modal/Modal.d.ts +0 -0
  387. /package/{dist/components → components}/Modal/Modal.js +0 -0
  388. /package/{dist/components → components}/Modal/Modal.js.map +0 -0
  389. /package/{dist/components → components}/Modal/ModalBody.d.ts +0 -0
  390. /package/{dist/components → components}/Modal/ModalFooter.d.ts +0 -0
  391. /package/{dist/components → components}/Modal/ModalHeader.d.ts +0 -0
  392. /package/{dist/components → components}/Modal/index.d.ts +0 -0
  393. /package/{dist/components → components}/Modal.d.ts +0 -0
  394. /package/{dist/components → components}/PageLoader/PageLoader.cjs +0 -0
  395. /package/{dist/components → components}/PageLoader/PageLoader.cjs.map +0 -0
  396. /package/{dist/components → components}/PageLoader/PageLoader.d.ts +0 -0
  397. /package/{dist/components → components}/PageLoader/PageLoader.js +0 -0
  398. /package/{dist/components → components}/PageLoader/PageLoader.js.map +0 -0
  399. /package/{dist/components → components}/PageLoader/index.d.ts +0 -0
  400. /package/{dist/components → components}/PageLoader.d.ts +0 -0
  401. /package/{dist/components → components}/ScrollTopButton/ScrollTopButton.cjs +0 -0
  402. /package/{dist/components → components}/ScrollTopButton/ScrollTopButton.cjs.map +0 -0
  403. /package/{dist/components → components}/ScrollTopButton/ScrollTopButton.d.ts +0 -0
  404. /package/{dist/components → components}/ScrollTopButton/ScrollTopButton.js +0 -0
  405. /package/{dist/components → components}/ScrollTopButton/ScrollTopButton.js.map +0 -0
  406. /package/{dist/components → components}/ScrollTopButton/index.d.ts +0 -0
  407. /package/{dist/components → components}/ScrollTopButton/scrollToTop.d.ts +0 -0
  408. /package/{dist/components → components}/ScrollTopButton.d.ts +0 -0
  409. /package/{dist/components → components}/Select/Select.cjs +0 -0
  410. /package/{dist/components → components}/Select/Select.cjs.map +0 -0
  411. /package/{dist/components → components}/Select/Select.d.ts +0 -0
  412. /package/{dist/components → components}/Select/Select.definitions.d.ts +0 -0
  413. /package/{dist/components → components}/Select/Select.helpers.d.ts +0 -0
  414. /package/{dist/components → components}/Select/Select.js +0 -0
  415. /package/{dist/components → components}/Select/Select.js.map +0 -0
  416. /package/{dist/components → components}/Select/Select.sx.d.ts +0 -0
  417. /package/{dist/components → components}/Select/Select.types.d.ts +0 -0
  418. /package/{dist/components → components}/Select/_parts/SelectMenuItem.d.ts +0 -0
  419. /package/{dist/components → components}/Select/_parts/SelectSearchHeader.d.ts +0 -0
  420. /package/{dist/components → components}/Select/_parts/SelectValue.d.ts +0 -0
  421. /package/{dist/components → components}/Select/index.d.ts +0 -0
  422. /package/{dist/components → components}/Select.d.ts +0 -0
  423. /package/{dist/components → components}/Stat/Stat.cjs +0 -0
  424. /package/{dist/components → components}/Stat/Stat.cjs.map +0 -0
  425. /package/{dist/components → components}/Stat/Stat.d.ts +0 -0
  426. /package/{dist/components → components}/Stat/Stat.js +0 -0
  427. /package/{dist/components → components}/Stat/Stat.js.map +0 -0
  428. /package/{dist/components → components}/Stat/index.d.ts +0 -0
  429. /package/{dist/components → components}/Stat.d.ts +0 -0
  430. /package/{dist/components → components}/StatusMessage/StatusMessage.cjs +0 -0
  431. /package/{dist/components → components}/StatusMessage/StatusMessage.cjs.map +0 -0
  432. /package/{dist/components → components}/StatusMessage/StatusMessage.d.ts +0 -0
  433. /package/{dist/components → components}/StatusMessage/StatusMessage.js +0 -0
  434. /package/{dist/components → components}/StatusMessage/StatusMessage.js.map +0 -0
  435. /package/{dist/components → components}/StatusMessage/index.d.ts +0 -0
  436. /package/{dist/components → components}/StatusMessage.d.ts +0 -0
  437. /package/{dist/components → components}/Stepper/Step.d.ts +0 -0
  438. /package/{dist/components → components}/Stepper/Stepper.d.ts +0 -0
  439. /package/{dist/components → components}/Stepper/Stepper.definition.d.ts +0 -0
  440. /package/{dist/components → components}/Stepper/index.d.ts +0 -0
  441. /package/{dist/components → components}/Stepper.d.ts +0 -0
  442. /package/{dist/components → components}/Table/Table.cjs +0 -0
  443. /package/{dist/components → components}/Table/Table.cjs.map +0 -0
  444. /package/{dist/components → components}/Table/Table.d.ts +0 -0
  445. /package/{dist/components → components}/Table/Table.definition.d.ts +0 -0
  446. /package/{dist/components → components}/Table/Table.js +0 -0
  447. /package/{dist/components → components}/Table/Table.js.map +0 -0
  448. /package/{dist/components → components}/Table/data.d.ts +0 -0
  449. /package/{dist/components → components}/Table/exportsUtils.d.ts +0 -0
  450. /package/{dist/components → components}/Table/index.d.ts +0 -0
  451. /package/{dist/components → components}/Table/types.d.ts +0 -0
  452. /package/{dist/components → components}/Table.d.ts +0 -0
  453. /package/{dist/components → components}/Tabs/Tab.d.ts +0 -0
  454. /package/{dist/components → components}/Tabs/Tab.definition.d.ts +0 -0
  455. /package/{dist/components → components}/Tabs/Tabs.cjs +0 -0
  456. /package/{dist/components → components}/Tabs/Tabs.cjs.map +0 -0
  457. /package/{dist/components → components}/Tabs/Tabs.d.ts +0 -0
  458. /package/{dist/components → components}/Tabs/Tabs.js +0 -0
  459. /package/{dist/components → components}/Tabs/Tabs.js.map +0 -0
  460. /package/{dist/components → components}/Tabs/_tabUtils.d.ts +0 -0
  461. /package/{dist/components → components}/Tabs/index.d.ts +0 -0
  462. /package/{dist/components → components}/Tabs.d.ts +0 -0
  463. /package/{dist/components → components}/Timeline/Timeline.cjs +0 -0
  464. /package/{dist/components → components}/Timeline/Timeline.cjs.map +0 -0
  465. /package/{dist/components → components}/Timeline/Timeline.d.ts +0 -0
  466. /package/{dist/components → components}/Timeline/Timeline.definition.d.ts +0 -0
  467. /package/{dist/components → components}/Timeline/Timeline.js +0 -0
  468. /package/{dist/components → components}/Timeline/Timeline.js.map +0 -0
  469. /package/{dist/components → components}/Timeline/TimelineItem.d.ts +0 -0
  470. /package/{dist/components → components}/Timeline/index.d.ts +0 -0
  471. /package/{dist/components → components}/Timeline.d.ts +0 -0
  472. /package/{dist/components → components}/Tooltip/Tooltip.cjs +0 -0
  473. /package/{dist/components → components}/Tooltip/Tooltip.cjs.map +0 -0
  474. /package/{dist/components → components}/Tooltip/Tooltip.d.ts +0 -0
  475. /package/{dist/components → components}/Tooltip/Tooltip.js +0 -0
  476. /package/{dist/components → components}/Tooltip/Tooltip.js.map +0 -0
  477. /package/{dist/components → components}/Tooltip/index.d.ts +0 -0
  478. /package/{dist/components → components}/Tooltip.d.ts +0 -0
  479. /package/{dist/components → components}/_shared/formField.sx.d.ts +0 -0
  480. /package/{dist/components → components}/_shared/resolvePreset.d.ts +0 -0
  481. /package/{dist/formField.sx-CQ1mbk9M.cjs → formField.sx-CQ1mbk9M.cjs} +0 -0
  482. /package/{dist/formField.sx-CQ1mbk9M.cjs.map → formField.sx-CQ1mbk9M.cjs.map} +0 -0
  483. /package/{dist/formField.sx-DfVbMe0V.js → formField.sx-DfVbMe0V.js} +0 -0
  484. /package/{dist/formField.sx-DfVbMe0V.js.map → formField.sx-DfVbMe0V.js.map} +0 -0
  485. /package/{dist/hooks → hooks}/ClipBoard/ClipBoard.cjs +0 -0
  486. /package/{dist/hooks → hooks}/ClipBoard/ClipBoard.cjs.map +0 -0
  487. /package/{dist/hooks → hooks}/ClipBoard/ClipBoard.d.ts +0 -0
  488. /package/{dist/hooks → hooks}/ClipBoard/ClipBoard.js +0 -0
  489. /package/{dist/hooks → hooks}/ClipBoard/ClipBoard.js.map +0 -0
  490. /package/{dist/hooks → hooks}/ClipBoard/ClipboardUnifiedDemo.d.ts +0 -0
  491. /package/{dist/hooks → hooks}/ClipBoard/index.d.ts +0 -0
  492. /package/{dist/hooks → hooks}/ClipBoard.d.ts +0 -0
  493. /package/{dist/hooks → hooks}/Wizard/Wizard.cjs +0 -0
  494. /package/{dist/hooks → hooks}/Wizard/Wizard.cjs.map +0 -0
  495. /package/{dist/hooks → hooks}/Wizard/Wizard.js +0 -0
  496. /package/{dist/hooks → hooks}/Wizard/Wizard.js.map +0 -0
  497. /package/{dist/hooks → hooks}/Wizard/WizardContext.d.ts +0 -0
  498. /package/{dist/hooks → hooks}/Wizard/index.d.ts +0 -0
  499. /package/{dist/hooks → hooks}/Wizard/useWizard.d.ts +0 -0
  500. /package/{dist/hooks → hooks}/Wizard.d.ts +0 -0
  501. /package/{dist/index.d.ts → index.d.ts} +0 -0
  502. /package/{dist/index.js.map → index.js.map} +0 -0
  503. /package/{dist/resolvePreset-B-IB0ehH.js → resolvePreset-B-IB0ehH.js} +0 -0
  504. /package/{dist/resolvePreset-B-IB0ehH.js.map → resolvePreset-B-IB0ehH.js.map} +0 -0
  505. /package/{dist/resolvePreset-CT3kU-K2.cjs → resolvePreset-CT3kU-K2.cjs} +0 -0
  506. /package/{dist/resolvePreset-CT3kU-K2.cjs.map → resolvePreset-CT3kU-K2.cjs.map} +0 -0
  507. /package/{dist/styles.css → styles.css} +0 -0
  508. /package/{dist/theme → theme}/tokens.d.ts +0 -0
  509. /package/{dist/useWizard-CWdIxZzX.cjs → useWizard-CWdIxZzX.cjs} +0 -0
  510. /package/{dist/useWizard-CWdIxZzX.cjs.map → useWizard-CWdIxZzX.cjs.map} +0 -0
  511. /package/{dist/useWizard-CWq--C3o.js → useWizard-CWq--C3o.js} +0 -0
  512. /package/{dist/useWizard-CWq--C3o.js.map → useWizard-CWq--C3o.js.map} +0 -0
@@ -96,6 +96,7 @@ function Drawer({
96
96
  collapsedWidth = 72,
97
97
  showCollapseButton,
98
98
  header,
99
+ logo,
99
100
  footer,
100
101
  preset,
101
102
  sx,
@@ -133,20 +134,22 @@ function Drawer({
133
134
  sx: paperSx
134
135
  },
135
136
  children: [
136
- header && /* @__PURE__ */ jsxRuntime.jsxs(
137
+ (logo || shouldShowToggle) && /* @__PURE__ */ jsxRuntime.jsxs(
137
138
  material.Box,
138
139
  {
139
140
  sx: {
140
141
  display: "flex",
142
+ flexDirection: contextValue.collapsed ? "column" : "row",
141
143
  alignItems: "center",
142
- justifyContent: contextValue.collapsed ? "center" : "space-between",
144
+ justifyContent: contextValue.collapsed ? "center" : logo ? "space-between" : "flex-end",
145
+ gap: contextValue.collapsed ? 0.5 : 0,
143
146
  px: contextValue.collapsed ? 1 : 2,
144
- py: 1.5,
147
+ py: 1,
145
148
  minHeight: 64,
146
149
  flexShrink: 0
147
150
  },
148
151
  children: [
149
- !contextValue.collapsed && /* @__PURE__ */ jsxRuntime.jsx(material.Box, { sx: { flex: 1, minWidth: 0 }, children: header }),
152
+ logo && /* @__PURE__ */ jsxRuntime.jsx(material.Box, { sx: { display: "flex", alignItems: "center", minWidth: 0 }, children: logo }),
150
153
  shouldShowToggle && /* @__PURE__ */ jsxRuntime.jsx(
151
154
  material.IconButton,
152
155
  {
@@ -159,24 +162,18 @@ function Drawer({
159
162
  ]
160
163
  }
161
164
  ),
162
- !header && shouldShowToggle && /* @__PURE__ */ jsxRuntime.jsx(
165
+ header && !contextValue.collapsed && /* @__PURE__ */ jsxRuntime.jsx(
163
166
  material.Box,
164
167
  {
165
168
  sx: {
166
169
  display: "flex",
167
- justifyContent: contextValue.collapsed ? "center" : "flex-end",
168
- px: 1,
169
- py: 1
170
+ alignItems: "center",
171
+ px: 2,
172
+ py: 1.5,
173
+ minHeight: 56,
174
+ flexShrink: 0
170
175
  },
171
- children: /* @__PURE__ */ jsxRuntime.jsx(
172
- material.IconButton,
173
- {
174
- size: "small",
175
- onClick: onToggleCollapse,
176
- "aria-label": collapsed ? "Expandir menú" : "Colapsar menú",
177
- children: collapsed ? /* @__PURE__ */ jsxRuntime.jsx(ChevronRightIcon, {}) : /* @__PURE__ */ jsxRuntime.jsx(ChevronLeftIcon, {})
178
- }
179
- )
176
+ children: /* @__PURE__ */ jsxRuntime.jsx(material.Box, { sx: { flex: 1, minWidth: 0 }, children: header })
180
177
  }
181
178
  ),
182
179
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Drawer.cjs","sources":["../../../src/components/Drawer/DrawerContext.ts","../../../src/components/Drawer/Drawer.sx.ts","../../../src/components/Drawer/Drawer.tsx","../../../src/components/Drawer/DrawerItem.tsx"],"sourcesContent":["import { createContext, useContext } from 'react';\n\n/**\n * Context interno del Drawer. Permite que los sub-componentes (DrawerItem,\n * DrawerSection, etc.) reaccionen al estado `collapsed` sin necesidad de\n * recibirlo por props explícitas.\n */\nexport interface DrawerContextValue {\n /** Si el drawer está en modo mini (solo iconos). */\n collapsed: boolean;\n /** Ancho actual del drawer (útil para sub-componentes que necesiten layout). */\n width: number;\n}\n\nexport const DrawerContext = createContext<DrawerContextValue | null>(null);\n\n/**\n * Hook para leer el estado del drawer desde cualquier sub-componente. Si se\n * llama fuera de un `<Drawer>`, devuelve valores por defecto (collapsed=false)\n * para que los items renderizados sueltos no exploten.\n */\nexport function useDrawerContext(): DrawerContextValue {\n const ctx = useContext(DrawerContext);\n if (ctx) return ctx;\n return { collapsed: false, width: 260 };\n}\n","import type { SxProps, Theme } from '@mui/material/styles';\n\nexport interface BuildDrawerSxArgs {\n /** Ancho actual del drawer (expanded o collapsed). */\n width: number;\n /** Duración de la transición de ancho en ms. */\n transitionDuration?: number;\n}\n\n/**\n * sx aplicado al root del MuiDrawer. Controla el ancho animado y el paper\n * interno. Los estilos visuales del paper (background, border) se dejan en\n * manos del theme / preset.\n */\nexport function buildDrawerSx({\n width,\n transitionDuration = 200,\n}: BuildDrawerSxArgs): SxProps<Theme> {\n return {\n width,\n flexShrink: 0,\n whiteSpace: 'nowrap',\n boxSizing: 'border-box',\n transition: (theme) =>\n theme.transitions.create('width', {\n easing: theme.transitions.easing.sharp,\n duration: transitionDuration,\n }),\n '& .MuiDrawer-paper': {\n width,\n boxSizing: 'border-box',\n overflowX: 'hidden',\n transition: (theme) =>\n theme.transitions.create('width', {\n easing: theme.transitions.easing.sharp,\n duration: transitionDuration,\n }),\n },\n };\n}\n\nexport interface BuildDrawerItemSxArgs {\n collapsed: boolean;\n active?: boolean;\n danger?: boolean;\n}\n\n/**\n * sx para un item del drawer. Centra el icono cuando está colapsado y\n * tiñe el fondo cuando el item está activo.\n */\nexport function buildDrawerItemSx({\n collapsed,\n active,\n danger,\n}: BuildDrawerItemSxArgs): SxProps<Theme> {\n return (theme) => ({\n minHeight: 44,\n px: collapsed ? 1 : 2,\n py: 1,\n mx: 1,\n my: 0.25,\n borderRadius: 1,\n display: 'flex',\n alignItems: 'center',\n justifyContent: collapsed ? 'center' : 'flex-start',\n gap: collapsed ? 0 : 1.5,\n cursor: 'pointer',\n color: danger\n ? theme.palette.error.main\n : active\n ? theme.palette.primary.main\n : theme.palette.text.primary,\n backgroundColor: active\n ? theme.palette.action.selected\n : 'transparent',\n transition: theme.transitions.create(\n ['background-color', 'color', 'padding'],\n { duration: 150 },\n ),\n '&:hover': {\n backgroundColor: danger\n ? theme.palette.error.light + '22'\n : theme.palette.action.hover,\n },\n '& .drawer-item__icon': {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n minWidth: 24,\n },\n '& .drawer-item__label': {\n flex: 1,\n minWidth: 0,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n opacity: collapsed ? 0 : 1,\n width: collapsed ? 0 : 'auto',\n transition: theme.transitions.create(['opacity', 'width'], {\n duration: collapsed ? 100 : 200,\n }),\n },\n });\n}\n","import React, { useMemo, type ReactNode } from 'react';\nimport {\n Drawer as MuiDrawer,\n IconButton,\n Box,\n type DrawerProps as MuiDrawerProps,\n} from '@mui/material';\nimport {\n useTheme,\n type SxProps,\n type Theme,\n} from '@mui/material/styles';\nimport ChevronLeftIcon from '@mui/icons-material/ChevronLeft';\nimport ChevronRightIcon from '@mui/icons-material/ChevronRight';\n\nimport { DrawerContext } from './DrawerContext';\nimport { buildDrawerSx } from './Drawer.sx';\nimport { resolvePreset } from '../_shared/resolvePreset';\n\n// ── Tipos públicos ──────────────────────────────────────────────────────\nexport type DrawerVariant = 'permanent' | 'persistent' | 'temporary';\nexport type DrawerAnchor = 'left' | 'right' | 'top' | 'bottom';\n\nexport interface DrawerProps {\n /** Contenido del drawer (típicamente `<DrawerItem>`s). */\n children?: ReactNode;\n /**\n * Variante del drawer:\n * - `permanent` (default): siempre visible en desktop, soporta collapsed (mini).\n * - `persistent`: se oculta/muestra, empuja el contenido principal.\n * - `temporary`: flotante con backdrop (típico móvil).\n */\n variant?: DrawerVariant;\n /** Lado del viewport. Default: `'left'`. */\n anchor?: DrawerAnchor;\n /**\n * Estado mini (solo iconos). Solo se aplica con `variant=\"permanent\"` o\n * `\"persistent\"`. Si no se provee, el drawer está siempre expandido.\n */\n collapsed?: boolean;\n /** Callback del botón de toggle (chevron). */\n onToggleCollapse?: () => void;\n /** Estado abierto/cerrado (aplica a `temporary` y `persistent`). */\n open?: boolean;\n /** Callback de cierre (backdrop o ESC en temporary). */\n onClose?: MuiDrawerProps['onClose'];\n /** Ancho en estado expandido. Default: 260. */\n expandedWidth?: number;\n /** Ancho en estado colapsado (solo iconos). Default: 72. */\n collapsedWidth?: number;\n /** Muestra el botón chevron para toggle collapsed. Default: true si `onToggleCollapse` está definido. */\n showCollapseButton?: boolean;\n /** Contenido del header (por encima de los items). Típicamente logo/brand. */\n header?: ReactNode;\n /**\n * Logo/brand que se muestra junto al botón de toggle.\n * - Expandido: logo a la izquierda, toggle a la derecha en la misma fila.\n * - Colapsado: logo arriba centrado, toggle debajo centrado (stack vertical).\n * Siempre visible (a diferencia de `header`, que se oculta al colapsar).\n */\n logo?: ReactNode;\n /** Contenido del footer (por debajo de los items). Típicamente user profile. */\n footer?: ReactNode;\n /**\n * Nombre del preset de estilo registrado en `theme.styles.Drawer`.\n * - `\"default\"` (o ausente) = estilo built-in del paquete.\n */\n preset?: string;\n /** sx aplicado al Drawer (root). Se mergea después del preset. */\n sx?: SxProps<Theme>;\n /** sx aplicado al Paper interno. */\n paperSx?: SxProps<Theme>;\n className?: string;\n}\n\nexport function Drawer({\n children,\n variant = 'permanent',\n anchor = 'left',\n collapsed = false,\n onToggleCollapse,\n open,\n onClose,\n expandedWidth = 260,\n collapsedWidth = 72,\n showCollapseButton,\n header,\n logo,\n footer,\n preset,\n sx,\n paperSx,\n className,\n}: DrawerProps) {\n const theme = useTheme();\n const presetSx = resolvePreset('Drawer', preset, theme);\n\n // El mini-variant solo tiene sentido en permanent / persistent.\n const supportsCollapsed = variant !== 'temporary';\n const effectiveWidth =\n supportsCollapsed && collapsed ? collapsedWidth : expandedWidth;\n\n const contextValue = useMemo(\n () => ({\n collapsed: supportsCollapsed && collapsed,\n width: effectiveWidth,\n }),\n [supportsCollapsed, collapsed, effectiveWidth],\n );\n\n const rootSx: SxProps<Theme> = [\n buildDrawerSx({ width: effectiveWidth }),\n ...(presetSx ? [presetSx] : []),\n ...(Array.isArray(sx) ? sx : sx ? [sx] : []),\n ];\n\n const shouldShowToggle =\n showCollapseButton ?? (supportsCollapsed && !!onToggleCollapse);\n\n const openProp =\n variant === 'permanent'\n ? true\n : open !== undefined\n ? open\n : false;\n\n return (\n <DrawerContext.Provider value={contextValue}>\n <MuiDrawer\n variant={variant}\n anchor={anchor}\n open={openProp}\n onClose={onClose}\n className={className}\n sx={rootSx}\n PaperProps={{\n sx: paperSx,\n }}\n >\n {(logo || shouldShowToggle) && (\n <Box\n sx={{\n display: 'flex',\n flexDirection: contextValue.collapsed ? 'column' : 'row',\n alignItems: 'center',\n justifyContent: contextValue.collapsed\n ? 'center'\n : logo\n ? 'space-between'\n : 'flex-end',\n gap: contextValue.collapsed ? 0.5 : 0,\n px: contextValue.collapsed ? 1 : 2,\n py: 1,\n minHeight: 64,\n flexShrink: 0,\n }}\n >\n {logo && (\n <Box sx={{ display: 'flex', alignItems: 'center', minWidth: 0 }}>\n {logo}\n </Box>\n )}\n {shouldShowToggle && (\n <IconButton\n size=\"small\"\n onClick={onToggleCollapse}\n aria-label={collapsed ? 'Expandir menú' : 'Colapsar menú'}\n >\n {collapsed ? <ChevronRightIcon /> : <ChevronLeftIcon />}\n </IconButton>\n )}\n </Box>\n )}\n\n {header && !contextValue.collapsed && (\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n px: 2,\n py: 1.5,\n minHeight: 56,\n flexShrink: 0,\n }}\n >\n <Box sx={{ flex: 1, minWidth: 0 }}>{header}</Box>\n </Box>\n )}\n\n <Box\n component=\"nav\"\n sx={{\n flex: 1,\n overflowY: 'auto',\n overflowX: 'hidden',\n py: 1,\n }}\n >\n {children}\n </Box>\n\n {footer && (\n <Box\n sx={{\n flexShrink: 0,\n borderTop: (t) => `1px solid ${t.palette.divider}`,\n p: contextValue.collapsed ? 1 : 1.5,\n display: 'flex',\n justifyContent: contextValue.collapsed\n ? 'center'\n : 'flex-start',\n }}\n >\n {footer}\n </Box>\n )}\n </MuiDrawer>\n </DrawerContext.Provider>\n );\n}\n\nexport default Drawer;\n","import React, { type ReactNode, type MouseEvent } from 'react';\nimport { Box, Tooltip, Typography } from '@mui/material';\nimport type { SxProps, Theme } from '@mui/material/styles';\n\nimport { useDrawerContext } from './DrawerContext';\nimport { buildDrawerItemSx } from './Drawer.sx';\n\nexport interface DrawerItemProps {\n /** Icono del item. Se muestra siempre (expanded y collapsed). */\n icon?: ReactNode;\n /** Texto del item. Se oculta cuando el drawer está colapsado (muestra tooltip). */\n label: ReactNode;\n /** Handler de click. */\n onClick?: (event: MouseEvent<HTMLDivElement>) => void;\n /** Marca el item como activo (destaca color y fondo). */\n active?: boolean;\n /** Marca el item como \"destructivo\" (p.ej. cerrar sesión): color error. */\n danger?: boolean;\n /** Deshabilita click + bajo opacidad. */\n disabled?: boolean;\n /** Contenido adicional a la derecha del label (badge, count, chevron). */\n endAdornment?: ReactNode;\n /** sx override del consumer, se mergea al final. */\n sx?: SxProps<Theme>;\n className?: string;\n}\n\n/**\n * Item de un Drawer de shared-library. Lee el estado `collapsed` del\n * DrawerContext para adaptar layout y mostrar tooltip en modo mini.\n *\n * Uso típico:\n * ```tsx\n * <Drawer collapsed={collapsed} onToggleCollapse={toggle}>\n * <DrawerItem icon={<HomeIcon />} label=\"Inicio\" active />\n * <DrawerItem icon={<UserIcon />} label=\"Perfil\" />\n * </Drawer>\n * ```\n */\nexport function DrawerItem({\n icon,\n label,\n onClick,\n active = false,\n danger = false,\n disabled = false,\n endAdornment,\n sx,\n className,\n}: DrawerItemProps) {\n const { collapsed } = useDrawerContext();\n\n const baseSx = buildDrawerItemSx({ collapsed, active, danger });\n\n const mergedSx: SxProps<Theme> = [\n baseSx,\n disabled && { pointerEvents: 'none', opacity: 0.5 },\n ...(Array.isArray(sx) ? sx : sx ? [sx] : []),\n ].filter(Boolean) as SxProps<Theme>;\n\n const content = (\n <Box\n role=\"button\"\n tabIndex={disabled ? -1 : 0}\n aria-disabled={disabled}\n onClick={disabled ? undefined : onClick}\n onKeyDown={(event) => {\n if (disabled) return;\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n onClick?.(event as unknown as MouseEvent<HTMLDivElement>);\n }\n }}\n className={className}\n sx={mergedSx}\n >\n {icon !== undefined && (\n <Box className=\"drawer-item__icon\" component=\"span\">\n {icon}\n </Box>\n )}\n <Typography\n component=\"span\"\n variant=\"body2\"\n className=\"drawer-item__label\"\n sx={{ fontWeight: active ? 600 : 400 }}\n >\n {label}\n </Typography>\n {!collapsed && endAdornment && (\n <Box component=\"span\" sx={{ flexShrink: 0, ml: 'auto' }}>\n {endAdornment}\n </Box>\n )}\n </Box>\n );\n\n // Cuando está colapsado, envolvemos en tooltip para revelar el label al hover.\n if (collapsed && typeof label === 'string') {\n return (\n <Tooltip title={label} placement=\"right\" arrow>\n {content}\n </Tooltip>\n );\n }\n\n return content;\n}\n\nexport default DrawerItem;\n"],"names":["createContext","useContext","useTheme","resolvePreset","useMemo","jsx","jsxs","MuiDrawer","Box","IconButton","Typography","Tooltip"],"mappings":"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"}
@@ -34,6 +34,13 @@ export interface DrawerProps {
34
34
  showCollapseButton?: boolean;
35
35
  /** Contenido del header (por encima de los items). Típicamente logo/brand. */
36
36
  header?: ReactNode;
37
+ /**
38
+ * Logo/brand que se muestra junto al botón de toggle.
39
+ * - Expandido: logo a la izquierda, toggle a la derecha en la misma fila.
40
+ * - Colapsado: logo arriba centrado, toggle debajo centrado (stack vertical).
41
+ * Siempre visible (a diferencia de `header`, que se oculta al colapsar).
42
+ */
43
+ logo?: ReactNode;
37
44
  /** Contenido del footer (por debajo de los items). Típicamente user profile. */
38
45
  footer?: ReactNode;
39
46
  /**
@@ -47,5 +54,5 @@ export interface DrawerProps {
47
54
  paperSx?: SxProps<Theme>;
48
55
  className?: string;
49
56
  }
50
- export declare function Drawer({ children, variant, anchor, collapsed, onToggleCollapse, open, onClose, expandedWidth, collapsedWidth, showCollapseButton, header, footer, preset, sx, paperSx, className, }: DrawerProps): import("react/jsx-runtime").JSX.Element;
57
+ export declare function Drawer({ children, variant, anchor, collapsed, onToggleCollapse, open, onClose, expandedWidth, collapsedWidth, showCollapseButton, header, logo, footer, preset, sx, paperSx, className, }: DrawerProps): import("react/jsx-runtime").JSX.Element;
51
58
  export default Drawer;
@@ -94,6 +94,7 @@ function Drawer({
94
94
  collapsedWidth = 72,
95
95
  showCollapseButton,
96
96
  header,
97
+ logo,
97
98
  footer,
98
99
  preset,
99
100
  sx,
@@ -131,20 +132,22 @@ function Drawer({
131
132
  sx: paperSx
132
133
  },
133
134
  children: [
134
- header && /* @__PURE__ */ jsxs(
135
+ (logo || shouldShowToggle) && /* @__PURE__ */ jsxs(
135
136
  Box,
136
137
  {
137
138
  sx: {
138
139
  display: "flex",
140
+ flexDirection: contextValue.collapsed ? "column" : "row",
139
141
  alignItems: "center",
140
- justifyContent: contextValue.collapsed ? "center" : "space-between",
142
+ justifyContent: contextValue.collapsed ? "center" : logo ? "space-between" : "flex-end",
143
+ gap: contextValue.collapsed ? 0.5 : 0,
141
144
  px: contextValue.collapsed ? 1 : 2,
142
- py: 1.5,
145
+ py: 1,
143
146
  minHeight: 64,
144
147
  flexShrink: 0
145
148
  },
146
149
  children: [
147
- !contextValue.collapsed && /* @__PURE__ */ jsx(Box, { sx: { flex: 1, minWidth: 0 }, children: header }),
150
+ logo && /* @__PURE__ */ jsx(Box, { sx: { display: "flex", alignItems: "center", minWidth: 0 }, children: logo }),
148
151
  shouldShowToggle && /* @__PURE__ */ jsx(
149
152
  IconButton,
150
153
  {
@@ -157,24 +160,18 @@ function Drawer({
157
160
  ]
158
161
  }
159
162
  ),
160
- !header && shouldShowToggle && /* @__PURE__ */ jsx(
163
+ header && !contextValue.collapsed && /* @__PURE__ */ jsx(
161
164
  Box,
162
165
  {
163
166
  sx: {
164
167
  display: "flex",
165
- justifyContent: contextValue.collapsed ? "center" : "flex-end",
166
- px: 1,
167
- py: 1
168
+ alignItems: "center",
169
+ px: 2,
170
+ py: 1.5,
171
+ minHeight: 56,
172
+ flexShrink: 0
168
173
  },
169
- children: /* @__PURE__ */ jsx(
170
- IconButton,
171
- {
172
- size: "small",
173
- onClick: onToggleCollapse,
174
- "aria-label": collapsed ? "Expandir menú" : "Colapsar menú",
175
- children: collapsed ? /* @__PURE__ */ jsx(ChevronRightIcon, {}) : /* @__PURE__ */ jsx(ChevronLeftIcon, {})
176
- }
177
- )
174
+ children: /* @__PURE__ */ jsx(Box, { sx: { flex: 1, minWidth: 0 }, children: header })
178
175
  }
179
176
  ),
180
177
  /* @__PURE__ */ jsx(
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Drawer.js","sources":["../../../src/components/Drawer/DrawerContext.ts","../../../src/components/Drawer/Drawer.sx.ts","../../../src/components/Drawer/Drawer.tsx","../../../src/components/Drawer/DrawerItem.tsx"],"sourcesContent":["import { createContext, useContext } from 'react';\n\n/**\n * Context interno del Drawer. Permite que los sub-componentes (DrawerItem,\n * DrawerSection, etc.) reaccionen al estado `collapsed` sin necesidad de\n * recibirlo por props explícitas.\n */\nexport interface DrawerContextValue {\n /** Si el drawer está en modo mini (solo iconos). */\n collapsed: boolean;\n /** Ancho actual del drawer (útil para sub-componentes que necesiten layout). */\n width: number;\n}\n\nexport const DrawerContext = createContext<DrawerContextValue | null>(null);\n\n/**\n * Hook para leer el estado del drawer desde cualquier sub-componente. Si se\n * llama fuera de un `<Drawer>`, devuelve valores por defecto (collapsed=false)\n * para que los items renderizados sueltos no exploten.\n */\nexport function useDrawerContext(): DrawerContextValue {\n const ctx = useContext(DrawerContext);\n if (ctx) return ctx;\n return { collapsed: false, width: 260 };\n}\n","import type { SxProps, Theme } from '@mui/material/styles';\n\nexport interface BuildDrawerSxArgs {\n /** Ancho actual del drawer (expanded o collapsed). */\n width: number;\n /** Duración de la transición de ancho en ms. */\n transitionDuration?: number;\n}\n\n/**\n * sx aplicado al root del MuiDrawer. Controla el ancho animado y el paper\n * interno. Los estilos visuales del paper (background, border) se dejan en\n * manos del theme / preset.\n */\nexport function buildDrawerSx({\n width,\n transitionDuration = 200,\n}: BuildDrawerSxArgs): SxProps<Theme> {\n return {\n width,\n flexShrink: 0,\n whiteSpace: 'nowrap',\n boxSizing: 'border-box',\n transition: (theme) =>\n theme.transitions.create('width', {\n easing: theme.transitions.easing.sharp,\n duration: transitionDuration,\n }),\n '& .MuiDrawer-paper': {\n width,\n boxSizing: 'border-box',\n overflowX: 'hidden',\n transition: (theme) =>\n theme.transitions.create('width', {\n easing: theme.transitions.easing.sharp,\n duration: transitionDuration,\n }),\n },\n };\n}\n\nexport interface BuildDrawerItemSxArgs {\n collapsed: boolean;\n active?: boolean;\n danger?: boolean;\n}\n\n/**\n * sx para un item del drawer. Centra el icono cuando está colapsado y\n * tiñe el fondo cuando el item está activo.\n */\nexport function buildDrawerItemSx({\n collapsed,\n active,\n danger,\n}: BuildDrawerItemSxArgs): SxProps<Theme> {\n return (theme) => ({\n minHeight: 44,\n px: collapsed ? 1 : 2,\n py: 1,\n mx: 1,\n my: 0.25,\n borderRadius: 1,\n display: 'flex',\n alignItems: 'center',\n justifyContent: collapsed ? 'center' : 'flex-start',\n gap: collapsed ? 0 : 1.5,\n cursor: 'pointer',\n color: danger\n ? theme.palette.error.main\n : active\n ? theme.palette.primary.main\n : theme.palette.text.primary,\n backgroundColor: active\n ? theme.palette.action.selected\n : 'transparent',\n transition: theme.transitions.create(\n ['background-color', 'color', 'padding'],\n { duration: 150 },\n ),\n '&:hover': {\n backgroundColor: danger\n ? theme.palette.error.light + '22'\n : theme.palette.action.hover,\n },\n '& .drawer-item__icon': {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n minWidth: 24,\n },\n '& .drawer-item__label': {\n flex: 1,\n minWidth: 0,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n opacity: collapsed ? 0 : 1,\n width: collapsed ? 0 : 'auto',\n transition: theme.transitions.create(['opacity', 'width'], {\n duration: collapsed ? 100 : 200,\n }),\n },\n });\n}\n","import React, { useMemo, type ReactNode } from 'react';\nimport {\n Drawer as MuiDrawer,\n IconButton,\n Box,\n type DrawerProps as MuiDrawerProps,\n} from '@mui/material';\nimport {\n useTheme,\n type SxProps,\n type Theme,\n} from '@mui/material/styles';\nimport ChevronLeftIcon from '@mui/icons-material/ChevronLeft';\nimport ChevronRightIcon from '@mui/icons-material/ChevronRight';\n\nimport { DrawerContext } from './DrawerContext';\nimport { buildDrawerSx } from './Drawer.sx';\nimport { resolvePreset } from '../_shared/resolvePreset';\n\n// ── Tipos públicos ──────────────────────────────────────────────────────\nexport type DrawerVariant = 'permanent' | 'persistent' | 'temporary';\nexport type DrawerAnchor = 'left' | 'right' | 'top' | 'bottom';\n\nexport interface DrawerProps {\n /** Contenido del drawer (típicamente `<DrawerItem>`s). */\n children?: ReactNode;\n /**\n * Variante del drawer:\n * - `permanent` (default): siempre visible en desktop, soporta collapsed (mini).\n * - `persistent`: se oculta/muestra, empuja el contenido principal.\n * - `temporary`: flotante con backdrop (típico móvil).\n */\n variant?: DrawerVariant;\n /** Lado del viewport. Default: `'left'`. */\n anchor?: DrawerAnchor;\n /**\n * Estado mini (solo iconos). Solo se aplica con `variant=\"permanent\"` o\n * `\"persistent\"`. Si no se provee, el drawer está siempre expandido.\n */\n collapsed?: boolean;\n /** Callback del botón de toggle (chevron). */\n onToggleCollapse?: () => void;\n /** Estado abierto/cerrado (aplica a `temporary` y `persistent`). */\n open?: boolean;\n /** Callback de cierre (backdrop o ESC en temporary). */\n onClose?: MuiDrawerProps['onClose'];\n /** Ancho en estado expandido. Default: 260. */\n expandedWidth?: number;\n /** Ancho en estado colapsado (solo iconos). Default: 72. */\n collapsedWidth?: number;\n /** Muestra el botón chevron para toggle collapsed. Default: true si `onToggleCollapse` está definido. */\n showCollapseButton?: boolean;\n /** Contenido del header (por encima de los items). Típicamente logo/brand. */\n header?: ReactNode;\n /**\n * Logo/brand que se muestra junto al botón de toggle.\n * - Expandido: logo a la izquierda, toggle a la derecha en la misma fila.\n * - Colapsado: logo arriba centrado, toggle debajo centrado (stack vertical).\n * Siempre visible (a diferencia de `header`, que se oculta al colapsar).\n */\n logo?: ReactNode;\n /** Contenido del footer (por debajo de los items). Típicamente user profile. */\n footer?: ReactNode;\n /**\n * Nombre del preset de estilo registrado en `theme.styles.Drawer`.\n * - `\"default\"` (o ausente) = estilo built-in del paquete.\n */\n preset?: string;\n /** sx aplicado al Drawer (root). Se mergea después del preset. */\n sx?: SxProps<Theme>;\n /** sx aplicado al Paper interno. */\n paperSx?: SxProps<Theme>;\n className?: string;\n}\n\nexport function Drawer({\n children,\n variant = 'permanent',\n anchor = 'left',\n collapsed = false,\n onToggleCollapse,\n open,\n onClose,\n expandedWidth = 260,\n collapsedWidth = 72,\n showCollapseButton,\n header,\n logo,\n footer,\n preset,\n sx,\n paperSx,\n className,\n}: DrawerProps) {\n const theme = useTheme();\n const presetSx = resolvePreset('Drawer', preset, theme);\n\n // El mini-variant solo tiene sentido en permanent / persistent.\n const supportsCollapsed = variant !== 'temporary';\n const effectiveWidth =\n supportsCollapsed && collapsed ? collapsedWidth : expandedWidth;\n\n const contextValue = useMemo(\n () => ({\n collapsed: supportsCollapsed && collapsed,\n width: effectiveWidth,\n }),\n [supportsCollapsed, collapsed, effectiveWidth],\n );\n\n const rootSx: SxProps<Theme> = [\n buildDrawerSx({ width: effectiveWidth }),\n ...(presetSx ? [presetSx] : []),\n ...(Array.isArray(sx) ? sx : sx ? [sx] : []),\n ];\n\n const shouldShowToggle =\n showCollapseButton ?? (supportsCollapsed && !!onToggleCollapse);\n\n const openProp =\n variant === 'permanent'\n ? true\n : open !== undefined\n ? open\n : false;\n\n return (\n <DrawerContext.Provider value={contextValue}>\n <MuiDrawer\n variant={variant}\n anchor={anchor}\n open={openProp}\n onClose={onClose}\n className={className}\n sx={rootSx}\n PaperProps={{\n sx: paperSx,\n }}\n >\n {(logo || shouldShowToggle) && (\n <Box\n sx={{\n display: 'flex',\n flexDirection: contextValue.collapsed ? 'column' : 'row',\n alignItems: 'center',\n justifyContent: contextValue.collapsed\n ? 'center'\n : logo\n ? 'space-between'\n : 'flex-end',\n gap: contextValue.collapsed ? 0.5 : 0,\n px: contextValue.collapsed ? 1 : 2,\n py: 1,\n minHeight: 64,\n flexShrink: 0,\n }}\n >\n {logo && (\n <Box sx={{ display: 'flex', alignItems: 'center', minWidth: 0 }}>\n {logo}\n </Box>\n )}\n {shouldShowToggle && (\n <IconButton\n size=\"small\"\n onClick={onToggleCollapse}\n aria-label={collapsed ? 'Expandir menú' : 'Colapsar menú'}\n >\n {collapsed ? <ChevronRightIcon /> : <ChevronLeftIcon />}\n </IconButton>\n )}\n </Box>\n )}\n\n {header && !contextValue.collapsed && (\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n px: 2,\n py: 1.5,\n minHeight: 56,\n flexShrink: 0,\n }}\n >\n <Box sx={{ flex: 1, minWidth: 0 }}>{header}</Box>\n </Box>\n )}\n\n <Box\n component=\"nav\"\n sx={{\n flex: 1,\n overflowY: 'auto',\n overflowX: 'hidden',\n py: 1,\n }}\n >\n {children}\n </Box>\n\n {footer && (\n <Box\n sx={{\n flexShrink: 0,\n borderTop: (t) => `1px solid ${t.palette.divider}`,\n p: contextValue.collapsed ? 1 : 1.5,\n display: 'flex',\n justifyContent: contextValue.collapsed\n ? 'center'\n : 'flex-start',\n }}\n >\n {footer}\n </Box>\n )}\n </MuiDrawer>\n </DrawerContext.Provider>\n );\n}\n\nexport default Drawer;\n","import React, { type ReactNode, type MouseEvent } from 'react';\nimport { Box, Tooltip, Typography } from '@mui/material';\nimport type { SxProps, Theme } from '@mui/material/styles';\n\nimport { useDrawerContext } from './DrawerContext';\nimport { buildDrawerItemSx } from './Drawer.sx';\n\nexport interface DrawerItemProps {\n /** Icono del item. Se muestra siempre (expanded y collapsed). */\n icon?: ReactNode;\n /** Texto del item. Se oculta cuando el drawer está colapsado (muestra tooltip). */\n label: ReactNode;\n /** Handler de click. */\n onClick?: (event: MouseEvent<HTMLDivElement>) => void;\n /** Marca el item como activo (destaca color y fondo). */\n active?: boolean;\n /** Marca el item como \"destructivo\" (p.ej. cerrar sesión): color error. */\n danger?: boolean;\n /** Deshabilita click + bajo opacidad. */\n disabled?: boolean;\n /** Contenido adicional a la derecha del label (badge, count, chevron). */\n endAdornment?: ReactNode;\n /** sx override del consumer, se mergea al final. */\n sx?: SxProps<Theme>;\n className?: string;\n}\n\n/**\n * Item de un Drawer de shared-library. Lee el estado `collapsed` del\n * DrawerContext para adaptar layout y mostrar tooltip en modo mini.\n *\n * Uso típico:\n * ```tsx\n * <Drawer collapsed={collapsed} onToggleCollapse={toggle}>\n * <DrawerItem icon={<HomeIcon />} label=\"Inicio\" active />\n * <DrawerItem icon={<UserIcon />} label=\"Perfil\" />\n * </Drawer>\n * ```\n */\nexport function DrawerItem({\n icon,\n label,\n onClick,\n active = false,\n danger = false,\n disabled = false,\n endAdornment,\n sx,\n className,\n}: DrawerItemProps) {\n const { collapsed } = useDrawerContext();\n\n const baseSx = buildDrawerItemSx({ collapsed, active, danger });\n\n const mergedSx: SxProps<Theme> = [\n baseSx,\n disabled && { pointerEvents: 'none', opacity: 0.5 },\n ...(Array.isArray(sx) ? sx : sx ? [sx] : []),\n ].filter(Boolean) as SxProps<Theme>;\n\n const content = (\n <Box\n role=\"button\"\n tabIndex={disabled ? -1 : 0}\n aria-disabled={disabled}\n onClick={disabled ? undefined : onClick}\n onKeyDown={(event) => {\n if (disabled) return;\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n onClick?.(event as unknown as MouseEvent<HTMLDivElement>);\n }\n }}\n className={className}\n sx={mergedSx}\n >\n {icon !== undefined && (\n <Box className=\"drawer-item__icon\" component=\"span\">\n {icon}\n </Box>\n )}\n <Typography\n component=\"span\"\n variant=\"body2\"\n className=\"drawer-item__label\"\n sx={{ fontWeight: active ? 600 : 400 }}\n >\n {label}\n </Typography>\n {!collapsed && endAdornment && (\n <Box component=\"span\" sx={{ flexShrink: 0, ml: 'auto' }}>\n {endAdornment}\n </Box>\n )}\n </Box>\n );\n\n // Cuando está colapsado, envolvemos en tooltip para revelar el label al hover.\n if (collapsed && typeof label === 'string') {\n return (\n <Tooltip title={label} placement=\"right\" arrow>\n {content}\n </Tooltip>\n );\n }\n\n return content;\n}\n\nexport default DrawerItem;\n"],"names":["MuiDrawer"],"mappings":"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"}
@@ -12,3 +12,4 @@ export declare const FullWidthInputDefinition = "\nimport React, { useState } fr
12
12
  export declare const LabelPositionFloatingDefinition = "\nimport React, { useState } from 'react';\nimport { Input } from './Input'; // Ajusta la ruta si es necesario\nimport { Box } from '@mui/material';\n\nexport const LabelPositionExample = () => {\n const [outside, setOutside] = useState('Outside (default)');\n const [floating, setFloating] = useState('Floating');\n return (\n <Box sx={{ display: 'flex', flexDirection: 'column', gap: 3, width: 300 }}>\n <Input\n label=\"Label outside\"\n value={outside}\n onChange={setOutside}\n labelPosition=\"outside\"\n />\n <Input\n label=\"Label floating (MUI cl\u00E1sico)\"\n value={floating}\n onChange={setFloating}\n labelPosition=\"floating\"\n />\n </Box>\n );\n};\n";
13
13
  export declare const CustomBorderRadiusDefinition = "\nimport React, { useState } from 'react';\nimport { Input } from './Input'; // Ajusta la ruta si es necesario\nimport { Box } from '@mui/material';\n\nexport const CustomBorderRadiusExample = () => {\n const [v, setV] = useState('Texto');\n return (\n <Box sx={{ display: 'flex', flexDirection: 'column', gap: 3, width: 300 }}>\n <Input label=\"Sin radius\" value={v} onChange={setV} borderRadius={0} />\n <Input label=\"Radius 4px\" value={v} onChange={setV} borderRadius={4} />\n <Input label=\"Default (10px)\" value={v} onChange={setV} />\n <Input label=\"Pill (24px)\" value={v} onChange={setV} borderRadius={24} />\n </Box>\n );\n};\n";
14
14
  export declare const CustomStylingDefinition = "\nimport React, { useState } from 'react';\nimport { Input } from './Input'; // Ajusta la ruta si es necesario\nimport { Box } from '@mui/material';\n\nexport const CustomStylingExample = () => {\n const [v, setV] = useState('Custom completo');\n return (\n <Box sx={{ width: 300 }}>\n <Input\n label=\"Combinado: bg + borderColor + label color\"\n value={v}\n onChange={setV}\n sx={{\n '& .MuiInputLabel-root': { color: 'primary.main' },\n '& .MuiOutlinedInput-root': { bgcolor: '#fff7e6' },\n '& .MuiOutlinedInput-notchedOutline': {\n borderColor: 'warning.main',\n borderWidth: 2,\n },\n }}\n />\n </Box>\n );\n};\n";
15
+ export declare const MultilineInputDefinition = "\nimport React, { useState } from 'react';\nimport { Input } from './Input';\nimport { Box, Typography } from '@mui/material';\n\nexport const MultilineInputExample = () => {\n const [value, setValue] = useState('Escribe un comentario en varias l\u00EDneas...');\n return (\n <Box sx={{ width: 400 }}>\n <Input\n label=\"Comentario\"\n value={value}\n onChange={(v) => setValue(v.toString())}\n multiline\n minRows={3}\n maxRows={6}\n fullWidth\n />\n <Typography sx={{ mt: 2 }}>Valor actual: {value}</Typography>\n </Box>\n );\n};\n";
@@ -0,0 +1,202 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __defProps = Object.defineProperties;
4
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
5
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
8
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
9
+ var __spreadValues = (a, b) => {
10
+ for (var prop in b || (b = {}))
11
+ if (__hasOwnProp.call(b, prop))
12
+ __defNormalProp(a, prop, b[prop]);
13
+ if (__getOwnPropSymbols)
14
+ for (var prop of __getOwnPropSymbols(b)) {
15
+ if (__propIsEnum.call(b, prop))
16
+ __defNormalProp(a, prop, b[prop]);
17
+ }
18
+ return a;
19
+ };
20
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
21
+ var __objRest = (source, exclude) => {
22
+ var target = {};
23
+ for (var prop in source)
24
+ if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
25
+ target[prop] = source[prop];
26
+ if (source != null && __getOwnPropSymbols)
27
+ for (var prop of __getOwnPropSymbols(source)) {
28
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
29
+ target[prop] = source[prop];
30
+ }
31
+ return target;
32
+ };
33
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
34
+ const jsxRuntime = require("react/jsx-runtime");
35
+ const styles = require("@mui/material/styles");
36
+ const material = require("@mui/material");
37
+ const reactHookForm = require("react-hook-form");
38
+ const resolvePreset = require("../../resolvePreset-CT3kU-K2.cjs");
39
+ const toRadius = (borderRadius) => typeof borderRadius === "number" ? `${borderRadius}px` : borderRadius;
40
+ const FOCUS_TRANSITION = "border-color 200ms cubic-bezier(0.0, 0, 0.2, 1) 0ms, box-shadow 200ms cubic-bezier(0.0, 0, 0.2, 1) 0ms";
41
+ const buildRadioGroupSx = ({
42
+ bordered,
43
+ borderRadius,
44
+ error
45
+ }) => {
46
+ const radius = toRadius(borderRadius);
47
+ if (!bordered) {
48
+ return {
49
+ "& .MuiFormHelperText-root": { marginLeft: 0 }
50
+ };
51
+ }
52
+ return (theme) => ({
53
+ "& .MuiRadioGroup-root": __spreadProps(__spreadValues({
54
+ paddingTop: 1.25,
55
+ paddingBottom: 1.25,
56
+ paddingX: 1.5,
57
+ border: `1px solid ${error ? theme.palette.error.main : theme.palette.divider}`,
58
+ borderRadius: radius,
59
+ transition: FOCUS_TRANSITION
60
+ }, error && {
61
+ boxShadow: `0 0 0 1px ${theme.palette.error.main}`
62
+ }), {
63
+ // Focus del usuario sobre cualquier radio interno.
64
+ "&:focus-within": {
65
+ borderColor: error ? theme.palette.error.main : theme.palette.primary.main,
66
+ boxShadow: `0 0 0 1px ${error ? theme.palette.error.main : theme.palette.primary.main}`
67
+ }
68
+ }),
69
+ "& .MuiFormHelperText-root": {
70
+ marginLeft: 0
71
+ },
72
+ "& .MuiFormLabel-root": {
73
+ marginBottom: 0.5
74
+ }
75
+ });
76
+ };
77
+ const RadioGroup = (props) => {
78
+ const _a = props, {
79
+ options,
80
+ label,
81
+ row = true,
82
+ size = "small",
83
+ disabled = false,
84
+ error = false,
85
+ helperText,
86
+ bordered = true,
87
+ borderRadius = 10,
88
+ defaultValue,
89
+ preset,
90
+ sx
91
+ } = _a, rest = __objRest(_a, [
92
+ "options",
93
+ "label",
94
+ "row",
95
+ "size",
96
+ "disabled",
97
+ "error",
98
+ "helperText",
99
+ "bordered",
100
+ "borderRadius",
101
+ "defaultValue",
102
+ "preset",
103
+ "sx"
104
+ ]);
105
+ const theme = styles.useTheme();
106
+ const presetSx = resolvePreset.resolvePreset("RadioGroup", preset, theme);
107
+ const buildSx = (effectiveError) => [
108
+ buildRadioGroupSx({ bordered, borderRadius, error: effectiveError }),
109
+ ...presetSx ? [presetSx] : [],
110
+ ...Array.isArray(sx) ? sx : [sx]
111
+ ];
112
+ const renderOptions = (currentValue, onChange2, fieldName) => options.map((opt) => {
113
+ var _a2;
114
+ const inputId = (_a2 = opt.id) != null ? _a2 : `${fieldName != null ? fieldName : "radio"}-${opt.value}`;
115
+ return /* @__PURE__ */ jsxRuntime.jsx(
116
+ material.FormControlLabel,
117
+ {
118
+ value: opt.value,
119
+ control: /* @__PURE__ */ jsxRuntime.jsx(
120
+ material.Radio,
121
+ {
122
+ id: inputId,
123
+ size,
124
+ disabled: disabled || opt.disabled
125
+ }
126
+ ),
127
+ label: opt.label,
128
+ checked: currentValue === opt.value,
129
+ disabled: disabled || opt.disabled
130
+ },
131
+ inputId
132
+ );
133
+ });
134
+ if ("control" in props && props.control) {
135
+ const { name: name2, control, validation } = props;
136
+ return /* @__PURE__ */ jsxRuntime.jsx(
137
+ reactHookForm.Controller,
138
+ {
139
+ name: name2,
140
+ control,
141
+ rules: validation,
142
+ defaultValue,
143
+ render: ({ field, fieldState: { error: fieldError } }) => {
144
+ var _a2, _b;
145
+ const finalError = !!fieldError || error;
146
+ const finalHelperText = (_a2 = fieldError == null ? void 0 : fieldError.message) != null ? _a2 : helperText;
147
+ return /* @__PURE__ */ jsxRuntime.jsxs(
148
+ material.FormControl,
149
+ {
150
+ error: finalError,
151
+ disabled,
152
+ sx: buildSx(finalError),
153
+ fullWidth: true,
154
+ children: [
155
+ label && /* @__PURE__ */ jsxRuntime.jsx(material.FormLabel, { children: label }),
156
+ /* @__PURE__ */ jsxRuntime.jsx(
157
+ material.RadioGroup,
158
+ __spreadProps(__spreadValues({}, rest), {
159
+ row,
160
+ name: field.name,
161
+ value: (_b = field.value) != null ? _b : "",
162
+ onBlur: field.onBlur,
163
+ onChange: (_e, value2) => field.onChange(value2),
164
+ children: renderOptions(field.value, field.onChange, field.name)
165
+ })
166
+ ),
167
+ finalHelperText && /* @__PURE__ */ jsxRuntime.jsx(material.FormHelperText, { children: finalHelperText })
168
+ ]
169
+ }
170
+ );
171
+ }
172
+ }
173
+ );
174
+ }
175
+ const { value, onChange, name } = props;
176
+ return /* @__PURE__ */ jsxRuntime.jsxs(
177
+ material.FormControl,
178
+ {
179
+ error,
180
+ disabled,
181
+ sx: buildSx(error),
182
+ fullWidth: true,
183
+ children: [
184
+ label && /* @__PURE__ */ jsxRuntime.jsx(material.FormLabel, { children: label }),
185
+ /* @__PURE__ */ jsxRuntime.jsx(
186
+ material.RadioGroup,
187
+ __spreadProps(__spreadValues({}, rest), {
188
+ row,
189
+ name,
190
+ value: value != null ? value : "",
191
+ onChange: (_e, next) => onChange(next),
192
+ children: renderOptions(value, onChange, name)
193
+ })
194
+ ),
195
+ helperText && /* @__PURE__ */ jsxRuntime.jsx(material.FormHelperText, { children: helperText })
196
+ ]
197
+ }
198
+ );
199
+ };
200
+ exports.RadioGroup = RadioGroup;
201
+ exports.default = RadioGroup;
202
+ //# sourceMappingURL=RadioGroup.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RadioGroup.cjs","sources":["../../../src/components/RadioGroup/RadioGroup.sx.ts","../../../src/components/RadioGroup/RadioGroup.tsx"],"sourcesContent":["import type { SxProps, Theme } from '@mui/material/styles';\n\nexport interface BuildRadioGroupSxOptions {\n bordered: boolean;\n borderRadius: number | string;\n error: boolean;\n}\n\nconst toRadius = (borderRadius: number | string) =>\n typeof borderRadius === 'number' ? `${borderRadius}px` : borderRadius;\n\n/**\n * Transición compartida (matchea el InputGroup).\n */\nconst FOCUS_TRANSITION =\n 'border-color 200ms cubic-bezier(0.0, 0, 0.2, 1) 0ms, ' +\n 'box-shadow 200ms cubic-bezier(0.0, 0, 0.2, 1) 0ms';\n\n/**\n * Builder de sx para RadioGroup. Reproduce el estilo del antiguo\n * `FormRadioGroup` legacy: contenedor con borde + padding vertical.\n *\n * Cuando `bordered=true`, el contenedor gana:\n * - `:focus-within` → borde + shadow primario (mismo patrón que `InputGroup`).\n * - `error=true` → borde + shadow de error (palette.error.main).\n *\n * El shadow es de 1px, así que no hay shift de layout — sólo se intensifica\n * visualmente el borde sin empujar nada alrededor.\n *\n * Si `bordered=false`, devuelve un sx mínimo (sólo helper text reset).\n */\nexport const buildRadioGroupSx = ({\n bordered,\n borderRadius,\n error,\n}: BuildRadioGroupSxOptions): SxProps<Theme> => {\n const radius = toRadius(borderRadius);\n\n if (!bordered) {\n return {\n '& .MuiFormHelperText-root': { marginLeft: 0 },\n };\n }\n\n return (theme) => ({\n '& .MuiRadioGroup-root': {\n paddingTop: 1.25,\n paddingBottom: 1.25,\n paddingX: 1.5,\n border: `1px solid ${\n error ? theme.palette.error.main : theme.palette.divider\n }`,\n borderRadius: radius,\n transition: FOCUS_TRANSITION,\n ...(error && {\n boxShadow: `0 0 0 1px ${theme.palette.error.main}`,\n }),\n // Focus del usuario sobre cualquier radio interno.\n '&:focus-within': {\n borderColor: error\n ? theme.palette.error.main\n : theme.palette.primary.main,\n boxShadow: `0 0 0 1px ${\n error ? theme.palette.error.main : theme.palette.primary.main\n }`,\n },\n },\n '& .MuiFormHelperText-root': {\n marginLeft: 0,\n },\n '& .MuiFormLabel-root': {\n marginBottom: 0.5,\n },\n });\n};\n","import { useTheme } from '@mui/material/styles';\nimport {\n FormControl,\n FormControlLabel,\n FormHelperText,\n FormLabel,\n Radio,\n RadioGroup as MuiRadioGroup,\n type RadioGroupProps as MuiRadioGroupProps,\n type SxProps,\n type Theme,\n} from '@mui/material';\nimport { Controller, type Control, type RegisterOptions } from 'react-hook-form';\n\nimport { buildRadioGroupSx } from './RadioGroup.sx';\nimport { resolvePreset } from '../_shared/resolvePreset';\n\n// ── Tipos de dominio ─────────────────────────────────────────────────────\nexport interface RadioOption {\n /** Valor que se emite cuando se selecciona la opción. */\n value: string;\n /** Texto mostrado al lado del radio. */\n label: string;\n /** Deshabilitar opción individualmente. */\n disabled?: boolean;\n /** ID custom del input (default: prefijo + value). */\n id?: string;\n}\n\nexport type RadioGroupSize = 'small' | 'medium';\n\n// ── Props base (todo lo común entre RHF y controlado) ────────────────────\nexport interface BaseRadioGroupProps\n extends Omit<MuiRadioGroupProps, 'value' | 'onChange' | 'defaultValue'> {\n options: RadioOption[];\n /** Label superior del grupo. */\n label?: string;\n /** Distribución horizontal (default: true — replica el comportamiento legacy). */\n row?: boolean;\n size?: RadioGroupSize;\n disabled?: boolean;\n error?: boolean;\n helperText?: string;\n /** Renderiza un contenedor con borde estilo \"form field\". Default: true. */\n bordered?: boolean;\n /** Border radius del contenedor (cuando bordered). Default: 10. */\n borderRadius?: number | string;\n defaultValue?: string;\n /**\n * Nombre del preset de estilo registrado en `theme.styles.RadioGroup`.\n * - `\"default\"` (o ausente) = estilo built-in del paquete.\n * - Cualquier otro string = mergea el preset encima del estilo built-in.\n */\n preset?: string;\n sx?: SxProps<Theme>;\n}\n\n// ── Variantes discriminadas (RHF vs controlado) ──────────────────────────\nexport interface RHFRadioGroupProps extends BaseRadioGroupProps {\n name: string;\n control: Control<any>;\n validation?: RegisterOptions;\n value?: never;\n onChange?: never;\n}\n\nexport interface ControlledRadioGroupProps extends BaseRadioGroupProps {\n name?: string;\n control?: never;\n validation?: never;\n value: string;\n onChange: (value: string) => void;\n}\n\n// ── API pública final ────────────────────────────────────────────────────\nexport type RadioGroupProps = RHFRadioGroupProps | ControlledRadioGroupProps;\n\nexport const RadioGroup: React.FC<RadioGroupProps> = (props) => {\n const {\n options,\n label,\n row = true,\n size = 'small',\n disabled = false,\n error = false,\n helperText,\n bordered = true,\n borderRadius = 10,\n defaultValue,\n preset,\n sx,\n ...rest\n } = props as ControlledRadioGroupProps & {\n control?: Control<any>;\n validation?: RegisterOptions;\n };\n\n const theme = useTheme();\n const presetSx = resolvePreset('RadioGroup', preset, theme);\n\n // Construye el sx con el estado de error efectivo; se llama por rama\n // (RHF usa el error del Controller, controlado usa el prop `error`).\n const buildSx = (effectiveError: boolean) => [\n buildRadioGroupSx({ bordered, borderRadius, error: effectiveError }),\n ...(presetSx ? [presetSx] : []),\n ...(Array.isArray(sx) ? sx : [sx]),\n ];\n\n const renderOptions = (\n currentValue: string | undefined,\n onChange: (value: string) => void,\n fieldName?: string,\n ) =>\n options.map((opt) => {\n const inputId = opt.id ?? `${fieldName ?? 'radio'}-${opt.value}`;\n return (\n <FormControlLabel\n key={inputId}\n value={opt.value}\n control={\n <Radio\n id={inputId}\n size={size}\n disabled={disabled || opt.disabled}\n />\n }\n label={opt.label}\n checked={currentValue === opt.value}\n disabled={disabled || opt.disabled}\n />\n );\n });\n\n // ── RHF mode ──────────────────────────────────────────────────────────\n if ('control' in props && props.control) {\n const { name, control, validation } = props as RHFRadioGroupProps;\n return (\n <Controller\n name={name}\n control={control}\n rules={validation}\n defaultValue={defaultValue}\n render={({ field, fieldState: { error: fieldError } }) => {\n const finalError = !!fieldError || error;\n const finalHelperText = fieldError?.message ?? helperText;\n return (\n <FormControl\n error={finalError}\n disabled={disabled}\n sx={buildSx(finalError)}\n fullWidth\n >\n {label && <FormLabel>{label}</FormLabel>}\n <MuiRadioGroup\n {...rest}\n row={row}\n name={field.name}\n value={field.value ?? ''}\n onBlur={field.onBlur}\n onChange={(_e, value) => field.onChange(value)}\n >\n {renderOptions(field.value, field.onChange, field.name)}\n </MuiRadioGroup>\n {finalHelperText && <FormHelperText>{finalHelperText}</FormHelperText>}\n </FormControl>\n );\n }}\n />\n );\n }\n\n // ── Controlled mode ───────────────────────────────────────────────────\n const { value, onChange, name } = props as ControlledRadioGroupProps;\n return (\n <FormControl\n error={error}\n disabled={disabled}\n sx={buildSx(error)}\n fullWidth\n >\n {label && <FormLabel>{label}</FormLabel>}\n <MuiRadioGroup\n {...rest}\n row={row}\n name={name}\n value={value ?? ''}\n onChange={(_e, next) => onChange(next)}\n >\n {renderOptions(value, onChange, name)}\n </MuiRadioGroup>\n {helperText && <FormHelperText>{helperText}</FormHelperText>}\n </FormControl>\n );\n};\n\nexport default RadioGroup;\n"],"names":["useTheme","resolvePreset","onChange","_a","jsx","FormControlLabel","Radio","name","Controller","jsxs","FormControl","FormLabel","MuiRadioGroup","value","FormHelperText"],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ import { RadioGroupProps as MuiRadioGroupProps, SxProps, Theme } from '@mui/material';
2
+ import { Control, RegisterOptions } from 'react-hook-form';
3
+ export interface RadioOption {
4
+ /** Valor que se emite cuando se selecciona la opción. */
5
+ value: string;
6
+ /** Texto mostrado al lado del radio. */
7
+ label: string;
8
+ /** Deshabilitar opción individualmente. */
9
+ disabled?: boolean;
10
+ /** ID custom del input (default: prefijo + value). */
11
+ id?: string;
12
+ }
13
+ export type RadioGroupSize = 'small' | 'medium';
14
+ export interface BaseRadioGroupProps extends Omit<MuiRadioGroupProps, 'value' | 'onChange' | 'defaultValue'> {
15
+ options: RadioOption[];
16
+ /** Label superior del grupo. */
17
+ label?: string;
18
+ /** Distribución horizontal (default: true — replica el comportamiento legacy). */
19
+ row?: boolean;
20
+ size?: RadioGroupSize;
21
+ disabled?: boolean;
22
+ error?: boolean;
23
+ helperText?: string;
24
+ /** Renderiza un contenedor con borde estilo "form field". Default: true. */
25
+ bordered?: boolean;
26
+ /** Border radius del contenedor (cuando bordered). Default: 10. */
27
+ borderRadius?: number | string;
28
+ defaultValue?: string;
29
+ /**
30
+ * Nombre del preset de estilo registrado en `theme.styles.RadioGroup`.
31
+ * - `"default"` (o ausente) = estilo built-in del paquete.
32
+ * - Cualquier otro string = mergea el preset encima del estilo built-in.
33
+ */
34
+ preset?: string;
35
+ sx?: SxProps<Theme>;
36
+ }
37
+ export interface RHFRadioGroupProps extends BaseRadioGroupProps {
38
+ name: string;
39
+ control: Control<any>;
40
+ validation?: RegisterOptions;
41
+ value?: never;
42
+ onChange?: never;
43
+ }
44
+ export interface ControlledRadioGroupProps extends BaseRadioGroupProps {
45
+ name?: string;
46
+ control?: never;
47
+ validation?: never;
48
+ value: string;
49
+ onChange: (value: string) => void;
50
+ }
51
+ export type RadioGroupProps = RHFRadioGroupProps | ControlledRadioGroupProps;
52
+ export declare const RadioGroup: React.FC<RadioGroupProps>;
53
+ export default RadioGroup;
@@ -0,0 +1,6 @@
1
+ export declare const BasicRadioGroupDefinition = "\nimport React, { useState } from 'react';\nimport { RadioGroup } from './RadioGroup';\nimport { Box, Typography } from '@mui/material';\n\nconst options = [\n { value: 'a', label: 'Opci\u00F3n A' },\n { value: 'b', label: 'Opci\u00F3n B' },\n { value: 'c', label: 'Opci\u00F3n C' },\n];\n\nexport const BasicRadioGroupExample = () => {\n const [value, setValue] = useState('a');\n return (\n <Box sx={{ width: 360 }}>\n <RadioGroup\n label=\"Selecciona una opci\u00F3n\"\n options={options}\n value={value}\n onChange={setValue}\n />\n <Typography sx={{ mt: 2 }}>Valor actual: {value}</Typography>\n </Box>\n );\n};\n";
2
+ export declare const ColumnRadioGroupDefinition = "\nimport React, { useState } from 'react';\nimport { RadioGroup } from './RadioGroup';\nimport { Box } from '@mui/material';\n\nconst options = [\n { value: 'sm', label: 'Peque\u00F1o' },\n { value: 'md', label: 'Mediano' },\n { value: 'lg', label: 'Grande' },\n];\n\nexport const ColumnRadioGroupExample = () => {\n const [value, setValue] = useState('md');\n return (\n <Box sx={{ width: 360 }}>\n <RadioGroup\n label=\"Tama\u00F1o\"\n options={options}\n value={value}\n onChange={setValue}\n row={false}\n />\n </Box>\n );\n};\n";
3
+ export declare const RadioGroupWithErrorDefinition = "\nimport React, { useState } from 'react';\nimport { RadioGroup } from './RadioGroup';\nimport { Box } from '@mui/material';\n\nconst options = [\n { value: 'yes', label: 'S\u00ED' },\n { value: 'no', label: 'No' },\n];\n\nexport const RadioGroupWithErrorExample = () => {\n const [value, setValue] = useState('');\n const hasError = !value;\n return (\n <Box sx={{ width: 360 }}>\n <RadioGroup\n label=\"\u00BFAceptas los t\u00E9rminos?\"\n options={options}\n value={value}\n onChange={setValue}\n error={hasError}\n helperText={hasError ? 'Este campo es obligatorio' : ''}\n />\n </Box>\n );\n};\n";
4
+ export declare const DisabledRadioGroupDefinition = "\nimport React, { useState } from 'react';\nimport { RadioGroup } from './RadioGroup';\nimport { Box } from '@mui/material';\n\nconst options = [\n { value: 'a', label: 'Opci\u00F3n A' },\n { value: 'b', label: 'Opci\u00F3n B', disabled: true },\n { value: 'c', label: 'Opci\u00F3n C' },\n];\n\nexport const DisabledRadioGroupExample = () => {\n const [value, setValue] = useState('a');\n return (\n <Box sx={{ width: 360 }}>\n {/* Bloqueo total */}\n <RadioGroup\n label=\"Grupo deshabilitado\"\n options={options}\n value={value}\n onChange={setValue}\n disabled\n />\n {/* Bloqueo por opci\u00F3n */}\n <RadioGroup\n label=\"Opci\u00F3n B deshabilitada\"\n options={options}\n value={value}\n onChange={setValue}\n sx={{ mt: 3 }}\n />\n </Box>\n );\n};\n";
5
+ export declare const UnborderedRadioGroupDefinition = "\nimport React, { useState } from 'react';\nimport { RadioGroup } from './RadioGroup';\nimport { Box } from '@mui/material';\n\nconst options = [\n { value: 'a', label: 'Opci\u00F3n A' },\n { value: 'b', label: 'Opci\u00F3n B' },\n];\n\nexport const UnborderedRadioGroupExample = () => {\n const [value, setValue] = useState('a');\n return (\n <Box sx={{ width: 360 }}>\n <RadioGroup\n options={options}\n value={value}\n onChange={setValue}\n bordered={false}\n />\n </Box>\n );\n};\n";
6
+ export declare const RHFRadioGroupDefinition = "\nimport React from 'react';\nimport { useForm } from 'react-hook-form';\nimport { RadioGroup } from './RadioGroup';\nimport { Box, Button, Typography } from '@mui/material';\n\nconst options = [\n { value: 'paypal', label: 'PayPal' },\n { value: 'card', label: 'Tarjeta' },\n { value: 'transfer', label: 'Transferencia' },\n];\n\nexport const RHFRadioGroupExample = () => {\n const { control, handleSubmit, watch } = useForm({\n defaultValues: { paymentMethod: 'card' },\n });\n const value = watch('paymentMethod');\n return (\n <Box sx={{ width: 360 }} component=\"form\" onSubmit={handleSubmit(console.log)}>\n <RadioGroup\n label=\"M\u00E9todo de pago\"\n options={options}\n name=\"paymentMethod\"\n control={control}\n validation={{ required: 'Selecciona un m\u00E9todo' }}\n />\n <Typography sx={{ mt: 2 }}>Valor en el form: {value}</Typography>\n <Button type=\"submit\" sx={{ mt: 1 }}>Enviar</Button>\n </Box>\n );\n};\n";