@omnitron-dev/prism 0.3.1 → 0.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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
@@ -0,0 +1,447 @@
1
+ import { createClasses } from './chunk-LH4ZZZYB.js';
2
+ import { lazy, useState, useEffect, Suspense } from 'react';
3
+ import { styled, useTheme } from '@mui/material/styles';
4
+ import { clsx } from 'clsx';
5
+ import Box from '@mui/material/Box';
6
+ import Skeleton from '@mui/material/Skeleton';
7
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
8
+ import useMediaQuery from '@mui/material/useMediaQuery';
9
+
10
+ function cn(...inputs) {
11
+ return clsx(inputs);
12
+ }
13
+ function mergeClasses(className, state) {
14
+ const classList = className ? Array.isArray(className) ? className.filter(Boolean) : [className] : [];
15
+ if (!state) {
16
+ return classList.join(" ");
17
+ }
18
+ const stateClasses = Object.entries(state).filter(([, value]) => value !== void 0 && value !== false).map(([key, value]) => {
19
+ if (Array.isArray(value)) {
20
+ return value[0] ? value[1] : "";
21
+ }
22
+ return value ? key : "";
23
+ }).filter(Boolean);
24
+ return [...classList, ...stateClasses].join(" ");
25
+ }
26
+
27
+ // src/components/chart/classes.ts
28
+ var chartClasses = {
29
+ root: createClasses("chart__root"),
30
+ loading: createClasses("chart__loading"),
31
+ legends: {
32
+ root: createClasses("chart__legends__root"),
33
+ item: {
34
+ wrap: createClasses("chart__legends__item__wrap"),
35
+ root: createClasses("chart__legends__item__root"),
36
+ dot: createClasses("chart__legends__item__dot"),
37
+ icon: createClasses("chart__legends__item__icon"),
38
+ label: createClasses("chart__legends__item__label"),
39
+ value: createClasses("chart__legends__item__value")
40
+ }
41
+ }
42
+ };
43
+ var CIRCULAR_TYPES = ["donut", "radialBar", "pie", "polarArea"];
44
+ function ChartLoading({ sx, className, type, ...other }) {
45
+ const isCircular = type && CIRCULAR_TYPES.includes(type);
46
+ return /* @__PURE__ */ jsx(
47
+ Box,
48
+ {
49
+ className: cn(chartClasses.loading, className),
50
+ sx: [
51
+ {
52
+ top: 0,
53
+ left: 0,
54
+ width: 1,
55
+ zIndex: 9,
56
+ height: 1,
57
+ p: "inherit",
58
+ overflow: "hidden",
59
+ alignItems: "center",
60
+ position: "absolute",
61
+ borderRadius: "inherit",
62
+ justifyContent: "center",
63
+ display: "flex"
64
+ },
65
+ ...Array.isArray(sx) ? sx : [sx]
66
+ ],
67
+ ...other,
68
+ children: /* @__PURE__ */ jsx(
69
+ Skeleton,
70
+ {
71
+ variant: "circular",
72
+ sx: {
73
+ width: 1,
74
+ height: 1,
75
+ borderRadius: "inherit",
76
+ ...isCircular && { borderRadius: "50%" }
77
+ }
78
+ }
79
+ )
80
+ }
81
+ );
82
+ }
83
+ function ChartLegends({
84
+ sx,
85
+ className,
86
+ slotProps,
87
+ icons = [],
88
+ values = [],
89
+ labels = [],
90
+ colors = [],
91
+ sublabels = [],
92
+ ...other
93
+ }) {
94
+ return /* @__PURE__ */ jsx(ListRoot, { className: cn(chartClasses.legends.root, className), sx, ...other, children: labels.map((series, index) => /* @__PURE__ */ jsxs(
95
+ ItemWrap,
96
+ {
97
+ className: chartClasses.legends.item.wrap,
98
+ sx: [
99
+ {
100
+ "--icon-color": colors[index]
101
+ },
102
+ ...Array.isArray(slotProps?.wrapper?.sx) ? slotProps.wrapper.sx : [slotProps?.wrapper?.sx]
103
+ ],
104
+ ...slotProps?.wrapper,
105
+ children: [
106
+ /* @__PURE__ */ jsxs(ItemRoot, { className: chartClasses.legends.item.root, ...slotProps?.root, children: [
107
+ icons.length ? /* @__PURE__ */ jsx(ItemIcon, { className: chartClasses.legends.item.icon, ...slotProps?.icon, children: icons[index] }) : /* @__PURE__ */ jsx(ItemDot, { className: chartClasses.legends.item.dot, ...slotProps?.dot }),
108
+ /* @__PURE__ */ jsxs(ItemLabel, { className: chartClasses.legends.item.label, ...slotProps?.label, children: [
109
+ series,
110
+ !!sublabels.length && /* @__PURE__ */ jsxs(Fragment, { children: [
111
+ " ",
112
+ ` (${sublabels[index]})`
113
+ ] })
114
+ ] })
115
+ ] }),
116
+ values.length > 0 && /* @__PURE__ */ jsx(ItemValue, { className: chartClasses.legends.item.value, ...slotProps?.value, children: values[index] })
117
+ ]
118
+ },
119
+ series
120
+ )) });
121
+ }
122
+ var ListRoot = styled("ul")(({ theme }) => ({
123
+ display: "flex",
124
+ flexWrap: "wrap",
125
+ gap: theme.spacing(2),
126
+ margin: 0,
127
+ padding: 0,
128
+ listStyle: "none"
129
+ }));
130
+ var ItemWrap = styled("li")({
131
+ minWidth: 0,
132
+ maxWidth: "100%",
133
+ display: "inline-flex",
134
+ flexDirection: "column"
135
+ });
136
+ var ItemRoot = styled("div")(({ theme }) => ({
137
+ gap: 6,
138
+ alignItems: "center",
139
+ display: "inline-flex",
140
+ justifyContent: "flex-start",
141
+ fontSize: theme.typography.pxToRem(13),
142
+ fontWeight: theme.typography.fontWeightMedium
143
+ }));
144
+ var ItemIcon = styled("span")({
145
+ display: "inline-flex",
146
+ color: "var(--icon-color)",
147
+ "& > svg": {
148
+ width: 20,
149
+ height: 20
150
+ }
151
+ });
152
+ var ItemDot = styled("span")({
153
+ width: 12,
154
+ height: 12,
155
+ flexShrink: 0,
156
+ display: "flex",
157
+ borderRadius: "50%",
158
+ position: "relative",
159
+ alignItems: "center",
160
+ justifyContent: "center",
161
+ color: "var(--icon-color)",
162
+ backgroundColor: "currentColor"
163
+ });
164
+ var ItemLabel = styled("span")({
165
+ minWidth: 0,
166
+ overflowWrap: "anywhere"
167
+ });
168
+ var ItemValue = styled("span")(({ theme }) => ({
169
+ ...theme.typography.h6,
170
+ marginTop: theme.spacing(1)
171
+ }));
172
+ var LazyApexChart = lazy(
173
+ () => import('react-apexcharts').then((module) => ({
174
+ default: module.default
175
+ }))
176
+ );
177
+ function Chart({
178
+ type,
179
+ series,
180
+ options,
181
+ width = "100%",
182
+ height = "100%",
183
+ slotProps,
184
+ className,
185
+ sx,
186
+ ...other
187
+ }) {
188
+ const [isClient, setIsClient] = useState(false);
189
+ useEffect(() => {
190
+ setIsClient(true);
191
+ }, []);
192
+ const renderFallback = () => /* @__PURE__ */ jsx(ChartLoading, { type, sx: slotProps?.loading });
193
+ return /* @__PURE__ */ jsx(
194
+ ChartRoot,
195
+ {
196
+ dir: "ltr",
197
+ className: cn(chartClasses.root, className),
198
+ sx: [{ minHeight: typeof height === "number" ? height : void 0 }, ...Array.isArray(sx) ? sx : [sx]],
199
+ ...other,
200
+ children: isClient ? /* @__PURE__ */ jsx(Suspense, { fallback: renderFallback(), children: /* @__PURE__ */ jsx(LazyApexChart, { type, series, options, width, height }) }) : renderFallback()
201
+ }
202
+ );
203
+ }
204
+ var ChartRoot = styled("div")(({ theme }) => ({
205
+ "--prism-chart-text": theme.vars?.palette.text.primary ?? theme.palette.text.primary,
206
+ "--prism-chart-muted": theme.vars?.palette.text.secondary ?? theme.palette.text.secondary,
207
+ "--prism-chart-background": theme.vars?.palette.background.paper ?? theme.palette.background.paper,
208
+ "--prism-chart-neutral": theme.vars?.palette.background.default ?? theme.palette.background.default,
209
+ "--prism-chart-divider": theme.vars?.palette.divider ?? theme.palette.divider,
210
+ "--prism-chart-shadow": theme.shadows[8],
211
+ width: "100%",
212
+ minWidth: 0,
213
+ maxWidth: "100%",
214
+ flexShrink: 0,
215
+ position: "relative",
216
+ borderRadius: Number(theme.shape.borderRadius) * 1.5
217
+ }));
218
+ function useChart(updatedOptions) {
219
+ const theme = useTheme();
220
+ const reducedMotion = useMediaQuery("(prefers-reduced-motion: reduce)");
221
+ const baseOptions = baseChartOptions(theme) ?? {};
222
+ const options = deepMerge(baseOptions, updatedOptions ?? {});
223
+ if (reducedMotion) {
224
+ options.chart = { ...options.chart, animations: { ...options.chart?.animations, enabled: false } };
225
+ }
226
+ return options;
227
+ }
228
+ function baseChartOptions(theme) {
229
+ const vars = theme.vars?.palette;
230
+ const palette = theme.palette;
231
+ const LABEL_TOTAL = {
232
+ show: true,
233
+ label: "Total",
234
+ color: vars?.text.secondary ?? palette.text.secondary,
235
+ fontSize: theme.typography.subtitle2.fontSize,
236
+ fontWeight: theme.typography.subtitle2.fontWeight
237
+ };
238
+ const LABEL_VALUE = {
239
+ offsetY: 8,
240
+ color: vars?.text.primary ?? palette.text.primary,
241
+ fontSize: theme.typography.h4.fontSize,
242
+ fontWeight: theme.typography.h4.fontWeight
243
+ };
244
+ const greyChannel = getColorChannel(theme, "grey", "500");
245
+ const dividerColor = vars?.divider ?? palette.divider;
246
+ const paperColor = vars?.background.paper ?? palette.background.paper;
247
+ return {
248
+ theme: { mode: palette.mode },
249
+ // =========================================================================
250
+ // Chart
251
+ // https://apexcharts.com/docs/options/chart/animations/
252
+ // =========================================================================
253
+ chart: {
254
+ background: "transparent",
255
+ toolbar: { show: false },
256
+ zoom: { enabled: false },
257
+ parentHeightOffset: 0,
258
+ fontFamily: theme.typography.fontFamily,
259
+ foreColor: vars?.text.secondary ?? palette.text.secondary,
260
+ animations: {
261
+ enabled: true,
262
+ speed: 360,
263
+ animateGradually: { enabled: true, delay: 120 },
264
+ dynamicAnimation: { enabled: true, speed: 360 }
265
+ }
266
+ },
267
+ // =========================================================================
268
+ // Colors
269
+ // https://apexcharts.com/docs/options/colors/
270
+ // =========================================================================
271
+ colors: [
272
+ palette.primary.main,
273
+ palette.warning.main,
274
+ palette.info.main,
275
+ palette.error.main,
276
+ palette.success.main,
277
+ palette.warning.dark,
278
+ palette.success.dark,
279
+ palette.info.dark,
280
+ palette.primary.dark
281
+ ],
282
+ // =========================================================================
283
+ // States
284
+ // https://apexcharts.com/docs/options/states/
285
+ // =========================================================================
286
+ states: {
287
+ hover: { filter: { type: "darken" } },
288
+ active: { filter: { type: "darken" } }
289
+ },
290
+ // =========================================================================
291
+ // Fill
292
+ // https://apexcharts.com/docs/options/fill/
293
+ // =========================================================================
294
+ fill: {
295
+ opacity: 1,
296
+ gradient: {
297
+ type: "vertical",
298
+ shadeIntensity: 0,
299
+ opacityFrom: 0.4,
300
+ opacityTo: 0,
301
+ stops: [0, 100]
302
+ }
303
+ },
304
+ // =========================================================================
305
+ // Data Labels
306
+ // https://apexcharts.com/docs/options/datalabels/
307
+ // =========================================================================
308
+ dataLabels: { enabled: false },
309
+ // =========================================================================
310
+ // Stroke
311
+ // https://apexcharts.com/docs/options/stroke/
312
+ // =========================================================================
313
+ stroke: { width: 2.5, curve: "smooth", lineCap: "round" },
314
+ // =========================================================================
315
+ // Grid
316
+ // https://apexcharts.com/docs/options/grid/
317
+ // =========================================================================
318
+ grid: {
319
+ strokeDashArray: 3,
320
+ borderColor: dividerColor,
321
+ padding: { top: 0, right: 0, bottom: 0 },
322
+ xaxis: { lines: { show: false } }
323
+ },
324
+ // =========================================================================
325
+ // Axis
326
+ // https://apexcharts.com/docs/options/xaxis/
327
+ // https://apexcharts.com/docs/options/yaxis/
328
+ // =========================================================================
329
+ xaxis: { axisBorder: { show: false }, axisTicks: { show: false } },
330
+ yaxis: { tickAmount: 5 },
331
+ // =========================================================================
332
+ // Markers
333
+ // https://apexcharts.com/docs/options/markers/
334
+ // =========================================================================
335
+ markers: {
336
+ size: 0,
337
+ strokeColors: paperColor
338
+ },
339
+ // =========================================================================
340
+ // Tooltip
341
+ // =========================================================================
342
+ tooltip: { theme: palette.mode, fillSeriesColor: false, x: { show: true } },
343
+ // =========================================================================
344
+ // Legend
345
+ // https://apexcharts.com/docs/options/legend/
346
+ // =========================================================================
347
+ legend: {
348
+ show: false,
349
+ position: "top",
350
+ fontWeight: 500,
351
+ fontSize: "13px",
352
+ horizontalAlign: "right",
353
+ markers: { shape: "circle" },
354
+ labels: { colors: vars?.text.primary ?? palette.text.primary },
355
+ itemMargin: { horizontal: 8, vertical: 8 }
356
+ },
357
+ // =========================================================================
358
+ // Plot Options
359
+ // =========================================================================
360
+ plotOptions: {
361
+ // Bar charts
362
+ // https://apexcharts.com/docs/options/plotoptions/bar/
363
+ bar: { borderRadius: 4, columnWidth: "48%", borderRadiusApplication: "end" },
364
+ // Pie & Donut charts
365
+ // https://apexcharts.com/docs/options/plotoptions/pie/
366
+ pie: {
367
+ donut: {
368
+ labels: {
369
+ show: true,
370
+ value: { ...LABEL_VALUE },
371
+ total: { ...LABEL_TOTAL }
372
+ }
373
+ }
374
+ },
375
+ // RadialBar charts
376
+ // https://apexcharts.com/docs/options/plotoptions/radialbar/
377
+ radialBar: {
378
+ hollow: { margin: -8, size: "100%" },
379
+ track: {
380
+ margin: -8,
381
+ strokeWidth: "50%",
382
+ background: `rgba(${greyChannel} / 0.16)`
383
+ },
384
+ dataLabels: { value: { ...LABEL_VALUE }, total: { ...LABEL_TOTAL } }
385
+ },
386
+ // Radar charts
387
+ // https://apexcharts.com/docs/options/plotoptions/radar/
388
+ radar: {
389
+ polygons: {
390
+ fill: { colors: ["transparent"] },
391
+ strokeColors: dividerColor,
392
+ connectorColors: dividerColor
393
+ }
394
+ },
395
+ // Polar Area charts
396
+ // https://apexcharts.com/docs/options/plotoptions/polararea/
397
+ polarArea: {
398
+ rings: { strokeColor: dividerColor },
399
+ spokes: { connectorColors: dividerColor }
400
+ },
401
+ // Heatmap charts
402
+ // https://apexcharts.com/docs/options/plotoptions/heatmap/
403
+ heatmap: { distributed: true }
404
+ },
405
+ // =========================================================================
406
+ // Responsive
407
+ // https://apexcharts.com/docs/options/responsive/
408
+ // =========================================================================
409
+ responsive: [
410
+ {
411
+ breakpoint: theme.breakpoints.values.sm,
412
+ options: { plotOptions: { bar: { borderRadius: 3, columnWidth: "80%" } } }
413
+ },
414
+ {
415
+ breakpoint: theme.breakpoints.values.md,
416
+ options: { plotOptions: { bar: { columnWidth: "60%" } } }
417
+ }
418
+ ]
419
+ };
420
+ }
421
+ function getColorChannel(theme, color, shade) {
422
+ const channelKey = `${shade}Channel` ;
423
+ const vars = theme.vars?.palette[color];
424
+ const fallbacks = {
425
+ "500Channel": "145 158 171",
426
+ "900Channel": "0 0 0",
427
+ mainChannel: "51 133 240"
428
+ };
429
+ return vars?.[channelKey] ?? fallbacks[channelKey] ?? "145 158 171";
430
+ }
431
+ function deepMerge(target, source) {
432
+ const output = { ...target };
433
+ for (const key of Object.keys(source)) {
434
+ const sourceValue = source[key];
435
+ const targetValue = target[key];
436
+ if (sourceValue !== null && typeof sourceValue === "object" && !Array.isArray(sourceValue) && targetValue !== null && typeof targetValue === "object" && !Array.isArray(targetValue)) {
437
+ output[key] = deepMerge(targetValue, sourceValue);
438
+ } else if (sourceValue !== void 0) {
439
+ output[key] = sourceValue;
440
+ }
441
+ }
442
+ return output;
443
+ }
444
+
445
+ export { Chart, ChartLegends, ChartLoading, chartClasses, cn, mergeClasses, useChart };
446
+ //# sourceMappingURL=chunk-2AB7VGPW.js.map
447
+ //# sourceMappingURL=chunk-2AB7VGPW.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils/cn.ts","../src/components/chart/classes.ts","../src/components/chart/components/chart-loading.tsx","../src/components/chart/components/chart-legends.tsx","../src/components/chart/chart.tsx","../src/components/chart/use-chart.ts"],"names":["jsx","styled"],"mappings":"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","file":"chunk-2AB7VGPW.js","sourcesContent":["/**\n * Class Name Utility\n *\n * Combines clsx for conditional classes with optional Tailwind merge.\n * Inspired by shadcn/ui's cn() utility and minimal-shared's mergeClasses.\n *\n * @module utils/cn\n */\n\nimport { clsx, type ClassValue } from 'clsx';\n\n/**\n * Combines class names using clsx.\n *\n * This is a simplified version without tailwind-merge since Prism\n * primarily uses MUI's sx prop for styling. For Tailwind projects,\n * consider adding tailwind-merge.\n *\n * @example\n * ```tsx\n * // Basic usage\n * cn('px-4 py-2', 'bg-blue-500')\n *\n * // Conditional classes\n * cn('base-class', isActive && 'active', isDisabled && 'disabled')\n *\n * // With objects\n * cn('base', { active: isActive, disabled: isDisabled })\n *\n * // With arrays\n * cn(['class1', 'class2'], condition && 'class3')\n * ```\n */\nexport function cn(...inputs: ClassValue[]): string {\n return clsx(inputs);\n}\n\n/**\n * Type for class value inputs.\n * Re-exported for convenience.\n */\nexport type { ClassValue };\n\n// =============================================================================\n// STATE-BASED CLASS MERGING (minimal-shared pattern)\n// =============================================================================\n\n/**\n * State props for mergeClasses.\n * Values can be:\n * - boolean: includes key as class name if true\n * - undefined: excluded\n * - [boolean, string]: includes string as class name if boolean is true\n */\nexport type StateProps = {\n [key: string]: boolean | undefined | [boolean, string];\n};\n\n/**\n * Merges class names with state-based class names.\n *\n * This utility provides an alternative API for state-based class toggling,\n * particularly useful when class names differ from state keys.\n *\n * @param className - Base class name(s)\n * @param state - State object with boolean or [boolean, className] values\n * @returns Merged class names string\n *\n * @example\n * ```tsx\n * // Basic state-based merging\n * mergeClasses('item', {\n * 'item--active': isActive,\n * 'item--disabled': isDisabled,\n * });\n * // Output: 'item item--active' (if isActive is true)\n *\n * // With tuple format for different class names\n * mergeClasses('btn', {\n * primary: [isPrimary, 'btn-primary'],\n * secondary: [isSecondary, 'btn-secondary'],\n * });\n *\n * // With array of base classes\n * mergeClasses(['nav', 'nav--main'], {\n * 'nav--open': isOpen,\n * });\n * ```\n */\nexport function mergeClasses(className?: string | (string | undefined)[] | null, state?: StateProps): string {\n const classList = className ? (Array.isArray(className) ? className.filter(Boolean) : [className]) : [];\n\n if (!state) {\n return classList.join(' ');\n }\n\n const stateClasses = Object.entries(state)\n .filter(([, value]) => value !== undefined && value !== false)\n .map(([key, value]) => {\n if (Array.isArray(value)) {\n return value[0] ? value[1] : '';\n }\n return value ? key : '';\n })\n .filter(Boolean);\n\n return [...classList, ...stateClasses].join(' ');\n}\n","/**\n * Chart Component CSS Classes\n *\n * @module components/chart\n */\n\nimport { createClasses } from '../../utils/create-classes.js';\n\n// =============================================================================\n// CHART CLASSES\n// =============================================================================\n\n/**\n * CSS class names for the Chart component.\n */\nexport const chartClasses = {\n root: createClasses('chart__root'),\n loading: createClasses('chart__loading'),\n legends: {\n root: createClasses('chart__legends__root'),\n item: {\n wrap: createClasses('chart__legends__item__wrap'),\n root: createClasses('chart__legends__item__root'),\n dot: createClasses('chart__legends__item__dot'),\n icon: createClasses('chart__legends__item__icon'),\n label: createClasses('chart__legends__item__label'),\n value: createClasses('chart__legends__item__value'),\n },\n },\n};\n","'use client';\n\n/**\n * Chart Loading Component\n *\n * Skeleton placeholder shown while chart is loading.\n *\n * @module components/chart\n */\n\nimport type { ChartLoadingProps, ChartType } from '../types.js';\n\nimport Box from '@mui/material/Box';\nimport Skeleton from '@mui/material/Skeleton';\n\nimport { cn } from '../../../utils/cn.js';\nimport { chartClasses } from '../classes.js';\n\n// =============================================================================\n// CIRCULAR CHART TYPES\n// =============================================================================\n\nconst CIRCULAR_TYPES: ChartType[] = ['donut', 'radialBar', 'pie', 'polarArea'];\n\n// =============================================================================\n// CHART LOADING\n// =============================================================================\n\n/**\n * Loading skeleton for charts.\n *\n * Displays a skeleton placeholder with shape appropriate for the chart type.\n *\n * @example\n * ```tsx\n * <ChartLoading type=\"pie\" />\n * <ChartLoading type=\"bar\" />\n * ```\n */\nexport function ChartLoading({ sx, className, type, ...other }: ChartLoadingProps) {\n const isCircular = type && CIRCULAR_TYPES.includes(type);\n\n return (\n <Box\n className={cn(chartClasses.loading, className)}\n sx={[\n {\n top: 0,\n left: 0,\n width: 1,\n zIndex: 9,\n height: 1,\n p: 'inherit',\n overflow: 'hidden',\n alignItems: 'center',\n position: 'absolute',\n borderRadius: 'inherit',\n justifyContent: 'center',\n display: 'flex',\n },\n ...(Array.isArray(sx) ? sx : [sx]),\n ]}\n {...other}\n >\n <Skeleton\n variant=\"circular\"\n sx={{\n width: 1,\n height: 1,\n borderRadius: 'inherit',\n ...(isCircular && { borderRadius: '50%' }),\n }}\n />\n </Box>\n );\n}\n","'use client';\n\n/**\n * Chart Legends Component\n *\n * Custom legend display for charts.\n *\n * @module components/chart\n */\n\nimport type { ChartLegendsProps } from '../types.js';\n\nimport { styled } from '@mui/material/styles';\n\nimport { cn } from '../../../utils/cn.js';\nimport { chartClasses } from '../classes.js';\n\n// =============================================================================\n// CHART LEGENDS\n// =============================================================================\n\n/**\n * Custom chart legends component.\n *\n * Displays chart legends with support for colors, icons, values, and sublabels.\n *\n * @example\n * ```tsx\n * <ChartLegends\n * labels={['Series A', 'Series B']}\n * colors={['#ff0000', '#00ff00']}\n * values={['100', '200']}\n * />\n * ```\n */\nexport function ChartLegends({\n sx,\n className,\n slotProps,\n icons = [],\n values = [],\n labels = [],\n colors = [],\n sublabels = [],\n ...other\n}: ChartLegendsProps) {\n return (\n <ListRoot className={cn(chartClasses.legends.root, className)} sx={sx} {...other}>\n {labels.map((series, index) => (\n <ItemWrap\n key={series}\n className={chartClasses.legends.item.wrap}\n sx={[\n {\n '--icon-color': colors[index],\n },\n ...(Array.isArray(slotProps?.wrapper?.sx) ? slotProps.wrapper.sx : [slotProps?.wrapper?.sx]),\n ]}\n {...slotProps?.wrapper}\n >\n <ItemRoot className={chartClasses.legends.item.root} {...slotProps?.root}>\n {icons.length ? (\n <ItemIcon className={chartClasses.legends.item.icon} {...slotProps?.icon}>\n {icons[index]}\n </ItemIcon>\n ) : (\n <ItemDot className={chartClasses.legends.item.dot} {...slotProps?.dot} />\n )}\n\n <ItemLabel className={chartClasses.legends.item.label} {...slotProps?.label}>\n {series}\n {!!sublabels.length && <> {` (${sublabels[index]})`}</>}\n </ItemLabel>\n </ItemRoot>\n\n {values.length > 0 && (\n <ItemValue className={chartClasses.legends.item.value} {...slotProps?.value}>\n {values[index]}\n </ItemValue>\n )}\n </ItemWrap>\n ))}\n </ListRoot>\n );\n}\n\n// =============================================================================\n// STYLED COMPONENTS\n// =============================================================================\n\nconst ListRoot = styled('ul')(({ theme }) => ({\n display: 'flex',\n flexWrap: 'wrap',\n gap: theme.spacing(2),\n margin: 0,\n padding: 0,\n listStyle: 'none',\n}));\n\nconst ItemWrap = styled('li')({\n minWidth: 0,\n maxWidth: '100%',\n display: 'inline-flex',\n flexDirection: 'column',\n});\n\nconst ItemRoot = styled('div')(({ theme }) => ({\n gap: 6,\n alignItems: 'center',\n display: 'inline-flex',\n justifyContent: 'flex-start',\n fontSize: theme.typography.pxToRem(13),\n fontWeight: theme.typography.fontWeightMedium,\n}));\n\nconst ItemIcon = styled('span')({\n display: 'inline-flex',\n color: 'var(--icon-color)',\n '& > svg': {\n width: 20,\n height: 20,\n },\n});\n\nconst ItemDot = styled('span')({\n width: 12,\n height: 12,\n flexShrink: 0,\n display: 'flex',\n borderRadius: '50%',\n position: 'relative',\n alignItems: 'center',\n justifyContent: 'center',\n color: 'var(--icon-color)',\n backgroundColor: 'currentColor',\n});\n\nconst ItemLabel = styled('span')({\n minWidth: 0,\n overflowWrap: 'anywhere',\n});\n\nconst ItemValue = styled('span')(({ theme }) => ({\n ...theme.typography.h6,\n marginTop: theme.spacing(1),\n}));\n","'use client';\n\n/**\n * Chart Component\n *\n * Lazy-loaded ApexCharts wrapper with theme integration and SSR support.\n *\n * @module components/chart\n */\n\nimport type { ChartProps } from './types.js';\n\nimport { lazy, Suspense, useState, useEffect, type ComponentType } from 'react';\n\nimport { styled } from '@mui/material/styles';\n\nimport { cn } from '../../utils/cn.js';\nimport { chartClasses } from './classes.js';\nimport { ChartLoading } from './components/index.js';\n\n// =============================================================================\n// LAZY LOADED APEX CHARTS\n// =============================================================================\n\n/**\n * ApexChart component props (minimal type for lazy loading).\n */\ninterface ApexChartProps {\n type?: string;\n series?: unknown;\n options?: unknown;\n width?: string | number;\n height?: string | number;\n}\n\nconst LazyApexChart = lazy(() =>\n import('react-apexcharts').then((module) => ({\n default: module.default as ComponentType<ApexChartProps>,\n }))\n);\n\n// =============================================================================\n// CHART COMPONENT\n// =============================================================================\n\n/**\n * Theme-aware chart component using ApexCharts.\n *\n * Features:\n * - Lazy loading with Suspense\n * - SSR-safe (only renders on client)\n * - Theme-integrated styles\n * - Loading skeleton placeholder\n *\n * @example\n * ```tsx\n * import { Chart, useChart } from '@omnitron-dev/prism/components';\n *\n * function MyChart() {\n * const chartOptions = useChart({\n * xaxis: { categories: ['Jan', 'Feb', 'Mar'] },\n * });\n *\n * return (\n * <Chart\n * type=\"line\"\n * series={[{ name: 'Sales', data: [10, 20, 30] }]}\n * options={chartOptions}\n * height={320}\n * />\n * );\n * }\n * ```\n */\nexport function Chart({\n type,\n series,\n options,\n width = '100%',\n height = '100%',\n slotProps,\n className,\n sx,\n ...other\n}: ChartProps) {\n const [isClient, setIsClient] = useState(false);\n\n // SSR safety: only render chart on client\n useEffect(() => {\n setIsClient(true);\n }, []);\n\n const renderFallback = () => <ChartLoading type={type} sx={slotProps?.loading} />;\n\n return (\n <ChartRoot\n dir=\"ltr\"\n className={cn(chartClasses.root, className)}\n sx={[{ minHeight: typeof height === 'number' ? height : undefined }, ...(Array.isArray(sx) ? sx : [sx])]}\n {...other}\n >\n {isClient ? (\n <Suspense fallback={renderFallback()}>\n <LazyApexChart type={type} series={series} options={options} width={width} height={height} />\n </Suspense>\n ) : (\n renderFallback()\n )}\n </ChartRoot>\n );\n}\n\n// =============================================================================\n// STYLED COMPONENTS\n// =============================================================================\n\nconst ChartRoot = styled('div')(({ theme }) => ({\n '--prism-chart-text': theme.vars?.palette.text.primary ?? theme.palette.text.primary,\n '--prism-chart-muted': theme.vars?.palette.text.secondary ?? theme.palette.text.secondary,\n '--prism-chart-background': theme.vars?.palette.background.paper ?? theme.palette.background.paper,\n '--prism-chart-neutral': theme.vars?.palette.background.default ?? theme.palette.background.default,\n '--prism-chart-divider': theme.vars?.palette.divider ?? theme.palette.divider,\n '--prism-chart-shadow': theme.shadows[8],\n width: '100%',\n minWidth: 0,\n maxWidth: '100%',\n flexShrink: 0,\n position: 'relative',\n borderRadius: Number(theme.shape.borderRadius) * 1.5,\n}));\n","/**\n * useChart Hook\n *\n * Creates theme-aware ApexCharts options with sensible defaults.\n * Merges custom options with base theme-integrated options.\n *\n * @module components/chart\n */\n\nimport type { Theme } from '@mui/material/styles';\nimport type { ChartOptions } from './types.js';\n\nimport { useTheme } from '@mui/material/styles';\nimport useMediaQuery from '@mui/material/useMediaQuery';\n\n// =============================================================================\n// USE CHART HOOK\n// =============================================================================\n\n/**\n * Create theme-aware chart options.\n *\n * @param updatedOptions - Custom options to merge with base options\n * @returns Merged chart options with theme integration\n *\n * @example\n * ```tsx\n * function MyChart() {\n * const chartOptions = useChart({\n * xaxis: { categories: ['Jan', 'Feb', 'Mar'] },\n * });\n *\n * return (\n * <Chart\n * type=\"line\"\n * series={[{ name: 'Sales', data: [10, 20, 30] }]}\n * options={chartOptions}\n * />\n * );\n * }\n * ```\n */\nexport function useChart(updatedOptions?: ChartOptions): ChartOptions {\n const theme = useTheme();\n const reducedMotion = useMediaQuery('(prefers-reduced-motion: reduce)');\n\n const baseOptions = baseChartOptions(theme) ?? {};\n\n const options = deepMerge(baseOptions, updatedOptions ?? {});\n if (reducedMotion) {\n options.chart = { ...options.chart, animations: { ...options.chart?.animations, enabled: false } };\n }\n return options;\n}\n\n// =============================================================================\n// BASE CHART OPTIONS\n// =============================================================================\n\n/**\n * Generate base chart options from theme.\n */\nfunction baseChartOptions(theme: Theme): ChartOptions {\n // Access CSS variables safely\n const vars = theme.vars?.palette;\n const palette = theme.palette;\n\n // Label styles for donut/radialBar charts\n const LABEL_TOTAL = {\n show: true,\n label: 'Total',\n color: vars?.text.secondary ?? palette.text.secondary,\n fontSize: theme.typography.subtitle2.fontSize as string,\n fontWeight: theme.typography.subtitle2.fontWeight,\n };\n\n const LABEL_VALUE = {\n offsetY: 8,\n color: vars?.text.primary ?? palette.text.primary,\n fontSize: theme.typography.h4.fontSize as string,\n fontWeight: theme.typography.h4.fontWeight,\n };\n\n // Get grey channel for opacity calculations\n const greyChannel = getColorChannel(theme, 'grey', '500');\n const dividerColor = vars?.divider ?? palette.divider;\n const paperColor = vars?.background.paper ?? palette.background.paper;\n\n return {\n theme: { mode: palette.mode },\n // =========================================================================\n // Chart\n // https://apexcharts.com/docs/options/chart/animations/\n // =========================================================================\n chart: {\n background: 'transparent',\n toolbar: { show: false },\n zoom: { enabled: false },\n parentHeightOffset: 0,\n fontFamily: theme.typography.fontFamily,\n foreColor: vars?.text.secondary ?? palette.text.secondary,\n animations: {\n enabled: true,\n speed: 360,\n animateGradually: { enabled: true, delay: 120 },\n dynamicAnimation: { enabled: true, speed: 360 },\n },\n },\n\n // =========================================================================\n // Colors\n // https://apexcharts.com/docs/options/colors/\n // =========================================================================\n colors: [\n palette.primary.main,\n palette.warning.main,\n palette.info.main,\n palette.error.main,\n palette.success.main,\n palette.warning.dark,\n palette.success.dark,\n palette.info.dark,\n palette.primary.dark,\n ],\n\n // =========================================================================\n // States\n // https://apexcharts.com/docs/options/states/\n // =========================================================================\n states: {\n hover: { filter: { type: 'darken' } },\n active: { filter: { type: 'darken' } },\n },\n\n // =========================================================================\n // Fill\n // https://apexcharts.com/docs/options/fill/\n // =========================================================================\n fill: {\n opacity: 1,\n gradient: {\n type: 'vertical',\n shadeIntensity: 0,\n opacityFrom: 0.4,\n opacityTo: 0,\n stops: [0, 100],\n },\n },\n\n // =========================================================================\n // Data Labels\n // https://apexcharts.com/docs/options/datalabels/\n // =========================================================================\n dataLabels: { enabled: false },\n\n // =========================================================================\n // Stroke\n // https://apexcharts.com/docs/options/stroke/\n // =========================================================================\n stroke: { width: 2.5, curve: 'smooth', lineCap: 'round' },\n\n // =========================================================================\n // Grid\n // https://apexcharts.com/docs/options/grid/\n // =========================================================================\n grid: {\n strokeDashArray: 3,\n borderColor: dividerColor,\n padding: { top: 0, right: 0, bottom: 0 },\n xaxis: { lines: { show: false } },\n },\n\n // =========================================================================\n // Axis\n // https://apexcharts.com/docs/options/xaxis/\n // https://apexcharts.com/docs/options/yaxis/\n // =========================================================================\n xaxis: { axisBorder: { show: false }, axisTicks: { show: false } },\n yaxis: { tickAmount: 5 },\n\n // =========================================================================\n // Markers\n // https://apexcharts.com/docs/options/markers/\n // =========================================================================\n markers: {\n size: 0,\n strokeColors: paperColor,\n },\n\n // =========================================================================\n // Tooltip\n // =========================================================================\n tooltip: { theme: palette.mode, fillSeriesColor: false, x: { show: true } },\n\n // =========================================================================\n // Legend\n // https://apexcharts.com/docs/options/legend/\n // =========================================================================\n legend: {\n show: false,\n position: 'top',\n fontWeight: 500,\n fontSize: '13px',\n horizontalAlign: 'right',\n markers: { shape: 'circle' },\n labels: { colors: vars?.text.primary ?? palette.text.primary },\n itemMargin: { horizontal: 8, vertical: 8 },\n },\n\n // =========================================================================\n // Plot Options\n // =========================================================================\n plotOptions: {\n // Bar charts\n // https://apexcharts.com/docs/options/plotoptions/bar/\n bar: { borderRadius: 4, columnWidth: '48%', borderRadiusApplication: 'end' },\n\n // Pie & Donut charts\n // https://apexcharts.com/docs/options/plotoptions/pie/\n pie: {\n donut: {\n labels: {\n show: true,\n value: { ...LABEL_VALUE },\n total: { ...LABEL_TOTAL },\n },\n },\n },\n\n // RadialBar charts\n // https://apexcharts.com/docs/options/plotoptions/radialbar/\n radialBar: {\n hollow: { margin: -8, size: '100%' },\n track: {\n margin: -8,\n strokeWidth: '50%',\n background: `rgba(${greyChannel} / 0.16)`,\n },\n dataLabels: { value: { ...LABEL_VALUE }, total: { ...LABEL_TOTAL } },\n },\n\n // Radar charts\n // https://apexcharts.com/docs/options/plotoptions/radar/\n radar: {\n polygons: {\n fill: { colors: ['transparent'] },\n strokeColors: dividerColor,\n connectorColors: dividerColor,\n },\n },\n\n // Polar Area charts\n // https://apexcharts.com/docs/options/plotoptions/polararea/\n polarArea: {\n rings: { strokeColor: dividerColor },\n spokes: { connectorColors: dividerColor },\n },\n\n // Heatmap charts\n // https://apexcharts.com/docs/options/plotoptions/heatmap/\n heatmap: { distributed: true },\n },\n\n // =========================================================================\n // Responsive\n // https://apexcharts.com/docs/options/responsive/\n // =========================================================================\n responsive: [\n {\n breakpoint: theme.breakpoints.values.sm,\n options: { plotOptions: { bar: { borderRadius: 3, columnWidth: '80%' } } },\n },\n {\n breakpoint: theme.breakpoints.values.md,\n options: { plotOptions: { bar: { columnWidth: '60%' } } },\n },\n ],\n };\n}\n\n// =============================================================================\n// HELPERS\n// =============================================================================\n\n/**\n * Get color channel from theme safely.\n */\nfunction getColorChannel(theme: Theme, color: 'grey' | 'primary' | 'secondary', shade?: string): string {\n const channelKey = shade ? `${shade}Channel` : 'mainChannel';\n const vars = theme.vars?.palette[color] as Record<string, string> | undefined;\n\n const fallbacks: Record<string, string> = {\n '500Channel': '145 158 171',\n '900Channel': '0 0 0',\n mainChannel: '51 133 240',\n };\n\n return vars?.[channelKey] ?? fallbacks[channelKey] ?? '145 158 171';\n}\n\n/**\n * Deep merge two objects.\n */\nfunction deepMerge<T extends object>(target: T, source: Partial<T>): T {\n const output = { ...target };\n\n for (const key of Object.keys(source) as Array<keyof T>) {\n const sourceValue = source[key];\n const targetValue = target[key];\n\n if (\n sourceValue !== null &&\n typeof sourceValue === 'object' &&\n !Array.isArray(sourceValue) &&\n targetValue !== null &&\n typeof targetValue === 'object' &&\n !Array.isArray(targetValue)\n ) {\n output[key] = deepMerge(targetValue as object, sourceValue as object) as T[keyof T];\n } else if (sourceValue !== undefined) {\n output[key] = sourceValue as T[keyof T];\n }\n }\n\n return output;\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { H1Icon, H2Icon, H3Icon, H4Icon, H5Icon, H6Icon, ParagraphIcon, BoldIcon, ItalicIcon, UnderlineIcon, StrikeIcon, InlineCodeIcon, BulletListIcon, OrderedListIcon, CheckListIcon, AlignLeftIcon, AlignCenterIcon, AlignRightIcon, AlignJustifyIcon, QuoteIcon, CodeBlockIcon, HorizontalRuleIcon, UnlinkIcon, LinkIcon, ImageIcon, HardBreakIcon, ClearMarksIcon, UndoIcon, RedoIcon, ExitFullscreenIcon, FullscreenIcon } from './chunk-75FQ5IW3.js';
1
+ import { H1Icon, H2Icon, H3Icon, H4Icon, H5Icon, H6Icon, ParagraphIcon, BoldIcon, ItalicIcon, UnderlineIcon, StrikeIcon, InlineCodeIcon, BulletListIcon, OrderedListIcon, CheckListIcon, AlignLeftIcon, AlignCenterIcon, AlignRightIcon, AlignJustifyIcon, QuoteIcon, CodeBlockIcon, HorizontalRuleIcon, UnlinkIcon, LinkIcon, ImageIcon, HardBreakIcon, ClearMarksIcon, UndoIcon, RedoIcon, ExitFullscreenIcon, FullscreenIcon } from './chunk-TZHWYT34.js';
2
2
  import { useState, useCallback, useMemo, useEffect } from 'react';
3
3
  import { createLowlight, common } from 'lowlight';
4
4
  import StarterKitExtension from '@tiptap/starter-kit';
@@ -1377,5 +1377,5 @@ function Editor({
1377
1377
  }
1378
1378
 
1379
1379
  export { BubbleToolbar, ClearFormat, CodeHighlightBlock, DEFAULT_EDITOR_LABELS, Editor, HeadingBlock, ImageBlock, LinkBlock, TextTransform, Toolbar, ToolbarItem, editorClasses, resolveToolbar, useToolbarState };
1380
- //# sourceMappingURL=chunk-LOY2NPCO.js.map
1381
- //# sourceMappingURL=chunk-LOY2NPCO.js.map
1380
+ //# sourceMappingURL=chunk-2E67PQ4T.js.map
1381
+ //# sourceMappingURL=chunk-2E67PQ4T.js.map