@shohojdhara/atomix 0.3.1 → 0.3.3

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 (449) hide show
  1. package/CHANGELOG.md +0 -1
  2. package/README.md +41 -24
  3. package/dist/atomix.css +540 -666
  4. package/dist/atomix.min.css +3 -3
  5. package/dist/index.d.ts +7559 -5717
  6. package/dist/index.esm.js +5013 -2301
  7. package/dist/index.esm.js.map +1 -1
  8. package/dist/index.js +5084 -2356
  9. package/dist/index.js.map +1 -1
  10. package/dist/index.min.js +1 -1
  11. package/dist/index.min.js.map +1 -1
  12. package/dist/themes/applemix.css +1683 -722
  13. package/dist/themes/applemix.css.map +1 -0
  14. package/dist/themes/applemix.min.css +13 -10
  15. package/dist/themes/boomdevs.css +1358 -544
  16. package/dist/themes/boomdevs.css.map +1 -0
  17. package/dist/themes/boomdevs.min.css +13 -10
  18. package/dist/themes/esrar.css +1743 -718
  19. package/dist/themes/esrar.css.map +1 -0
  20. package/dist/themes/esrar.min.css +41 -7
  21. package/dist/themes/flashtrade.css +1735 -752
  22. package/dist/themes/flashtrade.css.map +1 -0
  23. package/dist/themes/flashtrade.min.css +19 -13
  24. package/dist/themes/mashroom.css +1765 -787
  25. package/dist/themes/mashroom.css.map +1 -0
  26. package/dist/themes/mashroom.min.css +87 -38
  27. package/dist/themes/shaj-default.css +1685 -713
  28. package/dist/themes/shaj-default.css.map +1 -0
  29. package/dist/themes/shaj-default.min.css +11 -7
  30. package/package.json +95 -26
  31. package/scripts/atomix-cli.js +1428 -0
  32. package/scripts/build-themes.js +208 -0
  33. package/scripts/cli/interactive-init.js +528 -0
  34. package/scripts/cli/migration-tools.js +603 -0
  35. package/scripts/cli/token-manager.js +519 -0
  36. package/scripts/sync-theme-config.js +309 -0
  37. package/src/components/List/ListGroup.tsx +1 -2
  38. package/src/components/Popover/Popover.tsx +2 -2
  39. package/src/components/Tooltip/Tooltip.stories.tsx +49 -12
  40. package/src/components/Tooltip/Tooltip.tsx +32 -58
  41. package/src/lib/composables/useAtomixGlass.ts +46 -46
  42. package/src/lib/composables/useTooltip.ts +285 -0
  43. package/src/lib/constants/cssVariables.ts +390 -0
  44. package/src/lib/hooks/__tests__/useComponentCustomization.test.ts +151 -0
  45. package/src/lib/hooks/index.ts +19 -0
  46. package/src/lib/hooks/useComponentCustomization.ts +175 -0
  47. package/src/lib/index.ts +10 -1
  48. package/src/lib/patterns/__tests__/slots.test.ts +108 -0
  49. package/src/lib/patterns/index.ts +35 -0
  50. package/src/lib/patterns/slots.tsx +421 -0
  51. package/src/lib/theme/__tests__/ThemeBuilder.test.ts +223 -0
  52. package/src/lib/theme/builders/ThemeBuilder.ts +372 -0
  53. package/src/lib/theme/config/index.ts +21 -0
  54. package/src/lib/theme/config/loader.ts +276 -0
  55. package/src/lib/theme/config/types.ts +98 -0
  56. package/src/lib/theme/config/validator.ts +326 -0
  57. package/src/lib/theme/constants.ts +183 -0
  58. package/src/lib/theme/core/ThemeCache.ts +283 -0
  59. package/src/lib/theme/core/ThemeEngine.test.ts +146 -0
  60. package/src/lib/theme/core/ThemeEngine.ts +657 -0
  61. package/src/lib/theme/core/ThemeRegistry.ts +284 -0
  62. package/src/lib/theme/core/ThemeValidator.ts +530 -0
  63. package/src/lib/theme/core/index.ts +24 -0
  64. package/src/lib/theme/createTheme.ts +83 -204
  65. package/src/lib/theme/cssVariableMapper.ts +261 -0
  66. package/src/lib/theme/devtools/CLI.ts +279 -0
  67. package/src/lib/theme/devtools/Inspector.tsx +594 -0
  68. package/src/lib/theme/devtools/Preview.tsx +392 -0
  69. package/src/lib/theme/devtools/index.ts +21 -0
  70. package/src/lib/theme/errors.test.ts +207 -0
  71. package/src/lib/theme/errors.ts +233 -0
  72. package/src/lib/theme/generateCSSVariables.ts +93 -9
  73. package/src/lib/theme/generators/CSSGenerator.ts +311 -0
  74. package/src/lib/theme/generators/ConfigGenerator.ts +287 -0
  75. package/src/lib/theme/generators/TypeGenerator.ts +228 -0
  76. package/src/lib/theme/generators/index.ts +21 -0
  77. package/src/lib/theme/i18n/index.ts +9 -0
  78. package/src/lib/theme/i18n/rtl.ts +325 -0
  79. package/src/lib/theme/index.ts +36 -109
  80. package/src/lib/theme/monitoring/ThemeAnalytics.ts +409 -0
  81. package/src/lib/theme/monitoring/index.ts +17 -0
  82. package/src/lib/theme/overrides/ComponentOverrides.ts +243 -0
  83. package/src/lib/theme/overrides/index.ts +15 -0
  84. package/src/lib/theme/runtime/ThemeApplicator.ts +252 -0
  85. package/src/lib/theme/runtime/ThemeErrorBoundary.tsx +233 -0
  86. package/src/lib/theme/runtime/ThemeManager.test.ts +176 -0
  87. package/src/lib/theme/runtime/ThemeManager.ts +442 -0
  88. package/src/lib/theme/runtime/ThemeProvider.tsx +318 -0
  89. package/src/lib/theme/runtime/index.ts +17 -0
  90. package/src/lib/theme/runtime/useTheme.ts +52 -0
  91. package/src/lib/theme/themeUtils.ts +27 -5
  92. package/src/lib/theme/types.ts +62 -1
  93. package/src/lib/theme/utils.ts +23 -22
  94. package/src/lib/theme/whitelabel/WhiteLabelManager.ts +364 -0
  95. package/src/lib/theme/whitelabel/index.ts +13 -0
  96. package/src/lib/theme-tools.ts +185 -0
  97. package/src/lib/types/components.ts +194 -0
  98. package/src/lib/types/partProps.ts +426 -0
  99. package/src/lib/utils/__tests__/componentUtils.test.ts +144 -0
  100. package/src/lib/utils/componentUtils.ts +163 -0
  101. package/src/lib/utils/index.ts +17 -57
  102. package/src/styles/01-settings/_settings.badge.scss +1 -1
  103. package/src/styles/01-settings/_settings.callout.scss +1 -1
  104. package/src/styles/01-settings/_settings.card.scss +1 -1
  105. package/src/styles/01-settings/_settings.colors.scss +10 -10
  106. package/src/styles/01-settings/_settings.input.scss +1 -1
  107. package/src/styles/01-settings/_settings.navbar.scss +1 -1
  108. package/src/styles/01-settings/_settings.tooltip.scss +1 -1
  109. package/src/styles/01-settings/_settings.upload.scss +1 -1
  110. package/src/styles/06-components/_components.chart.scss +2 -2
  111. package/src/styles/06-components/_components.tooltip.scss +31 -81
  112. package/src/styles/99-utilities/_utilities.border.scss +27 -58
  113. package/src/styles/99-utilities/_utilities.gradient.scss +12 -0
  114. package/src/styles/99-utilities/_utilities.position.scss +8 -15
  115. package/src/styles/99-utilities/_utilities.scss +2 -0
  116. package/src/styles/99-utilities/_utilities.spacing.scss +76 -121
  117. package/src/styles/99-utilities/_utilities.text.scss +30 -49
  118. package/src/themes/README.md +443 -0
  119. package/src/themes/THEME_CHECKLIST.md +74 -0
  120. package/src/themes/applemix/01-settings/_index.scss +24 -0
  121. package/src/themes/applemix/01-settings/_settings.animations.scss +0 -0
  122. package/src/themes/applemix/01-settings/_settings.background.scss +6 -0
  123. package/src/themes/applemix/01-settings/_settings.colors.scss +75 -0
  124. package/src/themes/applemix/01-settings/_settings.config.scss +15 -0
  125. package/src/themes/applemix/01-settings/_settings.typography.scss +30 -0
  126. package/src/themes/applemix/02-tools/_index.scss +4 -0
  127. package/src/themes/applemix/03-generic/_index.scss +7 -0
  128. package/src/themes/applemix/04-elements/_index.scss +7 -0
  129. package/src/themes/applemix/05-objects/_index.scss +7 -0
  130. package/src/themes/applemix/06-components/_index.scss +15 -0
  131. package/src/themes/applemix/99-utilities/_index.scss +7 -0
  132. package/src/themes/applemix/README.md +378 -0
  133. package/src/themes/applemix/index.scss +33 -0
  134. package/src/themes/boomdevs/01-settings/_index.scss +38 -0
  135. package/src/themes/boomdevs/01-settings/_settings.accordion.scss +12 -0
  136. package/src/themes/boomdevs/01-settings/_settings.animations.scss +11 -0
  137. package/src/themes/boomdevs/01-settings/_settings.avatar.scss +9 -0
  138. package/src/themes/boomdevs/01-settings/_settings.badge.scss +11 -0
  139. package/src/themes/boomdevs/01-settings/_settings.border-radius.scss +16 -0
  140. package/src/themes/boomdevs/01-settings/_settings.border.scss +10 -0
  141. package/src/themes/boomdevs/01-settings/_settings.box-shadow.scss +14 -0
  142. package/src/themes/boomdevs/01-settings/_settings.breadcrumb.scss +13 -0
  143. package/src/themes/boomdevs/01-settings/_settings.breakpoints.scss +15 -0
  144. package/src/themes/boomdevs/01-settings/_settings.button.scss +9 -0
  145. package/src/themes/boomdevs/01-settings/_settings.callout.scss +9 -0
  146. package/src/themes/boomdevs/01-settings/_settings.card.scss +11 -0
  147. package/src/themes/boomdevs/01-settings/_settings.checkbox.scss +9 -0
  148. package/src/themes/boomdevs/01-settings/_settings.colors.scss +145 -0
  149. package/src/themes/boomdevs/01-settings/_settings.dropdown.scss +11 -0
  150. package/src/themes/boomdevs/01-settings/_settings.grid.scss +16 -0
  151. package/src/themes/boomdevs/01-settings/_settings.input.scss +14 -0
  152. package/src/themes/boomdevs/01-settings/_settings.link.scss +11 -0
  153. package/src/themes/boomdevs/01-settings/_settings.list.scss +10 -0
  154. package/src/themes/boomdevs/01-settings/_settings.modal.scss +16 -0
  155. package/src/themes/boomdevs/01-settings/_settings.navbar.scss +16 -0
  156. package/src/themes/boomdevs/01-settings/_settings.pagination.scss +13 -0
  157. package/src/themes/boomdevs/01-settings/_settings.progress.scss +11 -0
  158. package/src/themes/boomdevs/01-settings/_settings.rating.scss +10 -0
  159. package/src/themes/boomdevs/01-settings/_settings.spacing.scss +33 -0
  160. package/src/themes/boomdevs/01-settings/_settings.spinner.scss +11 -0
  161. package/src/themes/boomdevs/01-settings/_settings.steps.scss +12 -0
  162. package/src/themes/boomdevs/01-settings/_settings.tabs.scss +12 -0
  163. package/src/themes/boomdevs/01-settings/_settings.todo.scss +15 -0
  164. package/src/themes/boomdevs/01-settings/_settings.toggle.scss +14 -0
  165. package/src/themes/boomdevs/01-settings/_settings.tooltip.scss +13 -0
  166. package/src/themes/boomdevs/01-settings/_settings.typography.scss +58 -0
  167. package/src/themes/boomdevs/01-settings/_settings.video-player.scss +12 -0
  168. package/src/themes/boomdevs/02-tools/_index.scss +7 -0
  169. package/src/themes/boomdevs/03-generic/_index.scss +7 -0
  170. package/src/themes/boomdevs/04-elements/_index.scss +7 -0
  171. package/src/themes/boomdevs/05-objects/_index.scss +7 -0
  172. package/src/themes/boomdevs/06-components/_components.button.scss +11 -0
  173. package/src/themes/boomdevs/06-components/_index.scss +11 -0
  174. package/src/themes/boomdevs/99-utilities/_index.scss +7 -0
  175. package/src/themes/boomdevs/index.scss +26 -0
  176. package/src/themes/esrar/01-settings/_index.scss +15 -0
  177. package/src/themes/esrar/01-settings/_settings.colors.scss +91 -0
  178. package/src/themes/esrar/02-tools/_index.scss +8 -0
  179. package/src/themes/esrar/02-tools/_tools.animations.scss +342 -0
  180. package/src/themes/esrar/06-components/_components.accordion.scss +49 -0
  181. package/src/themes/esrar/06-components/_components.avatar-group.scss +14 -0
  182. package/src/themes/esrar/06-components/_components.avatar.scss +61 -0
  183. package/src/themes/esrar/06-components/_components.badge.scss +117 -0
  184. package/src/themes/esrar/06-components/_components.breadcrumb.scss +65 -0
  185. package/src/themes/esrar/06-components/_components.btn-group.scss +19 -0
  186. package/src/themes/esrar/06-components/_components.button.scss +224 -0
  187. package/src/themes/esrar/06-components/_components.callout.scss +51 -0
  188. package/src/themes/esrar/06-components/_components.card.scss +134 -0
  189. package/src/themes/esrar/06-components/_components.chart.scss +24 -0
  190. package/src/themes/esrar/06-components/_components.checkbox-group.scss +26 -0
  191. package/src/themes/esrar/06-components/_components.checkbox.scss +71 -0
  192. package/src/themes/esrar/06-components/_components.color-mode-toggle.scss +29 -0
  193. package/src/themes/esrar/06-components/_components.countdown.scss +67 -0
  194. package/src/themes/esrar/06-components/_components.data-table.scss +22 -0
  195. package/src/themes/esrar/06-components/_components.datepicker.scss +20 -0
  196. package/src/themes/esrar/06-components/_components.dropdown.scss +272 -0
  197. package/src/themes/esrar/06-components/_components.edge-panel.scss +10 -0
  198. package/src/themes/esrar/06-components/_components.form-group.scss +15 -0
  199. package/src/themes/esrar/06-components/_components.form.scss +66 -0
  200. package/src/themes/esrar/06-components/_components.hero.scss +251 -0
  201. package/src/themes/esrar/06-components/_components.icon.scss +33 -0
  202. package/src/themes/esrar/06-components/_components.image-gallery.scss +29 -0
  203. package/src/themes/esrar/06-components/_components.input.scss +91 -0
  204. package/src/themes/esrar/06-components/_components.list-group.scss +26 -0
  205. package/src/themes/esrar/06-components/_components.modal.scss +148 -0
  206. package/src/themes/esrar/06-components/_components.notification.scss +80 -0
  207. package/src/themes/esrar/06-components/_components.pagination.scss +84 -0
  208. package/src/themes/esrar/06-components/_components.popover.scss +10 -0
  209. package/src/themes/esrar/06-components/_components.progress.scss +64 -0
  210. package/src/themes/esrar/06-components/_components.rating.scss +26 -0
  211. package/src/themes/esrar/06-components/_components.skeleton.scss +15 -0
  212. package/src/themes/esrar/06-components/_components.slider.scss +90 -0
  213. package/src/themes/esrar/06-components/_components.spinner.scss +71 -0
  214. package/src/themes/esrar/06-components/_components.steps.scss +76 -0
  215. package/src/themes/esrar/06-components/_components.tab.scss +58 -0
  216. package/src/themes/esrar/06-components/_components.tag.scss +21 -0
  217. package/src/themes/esrar/06-components/_components.timeline.scss +19 -0
  218. package/src/themes/esrar/06-components/_components.toast.scss +91 -0
  219. package/src/themes/esrar/06-components/_components.toggle.scss +74 -0
  220. package/src/themes/esrar/06-components/_components.tooltip.scss +45 -0
  221. package/src/themes/esrar/06-components/_components.upload.scss +102 -0
  222. package/src/themes/esrar/06-components/_index.scss +42 -0
  223. package/src/themes/esrar/index.scss +30 -0
  224. package/src/themes/flashtrade/01-settings/_index.scss +19 -0
  225. package/src/themes/flashtrade/01-settings/_settings.animations.scss +11 -0
  226. package/src/themes/flashtrade/01-settings/_settings.background.scss +9 -0
  227. package/src/themes/flashtrade/01-settings/_settings.colors.scss +79 -0
  228. package/src/themes/flashtrade/01-settings/_settings.config.scss +16 -0
  229. package/src/themes/flashtrade/01-settings/_settings.typography.scss +35 -0
  230. package/src/themes/flashtrade/02-tools/_index.scss +8 -0
  231. package/src/themes/flashtrade/03-generic/_index.scss +8 -0
  232. package/src/themes/flashtrade/04-elements/_index.scss +12 -0
  233. package/src/themes/flashtrade/05-objects/_index.scss +8 -0
  234. package/src/themes/flashtrade/06-components/_components.badge.scss +156 -0
  235. package/src/themes/flashtrade/06-components/_components.button.scss +135 -0
  236. package/src/themes/flashtrade/06-components/_components.card.scss +214 -0
  237. package/src/themes/flashtrade/06-components/_components.navbar.scss +227 -0
  238. package/src/themes/flashtrade/06-components/_index.scss +13 -0
  239. package/src/themes/flashtrade/99-utilities/_index.scss +9 -0
  240. package/src/themes/flashtrade/99-utilities/_utilities.trading.scss +187 -0
  241. package/src/themes/flashtrade/README.md +386 -0
  242. package/src/themes/flashtrade/demo.html +272 -0
  243. package/src/themes/flashtrade/index.scss +36 -0
  244. package/src/themes/mashroom/01-settings/_index.scss +69 -0
  245. package/src/themes/mashroom/01-settings/_settings.accordion.scss +32 -0
  246. package/src/themes/mashroom/01-settings/_settings.animations.scss +26 -0
  247. package/src/themes/mashroom/01-settings/_settings.avatar-group.scss +22 -0
  248. package/src/themes/mashroom/01-settings/_settings.avatar.scss +57 -0
  249. package/src/themes/mashroom/01-settings/_settings.badge.scss +19 -0
  250. package/src/themes/mashroom/01-settings/_settings.border-radius.scss +24 -0
  251. package/src/themes/mashroom/01-settings/_settings.border.scss +14 -0
  252. package/src/themes/mashroom/01-settings/_settings.box-shadow.scss +40 -0
  253. package/src/themes/mashroom/01-settings/_settings.breadcrumb.scss +0 -0
  254. package/src/themes/mashroom/01-settings/_settings.breakpoints.scss +17 -0
  255. package/src/themes/mashroom/01-settings/_settings.btn-group.scss +5 -0
  256. package/src/themes/mashroom/01-settings/_settings.button.scss +50 -0
  257. package/src/themes/mashroom/01-settings/_settings.callout.scss +81 -0
  258. package/src/themes/mashroom/01-settings/_settings.card.scss +52 -0
  259. package/src/themes/mashroom/01-settings/_settings.checkbox-group.scss +5 -0
  260. package/src/themes/mashroom/01-settings/_settings.checkbox.scss +23 -0
  261. package/src/themes/mashroom/01-settings/_settings.color-mode.scss +7 -0
  262. package/src/themes/mashroom/01-settings/_settings.colors.scss +180 -0
  263. package/src/themes/mashroom/01-settings/_settings.config.scss +4 -0
  264. package/src/themes/mashroom/01-settings/_settings.countdown.scss +20 -0
  265. package/src/themes/mashroom/01-settings/_settings.data-table.scss +56 -0
  266. package/src/themes/mashroom/01-settings/_settings.datepicker.scss +45 -0
  267. package/src/themes/mashroom/01-settings/_settings.design-tokens.scss +3 -0
  268. package/src/themes/mashroom/01-settings/_settings.dropdown.scss +45 -0
  269. package/src/themes/mashroom/01-settings/_settings.edge-panel.scss +24 -0
  270. package/src/themes/mashroom/01-settings/_settings.fonts.scss +8 -0
  271. package/src/themes/mashroom/01-settings/_settings.form-group.scss +14 -0
  272. package/src/themes/mashroom/01-settings/_settings.form.scss +6 -0
  273. package/src/themes/mashroom/01-settings/_settings.grid.scss +23 -0
  274. package/src/themes/mashroom/01-settings/_settings.hero.scss +41 -0
  275. package/src/themes/mashroom/01-settings/_settings.input.scss +51 -0
  276. package/src/themes/mashroom/01-settings/_settings.link.scss +13 -0
  277. package/src/themes/mashroom/01-settings/_settings.list-group.scss +16 -0
  278. package/src/themes/mashroom/01-settings/_settings.list.scss +13 -0
  279. package/src/themes/mashroom/01-settings/_settings.masonry-grid.scss +23 -0
  280. package/src/themes/mashroom/01-settings/_settings.menu.scss +50 -0
  281. package/src/themes/mashroom/01-settings/_settings.messages.scss +98 -0
  282. package/src/themes/mashroom/01-settings/_settings.modal.scss +41 -0
  283. package/src/themes/mashroom/01-settings/_settings.nav.scss +20 -0
  284. package/src/themes/mashroom/01-settings/_settings.navbar.scss +54 -0
  285. package/src/themes/mashroom/01-settings/_settings.pagination.scss +30 -0
  286. package/src/themes/mashroom/01-settings/_settings.photoviewer.scss +45 -0
  287. package/src/themes/mashroom/01-settings/_settings.popover.scss +20 -0
  288. package/src/themes/mashroom/01-settings/_settings.position.scss +9 -0
  289. package/src/themes/mashroom/01-settings/_settings.progress.scss +17 -0
  290. package/src/themes/mashroom/01-settings/_settings.rating.scss +11 -0
  291. package/src/themes/mashroom/01-settings/_settings.river.scss +50 -0
  292. package/src/themes/mashroom/01-settings/_settings.sectionintro.scss +31 -0
  293. package/src/themes/mashroom/01-settings/_settings.select.scss +47 -0
  294. package/src/themes/mashroom/01-settings/_settings.side-menu.scss +79 -0
  295. package/src/themes/mashroom/01-settings/_settings.skeleton.scss +24 -0
  296. package/src/themes/mashroom/01-settings/_settings.spacing.scss +66 -0
  297. package/src/themes/mashroom/01-settings/_settings.spinner.scss +34 -0
  298. package/src/themes/mashroom/01-settings/_settings.steps.scss +33 -0
  299. package/src/themes/mashroom/01-settings/_settings.tabs.scss +33 -0
  300. package/src/themes/mashroom/01-settings/_settings.testimonials.scss +24 -0
  301. package/src/themes/mashroom/01-settings/_settings.todo.scss +52 -0
  302. package/src/themes/mashroom/01-settings/_settings.toggle.scss +49 -0
  303. package/src/themes/mashroom/01-settings/_settings.tooltip.scss +20 -0
  304. package/src/themes/mashroom/01-settings/_settings.typography.scss +95 -0
  305. package/src/themes/mashroom/01-settings/_settings.upload.scss +96 -0
  306. package/src/themes/mashroom/01-settings/_settings.z-layers.scss +19 -0
  307. package/src/themes/mashroom/02-tools/_index.scss +8 -0
  308. package/src/themes/mashroom/02-tools/_tools.psychedelic-gradients.scss +78 -0
  309. package/src/themes/mashroom/02-tools/_tools.trippy-effects.scss +114 -0
  310. package/src/themes/mashroom/03-generic/_index.scss +6 -0
  311. package/src/themes/mashroom/04-elements/_index.scss +6 -0
  312. package/src/themes/mashroom/05-objects/_index.scss +6 -0
  313. package/src/themes/mashroom/06-components/_components.accordion.scss +187 -0
  314. package/src/themes/mashroom/06-components/_components.avatar-group.scss +276 -0
  315. package/src/themes/mashroom/06-components/_components.avatar.scss +114 -0
  316. package/src/themes/mashroom/06-components/_components.badge.scss +152 -0
  317. package/src/themes/mashroom/06-components/_components.breadcrumb.scss +162 -0
  318. package/src/themes/mashroom/06-components/_components.btn-group.scss +404 -0
  319. package/src/themes/mashroom/06-components/_components.button.scss +160 -0
  320. package/src/themes/mashroom/06-components/_components.callout.scss +140 -0
  321. package/src/themes/mashroom/06-components/_components.card.scss +225 -0
  322. package/src/themes/mashroom/06-components/_components.checkbox.scss +186 -0
  323. package/src/themes/mashroom/06-components/_components.color-mode-toggle.scss +308 -0
  324. package/src/themes/mashroom/06-components/_components.countdown.scss +402 -0
  325. package/src/themes/mashroom/06-components/_components.data-table.scss +354 -0
  326. package/src/themes/mashroom/06-components/_components.datepicker.scss +349 -0
  327. package/src/themes/mashroom/06-components/_components.dropdown.scss +334 -0
  328. package/src/themes/mashroom/06-components/_components.edge-panel.scss +413 -0
  329. package/src/themes/mashroom/06-components/_components.form-group.scss +433 -0
  330. package/src/themes/mashroom/06-components/_components.form.scss +358 -0
  331. package/src/themes/mashroom/06-components/_components.hero.scss +151 -0
  332. package/src/themes/mashroom/06-components/_components.input.scss +147 -0
  333. package/src/themes/mashroom/06-components/_components.list-group.scss +456 -0
  334. package/src/themes/mashroom/06-components/_components.list.scss +145 -0
  335. package/src/themes/mashroom/06-components/_components.menu.scss +497 -0
  336. package/src/themes/mashroom/06-components/_components.messages.scss +277 -0
  337. package/src/themes/mashroom/06-components/_components.modal.scss +264 -0
  338. package/src/themes/mashroom/06-components/_components.nav.scss +181 -0
  339. package/src/themes/mashroom/06-components/_components.navbar.scss +538 -0
  340. package/src/themes/mashroom/06-components/_components.pagination.scss +400 -0
  341. package/src/themes/mashroom/06-components/_components.photoviewer.scss +498 -0
  342. package/src/themes/mashroom/06-components/_components.popover.scss +383 -0
  343. package/src/themes/mashroom/06-components/_components.product-review.scss +408 -0
  344. package/src/themes/mashroom/06-components/_components.progress.scss +249 -0
  345. package/src/themes/mashroom/06-components/_components.rating.scss +300 -0
  346. package/src/themes/mashroom/06-components/_components.river.scss +570 -0
  347. package/src/themes/mashroom/06-components/_components.sectionintro.scss +546 -0
  348. package/src/themes/mashroom/06-components/_components.select.scss +455 -0
  349. package/src/themes/mashroom/06-components/_components.side-menu.scss +635 -0
  350. package/src/themes/mashroom/06-components/_components.skeleton.scss +447 -0
  351. package/src/themes/mashroom/06-components/_components.slider.scss +414 -0
  352. package/src/themes/mashroom/06-components/_components.spinner.scss +198 -0
  353. package/src/themes/mashroom/06-components/_components.steps.scss +350 -0
  354. package/src/themes/mashroom/06-components/_components.tabs.scss +269 -0
  355. package/src/themes/mashroom/06-components/_components.testimonials.scss +561 -0
  356. package/src/themes/mashroom/06-components/_components.toggle.scss +231 -0
  357. package/src/themes/mashroom/06-components/_components.tooltip.scss +167 -0
  358. package/src/themes/mashroom/06-components/_components.upload.scss +537 -0
  359. package/src/themes/mashroom/06-components/_components.video-player.scss +560 -0
  360. package/src/themes/mashroom/06-components/_index.scss +55 -0
  361. package/src/themes/mashroom/99-utilities/_index.scss +6 -0
  362. package/src/themes/mashroom/index.scss +26 -0
  363. package/src/themes/shaj-default/01-settings/_index.scss +69 -0
  364. package/src/themes/shaj-default/01-settings/_settings.accordion.scss +38 -0
  365. package/src/themes/shaj-default/01-settings/_settings.animations.scss +32 -0
  366. package/src/themes/shaj-default/01-settings/_settings.avatar-group.scss +28 -0
  367. package/src/themes/shaj-default/01-settings/_settings.avatar.scss +63 -0
  368. package/src/themes/shaj-default/01-settings/_settings.badge.scss +25 -0
  369. package/src/themes/shaj-default/01-settings/_settings.border-radius.scss +24 -0
  370. package/src/themes/shaj-default/01-settings/_settings.border.scss +20 -0
  371. package/src/themes/shaj-default/01-settings/_settings.box-shadow.scss +46 -0
  372. package/src/themes/shaj-default/01-settings/_settings.breadcrumb.scss +0 -0
  373. package/src/themes/shaj-default/01-settings/_settings.breakpoints.scss +23 -0
  374. package/src/themes/shaj-default/01-settings/_settings.btn-group.scss +11 -0
  375. package/src/themes/shaj-default/01-settings/_settings.button.scss +56 -0
  376. package/src/themes/shaj-default/01-settings/_settings.callout.scss +87 -0
  377. package/src/themes/shaj-default/01-settings/_settings.card.scss +52 -0
  378. package/src/themes/shaj-default/01-settings/_settings.checkbox-group.scss +11 -0
  379. package/src/themes/shaj-default/01-settings/_settings.checkbox.scss +29 -0
  380. package/src/themes/shaj-default/01-settings/_settings.color-mode.scss +13 -0
  381. package/src/themes/shaj-default/01-settings/_settings.colors.scss +91 -0
  382. package/src/themes/shaj-default/01-settings/_settings.config.scss +4 -0
  383. package/src/themes/shaj-default/01-settings/_settings.countdown.scss +26 -0
  384. package/src/themes/shaj-default/01-settings/_settings.data-table.scss +62 -0
  385. package/src/themes/shaj-default/01-settings/_settings.datepicker.scss +51 -0
  386. package/src/themes/shaj-default/01-settings/_settings.design-tokens.scss +9 -0
  387. package/src/themes/shaj-default/01-settings/_settings.dropdown.scss +51 -0
  388. package/src/themes/shaj-default/01-settings/_settings.edge-panel.scss +30 -0
  389. package/src/themes/shaj-default/01-settings/_settings.fonts.scss +13 -0
  390. package/src/themes/shaj-default/01-settings/_settings.form-group.scss +20 -0
  391. package/src/themes/shaj-default/01-settings/_settings.form.scss +12 -0
  392. package/src/themes/shaj-default/01-settings/_settings.grid.scss +29 -0
  393. package/src/themes/shaj-default/01-settings/_settings.hero.scss +47 -0
  394. package/src/themes/shaj-default/01-settings/_settings.input.scss +57 -0
  395. package/src/themes/shaj-default/01-settings/_settings.link.scss +19 -0
  396. package/src/themes/shaj-default/01-settings/_settings.list-group.scss +22 -0
  397. package/src/themes/shaj-default/01-settings/_settings.list.scss +19 -0
  398. package/src/themes/shaj-default/01-settings/_settings.masonry-grid.scss +29 -0
  399. package/src/themes/shaj-default/01-settings/_settings.menu.scss +56 -0
  400. package/src/themes/shaj-default/01-settings/_settings.messages.scss +104 -0
  401. package/src/themes/shaj-default/01-settings/_settings.modal.scss +47 -0
  402. package/src/themes/shaj-default/01-settings/_settings.nav.scss +26 -0
  403. package/src/themes/shaj-default/01-settings/_settings.navbar.scss +60 -0
  404. package/src/themes/shaj-default/01-settings/_settings.pagination.scss +36 -0
  405. package/src/themes/shaj-default/01-settings/_settings.photoviewer.scss +51 -0
  406. package/src/themes/shaj-default/01-settings/_settings.popover.scss +26 -0
  407. package/src/themes/shaj-default/01-settings/_settings.position.scss +15 -0
  408. package/src/themes/shaj-default/01-settings/_settings.progress.scss +23 -0
  409. package/src/themes/shaj-default/01-settings/_settings.rating.scss +17 -0
  410. package/src/themes/shaj-default/01-settings/_settings.river.scss +56 -0
  411. package/src/themes/shaj-default/01-settings/_settings.sectionintro.scss +37 -0
  412. package/src/themes/shaj-default/01-settings/_settings.select.scss +53 -0
  413. package/src/themes/shaj-default/01-settings/_settings.side-menu.scss +85 -0
  414. package/src/themes/shaj-default/01-settings/_settings.skeleton.scss +30 -0
  415. package/src/themes/shaj-default/01-settings/_settings.spacing.scss +72 -0
  416. package/src/themes/shaj-default/01-settings/_settings.spinner.scss +24 -0
  417. package/src/themes/shaj-default/01-settings/_settings.steps.scss +39 -0
  418. package/src/themes/shaj-default/01-settings/_settings.tabs.scss +39 -0
  419. package/src/themes/shaj-default/01-settings/_settings.testimonials.scss +30 -0
  420. package/src/themes/shaj-default/01-settings/_settings.todo.scss +58 -0
  421. package/src/themes/shaj-default/01-settings/_settings.toggle.scss +55 -0
  422. package/src/themes/shaj-default/01-settings/_settings.tooltip.scss +26 -0
  423. package/src/themes/shaj-default/01-settings/_settings.typography.scss +101 -0
  424. package/src/themes/shaj-default/01-settings/_settings.upload.scss +102 -0
  425. package/src/themes/shaj-default/01-settings/_settings.z-layers.scss +25 -0
  426. package/src/themes/shaj-default/02-tools/_index.scss +0 -0
  427. package/src/themes/shaj-default/03-generic/_generic.root.scss +0 -0
  428. package/src/themes/shaj-default/03-generic/_index.scss +2 -0
  429. package/src/themes/shaj-default/04-elements/_index.scss +0 -0
  430. package/src/themes/shaj-default/05-objects/_index.scss +0 -0
  431. package/src/themes/shaj-default/06-components/_components.button.scss +55 -0
  432. package/src/themes/shaj-default/06-components/_components.card.scss +57 -0
  433. package/src/themes/shaj-default/06-components/_components.input.scss +58 -0
  434. package/src/themes/shaj-default/06-components/_components.navbar.scss +99 -0
  435. package/src/themes/shaj-default/06-components/_components.tooltip.scss +0 -0
  436. package/src/themes/shaj-default/06-components/_index.scss +13 -0
  437. package/src/themes/shaj-default/99-utilities/_index.scss +0 -0
  438. package/src/themes/shaj-default/index.scss +25 -0
  439. package/src/themes/themes.config.js +219 -0
  440. package/theme.config.ts +360 -0
  441. package/src/lib/theme/ThemeManager.integration.test.ts +0 -124
  442. package/src/lib/theme/ThemeManager.stories.tsx +0 -472
  443. package/src/lib/theme/ThemeManager.test.ts +0 -190
  444. package/src/lib/theme/ThemeManager.ts +0 -645
  445. package/src/lib/theme/ThemeProvider.tsx +0 -377
  446. package/src/lib/theme/createTheme.test.ts +0 -475
  447. package/src/lib/theme/useTheme.test.tsx +0 -67
  448. package/src/lib/theme/useTheme.ts +0 -64
  449. package/src/lib/theme/utils.test.ts +0 -140
