@soyfri/shared-library 1.5.0-beta.4 → 2.0.0-beta.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 (564) 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/components/ActionMenu/ActionMenu.cjs +107 -0
  12. package/dist/components/ActionMenu/ActionMenu.cjs.map +1 -0
  13. package/dist/components/ActionMenu/ActionMenu.d.ts +60 -0
  14. package/dist/components/ActionMenu/ActionMenu.js +107 -0
  15. package/dist/components/ActionMenu/ActionMenu.js.map +1 -0
  16. package/dist/components/ActionMenu/index.d.ts +2 -0
  17. package/dist/components/ActionMenu.d.ts +6 -0
  18. package/dist/components/AppBar/AppBar.cjs +346 -0
  19. package/dist/components/AppBar/AppBar.cjs.map +1 -0
  20. package/dist/components/AppBar/AppBar.d.ts +55 -0
  21. package/dist/components/AppBar/AppBar.js +346 -0
  22. package/dist/components/AppBar/AppBar.js.map +1 -0
  23. package/dist/components/AppBar/AppBar.sx.d.ts +12 -0
  24. package/dist/components/AppBar/AppBarBrand.d.ts +31 -0
  25. package/dist/components/AppBar/AppBarContext.d.ts +18 -0
  26. package/dist/components/AppBar/AppBarMenuToggle.d.ts +39 -0
  27. package/dist/components/AppBar/AppBarUserMenu.d.ts +65 -0
  28. package/dist/components/AppBar/index.d.ts +12 -0
  29. package/dist/components/AppBar.d.ts +6 -0
  30. package/dist/components/Autocomplete/Autocomplete.cjs +314 -0
  31. package/dist/components/Autocomplete/Autocomplete.cjs.map +1 -0
  32. package/dist/components/Autocomplete/Autocomplete.d.ts +83 -0
  33. package/{components → dist/components}/Autocomplete/Autocomplete.definitions.d.ts +6 -0
  34. package/dist/components/Autocomplete/Autocomplete.helpers.d.ts +18 -0
  35. package/dist/components/Autocomplete/Autocomplete.js +314 -0
  36. package/dist/components/Autocomplete/Autocomplete.js.map +1 -0
  37. package/dist/components/Autocomplete/Autocomplete.sx.d.ts +7 -0
  38. package/dist/components/Autocomplete/Autocomplete.types.d.ts +1 -0
  39. package/dist/components/Autocomplete/_parts/AutocompleteChips.d.ts +19 -0
  40. package/dist/components/Autocomplete/_parts/AutocompleteLoader.d.ts +9 -0
  41. package/dist/components/Autocomplete/_parts/AutocompleteOption.d.ts +19 -0
  42. package/dist/components/Autocomplete/index.d.ts +2 -0
  43. package/dist/components/Autocomplete.d.ts +6 -0
  44. package/dist/components/Avatar/Avatar.cjs +163 -0
  45. package/dist/components/Avatar/Avatar.cjs.map +1 -0
  46. package/dist/components/Avatar/Avatar.d.ts +33 -0
  47. package/dist/components/Avatar/Avatar.definitions.d.ts +11 -0
  48. package/dist/components/Avatar/Avatar.js +163 -0
  49. package/dist/components/Avatar/Avatar.js.map +1 -0
  50. package/dist/components/Card/Card.cjs +187 -0
  51. package/dist/components/Card/Card.cjs.map +1 -0
  52. package/dist/components/Card/Card.d.ts +83 -0
  53. package/dist/components/Card/Card.js +187 -0
  54. package/dist/components/Card/Card.js.map +1 -0
  55. package/dist/components/Card/Card.sx.d.ts +17 -0
  56. package/dist/components/Card/index.d.ts +4 -0
  57. package/dist/components/Card.d.ts +6 -0
  58. package/dist/components/DatePicker/DatePicker.cjs +203 -0
  59. package/dist/components/DatePicker/DatePicker.cjs.map +1 -0
  60. package/dist/components/DatePicker/DatePicker.d.ts +56 -0
  61. package/{components → dist/components}/DatePicker/DatePicker.definitions.d.ts +1 -0
  62. package/dist/components/DatePicker/DatePicker.helpers.d.ts +7 -0
  63. package/dist/components/DatePicker/DatePicker.js +203 -0
  64. package/dist/components/DatePicker/DatePicker.js.map +1 -0
  65. package/dist/components/DatePicker/DatePicker.sx.d.ts +9 -0
  66. package/dist/components/DatePicker/DatePicker.types.d.ts +1 -0
  67. package/dist/components/DatePicker/index.d.ts +2 -0
  68. package/dist/components/DatePicker.d.ts +6 -0
  69. package/dist/components/DateTimePicker/DateTimePicker.cjs +222 -0
  70. package/dist/components/DateTimePicker/DateTimePicker.cjs.map +1 -0
  71. package/dist/components/DateTimePicker/DateTimePicker.d.ts +65 -0
  72. package/{components → dist/components}/DateTimePicker/DateTimePicker.definitions.d.ts +1 -0
  73. package/dist/components/DateTimePicker/DateTimePicker.helpers.d.ts +11 -0
  74. package/dist/components/DateTimePicker/DateTimePicker.js +222 -0
  75. package/dist/components/DateTimePicker/DateTimePicker.js.map +1 -0
  76. package/dist/components/DateTimePicker/DateTimePicker.sx.d.ts +7 -0
  77. package/dist/components/DateTimePicker/DateTimePicker.types.d.ts +1 -0
  78. package/dist/components/DateTimePicker/index.d.ts +2 -0
  79. package/dist/components/DateTimePicker.d.ts +6 -0
  80. package/dist/components/Drawer/Drawer.cjs +271 -0
  81. package/dist/components/Drawer/Drawer.cjs.map +1 -0
  82. package/dist/components/Drawer/Drawer.d.ts +51 -0
  83. package/dist/components/Drawer/Drawer.js +271 -0
  84. package/dist/components/Drawer/Drawer.js.map +1 -0
  85. package/dist/components/Drawer/Drawer.sx.d.ts +23 -0
  86. package/dist/components/Drawer/DrawerContext.d.ts +18 -0
  87. package/dist/components/Drawer/DrawerItem.d.ts +35 -0
  88. package/dist/components/Drawer/index.d.ts +6 -0
  89. package/dist/components/Drawer.d.ts +6 -0
  90. package/{components → dist/components}/Icon/Icon.cjs +44 -3
  91. package/dist/components/Icon/Icon.cjs.map +1 -0
  92. package/dist/components/Icon/Icon.d.ts +54 -0
  93. package/{components → dist/components}/Icon/Icon.js +44 -3
  94. package/dist/components/Icon/Icon.js.map +1 -0
  95. package/dist/components/Input/Input.cjs +175 -0
  96. package/dist/components/Input/Input.cjs.map +1 -0
  97. package/dist/components/Input/Input.d.ts +37 -0
  98. package/{components → dist/components}/Input/Input.definitions.d.ts +5 -2
  99. package/dist/components/Input/Input.helpers.d.ts +14 -0
  100. package/dist/components/Input/Input.js +175 -0
  101. package/dist/components/Input/Input.js.map +1 -0
  102. package/dist/components/Input/Input.sx.d.ts +8 -0
  103. package/dist/components/Input/Input.types.d.ts +1 -0
  104. package/dist/components/Input/index.d.ts +2 -0
  105. package/dist/components/Input.d.ts +6 -0
  106. package/dist/components/InputGroup/InputGroup.cjs +139 -0
  107. package/dist/components/InputGroup/InputGroup.cjs.map +1 -0
  108. package/dist/components/InputGroup/InputGroup.d.ts +42 -0
  109. package/dist/components/InputGroup/InputGroup.definitions.d.ts +6 -0
  110. package/dist/components/InputGroup/InputGroup.js +139 -0
  111. package/dist/components/InputGroup/InputGroup.js.map +1 -0
  112. package/dist/components/Modal/Modal.cjs +319 -0
  113. package/dist/components/Modal/Modal.cjs.map +1 -0
  114. package/dist/components/Modal/Modal.d.ts +65 -0
  115. package/dist/components/Modal/Modal.js +319 -0
  116. package/dist/components/Modal/Modal.js.map +1 -0
  117. package/{components → dist/components}/Modal/ModalFooter.d.ts +9 -1
  118. package/dist/components/Modal/index.d.ts +6 -0
  119. package/dist/components/PageLoader/PageLoader.cjs +61 -0
  120. package/dist/components/PageLoader/PageLoader.cjs.map +1 -0
  121. package/dist/components/PageLoader/PageLoader.d.ts +38 -0
  122. package/dist/components/PageLoader/PageLoader.js +61 -0
  123. package/dist/components/PageLoader/PageLoader.js.map +1 -0
  124. package/dist/components/PageLoader/index.d.ts +2 -0
  125. package/dist/components/PageLoader.d.ts +6 -0
  126. package/dist/components/ScrollTopButton/ScrollTopButton.cjs +79 -0
  127. package/dist/components/ScrollTopButton/ScrollTopButton.cjs.map +1 -0
  128. package/dist/components/ScrollTopButton/ScrollTopButton.d.ts +48 -0
  129. package/dist/components/ScrollTopButton/ScrollTopButton.js +79 -0
  130. package/dist/components/ScrollTopButton/ScrollTopButton.js.map +1 -0
  131. package/dist/components/ScrollTopButton/index.d.ts +4 -0
  132. package/dist/components/ScrollTopButton/scrollToTop.d.ts +29 -0
  133. package/dist/components/ScrollTopButton.d.ts +6 -0
  134. package/dist/components/Select/Select.cjs +448 -0
  135. package/dist/components/Select/Select.cjs.map +1 -0
  136. package/{components → dist/components}/Select/Select.d.ts +33 -13
  137. package/{components → dist/components}/Select/Select.definitions.d.ts +3 -0
  138. package/dist/components/Select/Select.helpers.d.ts +28 -0
  139. package/dist/components/Select/Select.js +448 -0
  140. package/dist/components/Select/Select.js.map +1 -0
  141. package/dist/components/Select/Select.sx.d.ts +7 -0
  142. package/dist/components/Select/Select.types.d.ts +1 -0
  143. package/dist/components/Select/_parts/SelectMenuItem.d.ts +20 -0
  144. package/dist/components/Select/_parts/SelectSearchHeader.d.ts +15 -0
  145. package/dist/components/Select/_parts/SelectValue.d.ts +22 -0
  146. package/dist/components/Select/index.d.ts +2 -0
  147. package/dist/components/Select.d.ts +6 -0
  148. package/{components → dist/components}/Stat/Stat.cjs +1 -1
  149. package/{components → dist/components}/Stat/Stat.js +1 -1
  150. package/{components → dist/components}/Stepper/Stepper.cjs +4 -1
  151. package/dist/components/Stepper/Stepper.cjs.map +1 -0
  152. package/{components → dist/components}/Stepper/Stepper.d.ts +5 -0
  153. package/{components → dist/components}/Stepper/Stepper.js +4 -1
  154. package/dist/components/Stepper/Stepper.js.map +1 -0
  155. package/dist/components/_shared/formField.sx.d.ts +33 -0
  156. package/dist/components/_shared/resolvePreset.d.ts +18 -0
  157. package/dist/formField.sx-CQ1mbk9M.cjs +76 -0
  158. package/dist/formField.sx-CQ1mbk9M.cjs.map +1 -0
  159. package/dist/formField.sx-DfVbMe0V.js +77 -0
  160. package/dist/formField.sx-DfVbMe0V.js.map +1 -0
  161. package/dist/hooks/Wizard/Wizard.cjs +7 -0
  162. package/dist/hooks/Wizard/Wizard.cjs.map +1 -0
  163. package/dist/hooks/Wizard/Wizard.js +7 -0
  164. package/dist/hooks/Wizard/Wizard.js.map +1 -0
  165. package/dist/hooks/Wizard/WizardContext.d.ts +67 -0
  166. package/dist/hooks/Wizard/index.d.ts +3 -0
  167. package/dist/hooks/Wizard/useWizard.d.ts +9 -0
  168. package/dist/hooks/Wizard.d.ts +2 -0
  169. package/dist/index.cjs +100 -0
  170. package/dist/index.cjs.map +1 -0
  171. package/dist/index.d.ts +3 -0
  172. package/dist/index.js +31 -0
  173. package/{index.js.map → dist/index.js.map} +1 -1
  174. package/dist/mui.d.ts +5 -0
  175. package/dist/resolvePreset-B-IB0ehH.js +15 -0
  176. package/dist/resolvePreset-B-IB0ehH.js.map +1 -0
  177. package/dist/resolvePreset-CT3kU-K2.cjs +14 -0
  178. package/dist/resolvePreset-CT3kU-K2.cjs.map +1 -0
  179. package/dist/theme/componentStyles.d.ts +32 -0
  180. package/dist/theme/tokens.d.ts +28 -0
  181. package/dist/useWizard-CWdIxZzX.cjs +94 -0
  182. package/dist/useWizard-CWdIxZzX.cjs.map +1 -0
  183. package/dist/useWizard-CWq--C3o.js +95 -0
  184. package/dist/useWizard-CWq--C3o.js.map +1 -0
  185. package/package.json +43 -134
  186. package/rollup.config.cjs +87 -0
  187. package/src/components/ActionMenu/ActionMenu.stories.tsx +230 -0
  188. package/src/components/ActionMenu/ActionMenu.tsx +174 -0
  189. package/src/components/ActionMenu/index.ts +2 -0
  190. package/src/components/AppBar/AppBar.stories.tsx +272 -0
  191. package/src/components/AppBar/AppBar.sx.ts +32 -0
  192. package/src/components/AppBar/AppBar.tsx +123 -0
  193. package/src/components/AppBar/AppBarBrand.tsx +120 -0
  194. package/src/components/AppBar/AppBarContext.ts +25 -0
  195. package/src/components/AppBar/AppBarMenuToggle.tsx +90 -0
  196. package/src/components/AppBar/AppBarUserMenu.tsx +217 -0
  197. package/src/components/AppBar/index.ts +25 -0
  198. package/src/components/Autocomplete/Autocomplete.definitions.ts +477 -0
  199. package/src/components/Autocomplete/Autocomplete.helpers.ts +60 -0
  200. package/src/components/Autocomplete/Autocomplete.stories.tsx +748 -0
  201. package/src/components/Autocomplete/Autocomplete.sx.ts +30 -0
  202. package/src/components/Autocomplete/Autocomplete.tsx +361 -0
  203. package/src/components/Autocomplete/Autocomplete.types.ts +13 -0
  204. package/src/components/Autocomplete/_parts/AutocompleteChips.tsx +55 -0
  205. package/src/components/Autocomplete/_parts/AutocompleteLoader.tsx +17 -0
  206. package/src/components/Autocomplete/_parts/AutocompleteOption.tsx +31 -0
  207. package/src/components/Autocomplete/index.ts +12 -0
  208. package/src/components/Avatar/Avatar.definitions.ts +162 -0
  209. package/src/components/Avatar/Avatar.stories.tsx +258 -0
  210. package/src/components/Avatar/Avatar.tsx +206 -0
  211. package/src/components/Avatar/index.ts +1 -0
  212. package/src/components/Button/Button.definition.ts +97 -0
  213. package/src/components/Button/Button.stories.tsx +285 -0
  214. package/src/components/Button/Button.tsx +67 -0
  215. package/src/components/Button/index.ts +1 -0
  216. package/src/components/Card/Card.definition.ts +5 -0
  217. package/src/components/Card/Card.stories.tsx +221 -0
  218. package/src/components/Card/Card.sx.ts +104 -0
  219. package/src/components/Card/Card.tsx +200 -0
  220. package/src/components/Card/index.ts +9 -0
  221. package/src/components/Chip/Chip.definitions.ts +167 -0
  222. package/src/components/Chip/Chip.stories.tsx +265 -0
  223. package/src/components/Chip/Chip.tsx +61 -0
  224. package/src/components/Chip/index.ts +1 -0
  225. package/src/components/Column/Column.tsx +29 -0
  226. package/src/components/Column/index.ts +1 -0
  227. package/src/components/DatePicker/DatePicker.definitions.ts +228 -0
  228. package/src/components/DatePicker/DatePicker.helpers.ts +24 -0
  229. package/src/components/DatePicker/DatePicker.stories.tsx +309 -0
  230. package/src/components/DatePicker/DatePicker.sx.ts +33 -0
  231. package/src/components/DatePicker/DatePicker.tsx +189 -0
  232. package/src/components/DatePicker/DatePicker.types.ts +10 -0
  233. package/src/components/DatePicker/index.ts +9 -0
  234. package/src/components/DateRangePicker/DateRangePicker.definitions.ts +191 -0
  235. package/src/components/DateRangePicker/DateRangePicker.stories.tsx +252 -0
  236. package/src/components/DateRangePicker/DateRangePicker.tsx +56 -0
  237. package/src/components/DateRangePicker/index.ts +1 -0
  238. package/src/components/DateTimePicker/DateTimePicker.definitions.ts +256 -0
  239. package/src/components/DateTimePicker/DateTimePicker.helpers.ts +38 -0
  240. package/src/components/DateTimePicker/DateTimePicker.stories.tsx +418 -0
  241. package/src/components/DateTimePicker/DateTimePicker.sx.ts +30 -0
  242. package/src/components/DateTimePicker/DateTimePicker.tsx +225 -0
  243. package/src/components/DateTimePicker/DateTimePicker.types.ts +10 -0
  244. package/src/components/DateTimePicker/index.ts +9 -0
  245. package/src/components/Drawer/Drawer.stories.tsx +270 -0
  246. package/src/components/Drawer/Drawer.sx.ts +106 -0
  247. package/src/components/Drawer/Drawer.tsx +214 -0
  248. package/src/components/Drawer/DrawerContext.ts +26 -0
  249. package/src/components/Drawer/DrawerItem.tsx +110 -0
  250. package/src/components/Drawer/index.ts +10 -0
  251. package/src/components/Flyout/Flyout.stories.tsx +282 -0
  252. package/src/components/Flyout/Flyout.tsx +122 -0
  253. package/src/components/Flyout/index.ts +1 -0
  254. package/src/components/Gallery/Gallery.definition.tsx +37 -0
  255. package/src/components/Gallery/Gallery.stories.tsx +82 -0
  256. package/src/components/Gallery/Gallery.tsx +118 -0
  257. package/src/components/Gallery/GalleryLightbox.tsx +170 -0
  258. package/src/components/Gallery/GalleryMain.tsx +84 -0
  259. package/src/components/Gallery/GalleryThumbnails.tsx +106 -0
  260. package/src/components/Gallery/index.ts +1 -0
  261. package/src/components/Icon/Icon.stories.tsx +121 -0
  262. package/src/components/Icon/Icon.tsx +175 -0
  263. package/src/components/Icon/index.ts +2 -0
  264. package/src/components/Input/Input.definitions.ts +324 -0
  265. package/src/components/Input/Input.helpers.ts +49 -0
  266. package/src/components/Input/Input.stories.tsx +499 -0
  267. package/src/components/Input/Input.sx.ts +42 -0
  268. package/src/components/Input/Input.tsx +141 -0
  269. package/src/components/Input/Input.types.ts +10 -0
  270. package/src/components/Input/index.ts +9 -0
  271. package/src/components/InputGroup/InputGroup.definitions.ts +158 -0
  272. package/src/components/InputGroup/InputGroup.stories.tsx +267 -0
  273. package/src/components/InputGroup/InputGroup.tsx +179 -0
  274. package/src/components/InputGroup/index.ts +1 -0
  275. package/src/components/MenuButton/MenuButton.stories.tsx +197 -0
  276. package/src/components/MenuButton/MenuButton.tsx +100 -0
  277. package/src/components/MenuButton/index.ts +1 -0
  278. package/src/components/Modal/Modal.stories.tsx +721 -0
  279. package/src/components/Modal/Modal.tsx +355 -0
  280. package/src/components/Modal/ModalBody.tsx +16 -0
  281. package/src/components/Modal/ModalFooter.tsx +71 -0
  282. package/src/components/Modal/ModalHeader.tsx +18 -0
  283. package/src/components/Modal/index.ts +6 -0
  284. package/src/components/PageLoader/PageLoader.stories.tsx +217 -0
  285. package/src/components/PageLoader/PageLoader.tsx +96 -0
  286. package/src/components/PageLoader/index.ts +2 -0
  287. package/src/components/ScrollTopButton/ScrollTopButton.stories.tsx +158 -0
  288. package/src/components/ScrollTopButton/ScrollTopButton.tsx +135 -0
  289. package/src/components/ScrollTopButton/index.ts +8 -0
  290. package/src/components/ScrollTopButton/scrollToTop.ts +37 -0
  291. package/src/components/Select/Select.definitions.ts +602 -0
  292. package/src/components/Select/Select.helpers.ts +71 -0
  293. package/src/components/Select/Select.stories.tsx +687 -0
  294. package/src/components/Select/Select.sx.ts +14 -0
  295. package/src/components/Select/Select.tsx +429 -0
  296. package/src/components/Select/Select.types.ts +15 -0
  297. package/src/components/Select/_parts/SelectMenuItem.tsx +40 -0
  298. package/src/components/Select/_parts/SelectSearchHeader.tsx +51 -0
  299. package/src/components/Select/_parts/SelectValue.tsx +96 -0
  300. package/src/components/Select/index.ts +14 -0
  301. package/src/components/Stat/Stat.stories.tsx +85 -0
  302. package/src/components/Stat/Stat.tsx +117 -0
  303. package/src/components/Stat/index.ts +2 -0
  304. package/src/components/StatusMessage/StatusMessage.stories.tsx +130 -0
  305. package/src/components/StatusMessage/StatusMessage.tsx +162 -0
  306. package/src/components/StatusMessage/index.ts +2 -0
  307. package/src/components/Stepper/Step.tsx +21 -0
  308. package/src/components/Stepper/Stepper.definition.ts +75 -0
  309. package/src/components/Stepper/Stepper.stories.tsx +122 -0
  310. package/src/components/Stepper/Stepper.tsx +75 -0
  311. package/src/components/Stepper/index.ts +2 -0
  312. package/src/components/Table/EmptyTable.png +0 -0
  313. package/src/components/Table/Table.definition.ts +580 -0
  314. package/src/components/Table/Table.stories.tsx +853 -0
  315. package/src/components/Table/Table.tsx +495 -0
  316. package/src/components/Table/data.ts +134 -0
  317. package/src/components/Table/exportsUtils.ts +195 -0
  318. package/src/components/Table/index.ts +3 -0
  319. package/src/components/Table/types.ts +34 -0
  320. package/src/components/Tabs/Tab.definition.ts +53 -0
  321. package/src/components/Tabs/Tab.tsx +19 -0
  322. package/src/components/Tabs/Tabs.stories.tsx +118 -0
  323. package/src/components/Tabs/Tabs.tsx +99 -0
  324. package/src/components/Tabs/_tabUtils.tsx +4 -0
  325. package/src/components/Tabs/index.ts +2 -0
  326. package/src/components/Timeline/Timeline.definition.ts +43 -0
  327. package/src/components/Timeline/Timeline.stories.tsx +108 -0
  328. package/src/components/Timeline/Timeline.tsx +49 -0
  329. package/src/components/Timeline/TimelineItem.tsx +31 -0
  330. package/src/components/Timeline/index.ts +2 -0
  331. package/src/components/Tooltip/Tooltip.stories.tsx +129 -0
  332. package/src/components/Tooltip/Tooltip.tsx +58 -0
  333. package/src/components/Tooltip/index.ts +1 -0
  334. package/src/components/_shared/formField.sx.ts +118 -0
  335. package/src/components/_shared/resolvePreset.ts +35 -0
  336. package/src/hooks/ClipBoard/ClipBoard.stories.tsx +168 -0
  337. package/src/hooks/ClipBoard/ClipBoard.tsx +131 -0
  338. package/src/hooks/ClipBoard/ClipboardUnifiedDemo.tsx +111 -0
  339. package/src/hooks/ClipBoard/index.ts +1 -0
  340. package/src/hooks/Wizard/Wizard.stories.tsx +301 -0
  341. package/src/hooks/Wizard/WizardContext.tsx +166 -0
  342. package/src/hooks/Wizard/index.ts +6 -0
  343. package/src/hooks/Wizard/useWizard.ts +13 -0
  344. package/src/index.ts +17 -0
  345. package/src/mui.ts +44 -0
  346. package/src/styles.css +3 -0
  347. package/src/theme/componentStyles.ts +47 -0
  348. package/src/theme/tokens.ts +43 -0
  349. package/tailwind.config.js +10 -0
  350. package/tsconfig.json +48 -0
  351. package/tsup.config.js +41 -0
  352. package/vite.config.js +132 -0
  353. package/vitest.config.ts +35 -0
  354. package/DatePicker-BSNboVhN.js +0 -201
  355. package/DatePicker-BSNboVhN.js.map +0 -1
  356. package/DatePicker-BoqxWAhj.cjs +0 -200
  357. package/DatePicker-BoqxWAhj.cjs.map +0 -1
  358. package/Input-DFHs7cJ_.js +0 -171
  359. package/Input-DFHs7cJ_.js.map +0 -1
  360. package/Input-c8MwNNPg.cjs +0 -170
  361. package/Input-c8MwNNPg.cjs.map +0 -1
  362. package/Select-BO2N56sm.cjs +0 -411
  363. package/Select-BO2N56sm.cjs.map +0 -1
  364. package/Select-BcLkyHSE.js +0 -412
  365. package/Select-BcLkyHSE.js.map +0 -1
  366. package/components/Autocomplete/Autocomplete.cjs +0 -132
  367. package/components/Autocomplete/Autocomplete.cjs.map +0 -1
  368. package/components/Autocomplete/Autocomplete.d.ts +0 -28
  369. package/components/Autocomplete/Autocomplete.js +0 -132
  370. package/components/Autocomplete/Autocomplete.js.map +0 -1
  371. package/components/Autocomplete/index.d.ts +0 -1
  372. package/components/Autocomplete.d.ts +0 -2
  373. package/components/Avatar/Avatar.cjs +0 -126
  374. package/components/Avatar/Avatar.cjs.map +0 -1
  375. package/components/Avatar/Avatar.d.ts +0 -19
  376. package/components/Avatar/Avatar.js +0 -126
  377. package/components/Avatar/Avatar.js.map +0 -1
  378. package/components/Card/Card.cjs +0 -28
  379. package/components/Card/Card.cjs.map +0 -1
  380. package/components/Card/Card.d.ts +0 -13
  381. package/components/Card/Card.js +0 -28
  382. package/components/Card/Card.js.map +0 -1
  383. package/components/Card/index.d.ts +0 -1
  384. package/components/Card.d.ts +0 -2
  385. package/components/DatePicker/DatePicker.cjs +0 -5
  386. package/components/DatePicker/DatePicker.cjs.map +0 -1
  387. package/components/DatePicker/DatePicker.d.ts +0 -18
  388. package/components/DatePicker/DatePicker.js +0 -5
  389. package/components/DatePicker/DatePicker.js.map +0 -1
  390. package/components/DatePicker/index.d.ts +0 -1
  391. package/components/DatePicker.d.ts +0 -2
  392. package/components/DateTimePicker/DateTimePicker.cjs +0 -208
  393. package/components/DateTimePicker/DateTimePicker.cjs.map +0 -1
  394. package/components/DateTimePicker/DateTimePicker.d.ts +0 -28
  395. package/components/DateTimePicker/DateTimePicker.js +0 -208
  396. package/components/DateTimePicker/DateTimePicker.js.map +0 -1
  397. package/components/DateTimePicker/index.d.ts +0 -1
  398. package/components/DateTimePicker.d.ts +0 -2
  399. package/components/Icon/Icon.cjs.map +0 -1
  400. package/components/Icon/Icon.d.ts +0 -21
  401. package/components/Icon/Icon.js.map +0 -1
  402. package/components/Input/Input.cjs +0 -5
  403. package/components/Input/Input.cjs.map +0 -1
  404. package/components/Input/Input.d.ts +0 -32
  405. package/components/Input/Input.js +0 -5
  406. package/components/Input/Input.js.map +0 -1
  407. package/components/Input/index.d.ts +0 -1
  408. package/components/Input.d.ts +0 -2
  409. package/components/InputGroup/InputGroup.cjs +0 -126
  410. package/components/InputGroup/InputGroup.cjs.map +0 -1
  411. package/components/InputGroup/InputGroup.d.ts +0 -6
  412. package/components/InputGroup/InputGroup.js +0 -126
  413. package/components/InputGroup/InputGroup.js.map +0 -1
  414. package/components/Modal/Modal.cjs +0 -209
  415. package/components/Modal/Modal.cjs.map +0 -1
  416. package/components/Modal/Modal.d.ts +0 -29
  417. package/components/Modal/Modal.js +0 -209
  418. package/components/Modal/Modal.js.map +0 -1
  419. package/components/Modal/index.d.ts +0 -1
  420. package/components/Select/Select.cjs +0 -6
  421. package/components/Select/Select.cjs.map +0 -1
  422. package/components/Select/Select.js +0 -6
  423. package/components/Select/Select.js.map +0 -1
  424. package/components/Select/index.d.ts +0 -1
  425. package/components/Select.d.ts +0 -2
  426. package/components/Stepper/Stepper.cjs.map +0 -1
  427. package/components/Stepper/Stepper.js.map +0 -1
  428. package/index.cjs +0 -2
  429. package/index.cjs.map +0 -1
  430. package/index.d.ts +0 -0
  431. package/index.js +0 -2
  432. /package/{README.md → Readme.md} +0 -0
  433. /package/{Button-C17mExpd.cjs → dist/Button-C17mExpd.cjs} +0 -0
  434. /package/{Button-C17mExpd.cjs.map → dist/Button-C17mExpd.cjs.map} +0 -0
  435. /package/{Button-UkkP-bNw.js → dist/Button-UkkP-bNw.js} +0 -0
  436. /package/{Button-UkkP-bNw.js.map → dist/Button-UkkP-bNw.js.map} +0 -0
  437. /package/{components → dist/components}/Avatar/index.d.ts +0 -0
  438. /package/{components → dist/components}/Avatar.d.ts +0 -0
  439. /package/{components → dist/components}/Button/Button.cjs +0 -0
  440. /package/{components → dist/components}/Button/Button.cjs.map +0 -0
  441. /package/{components → dist/components}/Button/Button.d.ts +0 -0
  442. /package/{components → dist/components}/Button/Button.definition.d.ts +0 -0
  443. /package/{components → dist/components}/Button/Button.js +0 -0
  444. /package/{components → dist/components}/Button/Button.js.map +0 -0
  445. /package/{components → dist/components}/Button/index.d.ts +0 -0
  446. /package/{components → dist/components}/Button.d.ts +0 -0
  447. /package/{components → dist/components}/Card/Card.definition.d.ts +0 -0
  448. /package/{components → dist/components}/Chip/Chip.cjs +0 -0
  449. /package/{components → dist/components}/Chip/Chip.cjs.map +0 -0
  450. /package/{components → dist/components}/Chip/Chip.d.ts +0 -0
  451. /package/{components → dist/components}/Chip/Chip.definitions.d.ts +0 -0
  452. /package/{components → dist/components}/Chip/Chip.js +0 -0
  453. /package/{components → dist/components}/Chip/Chip.js.map +0 -0
  454. /package/{components → dist/components}/Chip/index.d.ts +0 -0
  455. /package/{components → dist/components}/Chip.d.ts +0 -0
  456. /package/{components → dist/components}/Column/Column.cjs +0 -0
  457. /package/{components → dist/components}/Column/Column.cjs.map +0 -0
  458. /package/{components → dist/components}/Column/Column.d.ts +0 -0
  459. /package/{components → dist/components}/Column/Column.js +0 -0
  460. /package/{components → dist/components}/Column/Column.js.map +0 -0
  461. /package/{components → dist/components}/Column/index.d.ts +0 -0
  462. /package/{components → dist/components}/Column.d.ts +0 -0
  463. /package/{components → dist/components}/DateRangePicker/DateRangePicker.cjs +0 -0
  464. /package/{components → dist/components}/DateRangePicker/DateRangePicker.cjs.map +0 -0
  465. /package/{components → dist/components}/DateRangePicker/DateRangePicker.d.ts +0 -0
  466. /package/{components → dist/components}/DateRangePicker/DateRangePicker.definitions.d.ts +0 -0
  467. /package/{components → dist/components}/DateRangePicker/DateRangePicker.js +0 -0
  468. /package/{components → dist/components}/DateRangePicker/DateRangePicker.js.map +0 -0
  469. /package/{components → dist/components}/DateRangePicker/index.d.ts +0 -0
  470. /package/{components → dist/components}/DateRangePicker.d.ts +0 -0
  471. /package/{components → dist/components}/Flyout/Flyout.cjs +0 -0
  472. /package/{components → dist/components}/Flyout/Flyout.cjs.map +0 -0
  473. /package/{components → dist/components}/Flyout/Flyout.d.ts +0 -0
  474. /package/{components → dist/components}/Flyout/Flyout.js +0 -0
  475. /package/{components → dist/components}/Flyout/Flyout.js.map +0 -0
  476. /package/{components → dist/components}/Flyout/index.d.ts +0 -0
  477. /package/{components → dist/components}/Flyout.d.ts +0 -0
  478. /package/{components → dist/components}/Gallery/Gallery.cjs +0 -0
  479. /package/{components → dist/components}/Gallery/Gallery.cjs.map +0 -0
  480. /package/{components → dist/components}/Gallery/Gallery.d.ts +0 -0
  481. /package/{components → dist/components}/Gallery/Gallery.definition.d.ts +0 -0
  482. /package/{components → dist/components}/Gallery/Gallery.js +0 -0
  483. /package/{components → dist/components}/Gallery/Gallery.js.map +0 -0
  484. /package/{components → dist/components}/Gallery/GalleryLightbox.d.ts +0 -0
  485. /package/{components → dist/components}/Gallery/GalleryMain.d.ts +0 -0
  486. /package/{components → dist/components}/Gallery/GalleryThumbnails.d.ts +0 -0
  487. /package/{components → dist/components}/Gallery/index.d.ts +0 -0
  488. /package/{components → dist/components}/Gallery.d.ts +0 -0
  489. /package/{components → dist/components}/Icon/index.d.ts +0 -0
  490. /package/{components → dist/components}/Icon.d.ts +0 -0
  491. /package/{components → dist/components}/InputGroup/index.d.ts +0 -0
  492. /package/{components → dist/components}/InputGroup.d.ts +0 -0
  493. /package/{components → dist/components}/MenuButton/MenuButton.cjs +0 -0
  494. /package/{components → dist/components}/MenuButton/MenuButton.cjs.map +0 -0
  495. /package/{components → dist/components}/MenuButton/MenuButton.d.ts +0 -0
  496. /package/{components → dist/components}/MenuButton/MenuButton.js +0 -0
  497. /package/{components → dist/components}/MenuButton/MenuButton.js.map +0 -0
  498. /package/{components → dist/components}/MenuButton/index.d.ts +0 -0
  499. /package/{components → dist/components}/MenuButton.d.ts +0 -0
  500. /package/{components → dist/components}/Modal/ModalBody.d.ts +0 -0
  501. /package/{components → dist/components}/Modal/ModalHeader.d.ts +0 -0
  502. /package/{components → dist/components}/Modal.d.ts +0 -0
  503. /package/{components → dist/components}/Stat/Stat.cjs.map +0 -0
  504. /package/{components → dist/components}/Stat/Stat.d.ts +0 -0
  505. /package/{components → dist/components}/Stat/Stat.js.map +0 -0
  506. /package/{components → dist/components}/Stat/index.d.ts +0 -0
  507. /package/{components → dist/components}/Stat.d.ts +0 -0
  508. /package/{components → dist/components}/StatusMessage/StatusMessage.cjs +0 -0
  509. /package/{components → dist/components}/StatusMessage/StatusMessage.cjs.map +0 -0
  510. /package/{components → dist/components}/StatusMessage/StatusMessage.d.ts +0 -0
  511. /package/{components → dist/components}/StatusMessage/StatusMessage.js +0 -0
  512. /package/{components → dist/components}/StatusMessage/StatusMessage.js.map +0 -0
  513. /package/{components → dist/components}/StatusMessage/index.d.ts +0 -0
  514. /package/{components → dist/components}/StatusMessage.d.ts +0 -0
  515. /package/{components → dist/components}/Stepper/Step.d.ts +0 -0
  516. /package/{components → dist/components}/Stepper/Stepper.definition.d.ts +0 -0
  517. /package/{components → dist/components}/Stepper/index.d.ts +0 -0
  518. /package/{components → dist/components}/Stepper.d.ts +0 -0
  519. /package/{components → dist/components}/Table/Table.cjs +0 -0
  520. /package/{components → dist/components}/Table/Table.cjs.map +0 -0
  521. /package/{components → dist/components}/Table/Table.d.ts +0 -0
  522. /package/{components → dist/components}/Table/Table.definition.d.ts +0 -0
  523. /package/{components → dist/components}/Table/Table.js +0 -0
  524. /package/{components → dist/components}/Table/Table.js.map +0 -0
  525. /package/{components → dist/components}/Table/data.d.ts +0 -0
  526. /package/{components → dist/components}/Table/exportsUtils.d.ts +0 -0
  527. /package/{components → dist/components}/Table/index.d.ts +0 -0
  528. /package/{components → dist/components}/Table/types.d.ts +0 -0
  529. /package/{components → dist/components}/Table.d.ts +0 -0
  530. /package/{components → dist/components}/Tabs/Tab.d.ts +0 -0
  531. /package/{components → dist/components}/Tabs/Tab.definition.d.ts +0 -0
  532. /package/{components → dist/components}/Tabs/Tabs.cjs +0 -0
  533. /package/{components → dist/components}/Tabs/Tabs.cjs.map +0 -0
  534. /package/{components → dist/components}/Tabs/Tabs.d.ts +0 -0
  535. /package/{components → dist/components}/Tabs/Tabs.js +0 -0
  536. /package/{components → dist/components}/Tabs/Tabs.js.map +0 -0
  537. /package/{components → dist/components}/Tabs/_tabUtils.d.ts +0 -0
  538. /package/{components → dist/components}/Tabs/index.d.ts +0 -0
  539. /package/{components → dist/components}/Tabs.d.ts +0 -0
  540. /package/{components → dist/components}/Timeline/Timeline.cjs +0 -0
  541. /package/{components → dist/components}/Timeline/Timeline.cjs.map +0 -0
  542. /package/{components → dist/components}/Timeline/Timeline.d.ts +0 -0
  543. /package/{components → dist/components}/Timeline/Timeline.definition.d.ts +0 -0
  544. /package/{components → dist/components}/Timeline/Timeline.js +0 -0
  545. /package/{components → dist/components}/Timeline/Timeline.js.map +0 -0
  546. /package/{components → dist/components}/Timeline/TimelineItem.d.ts +0 -0
  547. /package/{components → dist/components}/Timeline/index.d.ts +0 -0
  548. /package/{components → dist/components}/Timeline.d.ts +0 -0
  549. /package/{components → dist/components}/Tooltip/Tooltip.cjs +0 -0
  550. /package/{components → dist/components}/Tooltip/Tooltip.cjs.map +0 -0
  551. /package/{components → dist/components}/Tooltip/Tooltip.d.ts +0 -0
  552. /package/{components → dist/components}/Tooltip/Tooltip.js +0 -0
  553. /package/{components → dist/components}/Tooltip/Tooltip.js.map +0 -0
  554. /package/{components → dist/components}/Tooltip/index.d.ts +0 -0
  555. /package/{components → dist/components}/Tooltip.d.ts +0 -0
  556. /package/{hooks → dist/hooks}/ClipBoard/ClipBoard.cjs +0 -0
  557. /package/{hooks → dist/hooks}/ClipBoard/ClipBoard.cjs.map +0 -0
  558. /package/{hooks → dist/hooks}/ClipBoard/ClipBoard.d.ts +0 -0
  559. /package/{hooks → dist/hooks}/ClipBoard/ClipBoard.js +0 -0
  560. /package/{hooks → dist/hooks}/ClipBoard/ClipBoard.js.map +0 -0
  561. /package/{hooks → dist/hooks}/ClipBoard/ClipboardUnifiedDemo.d.ts +0 -0
  562. /package/{hooks → dist/hooks}/ClipBoard/index.d.ts +0 -0
  563. /package/{hooks → dist/hooks}/ClipBoard.d.ts +0 -0
  564. /package/{index.css → dist/styles.css} +0 -0
