tuiuiu.js 1.0.4 → 1.0.6-next.4ff3fbc

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 (292) hide show
  1. package/dist/app/render-loop.d.ts +2 -0
  2. package/dist/app/render-loop.d.ts.map +1 -1
  3. package/dist/app/render-loop.js +14 -3
  4. package/dist/app/render-loop.js.map +1 -1
  5. package/dist/atoms/button.d.ts +1 -1
  6. package/dist/atoms/button.d.ts.map +1 -1
  7. package/dist/atoms/button.js +13 -11
  8. package/dist/atoms/button.js.map +1 -1
  9. package/dist/atoms/progress-bar.d.ts.map +1 -1
  10. package/dist/atoms/progress-bar.js +15 -12
  11. package/dist/atoms/progress-bar.js.map +1 -1
  12. package/dist/atoms/scrollbar.d.ts +30 -0
  13. package/dist/atoms/scrollbar.d.ts.map +1 -0
  14. package/dist/atoms/scrollbar.js +46 -0
  15. package/dist/atoms/scrollbar.js.map +1 -0
  16. package/dist/atoms/slider.js +6 -6
  17. package/dist/atoms/slider.js.map +1 -1
  18. package/dist/atoms/spinner.d.ts.map +1 -1
  19. package/dist/atoms/spinner.js +3 -2
  20. package/dist/atoms/spinner.js.map +1 -1
  21. package/dist/atoms/switch.d.ts.map +1 -1
  22. package/dist/atoms/switch.js +3 -2
  23. package/dist/atoms/switch.js.map +1 -1
  24. package/dist/atoms/text-input.d.ts.map +1 -1
  25. package/dist/atoms/text-input.js +6 -5
  26. package/dist/atoms/text-input.js.map +1 -1
  27. package/dist/atoms/timer.d.ts +1 -1
  28. package/dist/atoms/timer.js +4 -4
  29. package/dist/atoms/timer.js.map +1 -1
  30. package/dist/atoms/tooltip.d.ts +4 -4
  31. package/dist/atoms/tooltip.js +19 -19
  32. package/dist/atoms/tooltip.js.map +1 -1
  33. package/dist/core/delta-render.d.ts.map +1 -1
  34. package/dist/core/delta-render.js +17 -12
  35. package/dist/core/delta-render.js.map +1 -1
  36. package/dist/core/index.d.ts +2 -2
  37. package/dist/core/index.d.ts.map +1 -1
  38. package/dist/core/index.js +15 -3
  39. package/dist/core/index.js.map +1 -1
  40. package/dist/core/renderer.d.ts +4 -2
  41. package/dist/core/renderer.d.ts.map +1 -1
  42. package/dist/core/renderer.js +70 -43
  43. package/dist/core/renderer.js.map +1 -1
  44. package/dist/core/theme-loader.d.ts +89 -0
  45. package/dist/core/theme-loader.d.ts.map +1 -0
  46. package/dist/core/theme-loader.js +228 -0
  47. package/dist/core/theme-loader.js.map +1 -0
  48. package/dist/core/theme-types.d.ts +577 -0
  49. package/dist/core/theme-types.d.ts.map +1 -0
  50. package/dist/core/theme-types.js +13 -0
  51. package/dist/core/theme-types.js.map +1 -0
  52. package/dist/core/theme.d.ts +155 -236
  53. package/dist/core/theme.d.ts.map +1 -1
  54. package/dist/core/theme.js +418 -709
  55. package/dist/core/theme.js.map +1 -1
  56. package/dist/design-system/core/renderer.d.ts +14 -3
  57. package/dist/design-system/core/renderer.d.ts.map +1 -1
  58. package/dist/design-system/core/renderer.js +77 -38
  59. package/dist/design-system/core/renderer.js.map +1 -1
  60. package/dist/design-system/feedback/badge.d.ts +2 -8
  61. package/dist/design-system/feedback/badge.d.ts.map +1 -1
  62. package/dist/design-system/feedback/badge.js +32 -8
  63. package/dist/design-system/feedback/badge.js.map +1 -1
  64. package/dist/design-system/feedback/progress-bar.d.ts.map +1 -1
  65. package/dist/design-system/feedback/progress-bar.js +15 -12
  66. package/dist/design-system/feedback/progress-bar.js.map +1 -1
  67. package/dist/design-system/feedback/spinner.d.ts.map +1 -1
  68. package/dist/design-system/feedback/spinner.js +4 -3
  69. package/dist/design-system/feedback/spinner.js.map +1 -1
  70. package/dist/design-system/feedback/timer.js +3 -3
  71. package/dist/design-system/feedback/timer.js.map +1 -1
  72. package/dist/design-system/layout/app.js +6 -6
  73. package/dist/design-system/layout/app.js.map +1 -1
  74. package/dist/design-system/navigation/file-manager.js +15 -15
  75. package/dist/design-system/navigation/file-manager.js.map +1 -1
  76. package/dist/design-system/visual/big-text.js +6 -6
  77. package/dist/design-system/visual/big-text.js.map +1 -1
  78. package/dist/design-system/visual/digits.js +7 -7
  79. package/dist/design-system/visual/digits.js.map +1 -1
  80. package/dist/design-system/visual/splash-screen.d.ts.map +1 -1
  81. package/dist/design-system/visual/splash-screen.js +23 -17
  82. package/dist/design-system/visual/splash-screen.js.map +1 -1
  83. package/dist/design-system/visual/tooltip.js +16 -16
  84. package/dist/design-system/visual/tooltip.js.map +1 -1
  85. package/dist/hooks/index.d.ts +1 -1
  86. package/dist/hooks/index.d.ts.map +1 -1
  87. package/dist/hooks/index.js +1 -1
  88. package/dist/hooks/index.js.map +1 -1
  89. package/dist/hooks/types.d.ts +2 -0
  90. package/dist/hooks/types.d.ts.map +1 -1
  91. package/dist/hooks/use-app.d.ts +5 -0
  92. package/dist/hooks/use-app.d.ts.map +1 -1
  93. package/dist/hooks/use-app.js +10 -0
  94. package/dist/hooks/use-app.js.map +1 -1
  95. package/dist/index.d.ts +3 -3
  96. package/dist/index.d.ts.map +1 -1
  97. package/dist/index.js +11 -3
  98. package/dist/index.js.map +1 -1
  99. package/dist/mcp/docs-data.d.ts.map +1 -1
  100. package/dist/mcp/docs-data.js +625 -28
  101. package/dist/mcp/docs-data.js.map +1 -1
  102. package/dist/mcp/server.js +1 -1
  103. package/dist/molecules/autocomplete.js +10 -10
  104. package/dist/molecules/autocomplete.js.map +1 -1
  105. package/dist/molecules/calendar.d.ts.map +1 -1
  106. package/dist/molecules/calendar.js +13 -12
  107. package/dist/molecules/calendar.js.map +1 -1
  108. package/dist/molecules/code-block.js +21 -21
  109. package/dist/molecules/code-block.js.map +1 -1
  110. package/dist/molecules/collapsible.d.ts +9 -5
  111. package/dist/molecules/collapsible.d.ts.map +1 -1
  112. package/dist/molecules/collapsible.js +39 -7
  113. package/dist/molecules/collapsible.js.map +1 -1
  114. package/dist/molecules/data-viz/bar-chart.js +8 -8
  115. package/dist/molecules/data-viz/bar-chart.js.map +1 -1
  116. package/dist/molecules/data-viz/gauge.d.ts.map +1 -1
  117. package/dist/molecules/data-viz/gauge.js +17 -17
  118. package/dist/molecules/data-viz/gauge.js.map +1 -1
  119. package/dist/molecules/data-viz/heatmap.js +11 -11
  120. package/dist/molecules/data-viz/heatmap.js.map +1 -1
  121. package/dist/molecules/data-viz/legend.js +3 -3
  122. package/dist/molecules/data-viz/legend.js.map +1 -1
  123. package/dist/molecules/data-viz/line-chart.js +4 -4
  124. package/dist/molecules/data-viz/line-chart.js.map +1 -1
  125. package/dist/molecules/data-viz/sparkline.js +1 -1
  126. package/dist/molecules/data-viz/sparkline.js.map +1 -1
  127. package/dist/molecules/markdown.js +23 -23
  128. package/dist/molecules/markdown.js.map +1 -1
  129. package/dist/molecules/multi-select.js +9 -9
  130. package/dist/molecules/multi-select.js.map +1 -1
  131. package/dist/molecules/radio-group.js +8 -8
  132. package/dist/molecules/radio-group.js.map +1 -1
  133. package/dist/molecules/select.d.ts.map +1 -1
  134. package/dist/molecules/select.js +15 -13
  135. package/dist/molecules/select.js.map +1 -1
  136. package/dist/molecules/table.js +3 -3
  137. package/dist/molecules/table.js.map +1 -1
  138. package/dist/molecules/tabs.d.ts +6 -2
  139. package/dist/molecules/tabs.d.ts.map +1 -1
  140. package/dist/molecules/tabs.js +25 -13
  141. package/dist/molecules/tabs.js.map +1 -1
  142. package/dist/molecules/tree.js +5 -5
  143. package/dist/molecules/tree.js.map +1 -1
  144. package/dist/organisms/command-palette.d.ts.map +1 -1
  145. package/dist/organisms/command-palette.js +19 -17
  146. package/dist/organisms/command-palette.js.map +1 -1
  147. package/dist/organisms/data-table.js +5 -5
  148. package/dist/organisms/data-table.js.map +1 -1
  149. package/dist/organisms/file-browser.js +15 -15
  150. package/dist/organisms/file-browser.js.map +1 -1
  151. package/dist/organisms/index.d.ts +2 -1
  152. package/dist/organisms/index.d.ts.map +1 -1
  153. package/dist/organisms/index.js +13 -1
  154. package/dist/organisms/index.js.map +1 -1
  155. package/dist/organisms/modal.d.ts +46 -0
  156. package/dist/organisms/modal.d.ts.map +1 -1
  157. package/dist/organisms/modal.js +110 -29
  158. package/dist/organisms/modal.js.map +1 -1
  159. package/dist/organisms/scroll-area.js +6 -6
  160. package/dist/organisms/scroll-area.js.map +1 -1
  161. package/dist/organisms/scroll-list.d.ts +168 -0
  162. package/dist/organisms/scroll-list.d.ts.map +1 -0
  163. package/dist/organisms/scroll-list.js +338 -0
  164. package/dist/organisms/scroll-list.js.map +1 -0
  165. package/dist/organisms/split-panel.d.ts.map +1 -1
  166. package/dist/organisms/split-panel.js +7 -4
  167. package/dist/organisms/split-panel.js.map +1 -1
  168. package/dist/primitives/divider.d.ts.map +1 -1
  169. package/dist/primitives/divider.js +4 -3
  170. package/dist/primitives/divider.js.map +1 -1
  171. package/dist/primitives/index.d.ts +1 -0
  172. package/dist/primitives/index.d.ts.map +1 -1
  173. package/dist/primitives/index.js +1 -0
  174. package/dist/primitives/index.js.map +1 -1
  175. package/dist/primitives/nodes.d.ts.map +1 -1
  176. package/dist/primitives/nodes.js +5 -3
  177. package/dist/primitives/nodes.js.map +1 -1
  178. package/dist/primitives/scroll.d.ts +127 -0
  179. package/dist/primitives/scroll.d.ts.map +1 -0
  180. package/dist/primitives/scroll.js +202 -0
  181. package/dist/primitives/scroll.js.map +1 -0
  182. package/dist/storybook/app.d.ts.map +1 -1
  183. package/dist/storybook/app.js +218 -84
  184. package/dist/storybook/app.js.map +1 -1
  185. package/dist/storybook/components/compare-view.d.ts.map +1 -1
  186. package/dist/storybook/components/compare-view.js +25 -19
  187. package/dist/storybook/components/compare-view.js.map +1 -1
  188. package/dist/storybook/components/hotkeys-panel.d.ts +12 -0
  189. package/dist/storybook/components/hotkeys-panel.d.ts.map +1 -0
  190. package/dist/storybook/components/hotkeys-panel.js +44 -0
  191. package/dist/storybook/components/hotkeys-panel.js.map +1 -0
  192. package/dist/storybook/components/index.d.ts +6 -0
  193. package/dist/storybook/components/index.d.ts.map +1 -1
  194. package/dist/storybook/components/index.js +9 -0
  195. package/dist/storybook/components/index.js.map +1 -1
  196. package/dist/storybook/components/log-viewer.d.ts +9 -4
  197. package/dist/storybook/components/log-viewer.d.ts.map +1 -1
  198. package/dist/storybook/components/log-viewer.js +97 -35
  199. package/dist/storybook/components/log-viewer.js.map +1 -1
  200. package/dist/storybook/components/navbar.d.ts +17 -0
  201. package/dist/storybook/components/navbar.d.ts.map +1 -0
  202. package/dist/storybook/components/navbar.js +52 -0
  203. package/dist/storybook/components/navbar.js.map +1 -0
  204. package/dist/storybook/components/pressed-keys.d.ts +29 -0
  205. package/dist/storybook/components/pressed-keys.d.ts.map +1 -0
  206. package/dist/storybook/components/pressed-keys.js +148 -0
  207. package/dist/storybook/components/pressed-keys.js.map +1 -0
  208. package/dist/storybook/components/preview.d.ts.map +1 -1
  209. package/dist/storybook/components/preview.js +44 -34
  210. package/dist/storybook/components/preview.js.map +1 -1
  211. package/dist/storybook/components/search-bar.d.ts +29 -0
  212. package/dist/storybook/components/search-bar.d.ts.map +1 -0
  213. package/dist/storybook/components/search-bar.js +101 -0
  214. package/dist/storybook/components/search-bar.js.map +1 -0
  215. package/dist/storybook/components/sidebar.d.ts.map +1 -1
  216. package/dist/storybook/components/sidebar.js +27 -21
  217. package/dist/storybook/components/sidebar.js.map +1 -1
  218. package/dist/storybook/components/status-bar.d.ts +22 -0
  219. package/dist/storybook/components/status-bar.d.ts.map +1 -0
  220. package/dist/storybook/components/status-bar.js +64 -0
  221. package/dist/storybook/components/status-bar.js.map +1 -0
  222. package/dist/storybook/store.d.ts +13 -1
  223. package/dist/storybook/store.d.ts.map +1 -1
  224. package/dist/storybook/store.js +21 -1
  225. package/dist/storybook/store.js.map +1 -1
  226. package/dist/storybook/stories/apps/index.d.ts.map +1 -1
  227. package/dist/storybook/stories/apps/index.js +82 -147
  228. package/dist/storybook/stories/apps/index.js.map +1 -1
  229. package/dist/storybook/stories/atoms/index.d.ts.map +1 -1
  230. package/dist/storybook/stories/atoms/index.js +57 -52
  231. package/dist/storybook/stories/atoms/index.js.map +1 -1
  232. package/dist/storybook/stories/molecules/index.d.ts +16 -0
  233. package/dist/storybook/stories/molecules/index.d.ts.map +1 -1
  234. package/dist/storybook/stories/molecules/index.js +299 -91
  235. package/dist/storybook/stories/molecules/index.js.map +1 -1
  236. package/dist/storybook/stories/organisms/index.d.ts.map +1 -1
  237. package/dist/storybook/stories/organisms/index.js +207 -120
  238. package/dist/storybook/stories/organisms/index.js.map +1 -1
  239. package/dist/templates/app.d.ts +28 -23
  240. package/dist/templates/app.d.ts.map +1 -1
  241. package/dist/templates/app.js +104 -17
  242. package/dist/templates/app.js.map +1 -1
  243. package/dist/themes/catppuccin.theme.d.ts +8 -0
  244. package/dist/themes/catppuccin.theme.d.ts.map +1 -0
  245. package/dist/themes/catppuccin.theme.js +538 -0
  246. package/dist/themes/catppuccin.theme.js.map +1 -0
  247. package/dist/themes/dark.theme.d.ts +8 -0
  248. package/dist/themes/dark.theme.d.ts.map +1 -0
  249. package/dist/themes/dark.theme.js +502 -0
  250. package/dist/themes/dark.theme.js.map +1 -0
  251. package/dist/themes/dracula.theme.d.ts +8 -0
  252. package/dist/themes/dracula.theme.d.ts.map +1 -0
  253. package/dist/themes/dracula.theme.js +518 -0
  254. package/dist/themes/dracula.theme.js.map +1 -0
  255. package/dist/themes/gruvbox.theme.d.ts +8 -0
  256. package/dist/themes/gruvbox.theme.d.ts.map +1 -0
  257. package/dist/themes/gruvbox.theme.js +529 -0
  258. package/dist/themes/gruvbox.theme.js.map +1 -0
  259. package/dist/themes/high-contrast-dark.theme.d.ts +8 -0
  260. package/dist/themes/high-contrast-dark.theme.d.ts.map +1 -0
  261. package/dist/themes/high-contrast-dark.theme.js +503 -0
  262. package/dist/themes/high-contrast-dark.theme.js.map +1 -0
  263. package/dist/themes/index.d.ts +58 -0
  264. package/dist/themes/index.d.ts.map +1 -0
  265. package/dist/themes/index.js +75 -0
  266. package/dist/themes/index.js.map +1 -0
  267. package/dist/themes/light.theme.d.ts +8 -0
  268. package/dist/themes/light.theme.d.ts.map +1 -0
  269. package/dist/themes/light.theme.js +502 -0
  270. package/dist/themes/light.theme.js.map +1 -0
  271. package/dist/themes/monochrome.theme.d.ts +8 -0
  272. package/dist/themes/monochrome.theme.d.ts.map +1 -0
  273. package/dist/themes/monochrome.theme.js +503 -0
  274. package/dist/themes/monochrome.theme.js.map +1 -0
  275. package/dist/themes/monokai.theme.d.ts +8 -0
  276. package/dist/themes/monokai.theme.d.ts.map +1 -0
  277. package/dist/themes/monokai.theme.js +518 -0
  278. package/dist/themes/monokai.theme.js.map +1 -0
  279. package/dist/themes/nord.theme.d.ts +8 -0
  280. package/dist/themes/nord.theme.d.ts.map +1 -0
  281. package/dist/themes/nord.theme.js +527 -0
  282. package/dist/themes/nord.theme.js.map +1 -0
  283. package/dist/themes/solarized-dark.theme.d.ts +8 -0
  284. package/dist/themes/solarized-dark.theme.d.ts.map +1 -0
  285. package/dist/themes/solarized-dark.theme.js +525 -0
  286. package/dist/themes/solarized-dark.theme.js.map +1 -0
  287. package/dist/themes/tokyo-night.theme.d.ts +8 -0
  288. package/dist/themes/tokyo-night.theme.d.ts.map +1 -0
  289. package/dist/themes/tokyo-night.theme.js +529 -0
  290. package/dist/themes/tokyo-night.theme.js.map +1 -0
  291. package/dist/version.js +1 -1
  292. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme-loader.d.ts","sourceRoot":"","sources":["../../src/core/theme-loader.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,KAAK,EACL,YAAY,EACZ,eAAe,EACf,eAAe,EACf,WAAW,EACX,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,SAAS,EACT,SAAS,EACT,UAAU,EACV,YAAY,EACb,MAAM,kBAAkB,CAAC;AAM1B;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,YAAY,CAAC;IACtB,UAAU,EAAE,eAAe,CAAC;IAC5B,UAAU,EAAE,eAAe,CAAC;IAC5B,OAAO,EAAE,WAAW,CAAC;IACrB,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,EAAE,YAAY,CAAC;IACtB,OAAO,EAAE,YAAY,CAAC;IACtB,UAAU,EAAE,eAAe,CAAC;IAC5B,uDAAuD;IACvD,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,WAAW,CAAC,UAAU,EAAE,eAAe,GAAG,KAAK,CAE9D;AAMD;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb,GAAG,UAAU,CAEb;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,GAAE,MAAM,UAAgB,GAAG,MAAM,CAE9E;AAMD;;;GAGG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,KAAK,EACX,SAAS,EAAE,OAAO,CAAC,eAAe,CAAC,GAClC,KAAK,CAqCP;AAiGD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,EAAE,CAmCtD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,KAAK,CAE3D"}