@@ -1,4 +1,7 @@
1
1
  import { ReactNode } from 'react';
2
+ import type { ButtonParts, CardParts, InputParts, ModalParts, DropdownParts, BadgeParts, ProgressParts, CheckboxParts, RadioParts } from './partProps';
3
+ import type { SlotProps, ButtonRootSlotProps, ButtonIconSlotProps, ButtonLabelSlotProps, ButtonSpinnerSlotProps, BadgeRootSlotProps, BadgeIconSlotProps, BadgeLabelSlotProps, ProgressRootSlotProps, ProgressBarSlotProps, CheckboxRootSlotProps, CheckboxInputSlotProps, CheckboxLabelSlotProps, RadioRootSlotProps, RadioInputSlotProps, RadioLabelSlotProps } from '../patterns/slots';
4
+ import type { ButtonCSSVariable, CardCSSVariable, InputCSSVariable, ModalCSSVariable, DropdownCSSVariable, BadgeCSSVariable, ProgressCSSVariable, CheckboxCSSVariable, RadioCSSVariable } from '../constants/cssVariables';
2
5
 
3
6
  // ============================================================================
4
7
  // AtomixGlass Types
@@ -409,6 +412,29 @@ export interface ButtonProps extends BaseComponentProps {
409
412
  * Button size
410
413
  */
411
414
  size?: Size;
415
+
416
+ /**
417
+ * Part-based styling (NEW)
418
+ * Allows styling individual button parts
419
+ */
420
+ parts?: ButtonParts;
421
+
422
+ /**
423
+ * CSS variable overrides (NEW)
424
+ * Runtime CSS custom property overrides
425
+ */
426
+ cssVars?: Partial<Record<ButtonCSSVariable, string | number>>;
427
+
428
+ /**
429
+ * Slot-based customization (NEW)
430
+ * Complete control over rendering
431
+ */
432
+ slots?: {
433
+ root?: SlotProps<ButtonRootSlotProps>;
434
+ icon?: SlotProps<ButtonIconSlotProps>;
435
+ label?: SlotProps<ButtonLabelSlotProps>;
436
+ spinner?: SlotProps<ButtonSpinnerSlotProps>;
437
+ };
412
438
 
413
439
  /**
414
440
  * Optional icon (ReactNode)
@@ -574,6 +600,41 @@ export interface BadgeProps extends BaseComponentProps {
574
600
  * Custom style for the badge
575
601
  */
576
602
  style?: React.CSSProperties;
603
+
604
+ /**
605
+ * Part-based styling for granular customization
606
+ * @example
607
+ * parts={{
608
+ * root: { className: 'custom-badge', style: { boxShadow: '0 2px 8px rgba(0,0,0,0.1)' } },
609
+ * icon: { style: { fontSize: '18px' } },
610
+ * label: { className: 'badge-label' }
611
+ * }}
612
+ */
613
+ parts?: BadgeParts;
614
+
615
+ /**
616
+ * CSS variable overrides for runtime customization
617
+ * @example
618
+ * cssVars={{
619
+ * '--atomix-badge-bg': '#FF0000',
620
+ * '--atomix-badge-border-radius': '20px'
621
+ * }}
622
+ */
623
+ cssVars?: Partial<Record<BadgeCSSVariable, string | number>>;
624
+
625
+ /**
626
+ * Slot-based customization for complete control
627
+ * @example
628
+ * slots={{
629
+ * root: { render: (props) => <motion.span {...props} /> },
630
+ * icon: { component: CustomIcon }
631
+ * }}
632
+ */
633
+ slots?: {
634
+ root?: SlotProps<BadgeRootSlotProps>;
635
+ icon?: SlotProps<BadgeIconSlotProps>;
636
+ label?: SlotProps<BadgeLabelSlotProps>;
637
+ };
577
638
  }