@@ -0,0 +1,11 @@
1
+ export declare const DefaultAvatarDefinition = "\nimport { Avatar } from './Avatar';\n\nexport const DefaultAvatarExample = () => (\n <Avatar\n items={[\n { text: 'User One', imageUrl: 'https://i.pravatar.cc/150?img=1' },\n { text: 'User Two', imageUrl: 'https://i.pravatar.cc/150?img=2' },\n ]}\n />\n);\n";
2
+ export declare const WithTypeAndTextDefinition = "\nimport { Avatar } from './Avatar';\n\nexport const WithTypeAndTextExample = () => (\n <Avatar\n type=\"Owner\"\n items={[{ text: 'Maria', imageUrl: 'https://i.pravatar.cc/150?img=5' }]}\n showText\n />\n);\n";
3
+ export declare const WithBadgesAndTooltipDefinition = "\nimport { Avatar } from './Avatar';\n\nexport const WithBadgesAndTooltipExample = () => (\n <Avatar\n showTooltip\n items={[\n { text: 'John D.', badge: 'JD', backgroundColor: '#EF5350', color: '#fff' },\n { text: 'Alice B.', badge: 'AB', backgroundColor: '#AB47BC', color: '#fff' },\n ]}\n />\n);\n";
4
+ export declare const SizeSmallDefinition = "\nimport { Avatar } from './Avatar';\n\nexport const SizeSmallExample = () => (\n <Avatar\n size=\"sm\"\n items={[\n { text: 'User One', imageUrl: 'https://i.pravatar.cc/150?img=11' },\n { text: 'User Two', imageUrl: 'https://i.pravatar.cc/150?img=12' },\n { text: 'User Three', imageUrl: 'https://i.pravatar.cc/150?img=13' },\n ]}\n />\n);\n";
5
+ export declare const SizeMediumDefinition = "\nimport { Avatar } from './Avatar';\n\nexport const SizeMediumExample = () => (\n <Avatar\n size=\"md\"\n items={[\n { text: 'User One', imageUrl: 'https://i.pravatar.cc/150?img=21' },\n { text: 'User Two', imageUrl: 'https://i.pravatar.cc/150?img=22' },\n { text: 'User Three', imageUrl: 'https://i.pravatar.cc/150?img=23' },\n ]}\n />\n);\n";
6
+ export declare const SizeLargeDefinition = "\nimport { Avatar } from './Avatar';\n\nexport const SizeLargeExample = () => (\n <Avatar\n size=\"lg\"\n items={[\n { text: 'User One', imageUrl: 'https://i.pravatar.cc/150?img=31' },\n { text: 'User Two', imageUrl: 'https://i.pravatar.cc/150?img=32' },\n ]}\n />\n);\n";
7
+ export declare const SizeExtraLargeDefinition = "\nimport { Avatar } from './Avatar';\n\nexport const SizeExtraLargeExample = () => (\n <Avatar\n size=\"xl\"\n items={[{ text: 'Maria', imageUrl: 'https://i.pravatar.cc/150?img=5' }]}\n showText={false}\n />\n);\n";
8
+ export declare const NumericSizeDefinition = "\nimport { Avatar } from './Avatar';\n\nexport const NumericSizeExample = () => (\n <Avatar\n size={72}\n items={[\n { text: 'User One', imageUrl: 'https://i.pravatar.cc/150?img=41' },\n { text: 'User Two', imageUrl: 'https://i.pravatar.cc/150?img=42' },\n ]}\n showText={false}\n />\n);\n";
9
+ export declare const FallbackIconDefinition = "\nimport { Avatar } from './Avatar';\n\nexport const FallbackIconExample = () => (\n <Avatar\n items={[\n { text: 'Without image' },\n { text: 'Broken image', imageUrl: 'https://example.invalid/broken.png' },\n ]}\n showTooltip\n />\n);\n";
10
+ export declare const DisplayedAvatarsLimitDefinition = "\nimport { Avatar } from './Avatar';\n\nexport const DisplayedAvatarsLimitExample = () => (\n <Avatar\n displayedAvatars={3}\n items={[\n { text: 'User 1', imageUrl: 'https://i.pravatar.cc/150?img=51' },\n { text: 'User 2', imageUrl: 'https://i.pravatar.cc/150?img=52' },\n { text: 'User 3', imageUrl: 'https://i.pravatar.cc/150?img=53' },\n { text: 'User 4', imageUrl: 'https://i.pravatar.cc/150?img=54' },\n { text: 'User 5', imageUrl: 'https://i.pravatar.cc/150?img=55' },\n ]}\n />\n);\n";
11
+ export declare const CustomStylingDefinition = "\nimport { Avatar } from './Avatar';\n\nexport const CustomStylingExample = () => (\n <Avatar\n size=\"md\"\n items={[\n { text: 'User One', imageUrl: 'https://i.pravatar.cc/150?img=61' },\n { text: 'User Two', imageUrl: 'https://i.pravatar.cc/150?img=62' },\n ]}\n sx={{\n p: 1,\n borderRadius: 2,\n bgcolor: 'action.hover',\n }}\n avatarSx={{\n border: (theme) => '3px solid ' + theme.palette.primary.main,\n }}\n />\n);\n";
@@ -0,0 +1,163 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defProps = Object.defineProperties;
3
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
+ var __spreadValues = (a, b) => {
9
+ for (var prop in b || (b = {}))
10
+ if (__hasOwnProp.call(b, prop))
11
+ __defNormalProp(a, prop, b[prop]);
12
+ if (__getOwnPropSymbols)
13
+ for (var prop of __getOwnPropSymbols(b)) {
14
+ if (__propIsEnum.call(b, prop))
15
+ __defNormalProp(a, prop, b[prop]);
16
+ }
17
+ return a;
18
+ };
19
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
+ import { jsxs, jsx } from "react/jsx-runtime";
21
+ import React__default, { useState } from "react";
22
+ import { Box, Typography, Avatar as Avatar$1, Tooltip } from "@mui/material";
23
+ import AccountCircleIcon from "@mui/icons-material/AccountCircle";
24
+ const sizeMap = {
25
+ sm: { px: 32, border: 2, font: 14, overlap: 8 },
26
+ md: { px: 40, border: 2, font: 16, overlap: 10 },
27
+ lg: { px: 56, border: 3, font: 22, overlap: 14 },
28
+ xl: { px: 96, border: 4, font: 36, overlap: 20 }
29
+ };
30
+ const resolveSize = (size) => {
31
+ if (typeof size === "number") {
32
+ return {
33
+ px: size,
34
+ border: Math.max(2, Math.round(size * 0.05)),
35
+ font: Math.round(size * 0.4),
36
+ overlap: Math.round(size * 0.25)
37
+ };
38
+ }
39
+ return sizeMap[size];
40
+ };
41
+ const mergeSx = (base, extra) => {
42
+ if (!extra) return base;
43
+ const baseArr = Array.isArray(base) ? base : [base];
44
+ const extraArr = Array.isArray(extra) ? extra : [extra];
45
+ return [...baseArr, ...extraArr];
46
+ };
47
+ const Avatar = ({
48
+ items,
49
+ type,
50
+ displayedAvatars = 4,
51
+ size = "sm",
52
+ showText = true,
53
+ showTooltip = false,
54
+ sx,
55
+ avatarSx,
56
+ className,
57
+ overlap
58
+ }) => {
59
+ var _a;
60
+ const [errorIndex, setErrorIndex] = useState(/* @__PURE__ */ new Set());
61
+ const handleImageError = (index) => {
62
+ setErrorIndex((prev) => {
63
+ const next = new Set(prev);
64
+ next.add(index);
65
+ return next;
66
+ });
67
+ };
68
+ if (!items || items.length === 0) {
69
+ return null;
70
+ }
71
+ const s = resolveSize(size);
72
+ const effectiveOverlap = overlap != null ? overlap : s.overlap;
73
+ const visibleItems = items.slice(0, displayedAvatars);
74
+ const baseAvatarSx = {
75
+ width: s.px,
76
+ height: s.px,
77
+ fontSize: s.font,
78
+ fontWeight: 700,
79
+ border: (theme) => `${s.border}px solid ${theme.palette.background.paper}`,
80
+ boxSizing: "content-box"
81
+ };
82
+ const renderSingleAvatar = (item, i) => {
83
+ var _a2, _b;
84
+ const hasImage = !!item.imageUrl && !errorIndex.has(i);
85
+ const showBadgeFallback = !!item.badge;
86
+ const itemSx = __spreadProps(__spreadValues({
87
+ bgcolor: (_a2 = item.backgroundColor) != null ? _a2 : "action.selected",
88
+ color: (_b = item.color) != null ? _b : "text.secondary"
89
+ }, i > 0 && { marginLeft: `-${effectiveOverlap}px` }), {
90
+ zIndex: visibleItems.length - i
91
+ });
92
+ const finalSx = mergeSx(mergeSx(baseAvatarSx, itemSx), avatarSx);
93
+ const avatarEl = /* @__PURE__ */ jsx(
94
+ Avatar$1,
95
+ {
96
+ "data-testid": "avatar",
97
+ alt: item.text || "User avatar",
98
+ src: hasImage ? item.imageUrl : void 0,
99
+ imgProps: {
100
+ "data-testid": "image",
101
+ onError: () => handleImageError(i)
102
+ },
103
+ sx: finalSx,
104
+ children: !hasImage && showBadgeFallback ? /* @__PURE__ */ jsx("span", { "data-testid": "badge", "aria-label": item.text, children: item.badge }) : !hasImage ? /* @__PURE__ */ jsx(
105
+ AccountCircleIcon,
106
+ {
107
+ "data-testid": "icon",
108
+ "aria-label": item.text,
109
+ sx: { width: "100%", height: "100%" }
110
+ }
111
+ ) : null
112
+ }
113
+ );
114
+ if (showTooltip && item.text) {
115
+ return /* @__PURE__ */ jsx(Tooltip, { title: item.text, children: avatarEl }, i);
116
+ }
117
+ return /* @__PURE__ */ jsx(React__default.Fragment, { children: avatarEl }, i);
118
+ };
119
+ return /* @__PURE__ */ jsxs(
120
+ Box,
121
+ {
122
+ "data-testid": "avatar-container",
123
+ className,
124
+ sx: mergeSx(
125
+ {
126
+ display: "flex",
127
+ alignItems: "center",
128
+ lineHeight: 1,
129
+ width: "fit-content"
130
+ },
131
+ sx
132
+ ),
133
+ children: [
134
+ /* @__PURE__ */ jsx(Box, { sx: { display: "flex", alignItems: "center" }, children: visibleItems.map((item, i) => renderSingleAvatar(item, i)) }),
135
+ showText && ((_a = items[0]) == null ? void 0 : _a.text) && /* @__PURE__ */ jsxs(
136
+ Typography,
137
+ {
138
+ "data-testid": "text",
139
+ variant: "caption",
140
+ sx: {
141
+ ml: 1,
142
+ fontSize: "0.75rem",
143
+ fontWeight: 400,
144
+ color: "text.primary"
145
+ },
146
+ children: [
147
+ type && items.length === 1 && /* @__PURE__ */ jsxs(Box, { component: "span", "data-testid": "type", sx: { mr: 0.5 }, children: [
148
+ type,
149
+ ":"
150
+ ] }),
151
+ items[0].text,
152
+ items.length > 1 && ` +${items.length - 1}`
153
+ ]
154
+ }
155
+ )
156
+ ]
157
+ }
158
+ );
159
+ };
160
+ export {
161
+ Avatar
162
+ };
163
+ //# sourceMappingURL=Avatar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Avatar.js","sources":["../../../src/components/Avatar/Avatar.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport {\n Avatar as MuiAvatar,\n Box,\n Tooltip,\n Typography,\n type SxProps,\n type Theme,\n} from '@mui/material';\nimport AccountCircleIcon from '@mui/icons-material/AccountCircle';\n\nexport interface AvatarItem {\n text?: string;\n imageUrl?: string;\n badge?: string;\n color?: string;\n backgroundColor?: string;\n}\n\nexport type AvatarSize = 'sm' | 'md' | 'lg' | 'xl' | number;\n\nexport interface AvatarProps {\n type?: string;\n items: AvatarItem[];\n displayedAvatars?: number;\n size?: AvatarSize;\n showText?: boolean;\n showTooltip?: boolean;\n /**\n * sx aplicado al contenedor raíz.\n */\n sx?: SxProps<Theme>;\n /**\n * sx aplicado a cada MuiAvatar individual (se mergea sobre los defaults).\n */\n avatarSx?: SxProps<Theme>;\n className?: string;\n /**\n * Overlap (px) entre avatares cuando hay varios. Default depende del tamaño.\n */\n overlap?: number;\n}\n\n// Escala alineada con la escala de MUI (sm=32, md=40, lg=56, xl=96) con borde\n// proporcional para el efecto stacked.\nconst sizeMap: Record<\n Exclude<AvatarSize, number>,\n { px: number; border: number; font: number; overlap: number }\n> = {\n sm: { px: 32, border: 2, font: 14, overlap: 8 },\n md: { px: 40, border: 2, font: 16, overlap: 10 },\n lg: { px: 56, border: 3, font: 22, overlap: 14 },\n xl: { px: 96, border: 4, font: 36, overlap: 20 },\n};\n\nconst resolveSize = (size: AvatarSize) => {\n if (typeof size === 'number') {\n return {\n px: size,\n border: Math.max(2, Math.round(size * 0.05)),\n font: Math.round(size * 0.4),\n overlap: Math.round(size * 0.25),\n };\n }\n return sizeMap[size];\n};\n\nconst mergeSx = (base: SxProps<Theme>, extra?: SxProps<Theme>): SxProps<Theme> => {\n if (!extra) return base;\n const baseArr = Array.isArray(base) ? base : [base];\n const extraArr = Array.isArray(extra) ? extra : [extra];\n return [...baseArr, ...extraArr] as SxProps<Theme>;\n};\n\nexport const Avatar: React.FC<AvatarProps> = ({\n items,\n type,\n displayedAvatars = 4,\n size = 'sm',\n showText = true,\n showTooltip = false,\n sx,\n avatarSx,\n className,\n overlap,\n}) => {\n const [errorIndex, setErrorIndex] = useState<Set<number>>(new Set());\n\n const handleImageError = (index: number) => {\n setErrorIndex((prev) => {\n const next = new Set(prev);\n next.add(index);\n return next;\n });\n };\n\n if (!items || items.length === 0) {\n return null;\n }\n\n const s = resolveSize(size);\n const effectiveOverlap = overlap ?? s.overlap;\n const visibleItems = items.slice(0, displayedAvatars);\n\n const baseAvatarSx: SxProps<Theme> = {\n width: s.px,\n height: s.px,\n fontSize: s.font,\n fontWeight: 700,\n border: (theme) => `${s.border}px solid ${theme.palette.background.paper}`,\n boxSizing: 'content-box',\n };\n\n const renderSingleAvatar = (item: AvatarItem, i: number) => {\n const hasImage = !!item.imageUrl && !errorIndex.has(i);\n const showBadgeFallback = !!item.badge;\n\n // Defaults tirando al theme; item.color / item.backgroundColor tienen prioridad.\n const itemSx: SxProps<Theme> = {\n bgcolor: item.backgroundColor ?? 'action.selected',\n color: item.color ?? 'text.secondary',\n // Stacking manual: margen negativo al segundo avatar en adelante.\n ...(i > 0 && { marginLeft: `-${effectiveOverlap}px` }),\n zIndex: visibleItems.length - i,\n };\n\n const finalSx = mergeSx(mergeSx(baseAvatarSx, itemSx), avatarSx);\n\n const avatarEl = (\n <MuiAvatar\n data-testid=\"avatar\"\n alt={item.text || 'User avatar'}\n src={hasImage ? item.imageUrl : undefined}\n imgProps={{\n 'data-testid': 'image',\n onError: () => handleImageError(i),\n } as React.ImgHTMLAttributes<HTMLImageElement>}\n sx={finalSx}\n >\n {!hasImage && showBadgeFallback ? (\n <span data-testid=\"badge\" aria-label={item.text}>\n {item.badge}\n </span>\n ) : !hasImage ? (\n <AccountCircleIcon\n data-testid=\"icon\"\n aria-label={item.text}\n sx={{ width: '100%', height: '100%' }}\n />\n ) : null}\n </MuiAvatar>\n );\n\n if (showTooltip && item.text) {\n return (\n <Tooltip key={i} title={item.text}>\n {avatarEl}\n </Tooltip>\n );\n }\n return <React.Fragment key={i}>{avatarEl}</React.Fragment>;\n };\n\n return (\n <Box\n data-testid=\"avatar-container\"\n className={className}\n sx={mergeSx(\n {\n display: 'flex',\n alignItems: 'center',\n lineHeight: 1,\n width: 'fit-content',\n },\n sx,\n )}\n >\n <Box sx={{ display: 'flex', alignItems: 'center' }}>\n {visibleItems.map((item, i) => renderSingleAvatar(item, i))}\n </Box>\n\n {showText && items[0]?.text && (\n <Typography\n data-testid=\"text\"\n variant=\"caption\"\n sx={{\n ml: 1,\n fontSize: '0.75rem',\n fontWeight: 400,\n color: 'text.primary',\n }}\n >\n {type && items.length === 1 && (\n <Box component=\"span\" data-testid=\"type\" sx={{ mr: 0.5 }}>\n {type}:\n </Box>\n )}\n {items[0].text}\n {items.length > 1 && ` +${items.length - 1}`}\n </Typography>\n )}\n </Box>\n );\n};\n\nexport default Avatar;\n"],"names":["_a","MuiAvatar","React"],"mappings":"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"}
@@ -0,0 +1,187 @@
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
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
22
+ const jsxRuntime = require("react/jsx-runtime");
23
+ const material = require("@mui/material");
24
+ const resolvePreset = require("../../resolvePreset-CT3kU-K2.cjs");
25
+ const paddingMap = {
26
+ none: 0,
27
+ dense: 1.5,
28
+ normal: 2.5,
29
+ loose: 4
30
+ };
31
+ function buildCardSx({
32
+ variant,
33
+ padding,
34
+ clickable
35
+ }) {
36
+ return (theme) => __spreadProps(__spreadValues({
37
+ borderRadius: 2,
38
+ backgroundColor: "background.paper",
39
+ boxShadow: variant === "elevated" ? theme.shadows[1] : "none",
40
+ border: variant === "outlined" ? `1px solid ${theme.palette.divider}` : "none",
41
+ transition: theme.transitions.create(
42
+ ["box-shadow", "transform", "border-color"],
43
+ { duration: theme.transitions.duration.shorter }
44
+ ),
45
+ cursor: clickable ? "pointer" : "default"
46
+ }, clickable && {
47
+ "&:hover": {
48
+ boxShadow: variant === "elevated" ? theme.shadows[3] : variant === "outlined" ? theme.shadows[1] : "none",
49
+ transform: variant !== "plain" ? "translateY(-1px)" : "none"
50
+ },
51
+ "&:active": {
52
+ transform: "translateY(0)"
53
+ }
54
+ }), {
55
+ // Body padding (cuando no hay header/footer envolventes). Para el caso
56
+ // compuesto los slots manejan su propio padding, dejamos el root en 0.
57
+ p: paddingMap[padding]
58
+ });
59
+ }
60
+ function buildCardHeaderSx() {
61
+ return (theme) => ({
62
+ display: "flex",
63
+ alignItems: "center",
64
+ gap: 1.5,
65
+ px: 2.5,
66
+ py: 1.75,
67
+ borderBottom: `1px solid ${theme.palette.divider}`,
68
+ "& .card-header-text": {
69
+ flex: 1,
70
+ minWidth: 0
71
+ },
72
+ "& .card-header-actions": {
73
+ display: "flex",
74
+ alignItems: "center",
75
+ gap: 0.5,
76
+ flexShrink: 0
77
+ }
78
+ });
79
+ }
80
+ function buildCardBodySx(padding) {
81
+ return {
82
+ px: padding === "none" ? 0 : padding === "dense" ? 1.5 : padding === "loose" ? 4 : 2.5,
83
+ py: padding === "none" ? 0 : padding === "dense" ? 1.5 : padding === "loose" ? 4 : 2.5
84
+ };
85
+ }
86
+ function buildCardFooterSx() {
87
+ return (theme) => ({
88
+ display: "flex",
89
+ alignItems: "center",
90
+ justifyContent: "flex-end",
91
+ gap: 1,
92
+ px: 2.5,
93
+ py: 1.5,
94
+ borderTop: `1px solid ${theme.palette.divider}`,
95
+ backgroundColor: theme.palette.action.hover
96
+ });
97
+ }
98
+ function Card({
99
+ children,
100
+ title,
101
+ subtitle,
102
+ actions,
103
+ header,
104
+ footer,
105
+ variant,
106
+ padding = "normal",
107
+ clickable = false,
108
+ preset,
109
+ raised,
110
+ sx,
111
+ bodySx,
112
+ headerSx,
113
+ footerSx,
114
+ onClick,
115
+ onBlur,
116
+ className,
117
+ "data-testid": dataTestId
118
+ }) {
119
+ const theme = material.useTheme();
120
+ const resolvedVariant = raised ? "elevated" : variant != null ? variant : "elevated";
121
+ const hasHeader = Boolean(header || title || subtitle || actions);
122
+ const hasFooter = Boolean(footer);
123
+ const isCompound = hasHeader || hasFooter;
124
+ const rootPadding = isCompound ? "none" : padding;
125
+ const presetSx = resolvePreset.resolvePreset("Card", preset, theme);
126
+ const rootSx = [
127
+ buildCardSx({
128
+ variant: resolvedVariant,
129
+ padding: rootPadding,
130
+ clickable: clickable || Boolean(onClick)
131
+ }),
132
+ ...presetSx ? [presetSx] : [],
133
+ ...Array.isArray(sx) ? sx : sx ? [sx] : []
134
+ ];
135
+ const renderHeader = () => {
136
+ if (header) return /* @__PURE__ */ jsxRuntime.jsx(material.Box, { sx: [buildCardHeaderSx(), ...Array.isArray(headerSx) ? headerSx : headerSx ? [headerSx] : []], children: header });
137
+ if (!title && !subtitle && !actions) return null;
138
+ return /* @__PURE__ */ jsxRuntime.jsxs(material.Box, { sx: [buildCardHeaderSx(), ...Array.isArray(headerSx) ? headerSx : headerSx ? [headerSx] : []], children: [
139
+ /* @__PURE__ */ jsxRuntime.jsxs(material.Box, { className: "card-header-text", children: [
140
+ title && /* @__PURE__ */ jsxRuntime.jsx(
141
+ material.Typography,
142
+ {
143
+ variant: "subtitle1",
144
+ component: "div",
145
+ sx: { fontWeight: 600, lineHeight: 1.3 },
146
+ noWrap: true,
147
+ children: title
148
+ }
149
+ ),
150
+ subtitle && /* @__PURE__ */ jsxRuntime.jsx(
151
+ material.Typography,
152
+ {
153
+ variant: "caption",
154
+ color: "text.secondary",
155
+ component: "div",
156
+ noWrap: true,
157
+ children: subtitle
158
+ }
159
+ )
160
+ ] }),
161
+ actions && /* @__PURE__ */ jsxRuntime.jsx(material.Box, { className: "card-header-actions", children: actions })
162
+ ] });
163
+ };
164
+ return /* @__PURE__ */ jsxRuntime.jsxs(
165
+ material.Card,
166
+ {
167
+ sx: rootSx,
168
+ className,
169
+ "data-testid": dataTestId,
170
+ onClick,
171
+ onBlur,
172
+ elevation: 0,
173
+ children: [
174
+ renderHeader(),
175
+ isCompound ? /* @__PURE__ */ jsxRuntime.jsx(material.Box, { sx: [buildCardBodySx(padding), ...Array.isArray(bodySx) ? bodySx : bodySx ? [bodySx] : []], children }) : children,
176
+ hasFooter && /* @__PURE__ */ jsxRuntime.jsx(material.Box, { sx: [buildCardFooterSx(), ...Array.isArray(footerSx) ? footerSx : footerSx ? [footerSx] : []], children: footer })
177
+ ]
178
+ }
179
+ );
180
+ }
181
+ exports.Card = Card;
182
+ exports.buildCardBodySx = buildCardBodySx;
183
+ exports.buildCardFooterSx = buildCardFooterSx;
184
+ exports.buildCardHeaderSx = buildCardHeaderSx;
185
+ exports.buildCardSx = buildCardSx;
186
+ exports.default = Card;
187
+ //# sourceMappingURL=Card.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Card.cjs","sources":["../../../src/components/Card/Card.sx.ts","../../../src/components/Card/Card.tsx"],"sourcesContent":["import type { SxProps, Theme } from '@mui/material/styles';\n\nexport type CardVariant = 'elevated' | 'outlined' | 'plain';\nexport type CardPadding = 'none' | 'dense' | 'normal' | 'loose';\n\nexport interface BuildCardSxArgs {\n variant: CardVariant;\n padding: CardPadding;\n clickable: boolean;\n}\n\nconst paddingMap: Record<CardPadding, number> = {\n none: 0,\n dense: 1.5,\n normal: 2.5,\n loose: 4,\n};\n\n/**\n * Estilo base del Card (root). La props `sx` del consumer se compone encima\n * junto al preset resuelto (en Card.tsx). Este builder solo se ocupa del\n * variant + padding, para que siga siendo predecible.\n */\nexport function buildCardSx({\n variant,\n padding,\n clickable,\n}: BuildCardSxArgs): SxProps<Theme> {\n return (theme) => ({\n borderRadius: 2,\n backgroundColor: 'background.paper',\n boxShadow:\n variant === 'elevated'\n ? theme.shadows[1]\n : 'none',\n border:\n variant === 'outlined'\n ? `1px solid ${theme.palette.divider}`\n : 'none',\n transition: theme.transitions.create(\n ['box-shadow', 'transform', 'border-color'],\n { duration: theme.transitions.duration.shorter },\n ),\n cursor: clickable ? 'pointer' : 'default',\n ...(clickable && {\n '&:hover': {\n boxShadow:\n variant === 'elevated'\n ? theme.shadows[3]\n : variant === 'outlined'\n ? theme.shadows[1]\n : 'none',\n transform: variant !== 'plain' ? 'translateY(-1px)' : 'none',\n },\n '&:active': {\n transform: 'translateY(0)',\n },\n }),\n // Body padding (cuando no hay header/footer envolventes). Para el caso\n // compuesto los slots manejan su propio padding, dejamos el root en 0.\n p: paddingMap[padding],\n });\n}\n\nexport function buildCardHeaderSx(): SxProps<Theme> {\n return (theme) => ({\n display: 'flex',\n alignItems: 'center',\n gap: 1.5,\n px: 2.5,\n py: 1.75,\n borderBottom: `1px solid ${theme.palette.divider}`,\n '& .card-header-text': {\n flex: 1,\n minWidth: 0,\n },\n '& .card-header-actions': {\n display: 'flex',\n alignItems: 'center',\n gap: 0.5,\n flexShrink: 0,\n },\n });\n}\n\nexport function buildCardBodySx(padding: CardPadding): SxProps<Theme> {\n return {\n px: padding === 'none' ? 0 : padding === 'dense' ? 1.5 : padding === 'loose' ? 4 : 2.5,\n py: padding === 'none' ? 0 : padding === 'dense' ? 1.5 : padding === 'loose' ? 4 : 2.5,\n };\n}\n\nexport function buildCardFooterSx(): SxProps<Theme> {\n return (theme) => ({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n gap: 1,\n px: 2.5,\n py: 1.5,\n borderTop: `1px solid ${theme.palette.divider}`,\n backgroundColor: theme.palette.action.hover,\n });\n}\n","import React, { type ReactNode } from 'react';\nimport { Box, Card as MuiCard, Typography, useTheme } from '@mui/material';\nimport type { SxProps, Theme } from '@mui/material/styles';\n\nimport { resolvePreset } from '../_shared/resolvePreset';\nimport {\n buildCardSx,\n buildCardHeaderSx,\n buildCardBodySx,\n buildCardFooterSx,\n type CardVariant,\n type CardPadding,\n} from './Card.sx';\n\nexport interface CardProps {\n /** Contenido principal. */\n children?: ReactNode;\n /**\n * Título del Card. Si se provee, renderiza un header con separador. Puede\n * ser string o cualquier ReactNode para permitir iconos / chips.\n */\n title?: ReactNode;\n /** Texto secundario debajo del título. */\n subtitle?: ReactNode;\n /**\n * Acciones del header (botones, ActionMenu, etc). Se renderizan alineadas\n * a la derecha.\n */\n actions?: ReactNode;\n /**\n * Header totalmente custom. Si se provee, ignora `title`/`subtitle`/`actions`\n * y toma control del slot entero.\n */\n header?: ReactNode;\n /** Footer custom (botones, mensajes, etc). */\n footer?: ReactNode;\n /**\n * Variante visual.\n * - `elevated` (default): sombra sutil.\n * - `outlined`: borde sin sombra.\n * - `plain`: sin borde ni sombra, útil para layouts con nesting.\n */\n variant?: CardVariant;\n /**\n * Densidad del padding interno. Solo aplica al body cuando hay header/footer;\n * cuando no hay slots, aplica al root.\n */\n padding?: CardPadding;\n /** Si `true`, muestra feedback de hover/active (cursor, sombra). */\n clickable?: boolean;\n /**\n * Preset registrado en `theme.styles.Card`. `\"default\"` usa el estilo\n * built-in sin preset extra.\n */\n preset?: string;\n /**\n * MUI `raised` legacy — mantenido por backward-compat. Equivale a\n * `variant=\"elevated\"` con sombra mayor. Ignora `variant` si se usa.\n */\n raised?: boolean;\n /** sx del root. Se compone sobre el base + preset. */\n sx?: SxProps<Theme>;\n /** sx custom del slot body. */\n bodySx?: SxProps<Theme>;\n /** sx custom del slot header. */\n headerSx?: SxProps<Theme>;\n /** sx custom del slot footer. */\n footerSx?: SxProps<Theme>;\n onClick?: () => void;\n onBlur?: () => void;\n className?: string;\n 'data-testid'?: string;\n}\n\n/**\n * Card semántico con slots `title` / `subtitle` / `actions` / `footer`.\n * Reemplaza el patrón `<div class=\"card\"><div class=\"card-header\">...</div>...`\n * de Metronic/Bootstrap con composición declarativa.\n *\n * Backward-compat: si solo se pasa `children`, se comporta como el Card\n * original (MUI Card + body padding).\n *\n * ```tsx\n * <Card\n * title=\"Datos del cliente\"\n * subtitle=\"Última actualización: hace 2h\"\n * actions={<ActionMenu items={menuItems} />}\n * footer={<Button>Guardar</Button>}\n * >\n * <CustomerForm />\n * </Card>\n * ```\n */\nexport function Card({\n children,\n title,\n subtitle,\n actions,\n header,\n footer,\n variant,\n padding = 'normal',\n clickable = false,\n preset,\n raised,\n sx,\n bodySx,\n headerSx,\n footerSx,\n onClick,\n onBlur,\n className,\n 'data-testid': dataTestId,\n}: CardProps) {\n const theme = useTheme();\n\n // Back-compat: `raised` legacy => elevated. Si no vienen ni `raised` ni\n // `variant`, default a 'elevated'.\n const resolvedVariant: CardVariant = raised\n ? 'elevated'\n : (variant ?? 'elevated');\n\n const hasHeader = Boolean(header || title || subtitle || actions);\n const hasFooter = Boolean(footer);\n const isCompound = hasHeader || hasFooter;\n\n // Cuando hay slots, el root no lleva padding (lo llevan los slots).\n const rootPadding: CardPadding = isCompound ? 'none' : padding;\n\n const presetSx = resolvePreset('Card', preset, theme);\n\n const rootSx: SxProps<Theme> = [\n buildCardSx({\n variant: resolvedVariant,\n padding: rootPadding,\n clickable: clickable || Boolean(onClick),\n }),\n ...(presetSx ? [presetSx] : []),\n ...(Array.isArray(sx) ? sx : sx ? [sx] : []),\n ];\n\n const renderHeader = () => {\n if (header) return <Box sx={[buildCardHeaderSx(), ...(Array.isArray(headerSx) ? headerSx : headerSx ? [headerSx] : [])]}>{header}</Box>;\n if (!title && !subtitle && !actions) return null;\n return (\n <Box sx={[buildCardHeaderSx(), ...(Array.isArray(headerSx) ? headerSx : headerSx ? [headerSx] : [])]}>\n <Box className=\"card-header-text\">\n {title && (\n <Typography\n variant=\"subtitle1\"\n component=\"div\"\n sx={{ fontWeight: 600, lineHeight: 1.3 }}\n noWrap\n >\n {title}\n </Typography>\n )}\n {subtitle && (\n <Typography\n variant=\"caption\"\n color=\"text.secondary\"\n component=\"div\"\n noWrap\n >\n {subtitle}\n </Typography>\n )}\n </Box>\n {actions && <Box className=\"card-header-actions\">{actions}</Box>}\n </Box>\n );\n };\n\n return (\n <MuiCard\n sx={rootSx}\n className={className}\n data-testid={dataTestId}\n onClick={onClick}\n onBlur={onBlur}\n elevation={0} // sombra la maneja buildCardSx\n >\n {renderHeader()}\n {isCompound ? (\n <Box sx={[buildCardBodySx(padding), ...(Array.isArray(bodySx) ? bodySx : bodySx ? [bodySx] : [])]}>\n {children}\n </Box>\n ) : (\n children\n )}\n {hasFooter && (\n <Box sx={[buildCardFooterSx(), ...(Array.isArray(footerSx) ? footerSx : footerSx ? [footerSx] : [])]}>\n {footer}\n </Box>\n )}\n </MuiCard>\n );\n}\n\nexport default Card;\n"],"names":["useTheme","resolvePreset","jsx","Box","jsxs","Typography","MuiCard"],"mappings":"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"}
@@ -0,0 +1,83 @@
1
+ import { ReactNode } from 'react';
2
+ import { SxProps, Theme } from '@mui/material/styles';
3
+ import { CardVariant, CardPadding } from './Card.sx';
4
+ export interface CardProps {
5
+ /** Contenido principal. */
6
+ children?: ReactNode;
7
+ /**
8
+ * Título del Card. Si se provee, renderiza un header con separador. Puede
9
+ * ser string o cualquier ReactNode para permitir iconos / chips.
10
+ */
11
+ title?: ReactNode;
12
+ /** Texto secundario debajo del título. */
13
+ subtitle?: ReactNode;
14
+ /**
15
+ * Acciones del header (botones, ActionMenu, etc). Se renderizan alineadas
16
+ * a la derecha.
17
+ */
18
+ actions?: ReactNode;
19
+ /**
20
+ * Header totalmente custom. Si se provee, ignora `title`/`subtitle`/`actions`
21
+ * y toma control del slot entero.
22
+ */
23
+ header?: ReactNode;
24
+ /** Footer custom (botones, mensajes, etc). */
25
+ footer?: ReactNode;
26
+ /**
27
+ * Variante visual.
28
+ * - `elevated` (default): sombra sutil.
29
+ * - `outlined`: borde sin sombra.
30
+ * - `plain`: sin borde ni sombra, útil para layouts con nesting.
31
+ */
32
+ variant?: CardVariant;
33
+ /**
34
+ * Densidad del padding interno. Solo aplica al body cuando hay header/footer;
35
+ * cuando no hay slots, aplica al root.
36
+ */
37
+ padding?: CardPadding;
38
+ /** Si `true`, muestra feedback de hover/active (cursor, sombra). */
39
+ clickable?: boolean;
40
+ /**
41
+ * Preset registrado en `theme.styles.Card`. `"default"` usa el estilo
42
+ * built-in sin preset extra.
43
+ */
44
+ preset?: string;
45
+ /**
46
+ * MUI `raised` legacy — mantenido por backward-compat. Equivale a
47
+ * `variant="elevated"` con sombra mayor. Ignora `variant` si se usa.
48
+ */
49
+ raised?: boolean;
50
+ /** sx del root. Se compone sobre el base + preset. */
51
+ sx?: SxProps<Theme>;
52
+ /** sx custom del slot body. */
53
+ bodySx?: SxProps<Theme>;
54
+ /** sx custom del slot header. */
55
+ headerSx?: SxProps<Theme>;
56
+ /** sx custom del slot footer. */
57
+ footerSx?: SxProps<Theme>;
58
+ onClick?: () => void;
59
+ onBlur?: () => void;
60
+ className?: string;
61
+ 'data-testid'?: string;
62
+ }
63
+ /**
64
+ * Card semántico con slots `title` / `subtitle` / `actions` / `footer`.
65
+ * Reemplaza el patrón `<div class="card"><div class="card-header">...</div>...`
66
+ * de Metronic/Bootstrap con composición declarativa.
67
+ *
68
+ * Backward-compat: si solo se pasa `children`, se comporta como el Card
69
+ * original (MUI Card + body padding).
70
+ *
71
+ * ```tsx
72
+ * <Card
73
+ * title="Datos del cliente"
74
+ * subtitle="Última actualización: hace 2h"
75
+ * actions={<ActionMenu items={menuItems} />}
76
+ * footer={<Button>Guardar</Button>}
77
+ * >
78
+ * <CustomerForm />
79
+ * </Card>
80
+ * ```
81
+ */
82
+ export declare function Card({ children, title, subtitle, actions, header, footer, variant, padding, clickable, preset, raised, sx, bodySx, headerSx, footerSx, onClick, onBlur, className, 'data-testid': dataTestId, }: CardProps): import("react/jsx-runtime").JSX.Element;
83
+ export default Card;