@@ -0,0 +1,228 @@
1
+ /**
2
+ * Theme Builder
3
+ *
4
+ * Utilities for defining themes in TypeScript files.
5
+ * Each theme is a separate .ts file that exports a Theme object.
6
+ */
7
+ /**
8
+ * Define a theme with full type checking.
9
+ *
10
+ * @example
11
+ * ```typescript
12
+ * import { defineTheme } from '../core/theme-loader.js';
13
+ * import * as colors from '../core/colors.js';
14
+ *
15
+ * const palette = {
16
+ * primary: colors.blue,
17
+ * secondary: colors.slate,
18
+ * // ...
19
+ * };
20
+ *
21
+ * export const darkTheme = defineTheme({
22
+ * name: 'dark',
23
+ * mode: 'dark',
24
+ * meta: { version: '1.0.0', author: 'tuiuiu', description: 'Default dark theme' },
25
+ * palette,
26
+ * background: {
27
+ * lowest: palette.neutral[900],
28
+ * base: palette.neutral[800],
29
+ * // ...
30
+ * },
31
+ * // ...
32
+ * });
33
+ * ```
34
+ */
35
+ export function defineTheme(definition) {
36
+ return definition;
37
+ }
38
+ // =============================================================================
39
+ // Color Scale Utilities
40
+ // =============================================================================
41
+ /**
42
+ * Create a color scale from individual shade values.
43
+ */
44
+ export function createScale(shades) {
45
+ return shades;
46
+ }
47
+ /**
48
+ * Get a shade from a color scale with fallback to 500.
49
+ */
50
+ export function shade(scale, value = 500) {
51
+ return scale[value];
52
+ }
53
+ // =============================================================================
54
+ // Theme Merging
55
+ // =============================================================================
56
+ /**
57
+ * Merge two themes, with the second theme overriding the first.
58
+ * Useful for creating theme variants.
59
+ */
60
+ export function mergeThemes(base, overrides) {
61
+ return {
62
+ name: overrides.name ?? base.name,
63
+ mode: overrides.mode ?? base.mode,
64
+ meta: { ...base.meta, ...overrides.meta },
65
+ palette: overrides.palette ?? base.palette,
66
+ background: { ...base.background, ...overrides.background },
67
+ foreground: {
68
+ ...base.foreground,
69
+ ...overrides.foreground,
70
+ inverse: {
71
+ ...base.foreground.inverse,
72
+ ...(overrides.foreground?.inverse ?? {}),
73
+ },
74
+ },
75
+ accents: { ...base.accents, ...overrides.accents },
76
+ states: {
77
+ ...base.states,
78
+ ...overrides.states,
79
+ hover: { ...base.states.hover, ...(overrides.states?.hover ?? {}) },
80
+ active: { ...base.states.active, ...(overrides.states?.active ?? {}) },
81
+ focus: {
82
+ ...base.states.focus,
83
+ ...(overrides.states?.focus ?? {}),
84
+ ring: {
85
+ ...base.states.focus.ring,
86
+ ...(overrides.states?.focus?.ring ?? {}),
87
+ },
88
+ },
89
+ disabled: { ...base.states.disabled, ...(overrides.states?.disabled ?? {}) },
90
+ selected: { ...base.states.selected, ...(overrides.states?.selected ?? {}) },
91
+ },
92
+ borders: { ...base.borders, ...overrides.borders },
93
+ opacity: { ...base.opacity, ...overrides.opacity },
94
+ components: mergeComponents(base.components, overrides.components),
95
+ borderRadius: overrides.borderRadius ?? base.borderRadius,
96
+ };
97
+ }
98
+ /**
99
+ * Deep merge component tokens.
100
+ */
101
+ function mergeComponents(base, overrides) {
102
+ if (!overrides)
103
+ return base;
104
+ return {
105
+ button: {
106
+ primary: { ...base.button.primary, ...overrides.button?.primary },
107
+ secondary: { ...base.button.secondary, ...overrides.button?.secondary },
108
+ outline: { ...base.button.outline, ...overrides.button?.outline },
109
+ ghost: { ...base.button.ghost, ...overrides.button?.ghost },
110
+ },
111
+ panel: { ...base.panel, ...overrides.panel },
112
+ menu: {
113
+ ...base.menu,
114
+ ...overrides.menu,
115
+ item: { ...base.menu.item, ...overrides.menu?.item },
116
+ },
117
+ tabs: {
118
+ ...base.tabs,
119
+ ...overrides.tabs,
120
+ tab: { ...base.tabs.tab, ...overrides.tabs?.tab },
121
+ },
122
+ dropdown: {
123
+ ...base.dropdown,
124
+ ...overrides.dropdown,
125
+ item: { ...base.dropdown.item, ...overrides.dropdown?.item },
126
+ },
127
+ input: { ...base.input, ...overrides.input },
128
+ checkbox: { ...base.checkbox, ...overrides.checkbox },
129
+ radio: { ...base.radio, ...overrides.radio },
130
+ tooltip: { ...base.tooltip, ...overrides.tooltip },
131
+ modal: { ...base.modal, ...overrides.modal },
132
+ badge: {
133
+ default: { ...base.badge.default, ...overrides.badge?.default },
134
+ success: { ...base.badge.success, ...overrides.badge?.success },
135
+ warning: { ...base.badge.warning, ...overrides.badge?.warning },
136
+ danger: { ...base.badge.danger, ...overrides.badge?.danger },
137
+ },
138
+ list: {
139
+ item: { ...base.list.item, ...overrides.list?.item },
140
+ },
141
+ header: {
142
+ default: { ...base.header.default, ...overrides.header?.default },
143
+ primary: { ...base.header.primary, ...overrides.header?.primary },
144
+ secondary: { ...base.header.secondary, ...overrides.header?.secondary },
145
+ success: { ...base.header.success, ...overrides.header?.success },
146
+ warning: { ...base.header.warning, ...overrides.header?.warning },
147
+ danger: { ...base.header.danger, ...overrides.header?.danger },
148
+ },
149
+ statusbar: {
150
+ default: { ...base.statusbar.default, ...overrides.statusbar?.default },
151
+ primary: { ...base.statusbar.primary, ...overrides.statusbar?.primary },
152
+ info: { ...base.statusbar.info, ...overrides.statusbar?.info },
153
+ success: { ...base.statusbar.success, ...overrides.statusbar?.success },
154
+ warning: { ...base.statusbar.warning, ...overrides.statusbar?.warning },
155
+ danger: { ...base.statusbar.danger, ...overrides.statusbar?.danger },
156
+ },
157
+ page: {
158
+ default: { ...base.page.default, ...overrides.page?.default },
159
+ primary: { ...base.page.primary, ...overrides.page?.primary },
160
+ secondary: { ...base.page.secondary, ...overrides.page?.secondary },
161
+ },
162
+ appshell: { ...base.appshell, ...overrides.appshell },
163
+ collapsible: {
164
+ default: { ...base.collapsible.default, ...overrides.collapsible?.default },
165
+ primary: { ...base.collapsible.primary, ...overrides.collapsible?.primary },
166
+ secondary: { ...base.collapsible.secondary, ...overrides.collapsible?.secondary },
167
+ },
168
+ commandPalette: { ...base.commandPalette, ...overrides.commandPalette },
169
+ splitPanel: { ...base.splitPanel, ...overrides.splitPanel },
170
+ toast: {
171
+ success: { ...base.toast.success, ...overrides.toast?.success },
172
+ error: { ...base.toast.error, ...overrides.toast?.error },
173
+ warning: { ...base.toast.warning, ...overrides.toast?.warning },
174
+ info: { ...base.toast.info, ...overrides.toast?.info },
175
+ },
176
+ window: {
177
+ default: { ...base.window.default, ...overrides.window?.default },
178
+ primary: { ...base.window.primary, ...overrides.window?.primary },
179
+ success: { ...base.window.success, ...overrides.window?.success },
180
+ warning: { ...base.window.warning, ...overrides.window?.warning },
181
+ danger: { ...base.window.danger, ...overrides.window?.danger },
182
+ },
183
+ };
184
+ }
185
+ // =============================================================================
186
+ // Validation
187
+ // =============================================================================
188
+ /**
189
+ * Validate a theme has all required properties.
190
+ * Returns an array of validation errors (empty if valid).
191
+ */
192
+ export function validateTheme(theme) {
193
+ const errors = [];
194
+ if (!theme || typeof theme !== 'object') {
195
+ errors.push('Theme must be an object');
196
+ return errors;
197
+ }
198
+ const t = theme;
199
+ // Required top-level properties
200
+ const required = ['name', 'mode', 'meta', 'palette', 'background', 'foreground', 'accents', 'states', 'borders', 'opacity', 'components'];
201
+ for (const prop of required) {
202
+ if (!(prop in t)) {
203
+ errors.push(`Missing required property: ${prop}`);
204
+ }
205
+ }
206
+ // Mode must be 'dark' or 'light'
207
+ if (t.mode && t.mode !== 'dark' && t.mode !== 'light') {
208
+ errors.push(`Invalid mode: ${t.mode}. Must be 'dark' or 'light'`);
209
+ }
210
+ // Palette must have required colors
211
+ if (t.palette && typeof t.palette === 'object') {
212
+ const palette = t.palette;
213
+ const paletteColors = ['primary', 'secondary', 'success', 'warning', 'danger', 'neutral'];
214
+ for (const color of paletteColors) {
215
+ if (!(color in palette)) {
216
+ errors.push(`Missing palette color: palette.${color}`);
217
+ }
218
+ }
219
+ }
220
+ return errors;
221
+ }
222
+ /**
223
+ * Check if a theme is valid.
224
+ */
225
+ export function isValidTheme(theme) {
226
+ return validateTheme(theme).length === 0;
227
+ }
228
+ //# sourceMappingURL=theme-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme-loader.js","sourceRoot":"","sources":["../../src/core/theme-loader.ts"],"names":[],"mappings":"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"}