578
639
 
579
640
  /**
@@ -2215,6 +2276,42 @@ export interface CheckboxProps extends BaseComponentProps {
2215
2276
  * Helper text to display
2216
2277
  */
2217
2278
  helperText?: string;
2279
+
2280
+ /**
2281
+ * Part-based styling for granular customization
2282
+ * @example
2283
+ * parts={{
2284
+ * root: { className: 'custom-checkbox', style: { margin: '8px' } },
2285
+ * input: { style: { accentColor: '#7AFFD7' } },
2286
+ * label: { className: 'checkbox-label' }
2287
+ * }}
2288
+ */
2289
+ parts?: CheckboxParts;
2290
+
2291
+ /**
2292
+ * CSS variable overrides for runtime customization
2293
+ * @example
2294
+ * cssVars={{
2295
+ * '--atomix-checkbox-size': '20px',
2296
+ * '--atomix-checkbox-checked-bg': '#7AFFD7'
2297
+ * }}
2298
+ */
2299
+ cssVars?: Partial<Record<CheckboxCSSVariable, string | number>>;
2300
+
2301
+ /**
2302
+ * Slot-based customization for complete control
2303
+ * @example
2304
+ * slots={{
2305
+ * root: { render: (props) => <motion.div {...props} /> },
2306
+ * input: { component: CustomInput },
2307
+ * label: { component: CustomLabel }
2308
+ * }}
2309
+ */
2310
+ slots?: {
2311
+ root?: SlotProps<CheckboxRootSlotProps>;
2312
+ input?: SlotProps<CheckboxInputSlotProps>;
2313
+ label?: SlotProps<CheckboxLabelSlotProps>;
2314
+ };
2218
2315
  }
