@omnitron-dev/prism 0.3.1 → 0.3.2

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 (305) hide show
  1. package/README.md +68 -2
  2. package/THIRD-PARTY-NOTICES.txt +26 -0
  3. package/dist/accessibility/index.js +2 -0
  4. package/dist/accessibility/index.js.map +1 -1
  5. package/dist/auth/index.d.ts +4 -0
  6. package/dist/auth/index.d.ts.map +1 -0
  7. package/dist/auth/index.js +4 -0
  8. package/dist/auth/index.js.map +1 -0
  9. package/dist/blocks/auth-block/guards.d.ts +3 -2
  10. package/dist/blocks/auth-block/guards.d.ts.map +1 -1
  11. package/dist/blocks/dashboard-block/dashboard-block.d.ts.map +1 -1
  12. package/dist/blocks/dashboard-block/types.d.ts +4 -2
  13. package/dist/blocks/dashboard-block/types.d.ts.map +1 -1
  14. package/dist/blocks/dashboard-block/use-dashboard-block.d.ts +2 -2
  15. package/dist/blocks/dashboard-block/use-dashboard-block.d.ts.map +1 -1
  16. package/dist/blocks/data-grid-block/data-grid-block.d.ts.map +1 -1
  17. package/dist/blocks/data-grid-block/types.d.ts +3 -0
  18. package/dist/blocks/data-grid-block/types.d.ts.map +1 -1
  19. package/dist/blocks/index.js +80 -255
  20. package/dist/blocks/index.js.map +1 -1
  21. package/dist/chunk-2AB7VGPW.js +447 -0
  22. package/dist/chunk-2AB7VGPW.js.map +1 -0
  23. package/dist/{chunk-LOY2NPCO.js → chunk-2E67PQ4T.js} +3 -3
  24. package/dist/{chunk-LOY2NPCO.js.map → chunk-2E67PQ4T.js.map} +1 -1
  25. package/dist/chunk-2KG2NI73.js +84 -0
  26. package/dist/chunk-2KG2NI73.js.map +1 -0
  27. package/dist/chunk-2UYRW6X3.js +44 -0
  28. package/dist/chunk-2UYRW6X3.js.map +1 -0
  29. package/dist/chunk-36C5H56C.js +208 -0
  30. package/dist/chunk-36C5H56C.js.map +1 -0
  31. package/dist/chunk-36FOXX25.js +73 -0
  32. package/dist/chunk-36FOXX25.js.map +1 -0
  33. package/dist/{chunk-52PQL67Q.js → chunk-3VSM7NZG.js} +18 -15
  34. package/dist/chunk-3VSM7NZG.js.map +1 -0
  35. package/dist/{chunk-GUGTDURV.js → chunk-4B2LTPK2.js} +2 -2
  36. package/dist/{chunk-GUGTDURV.js.map → chunk-4B2LTPK2.js.map} +1 -1
  37. package/dist/chunk-4HUGZJKU.js +108 -0
  38. package/dist/chunk-4HUGZJKU.js.map +1 -0
  39. package/dist/{chunk-PXXPLHIY.js → chunk-4Q5L7LDG.js} +3 -3
  40. package/dist/{chunk-PXXPLHIY.js.map → chunk-4Q5L7LDG.js.map} +1 -1
  41. package/dist/{chunk-BRDWQVRT.js → chunk-4R7EZ7GQ.js} +3 -2
  42. package/dist/chunk-4R7EZ7GQ.js.map +1 -0
  43. package/dist/chunk-6IANOSMD.js +185 -0
  44. package/dist/chunk-6IANOSMD.js.map +1 -0
  45. package/dist/{chunk-YHE7HXSG.js → chunk-7ATBURW2.js} +3 -3
  46. package/dist/{chunk-YHE7HXSG.js.map → chunk-7ATBURW2.js.map} +1 -1
  47. package/dist/{chunk-7G5D5PTC.js → chunk-AATAOOSF.js} +4 -4
  48. package/dist/{chunk-7G5D5PTC.js.map → chunk-AATAOOSF.js.map} +1 -1
  49. package/dist/chunk-AKLRKCYH.js +128 -0
  50. package/dist/chunk-AKLRKCYH.js.map +1 -0
  51. package/dist/chunk-CT46KJOR.js +133 -0
  52. package/dist/chunk-CT46KJOR.js.map +1 -0
  53. package/dist/{chunk-LSPFFEJT.js → chunk-D4GFAJAZ.js} +298 -3900
  54. package/dist/chunk-D4GFAJAZ.js.map +1 -0
  55. package/dist/{chunk-BJE2AKD4.js → chunk-D5J3KW6Q.js} +3 -2
  56. package/dist/chunk-D5J3KW6Q.js.map +1 -0
  57. package/dist/chunk-DEPJRTVT.js +3 -0
  58. package/dist/{chunk-FU52GL2E.js.map → chunk-DEPJRTVT.js.map} +1 -1
  59. package/dist/{chunk-472SOF76.js → chunk-DHTYHUYI.js} +85 -107
  60. package/dist/chunk-DHTYHUYI.js.map +1 -0
  61. package/dist/{chunk-FF5RF32O.js → chunk-E7WM2RXA.js} +3 -2
  62. package/dist/chunk-E7WM2RXA.js.map +1 -0
  63. package/dist/chunk-F6RZ7LW6.js +1271 -0
  64. package/dist/chunk-F6RZ7LW6.js.map +1 -0
  65. package/dist/chunk-FOGY3HA4.js +217 -0
  66. package/dist/chunk-FOGY3HA4.js.map +1 -0
  67. package/dist/chunk-G2GANYMW.js +139 -0
  68. package/dist/chunk-G2GANYMW.js.map +1 -0
  69. package/dist/chunk-I6DILPFE.js +293 -0
  70. package/dist/chunk-I6DILPFE.js.map +1 -0
  71. package/dist/{chunk-HOXFSQUV.js → chunk-IRYU3NTG.js} +2 -2
  72. package/dist/{chunk-HOXFSQUV.js.map → chunk-IRYU3NTG.js.map} +1 -1
  73. package/dist/chunk-JTIUGPW5.js +284 -0
  74. package/dist/chunk-JTIUGPW5.js.map +1 -0
  75. package/dist/{chunk-GUFHFEPZ.js → chunk-JZBSPDED.js} +2 -2
  76. package/dist/{chunk-GUFHFEPZ.js.map → chunk-JZBSPDED.js.map} +1 -1
  77. package/dist/{chunk-PFT2BNYO.js → chunk-KPY7TA4D.js} +5 -5
  78. package/dist/{chunk-PFT2BNYO.js.map → chunk-KPY7TA4D.js.map} +1 -1
  79. package/dist/{chunk-GMIE6III.js → chunk-LFWKGNCX.js} +50 -623
  80. package/dist/chunk-LFWKGNCX.js.map +1 -0
  81. package/dist/chunk-LH4ZZZYB.js +37 -0
  82. package/dist/chunk-LH4ZZZYB.js.map +1 -0
  83. package/dist/chunk-NFJ7CPG3.js +13 -0
  84. package/dist/chunk-NFJ7CPG3.js.map +1 -0
  85. package/dist/chunk-NFPOIHD4.js +3 -0
  86. package/dist/{chunk-JSQTYDPG.js.map → chunk-NFPOIHD4.js.map} +1 -1
  87. package/dist/{chunk-XIXSSI3B.js → chunk-NJM5AVBM.js} +3 -2
  88. package/dist/chunk-NJM5AVBM.js.map +1 -0
  89. package/dist/{chunk-4Z5DE5GK.js → chunk-NSNM53WI.js} +133 -115
  90. package/dist/chunk-NSNM53WI.js.map +1 -0
  91. package/dist/chunk-NTREGTG7.js +31 -0
  92. package/dist/chunk-NTREGTG7.js.map +1 -0
  93. package/dist/{chunk-ADG4HZEP.js → chunk-OKJA6SJM.js} +4 -4
  94. package/dist/chunk-OKJA6SJM.js.map +1 -0
  95. package/dist/{chunk-SU3LVQ7N.js → chunk-Q6JDNFSG.js} +11 -226
  96. package/dist/chunk-Q6JDNFSG.js.map +1 -0
  97. package/dist/chunk-RPOGINR5.js +115 -0
  98. package/dist/chunk-RPOGINR5.js.map +1 -0
  99. package/dist/{chunk-KQ67XB6T.js → chunk-RSWVYIXK.js} +151 -114
  100. package/dist/chunk-RSWVYIXK.js.map +1 -0
  101. package/dist/chunk-SSEHL5VP.js +110 -0
  102. package/dist/chunk-SSEHL5VP.js.map +1 -0
  103. package/dist/chunk-TEIGUOWN.js +523 -0
  104. package/dist/chunk-TEIGUOWN.js.map +1 -0
  105. package/dist/{chunk-AYYFMTMI.js → chunk-TJ7DHXUX.js} +2 -2
  106. package/dist/{chunk-AYYFMTMI.js.map → chunk-TJ7DHXUX.js.map} +1 -1
  107. package/dist/{chunk-75FQ5IW3.js → chunk-TZHWYT34.js} +3 -3
  108. package/dist/{chunk-75FQ5IW3.js.map → chunk-TZHWYT34.js.map} +1 -1
  109. package/dist/chunk-TZWHELY4.js +45 -0
  110. package/dist/chunk-TZWHELY4.js.map +1 -0
  111. package/dist/{chunk-OKTLA23Q.js → chunk-UEINJFLS.js} +6 -6
  112. package/dist/chunk-UEINJFLS.js.map +1 -0
  113. package/dist/chunk-URFQX3I6.js +129 -0
  114. package/dist/chunk-URFQX3I6.js.map +1 -0
  115. package/dist/chunk-VG6FOMOH.js +187 -0
  116. package/dist/chunk-VG6FOMOH.js.map +1 -0
  117. package/dist/{chunk-PGHEP4JD.js → chunk-VQVVHMPG.js} +3 -3
  118. package/dist/{chunk-PGHEP4JD.js.map → chunk-VQVVHMPG.js.map} +1 -1
  119. package/dist/{chunk-DRFNMZLG.js → chunk-VUKOT432.js} +3 -2
  120. package/dist/chunk-VUKOT432.js.map +1 -0
  121. package/dist/chunk-WD4N72DL.js +315 -0
  122. package/dist/chunk-WD4N72DL.js.map +1 -0
  123. package/dist/chunk-XBYMG4QK.js +119 -0
  124. package/dist/chunk-XBYMG4QK.js.map +1 -0
  125. package/dist/chunk-YHM6GIHV.js +3 -0
  126. package/dist/chunk-YHM6GIHV.js.map +1 -0
  127. package/dist/{chunk-SNZK5X6F.js → chunk-Z2AN43YU.js} +4 -2
  128. package/dist/chunk-Z2AN43YU.js.map +1 -0
  129. package/dist/chunk-ZNWHMQRM.js +171 -0
  130. package/dist/chunk-ZNWHMQRM.js.map +1 -0
  131. package/dist/{chunk-YSIG2XYH.js → chunk-ZRJYQN6Y.js} +2 -2
  132. package/dist/{chunk-YSIG2XYH.js.map → chunk-ZRJYQN6Y.js.map} +1 -1
  133. package/dist/{chunk-AD4W7HYC.js → chunk-ZYI3MHLE.js} +3 -2
  134. package/dist/chunk-ZYI3MHLE.js.map +1 -0
  135. package/dist/cli/index.js +59 -421
  136. package/dist/cli/index.js.map +1 -1
  137. package/dist/components/admin-filters/admin-data-table.d.ts +7 -1
  138. package/dist/components/admin-filters/admin-data-table.d.ts.map +1 -1
  139. package/dist/components/admin-filters/filter-toolbar.d.ts.map +1 -1
  140. package/dist/components/admin-filters/index.js +8 -0
  141. package/dist/components/admin-filters/index.js.map +1 -0
  142. package/dist/components/alert/alert.d.ts.map +1 -1
  143. package/dist/components/alert/index.js +5 -0
  144. package/dist/components/alert/index.js.map +1 -0
  145. package/dist/components/animate/index.js +5 -0
  146. package/dist/components/animate/index.js.map +1 -0
  147. package/dist/components/breadcrumbs/breadcrumbs.d.ts.map +1 -1
  148. package/dist/components/breadcrumbs/index.js +4 -0
  149. package/dist/components/breadcrumbs/index.js.map +1 -0
  150. package/dist/components/card/index.js +4 -0
  151. package/dist/components/card/index.js.map +1 -0
  152. package/dist/components/chart/chart.d.ts.map +1 -1
  153. package/dist/components/chart/index.css +52 -0
  154. package/dist/components/chart/index.css.map +1 -0
  155. package/dist/components/chart/index.js +5 -0
  156. package/dist/components/chart/index.js.map +1 -0
  157. package/dist/components/chart/types.d.ts +3 -1
  158. package/dist/components/chart/types.d.ts.map +1 -1
  159. package/dist/components/chart/use-chart.d.ts.map +1 -1
  160. package/dist/components/command-palette/command-palette.d.ts +3 -1
  161. package/dist/components/command-palette/command-palette.d.ts.map +1 -1
  162. package/dist/components/command-palette/index.js +4 -0
  163. package/dist/components/command-palette/index.js.map +1 -0
  164. package/dist/components/confirm-dialog/index.js +4 -0
  165. package/dist/components/confirm-dialog/index.js.map +1 -0
  166. package/dist/components/date-input/date-input.d.ts +1 -0
  167. package/dist/components/date-input/date-input.d.ts.map +1 -1
  168. package/dist/components/date-input/index.d.ts +0 -1
  169. package/dist/components/date-input/index.d.ts.map +1 -1
  170. package/dist/components/doc-layout/index.js +5 -4
  171. package/dist/components/doc-layout/index.js.map +1 -1
  172. package/dist/components/editor/index.js +4 -3
  173. package/dist/components/editor/index.js.map +1 -1
  174. package/dist/components/emoji-picker/index.js +2 -1
  175. package/dist/components/emoji-picker/index.js.map +1 -1
  176. package/dist/components/empty-content/empty-content.d.ts.map +1 -1
  177. package/dist/components/empty-content/index.js +4 -0
  178. package/dist/components/empty-content/index.js.map +1 -0
  179. package/dist/components/error-boundary/index.js +6 -0
  180. package/dist/components/error-boundary/index.js.map +1 -0
  181. package/dist/components/index.css +13 -10
  182. package/dist/components/index.css.map +1 -1
  183. package/dist/components/index.d.ts +1 -0
  184. package/dist/components/index.d.ts.map +1 -1
  185. package/dist/components/index.js +47 -21
  186. package/dist/components/index.js.map +1 -1
  187. package/dist/components/knowledge-graph/edge-labels.d.ts.map +1 -1
  188. package/dist/components/knowledge-graph/index.js +18 -16
  189. package/dist/components/knowledge-graph/index.js.map +1 -1
  190. package/dist/components/label/index.js +5 -0
  191. package/dist/components/label/index.js.map +1 -0
  192. package/dist/components/label/label.d.ts.map +1 -1
  193. package/dist/components/loading-screen/index.js +4 -0
  194. package/dist/components/loading-screen/index.js.map +1 -0
  195. package/dist/components/map/MapPointPicker.d.ts.map +1 -1
  196. package/dist/components/map/index.js +2 -1
  197. package/dist/components/map/index.js.map +1 -1
  198. package/dist/components/navigation-progress/index.js +4 -0
  199. package/dist/components/navigation-progress/index.js.map +1 -0
  200. package/dist/components/page-content/index.js +4 -0
  201. package/dist/components/page-content/index.js.map +1 -0
  202. package/dist/components/popover/index.js +4 -0
  203. package/dist/components/popover/index.js.map +1 -0
  204. package/dist/components/research/diagram.d.ts.map +1 -1
  205. package/dist/components/research/index.js +6 -4
  206. package/dist/components/research/index.js.map +1 -1
  207. package/dist/components/research-editor/extensions.d.ts +1 -1
  208. package/dist/components/research-editor/index.js +11 -10
  209. package/dist/components/research-editor/index.js.map +1 -1
  210. package/dist/components/research-editor/math-navigation.d.ts +2 -2
  211. package/dist/components/research-editor/math-navigation.d.ts.map +1 -1
  212. package/dist/components/scroll-to-top/index.js +4 -0
  213. package/dist/components/scroll-to-top/index.js.map +1 -0
  214. package/dist/components/search-input/index.js +7 -0
  215. package/dist/components/search-input/index.js.map +1 -0
  216. package/dist/components/search-input/search-input.d.ts +3 -1
  217. package/dist/components/search-input/search-input.d.ts.map +1 -1
  218. package/dist/components/skeleton/index.js +4 -0
  219. package/dist/components/skeleton/index.js.map +1 -0
  220. package/dist/components/snackbar/index.js +6 -0
  221. package/dist/components/snackbar/index.js.map +1 -0
  222. package/dist/components/stepper/index.js +4 -0
  223. package/dist/components/stepper/index.js.map +1 -0
  224. package/dist/components/table/index.d.ts +1 -0
  225. package/dist/components/table/index.d.ts.map +1 -1
  226. package/dist/components/table/index.js +5 -0
  227. package/dist/components/table/index.js.map +1 -0
  228. package/dist/components/table/table-viewport.d.ts +13 -0
  229. package/dist/components/table/table-viewport.d.ts.map +1 -0
  230. package/dist/components/table/table.d.ts +3 -1
  231. package/dist/components/table/table.d.ts.map +1 -1
  232. package/dist/components/tabs/index.js +6 -0
  233. package/dist/components/tabs/index.js.map +1 -0
  234. package/dist/components/tabs/tabs.d.ts +12 -1
  235. package/dist/components/tabs/tabs.d.ts.map +1 -1
  236. package/dist/core/index.js +12 -10
  237. package/dist/core/index.js.map +1 -1
  238. package/dist/forms/index.js +2 -0
  239. package/dist/forms/index.js.map +1 -1
  240. package/dist/hooks/index.js +14 -12
  241. package/dist/hooks/index.js.map +1 -1
  242. package/dist/hooks/use-config-from-query.d.ts +2 -0
  243. package/dist/hooks/use-config-from-query.d.ts.map +1 -1
  244. package/dist/hooks/use-image-dimensions.d.ts.map +1 -1
  245. package/dist/hooks/use-keyboard-shortcut.d.ts.map +1 -1
  246. package/dist/hooks/use-scroll-position.d.ts.map +1 -1
  247. package/dist/hooks/use-window-size.d.ts.map +1 -1
  248. package/dist/icons/context.d.ts.map +1 -1
  249. package/dist/icons/index.js +3 -2
  250. package/dist/icons/index.js.map +1 -1
  251. package/dist/index.css +13 -10
  252. package/dist/index.css.map +1 -1
  253. package/dist/index.js +57 -31
  254. package/dist/index.js.map +1 -1
  255. package/dist/internal/research-parser.js +3 -0
  256. package/dist/internal/research-parser.js.map +1 -0
  257. package/dist/layouts/core/header-section.d.ts +1 -0
  258. package/dist/layouts/core/header-section.d.ts.map +1 -1
  259. package/dist/layouts/dashboard/layout.d.ts +3 -1
  260. package/dist/layouts/dashboard/layout.d.ts.map +1 -1
  261. package/dist/layouts/dashboard/sidenav.d.ts.map +1 -1
  262. package/dist/layouts/index.js +9 -8
  263. package/dist/layouts/index.js.map +1 -1
  264. package/dist/netron/index.js +2 -1
  265. package/dist/netron/index.js.map +1 -1
  266. package/dist/registry/index.js +1 -1
  267. package/dist/state/create-store.d.ts.map +1 -1
  268. package/dist/state/index.js +3 -2
  269. package/dist/state/index.js.map +1 -1
  270. package/dist/state/settings-version.d.ts.map +1 -1
  271. package/dist/theme/components/Chip.d.ts.map +1 -1
  272. package/dist/theme/components/Dialog.d.ts.map +1 -1
  273. package/dist/theme/components/TextField.d.ts.map +1 -1
  274. package/dist/theme/components/index.d.ts.map +1 -1
  275. package/dist/theme/components/theme-utils.d.ts +2 -2
  276. package/dist/theme/components/theme-utils.d.ts.map +1 -1
  277. package/dist/theme/index.js +8 -6
  278. package/dist/theme/index.js.map +1 -1
  279. package/dist/theme/palette/overrides.d.ts +1 -0
  280. package/dist/theme/palette/overrides.d.ts.map +1 -1
  281. package/dist/theme/semantic-surface.d.ts +8 -0
  282. package/dist/theme/semantic-surface.d.ts.map +1 -0
  283. package/dist/types/index.js +2 -2
  284. package/dist/ui/index.js +6 -5
  285. package/dist/ui/index.js.map +1 -1
  286. package/dist/utils/async-lock.d.ts.map +1 -1
  287. package/package.json +143 -37
  288. package/dist/chunk-472SOF76.js.map +0 -1
  289. package/dist/chunk-4Z5DE5GK.js.map +0 -1
  290. package/dist/chunk-52PQL67Q.js.map +0 -1
  291. package/dist/chunk-AD4W7HYC.js.map +0 -1
  292. package/dist/chunk-ADG4HZEP.js.map +0 -1
  293. package/dist/chunk-BJE2AKD4.js.map +0 -1
  294. package/dist/chunk-BRDWQVRT.js.map +0 -1
  295. package/dist/chunk-DRFNMZLG.js.map +0 -1
  296. package/dist/chunk-FF5RF32O.js.map +0 -1
  297. package/dist/chunk-FU52GL2E.js +0 -3
  298. package/dist/chunk-GMIE6III.js.map +0 -1
  299. package/dist/chunk-JSQTYDPG.js +0 -3
  300. package/dist/chunk-KQ67XB6T.js.map +0 -1
  301. package/dist/chunk-LSPFFEJT.js.map +0 -1
  302. package/dist/chunk-OKTLA23Q.js.map +0 -1
  303. package/dist/chunk-SNZK5X6F.js.map +0 -1
  304. package/dist/chunk-SU3LVQ7N.js.map +0 -1
  305. package/dist/chunk-XIXSSI3B.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/theme/palette.ts","../src/theme/presets/default.ts","../src/theme/presets/luxury.ts","../src/theme/presets/nature.ts","../src/theme/presets/index.ts","../src/theme/css-variables.ts"],"names":["lightPalette","darkPalette"],"mappings":"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","file":"chunk-7G5D5PTC.js","sourcesContent":["/**\n * Palette Utilities\n *\n * Utilities for palette manipulation and CSS channel generation.\n * All color math uses HSL for perceptually correct results.\n *\n * @module theme/palette\n */\n\nimport type { ThemePalette, PaletteColor, ColorScale, ColorScaleWithChannels } from '../types/theme.js';\nimport {\n generatePaletteColorWithChannels,\n generateColorScaleWithChannels,\n hexToRgbChannel,\n lighten,\n darken,\n} from './utils/color.js';\n\n/**\n * Generate RGB channel string from hex color.\n *\n * @param hex - Hex color value\n * @returns RGB channel string (e.g., \"255 255 255\")\n */\nexport function generatePaletteChannel(hex: string): string {\n return hexToRgbChannel(hex);\n}\n\n/**\n * Generate a full palette color from a main color.\n * Uses HSL-based color math for perceptually correct shades.\n *\n * @param main - Main color hex value\n * @param contrastText - Contrast text color (default: white)\n * @returns Full palette color with all shades\n */\nexport function generatePaletteColor(main: string, contrastText = '#FFFFFF'): PaletteColor {\n // HSL lightness adjustments (percentage points)\n // These values produce visually balanced shade progressions\n return {\n lighter: lighten(main, 32), // +32 lightness points (very light, ~85-95% L)\n light: lighten(main, 16), // +16 lightness points (light, ~65-75% L)\n main, // Base color (typically ~45-55% L)\n dark: darken(main, 12), // -12 lightness points (dark, ~35-45% L)\n darker: darken(main, 28), // -28 lightness points (very dark, ~20-30% L)\n contrastText,\n };\n}\n\n/**\n * Apply primary color override to a palette.\n *\n * @param palette - Base palette\n * @param primaryColor - New primary color\n * @param mode - Theme mode (light/dark)\n * @returns Updated palette with new primary color\n */\nexport function applyPrimaryOverride(\n palette: ThemePalette,\n primaryColor: string,\n mode: 'light' | 'dark' = 'light'\n): ThemePalette {\n const contrastText = mode === 'dark' ? '#FFFFFF' : '#FFFFFF';\n const basePrimary = generatePaletteColor(primaryColor, contrastText);\n const newPrimary = generatePaletteColorWithChannels(basePrimary);\n\n return {\n ...palette,\n primary: newPrimary,\n };\n}\n\n/**\n * Create grey palette.\n */\nexport function createGreyPalette(): ColorScaleWithChannels {\n const scale: ColorScale = {\n 50: '#FAFAFA',\n 100: '#F5F5F5',\n 200: '#EEEEEE',\n 300: '#E0E0E0',\n 400: '#BDBDBD',\n 500: '#9E9E9E',\n 600: '#757575',\n 700: '#616161',\n 800: '#424242',\n 900: '#212121',\n 950: '#121212',\n };\n return generateColorScaleWithChannels(scale);\n}\n\n/**\n * Create dark mode grey palette.\n */\nexport function createDarkGreyPalette(): ColorScaleWithChannels {\n const scale: ColorScale = {\n 50: '#1A1A1A',\n 100: '#242424',\n 200: '#2E2E2E',\n 300: '#383838',\n 400: '#454545',\n 500: '#5C5C5C',\n 600: '#757575',\n 700: '#9E9E9E',\n 800: '#BDBDBD',\n 900: '#E0E0E0',\n 950: '#F5F5F5',\n };\n return generateColorScaleWithChannels(scale);\n}\n","/**\n * Default Theme Preset\n *\n * A neutral, modern theme suitable for most applications.\n *\n * @module theme/presets/default\n */\n\nimport type { ThemePresetDefinition, PresetPalette } from '../../types/theme.js';\n\n/**\n * Light mode palette.\n */\nconst lightPalette: PresetPalette = {\n primary: {\n lighter: '#C8FAD6',\n light: '#5BE49B',\n main: '#00A76F',\n dark: '#007867',\n darker: '#004B50',\n contrastText: '#FFFFFF',\n },\n secondary: {\n lighter: '#EFD6FF',\n light: '#C684FF',\n main: '#8E33FF',\n dark: '#5119B7',\n darker: '#27097A',\n contrastText: '#FFFFFF',\n },\n info: {\n lighter: '#CAFDF5',\n light: '#61F3F3',\n main: '#00B8D9',\n dark: '#006C9C',\n darker: '#003768',\n contrastText: '#FFFFFF',\n },\n success: {\n lighter: '#D3FCD2',\n light: '#77ED8B',\n main: '#22C55E',\n dark: '#118D57',\n darker: '#065E49',\n contrastText: '#FFFFFF',\n },\n warning: {\n lighter: '#FFF5CC',\n light: '#FFD666',\n main: '#FFAB00',\n dark: '#B76E00',\n darker: '#7A4100',\n contrastText: '#212121',\n },\n error: {\n lighter: '#FFE9D5',\n light: '#FFAC82',\n main: '#FF5630',\n dark: '#B71D18',\n darker: '#7A0916',\n contrastText: '#FFFFFF',\n },\n grey: {\n 50: '#FAFAFA',\n 100: '#F5F5F5',\n 200: '#EEEEEE',\n 300: '#E0E0E0',\n 400: '#BDBDBD',\n 500: '#9E9E9E',\n 600: '#757575',\n 700: '#616161',\n 800: '#424242',\n 900: '#212121',\n },\n common: {\n black: '#000000',\n white: '#FFFFFF',\n },\n background: {\n default: '#FFFFFF',\n paper: '#FFFFFF',\n neutral: '#F4F6F8',\n },\n text: {\n primary: '#212121',\n secondary: '#637381',\n disabled: '#919EAB',\n },\n};\n\n/**\n * Dark mode palette.\n */\nconst darkPalette: PresetPalette = {\n primary: {\n lighter: '#C8FAD6',\n light: '#5BE49B',\n main: '#00A76F',\n dark: '#007867',\n darker: '#004B50',\n contrastText: '#FFFFFF',\n },\n secondary: {\n lighter: '#EFD6FF',\n light: '#C684FF',\n main: '#8E33FF',\n dark: '#5119B7',\n darker: '#27097A',\n contrastText: '#FFFFFF',\n },\n info: {\n lighter: '#CAFDF5',\n light: '#61F3F3',\n main: '#00B8D9',\n dark: '#006C9C',\n darker: '#003768',\n contrastText: '#FFFFFF',\n },\n success: {\n lighter: '#D3FCD2',\n light: '#77ED8B',\n main: '#22C55E',\n dark: '#118D57',\n darker: '#065E49',\n contrastText: '#FFFFFF',\n },\n warning: {\n lighter: '#FFF5CC',\n light: '#FFD666',\n main: '#FFAB00',\n dark: '#B76E00',\n darker: '#7A4100',\n contrastText: '#212121',\n },\n error: {\n lighter: '#FFE9D5',\n light: '#FFAC82',\n main: '#FF5630',\n dark: '#B71D18',\n darker: '#7A0916',\n contrastText: '#FFFFFF',\n },\n grey: {\n 50: '#161C24',\n 100: '#212B36',\n 200: '#454F5B',\n 300: '#637381',\n 400: '#919EAB',\n 500: '#C4CDD5',\n 600: '#DFE3E8',\n 700: '#F4F6F8',\n 800: '#F9FAFB',\n 900: '#FFFFFF',\n },\n common: {\n black: '#000000',\n white: '#FFFFFF',\n },\n background: {\n default: '#161C24',\n paper: '#212B36',\n neutral: '#28323D',\n },\n text: {\n primary: '#FFFFFF',\n secondary: '#919EAB',\n disabled: '#637381',\n },\n};\n\n/**\n * Default theme preset.\n */\nexport const defaultPreset: ThemePresetDefinition = {\n name: 'default-light',\n displayName: 'Default',\n description: 'A neutral, modern theme suitable for most applications.',\n preferredMode: 'light',\n lightPalette,\n darkPalette,\n typography: {\n fontFamily: {\n primary: '\"Public Sans Variable\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\n secondary: '\"Barlow\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\n mono: '\"JetBrains Mono\", \"Fira Code\", Consolas, Monaco, monospace',\n },\n fontWeights: {\n light: 300,\n regular: 400,\n medium: 500,\n semiBold: 600,\n bold: 700,\n },\n },\n colorGroup: {\n key: 'default',\n main: '#00A76F',\n },\n};\n","/**\n * Luxury Theme Preset\n *\n * A rich, elegant theme with deep colors and premium feel.\n *\n * @module theme/presets/luxury\n */\n\nimport type { ThemePresetDefinition, PresetPalette } from '../../types/theme.js';\n\n/**\n * Light mode palette.\n */\nconst lightPalette: PresetPalette = {\n primary: {\n lighter: '#F5E6D3',\n light: '#D4A574',\n main: '#8B6914',\n dark: '#6B4F0F',\n darker: '#4A370A',\n contrastText: '#FFFFFF',\n },\n secondary: {\n lighter: '#E8D5E8',\n light: '#B38AB3',\n main: '#6B3A6B',\n dark: '#4D2A4D',\n darker: '#2F1A2F',\n contrastText: '#FFFFFF',\n },\n info: {\n lighter: '#D6E4F0',\n light: '#8BBED9',\n main: '#2E7AB8',\n dark: '#1F5A8A',\n darker: '#103A5C',\n contrastText: '#FFFFFF',\n },\n success: {\n lighter: '#D8EED3',\n light: '#8BC98A',\n main: '#2E8B2E',\n dark: '#1F6B1F',\n darker: '#104A10',\n contrastText: '#FFFFFF',\n },\n warning: {\n lighter: '#FFF3D6',\n light: '#FFD98B',\n main: '#D4A012',\n dark: '#A67A0E',\n darker: '#785509',\n contrastText: '#212121',\n },\n error: {\n lighter: '#F5D6D6',\n light: '#D98B8B',\n main: '#B82E2E',\n dark: '#8A1F1F',\n darker: '#5C1010',\n contrastText: '#FFFFFF',\n },\n grey: {\n 50: '#FAF9F7',\n 100: '#F5F3F0',\n 200: '#E8E4DE',\n 300: '#D4CEC4',\n 400: '#B8AFA0',\n 500: '#9C917C',\n 600: '#7A6F5C',\n 700: '#5C5244',\n 800: '#3E362C',\n 900: '#201C16',\n },\n common: {\n black: '#0D0A06',\n white: '#FFFCF7',\n },\n background: {\n default: '#FFFCF7',\n paper: '#FFFFFF',\n neutral: '#F5F3F0',\n },\n text: {\n primary: '#201C16',\n secondary: '#5C5244',\n disabled: '#9C917C',\n },\n};\n\n/**\n * Dark mode palette.\n */\nconst darkPalette: PresetPalette = {\n primary: {\n lighter: '#F5E6D3',\n light: '#D4A574',\n main: '#C9A227',\n dark: '#A68A1F',\n darker: '#846D18',\n contrastText: '#0D0A06',\n },\n secondary: {\n lighter: '#E8D5E8',\n light: '#B38AB3',\n main: '#9B5A9B',\n dark: '#7D4A7D',\n darker: '#5F3A5F',\n contrastText: '#FFFFFF',\n },\n info: {\n lighter: '#D6E4F0',\n light: '#8BBED9',\n main: '#4E9AD4',\n dark: '#3A7AB0',\n darker: '#265A8C',\n contrastText: '#FFFFFF',\n },\n success: {\n lighter: '#D8EED3',\n light: '#8BC98A',\n main: '#4EAB4E',\n dark: '#3A8B3A',\n darker: '#266B26',\n contrastText: '#FFFFFF',\n },\n warning: {\n lighter: '#FFF3D6',\n light: '#FFD98B',\n main: '#E8B612',\n dark: '#C49A0E',\n darker: '#A07E0A',\n contrastText: '#0D0A06',\n },\n error: {\n lighter: '#F5D6D6',\n light: '#D98B8B',\n main: '#D44E4E',\n dark: '#B03A3A',\n darker: '#8C2626',\n contrastText: '#FFFFFF',\n },\n grey: {\n 50: '#18140E',\n 100: '#241E16',\n 200: '#362E22',\n 300: '#4A402E',\n 400: '#5E523A',\n 500: '#7A6F5C',\n 600: '#9C917C',\n 700: '#B8AFA0',\n 800: '#D4CEC4',\n 900: '#E8E4DE',\n },\n common: {\n black: '#0D0A06',\n white: '#FFFCF7',\n },\n background: {\n default: '#0D0A06',\n paper: '#18140E',\n neutral: '#241E16',\n },\n text: {\n primary: '#E8E4DE',\n secondary: '#B8AFA0',\n disabled: '#7A6F5C',\n },\n};\n\n/**\n * Luxury theme preset.\n */\nexport const luxuryPreset: ThemePresetDefinition = {\n name: 'luxury',\n displayName: 'Luxury',\n description: 'A rich, elegant theme with deep colors and premium feel.',\n preferredMode: 'light',\n lightPalette,\n darkPalette,\n typography: {\n fontFamily: {\n primary: '\"Playfair Display\", Georgia, \"Times New Roman\", serif',\n secondary: '\"Lato\", -apple-system, BlinkMacSystemFont, sans-serif',\n mono: '\"JetBrains Mono\", Consolas, Monaco, monospace',\n },\n fontWeights: {\n light: 300,\n regular: 400,\n medium: 500,\n semiBold: 600,\n bold: 700,\n },\n },\n colorGroup: {\n key: 'luxury',\n main: '#8B6914',\n },\n};\n","/**\n * Nature Theme Preset\n *\n * An earthy, organic theme with warm greens and natural tones.\n *\n * @module theme/presets/nature\n */\n\nimport type { ThemePresetDefinition } from '../../types/theme.js';\nimport { green } from '../colors/base.js';\n\n/**\n * Nature theme preset.\n * Optimized for light mode with earthy green tones.\n */\nexport const naturePreset: ThemePresetDefinition = {\n name: 'nature',\n displayName: 'Nature',\n description: 'An earthy, organic theme with warm greens and natural tones.',\n preferredMode: 'light',\n typography: {\n fontFamily: {\n primary: '\"Nunito\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\n secondary: '\"Merriweather\", Georgia, serif',\n mono: '\"JetBrains Mono\", Consolas, Monaco, monospace',\n },\n fontWeights: {\n light: 300,\n regular: 400,\n medium: 500,\n semiBold: 600,\n bold: 700,\n },\n },\n colorGroup: {\n key: 'nature',\n main: green[500],\n palette: green,\n },\n};\n","/**\n * Theme Presets Index\n *\n * @module theme/presets\n */\n\nimport type { ThemePreset, ThemePresetDefinition } from '../../types/theme.js';\nimport { defaultPreset } from './default.js';\nimport { luxuryPreset } from './luxury.js';\nimport { arcticPreset } from './arctic.js';\nimport { naturePreset } from './nature.js';\nimport { emberPreset } from './ember.js';\nimport { draculaPreset } from './dracula.js';\nimport { midnightPreset } from './midnight.js';\nimport { retroPreset } from './retro.js';\nimport { minimalPreset } from './minimal.js';\n\n/**\n * All available preset names.\n */\nexport const presetNames: ThemePreset[] = [\n 'default-light',\n 'default-dark',\n 'luxury',\n 'arctic',\n 'nature',\n 'ember',\n 'dracula',\n 'midnight',\n 'retro',\n 'minimal',\n];\n\n/**\n * Preset registry.\n */\nconst presets: Record<string, ThemePresetDefinition> = {\n 'default-light': defaultPreset,\n 'default-dark': defaultPreset, // Uses same preset but different preferred mode\n luxury: luxuryPreset,\n arctic: arcticPreset,\n nature: naturePreset,\n ember: emberPreset,\n dracula: draculaPreset,\n midnight: midnightPreset,\n retro: retroPreset,\n minimal: minimalPreset,\n};\n\n/**\n * Get a theme preset by name.\n *\n * @param name - Preset name\n * @returns Theme preset definition\n * @throws If preset is not found\n */\nexport function getPreset(name: ThemePreset): ThemePresetDefinition {\n const preset = presets[name];\n\n if (!preset) {\n console.warn(`Preset \"${name}\" not found, falling back to \"default-light\"`);\n return defaultPreset;\n }\n\n return preset;\n}\n\n/**\n * Register a custom preset.\n *\n * @param name - Preset name\n * @param preset - Preset definition\n */\nexport function registerPreset(name: string, preset: ThemePresetDefinition): void {\n presets[name] = preset;\n}\n\n/**\n * Get all registered presets.\n */\nexport function getAllPresets(): Record<string, ThemePresetDefinition> {\n return { ...presets };\n}\n\n// Re-export presets\nexport { defaultPreset } from './default.js';\nexport { luxuryPreset } from './luxury.js';\nexport { arcticPreset } from './arctic.js';\nexport { naturePreset } from './nature.js';\nexport { emberPreset } from './ember.js';\nexport { draculaPreset } from './dracula.js';\nexport { midnightPreset } from './midnight.js';\nexport { retroPreset } from './retro.js';\nexport { minimalPreset } from './minimal.js';\n","/**\n * CSS Variables System\n *\n * Utilities for generating and managing CSS variables.\n *\n * @module theme/css-variables\n */\n\nimport type { PrismTheme, CssVariablesConfig } from '../types/theme.js';\nimport { generatePaletteChannel } from './palette.js';\n\n/**\n * CSS variable definitions.\n * Uses an index signature since keys are dynamically generated based on prefix.\n */\nexport interface CssVariables {\n [key: string]: string;\n}\n\n/**\n * Default CSS variable values.\n */\nexport const cssVariables: CssVariables = {\n '--prism-background': '#FFFFFF',\n '--prism-foreground': '#212121',\n '--prism-card': '#FFFFFF',\n '--prism-card-foreground': '#212121',\n '--prism-popover': '#FFFFFF',\n '--prism-popover-foreground': '#212121',\n\n '--prism-primary': '#00A76F',\n '--prism-primary-foreground': '#FFFFFF',\n '--prism-primary-lighter': '#C8FAD6',\n '--prism-primary-light': '#5BE49B',\n '--prism-primary-dark': '#007867',\n '--prism-primary-darker': '#004B50',\n\n '--prism-secondary': '#8E33FF',\n '--prism-secondary-foreground': '#FFFFFF',\n\n '--prism-muted': '#F4F6F8',\n '--prism-muted-foreground': '#637381',\n '--prism-accent': '#F4F6F8',\n '--prism-accent-foreground': '#212121',\n '--prism-destructive': '#FF5630',\n '--prism-destructive-foreground': '#FFFFFF',\n\n '--prism-border': '#E0E0E0',\n '--prism-input': '#E0E0E0',\n '--prism-ring': '#00A76F',\n\n '--prism-radius': '0.5rem',\n\n '--prism-primary-channel': '0 167 111',\n '--prism-secondary-channel': '142 51 255',\n '--prism-background-channel': '255 255 255',\n};\n\n/**\n * Generate CSS variables from a Prism theme.\n *\n * @param theme - Prism theme\n * @param config - CSS variables configuration\n * @returns CSS variables object\n */\nexport function generateCssVariables(theme: PrismTheme, config: CssVariablesConfig): CssVariables {\n const { prefix } = config;\n const { palette } = theme;\n\n const vars: CssVariables = {\n [`--${prefix}-background`]: palette.background.default,\n [`--${prefix}-foreground`]: palette.text.primary,\n [`--${prefix}-card`]: palette.background.paper,\n [`--${prefix}-card-foreground`]: palette.text.primary,\n [`--${prefix}-popover`]: palette.background.paper,\n [`--${prefix}-popover-foreground`]: palette.text.primary,\n\n [`--${prefix}-primary`]: palette.primary.main,\n [`--${prefix}-primary-foreground`]: palette.primary.contrastText,\n [`--${prefix}-primary-lighter`]:\n (palette.primary as unknown as { lighter?: string }).lighter || palette.primary.light,\n [`--${prefix}-primary-light`]: palette.primary.light,\n [`--${prefix}-primary-dark`]: palette.primary.dark,\n [`--${prefix}-primary-darker`]: (palette.primary as unknown as { darker?: string }).darker || palette.primary.dark,\n\n [`--${prefix}-secondary`]: palette.secondary.main,\n [`--${prefix}-secondary-foreground`]: palette.secondary.contrastText,\n\n [`--${prefix}-muted`]: palette.background.default,\n [`--${prefix}-muted-foreground`]: palette.text.secondary,\n [`--${prefix}-accent`]: palette.background.default,\n [`--${prefix}-accent-foreground`]: palette.text.primary,\n [`--${prefix}-destructive`]: palette.error.main,\n [`--${prefix}-destructive-foreground`]: palette.error.contrastText,\n\n [`--${prefix}-border`]: palette.divider || palette.grey[300],\n [`--${prefix}-input`]: palette.divider || palette.grey[300],\n [`--${prefix}-ring`]: palette.primary.main,\n\n [`--${prefix}-radius`]: `${theme.shape.borderRadius}px`,\n\n [`--${prefix}-primary-channel`]: generatePaletteChannel(palette.primary.main),\n [`--${prefix}-secondary-channel`]: generatePaletteChannel(palette.secondary.main),\n [`--${prefix}-background-channel`]: generatePaletteChannel(palette.background.default),\n };\n\n // Inject into document if in browser\n if (typeof document !== 'undefined') {\n injectCssVariables(vars, config);\n }\n\n return vars;\n}\n\n/**\n * Inject CSS variables into the document.\n *\n * @param vars - CSS variables object\n * @param config - CSS variables configuration\n */\nfunction injectCssVariables(vars: CssVariables, config: CssVariablesConfig): void {\n const root = document.documentElement;\n\n Object.entries(vars).forEach(([key, value]) => {\n root.style.setProperty(key, value);\n });\n}\n\n/**\n * Get computed CSS variable value.\n *\n * @param name - Variable name (with or without --)\n * @returns Computed value\n */\nexport function getCssVariable(name: string): string {\n if (typeof window === 'undefined') return '';\n\n const varName = name.startsWith('--') ? name : `--${name}`;\n return getComputedStyle(document.documentElement).getPropertyValue(varName).trim();\n}\n\n/**\n * Set CSS variable value.\n *\n * @param name - Variable name (with or without --)\n * @param value - New value\n */\nexport function setCssVariable(name: string, value: string): void {\n if (typeof document === 'undefined') return;\n\n const varName = name.startsWith('--') ? name : `--${name}`;\n document.documentElement.style.setProperty(varName, value);\n}\n"]}
1
+ {"version":3,"sources":["../src/theme/palette.ts","../src/theme/presets/default.ts","../src/theme/presets/luxury.ts","../src/theme/presets/nature.ts","../src/theme/presets/index.ts","../src/theme/css-variables.ts"],"names":["lightPalette","darkPalette"],"mappings":"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","file":"chunk-AATAOOSF.js","sourcesContent":["/**\n * Palette Utilities\n *\n * Utilities for palette manipulation and CSS channel generation.\n * All color math uses HSL for perceptually correct results.\n *\n * @module theme/palette\n */\n\nimport type { ThemePalette, PaletteColor, ColorScale, ColorScaleWithChannels } from '../types/theme.js';\nimport {\n generatePaletteColorWithChannels,\n generateColorScaleWithChannels,\n hexToRgbChannel,\n lighten,\n darken,\n} from './utils/color.js';\n\n/**\n * Generate RGB channel string from hex color.\n *\n * @param hex - Hex color value\n * @returns RGB channel string (e.g., \"255 255 255\")\n */\nexport function generatePaletteChannel(hex: string): string {\n return hexToRgbChannel(hex);\n}\n\n/**\n * Generate a full palette color from a main color.\n * Uses HSL-based color math for perceptually correct shades.\n *\n * @param main - Main color hex value\n * @param contrastText - Contrast text color (default: white)\n * @returns Full palette color with all shades\n */\nexport function generatePaletteColor(main: string, contrastText = '#FFFFFF'): PaletteColor {\n // HSL lightness adjustments (percentage points)\n // These values produce visually balanced shade progressions\n return {\n lighter: lighten(main, 32), // +32 lightness points (very light, ~85-95% L)\n light: lighten(main, 16), // +16 lightness points (light, ~65-75% L)\n main, // Base color (typically ~45-55% L)\n dark: darken(main, 12), // -12 lightness points (dark, ~35-45% L)\n darker: darken(main, 28), // -28 lightness points (very dark, ~20-30% L)\n contrastText,\n };\n}\n\n/**\n * Apply primary color override to a palette.\n *\n * @param palette - Base palette\n * @param primaryColor - New primary color\n * @param mode - Theme mode (light/dark)\n * @returns Updated palette with new primary color\n */\nexport function applyPrimaryOverride(\n palette: ThemePalette,\n primaryColor: string,\n mode: 'light' | 'dark' = 'light'\n): ThemePalette {\n const contrastText = mode === 'dark' ? '#FFFFFF' : '#FFFFFF';\n const basePrimary = generatePaletteColor(primaryColor, contrastText);\n const newPrimary = generatePaletteColorWithChannels(basePrimary);\n\n return {\n ...palette,\n primary: newPrimary,\n };\n}\n\n/**\n * Create grey palette.\n */\nexport function createGreyPalette(): ColorScaleWithChannels {\n const scale: ColorScale = {\n 50: '#FAFAFA',\n 100: '#F5F5F5',\n 200: '#EEEEEE',\n 300: '#E0E0E0',\n 400: '#BDBDBD',\n 500: '#9E9E9E',\n 600: '#757575',\n 700: '#616161',\n 800: '#424242',\n 900: '#212121',\n 950: '#121212',\n };\n return generateColorScaleWithChannels(scale);\n}\n\n/**\n * Create dark mode grey palette.\n */\nexport function createDarkGreyPalette(): ColorScaleWithChannels {\n const scale: ColorScale = {\n 50: '#1A1A1A',\n 100: '#242424',\n 200: '#2E2E2E',\n 300: '#383838',\n 400: '#454545',\n 500: '#5C5C5C',\n 600: '#757575',\n 700: '#9E9E9E',\n 800: '#BDBDBD',\n 900: '#E0E0E0',\n 950: '#F5F5F5',\n };\n return generateColorScaleWithChannels(scale);\n}\n","/**\n * Default Theme Preset\n *\n * A neutral, modern theme suitable for most applications.\n *\n * @module theme/presets/default\n */\n\nimport type { ThemePresetDefinition, PresetPalette } from '../../types/theme.js';\n\n/**\n * Light mode palette.\n */\nconst lightPalette: PresetPalette = {\n primary: {\n lighter: '#C8FAD6',\n light: '#5BE49B',\n main: '#00A76F',\n dark: '#007867',\n darker: '#004B50',\n contrastText: '#FFFFFF',\n },\n secondary: {\n lighter: '#EFD6FF',\n light: '#C684FF',\n main: '#8E33FF',\n dark: '#5119B7',\n darker: '#27097A',\n contrastText: '#FFFFFF',\n },\n info: {\n lighter: '#CAFDF5',\n light: '#61F3F3',\n main: '#00B8D9',\n dark: '#006C9C',\n darker: '#003768',\n contrastText: '#FFFFFF',\n },\n success: {\n lighter: '#D3FCD2',\n light: '#77ED8B',\n main: '#22C55E',\n dark: '#118D57',\n darker: '#065E49',\n contrastText: '#FFFFFF',\n },\n warning: {\n lighter: '#FFF5CC',\n light: '#FFD666',\n main: '#FFAB00',\n dark: '#B76E00',\n darker: '#7A4100',\n contrastText: '#212121',\n },\n error: {\n lighter: '#FFE9D5',\n light: '#FFAC82',\n main: '#FF5630',\n dark: '#B71D18',\n darker: '#7A0916',\n contrastText: '#FFFFFF',\n },\n grey: {\n 50: '#FAFAFA',\n 100: '#F5F5F5',\n 200: '#EEEEEE',\n 300: '#E0E0E0',\n 400: '#BDBDBD',\n 500: '#9E9E9E',\n 600: '#757575',\n 700: '#616161',\n 800: '#424242',\n 900: '#212121',\n },\n common: {\n black: '#000000',\n white: '#FFFFFF',\n },\n background: {\n default: '#FFFFFF',\n paper: '#FFFFFF',\n neutral: '#F4F6F8',\n },\n text: {\n primary: '#212121',\n secondary: '#637381',\n disabled: '#919EAB',\n },\n};\n\n/**\n * Dark mode palette.\n */\nconst darkPalette: PresetPalette = {\n primary: {\n lighter: '#C8FAD6',\n light: '#5BE49B',\n main: '#00A76F',\n dark: '#007867',\n darker: '#004B50',\n contrastText: '#FFFFFF',\n },\n secondary: {\n lighter: '#EFD6FF',\n light: '#C684FF',\n main: '#8E33FF',\n dark: '#5119B7',\n darker: '#27097A',\n contrastText: '#FFFFFF',\n },\n info: {\n lighter: '#CAFDF5',\n light: '#61F3F3',\n main: '#00B8D9',\n dark: '#006C9C',\n darker: '#003768',\n contrastText: '#FFFFFF',\n },\n success: {\n lighter: '#D3FCD2',\n light: '#77ED8B',\n main: '#22C55E',\n dark: '#118D57',\n darker: '#065E49',\n contrastText: '#FFFFFF',\n },\n warning: {\n lighter: '#FFF5CC',\n light: '#FFD666',\n main: '#FFAB00',\n dark: '#B76E00',\n darker: '#7A4100',\n contrastText: '#212121',\n },\n error: {\n lighter: '#FFE9D5',\n light: '#FFAC82',\n main: '#FF5630',\n dark: '#B71D18',\n darker: '#7A0916',\n contrastText: '#FFFFFF',\n },\n grey: {\n 50: '#161C24',\n 100: '#212B36',\n 200: '#454F5B',\n 300: '#637381',\n 400: '#919EAB',\n 500: '#C4CDD5',\n 600: '#DFE3E8',\n 700: '#F4F6F8',\n 800: '#F9FAFB',\n 900: '#FFFFFF',\n },\n common: {\n black: '#000000',\n white: '#FFFFFF',\n },\n background: {\n default: '#161C24',\n paper: '#212B36',\n neutral: '#28323D',\n },\n text: {\n primary: '#FFFFFF',\n secondary: '#919EAB',\n disabled: '#637381',\n },\n};\n\n/**\n * Default theme preset.\n */\nexport const defaultPreset: ThemePresetDefinition = {\n name: 'default-light',\n displayName: 'Default',\n description: 'A neutral, modern theme suitable for most applications.',\n preferredMode: 'light',\n lightPalette,\n darkPalette,\n typography: {\n fontFamily: {\n primary: '\"Public Sans Variable\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\n secondary: '\"Barlow\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\n mono: '\"JetBrains Mono\", \"Fira Code\", Consolas, Monaco, monospace',\n },\n fontWeights: {\n light: 300,\n regular: 400,\n medium: 500,\n semiBold: 600,\n bold: 700,\n },\n },\n colorGroup: {\n key: 'default',\n main: '#00A76F',\n },\n};\n","/**\n * Luxury Theme Preset\n *\n * A rich, elegant theme with deep colors and premium feel.\n *\n * @module theme/presets/luxury\n */\n\nimport type { ThemePresetDefinition, PresetPalette } from '../../types/theme.js';\n\n/**\n * Light mode palette.\n */\nconst lightPalette: PresetPalette = {\n primary: {\n lighter: '#F5E6D3',\n light: '#D4A574',\n main: '#8B6914',\n dark: '#6B4F0F',\n darker: '#4A370A',\n contrastText: '#FFFFFF',\n },\n secondary: {\n lighter: '#E8D5E8',\n light: '#B38AB3',\n main: '#6B3A6B',\n dark: '#4D2A4D',\n darker: '#2F1A2F',\n contrastText: '#FFFFFF',\n },\n info: {\n lighter: '#D6E4F0',\n light: '#8BBED9',\n main: '#2E7AB8',\n dark: '#1F5A8A',\n darker: '#103A5C',\n contrastText: '#FFFFFF',\n },\n success: {\n lighter: '#D8EED3',\n light: '#8BC98A',\n main: '#2E8B2E',\n dark: '#1F6B1F',\n darker: '#104A10',\n contrastText: '#FFFFFF',\n },\n warning: {\n lighter: '#FFF3D6',\n light: '#FFD98B',\n main: '#D4A012',\n dark: '#A67A0E',\n darker: '#785509',\n contrastText: '#212121',\n },\n error: {\n lighter: '#F5D6D6',\n light: '#D98B8B',\n main: '#B82E2E',\n dark: '#8A1F1F',\n darker: '#5C1010',\n contrastText: '#FFFFFF',\n },\n grey: {\n 50: '#FAF9F7',\n 100: '#F5F3F0',\n 200: '#E8E4DE',\n 300: '#D4CEC4',\n 400: '#B8AFA0',\n 500: '#9C917C',\n 600: '#7A6F5C',\n 700: '#5C5244',\n 800: '#3E362C',\n 900: '#201C16',\n },\n common: {\n black: '#0D0A06',\n white: '#FFFCF7',\n },\n background: {\n default: '#FFFCF7',\n paper: '#FFFFFF',\n neutral: '#F5F3F0',\n },\n text: {\n primary: '#201C16',\n secondary: '#5C5244',\n disabled: '#9C917C',\n },\n};\n\n/**\n * Dark mode palette.\n */\nconst darkPalette: PresetPalette = {\n primary: {\n lighter: '#F5E6D3',\n light: '#D4A574',\n main: '#C9A227',\n dark: '#A68A1F',\n darker: '#846D18',\n contrastText: '#0D0A06',\n },\n secondary: {\n lighter: '#E8D5E8',\n light: '#B38AB3',\n main: '#9B5A9B',\n dark: '#7D4A7D',\n darker: '#5F3A5F',\n contrastText: '#FFFFFF',\n },\n info: {\n lighter: '#D6E4F0',\n light: '#8BBED9',\n main: '#4E9AD4',\n dark: '#3A7AB0',\n darker: '#265A8C',\n contrastText: '#FFFFFF',\n },\n success: {\n lighter: '#D8EED3',\n light: '#8BC98A',\n main: '#4EAB4E',\n dark: '#3A8B3A',\n darker: '#266B26',\n contrastText: '#FFFFFF',\n },\n warning: {\n lighter: '#FFF3D6',\n light: '#FFD98B',\n main: '#E8B612',\n dark: '#C49A0E',\n darker: '#A07E0A',\n contrastText: '#0D0A06',\n },\n error: {\n lighter: '#F5D6D6',\n light: '#D98B8B',\n main: '#D44E4E',\n dark: '#B03A3A',\n darker: '#8C2626',\n contrastText: '#FFFFFF',\n },\n grey: {\n 50: '#18140E',\n 100: '#241E16',\n 200: '#362E22',\n 300: '#4A402E',\n 400: '#5E523A',\n 500: '#7A6F5C',\n 600: '#9C917C',\n 700: '#B8AFA0',\n 800: '#D4CEC4',\n 900: '#E8E4DE',\n },\n common: {\n black: '#0D0A06',\n white: '#FFFCF7',\n },\n background: {\n default: '#0D0A06',\n paper: '#18140E',\n neutral: '#241E16',\n },\n text: {\n primary: '#E8E4DE',\n secondary: '#B8AFA0',\n disabled: '#7A6F5C',\n },\n};\n\n/**\n * Luxury theme preset.\n */\nexport const luxuryPreset: ThemePresetDefinition = {\n name: 'luxury',\n displayName: 'Luxury',\n description: 'A rich, elegant theme with deep colors and premium feel.',\n preferredMode: 'light',\n lightPalette,\n darkPalette,\n typography: {\n fontFamily: {\n primary: '\"Playfair Display\", Georgia, \"Times New Roman\", serif',\n secondary: '\"Lato\", -apple-system, BlinkMacSystemFont, sans-serif',\n mono: '\"JetBrains Mono\", Consolas, Monaco, monospace',\n },\n fontWeights: {\n light: 300,\n regular: 400,\n medium: 500,\n semiBold: 600,\n bold: 700,\n },\n },\n colorGroup: {\n key: 'luxury',\n main: '#8B6914',\n },\n};\n","/**\n * Nature Theme Preset\n *\n * An earthy, organic theme with warm greens and natural tones.\n *\n * @module theme/presets/nature\n */\n\nimport type { ThemePresetDefinition } from '../../types/theme.js';\nimport { green } from '../colors/base.js';\n\n/**\n * Nature theme preset.\n * Optimized for light mode with earthy green tones.\n */\nexport const naturePreset: ThemePresetDefinition = {\n name: 'nature',\n displayName: 'Nature',\n description: 'An earthy, organic theme with warm greens and natural tones.',\n preferredMode: 'light',\n typography: {\n fontFamily: {\n primary: '\"Nunito\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\n secondary: '\"Merriweather\", Georgia, serif',\n mono: '\"JetBrains Mono\", Consolas, Monaco, monospace',\n },\n fontWeights: {\n light: 300,\n regular: 400,\n medium: 500,\n semiBold: 600,\n bold: 700,\n },\n },\n colorGroup: {\n key: 'nature',\n main: green[500],\n palette: green,\n },\n};\n","/**\n * Theme Presets Index\n *\n * @module theme/presets\n */\n\nimport type { ThemePreset, ThemePresetDefinition } from '../../types/theme.js';\nimport { defaultPreset } from './default.js';\nimport { luxuryPreset } from './luxury.js';\nimport { arcticPreset } from './arctic.js';\nimport { naturePreset } from './nature.js';\nimport { emberPreset } from './ember.js';\nimport { draculaPreset } from './dracula.js';\nimport { midnightPreset } from './midnight.js';\nimport { retroPreset } from './retro.js';\nimport { minimalPreset } from './minimal.js';\n\n/**\n * All available preset names.\n */\nexport const presetNames: ThemePreset[] = [\n 'default-light',\n 'default-dark',\n 'luxury',\n 'arctic',\n 'nature',\n 'ember',\n 'dracula',\n 'midnight',\n 'retro',\n 'minimal',\n];\n\n/**\n * Preset registry.\n */\nconst presets: Record<string, ThemePresetDefinition> = {\n 'default-light': defaultPreset,\n 'default-dark': defaultPreset, // Uses same preset but different preferred mode\n luxury: luxuryPreset,\n arctic: arcticPreset,\n nature: naturePreset,\n ember: emberPreset,\n dracula: draculaPreset,\n midnight: midnightPreset,\n retro: retroPreset,\n minimal: minimalPreset,\n};\n\n/**\n * Get a theme preset by name.\n *\n * @param name - Preset name\n * @returns Theme preset definition\n * @throws If preset is not found\n */\nexport function getPreset(name: ThemePreset): ThemePresetDefinition {\n const preset = presets[name];\n\n if (!preset) {\n console.warn(`Preset \"${name}\" not found, falling back to \"default-light\"`);\n return defaultPreset;\n }\n\n return preset;\n}\n\n/**\n * Register a custom preset.\n *\n * @param name - Preset name\n * @param preset - Preset definition\n */\nexport function registerPreset(name: string, preset: ThemePresetDefinition): void {\n presets[name] = preset;\n}\n\n/**\n * Get all registered presets.\n */\nexport function getAllPresets(): Record<string, ThemePresetDefinition> {\n return { ...presets };\n}\n\n// Re-export presets\nexport { defaultPreset } from './default.js';\nexport { luxuryPreset } from './luxury.js';\nexport { arcticPreset } from './arctic.js';\nexport { naturePreset } from './nature.js';\nexport { emberPreset } from './ember.js';\nexport { draculaPreset } from './dracula.js';\nexport { midnightPreset } from './midnight.js';\nexport { retroPreset } from './retro.js';\nexport { minimalPreset } from './minimal.js';\n","/**\n * CSS Variables System\n *\n * Utilities for generating and managing CSS variables.\n *\n * @module theme/css-variables\n */\n\nimport type { PrismTheme, CssVariablesConfig } from '../types/theme.js';\nimport { generatePaletteChannel } from './palette.js';\n\n/**\n * CSS variable definitions.\n * Uses an index signature since keys are dynamically generated based on prefix.\n */\nexport interface CssVariables {\n [key: string]: string;\n}\n\n/**\n * Default CSS variable values.\n */\nexport const cssVariables: CssVariables = {\n '--prism-background': '#FFFFFF',\n '--prism-foreground': '#212121',\n '--prism-card': '#FFFFFF',\n '--prism-card-foreground': '#212121',\n '--prism-popover': '#FFFFFF',\n '--prism-popover-foreground': '#212121',\n\n '--prism-primary': '#00A76F',\n '--prism-primary-foreground': '#FFFFFF',\n '--prism-primary-lighter': '#C8FAD6',\n '--prism-primary-light': '#5BE49B',\n '--prism-primary-dark': '#007867',\n '--prism-primary-darker': '#004B50',\n\n '--prism-secondary': '#8E33FF',\n '--prism-secondary-foreground': '#FFFFFF',\n\n '--prism-muted': '#F4F6F8',\n '--prism-muted-foreground': '#637381',\n '--prism-accent': '#F4F6F8',\n '--prism-accent-foreground': '#212121',\n '--prism-destructive': '#FF5630',\n '--prism-destructive-foreground': '#FFFFFF',\n\n '--prism-border': '#E0E0E0',\n '--prism-input': '#E0E0E0',\n '--prism-ring': '#00A76F',\n\n '--prism-radius': '0.5rem',\n\n '--prism-primary-channel': '0 167 111',\n '--prism-secondary-channel': '142 51 255',\n '--prism-background-channel': '255 255 255',\n};\n\n/**\n * Generate CSS variables from a Prism theme.\n *\n * @param theme - Prism theme\n * @param config - CSS variables configuration\n * @returns CSS variables object\n */\nexport function generateCssVariables(theme: PrismTheme, config: CssVariablesConfig): CssVariables {\n const { prefix } = config;\n const { palette } = theme;\n\n const vars: CssVariables = {\n [`--${prefix}-background`]: palette.background.default,\n [`--${prefix}-foreground`]: palette.text.primary,\n [`--${prefix}-card`]: palette.background.paper,\n [`--${prefix}-card-foreground`]: palette.text.primary,\n [`--${prefix}-popover`]: palette.background.paper,\n [`--${prefix}-popover-foreground`]: palette.text.primary,\n\n [`--${prefix}-primary`]: palette.primary.main,\n [`--${prefix}-primary-foreground`]: palette.primary.contrastText,\n [`--${prefix}-primary-lighter`]:\n (palette.primary as unknown as { lighter?: string }).lighter || palette.primary.light,\n [`--${prefix}-primary-light`]: palette.primary.light,\n [`--${prefix}-primary-dark`]: palette.primary.dark,\n [`--${prefix}-primary-darker`]: (palette.primary as unknown as { darker?: string }).darker || palette.primary.dark,\n\n [`--${prefix}-secondary`]: palette.secondary.main,\n [`--${prefix}-secondary-foreground`]: palette.secondary.contrastText,\n\n [`--${prefix}-muted`]: palette.background.default,\n [`--${prefix}-muted-foreground`]: palette.text.secondary,\n [`--${prefix}-accent`]: palette.background.default,\n [`--${prefix}-accent-foreground`]: palette.text.primary,\n [`--${prefix}-destructive`]: palette.error.main,\n [`--${prefix}-destructive-foreground`]: palette.error.contrastText,\n\n [`--${prefix}-border`]: palette.divider || palette.grey[300],\n [`--${prefix}-input`]: palette.divider || palette.grey[300],\n [`--${prefix}-ring`]: palette.primary.main,\n\n [`--${prefix}-radius`]: `${theme.shape.borderRadius}px`,\n\n [`--${prefix}-primary-channel`]: generatePaletteChannel(palette.primary.main),\n [`--${prefix}-secondary-channel`]: generatePaletteChannel(palette.secondary.main),\n [`--${prefix}-background-channel`]: generatePaletteChannel(palette.background.default),\n };\n\n // Inject into document if in browser\n if (typeof document !== 'undefined') {\n injectCssVariables(vars, config);\n }\n\n return vars;\n}\n\n/**\n * Inject CSS variables into the document.\n *\n * @param vars - CSS variables object\n * @param config - CSS variables configuration\n */\nfunction injectCssVariables(vars: CssVariables, config: CssVariablesConfig): void {\n const root = document.documentElement;\n\n Object.entries(vars).forEach(([key, value]) => {\n root.style.setProperty(key, value);\n });\n}\n\n/**\n * Get computed CSS variable value.\n *\n * @param name - Variable name (with or without --)\n * @returns Computed value\n */\nexport function getCssVariable(name: string): string {\n if (typeof window === 'undefined') return '';\n\n const varName = name.startsWith('--') ? name : `--${name}`;\n return getComputedStyle(document.documentElement).getPropertyValue(varName).trim();\n}\n\n/**\n * Set CSS variable value.\n *\n * @param name - Variable name (with or without --)\n * @param value - New value\n */\nexport function setCssVariable(name: string, value: string): void {\n if (typeof document === 'undefined') return;\n\n const varName = name.startsWith('--') ? name : `--${name}`;\n document.documentElement.style.setProperty(varName, value);\n}\n"]}
@@ -0,0 +1,128 @@
1
+ import { Fragment } from 'react';
2
+ import Portal from '@mui/material/Portal';
3
+ import { styled } from '@mui/material/styles';
4
+ import LinearProgress from '@mui/material/LinearProgress';
5
+ import { jsx, jsxs } from 'react/jsx-runtime';
6
+ import Box from '@mui/material/Box';
7
+ import CircularProgress from '@mui/material/CircularProgress';
8
+ import Typography from '@mui/material/Typography';
9
+
10
+ // src/components/loading-screen/loading-screen.tsx
11
+ var LoadingContent = styled("div")(({ theme }) => ({
12
+ flexGrow: 1,
13
+ width: "100%",
14
+ display: "flex",
15
+ minHeight: "100%",
16
+ alignItems: "center",
17
+ justifyContent: "center",
18
+ paddingLeft: theme.spacing(5),
19
+ paddingRight: theme.spacing(5)
20
+ }));
21
+ function LoadingScreen({ portal, slots, slotProps, sx, ...other }) {
22
+ const Wrapper = portal ? Portal : Fragment;
23
+ return /* @__PURE__ */ jsx(Wrapper, { children: /* @__PURE__ */ jsx(LoadingContent, { sx, ...other, children: slots?.progress ?? /* @__PURE__ */ jsx(
24
+ LinearProgress,
25
+ {
26
+ color: "inherit",
27
+ sx: [
28
+ { width: 1, maxWidth: 360 },
29
+ ...Array.isArray(slotProps?.progress?.sx) ? slotProps.progress.sx : [slotProps?.progress?.sx]
30
+ ],
31
+ ...slotProps?.progress
32
+ }
33
+ ) }) });
34
+ }
35
+ var SplashContainer = styled(Box, {
36
+ shouldForwardProp: (prop) => prop !== "fullScreen"
37
+ })(({ theme, fullScreen }) => ({
38
+ display: "flex",
39
+ flexDirection: "column",
40
+ alignItems: "center",
41
+ justifyContent: "center",
42
+ gap: theme.spacing(2),
43
+ padding: theme.spacing(3),
44
+ ...fullScreen ? {
45
+ position: "fixed",
46
+ top: 0,
47
+ left: 0,
48
+ right: 0,
49
+ bottom: 0,
50
+ zIndex: theme.zIndex.modal + 1,
51
+ backgroundColor: theme.palette.background.default
52
+ } : {
53
+ flexGrow: 1,
54
+ width: "100%",
55
+ minHeight: 200
56
+ }
57
+ }));
58
+ function SplashScreen({
59
+ variant = "circular",
60
+ message,
61
+ indicator,
62
+ portal = false,
63
+ size = 48,
64
+ progress,
65
+ fullScreen = false,
66
+ sx
67
+ }) {
68
+ const Wrapper = portal ? Portal : Fragment;
69
+ const isDeterminate = progress !== void 0;
70
+ const renderIndicator = () => {
71
+ if (indicator) return indicator;
72
+ if (variant === "linear") {
73
+ return /* @__PURE__ */ jsx(
74
+ LinearProgress,
75
+ {
76
+ variant: isDeterminate ? "determinate" : "indeterminate",
77
+ value: progress,
78
+ color: "primary",
79
+ sx: { width: "100%", maxWidth: 360, borderRadius: 1 }
80
+ }
81
+ );
82
+ }
83
+ return /* @__PURE__ */ jsx(
84
+ CircularProgress,
85
+ {
86
+ variant: isDeterminate ? "determinate" : "indeterminate",
87
+ value: progress,
88
+ size,
89
+ thickness: 3,
90
+ color: "primary"
91
+ }
92
+ );
93
+ };
94
+ return /* @__PURE__ */ jsx(Wrapper, { children: /* @__PURE__ */ jsxs(SplashContainer, { fullScreen, sx, children: [
95
+ renderIndicator(),
96
+ message && /* @__PURE__ */ jsx(
97
+ Typography,
98
+ {
99
+ variant: "body2",
100
+ sx: {
101
+ color: "text.secondary",
102
+ mt: 1,
103
+ textAlign: "center"
104
+ },
105
+ children: message
106
+ }
107
+ ),
108
+ isDeterminate && /* @__PURE__ */ jsxs(Typography, { variant: "caption", sx: {
109
+ color: "text.disabled"
110
+ }, children: [
111
+ Math.round(progress),
112
+ "%"
113
+ ] })
114
+ ] }) });
115
+ }
116
+ var sizeMap = {
117
+ small: 20,
118
+ medium: 32,
119
+ large: 48
120
+ };
121
+ function Spinner({ size = "medium", color = "primary", sx }) {
122
+ const computedSize = typeof size === "number" ? size : sizeMap[size];
123
+ return /* @__PURE__ */ jsx(CircularProgress, { size: computedSize, color, thickness: 3.5, sx });
124
+ }
125
+
126
+ export { LoadingScreen, Spinner, SplashScreen };
127
+ //# sourceMappingURL=chunk-AKLRKCYH.js.map
128
+ //# sourceMappingURL=chunk-AKLRKCYH.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/loading-screen/loading-screen.tsx","../src/components/loading-screen/splash-screen.tsx"],"names":["styled","Portal","Fragment","jsx","LinearProgress"],"mappings":"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","file":"chunk-AKLRKCYH.js","sourcesContent":["'use client';\n\n/**\n * Loading Screen Component\n *\n * Lightweight content loading indicator with centered LinearProgress.\n * Use for lazy-loaded route content within layouts.\n *\n * @module components/loading-screen\n */\n\nimport type { ReactNode } from 'react';\nimport { Fragment } from 'react';\nimport Portal from '@mui/material/Portal';\nimport { styled } from '@mui/material/styles';\nimport LinearProgress from '@mui/material/LinearProgress';\nimport type { LinearProgressProps } from '@mui/material/LinearProgress';\nimport type { SxProps, Theme } from '@mui/material/styles';\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\nexport interface LoadingScreenProps extends React.ComponentProps<'div'> {\n /** Render in a portal */\n portal?: boolean;\n /** Additional styles */\n sx?: SxProps<Theme>;\n /** Slot overrides */\n slots?: {\n progress?: ReactNode;\n };\n /** Slot props */\n slotProps?: {\n progress?: LinearProgressProps;\n };\n}\n\n// =============================================================================\n// STYLED COMPONENTS\n// =============================================================================\n\nconst LoadingContent = styled('div')(({ theme }) => ({\n flexGrow: 1,\n width: '100%',\n display: 'flex',\n minHeight: '100%',\n alignItems: 'center',\n justifyContent: 'center',\n paddingLeft: theme.spacing(5),\n paddingRight: theme.spacing(5),\n}));\n\n// =============================================================================\n// COMPONENT\n// =============================================================================\n\n/**\n * LoadingScreen - Lightweight content loading indicator.\n *\n * @example\n * ```tsx\n * <Suspense fallback={<LoadingScreen />}>\n * <Outlet />\n * </Suspense>\n * ```\n */\nexport function LoadingScreen({ portal, slots, slotProps, sx, ...other }: LoadingScreenProps): ReactNode {\n const Wrapper = portal ? Portal : Fragment;\n\n return (\n <Wrapper>\n <LoadingContent sx={sx} {...other}>\n {slots?.progress ?? (\n <LinearProgress\n color=\"inherit\"\n sx={[\n { width: 1, maxWidth: 360 },\n ...(Array.isArray(slotProps?.progress?.sx) ? slotProps.progress.sx : [slotProps?.progress?.sx]),\n ]}\n {...slotProps?.progress}\n />\n )}\n </LoadingContent>\n </Wrapper>\n );\n}\n","'use client';\n\n/**\n * Splash Screen Component\n *\n * Full-screen or contained loading states with customizable indicators.\n * Use for app-level loading (initial boot, auth checks).\n *\n * @module components/loading-screen\n */\n\nimport type { ReactNode } from 'react';\nimport { Fragment } from 'react';\nimport Box from '@mui/material/Box';\nimport Portal from '@mui/material/Portal';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport LinearProgress from '@mui/material/LinearProgress';\nimport Typography from '@mui/material/Typography';\nimport { styled } from '@mui/material/styles';\nimport type { SxProps, Theme } from '@mui/material/styles';\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\nexport interface SplashScreenProps {\n /** Loading indicator variant */\n variant?: 'circular' | 'linear';\n /** Loading message */\n message?: string;\n /** Custom loading indicator */\n indicator?: ReactNode;\n /** Render in a portal (useful for overlays) */\n portal?: boolean;\n /** Size of circular indicator */\n size?: number;\n /** Progress value (0-100) for determinate mode */\n progress?: number;\n /** Full screen overlay mode */\n fullScreen?: boolean;\n /** Additional styles */\n sx?: SxProps<Theme>;\n}\n\n// =============================================================================\n// STYLED COMPONENTS\n// =============================================================================\n\nconst SplashContainer = styled(Box, {\n shouldForwardProp: (prop) => prop !== 'fullScreen',\n})<{ fullScreen?: boolean }>(({ theme, fullScreen }) => ({\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n gap: theme.spacing(2),\n padding: theme.spacing(3),\n ...(fullScreen\n ? {\n position: 'fixed',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n zIndex: theme.zIndex.modal + 1,\n backgroundColor: theme.palette.background.default,\n }\n : {\n flexGrow: 1,\n width: '100%',\n minHeight: 200,\n }),\n}));\n\n// =============================================================================\n// COMPONENT\n// =============================================================================\n\n/**\n * SplashScreen - Full-screen or contained loading indicator.\n *\n * @example\n * ```tsx\n * // Simple splash\n * <SplashScreen />\n * ```\n *\n * @example\n * ```tsx\n * // With message\n * <SplashScreen message=\"Loading data...\" />\n * ```\n *\n * @example\n * ```tsx\n * // Determinate progress\n * <SplashScreen\n * variant=\"linear\"\n * progress={65}\n * message=\"Uploading files...\"\n * />\n * ```\n *\n * @example\n * ```tsx\n * // Full screen overlay\n * <SplashScreen fullScreen portal />\n * ```\n */\nexport function SplashScreen({\n variant = 'circular',\n message,\n indicator,\n portal = false,\n size = 48,\n progress,\n fullScreen = false,\n sx,\n}: SplashScreenProps): ReactNode {\n const Wrapper = portal ? Portal : Fragment;\n const isDeterminate = progress !== undefined;\n\n const renderIndicator = () => {\n if (indicator) return indicator;\n\n if (variant === 'linear') {\n return (\n <LinearProgress\n variant={isDeterminate ? 'determinate' : 'indeterminate'}\n value={progress}\n color=\"primary\"\n sx={{ width: '100%', maxWidth: 360, borderRadius: 1 }}\n />\n );\n }\n\n return (\n <CircularProgress\n variant={isDeterminate ? 'determinate' : 'indeterminate'}\n value={progress}\n size={size}\n thickness={3}\n color=\"primary\"\n />\n );\n };\n\n return (\n <Wrapper>\n <SplashContainer fullScreen={fullScreen} sx={sx}>\n {renderIndicator()}\n\n {message && (\n <Typography\n variant=\"body2\"\n sx={{\n color: \"text.secondary\",\n mt: 1,\n textAlign: 'center'\n }}>\n {message}\n </Typography>\n )}\n\n {isDeterminate && (\n <Typography variant=\"caption\" sx={{\n color: \"text.disabled\"\n }}>\n {Math.round(progress)}%\n </Typography>\n )}\n </SplashContainer>\n </Wrapper>\n );\n}\n\n// =============================================================================\n// SPINNER COMPONENT\n// =============================================================================\n\nexport interface SpinnerProps {\n /** Size of the spinner */\n size?: 'small' | 'medium' | 'large' | number;\n /** Color */\n color?: 'primary' | 'secondary' | 'inherit';\n /** Additional styles */\n sx?: SxProps<Theme>;\n}\n\nconst sizeMap = {\n small: 20,\n medium: 32,\n large: 48,\n};\n\n/**\n * Spinner - Simple spinning indicator.\n *\n * @example\n * ```tsx\n * <Button disabled={loading}>\n * {loading ? <Spinner size=\"small\" /> : 'Submit'}\n * </Button>\n * ```\n */\nexport function Spinner({ size = 'medium', color = 'primary', sx }: SpinnerProps): ReactNode {\n const computedSize = typeof size === 'number' ? size : sizeMap[size];\n\n return <CircularProgress size={computedSize} color={color} thickness={3.5} sx={sx} />;\n}\n"]}
@@ -0,0 +1,133 @@
1
+ import { CloseIcon, SearchIcon } from './chunk-VQVVHMPG.js';
2
+ import { useState, useRef, useEffect } from 'react';
3
+ import InputBase from '@mui/material/InputBase';
4
+ import InputAdornment from '@mui/material/InputAdornment';
5
+ import Tooltip from '@mui/material/Tooltip';
6
+ import Box from '@mui/material/Box';
7
+ import { useTheme, alpha } from '@mui/material/styles';
8
+ import { jsx } from 'react/jsx-runtime';
9
+
10
+ function SearchIcon2({ size = 18 }) {
11
+ return /* @__PURE__ */ jsx(SearchIcon, { sx: { fontSize: size } });
12
+ }
13
+ function ClearIcon() {
14
+ return /* @__PURE__ */ jsx(CloseIcon, { sx: { fontSize: 16 } });
15
+ }
16
+ function SearchInput({
17
+ value: controlledValue,
18
+ onChange,
19
+ placeholder = "Search...",
20
+ "aria-label": ariaLabel,
21
+ debounce = 0,
22
+ compact = false,
23
+ fullWidth = true,
24
+ width,
25
+ minWidth,
26
+ clearTooltip = "Clear",
27
+ autoFocus,
28
+ onFocus,
29
+ onBlur,
30
+ onKeyDown,
31
+ sx,
32
+ ref
33
+ }) {
34
+ const theme = useTheme();
35
+ const [localValue, setLocalValue] = useState(controlledValue ?? "");
36
+ const timerRef = useRef(void 0);
37
+ useEffect(() => {
38
+ if (controlledValue !== void 0) {
39
+ clearTimeout(timerRef.current);
40
+ setLocalValue(controlledValue);
41
+ }
42
+ }, [controlledValue]);
43
+ const displayValue = controlledValue !== void 0 && debounce === 0 ? controlledValue : localValue;
44
+ const handleChange = (e) => {
45
+ const val = e.target.value;
46
+ setLocalValue(val);
47
+ if (debounce > 0) {
48
+ clearTimeout(timerRef.current);
49
+ timerRef.current = setTimeout(() => onChange?.(val), debounce);
50
+ } else {
51
+ onChange?.(val);
52
+ }
53
+ };
54
+ const handleClear = () => {
55
+ setLocalValue("");
56
+ clearTimeout(timerRef.current);
57
+ onChange?.("");
58
+ };
59
+ useEffect(() => () => clearTimeout(timerRef.current), []);
60
+ const py = compact ? 0.625 : 0.75;
61
+ const px = compact ? 1.25 : 1.5;
62
+ const inputPy = compact ? "3px" : "4px";
63
+ return /* @__PURE__ */ jsx(
64
+ InputBase,
65
+ {
66
+ "data-keyboard-search": true,
67
+ ref,
68
+ fullWidth,
69
+ placeholder,
70
+ inputProps: { "aria-label": ariaLabel ?? placeholder },
71
+ value: displayValue,
72
+ onChange: handleChange,
73
+ autoFocus,
74
+ onFocus,
75
+ onBlur,
76
+ onKeyDown,
77
+ startAdornment: /* @__PURE__ */ jsx(InputAdornment, { position: "start", sx: { color: "text.disabled", mr: compact ? 0.75 : 1 }, children: /* @__PURE__ */ jsx(SearchIcon2, { size: compact ? 16 : 18 }) }),
78
+ endAdornment: displayValue ? /* @__PURE__ */ jsx(InputAdornment, { position: "end", children: /* @__PURE__ */ jsx(Tooltip, { title: clearTooltip, children: /* @__PURE__ */ jsx(
79
+ Box,
80
+ {
81
+ component: "button",
82
+ type: "button",
83
+ "aria-label": clearTooltip,
84
+ onClick: handleClear,
85
+ sx: {
86
+ p: 0.25,
87
+ border: "none",
88
+ background: "none",
89
+ cursor: "pointer",
90
+ color: "text.disabled",
91
+ display: "flex",
92
+ alignItems: "center",
93
+ borderRadius: "50%",
94
+ "&:hover": { color: "text.secondary" }
95
+ },
96
+ children: /* @__PURE__ */ jsx(ClearIcon, {})
97
+ }
98
+ ) }) }) : null,
99
+ sx: {
100
+ px,
101
+ py,
102
+ borderRadius: 1,
103
+ fontSize: "0.875rem",
104
+ bgcolor: alpha(theme.palette.grey[500], 0.08),
105
+ transition: theme.transitions.create(["background-color"], {
106
+ duration: theme.transitions.duration.shorter
107
+ }),
108
+ "&:hover": {
109
+ bgcolor: alpha(theme.palette.grey[500], 0.12)
110
+ },
111
+ "&.Mui-focused": {
112
+ bgcolor: alpha(theme.palette.grey[500], 0.16)
113
+ },
114
+ "& .MuiInputBase-input": {
115
+ py: inputPy,
116
+ px: 0,
117
+ overflow: "visible",
118
+ "&::placeholder": {
119
+ opacity: 0.64
120
+ }
121
+ },
122
+ ...width != null && { width },
123
+ ...minWidth != null && { minWidth },
124
+ ...!fullWidth && { width: width ?? "auto" },
125
+ ...Array.isArray(sx) ? Object.assign({}, ...sx) : sx
126
+ }
127
+ }
128
+ );
129
+ }
130
+
131
+ export { SearchInput };
132
+ //# sourceMappingURL=chunk-CT46KJOR.js.map
133
+ //# sourceMappingURL=chunk-CT46KJOR.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/search-input/search-input.tsx"],"names":["SearchIcon"],"mappings":"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","file":"chunk-CT46KJOR.js","sourcesContent":["import { SearchIcon as SearchGlyph, CloseIcon } from '../../icons/controls.js';\n/**\n * SearchInput — Unified search field for the entire platform.\n *\n * Features:\n * - Consistent styling (filled appearance, no outline notch issues)\n * - Built-in search icon (left) and clear button (right)\n * - Optional debounce for expensive filters\n * - Compact mode for sidebars (smaller padding)\n * - Works standalone or controlled\n */\n\nimport { useState, useEffect, useRef, type ChangeEvent, type ReactNode } from 'react';\nimport type { Ref } from 'react';\nimport InputBase from '@mui/material/InputBase';\nimport InputAdornment from '@mui/material/InputAdornment';\nimport Tooltip from '@mui/material/Tooltip';\nimport Box from '@mui/material/Box';\nimport { alpha, useTheme, type SxProps, type Theme } from '@mui/material/styles';\n\n// ---------------------------------------------------------------------------\n// Icons (inline SVG — no external dependency)\n// ---------------------------------------------------------------------------\n\nfunction SearchIcon({ size = 18 }: { size?: number }): ReactNode {\n return <SearchGlyph sx={{ fontSize: size }} />;\n}\n\nfunction ClearIcon(): ReactNode {\n return <CloseIcon sx={{ fontSize: 16 }} />;\n}\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\nexport interface SearchInputProps {\n /** Current value (controlled). */\n value?: string;\n /** Change handler. Receives the raw string (or debounced string if `debounce` > 0). */\n onChange?: (value: string) => void;\n /** Accessible name; defaults to the placeholder. */\n 'aria-label'?: string;\n /** Placeholder text. */\n placeholder?: string;\n /** Debounce delay in ms. 0 = no debounce (default). */\n debounce?: number;\n /** Compact mode — smaller padding, for sidebars and tight spaces. */\n compact?: boolean;\n /** Full width. Default true. */\n fullWidth?: boolean;\n /** Fixed or min width. */\n width?: number | string;\n /** Min width. */\n minWidth?: number | string;\n /** Clear button tooltip text. */\n clearTooltip?: string;\n /** Autofocus on mount. */\n autoFocus?: boolean;\n /** Focus handler. */\n onFocus?: () => void;\n /** Blur handler. */\n onBlur?: () => void;\n /** Keyboard handler. */\n onKeyDown?: (e: React.KeyboardEvent<HTMLInputElement>) => void;\n /** Custom sx overrides. */\n sx?: SxProps<Theme>;\n}\n\n// ---------------------------------------------------------------------------\n// Component\n// ---------------------------------------------------------------------------\n\nexport function SearchInput({\n value: controlledValue,\n onChange,\n placeholder = 'Search...',\n 'aria-label': ariaLabel,\n debounce = 0,\n compact = false,\n fullWidth = true,\n width,\n minWidth,\n clearTooltip = 'Clear',\n autoFocus,\n onFocus,\n onBlur,\n onKeyDown,\n sx,\n ref,\n}: SearchInputProps & { ref?: Ref<HTMLInputElement> }) {\n const theme = useTheme();\n\n // Internal state for debounced mode or uncontrolled usage\n const [localValue, setLocalValue] = useState(controlledValue ?? '');\n const timerRef = useRef<ReturnType<typeof setTimeout>>(undefined);\n\n // Sync internal state when controlled value changes externally\n useEffect(() => {\n if (controlledValue !== undefined) {\n clearTimeout(timerRef.current);\n setLocalValue(controlledValue);\n }\n }, [controlledValue]);\n\n const displayValue = controlledValue !== undefined && debounce === 0 ? controlledValue : localValue;\n\n const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n const val = e.target.value;\n setLocalValue(val);\n\n if (debounce > 0) {\n clearTimeout(timerRef.current);\n timerRef.current = setTimeout(() => onChange?.(val), debounce);\n } else {\n onChange?.(val);\n }\n };\n\n const handleClear = () => {\n setLocalValue('');\n clearTimeout(timerRef.current);\n onChange?.('');\n };\n\n // Cleanup timer\n useEffect(() => () => clearTimeout(timerRef.current), []);\n\n const py = compact ? 0.625 : 0.75;\n const px = compact ? 1.25 : 1.5;\n const inputPy = compact ? '3px' : '4px';\n\n return (\n <InputBase\n data-keyboard-search\n ref={ref}\n fullWidth={fullWidth}\n placeholder={placeholder}\n inputProps={{ 'aria-label': ariaLabel ?? placeholder }}\n value={displayValue}\n onChange={handleChange}\n autoFocus={autoFocus}\n onFocus={onFocus}\n onBlur={onBlur}\n onKeyDown={onKeyDown}\n startAdornment={\n <InputAdornment position=\"start\" sx={{ color: 'text.disabled', mr: compact ? 0.75 : 1 }}>\n <SearchIcon size={compact ? 16 : 18} />\n </InputAdornment>\n }\n endAdornment={\n displayValue ? (\n <InputAdornment position=\"end\">\n <Tooltip title={clearTooltip}>\n <Box\n component=\"button\"\n type=\"button\"\n aria-label={clearTooltip}\n onClick={handleClear}\n sx={{\n p: 0.25,\n border: 'none',\n background: 'none',\n cursor: 'pointer',\n color: 'text.disabled',\n display: 'flex',\n alignItems: 'center',\n borderRadius: '50%',\n '&:hover': { color: 'text.secondary' },\n }}\n >\n <ClearIcon />\n </Box>\n </Tooltip>\n </InputAdornment>\n ) : null\n }\n sx={{\n px,\n py,\n borderRadius: 1,\n fontSize: '0.875rem',\n bgcolor: alpha(theme.palette.grey[500], 0.08),\n transition: theme.transitions.create(['background-color'], {\n duration: theme.transitions.duration.shorter,\n }),\n '&:hover': {\n bgcolor: alpha(theme.palette.grey[500], 0.12),\n },\n '&.Mui-focused': {\n bgcolor: alpha(theme.palette.grey[500], 0.16),\n },\n '& .MuiInputBase-input': {\n py: inputPy,\n px: 0,\n overflow: 'visible',\n '&::placeholder': {\n opacity: 0.64,\n },\n },\n ...(width != null && { width }),\n ...(minWidth != null && { minWidth }),\n ...(!fullWidth && { width: width ?? 'auto' }),\n ...(Array.isArray(sx) ? Object.assign({}, ...sx) : sx),\n }}\n />\n );\n}\n"]}