@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,409 +0,0 @@
1
- /**
2
- * Theme Analytics and Performance Monitoring
3
- *
4
- * Tracks theme usage, performance metrics, and provides analytics
5
- */
6
-
7
- import { getLogger } from '../errors';
8
-
9
- /**
10
- * Theme analytics event types
11
- */
12
- export type ThemeAnalyticsEvent =
13
- | 'theme_load'
14
- | 'theme_switch'
15
- | 'theme_error'
16
- | 'theme_revert'
17
- | 'css_load'
18
- | 'performance_metric';
19
-
20
- /**
21
- * Theme analytics event
22
- */
23
- export interface ThemeAnalyticsEventData {
24
- /** Event type */
25
- type: ThemeAnalyticsEvent;
26
- /** Event timestamp */
27
- timestamp: number;
28
- /** Theme name */
29
- themeName?: string;
30
- /** Additional event data */
31
- data?: Record<string, any>;
32
- }
33
-
34
- /**
35
- * Performance metric
36
- */
37
- export interface PerformanceMetric {
38
- /** Metric name */
39
- name: string;
40
- /** Metric value */
41
- value: number;
42
- /** Unit */
43
- unit: 'ms' | 'bytes' | 'count';
44
- /** Timestamp */
45
- timestamp: number;
46
- }
47
-
48
- /**
49
- * Analytics configuration
50
- */
51
- export interface AnalyticsConfig {
52
- /** Enable analytics */
53
- enabled?: boolean;
54
- /** Enable performance tracking */
55
- trackPerformance?: boolean;
56
- /** Enable error tracking */
57
- trackErrors?: boolean;
58
- /** Custom event handler */
59
- onEvent?: (event: ThemeAnalyticsEventData) => void;
60
- /** Custom performance handler */
61
- onPerformance?: (metric: PerformanceMetric) => void;
62
- /** Buffer size for events */
63
- bufferSize?: number;
64
- /** Flush interval (ms) */
65
- flushInterval?: number;
66
- }
67
-
68
- /**
69
- * Default analytics configuration
70
- */
71
- const DEFAULT_CONFIG: Required<Omit<AnalyticsConfig, 'onEvent' | 'onPerformance'>> = {
72
- enabled: true,
73
- trackPerformance: true,
74
- trackErrors: true,
75
- bufferSize: 100,
76
- flushInterval: 5000,
77
- };
78
-
79
- /**
80
- * Theme Analytics Manager
81
- *
82
- * Tracks theme usage, performance, and errors
83
- */
84
- export class ThemeAnalytics {
85
- private config: Required<Omit<AnalyticsConfig, 'onEvent' | 'onPerformance'>> & {
86
- onEvent?: AnalyticsConfig['onEvent'];
87
- onPerformance?: AnalyticsConfig['onPerformance'];
88
- };
89
- private events: ThemeAnalyticsEventData[] = [];
90
- private metrics: PerformanceMetric[] = [];
91
- private flushTimer: ReturnType<typeof setInterval> | null = null;
92
- private logger = getLogger();
93
-
94
- constructor(config: AnalyticsConfig = {}) {
95
- this.config = {
96
- ...DEFAULT_CONFIG,
97
- ...config,
98
- };
99
-
100
- if (this.config.enabled) {
101
- this.startFlushTimer();
102
- }
103
- }
104
-
105
- /**
106
- * Track theme load event
107
- */
108
- trackThemeLoad(themeName: string, loadTime?: number): void {
109
- if (!this.config.enabled) {
110
- return;
111
- }
112
-
113
- const event: ThemeAnalyticsEventData = {
114
- type: 'theme_load',
115
- timestamp: Date.now(),
116
- themeName,
117
- data: loadTime ? { loadTime } : undefined,
118
- };
119
-
120
- this.addEvent(event);
121
-
122
- if (loadTime !== undefined) {
123
- this.trackPerformance('theme_load_time', loadTime, 'ms');
124
- }
125
- }
126
-
127
- /**
128
- * Track theme switch event
129
- */
130
- trackThemeSwitch(fromTheme: string, toTheme: string, switchTime?: number): void {
131
- if (!this.config.enabled) {
132
- return;
133
- }
134
-
135
- const event: ThemeAnalyticsEventData = {
136
- type: 'theme_switch',
137
- timestamp: Date.now(),
138
- themeName: toTheme,
139
- data: {
140
- fromTheme,
141
- toTheme,
142
- ...(switchTime ? { switchTime } : {}),
143
- },
144
- };
145
-
146
- this.addEvent(event);
147
-
148
- if (switchTime !== undefined) {
149
- this.trackPerformance('theme_switch_time', switchTime, 'ms');
150
- }
151
- }
152
-
153
- /**
154
- * Track theme error
155
- */
156
- trackError(themeName: string, error: Error | string): void {
157
- if (!this.config.enabled || !this.config.trackErrors) {
158
- return;
159
- }
160
-
161
- const event: ThemeAnalyticsEventData = {
162
- type: 'theme_error',
163
- timestamp: Date.now(),
164
- themeName,
165
- data: {
166
- error: error instanceof Error ? error.message : error,
167
- stack: error instanceof Error ? error.stack : undefined,
168
- },
169
- };
170
-
171
- this.addEvent(event);
172
- }
173
-
174
- /**
175
- * Track theme revert
176
- */
177
- trackThemeRevert(attemptedTheme: string, revertedToTheme: string | null, error: Error): void {
178
- if (!this.config.enabled || !this.config.trackErrors) {
179
- return;
180
- }
181
-
182
- const event: ThemeAnalyticsEventData = {
183
- type: 'theme_revert',
184
- timestamp: Date.now(),
185
- themeName: attemptedTheme,
186
- data: {
187
- attemptedTheme,
188
- revertedToTheme,
189
- error: error.message,
190
- stack: error.stack,
191
- },
192
- };
193
-
194
- this.addEvent(event);
195
- }
196
-
197
- /**
198
- * Track CSS load
199
- */
200
- trackCSSLoad(themeName: string, loadTime: number, size?: number): void {
201
- if (!this.config.enabled) {
202
- return;
203
- }
204
-
205
- const event: ThemeAnalyticsEventData = {
206
- type: 'css_load',
207
- timestamp: Date.now(),
208
- themeName,
209
- data: {
210
- loadTime,
211
- ...(size ? { size } : {}),
212
- },
213
- };
214
-
215
- this.addEvent(event);
216
-
217
- this.trackPerformance('css_load_time', loadTime, 'ms');
218
- if (size !== undefined) {
219
- this.trackPerformance('css_size', size, 'bytes');
220
- }
221
- }
222
-
223
- /**
224
- * Track performance metric
225
- */
226
- trackPerformance(name: string, value: number, unit: PerformanceMetric['unit'] = 'ms'): void {
227
- if (!this.config.enabled || !this.config.trackPerformance) {
228
- return;
229
- }
230
-
231
- const metric: PerformanceMetric = {
232
- name,
233
- value,
234
- unit,
235
- timestamp: Date.now(),
236
- };
237
-
238
- this.metrics.push(metric);
239
-
240
- // Keep only last N metrics
241
- if (this.metrics.length > this.config.bufferSize) {
242
- this.metrics.shift();
243
- }
244
-
245
- // Notify handler
246
- if (this.config.onPerformance) {
247
- try {
248
- this.config.onPerformance(metric);
249
- } catch (error) {
250
- this.logger.error(
251
- 'Error in performance handler',
252
- error instanceof Error ? error : new Error(String(error)),
253
- { metric }
254
- );
255
- }
256
- }
257
- }
258
-
259
- /**
260
- * Add event to buffer
261
- */
262
- private addEvent(event: ThemeAnalyticsEventData): void {
263
- this.events.push(event);
264
-
265
- // Keep only last N events
266
- if (this.events.length > this.config.bufferSize) {
267
- this.events.shift();
268
- }
269
-
270
- // Notify handler immediately
271
- if (this.config.onEvent) {
272
- try {
273
- this.config.onEvent(event);
274
- } catch (error) {
275
- this.logger.error(
276
- 'Error in event handler',
277
- error instanceof Error ? error : new Error(String(error)),
278
- { event }
279
- );
280
- }
281
- }
282
- }
283
-
284
- /**
285
- * Get all events
286
- */
287
- getEvents(): ThemeAnalyticsEventData[] {
288
- return [...this.events];
289
- }
290
-
291
- /**
292
- * Get all metrics
293
- */
294
- getMetrics(): PerformanceMetric[] {
295
- return [...this.metrics];
296
- }
297
-
298
- /**
299
- * Get events by type
300
- */
301
- getEventsByType(type: ThemeAnalyticsEvent): ThemeAnalyticsEventData[] {
302
- return this.events.filter(event => event.type === type);
303
- }
304
-
305
- /**
306
- * Get metrics by name
307
- */
308
- getMetricsByName(name: string): PerformanceMetric[] {
309
- return this.metrics.filter(metric => metric.name === name);
310
- }
311
-
312
- /**
313
- * Get average performance metric
314
- */
315
- getAverageMetric(name: string): number | null {
316
- const metrics = this.getMetricsByName(name);
317
- if (metrics.length === 0) {
318
- return null;
319
- }
320
-
321
- const sum = metrics.reduce((acc, metric) => acc + metric.value, 0);
322
- return sum / metrics.length;
323
- }
324
-
325
- /**
326
- * Clear all events and metrics
327
- */
328
- clear(): void {
329
- this.events = [];
330
- this.metrics = [];
331
- }
332
-
333
- /**
334
- * Start flush timer
335
- */
336
- private startFlushTimer(): void {
337
- if (this.flushTimer) {
338
- return;
339
- }
340
-
341
- this.flushTimer = setInterval(() => {
342
- // Auto-flush can be implemented here if needed
343
- // For now, events are sent immediately via onEvent callback
344
- }, this.config.flushInterval);
345
- }
346
-
347
- /**
348
- * Stop flush timer
349
- */
350
- private stopFlushTimer(): void {
351
- if (this.flushTimer) {
352
- clearInterval(this.flushTimer);
353
- this.flushTimer = null;
354
- }
355
- }
356
-
357
- /**
358
- * Enable analytics
359
- */
360
- enable(): void {
361
- this.config.enabled = true;
362
- this.startFlushTimer();
363
- }
364
-
365
- /**
366
- * Disable analytics
367
- */
368
- disable(): void {
369
- this.config.enabled = false;
370
- this.stopFlushTimer();
371
- }
372
-
373
- /**
374
- * Destroy analytics instance
375
- */
376
- destroy(): void {
377
- this.stopFlushTimer();
378
- this.clear();
379
- }
380
- }
381
-
382
- /**
383
- * Create theme analytics instance
384
- */
385
- export function createThemeAnalytics(config?: AnalyticsConfig): ThemeAnalytics {
386
- return new ThemeAnalytics(config);
387
- }
388
-
389
- /**
390
- * Global analytics instance (optional)
391
- */
392
- let globalAnalytics: ThemeAnalytics | null = null;
393
-
394
- /**
395
- * Get or create global analytics instance
396
- */
397
- export function getGlobalAnalytics(): ThemeAnalytics {
398
- if (!globalAnalytics) {
399
- globalAnalytics = createThemeAnalytics();
400
- }
401
- return globalAnalytics;
402
- }
403
-
404
- /**
405
- * Set global analytics instance
406
- */
407
- export function setGlobalAnalytics(analytics: ThemeAnalytics): void {
408
- globalAnalytics = analytics;
409
- }
@@ -1,17 +0,0 @@
1
- /**
2
- * Theme Monitoring and Analytics Module
3
- */
4
-
5
- export * from './ThemeAnalytics';
6
- export {
7
- ThemeAnalytics,
8
- createThemeAnalytics,
9
- getGlobalAnalytics,
10
- setGlobalAnalytics,
11
- } from './ThemeAnalytics';
12
- export type {
13
- ThemeAnalyticsEvent,
14
- ThemeAnalyticsEventData,
15
- PerformanceMetric,
16
- AnalyticsConfig,
17
- } from './ThemeAnalytics';
@@ -1,243 +0,0 @@
1
- /**
2
- * Component Override System
3
- *
4
- * Provides a comprehensive system for overriding component styles and behavior
5
- */
6
-
7
- import type { Theme, ThemeOptions } from '../types';
8
- import { createTheme } from '../createTheme';
9
- import { deepMerge } from '../composeTheme';
10
-
11
- /**
12
- * Component override configuration
13
- */
14
- export interface ComponentOverride {
15
- /** Component name */
16
- component: string;
17
- /** Style overrides */
18
- styleOverrides?: Record<string, any>;
19
- /** Default props */
20
- defaultProps?: Record<string, any>;
21
- /** CSS class overrides */
22
- classOverrides?: Record<string, string>;
23
- /** CSS variable overrides */
24
- cssVariableOverrides?: Record<string, string>;
25
- }
26
-
27
- /**
28
- * Component override map
29
- */
30
- export type ComponentOverrides = Record<string, ComponentOverride>;
31
-
32
- /**
33
- * Override options
34
- */
35
- export interface OverrideOptions {
36
- /** Merge with existing overrides */
37
- merge?: boolean;
38
- /** Validate overrides */
39
- validate?: boolean;
40
- }
41
-
42
- /**
43
- * Component Override Manager
44
- *
45
- * Manages component-level overrides for themes
46
- */
47
- export class ComponentOverrideManager {
48
- private overrides: ComponentOverrides = {};
49
- private theme: Theme | null = null;
50
-
51
- constructor(theme?: Theme) {
52
- if (theme) {
53
- this.theme = theme;
54
- }
55
- }
56
-
57
- /**
58
- * Set theme
59
- */
60
- setTheme(theme: Theme): void {
61
- this.theme = theme;
62
- }
63
-
64
- /**
65
- * Get theme with overrides applied
66
- */
67
- getThemeWithOverrides(): Theme | null {
68
- if (!this.theme) {
69
- return null;
70
- }
71
-
72
- // Apply overrides to theme
73
- const overriddenTheme = this.applyOverrides(this.theme);
74
- return overriddenTheme;
75
- }
76
-
77
- /**
78
- * Add component override
79
- */
80
- addOverride(
81
- component: string,
82
- override: Omit<ComponentOverride, 'component'>,
83
- options: OverrideOptions = {}
84
- ): void {
85
- const { merge = true } = options;
86
-
87
- if (merge && this.overrides[component]) {
88
- // Merge with existing override
89
- this.overrides[component] = {
90
- ...this.overrides[component],
91
- ...override,
92
- styleOverrides: {
93
- ...this.overrides[component].styleOverrides,
94
- ...override.styleOverrides,
95
- },
96
- defaultProps: {
97
- ...this.overrides[component].defaultProps,
98
- ...override.defaultProps,
99
- },
100
- classOverrides: {
101
- ...this.overrides[component].classOverrides,
102
- ...override.classOverrides,
103
- },
104
- cssVariableOverrides: {
105
- ...this.overrides[component].cssVariableOverrides,
106
- ...override.cssVariableOverrides,
107
- },
108
- };
109
- } else {
110
- // Replace override
111
- this.overrides[component] = {
112
- component,
113
- ...override,
114
- };
115
- }
116
- }
117
-
118
- /**
119
- * Remove component override
120
- */
121
- removeOverride(component: string): void {
122
- delete this.overrides[component];
123
- }
124
-
125
- /**
126
- * Get component override
127
- */
128
- getOverride(component: string): ComponentOverride | undefined {
129
- return this.overrides[component];
130
- }
131
-
132
- /**
133
- * Get all overrides
134
- */
135
- getAllOverrides(): ComponentOverrides {
136
- return { ...this.overrides };
137
- }
138
-
139
- /**
140
- * Clear all overrides
141
- */
142
- clearOverrides(): void {
143
- this.overrides = {};
144
- }
145
-
146
- /**
147
- * Apply overrides to theme
148
- */
149
- private applyOverrides(theme: Theme): Theme {
150
- if (Object.keys(this.overrides).length === 0) {
151
- return theme;
152
- }
153
-
154
- // Create theme options with component overrides
155
- const themeOptions: ThemeOptions = {
156
- ...theme,
157
- custom: {
158
- ...theme.custom,
159
- componentOverrides: this.overrides,
160
- },
161
- };
162
-
163
- return createTheme(themeOptions);
164
- }
165
-
166
- /**
167
- * Get CSS variables for component overrides
168
- */
169
- getComponentCSSVariables(component: string): Record<string, string> {
170
- const override = this.overrides[component];
171
- if (!override || !override.cssVariableOverrides) {
172
- return {};
173
- }
174
-
175
- const variables: Record<string, string> = {};
176
- for (const [key, value] of Object.entries(override.cssVariableOverrides)) {
177
- variables[`--atomix-${component}-${key}`] = value;
178
- }
179
-
180
- return variables;
181
- }
182
-
183
- /**
184
- * Get all CSS variables for overrides
185
- */
186
- getAllCSSVariables(): Record<string, string> {
187
- const variables: Record<string, string> = {};
188
-
189
- for (const component of Object.keys(this.overrides)) {
190
- const componentVars = this.getComponentCSSVariables(component);
191
- Object.assign(variables, componentVars);
192
- }
193
-
194
- return variables;
195
- }
196
-
197
- /**
198
- * Export overrides as JSON
199
- */
200
- exportOverrides(): string {
201
- return JSON.stringify(this.overrides, null, 2);
202
- }
203
-
204
- /**
205
- * Import overrides from JSON
206
- */
207
- importOverrides(json: string, options: OverrideOptions = {}): void {
208
- try {
209
- const imported = JSON.parse(json) as ComponentOverrides;
210
- const { merge = false } = options;
211
-
212
- if (merge) {
213
- // Merge with existing
214
- this.overrides = deepMerge(this.overrides, imported) as ComponentOverrides;
215
- } else {
216
- // Replace
217
- this.overrides = imported;
218
- }
219
- } catch (error) {
220
- throw new Error(`Failed to import overrides: ${error instanceof Error ? error.message : String(error)}`);
221
- }
222
- }
223
- }
224
-
225
- /**
226
- * Create component override manager
227
- */
228
- export function createComponentOverrideManager(theme?: Theme): ComponentOverrideManager {
229
- return new ComponentOverrideManager(theme);
230
- }
231
-
232
- /**
233
- * Helper to create component override
234
- */
235
- export function createComponentOverride(
236
- component: string,
237
- override: Omit<ComponentOverride, 'component'>
238
- ): ComponentOverride {
239
- return {
240
- component,
241
- ...override,
242
- };
243
- }
@@ -1,15 +0,0 @@
1
- /**
2
- * Component Override System Module
3
- */
4
-
5
- export * from './ComponentOverrides';
6
- export {
7
- ComponentOverrideManager,
8
- createComponentOverrideManager,
9
- createComponentOverride,
10
- } from './ComponentOverrides';
11
- export type {
12
- ComponentOverride,
13
- ComponentOverrides,
14
- OverrideOptions,
15
- } from './ComponentOverrides';