2219
2316
 
2220
2317
  /**
@@ -2291,6 +2388,42 @@ export interface RadioProps extends BaseComponentProps {
2291
2388
  * Helper text to display
2292
2389
  */
2293
2390
  helperText?: string;
2391
+
2392
+ /**
2393
+ * Part-based styling for granular customization
2394
+ * @example
2395
+ * parts={{
2396
+ * root: { className: 'custom-radio', style: { margin: '8px' } },
2397
+ * input: { style: { accentColor: '#7AFFD7' } },
2398
+ * label: { className: 'radio-label' }
2399
+ * }}
2400
+ */
2401
+ parts?: RadioParts;
2402
+
2403
+ /**
2404
+ * CSS variable overrides for runtime customization
2405
+ * @example
2406
+ * cssVars={{
2407
+ * '--atomix-radio-size': '20px',
2408
+ * '--atomix-radio-checked-bg': '#7AFFD7'
2409
+ * }}
2410
+ */
2411
+ cssVars?: Partial<Record<RadioCSSVariable, string | number>>;
2412
+
2413
+ /**
2414
+ * Slot-based customization for complete control
2415
+ * @example
2416
+ * slots={{
2417
+ * root: { render: (props) => <motion.div {...props} /> },
2418
+ * input: { component: CustomInput },
2419
+ * label: { component: CustomLabel }
2420
+ * }}
2421
+ */
2422
+ slots?: {
2423
+ root?: SlotProps<RadioRootSlotProps>;
2424
+ input?: SlotProps<RadioInputSlotProps>;
2425
+ label?: SlotProps<RadioLabelSlotProps>;
2426
+ };
2294
2427
  }
