@shohojdhara/atomix 0.3.14 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (343) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/build-tools/EXAMPLES.md +372 -0
  3. package/build-tools/README.md +242 -0
  4. package/build-tools/__tests__/error-handler.test.js +230 -0
  5. package/build-tools/__tests__/index.test.js +141 -0
  6. package/build-tools/__tests__/rollup-plugin.test.js +194 -0
  7. package/build-tools/__tests__/utils.test.js +161 -0
  8. package/build-tools/__tests__/vite-plugin.test.js +129 -0
  9. package/build-tools/__tests__/webpack-loader.test.js +190 -0
  10. package/build-tools/error-handler.js +308 -0
  11. package/build-tools/index.d.ts +44 -0
  12. package/build-tools/index.js +88 -0
  13. package/build-tools/package.json +50 -0
  14. package/build-tools/rollup-plugin.js +236 -0
  15. package/build-tools/types.d.ts +163 -0
  16. package/build-tools/utils.js +203 -0
  17. package/build-tools/vite-plugin.js +161 -0
  18. package/build-tools/webpack-loader.js +123 -0
  19. package/dist/atomix.css +21044 -2618
  20. package/dist/atomix.css.map +1 -1
  21. package/dist/atomix.min.css +77 -3
  22. package/dist/atomix.min.css.map +1 -1
  23. package/dist/build-tools/EXAMPLES.md +372 -0
  24. package/dist/build-tools/README.md +242 -0
  25. package/dist/build-tools/__tests__/error-handler.test.js +230 -0
  26. package/dist/build-tools/__tests__/index.test.js +141 -0
  27. package/dist/build-tools/__tests__/rollup-plugin.test.js +194 -0
  28. package/dist/build-tools/__tests__/utils.test.js +161 -0
  29. package/dist/build-tools/__tests__/vite-plugin.test.js +129 -0
  30. package/dist/build-tools/__tests__/webpack-loader.test.js +190 -0
  31. package/dist/build-tools/error-handler.js +308 -0
  32. package/dist/build-tools/index.d.ts +44 -0
  33. package/dist/build-tools/index.js +88 -0
  34. package/dist/build-tools/package.json +50 -0
  35. package/dist/build-tools/rollup-plugin.js +236 -0
  36. package/dist/build-tools/types.d.ts +163 -0
  37. package/dist/build-tools/utils.js +203 -0
  38. package/dist/build-tools/vite-plugin.js +161 -0
  39. package/dist/build-tools/webpack-loader.js +123 -0
  40. package/dist/charts.d.ts +1 -1
  41. package/dist/charts.js +86 -57
  42. package/dist/charts.js.map +1 -1
  43. package/dist/core.d.ts +1 -1
  44. package/dist/core.js +136 -112
  45. package/dist/core.js.map +1 -1
  46. package/dist/forms.d.ts +2 -5
  47. package/dist/forms.js +140 -128
  48. package/dist/forms.js.map +1 -1
  49. package/dist/heavy.d.ts +1 -1
  50. package/dist/heavy.js +136 -112
  51. package/dist/heavy.js.map +1 -1
  52. package/dist/index.d.ts +152 -78
  53. package/dist/index.esm.js +346 -340
  54. package/dist/index.esm.js.map +1 -1
  55. package/dist/index.js +359 -353
  56. package/dist/index.js.map +1 -1
  57. package/dist/index.min.js +1 -1
  58. package/dist/index.min.js.map +1 -1
  59. package/dist/layout.js.map +1 -1
  60. package/dist/theme.d.ts +9 -9
  61. package/dist/theme.js.map +1 -1
  62. package/package.json +23 -8
  63. package/scripts/atomix-cli.js +170 -73
  64. package/scripts/cli/__tests__/README.md +81 -0
  65. package/scripts/cli/__tests__/basic.test.js +115 -0
  66. package/scripts/cli/__tests__/component-generator.test.js +332 -0
  67. package/scripts/cli/__tests__/integration.test.js +327 -0
  68. package/scripts/cli/__tests__/test-setup.js +133 -0
  69. package/scripts/cli/__tests__/token-manager.test.js +251 -0
  70. package/scripts/cli/__tests__/utils.test.js +161 -0
  71. package/scripts/cli/component-generator.js +253 -299
  72. package/scripts/cli/dependency-checker.js +355 -0
  73. package/scripts/cli/interactive-init.js +46 -5
  74. package/scripts/cli/template-manager.js +0 -2
  75. package/scripts/cli/templates/common-templates.js +636 -0
  76. package/scripts/cli/templates/composable-templates.js +148 -126
  77. package/scripts/cli/templates/index.js +23 -16
  78. package/scripts/cli/templates/project-templates.js +151 -23
  79. package/scripts/cli/templates/react-templates.js +280 -210
  80. package/scripts/cli/templates/scss-templates.js +90 -91
  81. package/scripts/cli/templates/testing-templates.js +206 -27
  82. package/scripts/cli/templates/testing-utils.js +278 -0
  83. package/scripts/cli/templates/types-templates.js +70 -56
  84. package/scripts/cli/theme-bridge.js +8 -2
  85. package/scripts/cli/token-manager.js +318 -206
  86. package/scripts/cli/utils.js +0 -1
  87. package/src/components/Accordion/Accordion.stories.tsx +358 -850
  88. package/src/components/Accordion/Accordion.test.tsx +70 -50
  89. package/src/components/Accordion/Accordion.tsx +99 -94
  90. package/src/components/AtomixGlass/AtomixGlass.test.tsx +1 -1
  91. package/src/components/AtomixGlass/AtomixGlass.tsx +80 -39
  92. package/src/components/AtomixGlass/AtomixGlassContainer.tsx +103 -81
  93. package/src/components/AtomixGlass/GlassFilter.tsx +9 -16
  94. package/src/components/AtomixGlass/__snapshots__/AtomixGlass.test.tsx.snap +8 -7
  95. package/src/components/AtomixGlass/glass-utils.ts +6 -5
  96. package/src/components/AtomixGlass/shader-utils.ts +133 -52
  97. package/src/components/AtomixGlass/stories/Customization.stories.tsx +131 -0
  98. package/src/components/AtomixGlass/stories/Examples.stories.tsx +2957 -2853
  99. package/src/components/AtomixGlass/stories/Modes.stories.tsx +1 -1
  100. package/src/components/AtomixGlass/stories/Overview.stories.tsx +348 -0
  101. package/src/components/AtomixGlass/stories/Performance.stories.tsx +103 -0
  102. package/src/components/AtomixGlass/stories/Playground.stories.tsx +51 -36
  103. package/src/components/AtomixGlass/stories/{ShaderVariants.stories.tsx → Shaders.stories.tsx} +2 -2
  104. package/src/components/AtomixGlass/stories/shared-components.tsx +90 -190
  105. package/src/components/Avatar/Avatar.stories.tsx +195 -0
  106. package/src/components/Avatar/Avatar.tsx +58 -56
  107. package/src/components/Badge/Badge.stories.tsx +122 -352
  108. package/src/components/Badge/Badge.test.tsx +41 -41
  109. package/src/components/Badge/Badge.tsx +64 -62
  110. package/src/components/Block/Block.stories.tsx +30 -11
  111. package/src/components/Breadcrumb/Breadcrumb.stories.tsx +142 -23
  112. package/src/components/Breadcrumb/Breadcrumb.tsx +62 -60
  113. package/src/components/Button/Button.stories.tsx +454 -1126
  114. package/src/components/Button/Button.test.tsx +123 -0
  115. package/src/components/Button/Button.tsx +88 -60
  116. package/src/components/Button/ButtonGroup.stories.tsx +376 -215
  117. package/src/components/Button/ButtonGroup.tsx +4 -15
  118. package/src/components/Callout/Callout.stories.tsx +316 -568
  119. package/src/components/Card/Card.stories.tsx +292 -81
  120. package/src/components/Card/Card.tsx +30 -14
  121. package/src/components/Chart/AreaChart.tsx +1 -1
  122. package/src/components/Chart/CandlestickChart.tsx +23 -16
  123. package/src/components/Chart/Chart.stories.tsx +153 -16
  124. package/src/components/Chart/Chart.tsx +40 -44
  125. package/src/components/Chart/ChartRenderer.tsx +39 -12
  126. package/src/components/Chart/ChartToolbar.tsx +21 -5
  127. package/src/components/Chart/DonutChart.tsx +1 -1
  128. package/src/components/Chart/FunnelChart.tsx +4 -1
  129. package/src/components/Chart/GaugeChart.tsx +3 -1
  130. package/src/components/Chart/HeatmapChart.tsx +50 -37
  131. package/src/components/Chart/LineChart.tsx +3 -2
  132. package/src/components/Chart/MultiAxisChart.tsx +24 -16
  133. package/src/components/Chart/RadarChart.tsx +19 -17
  134. package/src/components/Chart/ScatterChart.tsx +29 -21
  135. package/src/components/ColorModeToggle/ColorModeToggle.stories.tsx +152 -66
  136. package/src/components/ColorModeToggle/ColorModeToggle.tsx +15 -3
  137. package/src/components/Countdown/Countdown.stories.tsx +114 -7
  138. package/src/components/DataTable/DataTable.stories.tsx +349 -144
  139. package/src/components/DataTable/DataTable.test.tsx +26 -148
  140. package/src/components/DataTable/DataTable.tsx +485 -456
  141. package/src/components/DatePicker/DatePicker.stories.tsx +310 -1066
  142. package/src/components/DatePicker/DatePicker.tsx +31 -26
  143. package/src/components/Dropdown/Dropdown.stories.tsx +153 -36
  144. package/src/components/Dropdown/Dropdown.tsx +313 -299
  145. package/src/components/EdgePanel/EdgePanel.stories.tsx +221 -25
  146. package/src/components/EdgePanel/EdgePanel.tsx +1 -3
  147. package/src/components/Footer/Footer.stories.tsx +396 -327
  148. package/src/components/Footer/Footer.tsx +130 -128
  149. package/src/components/Footer/FooterLink.tsx +2 -2
  150. package/src/components/Form/Checkbox.stories.tsx +140 -6
  151. package/src/components/Form/Checkbox.test.tsx +63 -0
  152. package/src/components/Form/Checkbox.tsx +122 -78
  153. package/src/components/Form/Form.stories.tsx +110 -19
  154. package/src/components/Form/FormGroup.stories.tsx +127 -4
  155. package/src/components/Form/Input.stories.tsx +22 -39
  156. package/src/components/Form/Input.test.tsx +38 -44
  157. package/src/components/Form/Radio.stories.tsx +146 -17
  158. package/src/components/Form/Radio.tsx +68 -66
  159. package/src/components/Form/Select.stories.tsx +140 -8
  160. package/src/components/Form/Select.tsx +184 -182
  161. package/src/components/Form/Textarea.stories.tsx +149 -6
  162. package/src/components/Form/Textarea.test.tsx +27 -32
  163. package/src/components/Hero/Hero.stories.tsx +372 -38
  164. package/src/components/Hero/Hero.tsx +201 -55
  165. package/src/components/Icon/index.ts +7 -1
  166. package/src/components/List/List.stories.tsx +141 -3
  167. package/src/components/List/List.tsx +19 -23
  168. package/src/components/Modal/Modal.stories.tsx +183 -43
  169. package/src/components/Modal/Modal.tsx +130 -127
  170. package/src/components/Navigation/Menu/MegaMenu.tsx +70 -70
  171. package/src/components/Navigation/Nav/NavDropdown.tsx +1 -5
  172. package/src/components/Navigation/SideMenu/SideMenu.stories.tsx +128 -28
  173. package/src/components/Navigation/SideMenu/SideMenu.tsx +5 -7
  174. package/src/components/Navigation/SideMenu/SideMenuItem.tsx +4 -5
  175. package/src/components/Pagination/Pagination.stories.tsx +7 -4
  176. package/src/components/Pagination/Pagination.tsx +199 -202
  177. package/src/components/PhotoViewer/PhotoViewer.tsx +4 -1
  178. package/src/components/Popover/Popover.stories.tsx +354 -97
  179. package/src/components/Popover/Popover.tsx +41 -37
  180. package/src/components/Progress/Progress.stories.tsx +160 -7
  181. package/src/components/River/River.stories.tsx +3 -2
  182. package/src/components/SectionIntro/SectionIntro.stories.tsx +239 -47
  183. package/src/components/Slider/Slider.stories.tsx +12 -4
  184. package/src/components/Spinner/Spinner.stories.tsx +104 -8
  185. package/src/components/Spinner/Spinner.test.tsx +23 -23
  186. package/src/components/Spinner/Spinner.tsx +43 -46
  187. package/src/components/Steps/Steps.stories.tsx +173 -42
  188. package/src/components/Tabs/Tabs.stories.tsx +141 -12
  189. package/src/components/Tabs/Tabs.tsx +74 -72
  190. package/src/components/Testimonial/Testimonial.stories.tsx +120 -3
  191. package/src/components/Todo/Todo.stories.tsx +198 -9
  192. package/src/components/Toggle/Toggle.stories.tsx +137 -36
  193. package/src/components/Toggle/Toggle.test.tsx +65 -70
  194. package/src/components/Toggle/Toggle.tsx +4 -1
  195. package/src/components/Tooltip/Tooltip.stories.tsx +194 -100
  196. package/src/components/Tooltip/Tooltip.tsx +104 -106
  197. package/src/components/Upload/Upload.stories.tsx +241 -150
  198. package/src/components/Upload/Upload.tsx +287 -283
  199. package/src/components/VideoPlayer/VideoPlayer.tsx +6 -1
  200. package/src/components/index.ts +13 -2
  201. package/src/layouts/Grid/Grid.stories.tsx +9 -3
  202. package/src/layouts/MasonryGrid/MasonryGrid.tsx +5 -1
  203. package/src/lib/README.md +2 -2
  204. package/src/lib/__tests__/theme-tools.test.ts +219 -0
  205. package/src/lib/composables/index.ts +2 -2
  206. package/src/lib/composables/shared-mouse-tracker.ts +13 -14
  207. package/src/lib/composables/useAtomixGlass.ts +126 -97
  208. package/src/lib/composables/useChartExport.ts +3 -8
  209. package/src/lib/composables/useDataTable.ts +72 -43
  210. package/src/lib/composables/useHero.ts +58 -14
  211. package/src/lib/composables/useHeroBackgroundSlider.ts +2 -9
  212. package/src/lib/composables/useInput.ts +10 -8
  213. package/src/lib/composables/useSideMenu.ts +6 -5
  214. package/src/lib/composables/useTooltip.ts +1 -2
  215. package/src/lib/composables/useVideoPlayer.ts +44 -35
  216. package/src/lib/config/index.ts +154 -154
  217. package/src/lib/constants/components.ts +9 -32
  218. package/src/lib/constants/cssVariables.ts +29 -29
  219. package/src/lib/hooks/__tests__/useComponentCustomization.test.ts +2 -6
  220. package/src/lib/hooks/index.ts +1 -1
  221. package/src/lib/hooks/useComponentCustomization.ts +11 -17
  222. package/src/lib/hooks/usePerformanceMonitor.ts +6 -7
  223. package/src/lib/patterns/__tests__/slots.test.ts +1 -1
  224. package/src/lib/patterns/index.ts +1 -1
  225. package/src/lib/patterns/slots.tsx +8 -13
  226. package/src/lib/storybook/InteractiveDemo.tsx +13 -18
  227. package/src/lib/storybook/PreviewContainer.tsx +1 -1
  228. package/src/lib/storybook/VariantsGrid.tsx +3 -7
  229. package/src/lib/storybook/index.ts +1 -1
  230. package/src/lib/theme/adapters/cssVariableMapper.ts +47 -74
  231. package/src/lib/theme/adapters/index.ts +3 -9
  232. package/src/lib/theme/adapters/themeAdapter.ts +41 -26
  233. package/src/lib/theme/config/index.ts +1 -1
  234. package/src/lib/theme/config/types.ts +2 -2
  235. package/src/lib/theme/config/validator.ts +10 -5
  236. package/src/lib/theme/constants/constants.ts +2 -2
  237. package/src/lib/theme/constants/index.ts +1 -2
  238. package/src/lib/theme/core/__tests__/createTheme.test.ts +20 -22
  239. package/src/lib/theme/core/composeTheme.ts +32 -26
  240. package/src/lib/theme/core/createTheme.ts +1 -1
  241. package/src/lib/theme/core/createThemeObject.ts +308 -301
  242. package/src/lib/theme/core/index.ts +3 -3
  243. package/src/lib/theme/devtools/CLI.ts +107 -105
  244. package/src/lib/theme/devtools/Comparator.tsx +50 -32
  245. package/src/lib/theme/devtools/DesignTokensCustomizer.stories.tsx +50 -48
  246. package/src/lib/theme/devtools/DesignTokensCustomizer.tsx +257 -63
  247. package/src/lib/theme/devtools/Inspector.tsx +75 -60
  248. package/src/lib/theme/devtools/LiveEditor.tsx +97 -76
  249. package/src/lib/theme/devtools/Preview.tsx +150 -106
  250. package/src/lib/theme/devtools/ThemeValidator.ts +29 -21
  251. package/src/lib/theme/devtools/index.ts +3 -9
  252. package/src/lib/theme/devtools/useHistory.ts +23 -21
  253. package/src/lib/theme/errors/errors.ts +12 -11
  254. package/src/lib/theme/errors/index.ts +2 -7
  255. package/src/lib/theme/generators/generateCSS.ts +9 -13
  256. package/src/lib/theme/generators/generateCSSNested.ts +1 -6
  257. package/src/lib/theme/generators/generateCSSVariables.ts +673 -630
  258. package/src/lib/theme/generators/index.ts +1 -4
  259. package/src/lib/theme/i18n/index.ts +1 -1
  260. package/src/lib/theme/i18n/rtl.ts +13 -13
  261. package/src/lib/theme/index.ts +7 -16
  262. package/src/lib/theme/runtime/ThemeApplicator.ts +4 -4
  263. package/src/lib/theme/runtime/ThemeContext.tsx +1 -1
  264. package/src/lib/theme/runtime/ThemeErrorBoundary.tsx +19 -23
  265. package/src/lib/theme/runtime/ThemeProvider.tsx +230 -239
  266. package/src/lib/theme/runtime/__tests__/ThemeProvider.integration.test.tsx +1 -1
  267. package/src/lib/theme/runtime/__tests__/ThemeProvider.test.tsx +24 -29
  268. package/src/lib/theme/runtime/index.ts +2 -5
  269. package/src/lib/theme/runtime/useTheme.ts +18 -18
  270. package/src/lib/theme/runtime/useThemeTokens.ts +22 -22
  271. package/src/lib/theme/test/testTheme.ts +15 -16
  272. package/src/lib/theme/tokens/index.ts +2 -7
  273. package/src/lib/theme/tokens/tokens.ts +25 -24
  274. package/src/lib/theme/types.ts +428 -411
  275. package/src/lib/theme/utils/__tests__/themeValidation.test.ts +3 -3
  276. package/src/lib/theme/utils/componentTheming.ts +18 -18
  277. package/src/lib/theme/utils/domUtils.ts +277 -289
  278. package/src/lib/theme/utils/index.ts +1 -2
  279. package/src/lib/theme/utils/injectCSS.ts +10 -14
  280. package/src/lib/theme/utils/naming.ts +20 -16
  281. package/src/lib/theme/utils/themeHelpers.ts +10 -12
  282. package/src/lib/theme/utils/themeUtils.ts +85 -86
  283. package/src/lib/theme/utils/themeValidation.ts +82 -33
  284. package/src/lib/theme-tools.ts +8 -6
  285. package/src/lib/types/components.ts +172 -71
  286. package/src/lib/types/partProps.ts +1 -1
  287. package/src/lib/utils/__tests__/csv.test.ts +45 -0
  288. package/src/lib/utils/componentUtils.ts +8 -12
  289. package/src/lib/utils/csv.ts +19 -0
  290. package/src/lib/utils/dataTableExport.ts +2 -15
  291. package/src/lib/utils/fontPreloader.ts +10 -19
  292. package/src/lib/utils/icons.ts +4 -1
  293. package/src/lib/utils/index.ts +2 -6
  294. package/src/lib/utils/memoryMonitor.ts +10 -8
  295. package/src/lib/utils/themeNaming.ts +2 -2
  296. package/src/styles/01-settings/_index.scss +1 -1
  297. package/src/styles/01-settings/_settings.accordion.scss +28 -7
  298. package/src/styles/01-settings/_settings.colors.scss +11 -11
  299. package/src/styles/01-settings/_settings.design-tokens.scss +61 -50
  300. package/src/styles/01-settings/_settings.navbar.scss +1 -1
  301. package/src/styles/01-settings/_settings.spacing.scss +3 -4
  302. package/src/styles/01-settings/_settings.tooltip.scss +1 -1
  303. package/src/styles/01-settings/_settings.typography.scss +4 -4
  304. package/src/styles/02-tools/_tools.button.scss +51 -21
  305. package/src/styles/02-tools/_tools.utility-api.scss +38 -12
  306. package/src/styles/03-generic/_generic.root.scss +4 -3
  307. package/src/styles/06-components/_components.accordion.scss +56 -14
  308. package/src/styles/06-components/_components.atomix-glass.scss +13 -9
  309. package/src/styles/06-components/_components.button.scss +16 -4
  310. package/src/styles/06-components/_components.callout.scss +27 -21
  311. package/src/styles/06-components/_components.card.scss +5 -14
  312. package/src/styles/06-components/_components.chart.scss +22 -19
  313. package/src/styles/06-components/_components.checkbox.scss +25 -17
  314. package/src/styles/06-components/_components.color-mode-toggle.scss +3 -1
  315. package/src/styles/06-components/_components.edge-panel.scss +9 -2
  316. package/src/styles/06-components/_components.footer.scss +1 -1
  317. package/src/styles/06-components/_components.side-menu.scss +5 -5
  318. package/src/styles/06-components/_components.toggle.scss +18 -0
  319. package/src/styles/06-components/_index.scss +1 -1
  320. package/src/styles/06-components/old.chart.styles.scss +0 -2
  321. package/src/styles/99-utilities/_index.scss +2 -0
  322. package/src/styles/99-utilities/_utilities.border.scss +69 -27
  323. package/src/styles/99-utilities/_utilities.display.scss +1 -1
  324. package/src/styles/99-utilities/_utilities.opacity.scss +10 -0
  325. package/src/styles/99-utilities/_utilities.position.scss +16 -9
  326. package/src/styles/99-utilities/_utilities.scss +2 -0
  327. package/src/styles/99-utilities/_utilities.sizes.scss +47 -18
  328. package/src/styles/99-utilities/_utilities.spacing.scss +118 -66
  329. package/src/styles/99-utilities/_utilities.text-gradient.scss +45 -0
  330. package/src/styles/99-utilities/_utilities.text.scss +67 -46
  331. package/themes/dark-complementary/README.md +98 -0
  332. package/themes/dark-complementary/index.scss +158 -0
  333. package/themes/default-light/README.md +81 -0
  334. package/themes/default-light/index.scss +154 -0
  335. package/themes/high-contrast/README.md +105 -0
  336. package/themes/high-contrast/index.scss +172 -0
  337. package/themes/test-theme/README.md +38 -0
  338. package/themes/test-theme/index.scss +47 -0
  339. package/scripts/cli/templates-original-backup.js +0 -1655
  340. package/scripts/cli/templates_backup.js +0 -684
  341. package/src/components/AtomixGlass/stories/AtomixGlass.stories.tsx +0 -1438
  342. package/src/lib/composables/useButton.ts +0 -93
  343. package/src/lib/composables/useCheckbox.ts +0 -70
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Theme Inspector Component
3
- *
3
+ *
4
4
  * React component for inspecting and debugging themes
