@wealthx/ui 0.0.1 → 1.0.1

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 (567) hide show
  1. package/.turbo/turbo-build.log +369 -0
  2. package/CHANGELOG.md +7 -0
  3. package/dist/accordion-details.d.mts +7 -0
  4. package/dist/accordion-details.d.ts +7 -0
  5. package/dist/accordion-details.js +62 -0
  6. package/dist/accordion-details.mjs +17 -0
  7. package/dist/accordion-summary.d.mts +7 -0
  8. package/dist/accordion-summary.d.ts +7 -0
  9. package/dist/accordion-summary.js +62 -0
  10. package/dist/accordion-summary.mjs +17 -0
  11. package/dist/accordion.d.mts +7 -0
  12. package/dist/accordion.d.ts +7 -0
  13. package/dist/accordion.js +62 -0
  14. package/dist/accordion.mjs +17 -0
  15. package/dist/alert.d.mts +7 -0
  16. package/dist/alert.d.ts +7 -0
  17. package/dist/alert.js +62 -0
  18. package/dist/alert.mjs +17 -0
  19. package/dist/app-bar.d.mts +7 -0
  20. package/dist/app-bar.d.ts +7 -0
  21. package/dist/app-bar.js +62 -0
  22. package/dist/app-bar.mjs +17 -0
  23. package/dist/autocomplete.d.mts +7 -0
  24. package/dist/autocomplete.d.ts +7 -0
  25. package/dist/autocomplete.js +62 -0
  26. package/dist/autocomplete.mjs +17 -0
  27. package/dist/avatar.d.mts +7 -0
  28. package/dist/avatar.d.ts +7 -0
  29. package/dist/avatar.js +62 -0
  30. package/dist/avatar.mjs +17 -0
  31. package/dist/backdrop.d.mts +7 -0
  32. package/dist/backdrop.d.ts +7 -0
  33. package/dist/backdrop.js +62 -0
  34. package/dist/backdrop.mjs +17 -0
  35. package/dist/badge.d.mts +7 -0
  36. package/dist/badge.d.ts +7 -0
  37. package/dist/badge.js +62 -0
  38. package/dist/badge.mjs +17 -0
  39. package/dist/bottom-navigation-action.d.mts +7 -0
  40. package/dist/bottom-navigation-action.d.ts +7 -0
  41. package/dist/bottom-navigation-action.js +62 -0
  42. package/dist/bottom-navigation-action.mjs +17 -0
  43. package/dist/bottom-navigation.d.mts +7 -0
  44. package/dist/bottom-navigation.d.ts +7 -0
  45. package/dist/bottom-navigation.js +62 -0
  46. package/dist/bottom-navigation.mjs +17 -0
  47. package/dist/box.d.mts +7 -0
  48. package/dist/box.d.ts +7 -0
  49. package/dist/box.js +62 -0
  50. package/dist/box.mjs +17 -0
  51. package/dist/breadcrumbs.d.mts +7 -0
  52. package/dist/breadcrumbs.d.ts +7 -0
  53. package/dist/breadcrumbs.js +62 -0
  54. package/dist/breadcrumbs.mjs +17 -0
  55. package/dist/button-group.d.mts +7 -0
  56. package/dist/button-group.d.ts +7 -0
  57. package/dist/button-group.js +62 -0
  58. package/dist/button-group.mjs +17 -0
  59. package/dist/button.d.mts +7 -0
  60. package/dist/button.d.ts +7 -0
  61. package/dist/button.js +62 -0
  62. package/dist/button.mjs +17 -0
  63. package/dist/card-actions.d.mts +7 -0
  64. package/dist/card-actions.d.ts +7 -0
  65. package/dist/card-actions.js +62 -0
  66. package/dist/card-actions.mjs +17 -0
  67. package/dist/card-content.d.mts +7 -0
  68. package/dist/card-content.d.ts +7 -0
  69. package/dist/card-content.js +62 -0
  70. package/dist/card-content.mjs +17 -0
  71. package/dist/card-header.d.mts +7 -0
  72. package/dist/card-header.d.ts +7 -0
  73. package/dist/card-header.js +62 -0
  74. package/dist/card-header.mjs +17 -0
  75. package/dist/card-media.d.mts +7 -0
  76. package/dist/card-media.d.ts +7 -0
  77. package/dist/card-media.js +62 -0
  78. package/dist/card-media.mjs +17 -0
  79. package/dist/card.d.mts +7 -0
  80. package/dist/card.d.ts +7 -0
  81. package/dist/card.js +62 -0
  82. package/dist/card.mjs +17 -0
  83. package/dist/charts/index.d.mts +260 -0
  84. package/dist/charts/index.d.ts +260 -0
  85. package/dist/charts/index.js +2514 -0
  86. package/dist/charts/index.mjs +2442 -0
  87. package/dist/checkbox.d.mts +9 -0
  88. package/dist/checkbox.d.ts +9 -0
  89. package/dist/checkbox.js +62 -0
  90. package/dist/checkbox.mjs +17 -0
  91. package/dist/chip.d.mts +7 -0
  92. package/dist/chip.d.ts +7 -0
  93. package/dist/chip.js +62 -0
  94. package/dist/chip.mjs +17 -0
  95. package/dist/chunk-2VVJGTUG.mjs +18 -0
  96. package/dist/chunk-3INC3CHA.mjs +702 -0
  97. package/dist/chunk-3LGY4LPH.mjs +671 -0
  98. package/dist/chunk-3ZAK7JKB.mjs +17 -0
  99. package/dist/chunk-4PT5CSRI.mjs +635 -0
  100. package/dist/chunk-4RSXKKJ3.mjs +677 -0
  101. package/dist/chunk-4YL3IDTL.mjs +712 -0
  102. package/dist/chunk-5PTI2A2O.mjs +635 -0
  103. package/dist/chunk-5QGN2CVX.mjs +738 -0
  104. package/dist/chunk-5WVSR7VI.mjs +30 -0
  105. package/dist/chunk-6XKA7TMO.mjs +654 -0
  106. package/dist/chunk-75AEPNQV.mjs +663 -0
  107. package/dist/chunk-7VN5YMMV.mjs +666 -0
  108. package/dist/chunk-7Y4J73GF.mjs +22 -0
  109. package/dist/chunk-A4GTTYXS.mjs +725 -0
  110. package/dist/chunk-A6UVH2MS.mjs +638 -0
  111. package/dist/chunk-AFUVAGQ7.mjs +717 -0
  112. package/dist/chunk-AU6MS36I.mjs +687 -0
  113. package/dist/chunk-AZ4T75GP.mjs +716 -0
  114. package/dist/chunk-B26DAG54.mjs +729 -0
  115. package/dist/chunk-B6MLUNDY.mjs +641 -0
  116. package/dist/chunk-BEP42F7C.mjs +704 -0
  117. package/dist/chunk-CDQYIC4L.mjs +638 -0
  118. package/dist/chunk-CJ5XEQAB.mjs +707 -0
  119. package/dist/chunk-CLRGEEBS.mjs +695 -0
  120. package/dist/chunk-EDDP4RXX.mjs +731 -0
  121. package/dist/chunk-EYFZ6Q2I.mjs +30 -0
  122. package/dist/chunk-EZEFJ62V.mjs +723 -0
  123. package/dist/chunk-F3Y22UH3.mjs +704 -0
  124. package/dist/chunk-FCUQVOXM.mjs +707 -0
  125. package/dist/chunk-FMFAYI6F.mjs +727 -0
  126. package/dist/chunk-FWCSY2DS.mjs +37 -0
  127. package/dist/chunk-FYHAFWVF.mjs +719 -0
  128. package/dist/chunk-G5LVCGAZ.mjs +715 -0
  129. package/dist/chunk-GC7M6Q7Q.mjs +712 -0
  130. package/dist/chunk-GJP3ZHQZ.mjs +712 -0
  131. package/dist/chunk-GTCMGRVH.mjs +576 -0
  132. package/dist/chunk-GXYSMEFL.mjs +704 -0
  133. package/dist/chunk-GYEEDPWP.mjs +646 -0
  134. package/dist/chunk-H5JOUGZ7.mjs +7 -0
  135. package/dist/chunk-HAXRNHML.mjs +17 -0
  136. package/dist/chunk-HGDOFGU4.mjs +717 -0
  137. package/dist/chunk-HR7CZZZU.mjs +34 -0
  138. package/dist/chunk-I4E63NIC.mjs +24 -0
  139. package/dist/chunk-I5H76ESF.mjs +671 -0
  140. package/dist/chunk-IIBNCIGO.mjs +713 -0
  141. package/dist/chunk-INHKGMOA.mjs +705 -0
  142. package/dist/chunk-ISFJIOTZ.mjs +668 -0
  143. package/dist/chunk-IU4IZB74.mjs +729 -0
  144. package/dist/chunk-IXJXFW7K.mjs +712 -0
  145. package/dist/chunk-JUNAYNXW.mjs +667 -0
  146. package/dist/chunk-K2Z5MFPN.mjs +717 -0
  147. package/dist/chunk-KJDBWFV4.mjs +15 -0
  148. package/dist/chunk-KOR3RFXT.mjs +616 -0
  149. package/dist/chunk-KRCDJE37.mjs +616 -0
  150. package/dist/chunk-KX3KGQM5.mjs +704 -0
  151. package/dist/chunk-MJF7PMCN.mjs +713 -0
  152. package/dist/chunk-MSMSEKLJ.mjs +727 -0
  153. package/dist/chunk-MWVIJSXF.mjs +723 -0
  154. package/dist/chunk-MZ6NCHFH.mjs +712 -0
  155. package/dist/chunk-NHR5EVP5.mjs +34 -0
  156. package/dist/chunk-NLOG75HP.mjs +712 -0
  157. package/dist/chunk-NPIFU7NP.mjs +717 -0
  158. package/dist/chunk-NUTTLEFB.mjs +675 -0
  159. package/dist/chunk-P3F3JWWN.mjs +707 -0
  160. package/dist/chunk-PPGJLNI5.mjs +704 -0
  161. package/dist/chunk-PUPP26OX.mjs +707 -0
  162. package/dist/chunk-Q43USMAB.mjs +638 -0
  163. package/dist/chunk-QUYESF5V.mjs +706 -0
  164. package/dist/chunk-R4NJDEQL.mjs +686 -0
  165. package/dist/chunk-RE7K3H64.mjs +707 -0
  166. package/dist/chunk-RIDPXVXH.mjs +706 -0
  167. package/dist/chunk-RQIAE3MB.mjs +721 -0
  168. package/dist/chunk-RRYH5A6K.mjs +727 -0
  169. package/dist/chunk-RTUIKVKP.mjs +705 -0
  170. package/dist/chunk-RYZ2UYKN.mjs +707 -0
  171. package/dist/chunk-S37HUFPH.mjs +719 -0
  172. package/dist/chunk-S4TZORUT.mjs +708 -0
  173. package/dist/chunk-SOMFG24T.mjs +675 -0
  174. package/dist/chunk-SP3LL4DC.mjs +704 -0
  175. package/dist/chunk-TJZXXGH3.mjs +641 -0
  176. package/dist/chunk-TWFYWUDV.mjs +707 -0
  177. package/dist/chunk-U2JQUQ2B.mjs +712 -0
  178. package/dist/chunk-UCFJXIGR.mjs +671 -0
  179. package/dist/chunk-UFKECQBD.mjs +736 -0
  180. package/dist/chunk-UNZHSAWG.mjs +704 -0
  181. package/dist/chunk-UORPGX7S.mjs +637 -0
  182. package/dist/chunk-VA7BMOMQ.mjs +712 -0
  183. package/dist/chunk-VKJEODYN.mjs +705 -0
  184. package/dist/chunk-VST6TRHA.mjs +15 -0
  185. package/dist/chunk-VSTSMCNW.mjs +169 -0
  186. package/dist/chunk-W35RLK2G.mjs +714 -0
  187. package/dist/chunk-WLX3YEFG.mjs +713 -0
  188. package/dist/chunk-WUKYLWAZ.mjs +0 -0
  189. package/dist/chunk-XJFQ6VLH.mjs +676 -0
  190. package/dist/chunk-XUAVHHPE.mjs +715 -0
  191. package/dist/chunk-YHEJWFKH.mjs +711 -0
  192. package/dist/chunk-YJ5Q4Z6X.mjs +37 -0
  193. package/dist/chunk-YMWHUJU5.mjs +15 -0
  194. package/dist/chunk-YNFJJWV4.mjs +712 -0
  195. package/dist/chunk-YOEKQLSM.mjs +715 -0
  196. package/dist/chunk-ZIIKFFIL.mjs +21 -0
  197. package/dist/chunk-ZLBX4R5M.mjs +711 -0
  198. package/dist/container.d.mts +7 -0
  199. package/dist/container.d.ts +7 -0
  200. package/dist/container.js +62 -0
  201. package/dist/container.mjs +17 -0
  202. package/dist/dialog-actions.d.mts +7 -0
  203. package/dist/dialog-actions.d.ts +7 -0
  204. package/dist/dialog-actions.js +62 -0
  205. package/dist/dialog-actions.mjs +17 -0
  206. package/dist/dialog-content.d.mts +7 -0
  207. package/dist/dialog-content.d.ts +7 -0
  208. package/dist/dialog-content.js +62 -0
  209. package/dist/dialog-content.mjs +17 -0
  210. package/dist/dialog-title.d.mts +7 -0
  211. package/dist/dialog-title.d.ts +7 -0
  212. package/dist/dialog-title.js +62 -0
  213. package/dist/dialog-title.mjs +17 -0
  214. package/dist/dialog.d.mts +7 -0
  215. package/dist/dialog.d.ts +7 -0
  216. package/dist/dialog.js +62 -0
  217. package/dist/dialog.mjs +17 -0
  218. package/dist/divider.d.mts +7 -0
  219. package/dist/divider.d.ts +7 -0
  220. package/dist/divider.js +62 -0
  221. package/dist/divider.mjs +17 -0
  222. package/dist/drawer.d.mts +7 -0
  223. package/dist/drawer.d.ts +7 -0
  224. package/dist/drawer.js +62 -0
  225. package/dist/drawer.mjs +17 -0
  226. package/dist/fab.d.mts +7 -0
  227. package/dist/fab.d.ts +7 -0
  228. package/dist/fab.js +62 -0
  229. package/dist/fab.mjs +17 -0
  230. package/dist/form-control.d.mts +7 -0
  231. package/dist/form-control.d.ts +7 -0
  232. package/dist/form-control.js +62 -0
  233. package/dist/form-control.mjs +17 -0
  234. package/dist/grid.d.mts +7 -0
  235. package/dist/grid.d.ts +7 -0
  236. package/dist/grid.js +62 -0
  237. package/dist/grid.mjs +17 -0
  238. package/dist/icon-button.d.mts +7 -0
  239. package/dist/icon-button.d.ts +7 -0
  240. package/dist/icon-button.js +62 -0
  241. package/dist/icon-button.mjs +17 -0
  242. package/dist/image-list-item.d.mts +7 -0
  243. package/dist/image-list-item.d.ts +7 -0
  244. package/dist/image-list-item.js +62 -0
  245. package/dist/image-list-item.mjs +17 -0
  246. package/dist/image-list.d.mts +7 -0
  247. package/dist/image-list.d.ts +7 -0
  248. package/dist/image-list.js +62 -0
  249. package/dist/image-list.mjs +17 -0
  250. package/dist/index.d.mts +5 -0
  251. package/dist/index.d.ts +5 -0
  252. package/dist/index.js +697 -0
  253. package/dist/index.mjs +61 -0
  254. package/dist/input-label.d.mts +7 -0
  255. package/dist/input-label.d.ts +7 -0
  256. package/dist/input-label.js +62 -0
  257. package/dist/input-label.mjs +17 -0
  258. package/dist/link.d.mts +7 -0
  259. package/dist/link.d.ts +7 -0
  260. package/dist/link.js +62 -0
  261. package/dist/link.mjs +17 -0
  262. package/dist/list-item-icon.d.mts +7 -0
  263. package/dist/list-item-icon.d.ts +7 -0
  264. package/dist/list-item-icon.js +62 -0
  265. package/dist/list-item-icon.mjs +17 -0
  266. package/dist/list-item-text.d.mts +7 -0
  267. package/dist/list-item-text.d.ts +7 -0
  268. package/dist/list-item-text.js +62 -0
  269. package/dist/list-item-text.mjs +17 -0
  270. package/dist/list-item.d.mts +7 -0
  271. package/dist/list-item.d.ts +7 -0
  272. package/dist/list-item.js +62 -0
  273. package/dist/list-item.mjs +17 -0
  274. package/dist/list.d.mts +7 -0
  275. package/dist/list.d.ts +7 -0
  276. package/dist/list.js +62 -0
  277. package/dist/list.mjs +17 -0
  278. package/dist/masonry.d.mts +7 -0
  279. package/dist/masonry.d.ts +7 -0
  280. package/dist/masonry.js +62 -0
  281. package/dist/masonry.mjs +17 -0
  282. package/dist/menu-item.d.mts +7 -0
  283. package/dist/menu-item.d.ts +7 -0
  284. package/dist/menu-item.js +62 -0
  285. package/dist/menu-item.mjs +17 -0
  286. package/dist/menu.d.mts +7 -0
  287. package/dist/menu.d.ts +7 -0
  288. package/dist/menu.js +62 -0
  289. package/dist/menu.mjs +17 -0
  290. package/dist/mui-augmentation-DKlyQ0kQ.d.mts +19 -0
  291. package/dist/mui-augmentation-DKlyQ0kQ.d.ts +19 -0
  292. package/dist/pagination.d.mts +7 -0
  293. package/dist/pagination.d.ts +7 -0
  294. package/dist/pagination.js +62 -0
  295. package/dist/pagination.mjs +17 -0
  296. package/dist/paper.d.mts +7 -0
  297. package/dist/paper.d.ts +7 -0
  298. package/dist/paper.js +62 -0
  299. package/dist/paper.mjs +17 -0
  300. package/dist/progress.d.mts +10 -0
  301. package/dist/progress.d.ts +10 -0
  302. package/dist/progress.js +71 -0
  303. package/dist/progress.mjs +25 -0
  304. package/dist/radio-group.d.mts +7 -0
  305. package/dist/radio-group.d.ts +7 -0
  306. package/dist/radio-group.js +62 -0
  307. package/dist/radio-group.mjs +17 -0
  308. package/dist/radio.d.mts +10 -0
  309. package/dist/radio.d.ts +10 -0
  310. package/dist/radio.js +62 -0
  311. package/dist/radio.mjs +18 -0
  312. package/dist/rating.d.mts +7 -0
  313. package/dist/rating.d.ts +7 -0
  314. package/dist/rating.js +62 -0
  315. package/dist/rating.mjs +17 -0
  316. package/dist/select.d.mts +7 -0
  317. package/dist/select.d.ts +7 -0
  318. package/dist/select.js +62 -0
  319. package/dist/select.mjs +17 -0
  320. package/dist/selection-button-group.d.mts +16 -0
  321. package/dist/selection-button-group.d.ts +16 -0
  322. package/dist/selection-button-group.js +109 -0
  323. package/dist/selection-button-group.mjs +42 -0
  324. package/dist/skeleton.d.mts +7 -0
  325. package/dist/skeleton.d.ts +7 -0
  326. package/dist/skeleton.js +62 -0
  327. package/dist/skeleton.mjs +17 -0
  328. package/dist/slider.d.mts +7 -0
  329. package/dist/slider.d.ts +7 -0
  330. package/dist/slider.js +62 -0
  331. package/dist/slider.mjs +17 -0
  332. package/dist/snackbar.d.mts +7 -0
  333. package/dist/snackbar.d.ts +7 -0
  334. package/dist/snackbar.js +62 -0
  335. package/dist/snackbar.mjs +17 -0
  336. package/dist/speed-dial-action.d.mts +7 -0
  337. package/dist/speed-dial-action.d.ts +7 -0
  338. package/dist/speed-dial-action.js +62 -0
  339. package/dist/speed-dial-action.mjs +17 -0
  340. package/dist/speed-dial.d.mts +7 -0
  341. package/dist/speed-dial.d.ts +7 -0
  342. package/dist/speed-dial.js +62 -0
  343. package/dist/speed-dial.mjs +17 -0
  344. package/dist/stack.d.mts +7 -0
  345. package/dist/stack.d.ts +7 -0
  346. package/dist/stack.js +62 -0
  347. package/dist/stack.mjs +17 -0
  348. package/dist/step-content.d.mts +7 -0
  349. package/dist/step-content.d.ts +7 -0
  350. package/dist/step-content.js +62 -0
  351. package/dist/step-content.mjs +17 -0
  352. package/dist/step-label.d.mts +7 -0
  353. package/dist/step-label.d.ts +7 -0
  354. package/dist/step-label.js +62 -0
  355. package/dist/step-label.mjs +17 -0
  356. package/dist/step.d.mts +7 -0
  357. package/dist/step.d.ts +7 -0
  358. package/dist/step.js +62 -0
  359. package/dist/step.mjs +17 -0
  360. package/dist/stepper.d.mts +7 -0
  361. package/dist/stepper.d.ts +7 -0
  362. package/dist/stepper.js +62 -0
  363. package/dist/stepper.mjs +17 -0
  364. package/dist/switch.d.mts +10 -0
  365. package/dist/switch.d.ts +10 -0
  366. package/dist/switch.js +62 -0
  367. package/dist/switch.mjs +18 -0
  368. package/dist/tab-context.d.mts +9 -0
  369. package/dist/tab-context.d.ts +9 -0
  370. package/dist/tab-context.js +59 -0
  371. package/dist/tab-context.mjs +14 -0
  372. package/dist/tab-list.d.mts +7 -0
  373. package/dist/tab-list.d.ts +7 -0
  374. package/dist/tab-list.js +62 -0
  375. package/dist/tab-list.mjs +17 -0
  376. package/dist/tab-panel.d.mts +7 -0
  377. package/dist/tab-panel.d.ts +7 -0
  378. package/dist/tab-panel.js +62 -0
  379. package/dist/tab-panel.mjs +17 -0
  380. package/dist/tab.d.mts +7 -0
  381. package/dist/tab.d.ts +7 -0
  382. package/dist/tab.js +62 -0
  383. package/dist/tab.mjs +17 -0
  384. package/dist/table-body.d.mts +7 -0
  385. package/dist/table-body.d.ts +7 -0
  386. package/dist/table-body.js +62 -0
  387. package/dist/table-body.mjs +17 -0
  388. package/dist/table-cell.d.mts +7 -0
  389. package/dist/table-cell.d.ts +7 -0
  390. package/dist/table-cell.js +62 -0
  391. package/dist/table-cell.mjs +17 -0
  392. package/dist/table-container.d.mts +7 -0
  393. package/dist/table-container.d.ts +7 -0
  394. package/dist/table-container.js +62 -0
  395. package/dist/table-container.mjs +17 -0
  396. package/dist/table-head.d.mts +7 -0
  397. package/dist/table-head.d.ts +7 -0
  398. package/dist/table-head.js +62 -0
  399. package/dist/table-head.mjs +17 -0
  400. package/dist/table-row.d.mts +7 -0
  401. package/dist/table-row.d.ts +7 -0
  402. package/dist/table-row.js +62 -0
  403. package/dist/table-row.mjs +17 -0
  404. package/dist/table.d.mts +7 -0
  405. package/dist/table.d.ts +7 -0
  406. package/dist/table.js +62 -0
  407. package/dist/table.mjs +17 -0
  408. package/dist/tabs.d.mts +7 -0
  409. package/dist/tabs.d.ts +7 -0
  410. package/dist/tabs.js +62 -0
  411. package/dist/tabs.mjs +17 -0
  412. package/dist/text-field.d.mts +8 -0
  413. package/dist/text-field.d.ts +8 -0
  414. package/dist/text-field.js +62 -0
  415. package/dist/text-field.mjs +17 -0
  416. package/dist/theme/index.d.mts +255 -0
  417. package/dist/theme/index.d.ts +255 -0
  418. package/dist/theme/index.js +811 -0
  419. package/dist/theme/index.mjs +62 -0
  420. package/dist/timeline-connector.d.mts +7 -0
  421. package/dist/timeline-connector.d.ts +7 -0
  422. package/dist/timeline-connector.js +62 -0
  423. package/dist/timeline-connector.mjs +17 -0
  424. package/dist/timeline-content.d.mts +7 -0
  425. package/dist/timeline-content.d.ts +7 -0
  426. package/dist/timeline-content.js +62 -0
  427. package/dist/timeline-content.mjs +17 -0
  428. package/dist/timeline-dot.d.mts +7 -0
  429. package/dist/timeline-dot.d.ts +7 -0
  430. package/dist/timeline-dot.js +62 -0
  431. package/dist/timeline-dot.mjs +17 -0
  432. package/dist/timeline-item.d.mts +7 -0
  433. package/dist/timeline-item.d.ts +7 -0
  434. package/dist/timeline-item.js +62 -0
  435. package/dist/timeline-item.mjs +17 -0
  436. package/dist/timeline-separator.d.mts +7 -0
  437. package/dist/timeline-separator.d.ts +7 -0
  438. package/dist/timeline-separator.js +62 -0
  439. package/dist/timeline-separator.mjs +17 -0
  440. package/dist/timeline.d.mts +7 -0
  441. package/dist/timeline.d.ts +7 -0
  442. package/dist/timeline.js +62 -0
  443. package/dist/timeline.mjs +17 -0
  444. package/dist/toggle-button-group.d.mts +14 -0
  445. package/dist/toggle-button-group.d.ts +14 -0
  446. package/dist/toggle-button-group.js +90 -0
  447. package/dist/toggle-button-group.mjs +32 -0
  448. package/dist/toggle-button.d.mts +8 -0
  449. package/dist/toggle-button.d.ts +8 -0
  450. package/dist/toggle-button.js +62 -0
  451. package/dist/toggle-button.mjs +8 -0
  452. package/dist/tooltip.d.mts +7 -0
  453. package/dist/tooltip.d.ts +7 -0
  454. package/dist/tooltip.js +62 -0
  455. package/dist/tooltip.mjs +17 -0
  456. package/dist/typography.d.mts +7 -0
  457. package/dist/typography.d.ts +7 -0
  458. package/dist/typography.js +62 -0
  459. package/dist/typography.mjs +17 -0
  460. package/package.json +439 -7
  461. package/src/accordion-details.tsx +14 -0
  462. package/src/accordion-summary.tsx +14 -0
  463. package/src/accordion.tsx +14 -0
  464. package/src/alert.tsx +12 -0
  465. package/src/app-bar.tsx +12 -0
  466. package/src/autocomplete.tsx +26 -0
  467. package/src/avatar.tsx +12 -0
  468. package/src/backdrop.tsx +14 -0
  469. package/src/badge.tsx +12 -0
  470. package/src/bottom-navigation-action.tsx +14 -0
  471. package/src/bottom-navigation.tsx +14 -0
  472. package/src/box.tsx +12 -0
  473. package/src/breadcrumbs.tsx +14 -0
  474. package/src/button-group.tsx +14 -0
  475. package/src/button.tsx +9 -4
  476. package/src/card-actions.tsx +14 -0
  477. package/src/card-content.tsx +14 -0
  478. package/src/card-header.tsx +14 -0
  479. package/src/card-media.tsx +14 -0
  480. package/src/card.tsx +12 -0
  481. package/src/charts/BackofficeSwitchableChart.tsx +325 -0
  482. package/src/charts/FrontendBarChart.tsx +134 -0
  483. package/src/charts/FrontendDoughnutChart.tsx +372 -0
  484. package/src/charts/FrontendIncomeExpenseHorizontalBarChart.tsx +138 -0
  485. package/src/charts/FrontendLiabilitiesChart.tsx +97 -0
  486. package/src/charts/FrontendLineChart.tsx +299 -0
  487. package/src/charts/FrontendLineChartMobile.tsx +383 -0
  488. package/src/charts/FrontendMixedChart.tsx +264 -0
  489. package/src/charts/FrontendPercentageBar.tsx +247 -0
  490. package/src/charts/FrontendScenarioLineChart.tsx +308 -0
  491. package/src/charts/FrontendStackedChart.tsx +184 -0
  492. package/src/charts/LoadingChartBackdrop.tsx +32 -0
  493. package/src/charts/chart-utils.ts +58 -0
  494. package/src/charts/index.ts +59 -0
  495. package/src/charts/mock-data.ts +153 -0
  496. package/src/checkbox.tsx +16 -0
  497. package/src/chip.tsx +12 -0
  498. package/src/container.tsx +14 -0
  499. package/src/dialog-actions.tsx +14 -0
  500. package/src/dialog-content.tsx +14 -0
  501. package/src/dialog-title.tsx +14 -0
  502. package/src/dialog.tsx +12 -0
  503. package/src/divider.tsx +12 -0
  504. package/src/drawer.tsx +12 -0
  505. package/src/fab.tsx +12 -0
  506. package/src/form-control.tsx +14 -0
  507. package/src/grid.tsx +12 -0
  508. package/src/icon-button.tsx +14 -0
  509. package/src/image-list-item.tsx +14 -0
  510. package/src/image-list.tsx +14 -0
  511. package/src/input-label.tsx +14 -0
  512. package/src/link.tsx +12 -0
  513. package/src/list-item-icon.tsx +14 -0
  514. package/src/list-item-text.tsx +14 -0
  515. package/src/list-item.tsx +14 -0
  516. package/src/list.tsx +12 -0
  517. package/src/masonry.tsx +14 -0
  518. package/src/menu-item.tsx +14 -0
  519. package/src/menu.tsx +12 -0
  520. package/src/mui-augmentation.ts +23 -0
  521. package/src/pagination.tsx +14 -0
  522. package/src/paper.tsx +12 -0
  523. package/src/progress.tsx +25 -0
  524. package/src/radio-group.tsx +14 -0
  525. package/src/radio.tsx +15 -0
  526. package/src/rating.tsx +12 -0
  527. package/src/select.tsx +12 -0
  528. package/src/selection-button-group.tsx +58 -0
  529. package/src/skeleton.tsx +14 -0
  530. package/src/slider.tsx +12 -0
  531. package/src/snackbar.tsx +14 -0
  532. package/src/speed-dial-action.tsx +14 -0
  533. package/src/speed-dial.tsx +14 -0
  534. package/src/stack.tsx +12 -0
  535. package/src/step-content.tsx +14 -0
  536. package/src/step-label.tsx +14 -0
  537. package/src/step.tsx +12 -0
  538. package/src/stepper.tsx +12 -0
  539. package/src/switch.tsx +15 -0
  540. package/src/tab-context.tsx +11 -0
  541. package/src/tab-list.tsx +14 -0
  542. package/src/tab-panel.tsx +14 -0
  543. package/src/tab.tsx +12 -0
  544. package/src/table-body.tsx +14 -0
  545. package/src/table-cell.tsx +14 -0
  546. package/src/table-container.tsx +14 -0
  547. package/src/table-head.tsx +14 -0
  548. package/src/table-row.tsx +14 -0
  549. package/src/table.tsx +12 -0
  550. package/src/tabs.tsx +12 -0
  551. package/src/text-field.tsx +14 -0
  552. package/src/theme/buildCssVariables.ts +6 -0
  553. package/src/theme/createDesignTheme.ts +118 -2
  554. package/src/theme/index.ts +1 -0
  555. package/src/theme/spacing.ts +23 -0
  556. package/src/timeline-connector.tsx +14 -0
  557. package/src/timeline-content.tsx +14 -0
  558. package/src/timeline-dot.tsx +14 -0
  559. package/src/timeline-item.tsx +14 -0
  560. package/src/timeline-separator.tsx +14 -0
  561. package/src/timeline.tsx +14 -0
  562. package/src/toggle-button-group.tsx +35 -0
  563. package/src/toggle-button.tsx +15 -0
  564. package/src/tooltip.tsx +14 -0
  565. package/src/typography.tsx +14 -0
  566. package/tsup.config.ts +89 -1
  567. package/README.md +0 -124