2295
2428
 
2296
2429
  /**
@@ -3049,6 +3182,39 @@ export interface ProgressProps extends BaseComponentProps {
3049
3182
  * Can be a boolean to enable with default settings, or an object with AtomixGlassProps to customize the effect
3050
3183
  */
3051
3184
  glass?: AtomixGlassProps | boolean;
3185
+
3186
+ /**
3187
+ * Part-based styling for granular customization
3188
+ * @example
3189
+ * parts={{
3190
+ * root: { className: 'custom-progress', style: { height: '12px' } },
3191
+ * bar: { style: { background: 'linear-gradient(...)' } }
3192
+ * }}
3193
+ */
3194
+ parts?: ProgressParts;
3195
+
3196
+ /**
3197
+ * CSS variable overrides for runtime customization
3198
+ * @example
3199
+ * cssVars={{
3200
+ * '--atomix-progress-bg': '#E0E0E0',
3201
+ * '--atomix-progress-bar-bg': '#7AFFD7'
3202
+ * }}
3203
+ */
3204
+ cssVars?: Partial<Record<ProgressCSSVariable, string | number>>;
3205
+
3206
+ /**
3207
+ * Slot-based customization for complete control
3208
+ * @example
3209
+ * slots={{
3210
+ * root: { render: (props) => <motion.div {...props} /> },
3211
+ * bar: { component: CustomBar }
3212
+ * }}
3213
+ */
3214
+ slots?: {
3215
+ root?: SlotProps<ProgressRootSlotProps>;
3216
+ bar?: SlotProps<ProgressBarSlotProps>;
3217
+ };
3052
3218
  }