5
5
  * Enhanced with search/filter and copy path functionality
6
6
  */
@@ -39,7 +39,7 @@ interface PropertyPath {
39
39
 
40
40
  /**
41
41
  * Theme Inspector Component
42
- *
42
+ *
43
43
  * Provides detailed inspection and debugging information for themes
44
44
  */
45
45
  export const ThemeInspector: React.FC<ThemeInspectorProps> = ({
@@ -50,7 +50,9 @@ export const ThemeInspector: React.FC<ThemeInspectorProps> = ({
50
50
  className,
51
51
  style,
52
52
  }) => {
53
- const [activeTab, setActiveTab] = useState<'overview' | 'validation' | 'css' | 'structure'>('overview');
53
+ const [activeTab, setActiveTab] = useState<'overview' | 'validation' | 'css' | 'structure'>(
54
+ 'overview'
55
+ );
54
56
  const [expandedSections, setExpandedSections] = useState<Set<string>>(new Set(['palette']));
55
57
  const [searchQuery, setSearchQuery] = useState<string>('');
56
58
  const [debouncedSearchQuery, setDebouncedSearchQuery] = useState<string>('');
@@ -84,7 +86,9 @@ export const ThemeInspector: React.FC<ThemeInspectorProps> = ({
84
86
  console.error('Theme validation error:', error);
85
87
  return {
86
88
  valid: false,
87
- errors: ['Failed to validate theme: ' + (error instanceof Error ? error.message : String(error))],
89
+ errors: [
90
+ 'Failed to validate theme: ' + (error instanceof Error ? error.message : String(error)),
91
+ ],
88
92
  warnings: [],
89
93
  a11yIssues: [],
90
94
  };
@@ -108,10 +112,10 @@ export const ThemeInspector: React.FC<ThemeInspectorProps> = ({
108
112
  // Generate all property paths for search
109
113
  const allPropertyPaths = useMemo(() => {
110
114
  const paths: PropertyPath[] = [];
111
-
115
+
112
116
  const traverse = (obj: any, path: string = '', depth: number = 0): void => {
113
117
  if (depth > 10) return; // Prevent infinite recursion
114
-
118
+
115
119
  if (obj === null || obj === undefined) {
116
120
  paths.push({ path, value: obj, matches: false });
117
121
  return;
@@ -120,22 +124,23 @@ export const ThemeInspector: React.FC<ThemeInspectorProps> = ({
120
124
  if (typeof obj === 'object' && !Array.isArray(obj)) {
121
125
  Object.entries(obj).forEach(([key, value]) => {
122
126
  if (key === '__isJSTheme') return;
123
-
127
+
124
128
  const currentPath = path ? `${path}.${key}` : key;
125
129
  const pathLower = currentPath.toLowerCase();
126
130
  const queryLower = debouncedSearchQuery.toLowerCase();
127
131
  const matches = debouncedSearchQuery ? pathLower.includes(queryLower) : true;
128
-
132
+
129
133
  if (typeof value === 'object' && value !== null && !Array.isArray(value)) {
130
134
  paths.push({ path: currentPath, value: null, matches });
131
135
  traverse(value, currentPath, depth + 1);
132
136
  } else {
133
- const valueStr = typeof value === 'string' ? value.toLowerCase() : String(value).toLowerCase();
137
+ const valueStr =
138
+ typeof value === 'string' ? value.toLowerCase() : String(value).toLowerCase();
134
139
  const valueMatches = debouncedSearchQuery ? valueStr.includes(queryLower) : true;
135
- paths.push({
136
- path: currentPath,
137
- value,
138
- matches: matches || valueMatches
140
+ paths.push({
141
+ path: currentPath,
142
+ value,
143
+ matches: matches || valueMatches,
139
144
  });
140
145
  }
141
146
  });
@@ -187,11 +192,13 @@ export const ThemeInspector: React.FC<ThemeInspectorProps> = ({
187
192
 
188
193
  const highlightText = (text: string, query: string): React.ReactNode => {
189
194
  if (!query) return text;
190
-
195
+
191
196
  const parts = text.split(new RegExp(`(${query})`, 'gi'));
192
- return parts.map((part, index) =>
197
+ return parts.map((part, index) =>
193
198
  part.toLowerCase() === query.toLowerCase() ? (
194
- <mark key={index} className="search-highlight">{part}</mark>
199
+ <mark key={index} className="search-highlight">
200
+ {part}
201
+ </mark>
195
202
  ) : (
196
203
  part
197
204
  )
@@ -204,7 +211,11 @@ export const ThemeInspector: React.FC<ThemeInspectorProps> = ({
204
211
  }
205
212
 
206
213
  if (typeof value === 'string') {
207
- return <span className="value-string">&quot;{highlightText(value, debouncedSearchQuery)}&quot;</span>;
214
+ return (
215
+ <span className="value-string">
216
+ &quot;{highlightText(value, debouncedSearchQuery)}&quot;
217
+ </span>
218
+ );
208
219
  }
209
220
 
210
221
  if (typeof value === 'number') {
@@ -222,12 +233,14 @@ export const ThemeInspector: React.FC<ThemeInspectorProps> = ({
222
233
  if (Array.isArray(value)) {
223
234
  return (
224
235
  <div className="value-array">
225
- [{value.map((item, index) => (
236
+ [
237
+ {value.map((item, index) => (
226
238
  <div key={index} className="array-item">
227
239
  {renderValue(item, depth + 1, `${path}[${index}]`)}
228
240
  {index < value.length - 1 && ','}
229
241
  </div>
230
- ))}]
242
+ ))}
243
+ ]
231
244
  </div>
232
245
  );
233
246
  }
@@ -240,7 +253,7 @@ export const ThemeInspector: React.FC<ThemeInspectorProps> = ({
240
253
  const currentPath = path ? `${path}.${key}` : key;
241
254
  return (
242
255
  <div key={key} className="object-property">
243
- <span
256
+ <span
244
257
  className="property-key clickable"
245
258
  onClick={() => copyPath(currentPath)}
246
259
  title={`Click to copy: ${currentPath}`}
@@ -248,9 +261,7 @@ export const ThemeInspector: React.FC<ThemeInspectorProps> = ({
248
261
  {highlightText(key, debouncedSearchQuery)}:
249
262
  </span>{' '}
250
263
  {renderValue(val, depth + 1, currentPath)}
251
- {copiedPath === currentPath && (
252
- <span className="copy-feedback">✓ Copied!</span>
253
- )}
264
+ {copiedPath === currentPath && <span className="copy-feedback">✓ Copied!</span>}
254
265
  </div>
255
266
  );
256
267
  })}
@@ -269,47 +280,61 @@ export const ThemeInspector: React.FC<ThemeInspectorProps> = ({
269
280
  <table>
270
281
  <tbody>
271
282
  <tr>
272
- <td><strong>Name:</strong></td>
283
+ <td>
284
+ <strong>Name:</strong>
285
+ </td>
273
286
  <td>{theme.name}</td>
274
287
  </tr>
275
288
  {theme.description && (
276
289
  <tr>
277
- <td><strong>Description:</strong></td>
290
+ <td>
291
+ <strong>Description:</strong>
292
+ </td>
278
293
  <td>{theme.description}</td>
279
294
  </tr>
280
295
  )}
281
296
  {theme.author && (
282
297
  <tr>
283
- <td><strong>Author:</strong></td>
298
+ <td>
299
+ <strong>Author:</strong>
300
+ </td>
284
301
  <td>{theme.author}</td>
285
302
  </tr>
286
303
  )}
287
304
  {theme.version && (
288
305
  <tr>
289
- <td><strong>Version:</strong></td>
306
+ <td>
307
+ <strong>Version:</strong>
308
+ </td>
290
309
  <td>{theme.version}</td>
291
310
  </tr>
292
311
  )}
293
312
  {theme.status && (
294
313
  <tr>
295
- <td><strong>Status:</strong></td>
296
314
  <td>
297
- <span className={`status-badge status-${theme.status}`}>
298
- {theme.status}
299
- </span>
315
+ <strong>Status:</strong>
316
+ </td>
317
+ <td>
318
+ <span className={`status-badge status-${theme.status}`}>{theme.status}</span>
300
319
  </td>
301
320
  </tr>
302
321
  )}
303
322
  <tr>
304
- <td><strong>Dark Mode:</strong></td>
323
+ <td>
324
+ <strong>Dark Mode:</strong>
325
+ </td>
305
326
  <td>{theme.supportsDarkMode ? 'Yes' : 'No'}</td>
306
327
  </tr>
307
328
  {theme.tags && theme.tags.length > 0 && (
308
329
  <tr>
309
- <td><strong>Tags:</strong></td>
330
+ <td>
331
+ <strong>Tags:</strong>
332
+ </td>
310
333
  <td>
311
334
  {theme.tags.map(tag => (
312
- <span key={tag} className="tag">{tag}</span>
335
+ <span key={tag} className="tag">
336
+ {tag}
337
+ </span>
313
338
  ))}
314
339
  </td>
315
340
  </tr>
@@ -395,7 +420,7 @@ export const ThemeInspector: React.FC<ThemeInspectorProps> = ({
395
420
  <div className="inspector-css">
396
421
  <div className="css-header">
397
422
  <h3>Generated CSS Variables</h3>
398
- <button
423
+ <button
399
424
  onClick={() => navigator.clipboard?.writeText(cssVariables)}
400
425
  className="copy-button"
401
426
  >
@@ -422,7 +447,7 @@ export const ThemeInspector: React.FC<ThemeInspectorProps> = ({
422
447
  type="text"
423
448
  placeholder="Search properties..."
424
449
  value={searchQuery}
425
- onChange={(e) => setSearchQuery(e.target.value)}
450
+ onChange={e => setSearchQuery(e.target.value)}
426
451
  className="search-input"
427
452
  />
428
453
  {searchQuery && (
@@ -451,9 +476,10 @@ export const ThemeInspector: React.FC<ThemeInspectorProps> = ({
451
476
  <div className="structure-tree">
452
477
  {Object.entries(theme).map(([key, value]) => {
453
478
  if (key === '__isJSTheme') return null;
454
-
479
+
455
480
  const isExpanded = expandedSections.has(key);
456
- const hasChildren = typeof value === 'object' && value !== null && !Array.isArray(value);
481
+ const hasChildren =
482
+ typeof value === 'object' && value !== null && !Array.isArray(value);
457
483
  const pathMatches = debouncedSearchQuery
458
484
  ? allPropertyPaths.some(p => p.path.startsWith(key) && p.matches)
459
485
  : true;
@@ -462,18 +488,13 @@ export const ThemeInspector: React.FC<ThemeInspectorProps> = ({
462
488
 
463
489
  return (
464
490
  <div key={key} className="structure-node">
465
- <div
466
- className="structure-header"
467
- onClick={() => hasChildren && toggleSection(key)}
468
- >
491
+ <div className="structure-header" onClick={() => hasChildren && toggleSection(key)}>
469
492
  {hasChildren && (
470
- <span className={`expand-icon ${isExpanded ? 'expanded' : ''}`}>
471
-
472
- </span>
493
+ <span className={`expand-icon ${isExpanded ? 'expanded' : ''}`}>▶</span>
473
494
  )}
474
- <span
495
+ <span
475
496
  className="property-name clickable"
476
- onClick={(e) => {
497
+ onClick={e => {
477
498
  e.stopPropagation();
478
499
  copyPath(key);
479
500
  }}
@@ -481,22 +502,16 @@ export const ThemeInspector: React.FC<ThemeInspectorProps> = ({
481
502
  >
482
503
  {highlightText(key, debouncedSearchQuery)}
483
504
  </span>
484
- {copiedPath === key && (
485
- <span className="copy-feedback">✓ Copied!</span>
486
- )}
505
+ {copiedPath === key && <span className="copy-feedback">✓ Copied!</span>}
487
506
  <span className="property-type">
488
507
  {Array.isArray(value) ? 'array' : typeof value}
489
508
  </span>
490
509
  </div>
491
510
  {hasChildren && isExpanded && (
492
- <div className="structure-children">
493
- {renderValue(value, 0, key)}
494
- </div>
511
+ <div className="structure-children">{renderValue(value, 0, key)}</div>
495
512
  )}
496
513
  {!hasChildren && (
497
- <div className="structure-value">
498
- {renderValue(value, 0, key)}
499
- </div>
514
+ <div className="structure-value">{renderValue(value, 0, key)}</div>
500
515
  )}
501
516
  </div>
502
517
  );
@@ -510,14 +525,14 @@ export const ThemeInspector: React.FC<ThemeInspectorProps> = ({
510
525
  <div className={`atomix-theme-inspector ${className || ''}`} style={style}>
511
526
  {/* Tab Navigation */}
512
527
  <div className="inspector-tabs">
513
- <button
528
+ <button
514
529
  className={`tab ${activeTab === 'overview' ? 'active' : ''}`}
515
530
  onClick={() => setActiveTab('overview')}
516
531
  >
517
532
  Overview
518
533
  </button>
519
534
  {showValidation && (
520
- <button
535
+ <button
521
536
  className={`tab ${activeTab === 'validation' ? 'active' : ''}`}
522
537
  onClick={() => setActiveTab('validation')}
523
538
  >
@@ -528,7 +543,7 @@ export const ThemeInspector: React.FC<ThemeInspectorProps> = ({
528
543
  </button>
529
544
  )}
530
545
  {showCSSVariables && (
531
- <button
546
+ <button
532
547
  className={`tab ${activeTab === 'css' ? 'active' : ''}`}
533
548
  onClick={() => setActiveTab('css')}
534
549
  >
@@ -536,7 +551,7 @@ export const ThemeInspector: React.FC<ThemeInspectorProps> = ({
536
551
  </button>
537
552
  )}
538
553
  {showStructure && (
539
- <button
554
+ <button
540
555
  className={`tab ${activeTab === 'structure' ? 'active' : ''}`}
541
556
  onClick={() => setActiveTab('structure')}
542
557
  >