@@ -0,0 +1,14 @@
1
+ import React from "react";
2
+ import MuiButtonGroup, {
3
+ type ButtonGroupProps as MuiButtonGroupProps,
4
+ } from "@mui/material/ButtonGroup";
5
+
6
+ export type ButtonGroupProps = MuiButtonGroupProps;
7
+
8
+ export const ButtonGroup = React.forwardRef<HTMLDivElement, ButtonGroupProps>(
9
+ (props, ref) => {
10
+ return <MuiButtonGroup ref={ref} {...props} />;
11
+ }
12
+ );
13
+
14
+ ButtonGroup.displayName = "ButtonGroup";
package/src/button.tsx CHANGED
@@ -1,9 +1,14 @@
1
- import MuiButton, { type ButtonProps as MuiButtonProps } from "@mui/material/Button";
1
+ import React from "react";
2
+ import MuiButton, {
3
+ type ButtonProps as MuiButtonProps,
4
+ } from "@mui/material/Button";
2
5
 
3
6
  export type ButtonProps = MuiButtonProps;
4
7
 
5
- export function Button(props: ButtonProps): JSX.Element {
6
- return <MuiButton {...props} />;
7
- }
8
+ export const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(
9
+ (props, ref) => {
10
+ return <MuiButton ref={ref} {...props} />;
11
+ }
12
+ );
8
13
 