3053
3219
 
3054
3220
  /**
@@ -3551,6 +3717,34 @@ export interface CardProps extends BaseComponentProps {
3551
3717
  * Tab index for keyboard navigation
3552
3718
  */
3553
3719
  tabIndex?: number;
3720
+
3721
+ /**
3722
+ * CSS variable overrides
3723
+ * Runtime CSS custom property overrides
3724
+ * @example
3725
+ * cssVars={{
3726
+ * '--atomix-card-bg': 'rgba(255, 255, 255, 0.1)',
3727
+ * '--atomix-card-border-radius': '24px'
3728
+ * }}
3729
+ */
3730
+ cssVars?: Partial<Record<CardCSSVariable, string | number>>;
3731
+
3732
+ /**
3733
+ * Part-based styling
3734
+ * Allows styling individual card parts
3735
+ */
3736
+ parts?: CardParts;
3737
+
3738
+ /**
3739
+ * Slot-based customization
3740
+ * Complete control over rendering
3741
+ */
3742
+ slots?: {
3743
+ root?: (props: SlotProps) => ReactNode;
3744
+ header?: (props: SlotProps) => ReactNode;
3745
+ body?: (props: SlotProps) => ReactNode;
3746
+ footer?: (props: SlotProps) => ReactNode;
3747
+ };
3554
3748
  }
