@shohojdhara/atomix 0.3.3 → 0.3.5

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 (489) hide show
  1. package/README.md +46 -28
  2. package/dist/atomix.css +15 -9
  3. package/dist/atomix.css.map +1 -0
  4. package/dist/atomix.min.css +15108 -11
  5. package/dist/atomix.min.css.map +1 -0
  6. package/dist/charts.d.ts +1929 -0
  7. package/dist/charts.js +6482 -0
  8. package/dist/charts.js.map +1 -0
  9. package/dist/core.d.ts +1289 -0
  10. package/dist/core.js +3357 -0
  11. package/dist/core.js.map +1 -0
  12. package/dist/forms.d.ts +1085 -0
  13. package/dist/forms.js +2450 -0
  14. package/dist/forms.js.map +1 -0
  15. package/dist/heavy.d.ts +636 -0
  16. package/dist/heavy.js +4550 -0
  17. package/dist/heavy.js.map +1 -0
  18. package/dist/index.d.ts +5196 -4618
  19. package/dist/index.esm.js +4240 -2776
  20. package/dist/index.esm.js.map +1 -1
  21. package/dist/index.js +4057 -2571
  22. package/dist/index.js.map +1 -1
  23. package/dist/index.min.js +1 -1
  24. package/dist/index.min.js.map +1 -1
  25. package/dist/layout.d.ts +300 -0
  26. package/dist/layout.js +336 -0
  27. package/dist/layout.js.map +1 -0
  28. package/dist/theme.d.ts +1992 -0
  29. package/dist/theme.js +5348 -0
  30. package/dist/theme.js.map +1 -0
  31. package/package.json +63 -68
  32. package/scripts/atomix-cli.js +879 -15
  33. package/scripts/cli/__tests__/cli-commands.test.js +204 -0
  34. package/scripts/cli/__tests__/utils.test.js +201 -0
  35. package/scripts/cli/__tests__/vitest.config.js +26 -0
  36. package/scripts/cli/interactive-init.js +37 -45
  37. package/scripts/cli/theme-bridge.js +129 -0
  38. package/scripts/cli/token-manager.js +32 -7
  39. package/scripts/cli/utils.js +347 -0
  40. package/scripts/sync-theme-config.js +22 -22
  41. package/src/components/Accordion/Accordion.tsx +5 -54
  42. package/src/components/Accordion/index.ts +1 -1
  43. package/src/components/Avatar/Avatar.tsx +3 -3
  44. package/src/components/Badge/Badge.tsx +3 -3
  45. package/src/components/Breadcrumb/Breadcrumb.tsx +3 -3
  46. package/src/components/Button/Button.tsx +36 -1
  47. package/src/components/Card/ElevationCard.tsx +1 -1
  48. package/src/components/Chart/AnimatedChart.tsx +19 -17
  49. package/src/components/Chart/AreaChart.tsx +5 -1
  50. package/src/components/Chart/BarChart.tsx +1 -0
  51. package/src/components/Chart/BubbleChart.tsx +6 -5
  52. package/src/components/Chart/ChartToolbar.tsx +1 -0
  53. package/src/components/Chart/FunnelChart.tsx +1 -1
  54. package/src/components/Chart/RadarChart.tsx +19 -12
  55. package/src/components/Chart/ScatterChart.tsx +3 -3
  56. package/src/components/Chart/TreemapChart.tsx +2 -1
  57. package/src/components/Chart/WaterfallChart.tsx +0 -1
  58. package/src/components/Chart/types.ts +12 -2
  59. package/src/components/Chart/utils.ts +4 -3
  60. package/src/components/DataTable/DataTable.tsx +3 -3
  61. package/src/components/Dropdown/Dropdown.tsx +12 -9
  62. package/src/components/Footer/FooterSection.tsx +3 -3
  63. package/src/components/Form/Checkbox.tsx +3 -3
  64. package/src/components/Form/Input.tsx +4 -2
  65. package/src/components/Form/Radio.tsx +3 -3
  66. package/src/components/Form/Select.tsx +3 -3
  67. package/src/components/Form/Textarea.tsx +4 -2
  68. package/src/components/List/List.stories.tsx +3 -3
  69. package/src/components/List/List.tsx +3 -3
  70. package/src/components/List/ListGroup.tsx +3 -1
  71. package/src/components/Modal/Modal.tsx +3 -3
  72. package/src/components/Navigation/Menu/MegaMenu.tsx +9 -3
  73. package/src/components/Navigation/Menu/Menu.tsx +9 -3
  74. package/src/components/Pagination/Pagination.tsx +6 -5
  75. package/src/components/PhotoViewer/PhotoViewerImage.tsx +2 -2
  76. package/src/components/Popover/Popover.tsx +4 -4
  77. package/src/components/Progress/Progress.tsx +6 -2
  78. package/src/components/Rating/Rating.tsx +5 -2
  79. package/src/components/Slider/Slider.tsx +10 -9
  80. package/src/components/Spinner/Spinner.tsx +3 -3
  81. package/src/components/Tabs/Tabs.tsx +3 -3
  82. package/src/components/Tooltip/Tooltip.tsx +3 -3
  83. package/src/components/index.ts +5 -2
  84. package/src/layouts/MasonryGrid/MasonryGrid.tsx +2 -2
  85. package/src/lib/composables/useChartPerformance.ts +102 -78
  86. package/src/lib/composables/useChartScale.ts +10 -0
  87. package/src/lib/composables/useHero.ts +9 -2
  88. package/src/lib/composables/useHeroBackgroundSlider.ts +5 -3
  89. package/src/lib/composables/useSideMenu.ts +1 -0
  90. package/src/lib/composables/useVideoPlayer.ts +3 -2
  91. package/src/lib/config/index.ts +275 -0
  92. package/src/lib/config/loader.ts +147 -0
  93. package/src/lib/hooks/index.ts +0 -1
  94. package/src/lib/hooks/useComponentCustomization.ts +10 -14
  95. package/src/lib/hooks/usePerformanceMonitor.ts +149 -0
  96. package/src/lib/index.ts +1 -0
  97. package/src/lib/patterns/index.ts +2 -2
  98. package/src/lib/patterns/slots.tsx +2 -2
  99. package/src/lib/theme/composeTheme.ts +1 -6
  100. package/src/lib/theme/config/index.ts +1 -1
  101. package/src/lib/theme/config/loader.ts +75 -41
  102. package/src/lib/theme/config/types.ts +21 -7
  103. package/src/lib/theme/config/validator.ts +1 -1
  104. package/src/lib/theme/constants.ts +12 -2
  105. package/src/lib/theme/core/ThemeEngine.ts +8 -0
  106. package/src/lib/theme/core/ThemeValidator.ts +5 -2
  107. package/src/lib/theme/createTheme.ts +0 -1
  108. package/src/lib/theme/createThemeFromConfig.ts +132 -0
  109. package/src/lib/theme/devtools/CLI.ts +161 -76
  110. package/src/lib/theme/devtools/Comparator.tsx +343 -0
  111. package/src/lib/theme/devtools/IMPROVEMENTS.md +429 -0
  112. package/src/lib/theme/devtools/Inspector.tsx +22 -7
  113. package/src/lib/theme/devtools/LiveEditor.tsx +399 -0
  114. package/src/lib/theme/devtools/README.md +433 -0
  115. package/src/lib/theme/devtools/index.ts +12 -11
  116. package/src/lib/theme/generateCSSVariables.ts +80 -39
  117. package/src/lib/theme/i18n/rtl.ts +2 -1
  118. package/src/lib/theme/index.ts +18 -2
  119. package/src/lib/theme/runtime/ThemeApplicator.ts +28 -11
  120. package/src/lib/theme/runtime/ThemeErrorBoundary.tsx +3 -3
  121. package/src/lib/theme/runtime/ThemeManager.test.ts +17 -1
  122. package/src/lib/theme/runtime/ThemeManager.ts +11 -7
  123. package/src/lib/theme/types.ts +42 -43
  124. package/src/lib/theme-tools.ts +8 -68
  125. package/src/lib/types/components.ts +252 -109
  126. package/src/lib/types/partProps.ts +0 -16
  127. package/src/lib/utils/fontPreloader.ts +148 -0
  128. package/src/lib/utils/index.ts +11 -0
  129. package/src/lib/utils/memoryMonitor.ts +189 -0
  130. package/src/styles/01-settings/_settings.fonts.scss +2 -5
  131. package/src/styles/01-settings/_settings.navbar.scss +1 -1
  132. package/src/styles/03-generic/_generated-root.css +26 -0
  133. package/src/styles/06-components/_components.navbar.scss +6 -5
  134. package/src/themes/README.md +1 -2
  135. package/src/themes/themes.config.js +30 -181
  136. package/dist/themes/applemix.css +0 -16576
  137. package/dist/themes/applemix.css.map +0 -1
  138. package/dist/themes/applemix.min.css +0 -73
  139. package/dist/themes/boomdevs.css +0 -16007
  140. package/dist/themes/boomdevs.css.map +0 -1
  141. package/dist/themes/boomdevs.min.css +0 -406
  142. package/dist/themes/esrar.css +0 -18424
  143. package/dist/themes/esrar.css.map +0 -1
  144. package/dist/themes/esrar.min.css +0 -221
  145. package/dist/themes/flashtrade.css +0 -17596
  146. package/dist/themes/flashtrade.css.map +0 -1
  147. package/dist/themes/flashtrade.min.css +0 -196
  148. package/dist/themes/mashroom.css +0 -31082
  149. package/dist/themes/mashroom.css.map +0 -1
  150. package/dist/themes/mashroom.min.css +0 -450
  151. package/dist/themes/shaj-default.css +0 -17200
  152. package/dist/themes/shaj-default.css.map +0 -1
  153. package/dist/themes/shaj-default.min.css +0 -502
  154. package/scripts/build-themes.js +0 -208
  155. package/src/components/AtomixGlass/atomixGLass.old.tsx +0 -1263
  156. package/src/lib/theme/__tests__/ThemeBuilder.test.ts +0 -223
  157. package/src/lib/theme/builders/ThemeBuilder.ts +0 -372
  158. package/src/lib/theme/errors.test.ts +0 -207
  159. package/src/lib/theme/generators/CSSGenerator.ts +0 -311
  160. package/src/lib/theme/generators/ConfigGenerator.ts +0 -287
  161. package/src/lib/theme/generators/TypeGenerator.ts +0 -228
  162. package/src/lib/theme/generators/index.ts +0 -21
  163. package/src/lib/theme/monitoring/ThemeAnalytics.ts +0 -409
  164. package/src/lib/theme/monitoring/index.ts +0 -17
  165. package/src/lib/theme/overrides/ComponentOverrides.ts +0 -243
  166. package/src/lib/theme/overrides/index.ts +0 -15
  167. package/src/lib/theme/whitelabel/WhiteLabelManager.ts +0 -364
  168. package/src/lib/theme/whitelabel/index.ts +0 -13
  169. package/src/themes/THEME_CHECKLIST.md +0 -74
  170. package/src/themes/applemix/01-settings/_index.scss +0 -24
  171. package/src/themes/applemix/01-settings/_settings.animations.scss +0 -0
  172. package/src/themes/applemix/01-settings/_settings.background.scss +0 -6
  173. package/src/themes/applemix/01-settings/_settings.colors.scss +0 -75
  174. package/src/themes/applemix/01-settings/_settings.config.scss +0 -15
  175. package/src/themes/applemix/01-settings/_settings.typography.scss +0 -30
  176. package/src/themes/applemix/02-tools/_index.scss +0 -4
  177. package/src/themes/applemix/03-generic/_index.scss +0 -7
  178. package/src/themes/applemix/04-elements/_index.scss +0 -7
  179. package/src/themes/applemix/05-objects/_index.scss +0 -7
  180. package/src/themes/applemix/06-components/_index.scss +0 -15
  181. package/src/themes/applemix/99-utilities/_index.scss +0 -7
  182. package/src/themes/applemix/README.md +0 -378
  183. package/src/themes/applemix/index.scss +0 -33
  184. package/src/themes/boomdevs/01-settings/_index.scss +0 -38
  185. package/src/themes/boomdevs/01-settings/_settings.accordion.scss +0 -12
  186. package/src/themes/boomdevs/01-settings/_settings.animations.scss +0 -11
  187. package/src/themes/boomdevs/01-settings/_settings.avatar.scss +0 -9
  188. package/src/themes/boomdevs/01-settings/_settings.badge.scss +0 -11
  189. package/src/themes/boomdevs/01-settings/_settings.border-radius.scss +0 -16
  190. package/src/themes/boomdevs/01-settings/_settings.border.scss +0 -10
  191. package/src/themes/boomdevs/01-settings/_settings.box-shadow.scss +0 -14
  192. package/src/themes/boomdevs/01-settings/_settings.breadcrumb.scss +0 -13
  193. package/src/themes/boomdevs/01-settings/_settings.breakpoints.scss +0 -15
  194. package/src/themes/boomdevs/01-settings/_settings.button.scss +0 -9
  195. package/src/themes/boomdevs/01-settings/_settings.callout.scss +0 -9
  196. package/src/themes/boomdevs/01-settings/_settings.card.scss +0 -11
  197. package/src/themes/boomdevs/01-settings/_settings.checkbox.scss +0 -9
  198. package/src/themes/boomdevs/01-settings/_settings.colors.scss +0 -145
  199. package/src/themes/boomdevs/01-settings/_settings.dropdown.scss +0 -11
  200. package/src/themes/boomdevs/01-settings/_settings.grid.scss +0 -16
  201. package/src/themes/boomdevs/01-settings/_settings.input.scss +0 -14
  202. package/src/themes/boomdevs/01-settings/_settings.link.scss +0 -11
  203. package/src/themes/boomdevs/01-settings/_settings.list.scss +0 -10
  204. package/src/themes/boomdevs/01-settings/_settings.modal.scss +0 -16
  205. package/src/themes/boomdevs/01-settings/_settings.navbar.scss +0 -16
  206. package/src/themes/boomdevs/01-settings/_settings.pagination.scss +0 -13
  207. package/src/themes/boomdevs/01-settings/_settings.progress.scss +0 -11
  208. package/src/themes/boomdevs/01-settings/_settings.rating.scss +0 -10
  209. package/src/themes/boomdevs/01-settings/_settings.spacing.scss +0 -33
  210. package/src/themes/boomdevs/01-settings/_settings.spinner.scss +0 -11
  211. package/src/themes/boomdevs/01-settings/_settings.steps.scss +0 -12
  212. package/src/themes/boomdevs/01-settings/_settings.tabs.scss +0 -12
  213. package/src/themes/boomdevs/01-settings/_settings.todo.scss +0 -15
  214. package/src/themes/boomdevs/01-settings/_settings.toggle.scss +0 -14
  215. package/src/themes/boomdevs/01-settings/_settings.tooltip.scss +0 -13
  216. package/src/themes/boomdevs/01-settings/_settings.typography.scss +0 -58
  217. package/src/themes/boomdevs/01-settings/_settings.video-player.scss +0 -12
  218. package/src/themes/boomdevs/02-tools/_index.scss +0 -7
  219. package/src/themes/boomdevs/03-generic/_index.scss +0 -7
  220. package/src/themes/boomdevs/04-elements/_index.scss +0 -7
  221. package/src/themes/boomdevs/05-objects/_index.scss +0 -7
  222. package/src/themes/boomdevs/06-components/_components.button.scss +0 -11
  223. package/src/themes/boomdevs/06-components/_index.scss +0 -11
  224. package/src/themes/boomdevs/99-utilities/_index.scss +0 -7
  225. package/src/themes/boomdevs/index.scss +0 -26
  226. package/src/themes/esrar/01-settings/_index.scss +0 -15
  227. package/src/themes/esrar/01-settings/_settings.colors.scss +0 -91
  228. package/src/themes/esrar/02-tools/_index.scss +0 -8
  229. package/src/themes/esrar/02-tools/_tools.animations.scss +0 -342
  230. package/src/themes/esrar/06-components/_components.accordion.scss +0 -49
  231. package/src/themes/esrar/06-components/_components.avatar-group.scss +0 -14
  232. package/src/themes/esrar/06-components/_components.avatar.scss +0 -61
  233. package/src/themes/esrar/06-components/_components.badge.scss +0 -117
  234. package/src/themes/esrar/06-components/_components.breadcrumb.scss +0 -65
  235. package/src/themes/esrar/06-components/_components.btn-group.scss +0 -19
  236. package/src/themes/esrar/06-components/_components.button.scss +0 -224
  237. package/src/themes/esrar/06-components/_components.callout.scss +0 -51
  238. package/src/themes/esrar/06-components/_components.card.scss +0 -134
  239. package/src/themes/esrar/06-components/_components.chart.scss +0 -24
  240. package/src/themes/esrar/06-components/_components.checkbox-group.scss +0 -26
  241. package/src/themes/esrar/06-components/_components.checkbox.scss +0 -71
  242. package/src/themes/esrar/06-components/_components.color-mode-toggle.scss +0 -29
  243. package/src/themes/esrar/06-components/_components.countdown.scss +0 -67
  244. package/src/themes/esrar/06-components/_components.data-table.scss +0 -22
  245. package/src/themes/esrar/06-components/_components.datepicker.scss +0 -20
  246. package/src/themes/esrar/06-components/_components.dropdown.scss +0 -272
  247. package/src/themes/esrar/06-components/_components.edge-panel.scss +0 -10
  248. package/src/themes/esrar/06-components/_components.form-group.scss +0 -15
  249. package/src/themes/esrar/06-components/_components.form.scss +0 -66
  250. package/src/themes/esrar/06-components/_components.hero.scss +0 -251
  251. package/src/themes/esrar/06-components/_components.icon.scss +0 -33
  252. package/src/themes/esrar/06-components/_components.image-gallery.scss +0 -29
  253. package/src/themes/esrar/06-components/_components.input.scss +0 -91
  254. package/src/themes/esrar/06-components/_components.list-group.scss +0 -26
  255. package/src/themes/esrar/06-components/_components.modal.scss +0 -148
  256. package/src/themes/esrar/06-components/_components.notification.scss +0 -80
  257. package/src/themes/esrar/06-components/_components.pagination.scss +0 -84
  258. package/src/themes/esrar/06-components/_components.popover.scss +0 -10
  259. package/src/themes/esrar/06-components/_components.progress.scss +0 -64
  260. package/src/themes/esrar/06-components/_components.rating.scss +0 -26
  261. package/src/themes/esrar/06-components/_components.skeleton.scss +0 -15
  262. package/src/themes/esrar/06-components/_components.slider.scss +0 -90
  263. package/src/themes/esrar/06-components/_components.spinner.scss +0 -71
  264. package/src/themes/esrar/06-components/_components.steps.scss +0 -76
  265. package/src/themes/esrar/06-components/_components.tab.scss +0 -58
  266. package/src/themes/esrar/06-components/_components.tag.scss +0 -21
  267. package/src/themes/esrar/06-components/_components.timeline.scss +0 -19
  268. package/src/themes/esrar/06-components/_components.toast.scss +0 -91
  269. package/src/themes/esrar/06-components/_components.toggle.scss +0 -74
  270. package/src/themes/esrar/06-components/_components.tooltip.scss +0 -45
  271. package/src/themes/esrar/06-components/_components.upload.scss +0 -102
  272. package/src/themes/esrar/06-components/_index.scss +0 -42
  273. package/src/themes/esrar/index.scss +0 -30
  274. package/src/themes/flashtrade/01-settings/_index.scss +0 -19
  275. package/src/themes/flashtrade/01-settings/_settings.animations.scss +0 -11
  276. package/src/themes/flashtrade/01-settings/_settings.background.scss +0 -9
  277. package/src/themes/flashtrade/01-settings/_settings.colors.scss +0 -79
  278. package/src/themes/flashtrade/01-settings/_settings.config.scss +0 -16
  279. package/src/themes/flashtrade/01-settings/_settings.typography.scss +0 -35
  280. package/src/themes/flashtrade/02-tools/_index.scss +0 -8
  281. package/src/themes/flashtrade/03-generic/_index.scss +0 -8
  282. package/src/themes/flashtrade/04-elements/_index.scss +0 -12
  283. package/src/themes/flashtrade/05-objects/_index.scss +0 -8
  284. package/src/themes/flashtrade/06-components/_components.badge.scss +0 -156
  285. package/src/themes/flashtrade/06-components/_components.button.scss +0 -135
  286. package/src/themes/flashtrade/06-components/_components.card.scss +0 -214
  287. package/src/themes/flashtrade/06-components/_components.navbar.scss +0 -227
  288. package/src/themes/flashtrade/06-components/_index.scss +0 -13
  289. package/src/themes/flashtrade/99-utilities/_index.scss +0 -9
  290. package/src/themes/flashtrade/99-utilities/_utilities.trading.scss +0 -187
  291. package/src/themes/flashtrade/README.md +0 -386
  292. package/src/themes/flashtrade/demo.html +0 -272
  293. package/src/themes/flashtrade/index.scss +0 -36
  294. package/src/themes/mashroom/01-settings/_index.scss +0 -69
  295. package/src/themes/mashroom/01-settings/_settings.accordion.scss +0 -32
  296. package/src/themes/mashroom/01-settings/_settings.animations.scss +0 -26
  297. package/src/themes/mashroom/01-settings/_settings.avatar-group.scss +0 -22
  298. package/src/themes/mashroom/01-settings/_settings.avatar.scss +0 -57
  299. package/src/themes/mashroom/01-settings/_settings.badge.scss +0 -19
  300. package/src/themes/mashroom/01-settings/_settings.border-radius.scss +0 -24
  301. package/src/themes/mashroom/01-settings/_settings.border.scss +0 -14
  302. package/src/themes/mashroom/01-settings/_settings.box-shadow.scss +0 -40
  303. package/src/themes/mashroom/01-settings/_settings.breadcrumb.scss +0 -0
  304. package/src/themes/mashroom/01-settings/_settings.breakpoints.scss +0 -17
  305. package/src/themes/mashroom/01-settings/_settings.btn-group.scss +0 -5
  306. package/src/themes/mashroom/01-settings/_settings.button.scss +0 -50
  307. package/src/themes/mashroom/01-settings/_settings.callout.scss +0 -81
  308. package/src/themes/mashroom/01-settings/_settings.card.scss +0 -52
  309. package/src/themes/mashroom/01-settings/_settings.checkbox-group.scss +0 -5
  310. package/src/themes/mashroom/01-settings/_settings.checkbox.scss +0 -23
  311. package/src/themes/mashroom/01-settings/_settings.color-mode.scss +0 -7
  312. package/src/themes/mashroom/01-settings/_settings.colors.scss +0 -180
  313. package/src/themes/mashroom/01-settings/_settings.config.scss +0 -4
  314. package/src/themes/mashroom/01-settings/_settings.countdown.scss +0 -20
  315. package/src/themes/mashroom/01-settings/_settings.data-table.scss +0 -56
  316. package/src/themes/mashroom/01-settings/_settings.datepicker.scss +0 -45
  317. package/src/themes/mashroom/01-settings/_settings.design-tokens.scss +0 -3
  318. package/src/themes/mashroom/01-settings/_settings.dropdown.scss +0 -45
  319. package/src/themes/mashroom/01-settings/_settings.edge-panel.scss +0 -24
  320. package/src/themes/mashroom/01-settings/_settings.fonts.scss +0 -8
  321. package/src/themes/mashroom/01-settings/_settings.form-group.scss +0 -14
  322. package/src/themes/mashroom/01-settings/_settings.form.scss +0 -6
  323. package/src/themes/mashroom/01-settings/_settings.grid.scss +0 -23
  324. package/src/themes/mashroom/01-settings/_settings.hero.scss +0 -41
  325. package/src/themes/mashroom/01-settings/_settings.input.scss +0 -51
  326. package/src/themes/mashroom/01-settings/_settings.link.scss +0 -13
  327. package/src/themes/mashroom/01-settings/_settings.list-group.scss +0 -16
  328. package/src/themes/mashroom/01-settings/_settings.list.scss +0 -13
  329. package/src/themes/mashroom/01-settings/_settings.masonry-grid.scss +0 -23
  330. package/src/themes/mashroom/01-settings/_settings.menu.scss +0 -50
  331. package/src/themes/mashroom/01-settings/_settings.messages.scss +0 -98
  332. package/src/themes/mashroom/01-settings/_settings.modal.scss +0 -41
  333. package/src/themes/mashroom/01-settings/_settings.nav.scss +0 -20
  334. package/src/themes/mashroom/01-settings/_settings.navbar.scss +0 -54
  335. package/src/themes/mashroom/01-settings/_settings.pagination.scss +0 -30
  336. package/src/themes/mashroom/01-settings/_settings.photoviewer.scss +0 -45
  337. package/src/themes/mashroom/01-settings/_settings.popover.scss +0 -20
  338. package/src/themes/mashroom/01-settings/_settings.position.scss +0 -9
  339. package/src/themes/mashroom/01-settings/_settings.progress.scss +0 -17
  340. package/src/themes/mashroom/01-settings/_settings.rating.scss +0 -11
  341. package/src/themes/mashroom/01-settings/_settings.river.scss +0 -50
  342. package/src/themes/mashroom/01-settings/_settings.sectionintro.scss +0 -31
  343. package/src/themes/mashroom/01-settings/_settings.select.scss +0 -47
  344. package/src/themes/mashroom/01-settings/_settings.side-menu.scss +0 -79
  345. package/src/themes/mashroom/01-settings/_settings.skeleton.scss +0 -24
  346. package/src/themes/mashroom/01-settings/_settings.spacing.scss +0 -66
  347. package/src/themes/mashroom/01-settings/_settings.spinner.scss +0 -34
  348. package/src/themes/mashroom/01-settings/_settings.steps.scss +0 -33
  349. package/src/themes/mashroom/01-settings/_settings.tabs.scss +0 -33
  350. package/src/themes/mashroom/01-settings/_settings.testimonials.scss +0 -24
  351. package/src/themes/mashroom/01-settings/_settings.todo.scss +0 -52
  352. package/src/themes/mashroom/01-settings/_settings.toggle.scss +0 -49
  353. package/src/themes/mashroom/01-settings/_settings.tooltip.scss +0 -20
  354. package/src/themes/mashroom/01-settings/_settings.typography.scss +0 -95
  355. package/src/themes/mashroom/01-settings/_settings.upload.scss +0 -96
  356. package/src/themes/mashroom/01-settings/_settings.z-layers.scss +0 -19
  357. package/src/themes/mashroom/02-tools/_index.scss +0 -8
  358. package/src/themes/mashroom/02-tools/_tools.psychedelic-gradients.scss +0 -78
  359. package/src/themes/mashroom/02-tools/_tools.trippy-effects.scss +0 -114
  360. package/src/themes/mashroom/03-generic/_index.scss +0 -6
  361. package/src/themes/mashroom/04-elements/_index.scss +0 -6
  362. package/src/themes/mashroom/05-objects/_index.scss +0 -6
  363. package/src/themes/mashroom/06-components/_components.accordion.scss +0 -187
  364. package/src/themes/mashroom/06-components/_components.avatar-group.scss +0 -276
  365. package/src/themes/mashroom/06-components/_components.avatar.scss +0 -114
  366. package/src/themes/mashroom/06-components/_components.badge.scss +0 -152
  367. package/src/themes/mashroom/06-components/_components.breadcrumb.scss +0 -162
  368. package/src/themes/mashroom/06-components/_components.btn-group.scss +0 -404
  369. package/src/themes/mashroom/06-components/_components.button.scss +0 -160
  370. package/src/themes/mashroom/06-components/_components.callout.scss +0 -140
  371. package/src/themes/mashroom/06-components/_components.card.scss +0 -225
  372. package/src/themes/mashroom/06-components/_components.checkbox.scss +0 -186
  373. package/src/themes/mashroom/06-components/_components.color-mode-toggle.scss +0 -308
  374. package/src/themes/mashroom/06-components/_components.countdown.scss +0 -402
  375. package/src/themes/mashroom/06-components/_components.data-table.scss +0 -354
  376. package/src/themes/mashroom/06-components/_components.datepicker.scss +0 -349
  377. package/src/themes/mashroom/06-components/_components.dropdown.scss +0 -334
  378. package/src/themes/mashroom/06-components/_components.edge-panel.scss +0 -413
  379. package/src/themes/mashroom/06-components/_components.form-group.scss +0 -433
  380. package/src/themes/mashroom/06-components/_components.form.scss +0 -358
  381. package/src/themes/mashroom/06-components/_components.hero.scss +0 -151
  382. package/src/themes/mashroom/06-components/_components.input.scss +0 -147
  383. package/src/themes/mashroom/06-components/_components.list-group.scss +0 -456
  384. package/src/themes/mashroom/06-components/_components.list.scss +0 -145
  385. package/src/themes/mashroom/06-components/_components.menu.scss +0 -497
  386. package/src/themes/mashroom/06-components/_components.messages.scss +0 -277
  387. package/src/themes/mashroom/06-components/_components.modal.scss +0 -264
  388. package/src/themes/mashroom/06-components/_components.nav.scss +0 -181
  389. package/src/themes/mashroom/06-components/_components.navbar.scss +0 -538
  390. package/src/themes/mashroom/06-components/_components.pagination.scss +0 -400
  391. package/src/themes/mashroom/06-components/_components.photoviewer.scss +0 -498
  392. package/src/themes/mashroom/06-components/_components.popover.scss +0 -383
  393. package/src/themes/mashroom/06-components/_components.product-review.scss +0 -408
  394. package/src/themes/mashroom/06-components/_components.progress.scss +0 -249
  395. package/src/themes/mashroom/06-components/_components.rating.scss +0 -300
  396. package/src/themes/mashroom/06-components/_components.river.scss +0 -570
  397. package/src/themes/mashroom/06-components/_components.sectionintro.scss +0 -546
  398. package/src/themes/mashroom/06-components/_components.select.scss +0 -455
  399. package/src/themes/mashroom/06-components/_components.side-menu.scss +0 -635
  400. package/src/themes/mashroom/06-components/_components.skeleton.scss +0 -447
  401. package/src/themes/mashroom/06-components/_components.slider.scss +0 -414
  402. package/src/themes/mashroom/06-components/_components.spinner.scss +0 -198
  403. package/src/themes/mashroom/06-components/_components.steps.scss +0 -350
  404. package/src/themes/mashroom/06-components/_components.tabs.scss +0 -269
  405. package/src/themes/mashroom/06-components/_components.testimonials.scss +0 -561
  406. package/src/themes/mashroom/06-components/_components.toggle.scss +0 -231
  407. package/src/themes/mashroom/06-components/_components.tooltip.scss +0 -167
  408. package/src/themes/mashroom/06-components/_components.upload.scss +0 -537
  409. package/src/themes/mashroom/06-components/_components.video-player.scss +0 -560
  410. package/src/themes/mashroom/06-components/_index.scss +0 -55
  411. package/src/themes/mashroom/99-utilities/_index.scss +0 -6
  412. package/src/themes/mashroom/index.scss +0 -26
  413. package/src/themes/shaj-default/01-settings/_index.scss +0 -69
  414. package/src/themes/shaj-default/01-settings/_settings.accordion.scss +0 -38
  415. package/src/themes/shaj-default/01-settings/_settings.animations.scss +0 -32
  416. package/src/themes/shaj-default/01-settings/_settings.avatar-group.scss +0 -28
  417. package/src/themes/shaj-default/01-settings/_settings.avatar.scss +0 -63
  418. package/src/themes/shaj-default/01-settings/_settings.badge.scss +0 -25
  419. package/src/themes/shaj-default/01-settings/_settings.border-radius.scss +0 -24
  420. package/src/themes/shaj-default/01-settings/_settings.border.scss +0 -20
  421. package/src/themes/shaj-default/01-settings/_settings.box-shadow.scss +0 -46
  422. package/src/themes/shaj-default/01-settings/_settings.breadcrumb.scss +0 -0
  423. package/src/themes/shaj-default/01-settings/_settings.breakpoints.scss +0 -23
  424. package/src/themes/shaj-default/01-settings/_settings.btn-group.scss +0 -11
  425. package/src/themes/shaj-default/01-settings/_settings.button.scss +0 -56
  426. package/src/themes/shaj-default/01-settings/_settings.callout.scss +0 -87
  427. package/src/themes/shaj-default/01-settings/_settings.card.scss +0 -52
  428. package/src/themes/shaj-default/01-settings/_settings.checkbox-group.scss +0 -11
  429. package/src/themes/shaj-default/01-settings/_settings.checkbox.scss +0 -29
  430. package/src/themes/shaj-default/01-settings/_settings.color-mode.scss +0 -13
  431. package/src/themes/shaj-default/01-settings/_settings.colors.scss +0 -91
  432. package/src/themes/shaj-default/01-settings/_settings.config.scss +0 -4
  433. package/src/themes/shaj-default/01-settings/_settings.countdown.scss +0 -26
  434. package/src/themes/shaj-default/01-settings/_settings.data-table.scss +0 -62
  435. package/src/themes/shaj-default/01-settings/_settings.datepicker.scss +0 -51
  436. package/src/themes/shaj-default/01-settings/_settings.design-tokens.scss +0 -9
  437. package/src/themes/shaj-default/01-settings/_settings.dropdown.scss +0 -51
  438. package/src/themes/shaj-default/01-settings/_settings.edge-panel.scss +0 -30
  439. package/src/themes/shaj-default/01-settings/_settings.fonts.scss +0 -13
  440. package/src/themes/shaj-default/01-settings/_settings.form-group.scss +0 -20
  441. package/src/themes/shaj-default/01-settings/_settings.form.scss +0 -12
  442. package/src/themes/shaj-default/01-settings/_settings.grid.scss +0 -29
  443. package/src/themes/shaj-default/01-settings/_settings.hero.scss +0 -47
  444. package/src/themes/shaj-default/01-settings/_settings.input.scss +0 -57
  445. package/src/themes/shaj-default/01-settings/_settings.link.scss +0 -19
  446. package/src/themes/shaj-default/01-settings/_settings.list-group.scss +0 -22
  447. package/src/themes/shaj-default/01-settings/_settings.list.scss +0 -19
  448. package/src/themes/shaj-default/01-settings/_settings.masonry-grid.scss +0 -29
  449. package/src/themes/shaj-default/01-settings/_settings.menu.scss +0 -56
  450. package/src/themes/shaj-default/01-settings/_settings.messages.scss +0 -104
  451. package/src/themes/shaj-default/01-settings/_settings.modal.scss +0 -47
  452. package/src/themes/shaj-default/01-settings/_settings.nav.scss +0 -26
  453. package/src/themes/shaj-default/01-settings/_settings.navbar.scss +0 -60
  454. package/src/themes/shaj-default/01-settings/_settings.pagination.scss +0 -36
  455. package/src/themes/shaj-default/01-settings/_settings.photoviewer.scss +0 -51
  456. package/src/themes/shaj-default/01-settings/_settings.popover.scss +0 -26
  457. package/src/themes/shaj-default/01-settings/_settings.position.scss +0 -15
  458. package/src/themes/shaj-default/01-settings/_settings.progress.scss +0 -23
  459. package/src/themes/shaj-default/01-settings/_settings.rating.scss +0 -17
  460. package/src/themes/shaj-default/01-settings/_settings.river.scss +0 -56
  461. package/src/themes/shaj-default/01-settings/_settings.sectionintro.scss +0 -37
  462. package/src/themes/shaj-default/01-settings/_settings.select.scss +0 -53
  463. package/src/themes/shaj-default/01-settings/_settings.side-menu.scss +0 -85
  464. package/src/themes/shaj-default/01-settings/_settings.skeleton.scss +0 -30
  465. package/src/themes/shaj-default/01-settings/_settings.spacing.scss +0 -72
  466. package/src/themes/shaj-default/01-settings/_settings.spinner.scss +0 -24
  467. package/src/themes/shaj-default/01-settings/_settings.steps.scss +0 -39
  468. package/src/themes/shaj-default/01-settings/_settings.tabs.scss +0 -39
  469. package/src/themes/shaj-default/01-settings/_settings.testimonials.scss +0 -30
  470. package/src/themes/shaj-default/01-settings/_settings.todo.scss +0 -58
  471. package/src/themes/shaj-default/01-settings/_settings.toggle.scss +0 -55
  472. package/src/themes/shaj-default/01-settings/_settings.tooltip.scss +0 -26
  473. package/src/themes/shaj-default/01-settings/_settings.typography.scss +0 -101
  474. package/src/themes/shaj-default/01-settings/_settings.upload.scss +0 -102
  475. package/src/themes/shaj-default/01-settings/_settings.z-layers.scss +0 -25
  476. package/src/themes/shaj-default/02-tools/_index.scss +0 -0
  477. package/src/themes/shaj-default/03-generic/_generic.root.scss +0 -0
  478. package/src/themes/shaj-default/03-generic/_index.scss +0 -2
  479. package/src/themes/shaj-default/04-elements/_index.scss +0 -0
  480. package/src/themes/shaj-default/05-objects/_index.scss +0 -0
  481. package/src/themes/shaj-default/06-components/_components.button.scss +0 -55
  482. package/src/themes/shaj-default/06-components/_components.card.scss +0 -57
  483. package/src/themes/shaj-default/06-components/_components.input.scss +0 -58
  484. package/src/themes/shaj-default/06-components/_components.navbar.scss +0 -99
  485. package/src/themes/shaj-default/06-components/_components.tooltip.scss +0 -0
  486. package/src/themes/shaj-default/06-components/_index.scss +0 -13
  487. package/src/themes/shaj-default/99-utilities/_index.scss +0 -0
  488. package/src/themes/shaj-default/index.scss +0 -25
  489. package/theme.config.ts +0 -360