9
14
  Button.displayName = "Button";
@@ -0,0 +1,14 @@
1
+ import React from "react";
2
+ import MuiCardActions, {
3
+ type CardActionsProps as MuiCardActionsProps,
4
+ } from "@mui/material/CardActions";
5
+
6
+ export type CardActionsProps = MuiCardActionsProps;
7
+
8
+ export const CardActions = React.forwardRef<HTMLDivElement, CardActionsProps>(
9
+ (props, ref) => {
10
+ return <MuiCardActions ref={ref} {...props} />;
11
+ }
12
+ );
13
+
14
+ CardActions.displayName = "CardActions";
@@ -0,0 +1,14 @@
1
+ import React from "react";
2
+ import MuiCardContent, {
3
+ type CardContentProps as MuiCardContentProps,
4
+ } from "@mui/material/CardContent";
5
+
6
+ export type CardContentProps = MuiCardContentProps;
7
+
8
+ export const CardContent = React.forwardRef<HTMLDivElement, CardContentProps>(
9
+ (props, ref) => {
10
+ return <MuiCardContent ref={ref} {...props} />;
11
+ }
12
+ );
13
+
14
+ CardContent.displayName = "CardContent";
@@ -0,0 +1,14 @@
1
+ import React from "react";
2
+ import MuiCardHeader, {
3
+ type CardHeaderProps as MuiCardHeaderProps,
4
+ } from "@mui/material/CardHeader";
5
+
6
+ export type CardHeaderProps = MuiCardHeaderProps;
7
+
8
+ export const CardHeader = React.forwardRef<HTMLDivElement, CardHeaderProps>(
9
+ (props, ref) => {
10
+ return <MuiCardHeader ref={ref} {...props} />;
11
+ }
12
+ );
13
+
14
+ CardHeader.displayName = "CardHeader";
@@ -0,0 +1,14 @@
1
+ import React from "react";
2
+ import MuiCardMedia, {
3
+ type CardMediaProps as MuiCardMediaProps,
4
+ } from "@mui/material/CardMedia";
5
+
6
+ export type CardMediaProps = MuiCardMediaProps;
7
+
8
+ export const CardMedia = React.forwardRef<HTMLDivElement, CardMediaProps>(
9
+ (props, ref) => {
10
+ return <MuiCardMedia ref={ref} {...props} />;
11
+ }
12
+ );
13
+
14
+ CardMedia.displayName = "CardMedia";
package/src/card.tsx ADDED
@@ -0,0 +1,12 @@
1
+ import React from "react";
2
+ import MuiCard, { type CardProps as MuiCardProps } from "@mui/material/Card";
3
+
4
+ export type CardProps = MuiCardProps;
5
+
6
+ export const Card = React.forwardRef<HTMLDivElement, CardProps>(
7
+ (props, ref) => {
8
+ return <MuiCard ref={ref} {...props} />;
9
+ }
10
+ );
11
+
12
+ Card.displayName = "Card";
@@ -0,0 +1,325 @@
1
+ import React, { useMemo, useRef } from "react";
2
+ import { Button, ButtonGroup } from "@mui/material";
3
+ import { styled } from "@mui/material/styles";
4
+ import StackedLineChart from "@mui/icons-material/StackedLineChart";
5
+ import EqualizerIcon from "@mui/icons-material/Equalizer";
6
+ import {
7
+ BarElement,
8
+ CategoryScale,
9
+ Chart as ChartJS,
10
+ ChartOptions,
11
+ Legend,
12
+ LinearScale,
13
+ LineElement,
14
+ PointElement,
15
+ TimeScale,
16
+ Title,
17
+ Tooltip,
18
+ } from "chart.js";
19
+ import "chartjs-adapter-date-fns";
20
+ import { Bar, Line } from "react-chartjs-2";
21
+ import { LoadingChartBackdrop } from "./LoadingChartBackdrop";
22
+ import {
23
+ tooltipsBaseOption,
24
+ formatNumber,
25
+ formatNumberWithText,
26
+ } from "./chart-utils";
27
+ import { FOUNDATION_COLORS } from "../theme";
28
+ import { format } from "date-fns";
29
+
30
+ ChartJS.register(
31
+ CategoryScale,
32
+ LinearScale,
33
+ TimeScale,
34
+ PointElement,
35
+ LineElement,
36
+ BarElement,
37
+ Title,
38
+ Tooltip,
39
+ Legend,
40
+ );
41
+
42
+ export type ChartType = "line" | "bar";
43
+
44
+ /**
45
+ * Default chart options for the backoffice switchable (line/bar) chart.
46
+ * Uses time scale on x, shared tooltip/legend styling, and optional theme colors.
47
+ */
48
+ export function getChartOptions(options?: {
49
+ primaryColor?: string;
50
+ textColor?: string;
51
+ }): ChartOptions {
52
+ const primaryColor = options?.primaryColor ?? FOUNDATION_COLORS.brand.primary;
53
+ const textColor = options?.textColor ?? FOUNDATION_COLORS.text.primary;
54
+
55
+ return {
56
+ scales: {
57
+ x: {
58
+ grid: {
59
+ display: false,
60
+ },
61
+ stacked: false,
62
+ type: "time",
63
+ time: {
64
+ unit: "month",
65
+ },
66
+ ticks: {
67
+ callback: (value: string | number) => {
68
+ if (typeof value === "number" && value > 0) {
69
+ return format(new Date(value), "MMM").toUpperCase();
70
+ }
71
+ const parsedValue = Number(value);
72
+ return Number.isNaN(parsedValue)
73
+ ? ""
74
+ : format(new Date(parsedValue), "MMM").toUpperCase();
75
+ },
76
+ },
77
+ },
78
+ y: {
79
+ grid: {
80
+ display: false,
81
+ },
82
+ stacked: false,
83
+ ticks: {
84
+ stepSize: 1,
85
+ maxTicksLimit: 5,
86
+ },
87
+ },
88
+ },
89
+ maintainAspectRatio: false,
90
+ responsive: true,
91
+ plugins: {
92
+ tooltip: {
93
+ ...tooltipsBaseOption,
94
+ mode: "nearest" as const,
95
+ },
96
+ legend: {
97
+ display: false,
98
+ },
99
+ },
100
+ interaction: {
101
+ mode: "nearest" as const,
102
+ intersect: false,
103
+ },
104
+ };
105
+ return {
106
+ responsive: true,
107
+ maintainAspectRatio: false,
108
+ plugins: {
109
+ legend: {
110
+ display: true,
111
+ labels: {
112
+ color: textColor,
113
+ usePointStyle: true,
114
+ },
115
+ },
116
+ tooltip: {
117
+ ...tooltipsBaseOption,
118
+ titleColor: textColor,
119
+ bodyColor: textColor,
120
+ borderColor: primaryColor,
121
+ callbacks: {
122
+ label(tooltipItem: any) {
123
+ const value = tooltipItem.parsed?.y ?? 0;
124
+ return `$${formatNumber(Math.abs(value))}`;
125
+ },
126
+ },
127
+ },
128
+ },
129
+ scales: {
130
+ x: {
131
+ type: "time",
132
+ time: { unit: "month" },
133
+ grid: { display: false },
134
+ ticks: { color: textColor, maxTicksLimit: 12 },
135
+ },
136
+ y: {
137
+ beginAtZero: true,
138
+ grid: { display: false },
139
+ ticks: {
140
+ color: textColor,
141
+ callback(value: unknown) {
142
+ return formatNumberWithText(Number(value), 1);
143
+ },
144
+ },
145
+ },
146
+ },
147
+ };
148
+ }
149
+
150
+ export interface BackofficeSwitchableChartProps {
151
+ chartTitle?: string;
152
+ datasets: any[];
153
+ /** When provided, merged with getChartOptions(); when omitted, only getChartOptions() is used. */
154
+ chartOptions?: ChartOptions;
155
+ isLoading: boolean;
156
+ isError: boolean;
157
+ chartType: ChartType;
158
+ onChartTypeChange: (type: ChartType) => void;
159
+ primaryColor?: string;
160
+ textColor?: string;
161
+ }
162
+
163
+ /* Match backoffice contact.scss: .line-chart-container, .switchable-chart-container */
164
+ const ChartContainer = styled("div")({
165
+ display: "flex",
166
+ width: "100%",
167
+ height: "100%",
168
+ minWidth: 0,
169
+ flexDirection: "column",
170
+ });
171
+
172
+ /* Match .switchable-chart-header */
173
+ const ChartHeader = styled("div")({
174
+ display: "flex",
175
+ justifyContent: "space-between",
176
+ alignItems: "center",
177
+ marginBottom: "1rem",
178
+ flexWrap: "wrap",
179
+ gap: "0.5rem",
180
+ });
181
+
182
+ const ChartTitle = styled("div")({
183
+ fontSize: 16,
184
+ fontWeight: 600,
185
+ "@media (max-width: 768px)": { fontSize: 14 },
186
+ });
187
+
188
+ /* Match .chart-controls (inline style from original) */
189
+ const ChartControls = styled("div")({
190
+ display: "flex",
191
+ justifyContent: "flex-end",
192
+ marginBottom: 12,
193
+ });
194
+
195
+ /* Match .line-chart-size */
196
+ const ChartWrapper = styled("div")({
197
+ flex: 1,
198
+ position: "relative",
199
+ minHeight: 250,
200
+ width: "100%",
201
+ height: "100%",
202
+ "@media (max-width: 768px)": { minHeight: 200 },
203
+ "@media (max-width: 480px)": { minHeight: 180 },
204
+ });
205
+
206
+ /* Match .loading-chart-indicator */
207
+ const LoadingOverlay = styled("div")({
208
+ alignItems: "center",
209
+ backgroundColor: "rgba(255, 255, 255, 0.8)",
210
+ display: "flex",
211
+ flexDirection: "column",
212
+ height: "100%",
213
+ justifyContent: "center",
214
+ left: 0,
215
+ position: "absolute",
216
+ top: 0,
217
+ width: "100%",
218
+ "& span": { marginTop: "1rem" },
219
+ });
220
+
221
+ export const BackofficeSwitchableChart: React.FC<
222
+ BackofficeSwitchableChartProps
223
+ > = ({
224
+ chartTitle,
225
+ datasets,
226
+ chartOptions: chartOptionsOverride,
227
+ isLoading,
228
+ isError,
229
+ chartType,
230
+ onChartTypeChange,
231
+ primaryColor = FOUNDATION_COLORS.brand.primary,
232
+ textColor = FOUNDATION_COLORS.text.primary,
233
+ }) => {
234
+ const chartRef = useRef(null);
235
+
236
+ const chartData = useMemo(() => ({ datasets }), [datasets]);
237
+
238
+ const responsiveChartOptions = useMemo(() => {
239
+ const base = getChartOptions({ primaryColor, textColor });
240
+ return {
241
+ ...base,
242
+ ...chartOptionsOverride,
243
+ plugins: {
244
+ ...base.plugins,
245
+ ...(chartOptionsOverride?.plugins ?? {}),
246
+ },
247
+ scales: {
248
+ ...base.scales,
249
+ ...(chartOptionsOverride?.scales ?? {}),
250
+ },
251
+ } as ChartOptions;
252
+ }, [primaryColor, textColor, chartOptionsOverride]);
253
+
254
+ return (
255
+ <ChartContainer>
256
+ <ChartHeader>
257
+ {chartTitle ? <ChartTitle>{chartTitle}</ChartTitle> : <div />}
258
+ <ChartControls>
259
+ <ButtonGroup
260
+ size="small"
261
+ aria-label="chart type selector"
262
+ sx={{
263
+ backgroundColor: "#fff",
264
+ borderRadius: "5px",
265
+ border: `1px solid ${primaryColor}`,
266
+ "& .MuiButton-root": {
267
+ minWidth: "32px",
268
+ minHeight: "32px",
269
+ padding: "4px",
270
+ border: "none",
271
+ color: textColor,
272
+ "&:hover": { boxShadow: "none" },
273
+ },
274
+ "& .MuiButton-contained": {
275
+ backgroundColor: primaryColor,
276
+ color: textColor,
277
+ "&:hover": { boxShadow: "none" },
278
+ },
279
+ }}
280
+ >
281
+ <Button
282
+ variant={chartType === "line" ? "contained" : "text"}
283
+ onClick={() => onChartTypeChange("line")}
284
+ aria-label="Line chart"
285
+ >
286
+ <StackedLineChart sx={{ fontSize: 14 }} />
287
+ </Button>
288
+ <Button
289
+ variant={chartType === "bar" ? "contained" : "text"}
290
+ onClick={() => onChartTypeChange("bar")}
291
+ aria-label="Bar chart"
292
+ >
293
+ <EqualizerIcon sx={{ fontSize: 14 }} />
294
+ </Button>
295
+ </ButtonGroup>
296
+ </ChartControls>
297
+ </ChartHeader>
298
+
299
+ <ChartWrapper>
300
+ {!isLoading &&
301
+ !isError &&
302
+ (chartType === "line" ? (
303
+ <Line
304
+ ref={chartRef}
305
+ data={chartData as any}
306
+ options={responsiveChartOptions as any}
307
+ />
308
+ ) : (
309
+ <Bar
310
+ ref={chartRef}
311
+ data={chartData as any}
312
+ options={responsiveChartOptions as any}
313
+ />
314
+ ))}
315
+ {(isLoading || isError) && (
316
+ <LoadingOverlay>
317
+ <LoadingChartBackdrop isLoading={isLoading} isError={isError} />
318
+ </LoadingOverlay>
319
+ )}
320
+ </ChartWrapper>
321
+ </ChartContainer>
322
+ );
323
+ };
324
+
325
+ BackofficeSwitchableChart.displayName = "BackofficeSwitchableChart";
@@ -0,0 +1,134 @@
1
+ import React, { useMemo } from "react";
2
+ import { styled } from "@mui/material/styles";
3
+ import {
4
+ BarController,
5
+ BarElement,
6
+ CategoryScale,
7
+ Chart as ChartJS,
8
+ Legend,
9
+ LinearScale,
10
+ Title,
11
+ Tooltip,
12
+ } from "chart.js";
13
+ import { Chart } from "react-chartjs-2";
14
+ import { tooltipsBaseOption, formatNumber, formatNumberWithText } from "./chart-utils";
15
+
16
+ ChartJS.register(
17
+ CategoryScale,
18
+ LinearScale,
19
+ BarElement,
20
+ BarController,
21
+ Title,
22
+ Tooltip,
23
+ Legend
24
+ );
25
+
26
+ export interface BarChartDataset {
27
+ label: string;
28
+ data: number[];
29
+ backgroundColor?: string | string[];
30
+ borderColor?: string | string[];
31
+ borderWidth?: number;
32
+ }
33
+
34
+ export interface FrontendBarChartData {
35
+ labels: string[];
36
+ datasets: BarChartDataset[];
37
+ }
38
+
39
+ export interface FrontendBarChartProps {
40
+ data: FrontendBarChartData;
41
+ customChartOptions?: Record<string, any>;
42
+ }
43
+
44
+ const ChartWrapper = styled("div")({
45
+ position: "relative",
46
+ height: 300,
47
+ width: "100%",
48
+ });
49
+
50
+ const baseChartOptions = {
51
+ maintainAspectRatio: false,
52
+ responsive: true,
53
+ plugins: {
54
+ legend: { display: false },
55
+ tooltip: {
56
+ ...tooltipsBaseOption,
57
+ callbacks: {
58
+ label(tooltipItem: any) {
59
+ const { parsed = { y: 0 } } = tooltipItem;
60
+ const chartValue = parsed.y;
61
+ const chartValueWithCommas = formatNumber(Math.abs(chartValue));
62
+ return `${
63
+ chartValue > 0
64
+ ? `$${chartValueWithCommas}`
65
+ : `-$${chartValueWithCommas}`
66
+ } `;
67
+ },
68
+ },
69
+ },
70
+ },
71
+ scales: {
72
+ x: {
73
+ grid: { display: true, drawBorder: true, drawOnChartArea: false },
74
+ },
75
+ y: {
76
+ display: true,
77
+ position: "left" as const,
78
+ grid: { display: false, drawBorder: false },
79
+ ticks: {
80
+ padding: 10,
81
+ callback(value: any) {
82
+ return formatNumberWithText(Number(value), 1);
83
+ },
84
+ },
85
+ },
86
+ },
87
+ };
88
+
89
+ const mergeOptions = (
90
+ base: Record<string, any>,
91
+ custom?: Record<string, any>
92
+ ): Record<string, any> => {
93
+ if (!custom) return base;
94
+ return deepMerge(base, custom);
95
+ };
96
+
97
+ const deepMerge = (
98
+ target: Record<string, any>,
99
+ source: Record<string, any>
100
+ ): Record<string, any> => {
101
+ const result = { ...target };
102
+ for (const key of Object.keys(source)) {
103
+ if (
104
+ source[key] &&
105
+ typeof source[key] === "object" &&
106
+ !Array.isArray(source[key]) &&
107
+ target[key] &&
108
+ typeof target[key] === "object"
109
+ ) {
110
+ result[key] = deepMerge(target[key], source[key]);
111
+ } else {
112
+ result[key] = source[key];
113
+ }
114
+ }
115
+ return result;
116
+ };
117
+
118
+ export const FrontendBarChart: React.FC<FrontendBarChartProps> = ({
119
+ data,
120
+ customChartOptions,
121
+ }) => {
122
+ const options = useMemo(
123
+ () => mergeOptions(baseChartOptions, customChartOptions),
124
+ [customChartOptions]
125
+ );
126
+
127
+ return (
128
+ <ChartWrapper>
129
+ <Chart type="bar" data={data} options={options as any} />
130
+ </ChartWrapper>
131
+ );
132
+ };
133
+
134
+ FrontendBarChart.displayName = "FrontendBarChart";