3555
3749
 
3556
3750
  /**
@@ -0,0 +1,426 @@
1
+ /**
2
+ * Part-Based Styling Props
3
+ *
4
+ * Type definitions for styling individual component parts with className and style props.
5
+ * This enables granular customization of component internals.
6
+ */
7
+
8
+ import React from 'react';
9
+
10
+ /**
11
+ * Style properties for a component part
12
+ */
13
+ export interface PartStyleProps {
14
+ /** Additional CSS class name for the part */
15
+ className?: string;
16
+ /** Inline styles for the part */
17
+ style?: React.CSSProperties;
18
+ }
19
+
20
+ /**
21
+ * Generic component parts type
22
+ * T is a union of part names as strings
23
+ */
24
+ export type ComponentParts<T extends string> = {
25
+ [K in T]?: PartStyleProps;
26
+ };
27
+
28
+ /**
29
+ * Button component parts
30
+ */
31
+ export type ButtonParts = ComponentParts<'root' | 'icon' | 'label' | 'spinner'> & {
32
+ /** Root button element */
33
+ root?: PartStyleProps;
34
+ /** Icon wrapper element */
35
+ icon?: PartStyleProps;
36
+ /** Label/text wrapper element */
37
+ label?: PartStyleProps;
38
+ /** Loading spinner element */
39
+ spinner?: PartStyleProps;
40
+ };
41
+
42
+ /**
43
+ * Card component parts
44
+ */
45
+ export type CardParts = ComponentParts<
46
+ 'root' | 'header' | 'body' | 'footer' | 'title' | 'text' | 'image' | 'actions' | 'icon'
47
+ > & {
48
+ /** Root card element */
49
+ root?: PartStyleProps;
50
+ /** Header section */
51
+ header?: PartStyleProps;
52
+ /** Body/content section */
53
+ body?: PartStyleProps;
54
+ /** Footer section */
55
+ footer?: PartStyleProps;
56
+ /** Title element */
57
+ title?: PartStyleProps;
58
+ /** Text/description element */
59
+ text?: PartStyleProps;
60
+ /** Image element */
61
+ image?: PartStyleProps;
62
+ /** Actions container */
63
+ actions?: PartStyleProps;
64
+ /** Icon element */
65
+ icon?: PartStyleProps;
66
+ };
67
+
68
+ /**
69
+ * Input component parts
70
+ */
71
+ export type InputParts = ComponentParts<'root' | 'input' | 'wrapper' | 'prefix' | 'suffix'> & {
72
+ /** Root container element */
73
+ root?: PartStyleProps;
74
+ /** Input element itself */
75
+ input?: PartStyleProps;
76
+ /** Input wrapper element */
77
+ wrapper?: PartStyleProps;
78
+ /** Prefix element (icon/text before input) */
79
+ prefix?: PartStyleProps;
80
+ /** Suffix element (icon/text after input) */
81
+ suffix?: PartStyleProps;
82
+ };
83
+
84
+ /**
85
+ * Modal component parts
86
+ */
87
+ export type ModalParts = ComponentParts<
88
+ 'root' | 'backdrop' | 'dialog' | 'content' | 'header' | 'body' | 'footer' | 'close'
89
+ > & {
90
+ /** Root modal container */
91
+ root?: PartStyleProps;
92
+ /** Backdrop overlay */
93
+ backdrop?: PartStyleProps;
94
+ /** Dialog container */
95
+ dialog?: PartStyleProps;
96
+ /** Content wrapper */
97
+ content?: PartStyleProps;
98
+ /** Header section */
99
+ header?: PartStyleProps;
100
+ /** Body section */
101
+ body?: PartStyleProps;
102
+ /** Footer section */
103
+ footer?: PartStyleProps;
104
+ /** Close button */
105
+ close?: PartStyleProps;
106
+ };
107
+
108
+ /**
109
+ * Dropdown component parts
110
+ */
111
+ export type DropdownParts = ComponentParts<
112
+ 'root' | 'toggle' | 'menu' | 'menuWrapper' | 'item' | 'divider' | 'header'
113
+ > & {
114
+ /** Root dropdown container */
115
+ root?: PartStyleProps;
116
+ /** Toggle/trigger element */
117
+ toggle?: PartStyleProps;
118
+ /** Menu container */
119
+ menu?: PartStyleProps;
120
+ /** Menu wrapper (positioning) */
121
+ menuWrapper?: PartStyleProps;
122
+ /** Menu item */
123
+ item?: PartStyleProps;
124
+ /** Divider element */
125
+ divider?: PartStyleProps;
126
+ /** Header element */
127
+ header?: PartStyleProps;
128
+ };
129
+
130
+ /**
131
+ * Badge component parts
132
+ */
133
+ export type BadgeParts = ComponentParts<'root' | 'icon' | 'label'> & {
134
+ /** Root badge element */
135
+ root?: PartStyleProps;
136
+ /** Icon element */
137
+ icon?: PartStyleProps;
138
+ /** Label/text element */
139
+ label?: PartStyleProps;
140
+ };
141
+
142
+ /**
143
+ * Tabs component parts
144
+ */
145
+ export type TabsParts = ComponentParts<
146
+ 'root' | 'nav' | 'navItem' | 'navBtn' | 'panels' | 'panel' | 'panelBody'
147
+ > & {
148
+ /** Root tabs container */
149
+ root?: PartStyleProps;
150
+ /** Navigation container */
151
+ nav?: PartStyleProps;
152
+ /** Navigation item wrapper */
153
+ navItem?: PartStyleProps;
154
+ /** Navigation button */
155
+ navBtn?: PartStyleProps;
156
+ /** Panels container */
157
+ panels?: PartStyleProps;
158
+ /** Individual panel */
159
+ panel?: PartStyleProps;
160
+ /** Panel body/content */
161
+ panelBody?: PartStyleProps;
162
+ };
163
+
164
+ /**
165
+ * Progress component parts
166
+ */
167
+ export type ProgressParts = ComponentParts<'root' | 'bar' | 'label'> & {
168
+ /** Root progress container */
169
+ root?: PartStyleProps;
170
+ /** Progress bar element */
171
+ bar?: PartStyleProps;
172
+ /** Label/text element */
173
+ label?: PartStyleProps;
174
+ };
175
+
176
+ /**
177
+ * Tooltip component parts
178
+ */
179
+ export type TooltipParts = ComponentParts<'root' | 'trigger' | 'content' | 'arrow'> & {
180
+ /** Root tooltip container */
181
+ root?: PartStyleProps;
182
+ /** Trigger element */
183
+ trigger?: PartStyleProps;
184
+ /** Tooltip content */
185
+ content?: PartStyleProps;
186
+ /** Arrow element */
187
+ arrow?: PartStyleProps;
188
+ };
189
+
190
+ /**
191
+ * Select component parts
192
+ */
193
+ export type SelectParts = ComponentParts<'root' | 'select' | 'wrapper' | 'icon' | 'option'> & {
194
+ /** Root container */
195
+ root?: PartStyleProps;
196
+ /** Select element */
197
+ select?: PartStyleProps;
198
+ /** Select wrapper */
199
+ wrapper?: PartStyleProps;
200
+ /** Dropdown icon */
201
+ icon?: PartStyleProps;
202
+ /** Option element */
203
+ option?: PartStyleProps;
204
+ };
205
+
206
+ /**
207
+ * Checkbox component parts
208
+ */
209
+ export type CheckboxParts = ComponentParts<'root' | 'input' | 'box' | 'icon' | 'label'> & {
210
+ /** Root container */
211
+ root?: PartStyleProps;
212
+ /** Input element */
213
+ input?: PartStyleProps;
214
+ /** Checkbox box */
215
+ box?: PartStyleProps;
216
+ /** Check icon */
217
+ icon?: PartStyleProps;
218
+ /** Label text */
219
+ label?: PartStyleProps;
220
+ };
221
+
222
+ /**
223
+ * Radio component parts
224
+ */
225
+ export type RadioParts = ComponentParts<'root' | 'input' | 'circle' | 'dot' | 'label'> & {
226
+ /** Root container */
227
+ root?: PartStyleProps;
228
+ /** Input element */
229
+ input?: PartStyleProps;
230
+ /** Radio circle */
231
+ circle?: PartStyleProps;
232
+ /** Inner dot */
233
+ dot?: PartStyleProps;
234
+ /** Label text */
235
+ label?: PartStyleProps;
236
+ };
237
+
238
+ /**
239
+ * Textarea component parts
240
+ */
241
+ export type TextareaParts = ComponentParts<'root' | 'textarea' | 'wrapper'> & {
242
+ /** Root container */
243
+ root?: PartStyleProps;
244
+ /** Textarea element */
245
+ textarea?: PartStyleProps;
246
+ /** Textarea wrapper */
247
+ wrapper?: PartStyleProps;
248
+ };
249
+
250
+ /**
251
+ * FormGroup component parts
252
+ */
253
+ export type FormGroupParts = ComponentParts<'root' | 'label' | 'input' | 'helper' | 'error'> & {
254
+ /** Root container */
255
+ root?: PartStyleProps;
256
+ /** Label element */
257
+ label?: PartStyleProps;
258
+ /** Input wrapper */
259
+ input?: PartStyleProps;
260
+ /** Helper text */
261
+ helper?: PartStyleProps;
262
+ /** Error message */
263
+ error?: PartStyleProps;
264
+ };
265
+
266
+ /**
267
+ * Navbar component parts
268
+ */
269
+ export type NavbarParts = ComponentParts<
270
+ 'root' | 'container' | 'brand' | 'nav' | 'item' | 'link' | 'toggle'
271
+ > & {
272
+ /** Root navbar */
273
+ root?: PartStyleProps;
274
+ /** Container */
275
+ container?: PartStyleProps;
276
+ /** Brand element */
277
+ brand?: PartStyleProps;
278
+ /** Navigation */
279
+ nav?: PartStyleProps;
280
+ /** Nav item */
281
+ item?: PartStyleProps;
282
+ /** Nav link */
283
+ link?: PartStyleProps;
284
+ /** Mobile toggle */
285
+ toggle?: PartStyleProps;
286
+ };
287
+
288
+ /**
289
+ * Accordion component parts
290
+ */
291
+ export type AccordionParts = ComponentParts<
292
+ 'root' | 'item' | 'header' | 'trigger' | 'icon' | 'panel' | 'content'
293
+ > & {
294
+ /** Root accordion */
295
+ root?: PartStyleProps;
296
+ /** Accordion item */
297
+ item?: PartStyleProps;
298
+ /** Item header */
299
+ header?: PartStyleProps;
300
+ /** Trigger button */
301
+ trigger?: PartStyleProps;
302
+ /** Expand icon */
303
+ icon?: PartStyleProps;
304
+ /** Content panel */
305
+ panel?: PartStyleProps;
306
+ /** Panel content */
307
+ content?: PartStyleProps;
308
+ };
309
+
310
+ /**
311
+ * DataTable component parts
312
+ */
313
+ export type DataTableParts = ComponentParts<
314
+ 'root' | 'wrapper' | 'table' | 'thead' | 'tbody' | 'tfoot' | 'tr' | 'th' | 'td'
315
+ > & {
316
+ /** Root container */
317
+ root?: PartStyleProps;
318
+ /** Table wrapper */
319
+ wrapper?: PartStyleProps;
320
+ /** Table element */
321
+ table?: PartStyleProps;
322
+ /** Table head */
323
+ thead?: PartStyleProps;
324
+ /** Table body */
325
+ tbody?: PartStyleProps;
326
+ /** Table foot */
327
+ tfoot?: PartStyleProps;
328
+ /** Table row */
329
+ tr?: PartStyleProps;
330
+ /** Table header cell */
331
+ th?: PartStyleProps;
332
+ /** Table data cell */
333
+ td?: PartStyleProps;
334
+ };
335
+
336
+ /**
337
+ * Avatar component parts
338
+ */
339
+ export type AvatarParts = ComponentParts<'root' | 'image' | 'fallback' | 'badge'> & {
340
+ /** Root avatar */
341
+ root?: PartStyleProps;
342
+ /** Image element */
343
+ image?: PartStyleProps;
344
+ /** Fallback element */
345
+ fallback?: PartStyleProps;
346
+ /** Status badge */
347
+ badge?: PartStyleProps;
348
+ };
349
+
350
+ /**
351
+ * List component parts
352
+ */
353
+ export type ListParts = ComponentParts<
354
+ 'root' | 'item' | 'icon' | 'content' | 'title' | 'description'
355
+ > & {
356
+ /** Root list */
357
+ root?: PartStyleProps;
358
+ /** List item */
359
+ item?: PartStyleProps;
360
+ /** Item icon */
361
+ icon?: PartStyleProps;
362
+ /** Item content */
363
+ content?: PartStyleProps;
364
+ /** Item title */
365
+ title?: PartStyleProps;
366
+ /** Item description */
367
+ description?: PartStyleProps;
368
+ };
369
+
370
+ /**
371
+ * Utility function to merge part styles
372
+ */
373
+ export function mergePartStyles(
374
+ base?: PartStyleProps,
375
+ override?: PartStyleProps
376
+ ): PartStyleProps | undefined {
377
+ if (!base && !override) return undefined;
378
+ if (!base) return override;
379
+ if (!override) return base;
380
+
381
+ return {
382
+ className: [base.className, override.className].filter(Boolean).join(' '),
383
+ style: { ...base.style, ...override.style },
384
+ };
385
+ }
386
+
387
+ /**
388
+ * Utility function to apply part styles to props
389
+ */
390
+ export function applyPartStyles<T extends Record<string, any>>(
391
+ props: T,
392
+ part?: PartStyleProps
393
+ ): T {
394
+ if (!part) return props;
395
+
396
+ return {
397
+ ...props,
398
+ className: [props.className, part.className].filter(Boolean).join(' '),
399
+ style: { ...props.style, ...part.style },
400
+ };
401
+ }
402
+
403
+ /**
404
+ * Map of component names to their part types
405
+ */
406
+ export type ComponentPartsMap = {
407
+ Button: ButtonParts;
408
+ Card: CardParts;
409
+ Input: InputParts;
410
+ Modal: ModalParts;
411
+ Dropdown: DropdownParts;
412
+ Badge: BadgeParts;
413
+ Tabs: TabsParts;
414
+ Progress: ProgressParts;
415
+ Tooltip: TooltipParts;
416
+ Select: SelectParts;
417
+ Checkbox: CheckboxParts;
418
+ Radio: RadioParts;
419
+ Textarea: TextareaParts;
420
+ FormGroup: FormGroupParts;
421
+ Navbar: NavbarParts;
422
+ Accordion: AccordionParts;
423
+ DataTable: DataTableParts;
424
+ Avatar: AvatarParts;
425
+ List: ListParts;
426
+ };