@@ -1,61 +1,12 @@
1
- import React, { ReactNode, useId } from 'react';
1
+ import React, { ReactNode, useId, memo } from 'react';
2
2
  import { ACCORDION } from '../../lib/constants/components';
3
3
  import { useAccordion } from '../../lib/composables/useAccordion';
4
- import { BaseComponentProps, IconPosition, AtomixGlassProps } from '../../lib/types/components';
4
+ import type { AccordionProps as AccordionPropsType, AtomixGlassProps } from '../../lib/types/components';
5
5
  import { AtomixGlass } from '../AtomixGlass/AtomixGlass';
6
6
 
7
- /**
8
- * Accordion component for showing/hiding content panels
9
- */
10
- export interface AccordionProps extends BaseComponentProps {
11
- /**
12
- * Title of the accordion
13
- */
14
- title: string;
7
+ export type AccordionProps = AccordionPropsType;
15
8
 
16
- /**
17
- * Content to be shown when accordion is expanded
18
- */
19
- children: ReactNode;
20
-
21
- /**
22
- * Whether the accordion is initially open
23
- */
24
- defaultOpen?: boolean;
25
-
26
- /**
27
- * Position of the icon (right or left)
28
- */
29
- iconPosition?: IconPosition;
30
-
31
- /**
32
- * Custom icon for the accordion
33
- */
34
- icon?: ReactNode;
35
-
36
- /**
37
- * Controlled open state (overrides defaultOpen)
38
- */
39
- isOpen?: boolean;
40
-
41
- /**
42
- * Callback when open state changes (for controlled mode)
43
- */
44
- onOpenChange?: (open: boolean) => void;
45
-
46
- /**
47
- * Glass morphism effect for the accordion
48
- * Can be a boolean to enable with default settings, or an object with AtomixGlassProps to customize the effect
49
- */
50
- glass?: AtomixGlassProps | boolean;
51
-
52
- /**
53
- * Custom style for the accordion
54
- */
55
- style?: React.CSSProperties;
56
- }
57
-
58
- export const Accordion: React.FC<AccordionProps> = ({
9
+ export const Accordion: React.FC<AccordionProps> = memo(({
59
10
  title,
60
11
  children,
61
12
  defaultOpen = false,
@@ -159,7 +110,7 @@ export const Accordion: React.FC<AccordionProps> = ({
159
110
  }
160
111
 
161
112
  return accordionContent;
162
- };
113
+ });
163
114
 
164
115
  // Set display name for debugging
165
116
  Accordion.displayName = 'Accordion';
@@ -1,3 +1,3 @@
1
1
  export { Accordion } from './Accordion';
2
2
  export { default } from './Accordion';
3
- export type { AccordionProps } from './Accordion';
3
+ export type { AccordionProps } from '../../lib/types/components';
@@ -1,9 +1,9 @@
1
- import React, { useState } from 'react';
1
+ import React, { useState, memo } from 'react';
2
2
  import { AvatarProps } from '../../lib/types/components';
3
3
  import { AVATAR } from '../../lib/constants/components';
4
4
  import { Icon } from '../Icon/Icon';
5
5
 
6
- export const Avatar: React.FC<AvatarProps> = ({
6
+ export const Avatar: React.FC<AvatarProps> = memo(({
7
7
  src,
8
8
  alt = 'Avatar',
9
9
  initials,
@@ -62,7 +62,7 @@ export const Avatar: React.FC<AvatarProps> = ({
62
62
  )}
63
63
  </div>
64
64
  );
65
- };
65
+ });
66
66
 
67
67
  Avatar.displayName = 'Avatar';
68
68
 
@@ -1,10 +1,10 @@
1
- import React, { useRef } from 'react';
1
+ import React, { useRef, memo } from 'react';
2
2
  import { useBadge } from '../../lib/composables/useBadge';
3
3
  import { BADGE } from '../../lib/constants/components';
4
4
  import { BadgeProps } from '../../lib/types/components';
5
5
  import { AtomixGlass } from '../AtomixGlass/AtomixGlass';
6
6
 
7
- export const Badge: React.FC<BadgeProps> = ({
7
+ export const Badge: React.FC<BadgeProps> = memo(({
8
8
  label,
9
9
  variant = 'primary',
10
10
  size = 'md',
@@ -53,7 +53,7 @@ export const Badge: React.FC<BadgeProps> = ({
53
53
  }
54
54
 
55
55
  return badgeElement;
56
- };
56
+ });
57
57
 
58
58
  Badge.displayName = 'Badge';
59
59
 
@@ -1,4 +1,4 @@
1
- import React, { ReactNode } from 'react';
1
+ import React, { ReactNode, memo } from 'react';
2
2
  import { BREADCRUMB } from '../../lib/constants/components';
3
3
 
4
4
  export interface BreadcrumbItem {
@@ -69,7 +69,7 @@ export interface BreadcrumbProps {
69
69
  */
70
70
  style?: React.CSSProperties;
71
71
  }
72
- export const Breadcrumb: React.FC<BreadcrumbProps> = ({
72
+ export const Breadcrumb: React.FC<BreadcrumbProps> = memo(({
73
73
  items,
74
74
  divider,
75
75
  className = '',
@@ -129,7 +129,7 @@ export const Breadcrumb: React.FC<BreadcrumbProps> = ({
129
129
  </ol>
130
130
  </nav>
131
131
  );
132
- };
132
+ });
133
133
 
134
134
  Breadcrumb.displayName = 'Breadcrumb';
135
135
 
@@ -10,6 +10,7 @@ export type ButtonAsProp = {
10
10
  as?: ElementType;
11
11
  to?: string;
12
12
  href?: string;
13
+ LinkComponent?: React.ComponentType<any>;
13
14
  [key: string]: any;
14
15
  };
15
16
 
@@ -50,6 +51,7 @@ export const Button = React.memo(
50
51
  ariaControls,
51
52
  tabIndex,
52
53
  style,
54
+ LinkComponent,
53
55
  ...props
54
56
  },
55
57
  ref
@@ -253,6 +255,39 @@ export const Button = React.memo(
253
255
  type: undefined,
254
256
  disabled: undefined,
255
257
  };
258
+
259
+ // Use custom LinkComponent if provided (e.g., Next.js Link)
260
+ if (LinkComponent) {
261
+ const LinkComp = LinkComponent as React.ComponentType<any>;
262
+ const linkProps = {
263
+ ...anchorButtonProps,
264
+ ref: ref as React.Ref<HTMLAnchorElement>,
265
+ href,
266
+ target,
267
+ rel: target === '_blank' ? 'noopener noreferrer' : undefined,
268
+ };
269
+
270
+ const linkElement = (
271
+ <LinkComp {...linkProps}>
272
+ {buttonContent}
273
+ </LinkComp>
274
+ );
275
+
276
+ if (glass) {
277
+ const defaultGlassProps = {
278
+ displacementScale: 20,
279
+ blurAmount: 0,
280
+ saturation: 200,
281
+ elasticity: 0,
282
+ };
283
+ const glassProps = glass === true ? defaultGlassProps : { ...defaultGlassProps, ...glass };
284
+ return <AtomixGlass {...glassProps}>{linkElement}</AtomixGlass>;
285
+ }
286
+
287
+ return linkElement;
288
+ }
289
+
290
+ // Fallback to regular anchor tag
256
291
  const anchorElement = (
257
292
  <a {...anchorButtonProps} ref={ref as React.Ref<HTMLAnchorElement>} href={href} target={target} rel={target === '_blank' ? 'noopener noreferrer' : undefined}>
258
293
  {buttonContent}
@@ -300,4 +335,4 @@ Button.displayName = 'Button';
300
335
 
301
336
  export type { ButtonProps };
302
337
 
303
- export default Button;
338
+ export default Button;
@@ -24,7 +24,7 @@ export const ElevationCard: React.FC<ElevationCardProps> = ({
24
24
  return (
25
25
  <div
26
26
  className={`${className} ${cardProps.className}`}
27
- ref={cardProps.ref}
27
+ ref={cardProps.ref as React.LegacyRef<HTMLDivElement>}
28
28
  style={style}
29
29
  tabIndex={cardProps.tabIndex}
30
30
  role={cardProps.role}
@@ -45,6 +45,22 @@ const AnimatedChart = memo(
45
45
  }>
46
46
  >([]);
47
47
 
48
+ // Animation time tracking - moved outside callback
49
+ useEffect(() => {
50
+ const animateFrame = (timestamp: number) => {
51
+ timeRef.current = timestamp;
52
+ animationRef.current = requestAnimationFrame(animateFrame);
53
+ };
54
+
55
+ animationRef.current = requestAnimationFrame(animateFrame);
56
+
57
+ return () => {
58
+ if (animationRef.current) {
59
+ cancelAnimationFrame(animationRef.current);
60
+ }
61
+ };
62
+ }, []);
63
+
48
64
  const renderContent = useCallback(
49
65
  ({
50
66
  scales,
@@ -57,21 +73,6 @@ const AnimatedChart = memo(
57
73
  }: ChartRenderContentParams) => {
58
74
  // Use toolbar state if available, fallback to config for backward compatibility
59
75
  const shouldAnimate = toolbarState?.animationsEnabled ?? renderConfig?.animate ?? true;
60
- // Animation time tracking
61
- useEffect(() => {
62
- const animateFrame = (timestamp: number) => {
63
- timeRef.current = timestamp;
64
- animationRef.current = requestAnimationFrame(animateFrame);
65
- };
66
-
67
- animationRef.current = requestAnimationFrame(animateFrame);
68
-
69
- return () => {
70
- if (animationRef.current) {
71
- cancelAnimationFrame(animationRef.current);
72
- }
73
- };
74
- }, []);
75
76
 
76
77
  if (!chartDatasets.length) return null;
77
78
 
@@ -117,7 +118,7 @@ const AnimatedChart = memo(
117
118
 
118
119
  case 'area':
119
120
  case 'line':
120
- default:
121
+ default: {
121
122
  // Create animated line/area
122
123
  const points = dataset.data.map((point: any, pointIndex: number) => ({
123
124
  x: padding + (pointIndex / (dataset.data.length - 1)) * chartWidth,
@@ -181,6 +182,7 @@ const AnimatedChart = memo(
181
182
  });
182
183
  }
183
184
  break;
185
+ }
184
186
  }
185
187
  });
186
188
 
@@ -213,7 +215,7 @@ const AnimatedChart = memo(
213
215
  return (
214
216
  <BaseChart
215
217
  ref={ref}
216
- type="animated"
218
+ type="line"
217
219
  datasets={datasets}
218
220
  config={config}
219
221
  renderContent={renderContent}
@@ -100,7 +100,11 @@ const AreaChart = memo(
100
100
  {showTooltips && hoveredPoint && (
101
101
  <ChartTooltip
102
102
  dataPoint={
103
- renderedDatasets[hoveredPoint.datasetIndex]?.data?.[hoveredPoint.pointIndex]
103
+ renderedDatasets[hoveredPoint.datasetIndex]?.data?.[hoveredPoint.pointIndex] ?? {
104
+ label: '',
105
+ value: 0,
106
+ color: '',
107
+ }
104
108
  }
105
109
  datasetLabel={renderedDatasets[hoveredPoint.datasetIndex]?.label}
106
110
  datasetColor={
@@ -58,6 +58,7 @@ const BarChart = memo(
58
58
  <>
59
59
  {barDimensions.map((bar, index) => {
60
60
  const dataset = renderedDatasets[bar.datasetIndex];
61
+ if (!dataset) return null;
61
62
  const point = dataset.data?.[bar.pointIndex];
62
63
  const color = dataset.color || colors[bar.datasetIndex];
63
64
  const isHovered =
@@ -8,7 +8,7 @@ export interface BubbleDataPoint {
8
8
  x: number;
9
9
  y: number;
10
10
  size: number;
11
- value?: number;
11
+ value: number;
12
12
  color?: string;
13
13
  metadata?: Record<string, any>;
14
14
  }
@@ -109,7 +109,7 @@ const BubbleChart = memo(
109
109
  hoveredPoint,
110
110
  toolbarState,
111
111
  config: renderConfig,
112
- }: ChartRenderContentParams) => {
112
+ }: any) => {
113
113
  if (!bubbleData.length) return null;
114
114
 
115
115
  // Use toolbar state if available, fallback to config for backward compatibility
@@ -197,9 +197,10 @@ const BubbleChart = memo(
197
197
  {bubbles}
198
198
  {showTooltips &&
199
199
  hoveredPoint &&
200
- hoveredPoint.pointIndex < bubbleData.length && (
200
+ hoveredPoint.pointIndex < bubbleData.length &&
201
+ bubbleData[hoveredPoint.pointIndex] && (
201
202
  <ChartTooltip
202
- dataPoint={bubbleData[hoveredPoint.pointIndex]}
203
+ dataPoint={bubbleData[hoveredPoint.pointIndex]!}
203
204
  datasetLabel="Bubbles"
204
205
  datasetColor={
205
206
  bubbleData[hoveredPoint.pointIndex]?.color ||
@@ -220,7 +221,7 @@ const BubbleChart = memo(
220
221
  <BaseChart
221
222
  ref={ref}
222
223
  type="bubble"
223
- datasets={datasets}
224
+ datasets={datasets as any}
224
225
  config={config}
225
226
  renderContent={renderContent}
226
227
  onDataPointClick={onDataPointClick}
@@ -201,6 +201,7 @@ const ChartToolbar = memo(
201
201
  document.removeEventListener('mousedown', handleClickOutside);
202
202
  };
203
203
  }
204
+ return undefined;
204
205
  }, [showExportMenu, showSettingsMenu]);
205
206
 
206
207
  // Handle keyboard shortcuts
@@ -281,7 +281,7 @@ const FunnelChart = memo(
281
281
  <g>{elements}</g>
282
282
  {showTooltips && hoveredPoint && funnelData[hoveredPoint.pointIndex] && (
283
283
  <ChartTooltip
284
- dataPoint={funnelData[hoveredPoint.pointIndex]}
284
+ dataPoint={funnelData[hoveredPoint.pointIndex]!}
285
285
  datasetLabel="Funnel Data"
286
286
  datasetColor={funnelData[hoveredPoint.pointIndex]?.color || colors[hoveredPoint.pointIndex % colors.length]}
287
287
  position={{
@@ -97,6 +97,7 @@ const RadarChart = memo(
97
97
  const radius = Math.min(centerX, centerY) * 0.8;
98
98
 
99
99
  const firstDataset = renderedDatasets[0];
100
+ if (!firstDataset) return null;
100
101
  const dataPoints = firstDataset.data || [];
101
102
  const angleStep = (2 * Math.PI) / dataPoints.length;
102
103
 
@@ -195,24 +196,28 @@ const RadarChart = memo(
195
196
  points.push({ x, y, value, point: dataset.data[i] });
196
197
  }
197
198
 
198
- if (points.length === 0) return null;
199
+ if (points.length === 0 || !points[0]) return null;
199
200
 
200
201
  // Generate path
201
202
  let path = '';
202
203
  if (smooth && points.length > 2) {
203
204
  // For smooth curves, we would implement a more complex algorithm
204
205
  // For now, we'll just connect the points with straight lines
205
- path = `M ${points[0].x},${points[0].y}`;
206
+ path = `M ${points[0]!.x},${points[0]!.y}`;
206
207
  for (let i = 1; i < points.length; i++) {
207
- path += ` L ${points[i].x},${points[i].y}`;
208
+ if (points[i]) {
209
+ path += ` L ${points[i]!.x},${points[i]!.y}`;
210
+ }
208
211
  }
209
- path += ` L ${points[0].x},${points[0].y} Z`;
212
+ path += ` L ${points[0]!.x},${points[0]!.y} Z`;
210
213
  } else {
211
- path = `M ${points[0].x},${points[0].y}`;
214
+ path = `M ${points[0]!.x},${points[0]!.y}`;
212
215
  for (let i = 1; i < points.length; i++) {
213
- path += ` L ${points[i].x},${points[i].y}`;
216
+ if (points[i]) {
217
+ path += ` L ${points[i]!.x},${points[i]!.y}`;
218
+ }
214
219
  }
215
- path += ` L ${points[0].x},${points[0].y} Z`;
220
+ path += ` L ${points[0]!.x},${points[0]!.y} Z`;
216
221
  }
217
222
 
218
223
  return (
@@ -246,9 +251,11 @@ const RadarChart = memo(
246
251
  r={isHovered ? pointRadius * 1.5 : pointRadius}
247
252
  fill={color}
248
253
  className={`c-chart__radar-point ${isHovered ? 'c-chart__radar-point--hovered' : ''}`}
249
- onClick={() =>
250
- handlers.onDataPointClick?.(point.point, datasetIndex, pointIndex)
251
- }
254
+ onClick={() => {
255
+ if (point.point) {
256
+ handlers.onDataPointClick?.(point.point, datasetIndex, pointIndex);
257
+ }
258
+ }}
252
259
  onMouseEnter={e => {
253
260
  const rect = e.currentTarget.getBoundingClientRect();
254
261
  handlers.onPointHover(
@@ -276,10 +283,10 @@ const RadarChart = memo(
276
283
  {dataPaths}
277
284
  {axisLabels}
278
285
  </g>
279
- {showTooltips && hoveredPoint && (
286
+ {showTooltips && hoveredPoint && renderedDatasets[hoveredPoint.datasetIndex]?.data?.[hoveredPoint.pointIndex] && (
280
287
  <ChartTooltip
281
288
  dataPoint={
282
- renderedDatasets[hoveredPoint.datasetIndex]?.data?.[hoveredPoint.pointIndex]
289
+ renderedDatasets[hoveredPoint.datasetIndex]!.data![hoveredPoint.pointIndex]!
283
290
  }
284
291
  datasetLabel={renderedDatasets[hoveredPoint.datasetIndex]?.label}
285
292
  datasetColor={
@@ -60,7 +60,7 @@ const ScatterChart = memo(
60
60
  renderedDatasets.forEach((dataset: ChartDataset, datasetIndex: number) => {
61
61
  const color = dataset.color || colors[datasetIndex % colors.length];
62
62
 
63
- dataset.data?.forEach((point: ScatterDataPoint, pointIndex: number) => {
63
+ dataset.data?.forEach((point: any, pointIndex: number) => {
64
64
  const x =
65
65
  point.x !== undefined
66
66
  ? scales.padding.left + (point.x / 100) * scales.innerWidth
@@ -125,10 +125,10 @@ const ScatterChart = memo(
125
125
  return (
126
126
  <>
127
127
  {points}
128
- {showTooltips && hoveredPoint && (
128
+ {showTooltips && hoveredPoint && renderedDatasets[hoveredPoint.datasetIndex]?.data?.[hoveredPoint.pointIndex] && (
129
129
  <ChartTooltip
130
130
  dataPoint={
131
- renderedDatasets[hoveredPoint.datasetIndex]?.data?.[hoveredPoint.pointIndex]
131
+ renderedDatasets[hoveredPoint.datasetIndex]!.data![hoveredPoint.pointIndex]!
132
132
  }
133
133
  datasetLabel={renderedDatasets[hoveredPoint.datasetIndex]?.label}
134
134
  datasetColor={
@@ -197,7 +197,7 @@ const TreemapChart = memo(
197
197
  switch (scheme) {
198
198
  case 'category':
199
199
  return colors[index % colors.length];
200
- case 'depth':
200
+ case 'depth': {
201
201
  const depthColors = [
202
202
  'var(--atomix-blue-9)',
203
203
  'var(--atomix-blue-6)',
@@ -206,6 +206,7 @@ const TreemapChart = memo(
206
206
  'var(--atomix-blue-2)',
207
207
  ];
208
208
  return depthColors[Math.min(depth, depthColors.length - 1)];
209
+ }
209
210
  case 'value':
210
211
  if (data.length > 0) {
211
212
  const maxValue = Math.max(...data.map(d => d.value));
@@ -409,4 +409,3 @@ const WaterfallChart = memo(
409
409
 
410
410
  WaterfallChart.displayName = 'WaterfallChart';
411
411
  export default WaterfallChart;
412
- export type { WaterfallChartProps, WaterfallDataPoint };
@@ -289,9 +289,19 @@ export interface ChartProps extends BaseComponentProps {
289
289
 
290
290
  /**
291
291
  * Chart scales interface
292
- * Imported from useChart for consistency
293
292
  */
294
- export type { ChartScales } from '../../lib/composables/useChart';
293
+ export interface ChartScales {
294
+ xScale: (index: number, dataLength?: number) => number;
295
+ yScale: (value: number) => number;
296
+ minValue: number;
297
+ maxValue: number;
298
+ valueRange: number;
299
+ innerWidth: number;
300
+ innerHeight: number;
301
+ width: number;
302
+ height: number;
303
+ padding: { top: number; right: number; bottom: number; left: number };
304
+ }
295
305
 
296
306
  /**
297
307
  * Chart interaction state
@@ -5,7 +5,8 @@
5
5
  * @returns Color string
6
6
  */
7
7
  export const getColorFromScheme = (colorScheme: string[], index: number): string => {
8
- return colorScheme[index % colorScheme.length];
8
+ const color = colorScheme[index % colorScheme.length];
9
+ return color || colorScheme[0] || '#000000';
9
10
  };
10
11
 
11
12
  /**
@@ -23,12 +24,12 @@ export const getColorFromValue = (
23
24
  colorScheme: string[]
24
25
  ): string => {
25
26
  if (minValue === maxValue) {
26
- return colorScheme[0];
27
+ return colorScheme[0] || '#000000';
27
28
  }
28
29
 
29
30
  const normalized = (value - minValue) / (maxValue - minValue);
30
31
  const index = Math.floor(normalized * (colorScheme.length - 1));
31
- return colorScheme[index];
32
+ return colorScheme[index] || colorScheme[0] || '#000000';
32
33
  };
33
34
 
34
35
  /**
@@ -1,4 +1,4 @@
1
- import React, { useRef } from 'react';
1
+ import React, { useRef, memo } from 'react';
2
2
  import { DataTableProps } from '../../lib/types/components';
3
3
  import { useDataTable } from '../../lib/composables/useDataTable';
4
4
  import { DATA_TABLE_CLASSES } from '../../lib/constants/components';
@@ -19,7 +19,7 @@ import { Pagination } from '../Pagination/Pagination';
19
19
  * />
20
20
  * ```
21
21
  */
22
- export const DataTable: React.FC<DataTableProps> = ({
22
+ export const DataTable: React.FC<DataTableProps> = memo(({
23
23
  data,
24
24
  columns,
25
25
  className,
@@ -205,7 +205,7 @@ export const DataTable: React.FC<DataTableProps> = ({
205
205
  {renderPagination()}
206
206
  </div>
207
207
  );
208
- };
208
+ });
209
209
 
210
210
  export type { DataTableProps };
211
211
 
@@ -1,4 +1,4 @@
1
- import React, { useRef, useState, useCallback, createContext, useContext, useEffect } from 'react';
1
+ import React, { useRef, useState, useCallback, createContext, useContext, useEffect, memo } from 'react';
2
2
  import { DROPDOWN } from '../../lib/constants/components';
3
3
  import { AtomixGlass } from '../AtomixGlass/AtomixGlass';
4
4
  import type {
@@ -27,7 +27,7 @@ const DropdownContext = createContext<DropdownContextType>({
27
27
  /**
28
28
  * DropdownItem component for menu items
29
29
  */
30
- export const DropdownItem: React.FC<DropdownItemProps> = ({
30
+ export const DropdownItem: React.FC<DropdownItemProps> = memo(({
31
31
  children,
32
32
  href,
33
33
  active = false,
@@ -111,26 +111,26 @@ export const DropdownItem: React.FC<DropdownItemProps> = ({
111
111
  </button>
112
112
  </li>
113
113
  );
114
- };
114
+ });
115
115
 
116
116
  /**
117
117
  * DropdownDivider component for separating groups of items
118
118
  */
119
- export const DropdownDivider: React.FC<DropdownDividerProps> = ({ className = '' }) => {
119
+ export const DropdownDivider: React.FC<DropdownDividerProps> = memo(({ className = '' }) => {
120
120
  return <li className={`c-dropdown__divider ${className}`} role="separator" />;
121
- };
121
+ });
122
122
 
123
123
  /**
124
124
  * DropdownHeader component for section headers
125
125
  */
126
- export const DropdownHeader: React.FC<DropdownHeaderProps> = ({ children, className = '' }) => {
126
+ export const DropdownHeader: React.FC<DropdownHeaderProps> = memo(({ children, className = '' }) => {
127
127
  return <li className={`c-dropdown__header ${className}`}>{children}</li>;
128
- };
128
+ });
129
129
 
130
130
  /**
131
131
  * Dropdown component for creating dropdown menus
132
132
  */
133
- export const Dropdown: React.FC<DropdownProps> = ({
133
+ export const Dropdown: React.FC<DropdownProps> = memo(({
134
134
  children,
135
135
  menu,
136
136
  placement = 'bottom-start',
@@ -370,10 +370,13 @@ export const Dropdown: React.FC<DropdownProps> = ({
370
370
  </div>
371
371
  </div>
372
372
  );
373
- };
373
+ });
374
374
 
375
375
  export type { DropdownProps, DropdownItemProps, DropdownDividerProps, DropdownHeaderProps };
376
376
 
377
377
  Dropdown.displayName = 'Dropdown';
378
+ DropdownItem.displayName = 'DropdownItem';
379
+ DropdownDivider.displayName = 'DropdownDivider';
380
+ DropdownHeader.displayName = 'DropdownHeader';
378
381
 
379
382
  export default Dropdown;
@@ -1,7 +1,7 @@
1
1
  import React, { forwardRef } from 'react';
2
- import { FooterSectionProps } from '@/lib/types/components';
3
- import { GridCol } from '@/layouts';
4
- import { useFooter } from '@/lib/composables/useFooter';
2
+ import { FooterSectionProps } from '../../lib/types/components';
3
+ import { GridCol } from '../../layouts';
4
+ import { useFooter } from '../../lib/composables/useFooter';
5
5
 
6
6
  /**
7
7
  * FooterSection component provides a section within the footer for organizing links and content.
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import React, { memo } from 'react';
2
2
  import { CheckboxProps } from '../../lib/types/components';
3
3
  import { useCheckbox } from '../../lib/composables/useCheckbox';
4
4
  import { AtomixGlass } from '../AtomixGlass/AtomixGlass';
@@ -6,7 +6,7 @@ import { AtomixGlass } from '../AtomixGlass/AtomixGlass';
6
6
  /**
7
7
  * Checkbox - A component for checkbox inputs
8
8
  */
9
- export const Checkbox: React.FC<CheckboxProps> = ({
9
+ export const Checkbox: React.FC<CheckboxProps> = memo(({
10
10
  label,
11
11
  checked = false,
12
12
  onChange,
@@ -81,7 +81,7 @@ export const Checkbox: React.FC<CheckboxProps> = ({
81
81
  }
82
82
 
83
83
  return checkboxContent;
84
- };
84
+ });
85
85
 
86
86
  export type { CheckboxProps };
87
87