@hexclave/dashboard-ui-components 1.0.41 → 1.0.43

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 (355) hide show
  1. package/dist/analytics-chart-BUxntwQ3.d.ts +553 -0
  2. package/dist/analytics-chart-BUxntwQ3.d.ts.map +1 -0
  3. package/dist/components/alert.d.ts +1 -3
  4. package/dist/components/alert.d.ts.map +1 -1
  5. package/dist/components/alert.js +4 -7
  6. package/dist/components/alert.js.map +1 -1
  7. package/dist/components/analytics-chart/analytics-chart-pie.d.ts +3 -4
  8. package/dist/components/analytics-chart/analytics-chart-pie.d.ts.map +1 -1
  9. package/dist/components/analytics-chart/analytics-chart-pie.js +2 -4
  10. package/dist/components/analytics-chart/analytics-chart-pie.js.map +1 -1
  11. package/dist/components/analytics-chart/analytics-chart.d.ts +2 -554
  12. package/dist/components/analytics-chart/analytics-chart.js +4 -7
  13. package/dist/components/analytics-chart/analytics-chart.js.map +1 -1
  14. package/dist/components/analytics-chart/default-analytics-chart-tooltip.d.ts +2 -66
  15. package/dist/components/analytics-chart/default-analytics-chart-tooltip.js +3 -5
  16. package/dist/components/analytics-chart/default-analytics-chart-tooltip.js.map +1 -1
  17. package/dist/components/analytics-chart/format.d.ts +2 -13
  18. package/dist/components/analytics-chart/format.js +2 -3
  19. package/dist/components/analytics-chart/format.js.map +1 -1
  20. package/dist/components/analytics-chart/index.d.ts +7 -7
  21. package/dist/components/analytics-chart/index.js +175 -177
  22. package/dist/components/analytics-chart/palette.d.ts +2 -15
  23. package/dist/components/analytics-chart/palette.js +2 -3
  24. package/dist/components/analytics-chart/palette.js.map +1 -1
  25. package/dist/components/analytics-chart/render-data-series.d.ts +1 -1
  26. package/dist/components/analytics-chart/render-data-series.d.ts.map +1 -1
  27. package/dist/components/analytics-chart/render-data-series.js +2 -4
  28. package/dist/components/analytics-chart/render-data-series.js.map +1 -1
  29. package/dist/components/analytics-chart/state.d.ts +2 -54
  30. package/dist/components/analytics-chart/state.js +2 -4
  31. package/dist/components/analytics-chart/state.js.map +1 -1
  32. package/dist/components/analytics-chart/strings.d.ts +2 -33
  33. package/dist/components/analytics-chart/strings.js +2 -3
  34. package/dist/components/analytics-chart/strings.js.map +1 -1
  35. package/dist/components/analytics-chart/types.d.ts +2 -158
  36. package/dist/components/analytics-chart/types.js +2 -3
  37. package/dist/components/analytics-chart/types.js.map +1 -1
  38. package/dist/components/badge.d.ts +1 -3
  39. package/dist/components/badge.d.ts.map +1 -1
  40. package/dist/components/badge.js +4 -10
  41. package/dist/components/badge.js.map +1 -1
  42. package/dist/components/button.d.ts +6 -7
  43. package/dist/components/button.d.ts.map +1 -1
  44. package/dist/components/button.js +4 -5
  45. package/dist/components/button.js.map +1 -1
  46. package/dist/components/card.d.ts +2 -3
  47. package/dist/components/card.d.ts.map +1 -1
  48. package/dist/components/card.js +6 -8
  49. package/dist/components/card.js.map +1 -1
  50. package/dist/components/chart-card.d.ts +1 -2
  51. package/dist/components/chart-card.d.ts.map +1 -1
  52. package/dist/components/chart-card.js +5 -7
  53. package/dist/components/chart-card.js.map +1 -1
  54. package/dist/components/chart-container.d.ts +1 -2
  55. package/dist/components/chart-container.d.ts.map +1 -1
  56. package/dist/components/chart-container.js +5 -7
  57. package/dist/components/chart-container.js.map +1 -1
  58. package/dist/components/chart-legend.d.ts +1 -1
  59. package/dist/components/chart-legend.js +4 -6
  60. package/dist/components/chart-legend.js.map +1 -1
  61. package/dist/components/chart-theme.d.ts.map +1 -1
  62. package/dist/components/chart-theme.js +3 -5
  63. package/dist/components/chart-theme.js.map +1 -1
  64. package/dist/components/chart-tooltip.d.ts +10 -14
  65. package/dist/components/chart-tooltip.d.ts.map +1 -1
  66. package/dist/components/chart-tooltip.js +6 -8
  67. package/dist/components/chart-tooltip.js.map +1 -1
  68. package/dist/components/cursor-blast-effect.d.ts +1 -3
  69. package/dist/components/cursor-blast-effect.d.ts.map +1 -1
  70. package/dist/components/cursor-blast-effect.js +2 -5
  71. package/dist/components/cursor-blast-effect.js.map +1 -1
  72. package/dist/components/data-grid/data-grid-export-dialog.d.ts +2 -3
  73. package/dist/components/data-grid/data-grid-export-dialog.d.ts.map +1 -1
  74. package/dist/components/data-grid/data-grid-export-dialog.js +4 -6
  75. package/dist/components/data-grid/data-grid-export-dialog.js.map +1 -1
  76. package/dist/components/data-grid/data-grid-sizing.d.ts +2 -13
  77. package/dist/components/data-grid/data-grid-sizing.js +3 -4
  78. package/dist/components/data-grid/data-grid-sizing.js.map +1 -1
  79. package/dist/components/data-grid/data-grid-toolbar.d.ts +2 -31
  80. package/dist/components/data-grid/data-grid-toolbar.js +5 -7
  81. package/dist/components/data-grid/data-grid-toolbar.js.map +1 -1
  82. package/dist/components/data-grid/data-grid.d.ts +2 -47
  83. package/dist/components/data-grid/data-grid.js +8 -10
  84. package/dist/components/data-grid/data-grid.js.map +1 -1
  85. package/dist/components/data-grid/data-grid.test.js +1 -3
  86. package/dist/components/data-grid/data-grid.test.js.map +1 -1
  87. package/dist/components/data-grid/index.d.ts +8 -8
  88. package/dist/components/data-grid/index.js +139 -141
  89. package/dist/components/data-grid/state.d.ts +2 -34
  90. package/dist/components/data-grid/state.js +2 -4
  91. package/dist/components/data-grid/state.js.map +1 -1
  92. package/dist/components/data-grid/strings.d.ts +2 -8
  93. package/dist/components/data-grid/strings.js +2 -3
  94. package/dist/components/data-grid/strings.js.map +1 -1
  95. package/dist/components/data-grid/types.d.ts +2 -308
  96. package/dist/components/data-grid/use-data-source.d.ts +2 -85
  97. package/dist/components/data-grid/use-data-source.js +2 -4
  98. package/dist/components/data-grid/use-data-source.js.map +1 -1
  99. package/dist/components/data-grid/use-url-state.d.ts +2 -38
  100. package/dist/components/data-grid/use-url-state.js +2 -5
  101. package/dist/components/data-grid/use-url-state.js.map +1 -1
  102. package/dist/components/data-grid/use-url-state.test.js +1 -3
  103. package/dist/components/data-grid/use-url-state.test.js.map +1 -1
  104. package/dist/components/dialog.d.ts +2 -71
  105. package/dist/components/dialog.js +6 -8
  106. package/dist/components/dialog.js.map +1 -1
  107. package/dist/components/edit-mode.d.ts +1 -3
  108. package/dist/components/edit-mode.d.ts.map +1 -1
  109. package/dist/components/edit-mode.js +2 -5
  110. package/dist/components/edit-mode.js.map +1 -1
  111. package/dist/components/empty-state.d.ts +1 -2
  112. package/dist/components/empty-state.d.ts.map +1 -1
  113. package/dist/components/empty-state.js +4 -6
  114. package/dist/components/empty-state.js.map +1 -1
  115. package/dist/components/input.js +4 -6
  116. package/dist/components/input.js.map +1 -1
  117. package/dist/components/metric-card.d.ts +1 -2
  118. package/dist/components/metric-card.d.ts.map +1 -1
  119. package/dist/components/metric-card.js +5 -7
  120. package/dist/components/metric-card.js.map +1 -1
  121. package/dist/components/pill-toggle.d.ts +1 -3
  122. package/dist/components/pill-toggle.d.ts.map +1 -1
  123. package/dist/components/pill-toggle.js +4 -7
  124. package/dist/components/pill-toggle.js.map +1 -1
  125. package/dist/components/progress-bar.d.ts +1 -3
  126. package/dist/components/progress-bar.d.ts.map +1 -1
  127. package/dist/components/progress-bar.js +3 -6
  128. package/dist/components/progress-bar.js.map +1 -1
  129. package/dist/components/separator.d.ts +1 -3
  130. package/dist/components/separator.d.ts.map +1 -1
  131. package/dist/components/separator.js +2 -5
  132. package/dist/components/separator.js.map +1 -1
  133. package/dist/components/skeleton.d.ts +1 -2
  134. package/dist/components/skeleton.d.ts.map +1 -1
  135. package/dist/components/skeleton.js +2 -5
  136. package/dist/components/skeleton.js.map +1 -1
  137. package/dist/components/table.js +4 -6
  138. package/dist/components/table.js.map +1 -1
  139. package/dist/components/tabs.d.ts +1 -2
  140. package/dist/components/tabs.d.ts.map +1 -1
  141. package/dist/components/tabs.js +4 -7
  142. package/dist/components/tabs.js.map +1 -1
  143. package/dist/dashboard-ui-components.global.js +247 -258
  144. package/dist/dashboard-ui-components.global.js.map +3 -3
  145. package/dist/data-grid-AJi1TNDa.d.ts +46 -0
  146. package/dist/data-grid-AJi1TNDa.d.ts.map +1 -0
  147. package/dist/data-grid-sizing-S1ixcZKo.d.ts +13 -0
  148. package/dist/data-grid-sizing-S1ixcZKo.d.ts.map +1 -0
  149. package/dist/data-grid-toolbar-BGSNGDpT.d.ts +30 -0
  150. package/dist/data-grid-toolbar-BGSNGDpT.d.ts.map +1 -0
  151. package/dist/default-analytics-chart-tooltip-PrLoMaC1.d.ts +65 -0
  152. package/dist/default-analytics-chart-tooltip-PrLoMaC1.d.ts.map +1 -0
  153. package/dist/dialog-CCtTH7s6.d.ts +131 -0
  154. package/dist/dialog-CCtTH7s6.d.ts.map +1 -0
  155. package/dist/esm/components/alert.d.ts +1 -3
  156. package/dist/esm/components/alert.d.ts.map +1 -1
  157. package/dist/esm/components/alert.js +3 -5
  158. package/dist/esm/components/alert.js.map +1 -1
  159. package/dist/esm/components/analytics-chart/analytics-chart-pie.d.ts +3 -4
  160. package/dist/esm/components/analytics-chart/analytics-chart-pie.d.ts.map +1 -1
  161. package/dist/esm/components/analytics-chart/analytics-chart-pie.js +1 -2
  162. package/dist/esm/components/analytics-chart/analytics-chart-pie.js.map +1 -1
  163. package/dist/esm/components/analytics-chart/analytics-chart.d.ts +4 -5
  164. package/dist/esm/components/analytics-chart/analytics-chart.d.ts.map +1 -1
  165. package/dist/esm/components/analytics-chart/analytics-chart.js +3 -5
  166. package/dist/esm/components/analytics-chart/analytics-chart.js.map +1 -1
  167. package/dist/esm/components/analytics-chart/default-analytics-chart-tooltip.d.ts +4 -5
  168. package/dist/esm/components/analytics-chart/default-analytics-chart-tooltip.d.ts.map +1 -1
  169. package/dist/esm/components/analytics-chart/default-analytics-chart-tooltip.js +2 -3
  170. package/dist/esm/components/analytics-chart/default-analytics-chart-tooltip.js.map +1 -1
  171. package/dist/esm/components/analytics-chart/format.d.ts +1 -1
  172. package/dist/esm/components/analytics-chart/format.d.ts.map +1 -1
  173. package/dist/esm/components/analytics-chart/format.js +1 -1
  174. package/dist/esm/components/analytics-chart/format.js.map +1 -1
  175. package/dist/esm/components/analytics-chart/index.d.ts +7 -7
  176. package/dist/esm/components/analytics-chart/index.js +1 -2
  177. package/dist/esm/components/analytics-chart/palette.d.ts +1 -1
  178. package/dist/esm/components/analytics-chart/palette.d.ts.map +1 -1
  179. package/dist/esm/components/analytics-chart/palette.js +1 -1
  180. package/dist/esm/components/analytics-chart/palette.js.map +1 -1
  181. package/dist/esm/components/analytics-chart/render-data-series.d.ts +1 -1
  182. package/dist/esm/components/analytics-chart/render-data-series.d.ts.map +1 -1
  183. package/dist/esm/components/analytics-chart/render-data-series.js +1 -2
  184. package/dist/esm/components/analytics-chart/render-data-series.js.map +1 -1
  185. package/dist/esm/components/analytics-chart/state.d.ts +1 -1
  186. package/dist/esm/components/analytics-chart/state.d.ts.map +1 -1
  187. package/dist/esm/components/analytics-chart/state.js +1 -2
  188. package/dist/esm/components/analytics-chart/state.js.map +1 -1
  189. package/dist/esm/components/analytics-chart/strings.d.ts.map +1 -1
  190. package/dist/esm/components/analytics-chart/strings.js +1 -1
  191. package/dist/esm/components/analytics-chart/strings.js.map +1 -1
  192. package/dist/esm/components/analytics-chart/types.d.ts.map +1 -1
  193. package/dist/esm/components/analytics-chart/types.js +1 -1
  194. package/dist/esm/components/analytics-chart/types.js.map +1 -1
  195. package/dist/esm/components/badge.d.ts +1 -3
  196. package/dist/esm/components/badge.d.ts.map +1 -1
  197. package/dist/esm/components/badge.js +3 -8
  198. package/dist/esm/components/badge.js.map +1 -1
  199. package/dist/esm/components/button.d.ts +6 -7
  200. package/dist/esm/components/button.d.ts.map +1 -1
  201. package/dist/esm/components/button.js +2 -3
  202. package/dist/esm/components/button.js.map +1 -1
  203. package/dist/esm/components/card.d.ts +2 -3
  204. package/dist/esm/components/card.d.ts.map +1 -1
  205. package/dist/esm/components/card.js +3 -5
  206. package/dist/esm/components/card.js.map +1 -1
  207. package/dist/esm/components/chart-card.d.ts +1 -2
  208. package/dist/esm/components/chart-card.d.ts.map +1 -1
  209. package/dist/esm/components/chart-card.js +3 -5
  210. package/dist/esm/components/chart-card.js.map +1 -1
  211. package/dist/esm/components/chart-container.d.ts +1 -2
  212. package/dist/esm/components/chart-container.d.ts.map +1 -1
  213. package/dist/esm/components/chart-container.js +1 -3
  214. package/dist/esm/components/chart-container.js.map +1 -1
  215. package/dist/esm/components/chart-legend.d.ts +1 -1
  216. package/dist/esm/components/chart-legend.js +1 -3
  217. package/dist/esm/components/chart-legend.js.map +1 -1
  218. package/dist/esm/components/chart-theme.d.ts.map +1 -1
  219. package/dist/esm/components/chart-theme.js +2 -3
  220. package/dist/esm/components/chart-theme.js.map +1 -1
  221. package/dist/esm/components/chart-tooltip.d.ts +10 -14
  222. package/dist/esm/components/chart-tooltip.d.ts.map +1 -1
  223. package/dist/esm/components/chart-tooltip.js +2 -4
  224. package/dist/esm/components/chart-tooltip.js.map +1 -1
  225. package/dist/esm/components/cursor-blast-effect.d.ts +1 -3
  226. package/dist/esm/components/cursor-blast-effect.d.ts.map +1 -1
  227. package/dist/esm/components/cursor-blast-effect.js +1 -3
  228. package/dist/esm/components/cursor-blast-effect.js.map +1 -1
  229. package/dist/esm/components/data-grid/data-grid-export-dialog.d.ts +2 -3
  230. package/dist/esm/components/data-grid/data-grid-export-dialog.d.ts.map +1 -1
  231. package/dist/esm/components/data-grid/data-grid-export-dialog.js +2 -4
  232. package/dist/esm/components/data-grid/data-grid-export-dialog.js.map +1 -1
  233. package/dist/esm/components/data-grid/data-grid-sizing.d.ts +1 -1
  234. package/dist/esm/components/data-grid/data-grid-sizing.d.ts.map +1 -1
  235. package/dist/esm/components/data-grid/data-grid-sizing.js +2 -2
  236. package/dist/esm/components/data-grid/data-grid-sizing.js.map +1 -1
  237. package/dist/esm/components/data-grid/data-grid-toolbar.d.ts +2 -3
  238. package/dist/esm/components/data-grid/data-grid-toolbar.d.ts.map +1 -1
  239. package/dist/esm/components/data-grid/data-grid-toolbar.js +2 -4
  240. package/dist/esm/components/data-grid/data-grid-toolbar.js.map +1 -1
  241. package/dist/esm/components/data-grid/data-grid.d.ts +2 -3
  242. package/dist/esm/components/data-grid/data-grid.d.ts.map +1 -1
  243. package/dist/esm/components/data-grid/data-grid.js +6 -8
  244. package/dist/esm/components/data-grid/data-grid.js.map +1 -1
  245. package/dist/esm/components/data-grid/data-grid.test.js +2 -3
  246. package/dist/esm/components/data-grid/data-grid.test.js.map +1 -1
  247. package/dist/esm/components/data-grid/index.d.ts +8 -8
  248. package/dist/esm/components/data-grid/index.js +1 -2
  249. package/dist/esm/components/data-grid/state.d.ts +1 -1
  250. package/dist/esm/components/data-grid/state.d.ts.map +1 -1
  251. package/dist/esm/components/data-grid/state.js +1 -2
  252. package/dist/esm/components/data-grid/state.js.map +1 -1
  253. package/dist/esm/components/data-grid/strings.d.ts +1 -1
  254. package/dist/esm/components/data-grid/strings.d.ts.map +1 -1
  255. package/dist/esm/components/data-grid/strings.js +1 -1
  256. package/dist/esm/components/data-grid/strings.js.map +1 -1
  257. package/dist/esm/components/data-grid/types.d.ts.map +1 -1
  258. package/dist/esm/components/data-grid/types.js +1 -1
  259. package/dist/esm/components/data-grid/use-data-source.d.ts +1 -1
  260. package/dist/esm/components/data-grid/use-data-source.d.ts.map +1 -1
  261. package/dist/esm/components/data-grid/use-data-source.js +1 -2
  262. package/dist/esm/components/data-grid/use-data-source.js.map +1 -1
  263. package/dist/esm/components/data-grid/use-url-state.d.ts +1 -1
  264. package/dist/esm/components/data-grid/use-url-state.d.ts.map +1 -1
  265. package/dist/esm/components/data-grid/use-url-state.js +1 -3
  266. package/dist/esm/components/data-grid/use-url-state.js.map +1 -1
  267. package/dist/esm/components/data-grid/use-url-state.test.js +2 -3
  268. package/dist/esm/components/data-grid/use-url-state.test.js.map +1 -1
  269. package/dist/esm/components/dialog.d.ts +6 -8
  270. package/dist/esm/components/dialog.d.ts.map +1 -1
  271. package/dist/esm/components/dialog.js +3 -5
  272. package/dist/esm/components/dialog.js.map +1 -1
  273. package/dist/esm/components/edit-mode.d.ts +1 -3
  274. package/dist/esm/components/edit-mode.d.ts.map +1 -1
  275. package/dist/esm/components/edit-mode.js +1 -3
  276. package/dist/esm/components/edit-mode.js.map +1 -1
  277. package/dist/esm/components/empty-state.d.ts +1 -2
  278. package/dist/esm/components/empty-state.d.ts.map +1 -1
  279. package/dist/esm/components/empty-state.js +2 -4
  280. package/dist/esm/components/empty-state.js.map +1 -1
  281. package/dist/esm/components/input.js +2 -4
  282. package/dist/esm/components/input.js.map +1 -1
  283. package/dist/esm/components/metric-card.d.ts +1 -2
  284. package/dist/esm/components/metric-card.d.ts.map +1 -1
  285. package/dist/esm/components/metric-card.js +3 -5
  286. package/dist/esm/components/metric-card.js.map +1 -1
  287. package/dist/esm/components/pill-toggle.d.ts +1 -3
  288. package/dist/esm/components/pill-toggle.d.ts.map +1 -1
  289. package/dist/esm/components/pill-toggle.js +3 -5
  290. package/dist/esm/components/pill-toggle.js.map +1 -1
  291. package/dist/esm/components/progress-bar.d.ts +1 -3
  292. package/dist/esm/components/progress-bar.d.ts.map +1 -1
  293. package/dist/esm/components/progress-bar.js +2 -4
  294. package/dist/esm/components/progress-bar.js.map +1 -1
  295. package/dist/esm/components/separator.d.ts +1 -3
  296. package/dist/esm/components/separator.d.ts.map +1 -1
  297. package/dist/esm/components/separator.js +1 -3
  298. package/dist/esm/components/separator.js.map +1 -1
  299. package/dist/esm/components/skeleton.d.ts +1 -2
  300. package/dist/esm/components/skeleton.d.ts.map +1 -1
  301. package/dist/esm/components/skeleton.js +1 -3
  302. package/dist/esm/components/skeleton.js.map +1 -1
  303. package/dist/esm/components/table.js +2 -4
  304. package/dist/esm/components/table.js.map +1 -1
  305. package/dist/esm/components/tabs.d.ts +1 -2
  306. package/dist/esm/components/tabs.d.ts.map +1 -1
  307. package/dist/esm/components/tabs.js +3 -5
  308. package/dist/esm/components/tabs.js.map +1 -1
  309. package/dist/esm/index.d.ts +23 -23
  310. package/dist/esm/index.js +3 -6
  311. package/dist/format-DdrrnMlc.d.ts +13 -0
  312. package/dist/format-DdrrnMlc.d.ts.map +1 -0
  313. package/dist/index.d.ts +17 -17
  314. package/dist/index.js +278 -277
  315. package/dist/palette-pqnuo5cq.d.ts +15 -0
  316. package/dist/palette-pqnuo5cq.d.ts.map +1 -0
  317. package/dist/{chunk-BE-pF4vm.js → rolldown-runtime-D6vf50IK.js} +12 -18
  318. package/dist/state-6LW8ACh5.d.ts +34 -0
  319. package/dist/state-6LW8ACh5.d.ts.map +1 -0
  320. package/dist/state-Hch3gYtt.d.ts +54 -0
  321. package/dist/state-Hch3gYtt.d.ts.map +1 -0
  322. package/dist/strings-CACVtKlq.d.ts +8 -0
  323. package/dist/strings-CACVtKlq.d.ts.map +1 -0
  324. package/dist/strings-D-t58Uol.d.ts +33 -0
  325. package/dist/strings-D-t58Uol.d.ts.map +1 -0
  326. package/dist/types-1-eOd1JF.d.ts +308 -0
  327. package/dist/types-1-eOd1JF.d.ts.map +1 -0
  328. package/dist/types-NyzRTEfi.d.ts +158 -0
  329. package/dist/types-NyzRTEfi.d.ts.map +1 -0
  330. package/dist/use-data-source-BVFynerX.d.ts +85 -0
  331. package/dist/use-data-source-BVFynerX.d.ts.map +1 -0
  332. package/dist/use-url-state-B4_wnBjm.d.ts +38 -0
  333. package/dist/use-url-state-B4_wnBjm.d.ts.map +1 -0
  334. package/package.json +3 -7
  335. package/src/components/analytics-chart/analytics-chart.tsx +2 -3
  336. package/src/components/analytics-chart/default-analytics-chart-tooltip.tsx +1 -1
  337. package/src/components/chart-tooltip.tsx +1 -1
  338. package/src/components/data-grid/data-grid-toolbar.tsx +1 -1
  339. package/src/components/data-grid/data-grid.tsx +2 -2
  340. package/dist/components/analytics-chart/analytics-chart.d.ts.map +0 -1
  341. package/dist/components/analytics-chart/default-analytics-chart-tooltip.d.ts.map +0 -1
  342. package/dist/components/analytics-chart/format.d.ts.map +0 -1
  343. package/dist/components/analytics-chart/palette.d.ts.map +0 -1
  344. package/dist/components/analytics-chart/state.d.ts.map +0 -1
  345. package/dist/components/analytics-chart/strings.d.ts.map +0 -1
  346. package/dist/components/analytics-chart/types.d.ts.map +0 -1
  347. package/dist/components/data-grid/data-grid-sizing.d.ts.map +0 -1
  348. package/dist/components/data-grid/data-grid-toolbar.d.ts.map +0 -1
  349. package/dist/components/data-grid/data-grid.d.ts.map +0 -1
  350. package/dist/components/data-grid/state.d.ts.map +0 -1
  351. package/dist/components/data-grid/strings.d.ts.map +0 -1
  352. package/dist/components/data-grid/types.d.ts.map +0 -1
  353. package/dist/components/data-grid/use-data-source.d.ts.map +0 -1
  354. package/dist/components/data-grid/use-url-state.d.ts.map +0 -1
  355. package/dist/components/dialog.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"card.js","names":[],"sources":["../../../src/components/card.tsx"],"sourcesContent":["\"use client\";\n\nimport { Card } from \"@hexclave/ui\";\nimport { cn } from \"@hexclave/ui\";\nimport React from \"react\";\n\n// ─── Card nesting context ────────────────────────────────────────────────────\n// Components with a `glassmorphic` prop use this to auto-detect whether they\n// sit inside a DesignCard. When they do, glassmorphic defaults to `true`;\n// when they don't, it defaults to `false`.\n\nconst DesignCardNestingContext = React.createContext(false);\n\n/**\n * Returns `true` when the calling component is rendered inside a DesignCard.\n * Useful for deriving a glassmorphic default.\n */\nexport function useInsideDesignCard(): boolean {\n return React.useContext(DesignCardNestingContext);\n}\n\n/**\n * Resolve the effective glassmorphic value.\n * - If the caller passed an explicit boolean → honour it.\n * - Otherwise → fall back to whether we're inside a DesignCard.\n */\nexport function useGlassmorphicDefault(explicit: boolean | undefined): boolean {\n const insideCard = useInsideDesignCard();\n return explicit ?? insideCard;\n}\n\ntype DesignCardGradient = \"blue\" | \"cyan\" | \"purple\" | \"green\" | \"orange\" | \"default\";\n\nconst hoverTintClasses = new Map<DesignCardGradient, string>([\n [\"blue\", \"group-hover:bg-blue-500/[0.03]\"],\n [\"purple\", \"group-hover:bg-purple-500/[0.03]\"],\n [\"green\", \"group-hover:bg-emerald-500/[0.03]\"],\n [\"orange\", \"group-hover:bg-orange-500/[0.03]\"],\n [\"default\", \"group-hover:bg-slate-500/[0.02]\"],\n [\"cyan\", \"group-hover:bg-cyan-500/[0.03]\"],\n]);\n\nconst demoTintClasses = new Map<DesignCardGradient, string>([\n [\"blue\", \"group-hover/tint:bg-blue-500/[0.02]\"],\n [\"purple\", \"group-hover/tint:bg-purple-500/[0.02]\"],\n [\"green\", \"group-hover/tint:bg-emerald-500/[0.02]\"],\n [\"orange\", \"group-hover/tint:bg-orange-500/[0.02]\"],\n [\"default\", \"group-hover/tint:bg-slate-500/[0.015]\"],\n [\"cyan\", \"group-hover/tint:bg-cyan-500/[0.02]\"],\n]);\n\nconst bodyPaddingClass = \"p-5\";\n\n// ─── Discriminated props ──────────────────────────────────────────────────\n// - If title is given, icon is required.\n// - The layout is derived automatically:\n// title + subtitle → \"header\" (full header block with subtitle)\n// title only → \"compact\" (slim bar with border-b)\n// no title → \"bodyOnly\" (just the body)\n\ntype DesignCardBaseProps = {\n glassmorphic?: boolean,\n gradient?: DesignCardGradient,\n contentClassName?: string,\n} & Omit<React.ComponentProps<typeof Card>, \"title\">;\n\ntype WithTitleProps = {\n title: React.ReactNode,\n subtitle?: React.ReactNode,\n icon: React.ElementType,\n actions?: React.ReactNode,\n};\n\ntype WithoutTitleProps = {\n title?: never,\n subtitle?: never,\n icon?: never,\n actions?: never,\n};\n\nexport type DesignCardProps = DesignCardBaseProps & (WithTitleProps | WithoutTitleProps);\n\n/**\n * General-purpose card for grouping related content: section headers,\n * description blocks, chart-less panels, etc. If the content is a\n * big-number metric, use `DesignMetricCard` instead. If it contains a\n * chart, wrap it in `DesignChartCard`.\n *\n * Two shapes, picked automatically by the props you pass:\n *\n * ```tsx\n * // With a header (title requires icon):\n * <DesignCard title=\"Recent activity\" icon={ActivityIcon}>\n * ...body...\n * </DesignCard>\n *\n * // Body-only (no header):\n * <DesignCard>\n * <h2 className=\"text-2xl font-semibold\">Dashboard</h2>\n * <p className=\"text-muted-foreground\">Overview of your user base</p>\n * </DesignCard>\n * ```\n *\n * Rules:\n * - DO NOT add padding classes (`p-6`, `p-5`, etc.) to `className` — the\n * component already has built-in padding and extra padding will look wrong.\n * - If you set `title`, you MUST also set `icon`. The TS types enforce this,\n * but writing `title` without `icon` will fail.\n * - Body-only cards (no `title`) automatically go transparent in dark mode.\n */\nexport function DesignCard({\n title,\n subtitle,\n icon: Icon,\n actions,\n glassmorphic: glassmorphicProp,\n gradient = \"default\",\n children,\n className,\n contentClassName,\n ...props\n}: DesignCardProps) {\n const glassmorphic = glassmorphicProp ?? true;\n const hoverTintClass = hoverTintClasses.get(gradient) ?? \"group-hover:bg-slate-500/[0.02]\";\n const hasContent = React.Children.count(children) > 0;\n\n // Derive layout from which props were provided\n const variant = title != null\n ? (subtitle != null ? \"header\" : \"compact\")\n : \"bodyOnly\";\n\n return (\n <DesignCardNestingContext.Provider value={true}>\n <Card\n className={cn(\n \"group relative rounded-2xl overflow-hidden\",\n glassmorphic && [\n \"bg-white/90 dark:bg-background/60 dark:backdrop-blur-xl border-0 transition-all duration-150 hover:transition-none\",\n \"ring-1 ring-black/[0.06] hover:ring-black/[0.1] dark:ring-white/[0.06] dark:hover:ring-white/[0.1]\",\n \"shadow-none\",\n ],\n glassmorphic && variant === \"bodyOnly\" && \"dark:bg-transparent dark:ring-0 dark:shadow-none\",\n className\n )}\n {...props}\n >\n {glassmorphic && (\n <>\n <div className={cn(\n \"absolute inset-0 bg-gradient-to-br from-foreground/[0.04] dark:from-foreground/[0.02] to-transparent pointer-events-none rounded-2xl\",\n variant === \"bodyOnly\" && \"dark:hidden\"\n )} />\n {variant !== \"bodyOnly\" && (\n <div\n className={cn(\n \"absolute inset-0 transition-colors duration-150 group-hover:transition-none pointer-events-none rounded-2xl\",\n hoverTintClass\n )}\n />\n )}\n </>\n )}\n <div className=\"relative\">\n {variant === \"header\" && (\n <div className={bodyPaddingClass}>\n <div className=\"flex items-start justify-between gap-4\">\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex items-center gap-2\">\n {Icon && (\n <div className=\"p-1.5 rounded-lg bg-foreground/[0.06] dark:bg-foreground/[0.04]\">\n <Icon className=\"h-3.5 w-3.5 text-foreground/70 dark:text-muted-foreground\" />\n </div>\n )}\n <span className=\"text-xs font-semibold text-foreground uppercase tracking-wider\">\n {title}\n </span>\n </div>\n {subtitle && (\n <p className=\"text-sm text-muted-foreground mt-1\">\n {subtitle}\n </p>\n )}\n </div>\n {actions && (\n <div className=\"flex-shrink-0\">\n {actions}\n </div>\n )}\n </div>\n </div>\n )}\n {variant === \"compact\" && (\n <div className=\"p-5 flex items-center justify-between gap-4 border-b border-black/[0.12] dark:border-white/[0.06]\">\n <div className=\"flex items-center gap-2 min-w-0\">\n {Icon && (\n <div className=\"p-1.5 rounded-lg bg-foreground/[0.04]\">\n <Icon className=\"h-3.5 w-3.5 text-muted-foreground\" />\n </div>\n )}\n <span className=\"text-xs font-semibold text-foreground uppercase tracking-wider\">\n {title}\n </span>\n </div>\n {actions && (\n <div className=\"flex-shrink-0\">\n {actions}\n </div>\n )}\n </div>\n )}\n {hasContent && (\n <div\n className={cn(\n variant === \"header\" ? \"border-t border-black/[0.12] dark:border-white/[0.06]\" : \"\",\n variant === \"compact\" ? \"px-5 py-4\" : \"\",\n variant === \"bodyOnly\" || variant === \"header\" ? bodyPaddingClass : \"\",\n contentClassName\n )}\n >\n {children}\n </div>\n )}\n </div>\n </Card>\n </DesignCardNestingContext.Provider>\n );\n}\n\nexport type DesignCardTintProps = {\n gradient: DesignCardGradient,\n} & React.ComponentProps<\"div\">\n\nexport function DesignCardTint({\n gradient,\n className,\n children,\n ...props\n}: DesignCardTintProps) {\n const tintClass = demoTintClasses.get(gradient) ?? \"group-hover/tint:bg-slate-500/[0.015]\";\n\n return (\n <div\n className={cn(\n \"group/tint relative rounded-2xl bg-white/90 dark:bg-background/60 dark:backdrop-blur-xl transition-all duration-150 hover:transition-none\",\n \"ring-1 ring-black/[0.06] hover:ring-black/[0.1] dark:ring-white/[0.06] dark:hover:ring-white/[0.1]\",\n \"shadow-none overflow-hidden\",\n className\n )}\n {...props}\n >\n <div className=\"absolute inset-0 bg-gradient-to-br from-foreground/[0.04] dark:from-foreground/[0.02] to-transparent pointer-events-none rounded-2xl\" />\n <div\n className={cn(\n \"absolute inset-0 transition-colors duration-150 group-hover/tint:transition-none pointer-events-none rounded-2xl\",\n tintClass\n )}\n />\n <div className=\"relative\">\n {children}\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;;;AAWA,MAAM,2BAA2B,MAAM,cAAc,MAAM;;;;;AAM3D,SAAgB,sBAA+B;AAC7C,QAAO,MAAM,WAAW,yBAAyB;;;;;;;AAQnD,SAAgB,uBAAuB,UAAwC;CAC7E,MAAM,aAAa,qBAAqB;AACxC,QAAO,YAAY;;AAKrB,MAAM,mBAAmB,IAAI,IAAgC;CAC3D,CAAC,QAAQ,iCAAiC;CAC1C,CAAC,UAAU,mCAAmC;CAC9C,CAAC,SAAS,oCAAoC;CAC9C,CAAC,UAAU,mCAAmC;CAC9C,CAAC,WAAW,kCAAkC;CAC9C,CAAC,QAAQ,iCAAiC;CAC3C,CAAC;AAEF,MAAM,kBAAkB,IAAI,IAAgC;CAC1D,CAAC,QAAQ,sCAAsC;CAC/C,CAAC,UAAU,wCAAwC;CACnD,CAAC,SAAS,yCAAyC;CACnD,CAAC,UAAU,wCAAwC;CACnD,CAAC,WAAW,wCAAwC;CACpD,CAAC,QAAQ,sCAAsC;CAChD,CAAC;AAEF,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2DzB,SAAgB,WAAW,EACzB,OACA,UACA,MAAM,MACN,SACA,cAAc,kBACd,WAAW,WACX,UACA,WACA,kBACA,GAAG,SACe;CAClB,MAAM,eAAe,oBAAoB;CACzC,MAAM,iBAAiB,iBAAiB,IAAI,SAAS,IAAI;CACzD,MAAM,aAAa,MAAM,SAAS,MAAM,SAAS,GAAG;CAGpD,MAAM,UAAU,SAAS,OACpB,YAAY,OAAO,WAAW,YAC/B;AAEJ,QACE,oBAAC,yBAAyB;EAAS,OAAO;YACxC,qBAAC;GACC,WAAW,GACT,8CACA,gBAAgB;IACd;IACA;IACA;IACD,EACD,gBAAgB,YAAY,cAAc,oDAC1C,UACD;GACD,GAAI;cAEH,gBACC,4CACE,oBAAC,SAAI,WAAW,GACd,wIACA,YAAY,cAAc,cAC3B,GAAI,EACJ,YAAY,cACX,oBAAC,SACC,WAAW,GACT,+GACA,eACD,GACD,IAEH,EAEL,qBAAC;IAAI,WAAU;;KACZ,YAAY,YACX,oBAAC;MAAI,WAAW;gBACd,qBAAC;OAAI,WAAU;kBACb,qBAAC;QAAI,WAAU;mBACb,qBAAC;SAAI,WAAU;oBACZ,QACC,oBAAC;UAAI,WAAU;oBACb,oBAAC,QAAK,WAAU,8DAA8D;WAC1E,EAER,oBAAC;UAAK,WAAU;oBACb;WACI;UACH,EACL,YACC,oBAAC;SAAE,WAAU;mBACV;UACC;SAEF,EACL,WACC,oBAAC;QAAI,WAAU;kBACZ;SACG;QAEJ;OACF;KAEP,YAAY,aACX,qBAAC;MAAI,WAAU;iBACb,qBAAC;OAAI,WAAU;kBACZ,QACC,oBAAC;QAAI,WAAU;kBACb,oBAAC,QAAK,WAAU,sCAAsC;SAClD,EAER,oBAAC;QAAK,WAAU;kBACb;SACI;QACH,EACL,WACC,oBAAC;OAAI,WAAU;iBACZ;QACG;OAEJ;KAEP,cACC,oBAAC;MACC,WAAW,GACT,YAAY,WAAW,0DAA0D,IACjF,YAAY,YAAY,cAAc,IACtC,YAAY,cAAc,YAAY,WAAW,mBAAmB,IACpE,iBACD;MAEA;OACG;;KAEJ;IACD;GAC2B;;AAQxC,SAAgB,eAAe,EAC7B,UACA,WACA,UACA,GAAG,SACmB;CACtB,MAAM,YAAY,gBAAgB,IAAI,SAAS,IAAI;AAEnD,QACE,qBAAC;EACC,WAAW,GACT,6IACA,sGACA,+BACA,UACD;EACD,GAAI;;GAEJ,oBAAC,SAAI,WAAU,yIAAyI;GACxJ,oBAAC,SACC,WAAW,GACT,oHACA,UACD,GACD;GACF,oBAAC;IAAI,WAAU;IACZ;KACG;;GACF"}
1
+ {"version":3,"file":"card.js","names":[],"sources":["../../../src/components/card.tsx"],"sourcesContent":["\"use client\";\n\nimport { Card } from \"@hexclave/ui\";\nimport { cn } from \"@hexclave/ui\";\nimport React from \"react\";\n\n// ─── Card nesting context ────────────────────────────────────────────────────\n// Components with a `glassmorphic` prop use this to auto-detect whether they\n// sit inside a DesignCard. When they do, glassmorphic defaults to `true`;\n// when they don't, it defaults to `false`.\n\nconst DesignCardNestingContext = React.createContext(false);\n\n/**\n * Returns `true` when the calling component is rendered inside a DesignCard.\n * Useful for deriving a glassmorphic default.\n */\nexport function useInsideDesignCard(): boolean {\n return React.useContext(DesignCardNestingContext);\n}\n\n/**\n * Resolve the effective glassmorphic value.\n * - If the caller passed an explicit boolean → honour it.\n * - Otherwise → fall back to whether we're inside a DesignCard.\n */\nexport function useGlassmorphicDefault(explicit: boolean | undefined): boolean {\n const insideCard = useInsideDesignCard();\n return explicit ?? insideCard;\n}\n\ntype DesignCardGradient = \"blue\" | \"cyan\" | \"purple\" | \"green\" | \"orange\" | \"default\";\n\nconst hoverTintClasses = new Map<DesignCardGradient, string>([\n [\"blue\", \"group-hover:bg-blue-500/[0.03]\"],\n [\"purple\", \"group-hover:bg-purple-500/[0.03]\"],\n [\"green\", \"group-hover:bg-emerald-500/[0.03]\"],\n [\"orange\", \"group-hover:bg-orange-500/[0.03]\"],\n [\"default\", \"group-hover:bg-slate-500/[0.02]\"],\n [\"cyan\", \"group-hover:bg-cyan-500/[0.03]\"],\n]);\n\nconst demoTintClasses = new Map<DesignCardGradient, string>([\n [\"blue\", \"group-hover/tint:bg-blue-500/[0.02]\"],\n [\"purple\", \"group-hover/tint:bg-purple-500/[0.02]\"],\n [\"green\", \"group-hover/tint:bg-emerald-500/[0.02]\"],\n [\"orange\", \"group-hover/tint:bg-orange-500/[0.02]\"],\n [\"default\", \"group-hover/tint:bg-slate-500/[0.015]\"],\n [\"cyan\", \"group-hover/tint:bg-cyan-500/[0.02]\"],\n]);\n\nconst bodyPaddingClass = \"p-5\";\n\n// ─── Discriminated props ──────────────────────────────────────────────────\n// - If title is given, icon is required.\n// - The layout is derived automatically:\n// title + subtitle → \"header\" (full header block with subtitle)\n// title only → \"compact\" (slim bar with border-b)\n// no title → \"bodyOnly\" (just the body)\n\ntype DesignCardBaseProps = {\n glassmorphic?: boolean,\n gradient?: DesignCardGradient,\n contentClassName?: string,\n} & Omit<React.ComponentProps<typeof Card>, \"title\">;\n\ntype WithTitleProps = {\n title: React.ReactNode,\n subtitle?: React.ReactNode,\n icon: React.ElementType,\n actions?: React.ReactNode,\n};\n\ntype WithoutTitleProps = {\n title?: never,\n subtitle?: never,\n icon?: never,\n actions?: never,\n};\n\nexport type DesignCardProps = DesignCardBaseProps & (WithTitleProps | WithoutTitleProps);\n\n/**\n * General-purpose card for grouping related content: section headers,\n * description blocks, chart-less panels, etc. If the content is a\n * big-number metric, use `DesignMetricCard` instead. If it contains a\n * chart, wrap it in `DesignChartCard`.\n *\n * Two shapes, picked automatically by the props you pass:\n *\n * ```tsx\n * // With a header (title requires icon):\n * <DesignCard title=\"Recent activity\" icon={ActivityIcon}>\n * ...body...\n * </DesignCard>\n *\n * // Body-only (no header):\n * <DesignCard>\n * <h2 className=\"text-2xl font-semibold\">Dashboard</h2>\n * <p className=\"text-muted-foreground\">Overview of your user base</p>\n * </DesignCard>\n * ```\n *\n * Rules:\n * - DO NOT add padding classes (`p-6`, `p-5`, etc.) to `className` — the\n * component already has built-in padding and extra padding will look wrong.\n * - If you set `title`, you MUST also set `icon`. The TS types enforce this,\n * but writing `title` without `icon` will fail.\n * - Body-only cards (no `title`) automatically go transparent in dark mode.\n */\nexport function DesignCard({\n title,\n subtitle,\n icon: Icon,\n actions,\n glassmorphic: glassmorphicProp,\n gradient = \"default\",\n children,\n className,\n contentClassName,\n ...props\n}: DesignCardProps) {\n const glassmorphic = glassmorphicProp ?? true;\n const hoverTintClass = hoverTintClasses.get(gradient) ?? \"group-hover:bg-slate-500/[0.02]\";\n const hasContent = React.Children.count(children) > 0;\n\n // Derive layout from which props were provided\n const variant = title != null\n ? (subtitle != null ? \"header\" : \"compact\")\n : \"bodyOnly\";\n\n return (\n <DesignCardNestingContext.Provider value={true}>\n <Card\n className={cn(\n \"group relative rounded-2xl overflow-hidden\",\n glassmorphic && [\n \"bg-white/90 dark:bg-background/60 dark:backdrop-blur-xl border-0 transition-all duration-150 hover:transition-none\",\n \"ring-1 ring-black/[0.06] hover:ring-black/[0.1] dark:ring-white/[0.06] dark:hover:ring-white/[0.1]\",\n \"shadow-none\",\n ],\n glassmorphic && variant === \"bodyOnly\" && \"dark:bg-transparent dark:ring-0 dark:shadow-none\",\n className\n )}\n {...props}\n >\n {glassmorphic && (\n <>\n <div className={cn(\n \"absolute inset-0 bg-gradient-to-br from-foreground/[0.04] dark:from-foreground/[0.02] to-transparent pointer-events-none rounded-2xl\",\n variant === \"bodyOnly\" && \"dark:hidden\"\n )} />\n {variant !== \"bodyOnly\" && (\n <div\n className={cn(\n \"absolute inset-0 transition-colors duration-150 group-hover:transition-none pointer-events-none rounded-2xl\",\n hoverTintClass\n )}\n />\n )}\n </>\n )}\n <div className=\"relative\">\n {variant === \"header\" && (\n <div className={bodyPaddingClass}>\n <div className=\"flex items-start justify-between gap-4\">\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex items-center gap-2\">\n {Icon && (\n <div className=\"p-1.5 rounded-lg bg-foreground/[0.06] dark:bg-foreground/[0.04]\">\n <Icon className=\"h-3.5 w-3.5 text-foreground/70 dark:text-muted-foreground\" />\n </div>\n )}\n <span className=\"text-xs font-semibold text-foreground uppercase tracking-wider\">\n {title}\n </span>\n </div>\n {subtitle && (\n <p className=\"text-sm text-muted-foreground mt-1\">\n {subtitle}\n </p>\n )}\n </div>\n {actions && (\n <div className=\"flex-shrink-0\">\n {actions}\n </div>\n )}\n </div>\n </div>\n )}\n {variant === \"compact\" && (\n <div className=\"p-5 flex items-center justify-between gap-4 border-b border-black/[0.12] dark:border-white/[0.06]\">\n <div className=\"flex items-center gap-2 min-w-0\">\n {Icon && (\n <div className=\"p-1.5 rounded-lg bg-foreground/[0.04]\">\n <Icon className=\"h-3.5 w-3.5 text-muted-foreground\" />\n </div>\n )}\n <span className=\"text-xs font-semibold text-foreground uppercase tracking-wider\">\n {title}\n </span>\n </div>\n {actions && (\n <div className=\"flex-shrink-0\">\n {actions}\n </div>\n )}\n </div>\n )}\n {hasContent && (\n <div\n className={cn(\n variant === \"header\" ? \"border-t border-black/[0.12] dark:border-white/[0.06]\" : \"\",\n variant === \"compact\" ? \"px-5 py-4\" : \"\",\n variant === \"bodyOnly\" || variant === \"header\" ? bodyPaddingClass : \"\",\n contentClassName\n )}\n >\n {children}\n </div>\n )}\n </div>\n </Card>\n </DesignCardNestingContext.Provider>\n );\n}\n\nexport type DesignCardTintProps = {\n gradient: DesignCardGradient,\n} & React.ComponentProps<\"div\">\n\nexport function DesignCardTint({\n gradient,\n className,\n children,\n ...props\n}: DesignCardTintProps) {\n const tintClass = demoTintClasses.get(gradient) ?? \"group-hover/tint:bg-slate-500/[0.015]\";\n\n return (\n <div\n className={cn(\n \"group/tint relative rounded-2xl bg-white/90 dark:bg-background/60 dark:backdrop-blur-xl transition-all duration-150 hover:transition-none\",\n \"ring-1 ring-black/[0.06] hover:ring-black/[0.1] dark:ring-white/[0.06] dark:hover:ring-white/[0.1]\",\n \"shadow-none overflow-hidden\",\n className\n )}\n {...props}\n >\n <div className=\"absolute inset-0 bg-gradient-to-br from-foreground/[0.04] dark:from-foreground/[0.02] to-transparent pointer-events-none rounded-2xl\" />\n <div\n className={cn(\n \"absolute inset-0 transition-colors duration-150 group-hover/tint:transition-none pointer-events-none rounded-2xl\",\n tintClass\n )}\n />\n <div className=\"relative\">\n {children}\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
@@ -1,4 +1,3 @@
1
- import * as react_jsx_runtime0 from "react/jsx-runtime";
2
1
  import React from "react";
3
2
 
4
3
  //#region src/components/chart-card.d.ts
@@ -44,7 +43,7 @@ declare function DesignChartCard({
44
43
  className,
45
44
  children,
46
45
  ...props
47
- }: DesignChartCardProps): react_jsx_runtime0.JSX.Element;
46
+ }: DesignChartCardProps): import("react/jsx-runtime").JSX.Element;
48
47
  //#endregion
49
48
  export { DesignChartCard, DesignChartCardProps };
50
49
  //# sourceMappingURL=chart-card.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"chart-card.d.ts","names":[],"sources":["../../../src/components/chart-card.tsx"],"mappings":";;;;KAKK,uBAAA;AAAA,KAWO,oBAAA;EACV,QAAA,GAAW,uBAAA;EACX,KAAA,GAAQ,KAAA,CAAM,SAAA;EACd,WAAA,GAAc,KAAA,CAAM,SAAA;AAAA,IAClB,IAAA,CAAK,KAAA,CAAM,cAAA;;;AAJf;;;;;;;;;;;;;;;;;;;;;;;AAmCA;;;;iBAAgB,eAAA,CAAA;EACd,QAAA;EACA,KAAA;EACA,WAAA;EACA,SAAA;EACA,QAAA;EAAA,GACG;AAAA,GACF,oBAAA,GAAoB,kBAAA,CAAA,GAAA,CAAA,OAAA"}
1
+ {"version":3,"file":"chart-card.d.ts","names":[],"sources":["../../../src/components/chart-card.tsx"],"mappings":";;;KAKK,uBAAA;AAAA,KAWO,oBAAA;EACV,QAAA,GAAW,uBAAA;EACX,KAAA,GAAQ,KAAA,CAAM,SAAA;EACd,WAAA,GAAc,KAAA,CAAM,SAAA;AAAA,IAClB,IAAA,CAAK,KAAA,CAAM,cAAA;AAfa;AAW5B;;;;;;;;;;;;;;;;;;;;;;AAI6B;AA+B7B;;;;;AA9C4B,iBA8CZ,eAAA;EACd,QAAA;EACA,KAAA;EACA,WAAA;EACA,SAAA;EACA,QAAA;EAAA,GACG;AAAA,GACF,oBAAA,+BAAoB,GAAA,CAAA,OAAA"}
@@ -1,11 +1,9 @@
1
1
  "use client";
2
-
3
2
  import { cn } from "@hexclave/ui";
4
3
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
5
- import React from "react";
6
-
4
+ import "react";
7
5
  //#region src/components/chart-card.tsx
8
- const hoverTintClasses = new Map([
6
+ const hoverTintClasses = /* @__PURE__ */ new Map([
9
7
  ["blue", "group-hover:bg-blue-500/[0.03]"],
10
8
  ["cyan", "group-hover:bg-cyan-500/[0.03]"],
11
9
  ["purple", "group-hover:bg-purple-500/[0.03]"],
@@ -74,7 +72,7 @@ function DesignChartCard({ gradient = "default", title, description, className,
74
72
  ]
75
73
  })] });
76
74
  }
77
-
78
75
  //#endregion
79
76
  export { DesignChartCard };
77
+
80
78
  //# sourceMappingURL=chart-card.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chart-card.js","names":[],"sources":["../../../src/components/chart-card.tsx"],"sourcesContent":["\"use client\";\n\nimport { cn } from \"@hexclave/ui\";\nimport React from \"react\";\n\ntype DesignChartCardGradient = \"blue\" | \"cyan\" | \"purple\" | \"green\" | \"orange\" | \"default\";\n\nconst hoverTintClasses = new Map<DesignChartCardGradient, string>([\n [\"blue\", \"group-hover:bg-blue-500/[0.03]\"],\n [\"cyan\", \"group-hover:bg-cyan-500/[0.03]\"],\n [\"purple\", \"group-hover:bg-purple-500/[0.03]\"],\n [\"green\", \"group-hover:bg-emerald-500/[0.03]\"],\n [\"orange\", \"group-hover:bg-orange-500/[0.03]\"],\n [\"default\", \"group-hover:bg-slate-500/[0.02]\"],\n]);\n\nexport type DesignChartCardProps = {\n gradient?: DesignChartCardGradient,\n title?: React.ReactNode,\n description?: React.ReactNode,\n} & Omit<React.ComponentProps<\"div\">, \"title\">;\n\n/**\n * Card chrome (title + description + border) for a chart. Wrap every\n * `AnalyticsChart` in this so the chart has context. Also used around raw\n * Recharts components paired with `DesignChartContainer` for non-time-series\n * fallbacks.\n *\n * ```tsx\n * // Time-series chart (preferred):\n * <DesignChartCard title=\"Signups\" description=\"Last 30 days\">\n * <AnalyticsChart data={data} state={state} onChange={setState} />\n * </DesignChartCard>\n *\n * // Non-time-series fallback (static ranking, distribution, etc.):\n * <DesignChartCard title=\"Top referrers\" description=\"This month\">\n * <DesignChartContainer config={chartConfig} maxHeight={300}>\n * <Recharts.BarChart data={data}>\n * <Recharts.CartesianGrid strokeDasharray=\"3 3\" stroke=\"hsl(var(--border))\" />\n * <Recharts.XAxis dataKey=\"name\" tick={{ fill: 'hsl(var(--muted-foreground))', fontSize: 12 }} />\n * <Recharts.YAxis tick={{ fill: 'hsl(var(--muted-foreground))', fontSize: 12 }} />\n * <Recharts.Tooltip content={<DesignChartTooltipContent />} />\n * <Recharts.Bar dataKey=\"count\" fill={getDesignChartColor(0)} radius={[4, 4, 0, 0]} />\n * </Recharts.BarChart>\n * </DesignChartContainer>\n * </DesignChartCard>\n * ```\n *\n * `chartConfig` for `DesignChartContainer` maps each `dataKey` to its label and color:\n * `{ count: { label: \"Count\", color: getDesignChartColor(0) } }`.\n */\nexport function DesignChartCard({\n gradient = \"default\",\n title,\n description,\n className,\n children,\n ...props\n}: DesignChartCardProps) {\n const hoverTintClass = hoverTintClasses.get(gradient) ?? \"group-hover:bg-slate-500/[0.02]\";\n\n return (\n <>\n <style dangerouslySetInnerHTML={{ __html: `\n .design-chart-card-tooltip-escape .recharts-tooltip-wrapper {\n z-index: 9999 !important;\n overflow: visible !important;\n }\n .design-chart-card-tooltip-escape .recharts-tooltip-wrapper > * {\n overflow: visible !important;\n }\n ` }} />\n <div\n className={cn(\n \"group relative rounded-2xl bg-white/90 dark:bg-background/60 backdrop-blur-xl transition-all duration-150 hover:transition-none design-chart-card-tooltip-escape\",\n \"ring-1 ring-black/[0.06] hover:ring-black/[0.1] dark:ring-white/[0.06] dark:hover:ring-white/[0.1]\",\n \"shadow-sm hover:shadow-md hover:z-10\",\n className\n )}\n {...props}\n >\n <div className=\"absolute inset-0 bg-gradient-to-br from-foreground/[0.04] dark:from-foreground/[0.02] to-transparent pointer-events-none rounded-2xl overflow-hidden\" />\n <div\n className={cn(\n \"absolute inset-0 transition-colors duration-150 group-hover:transition-none pointer-events-none rounded-2xl overflow-hidden\",\n hoverTintClass\n )}\n />\n <div className=\"relative h-full flex flex-col p-4\">\n {(title || description) && (\n <div className=\"mb-3\">\n {title && <h3 className=\"text-sm font-semibold text-foreground\">{title}</h3>}\n {description && <p className=\"text-xs text-muted-foreground mt-0.5\">{description}</p>}\n </div>\n )}\n {children}\n </div>\n </div>\n </>\n );\n}\n"],"mappings":";;;;;;;AAOA,MAAM,mBAAmB,IAAI,IAAqC;CAChE,CAAC,QAAQ,iCAAiC;CAC1C,CAAC,QAAQ,iCAAiC;CAC1C,CAAC,UAAU,mCAAmC;CAC9C,CAAC,SAAS,oCAAoC;CAC9C,CAAC,UAAU,mCAAmC;CAC9C,CAAC,WAAW,kCAAkC;CAC/C,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqCF,SAAgB,gBAAgB,EAC9B,WAAW,WACX,OACA,aACA,WACA,UACA,GAAG,SACoB;CACvB,MAAM,iBAAiB,iBAAiB,IAAI,SAAS,IAAI;AAEzD,QACE,4CACE,oBAAC,WAAM,yBAAyB,EAAE,QAAQ;;;;;;;;SAQvC,GAAI,EACP,qBAAC;EACC,WAAW,GACT,oKACA,sGACA,wCACA,UACD;EACD,GAAI;;GAEJ,oBAAC,SAAI,WAAU,yJAAyJ;GACxK,oBAAC,SACC,WAAW,GACT,+HACA,eACD,GACD;GACF,qBAAC;IAAI,WAAU;gBACX,SAAS,gBACT,qBAAC;KAAI,WAAU;gBACZ,SAAS,oBAAC;MAAG,WAAU;gBAAyC;OAAW,EAC3E,eAAe,oBAAC;MAAE,WAAU;gBAAwC;OAAgB;MACjF,EAEP;KACG;;GACF,IACL"}
1
+ {"version":3,"file":"chart-card.js","names":[],"sources":["../../../src/components/chart-card.tsx"],"sourcesContent":["\"use client\";\n\nimport { cn } from \"@hexclave/ui\";\nimport React from \"react\";\n\ntype DesignChartCardGradient = \"blue\" | \"cyan\" | \"purple\" | \"green\" | \"orange\" | \"default\";\n\nconst hoverTintClasses = new Map<DesignChartCardGradient, string>([\n [\"blue\", \"group-hover:bg-blue-500/[0.03]\"],\n [\"cyan\", \"group-hover:bg-cyan-500/[0.03]\"],\n [\"purple\", \"group-hover:bg-purple-500/[0.03]\"],\n [\"green\", \"group-hover:bg-emerald-500/[0.03]\"],\n [\"orange\", \"group-hover:bg-orange-500/[0.03]\"],\n [\"default\", \"group-hover:bg-slate-500/[0.02]\"],\n]);\n\nexport type DesignChartCardProps = {\n gradient?: DesignChartCardGradient,\n title?: React.ReactNode,\n description?: React.ReactNode,\n} & Omit<React.ComponentProps<\"div\">, \"title\">;\n\n/**\n * Card chrome (title + description + border) for a chart. Wrap every\n * `AnalyticsChart` in this so the chart has context. Also used around raw\n * Recharts components paired with `DesignChartContainer` for non-time-series\n * fallbacks.\n *\n * ```tsx\n * // Time-series chart (preferred):\n * <DesignChartCard title=\"Signups\" description=\"Last 30 days\">\n * <AnalyticsChart data={data} state={state} onChange={setState} />\n * </DesignChartCard>\n *\n * // Non-time-series fallback (static ranking, distribution, etc.):\n * <DesignChartCard title=\"Top referrers\" description=\"This month\">\n * <DesignChartContainer config={chartConfig} maxHeight={300}>\n * <Recharts.BarChart data={data}>\n * <Recharts.CartesianGrid strokeDasharray=\"3 3\" stroke=\"hsl(var(--border))\" />\n * <Recharts.XAxis dataKey=\"name\" tick={{ fill: 'hsl(var(--muted-foreground))', fontSize: 12 }} />\n * <Recharts.YAxis tick={{ fill: 'hsl(var(--muted-foreground))', fontSize: 12 }} />\n * <Recharts.Tooltip content={<DesignChartTooltipContent />} />\n * <Recharts.Bar dataKey=\"count\" fill={getDesignChartColor(0)} radius={[4, 4, 0, 0]} />\n * </Recharts.BarChart>\n * </DesignChartContainer>\n * </DesignChartCard>\n * ```\n *\n * `chartConfig` for `DesignChartContainer` maps each `dataKey` to its label and color:\n * `{ count: { label: \"Count\", color: getDesignChartColor(0) } }`.\n */\nexport function DesignChartCard({\n gradient = \"default\",\n title,\n description,\n className,\n children,\n ...props\n}: DesignChartCardProps) {\n const hoverTintClass = hoverTintClasses.get(gradient) ?? \"group-hover:bg-slate-500/[0.02]\";\n\n return (\n <>\n <style dangerouslySetInnerHTML={{ __html: `\n .design-chart-card-tooltip-escape .recharts-tooltip-wrapper {\n z-index: 9999 !important;\n overflow: visible !important;\n }\n .design-chart-card-tooltip-escape .recharts-tooltip-wrapper > * {\n overflow: visible !important;\n }\n ` }} />\n <div\n className={cn(\n \"group relative rounded-2xl bg-white/90 dark:bg-background/60 backdrop-blur-xl transition-all duration-150 hover:transition-none design-chart-card-tooltip-escape\",\n \"ring-1 ring-black/[0.06] hover:ring-black/[0.1] dark:ring-white/[0.06] dark:hover:ring-white/[0.1]\",\n \"shadow-sm hover:shadow-md hover:z-10\",\n className\n )}\n {...props}\n >\n <div className=\"absolute inset-0 bg-gradient-to-br from-foreground/[0.04] dark:from-foreground/[0.02] to-transparent pointer-events-none rounded-2xl overflow-hidden\" />\n <div\n className={cn(\n \"absolute inset-0 transition-colors duration-150 group-hover:transition-none pointer-events-none rounded-2xl overflow-hidden\",\n hoverTintClass\n )}\n />\n <div className=\"relative h-full flex flex-col p-4\">\n {(title || description) && (\n <div className=\"mb-3\">\n {title && <h3 className=\"text-sm font-semibold text-foreground\">{title}</h3>}\n {description && <p className=\"text-xs text-muted-foreground mt-0.5\">{description}</p>}\n </div>\n )}\n {children}\n </div>\n </div>\n </>\n );\n}\n"],"mappings":";;;;;AAOA,MAAM,mCAAmB,IAAI,IAAqC;CAChE,CAAC,QAAQ,gCAAgC;CACzC,CAAC,QAAQ,gCAAgC;CACzC,CAAC,UAAU,kCAAkC;CAC7C,CAAC,SAAS,mCAAmC;CAC7C,CAAC,UAAU,kCAAkC;CAC7C,CAAC,WAAW,iCAAiC;AAC/C,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqCD,SAAgB,gBAAgB,EAC9B,WAAW,WACX,OACA,aACA,WACA,UACA,GAAG,SACoB;CACvB,MAAM,iBAAiB,iBAAiB,IAAI,QAAQ,KAAK;CAEzD,OACE,qBAAA,UAAA,EAAA,UAAA,CACE,oBAAC,SAAD,EAAO,yBAAyB,EAAE,QAAQ;;;;;;;;QAQxC,EAAI,CAAA,GACN,qBAAC,OAAD;EACE,WAAW,GACT,oKACA,sGACA,wCACA,SACF;EACA,GAAI;YAPN;GASE,oBAAC,OAAD,EAAK,WAAU,uJAAwJ,CAAA;GACvK,oBAAC,OAAD,EACE,WAAW,GACT,+HACA,cACF,EACD,CAAA;GACD,qBAAC,OAAD;IAAK,WAAU;cAAf,EACI,SAAS,gBACT,qBAAC,OAAD;KAAK,WAAU;eAAf,CACG,SAAS,oBAAC,MAAD;MAAI,WAAU;gBAAyC;KAAU,CAAA,GAC1E,eAAe,oBAAC,KAAD;MAAG,WAAU;gBAAwC;KAAe,CAAA,CACjF;QAEN,QACE;;EACF;GACL,EAAA,CAAA;AAEN"}
@@ -1,4 +1,3 @@
1
- import * as react_jsx_runtime0 from "react/jsx-runtime";
2
1
  import * as React$1 from "react";
3
2
  import * as RechartsPrimitive from "recharts";
4
3
 
@@ -27,7 +26,7 @@ declare function DesignChartStyle({
27
26
  }: {
28
27
  id: string;
29
28
  config: DesignChartConfig;
30
- }): react_jsx_runtime0.JSX.Element | null;
29
+ }): import("react/jsx-runtime").JSX.Element | null;
31
30
  declare const DesignChartContainer: React$1.ForwardRefExoticComponent<Omit<React$1.ClassAttributes<HTMLDivElement> & React$1.HTMLAttributes<HTMLDivElement> & {
32
31
  maxHeight?: number;
33
32
  config: DesignChartConfig;
@@ -1 +1 @@
1
- {"version":3,"file":"chart-container.d.ts","names":[],"sources":["../../../src/components/chart-container.tsx"],"mappings":";;;;;cAMM,MAAA;EAAA,SAA8C,KAAA;EAAA,SAAA,IAAA;AAAA;AAAA,KAExC,iBAAA;EAER,KAAA,GAAQ,OAAA,CAAM,SAAA;EACd,IAAA,GAAO,OAAA,CAAM,aAAA;AAAA;EAET,KAAA;EAAgB,KAAA;AAAA;EAChB,KAAA;EAAe,KAAA,EAAO,MAAA,cAAoB,MAAA;AAAA;AAAA,KAI7C,iBAAA;EACH,MAAA,EAAQ,iBAAA;AAAA;AAAA,iBAKM,cAAA,CAAA,GAAc,iBAAA;AAAA,iBAQd,gBAAA,CAAA;EAAmB,EAAA;EAAI;AAAA;EAAY,EAAA;EAAY,MAAA,EAAQ,iBAAA;AAAA,IAAmB,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,cAiC7E,oBAAA,EAAoB,OAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,OAAA,CAAA,eAAA,CAAA,cAAA,IAAA,OAAA,CAAA,cAAA,CAAA,cAAA;;UAIrB,iBAAA;YACE,OAAA,CAAM,cAAA,QACP,iBAAA,CAAkB,mBAAA;AAAA;;;;iBA+Cf,2BAAA,CACd,MAAA,EAAQ,iBAAA,EACR,OAAA,WACA,GAAA;UA/GU,OAAA,CAAM,SAAA;SACP,OAAA,CAAM,aAAA;AAAA;;;;;SAGa,MAAA,cAAoB,MAAA;AAAA"}
1
+ {"version":3,"file":"chart-container.d.ts","names":[],"sources":["../../../src/components/chart-container.tsx"],"mappings":";;;;cAMM,MAAA;EAAA,SAA8C,KAAA;EAAA,SAAA,IAAA;AAAA;AAAA,KAExC,iBAAA;EAER,KAAA,GAAQ,OAAA,CAAM,SAAA;EACd,IAAA,GAAO,OAAA,CAAM,aAAA;AAAA;EAET,KAAA;EAAgB,KAAA;AAAA;EAChB,KAAA;EAAe,KAAA,EAAO,MAAA,cAAoB,MAAA;AAAA;AAAA,KAI7C,iBAAA;EACH,MAAA,EAAQ,iBAAiB;AAAA;AAAA,iBAKX,cAAA,IAAc,iBAAA;AAAA,iBAQd,gBAAA;EAAmB,EAAA;EAAI;AAAA;EAAY,EAAA;EAAY,MAAA,EAAQ,iBAAA;AAAA,gCAAmB,GAAA,CAAA,OAAA;AAAA,cAiC7E,oBAAA,EAAoB,OAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,OAAA,CAAA,eAAA,CAAA,cAAA,IAAA,OAAA,CAAA,cAAA,CAAA,cAAA;;UAIrB,iBAAA;YACE,OAAA,CAAM,cAAA,QACP,iBAAA,CAAkB,mBAAA;AAAA;;AAzDyB;AAEtD;iBAsGc,2BAAA,CACd,MAAA,EAAQ,iBAAA,EACR,OAAA,WACA,GAAA;UA/GU,OAAA,CAAM,SAAA;SACP,OAAA,CAAM,aAAA;AAAA;;;;;SAGa,MAAA,cAAoB,MAAA;AAAA"}
@@ -1,10 +1,8 @@
1
1
  "use client";
2
-
3
2
  import { cn } from "@hexclave/ui";
4
3
  import { jsx, jsxs } from "react/jsx-runtime";
5
4
  import * as React$1 from "react";
6
5
  import * as RechartsPrimitive from "recharts";
7
-
8
6
  //#region src/components/chart-container.tsx
9
7
  const THEMES = {
10
8
  light: "",
@@ -64,7 +62,7 @@ function getPayloadConfigFromPayload(config, payload, key) {
64
62
  else if (payloadPayload && key in payloadPayload && typeof payloadPayload[key] === "string") configLabelKey = payloadPayload[key];
65
63
  return configLabelKey in config ? config[configLabelKey] : config[key];
66
64
  }
67
-
68
65
  //#endregion
69
66
  export { DesignChartContainer, DesignChartStyle, getPayloadConfigFromPayload, useDesignChart };
67
+
70
68
  //# sourceMappingURL=chart-container.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chart-container.js","names":["React"],"sources":["../../../src/components/chart-container.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport * as RechartsPrimitive from \"recharts\";\nimport { cn } from \"@hexclave/ui\";\n\nconst THEMES = { light: \"\", dark: \".dark\" } as const;\n\nexport type DesignChartConfig = {\n [k in string]: {\n label?: React.ReactNode,\n icon?: React.ComponentType,\n } & (\n | { color?: string, theme?: never }\n | { color?: never, theme: Record<keyof typeof THEMES, string> }\n )\n};\n\ntype ChartContextProps = {\n config: DesignChartConfig,\n};\n\nconst ChartContext = React.createContext<ChartContextProps | null>(null);\n\nexport function useDesignChart() {\n const context = React.useContext(ChartContext);\n if (!context) {\n throw new Error(\"useDesignChart must be used within a <DesignChartContainer />\");\n }\n return context;\n}\n\nexport function DesignChartStyle({ id, config }: { id: string, config: DesignChartConfig }) {\n const colorConfig = Object.entries(config).filter(\n ([_, cfg]) => cfg.theme || cfg.color\n );\n\n if (!colorConfig.length) {\n return null;\n }\n\n return (\n <style\n dangerouslySetInnerHTML={{\n __html: Object.entries(THEMES)\n .map(\n ([theme, prefix]) => `\n${prefix} [data-chart=${id}] {\n${colorConfig\n .map(([key, itemConfig]) => {\n const color =\n itemConfig.theme?.[theme as keyof typeof itemConfig.theme] ||\n itemConfig.color;\n return color ? ` --color-${key}: ${color};` : null;\n })\n .join(\"\\n\")}\n}\n`\n )\n .join(\"\\n\"),\n }}\n />\n );\n}\n\nexport const DesignChartContainer = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> & {\n maxHeight?: number,\n config: DesignChartConfig,\n children: React.ComponentProps<\n typeof RechartsPrimitive.ResponsiveContainer\n >[\"children\"],\n }\n>(({ id, className, children, config, maxHeight, ...props }, ref) => {\n const uniqueId = React.useId();\n const chartId = `chart-${id || uniqueId.replace(/:/g, \"\")}`;\n\n return (\n <ChartContext.Provider value={{ config }}>\n <div\n data-chart={chartId}\n ref={ref}\n className={cn(\n \"flex aspect-video justify-center text-xs\",\n \"[&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground\",\n \"[&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-black/[0.06] dark:[&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-white/[0.06]\",\n \"[&_.recharts-curve.recharts-tooltip-cursor]:stroke-black/[0.12] dark:[&_.recharts-curve.recharts-tooltip-cursor]:stroke-white/[0.12]\",\n \"[&_.recharts-dot[stroke='#fff']]:stroke-transparent\",\n \"[&_.recharts-layer]:outline-none\",\n \"[&_.recharts-polar-grid_[stroke='#ccc']]:stroke-black/[0.06] dark:[&_.recharts-polar-grid_[stroke='#ccc']]:stroke-white/[0.06]\",\n \"[&_.recharts-radial-bar-background-sector]:fill-black/[0.04] dark:[&_.recharts-radial-bar-background-sector]:fill-white/[0.04]\",\n \"[&_.recharts-rectangle.recharts-tooltip-cursor]:fill-black/[0.04] dark:[&_.recharts-rectangle.recharts-tooltip-cursor]:fill-white/[0.04]\",\n \"[&_.recharts-reference-line_[stroke='#ccc']]:stroke-black/[0.06] dark:[&_.recharts-reference-line_[stroke='#ccc']]:stroke-white/[0.06]\",\n \"[&_.recharts-sector[stroke='#fff']]:stroke-transparent\",\n \"[&_.recharts-sector]:outline-none\",\n \"[&_.recharts-surface]:outline-none\",\n className\n )}\n {...props}\n style={{\n ...props.style,\n maxHeight,\n }}\n >\n <DesignChartStyle id={chartId} config={config} />\n <RechartsPrimitive.ResponsiveContainer maxHeight={maxHeight}>\n {children}\n </RechartsPrimitive.ResponsiveContainer>\n </div>\n </ChartContext.Provider>\n );\n});\nDesignChartContainer.displayName = \"DesignChartContainer\";\n\n/**\n * Helper to extract item config from a Recharts payload object.\n */\nexport function getPayloadConfigFromPayload(\n config: DesignChartConfig,\n payload: unknown,\n key: string,\n) {\n if (typeof payload !== \"object\" || payload === null) {\n return undefined;\n }\n\n const payloadPayload =\n \"payload\" in payload &&\n typeof payload.payload === \"object\" &&\n payload.payload !== null\n ? payload.payload\n : undefined;\n\n let configLabelKey: string = key;\n\n if (\n key in payload &&\n typeof payload[key as keyof typeof payload] === \"string\"\n ) {\n configLabelKey = payload[key as keyof typeof payload] as string;\n } else if (\n payloadPayload &&\n key in payloadPayload &&\n typeof payloadPayload[key as keyof typeof payloadPayload] === \"string\"\n ) {\n configLabelKey = payloadPayload[\n key as keyof typeof payloadPayload\n ] as string;\n }\n\n return configLabelKey in config\n ? config[configLabelKey]\n : config[key as keyof typeof config];\n}\n"],"mappings":";;;;;;;;AAMA,MAAM,SAAS;CAAE,OAAO;CAAI,MAAM;CAAS;AAgB3C,MAAM,eAAeA,QAAM,cAAwC,KAAK;AAExE,SAAgB,iBAAiB;CAC/B,MAAM,UAAUA,QAAM,WAAW,aAAa;AAC9C,KAAI,CAAC,QACH,OAAM,IAAI,MAAM,gEAAgE;AAElF,QAAO;;AAGT,SAAgB,iBAAiB,EAAE,IAAI,UAAqD;CAC1F,MAAM,cAAc,OAAO,QAAQ,OAAO,CAAC,QACxC,CAAC,GAAG,SAAS,IAAI,SAAS,IAAI,MAChC;AAED,KAAI,CAAC,YAAY,OACf,QAAO;AAGT,QACE,oBAAC,WACC,yBAAyB,EACvB,QAAQ,OAAO,QAAQ,OAAO,CAC3B,KACE,CAAC,OAAO,YAAY;EAC/B,OAAO,eAAe,GAAG;EACzB,YACa,KAAK,CAAC,KAAK,gBAAgB;EAC1B,MAAM,QAChB,WAAW,QAAQ,UACnB,WAAW;AACD,SAAO,QAAQ,aAAa,IAAI,IAAI,MAAM,KAAK;GAC/C,CACD,KAAK,KAAK,CAAC;;EAGf,CACA,KAAK,KAAK,EACd,GACD;;AAIN,MAAa,uBAAuBA,QAAM,YASvC,EAAE,IAAI,WAAW,UAAU,QAAQ,WAAW,GAAG,SAAS,QAAQ;CACnE,MAAM,WAAWA,QAAM,OAAO;CAC9B,MAAM,UAAU,SAAS,MAAM,SAAS,QAAQ,MAAM,GAAG;AAEzD,QACE,oBAAC,aAAa;EAAS,OAAO,EAAE,QAAQ;YACtC,qBAAC;GACC,cAAY;GACP;GACL,WAAW,GACT,4CACA,gEACA,kJACA,wIACA,uDACA,oCACA,kIACA,kIACA,4IACA,0IACA,0DACA,qCACA,sCACA,UACD;GACD,GAAI;GACJ,OAAO;IACL,GAAG,MAAM;IACT;IACD;cAED,oBAAC;IAAiB,IAAI;IAAiB;KAAU,EACjD,oBAAC,kBAAkB;IAA+B;IAC/C;KACqC;IACpC;GACgB;EAE1B;AACF,qBAAqB,cAAc;;;;AAKnC,SAAgB,4BACd,QACA,SACA,KACA;AACA,KAAI,OAAO,YAAY,YAAY,YAAY,KAC7C;CAGF,MAAM,iBACJ,aAAa,WACb,OAAO,QAAQ,YAAY,YAC3B,QAAQ,YAAY,OAChB,QAAQ,UACR;CAEN,IAAI,iBAAyB;AAE7B,KACE,OAAO,WACP,OAAO,QAAQ,SAAiC,SAEhD,kBAAiB,QAAQ;UAEzB,kBACA,OAAO,kBACP,OAAO,eAAe,SAAwC,SAE9D,kBAAiB,eACf;AAIJ,QAAO,kBAAkB,SACrB,OAAO,kBACP,OAAO"}
1
+ {"version":3,"file":"chart-container.js","names":["React"],"sources":["../../../src/components/chart-container.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport * as RechartsPrimitive from \"recharts\";\nimport { cn } from \"@hexclave/ui\";\n\nconst THEMES = { light: \"\", dark: \".dark\" } as const;\n\nexport type DesignChartConfig = {\n [k in string]: {\n label?: React.ReactNode,\n icon?: React.ComponentType,\n } & (\n | { color?: string, theme?: never }\n | { color?: never, theme: Record<keyof typeof THEMES, string> }\n )\n};\n\ntype ChartContextProps = {\n config: DesignChartConfig,\n};\n\nconst ChartContext = React.createContext<ChartContextProps | null>(null);\n\nexport function useDesignChart() {\n const context = React.useContext(ChartContext);\n if (!context) {\n throw new Error(\"useDesignChart must be used within a <DesignChartContainer />\");\n }\n return context;\n}\n\nexport function DesignChartStyle({ id, config }: { id: string, config: DesignChartConfig }) {\n const colorConfig = Object.entries(config).filter(\n ([_, cfg]) => cfg.theme || cfg.color\n );\n\n if (!colorConfig.length) {\n return null;\n }\n\n return (\n <style\n dangerouslySetInnerHTML={{\n __html: Object.entries(THEMES)\n .map(\n ([theme, prefix]) => `\n${prefix} [data-chart=${id}] {\n${colorConfig\n .map(([key, itemConfig]) => {\n const color =\n itemConfig.theme?.[theme as keyof typeof itemConfig.theme] ||\n itemConfig.color;\n return color ? ` --color-${key}: ${color};` : null;\n })\n .join(\"\\n\")}\n}\n`\n )\n .join(\"\\n\"),\n }}\n />\n );\n}\n\nexport const DesignChartContainer = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> & {\n maxHeight?: number,\n config: DesignChartConfig,\n children: React.ComponentProps<\n typeof RechartsPrimitive.ResponsiveContainer\n >[\"children\"],\n }\n>(({ id, className, children, config, maxHeight, ...props }, ref) => {\n const uniqueId = React.useId();\n const chartId = `chart-${id || uniqueId.replace(/:/g, \"\")}`;\n\n return (\n <ChartContext.Provider value={{ config }}>\n <div\n data-chart={chartId}\n ref={ref}\n className={cn(\n \"flex aspect-video justify-center text-xs\",\n \"[&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground\",\n \"[&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-black/[0.06] dark:[&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-white/[0.06]\",\n \"[&_.recharts-curve.recharts-tooltip-cursor]:stroke-black/[0.12] dark:[&_.recharts-curve.recharts-tooltip-cursor]:stroke-white/[0.12]\",\n \"[&_.recharts-dot[stroke='#fff']]:stroke-transparent\",\n \"[&_.recharts-layer]:outline-none\",\n \"[&_.recharts-polar-grid_[stroke='#ccc']]:stroke-black/[0.06] dark:[&_.recharts-polar-grid_[stroke='#ccc']]:stroke-white/[0.06]\",\n \"[&_.recharts-radial-bar-background-sector]:fill-black/[0.04] dark:[&_.recharts-radial-bar-background-sector]:fill-white/[0.04]\",\n \"[&_.recharts-rectangle.recharts-tooltip-cursor]:fill-black/[0.04] dark:[&_.recharts-rectangle.recharts-tooltip-cursor]:fill-white/[0.04]\",\n \"[&_.recharts-reference-line_[stroke='#ccc']]:stroke-black/[0.06] dark:[&_.recharts-reference-line_[stroke='#ccc']]:stroke-white/[0.06]\",\n \"[&_.recharts-sector[stroke='#fff']]:stroke-transparent\",\n \"[&_.recharts-sector]:outline-none\",\n \"[&_.recharts-surface]:outline-none\",\n className\n )}\n {...props}\n style={{\n ...props.style,\n maxHeight,\n }}\n >\n <DesignChartStyle id={chartId} config={config} />\n <RechartsPrimitive.ResponsiveContainer maxHeight={maxHeight}>\n {children}\n </RechartsPrimitive.ResponsiveContainer>\n </div>\n </ChartContext.Provider>\n );\n});\nDesignChartContainer.displayName = \"DesignChartContainer\";\n\n/**\n * Helper to extract item config from a Recharts payload object.\n */\nexport function getPayloadConfigFromPayload(\n config: DesignChartConfig,\n payload: unknown,\n key: string,\n) {\n if (typeof payload !== \"object\" || payload === null) {\n return undefined;\n }\n\n const payloadPayload =\n \"payload\" in payload &&\n typeof payload.payload === \"object\" &&\n payload.payload !== null\n ? payload.payload\n : undefined;\n\n let configLabelKey: string = key;\n\n if (\n key in payload &&\n typeof payload[key as keyof typeof payload] === \"string\"\n ) {\n configLabelKey = payload[key as keyof typeof payload] as string;\n } else if (\n payloadPayload &&\n key in payloadPayload &&\n typeof payloadPayload[key as keyof typeof payloadPayload] === \"string\"\n ) {\n configLabelKey = payloadPayload[\n key as keyof typeof payloadPayload\n ] as string;\n }\n\n return configLabelKey in config\n ? config[configLabelKey]\n : config[key as keyof typeof config];\n}\n"],"mappings":";;;;;;AAMA,MAAM,SAAS;CAAE,OAAO;CAAI,MAAM;AAAQ;AAgB1C,MAAM,eAAeA,QAAM,cAAwC,IAAI;AAEvE,SAAgB,iBAAiB;CAC/B,MAAM,UAAUA,QAAM,WAAW,YAAY;CAC7C,IAAI,CAAC,SACH,MAAM,IAAI,MAAM,+DAA+D;CAEjF,OAAO;AACT;AAEA,SAAgB,iBAAiB,EAAE,IAAI,UAAqD;CAC1F,MAAM,cAAc,OAAO,QAAQ,MAAM,CAAC,CAAC,QACxC,CAAC,GAAG,SAAS,IAAI,SAAS,IAAI,KACjC;CAEA,IAAI,CAAC,YAAY,QACf,OAAO;CAGT,OACE,oBAAC,SAAD,EACE,yBAAyB,EACvB,QAAQ,OAAO,QAAQ,MAAM,CAAC,CAC3B,KACE,CAAC,OAAO,YAAY;EAC/B,OAAO,eAAe,GAAG;EACzB,YACa,KAAK,CAAC,KAAK,gBAAgB;EAC1B,MAAM,QAChB,WAAW,QAAQ,UACnB,WAAW;EACD,OAAO,QAAQ,aAAa,IAAI,IAAI,MAAM,KAAK;CACjD,CAAC,CAAC,CACD,KAAK,IAAI,EAAE;;CAGhB,CAAC,CACA,KAAK,IAAI,EACd,EACD,CAAA;AAEL;AAEA,MAAa,uBAAuBA,QAAM,YASvC,EAAE,IAAI,WAAW,UAAU,QAAQ,WAAW,GAAG,SAAS,QAAQ;CACnE,MAAM,WAAWA,QAAM,MAAM;CAC7B,MAAM,UAAU,SAAS,MAAM,SAAS,QAAQ,MAAM,EAAE;CAExD,OACE,oBAAC,aAAa,UAAd;EAAuB,OAAO,EAAE,OAAO;YACrC,qBAAC,OAAD;GACE,cAAY;GACP;GACL,WAAW,GACT,4CACA,gEACA,kJACA,wIACA,uDACA,oCACA,kIACA,kIACA,4IACA,0IACA,0DACA,qCACA,sCACA,SACF;GACA,GAAI;GACJ,OAAO;IACL,GAAG,MAAM;IACT;GACF;aAvBF,CAyBE,oBAAC,kBAAD;IAAkB,IAAI;IAAiB;GAAS,CAAA,GAChD,oBAAC,kBAAkB,qBAAnB;IAAkD;IAC/C;GACoC,CAAA,CACpC;;CACgB,CAAA;AAE3B,CAAC;AACD,qBAAqB,cAAc;;;;AAKnC,SAAgB,4BACd,QACA,SACA,KACA;CACA,IAAI,OAAO,YAAY,YAAY,YAAY,MAC7C;CAGF,MAAM,iBACJ,aAAa,WACb,OAAO,QAAQ,YAAY,YAC3B,QAAQ,YAAY,OAChB,QAAQ,UACR,KAAA;CAEN,IAAI,iBAAyB;CAE7B,IACE,OAAO,WACP,OAAO,QAAQ,SAAiC,UAEhD,iBAAiB,QAAQ;MACpB,IACL,kBACA,OAAO,kBACP,OAAO,eAAe,SAAwC,UAE9D,iBAAiB,eACf;CAIJ,OAAO,kBAAkB,SACrB,OAAO,kBACP,OAAO;AACb"}
@@ -2,7 +2,7 @@ import * as React$1 from "react";
2
2
  import * as RechartsPrimitive from "recharts";
3
3
 
4
4
  //#region src/components/chart-legend.d.ts
5
- declare const DesignChartLegendContent: React$1.ForwardRefExoticComponent<Omit<React$1.ClassAttributes<HTMLDivElement> & React$1.HTMLAttributes<HTMLDivElement> & Pick<RechartsPrimitive.LegendProps, "payload" | "verticalAlign"> & {
5
+ declare const DesignChartLegendContent: React$1.ForwardRefExoticComponent<Omit<React$1.ClassAttributes<HTMLDivElement> & React$1.HTMLAttributes<HTMLDivElement> & Pick<RechartsPrimitive.LegendProps, "verticalAlign" | "payload"> & {
6
6
  hideIcon?: boolean;
7
7
  nameKey?: string;
8
8
  }, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
@@ -1,10 +1,8 @@
1
1
  "use client";
2
-
3
2
  import { cn } from "@hexclave/ui";
4
3
  import { jsx, jsxs } from "react/jsx-runtime";
5
4
  import * as React$1 from "react";
6
5
  import { getPayloadConfigFromPayload, useDesignChart } from "./chart-container.js";
7
-
8
6
  //#region src/components/chart-legend.tsx
9
7
  const DesignChartLegendContent = React$1.forwardRef(({ className, hideIcon = false, payload, verticalAlign = "bottom", nameKey }, ref) => {
10
8
  const { config } = useDesignChart();
@@ -28,7 +26,7 @@ const DesignChartLegendContent = React$1.forwardRef(({ className, hideIcon = fal
28
26
  });
29
27
  });
30
28
  DesignChartLegendContent.displayName = "DesignChartLegendContent";
31
-
32
29
  //#endregion
33
30
  export { DesignChartLegendContent };
31
+
34
32
  //# sourceMappingURL=chart-legend.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chart-legend.js","names":["React"],"sources":["../../../src/components/chart-legend.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport * as RechartsPrimitive from \"recharts\";\nimport { cn } from \"@hexclave/ui\";\nimport { useDesignChart, getPayloadConfigFromPayload } from \"./chart-container\";\n\nexport const DesignChartLegendContent = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> &\n Pick<RechartsPrimitive.LegendProps, \"payload\" | \"verticalAlign\"> & {\n hideIcon?: boolean,\n nameKey?: string,\n }\n>(\n (\n { className, hideIcon = false, payload, verticalAlign = \"bottom\", nameKey },\n ref\n ) => {\n const { config } = useDesignChart();\n\n if (!payload?.length) {\n return null;\n }\n\n return (\n <div\n ref={ref}\n className={cn(\n \"flex flex-wrap items-center justify-center gap-2\",\n verticalAlign === \"top\" ? \"pb-3\" : \"pt-3\",\n className\n )}\n >\n {payload.map((item) => {\n const key = `${nameKey || item.dataKey || \"value\"}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n\n return (\n <div\n key={item.value}\n className={cn(\n \"flex items-center gap-1.5 rounded-full bg-foreground/[0.03] ring-1 ring-foreground/[0.06] px-3 py-1.5 text-xs\",\n \"transition-colors duration-150 hover:transition-none hover:bg-foreground/[0.05]\"\n )}\n >\n {itemConfig?.icon && !hideIcon ? (\n <itemConfig.icon />\n ) : (\n <span\n className=\"h-2 w-2 shrink-0 rounded-full\"\n style={{ backgroundColor: item.color }}\n />\n )}\n <span className=\"font-medium text-foreground\">\n {itemConfig?.label || item.value}\n </span>\n </div>\n );\n })}\n </div>\n );\n }\n);\nDesignChartLegendContent.displayName = \"DesignChartLegendContent\";\n"],"mappings":";;;;;;;;AAOA,MAAa,2BAA2BA,QAAM,YAS1C,EAAE,WAAW,WAAW,OAAO,SAAS,gBAAgB,UAAU,WAClE,QACG;CACH,MAAM,EAAE,WAAW,gBAAgB;AAEnC,KAAI,CAAC,SAAS,OACZ,QAAO;AAGT,QACE,oBAAC;EACM;EACL,WAAW,GACT,oDACA,kBAAkB,QAAQ,SAAS,QACnC,UACD;YAEA,QAAQ,KAAK,SAAS;GAErB,MAAM,aAAa,4BAA4B,QAAQ,MAD3C,GAAG,WAAW,KAAK,WAAW,UACuB;AAEjE,UACE,qBAAC;IAEC,WAAW,GACT,iHACA,kFACD;eAEA,YAAY,QAAQ,CAAC,WACpB,oBAAC,WAAW,SAAO,GAEnB,oBAAC;KACC,WAAU;KACV,OAAO,EAAE,iBAAiB,KAAK,OAAO;MACtC,EAEJ,oBAAC;KAAK,WAAU;eACb,YAAY,SAAS,KAAK;MACtB;MAhBF,KAAK,MAiBN;IAER;GACE;EAGX;AACD,yBAAyB,cAAc"}
1
+ {"version":3,"file":"chart-legend.js","names":["React"],"sources":["../../../src/components/chart-legend.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport * as RechartsPrimitive from \"recharts\";\nimport { cn } from \"@hexclave/ui\";\nimport { useDesignChart, getPayloadConfigFromPayload } from \"./chart-container\";\n\nexport const DesignChartLegendContent = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> &\n Pick<RechartsPrimitive.LegendProps, \"payload\" | \"verticalAlign\"> & {\n hideIcon?: boolean,\n nameKey?: string,\n }\n>(\n (\n { className, hideIcon = false, payload, verticalAlign = \"bottom\", nameKey },\n ref\n ) => {\n const { config } = useDesignChart();\n\n if (!payload?.length) {\n return null;\n }\n\n return (\n <div\n ref={ref}\n className={cn(\n \"flex flex-wrap items-center justify-center gap-2\",\n verticalAlign === \"top\" ? \"pb-3\" : \"pt-3\",\n className\n )}\n >\n {payload.map((item) => {\n const key = `${nameKey || item.dataKey || \"value\"}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n\n return (\n <div\n key={item.value}\n className={cn(\n \"flex items-center gap-1.5 rounded-full bg-foreground/[0.03] ring-1 ring-foreground/[0.06] px-3 py-1.5 text-xs\",\n \"transition-colors duration-150 hover:transition-none hover:bg-foreground/[0.05]\"\n )}\n >\n {itemConfig?.icon && !hideIcon ? (\n <itemConfig.icon />\n ) : (\n <span\n className=\"h-2 w-2 shrink-0 rounded-full\"\n style={{ backgroundColor: item.color }}\n />\n )}\n <span className=\"font-medium text-foreground\">\n {itemConfig?.label || item.value}\n </span>\n </div>\n );\n })}\n </div>\n );\n }\n);\nDesignChartLegendContent.displayName = \"DesignChartLegendContent\";\n"],"mappings":";;;;;;AAOA,MAAa,2BAA2BA,QAAM,YAS1C,EAAE,WAAW,WAAW,OAAO,SAAS,gBAAgB,UAAU,WAClE,QACG;CACH,MAAM,EAAE,WAAW,eAAe;CAElC,IAAI,CAAC,SAAS,QACZ,OAAO;CAGT,OACE,oBAAC,OAAD;EACO;EACL,WAAW,GACT,oDACA,kBAAkB,QAAQ,SAAS,QACnC,SACF;YAEC,QAAQ,KAAK,SAAS;GAErB,MAAM,aAAa,4BAA4B,QAAQ,MAAM,GAD9C,WAAW,KAAK,WAAW,SACsB;GAEhE,OACE,qBAAC,OAAD;IAEE,WAAW,GACT,iHACA,iFACF;cALF,CAOG,YAAY,QAAQ,CAAC,WACpB,oBAAC,WAAW,MAAZ,CAAkB,CAAA,IAElB,oBAAC,QAAD;KACE,WAAU;KACV,OAAO,EAAE,iBAAiB,KAAK,MAAM;IACtC,CAAA,GAEH,oBAAC,QAAD;KAAM,WAAU;eACb,YAAY,SAAS,KAAK;IACvB,CAAA,CACH;MAjBE,KAAK,KAiBP;EAET,CAAC;CACE,CAAA;AAET,CACF;AACA,yBAAyB,cAAc"}
@@ -1 +1 @@
1
- {"version":3,"file":"chart-theme.d.ts","names":[],"sources":["../../../src/components/chart-theme.tsx"],"mappings":";KAEY,qBAAA;EACV,KAAA;EACA,IAAA;AAAA;;;AAOF;;cAAa,mBAAA,WAA8B,qBAAA;AAAA,KAS/B,oBAAA;;AAAZ;;iBAcgB,mBAAA,CACd,WAAA,WAAsB,oBAAA,EACtB,IAAA;;;AAFF;cAaa,uBAAA;AAAA,cACA,4BAAA;EAAA,SAGH,IAAA;EAAA,SAAA,QAAA;AAAA"}
1
+ {"version":3,"file":"chart-theme.d.ts","names":[],"sources":["../../../src/components/chart-theme.tsx"],"mappings":";KAEY,qBAAA;EACV,KAAA;EACA,IAAI;AAAA;;AAAA;AAON;;cAAa,mBAAA,WAA8B,qBAAqB;AAAA,KASpD,oBAAA;AAToD;AAShE;;AATgE,iBAuBhD,mBAAA,CACd,WAAA,WAAsB,oBAAoB,EAC1C,IAAA;;AAhB8B;AAchC;cAaa,uBAAA;AAAA,cACA,4BAAA;EAAA,SAGH,IAAA;EAAA,SAAA,QAAA;AAAA"}
@@ -1,5 +1,4 @@
1
1
  "use client";
2
-
3
2
  //#region src/components/chart-theme.tsx
4
3
  /**
5
4
  * Design-system-consistent chart colors that work in light and dark mode.
@@ -31,7 +30,7 @@ const DESIGN_CHART_COLORS = [
31
30
  dark: "hsl(0, 84%, 65%)"
32
31
  }
33
32
  ];
34
- const colorNameIndexMap = new Map([
33
+ const colorNameIndexMap = /* @__PURE__ */ new Map([
35
34
  ["blue", 0],
36
35
  ["cyan", 1],
37
36
  ["purple", 2],
@@ -53,7 +52,7 @@ const DESIGN_CHART_AXIS_TICK_STYLE = {
53
52
  fill: "hsl(0 0% 50% / 0.5)",
54
53
  fontSize: 11
55
54
  };
56
-
57
55
  //#endregion
58
56
  export { DESIGN_CHART_AXIS_TICK_STYLE, DESIGN_CHART_COLORS, DESIGN_CHART_GRID_COLOR, getDesignChartColor };
57
+
59
58
  //# sourceMappingURL=chart-theme.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chart-theme.js","names":[],"sources":["../../../src/components/chart-theme.tsx"],"sourcesContent":["\"use client\";\n\nexport type DesignChartColorEntry = {\n light: string,\n dark: string,\n};\n\n/**\n * Design-system-consistent chart colors that work in light and dark mode.\n * Maps to the gradient system used across the dashboard design components.\n */\nexport const DESIGN_CHART_COLORS: readonly DesignChartColorEntry[] = [\n { light: \"hsl(221, 83%, 53%)\", dark: \"hsl(217, 91%, 60%)\" }, // blue\n { light: \"hsl(192, 91%, 36%)\", dark: \"hsl(188, 94%, 43%)\" }, // cyan\n { light: \"hsl(271, 91%, 65%)\", dark: \"hsl(270, 95%, 75%)\" }, // purple\n { light: \"hsl(160, 84%, 39%)\", dark: \"hsl(160, 84%, 45%)\" }, // emerald/green\n { light: \"hsl(38, 92%, 50%)\", dark: \"hsl(38, 92%, 50%)\" }, // amber/orange\n { light: \"hsl(0, 84%, 60%)\", dark: \"hsl(0, 84%, 65%)\" }, // red\n] as const;\n\nexport type DesignChartColorName = \"blue\" | \"cyan\" | \"purple\" | \"green\" | \"orange\" | \"red\";\n\nconst colorNameIndexMap = new Map<DesignChartColorName, number>([\n [\"blue\", 0],\n [\"cyan\", 1],\n [\"purple\", 2],\n [\"green\", 3],\n [\"orange\", 4],\n [\"red\", 5],\n]);\n\n/**\n * Get a chart color by index (wraps around) or by name.\n */\nexport function getDesignChartColor(\n indexOrName: number | DesignChartColorName,\n mode: \"light\" | \"dark\" = \"dark\",\n): string {\n const index = typeof indexOrName === \"string\"\n ? colorNameIndexMap.get(indexOrName) ?? 0\n : indexOrName % DESIGN_CHART_COLORS.length;\n return DESIGN_CHART_COLORS[index][mode];\n}\n\n/**\n * Recharts-compatible grid/axis styling constants that match the design system.\n */\nexport const DESIGN_CHART_GRID_COLOR = \"hsl(0 0% 50% / 0.12)\";\nexport const DESIGN_CHART_AXIS_TICK_STYLE = {\n fill: \"hsl(0 0% 50% / 0.5)\",\n fontSize: 11,\n} as const;\n"],"mappings":";;;;;;;AAWA,MAAa,sBAAwD;CACnE;EAAE,OAAO;EAAsB,MAAM;EAAsB;CAC3D;EAAE,OAAO;EAAsB,MAAM;EAAsB;CAC3D;EAAE,OAAO;EAAsB,MAAM;EAAsB;CAC3D;EAAE,OAAO;EAAsB,MAAM;EAAsB;CAC3D;EAAE,OAAO;EAAsB,MAAM;EAAqB;CAC1D;EAAE,OAAO;EAAsB,MAAM;EAAoB;CAC1D;AAID,MAAM,oBAAoB,IAAI,IAAkC;CAC9D,CAAC,QAAQ,EAAE;CACX,CAAC,QAAQ,EAAE;CACX,CAAC,UAAU,EAAE;CACb,CAAC,SAAS,EAAE;CACZ,CAAC,UAAU,EAAE;CACb,CAAC,OAAO,EAAE;CACX,CAAC;;;;AAKF,SAAgB,oBACd,aACA,OAAyB,QACjB;AAIR,QAAO,oBAHO,OAAO,gBAAgB,WACjC,kBAAkB,IAAI,YAAY,IAAI,IACtC,cAAc,oBAAoB,QACJ;;;;;AAMpC,MAAa,0BAA0B;AACvC,MAAa,+BAA+B;CAC1C,MAAM;CACN,UAAU;CACX"}
1
+ {"version":3,"file":"chart-theme.js","names":[],"sources":["../../../src/components/chart-theme.tsx"],"sourcesContent":["\"use client\";\n\nexport type DesignChartColorEntry = {\n light: string,\n dark: string,\n};\n\n/**\n * Design-system-consistent chart colors that work in light and dark mode.\n * Maps to the gradient system used across the dashboard design components.\n */\nexport const DESIGN_CHART_COLORS: readonly DesignChartColorEntry[] = [\n { light: \"hsl(221, 83%, 53%)\", dark: \"hsl(217, 91%, 60%)\" }, // blue\n { light: \"hsl(192, 91%, 36%)\", dark: \"hsl(188, 94%, 43%)\" }, // cyan\n { light: \"hsl(271, 91%, 65%)\", dark: \"hsl(270, 95%, 75%)\" }, // purple\n { light: \"hsl(160, 84%, 39%)\", dark: \"hsl(160, 84%, 45%)\" }, // emerald/green\n { light: \"hsl(38, 92%, 50%)\", dark: \"hsl(38, 92%, 50%)\" }, // amber/orange\n { light: \"hsl(0, 84%, 60%)\", dark: \"hsl(0, 84%, 65%)\" }, // red\n] as const;\n\nexport type DesignChartColorName = \"blue\" | \"cyan\" | \"purple\" | \"green\" | \"orange\" | \"red\";\n\nconst colorNameIndexMap = new Map<DesignChartColorName, number>([\n [\"blue\", 0],\n [\"cyan\", 1],\n [\"purple\", 2],\n [\"green\", 3],\n [\"orange\", 4],\n [\"red\", 5],\n]);\n\n/**\n * Get a chart color by index (wraps around) or by name.\n */\nexport function getDesignChartColor(\n indexOrName: number | DesignChartColorName,\n mode: \"light\" | \"dark\" = \"dark\",\n): string {\n const index = typeof indexOrName === \"string\"\n ? colorNameIndexMap.get(indexOrName) ?? 0\n : indexOrName % DESIGN_CHART_COLORS.length;\n return DESIGN_CHART_COLORS[index][mode];\n}\n\n/**\n * Recharts-compatible grid/axis styling constants that match the design system.\n */\nexport const DESIGN_CHART_GRID_COLOR = \"hsl(0 0% 50% / 0.12)\";\nexport const DESIGN_CHART_AXIS_TICK_STYLE = {\n fill: \"hsl(0 0% 50% / 0.5)\",\n fontSize: 11,\n} as const;\n"],"mappings":";;;;;;AAWA,MAAa,sBAAwD;CACnE;EAAE,OAAO;EAAsB,MAAM;CAAqB;CAC1D;EAAE,OAAO;EAAsB,MAAM;CAAqB;CAC1D;EAAE,OAAO;EAAsB,MAAM;CAAqB;CAC1D;EAAE,OAAO;EAAsB,MAAM;CAAqB;CAC1D;EAAE,OAAO;EAAsB,MAAM;CAAoB;CACzD;EAAE,OAAO;EAAsB,MAAM;CAAmB;AAC1D;AAIA,MAAM,oCAAoB,IAAI,IAAkC;CAC9D,CAAC,QAAQ,CAAC;CACV,CAAC,QAAQ,CAAC;CACV,CAAC,UAAU,CAAC;CACZ,CAAC,SAAS,CAAC;CACX,CAAC,UAAU,CAAC;CACZ,CAAC,OAAO,CAAC;AACX,CAAC;;;;AAKD,SAAgB,oBACd,aACA,OAAyB,QACjB;CAIR,OAAO,oBAHO,OAAO,gBAAgB,WACjC,kBAAkB,IAAI,WAAW,KAAK,IACtC,cAAc,oBAAoB,OACL,CAAC;AACpC;;;;AAKA,MAAa,0BAA0B;AACvC,MAAa,+BAA+B;CAC1C,MAAM;CACN,UAAU;AACZ"}
@@ -1,33 +1,29 @@
1
1
  import * as React$1 from "react";
2
2
  import * as RechartsPrimitive from "recharts";
3
- import * as recharts_types_component_DefaultTooltipContent0 from "recharts/types/component/DefaultTooltipContent";
4
- import * as recharts_types_util_types0 from "recharts/types/util/types";
5
- import * as recharts_types_component_Tooltip0 from "recharts/types/component/Tooltip";
6
- import * as recharts_types_util_payload_getUniqPayload0 from "recharts/types/util/payload/getUniqPayload";
7
3
 
8
4
  //#region src/components/chart-tooltip.d.ts
9
5
  declare const DesignChartTooltip: typeof RechartsPrimitive.Tooltip;
10
- declare const DesignChartTooltipContent: React$1.ForwardRefExoticComponent<Omit<RechartsPrimitive.DefaultTooltipContentProps<recharts_types_component_DefaultTooltipContent0.ValueType, recharts_types_component_DefaultTooltipContent0.NameType> & {
6
+ declare const DesignChartTooltipContent: React$1.ForwardRefExoticComponent<Omit<RechartsPrimitive.DefaultTooltipContentProps<import("recharts/types/component/DefaultTooltipContent").ValueType, import("recharts/types/component/DefaultTooltipContent").NameType> & {
11
7
  accessibilityLayer?: boolean;
12
8
  active?: boolean | undefined;
13
9
  includeHidden?: boolean | undefined;
14
- allowEscapeViewBox?: recharts_types_util_types0.AllowInDimension;
15
- animationDuration?: recharts_types_util_types0.AnimationDuration;
16
- animationEasing?: recharts_types_util_types0.AnimationTiming;
17
- content?: recharts_types_component_Tooltip0.ContentType<recharts_types_component_DefaultTooltipContent0.ValueType, recharts_types_component_DefaultTooltipContent0.NameType> | undefined;
18
- coordinate?: Partial<recharts_types_util_types0.Coordinate>;
10
+ allowEscapeViewBox?: import("recharts/types/util/types").AllowInDimension;
11
+ animationDuration?: import("recharts/types/util/types").AnimationDuration;
12
+ animationEasing?: import("recharts/types/util/types").AnimationTiming;
13
+ content?: import("recharts/types/component/Tooltip").ContentType<import("recharts/types/component/DefaultTooltipContent").ValueType, import("recharts/types/component/DefaultTooltipContent").NameType> | undefined;
14
+ coordinate?: Partial<import("recharts/types/util/types").Coordinate>;
19
15
  cursor?: boolean | React$1.ReactElement | React$1.SVGProps<SVGElement>;
20
16
  filterNull?: boolean;
21
17
  defaultIndex?: number;
22
18
  isAnimationActive?: boolean;
23
19
  offset?: number;
24
- payloadUniqBy?: recharts_types_util_payload_getUniqPayload0.UniqueOption<recharts_types_component_DefaultTooltipContent0.Payload<recharts_types_component_DefaultTooltipContent0.ValueType, recharts_types_component_DefaultTooltipContent0.NameType>> | undefined;
25
- position?: Partial<recharts_types_util_types0.Coordinate>;
26
- reverseDirection?: recharts_types_util_types0.AllowInDimension;
20
+ payloadUniqBy?: import("recharts/types/util/payload/getUniqPayload").UniqueOption<import("recharts/types/component/DefaultTooltipContent").Payload<import("recharts/types/component/DefaultTooltipContent").ValueType, import("recharts/types/component/DefaultTooltipContent").NameType>> | undefined;
21
+ position?: Partial<import("recharts/types/util/types").Coordinate>;
22
+ reverseDirection?: import("recharts/types/util/types").AllowInDimension;
27
23
  shared?: boolean;
28
24
  trigger?: "hover" | "click";
29
25
  useTranslate3d?: boolean;
30
- viewBox?: recharts_types_util_types0.CartesianViewBox;
26
+ viewBox?: import("recharts/types/util/types").CartesianViewBox;
31
27
  wrapperStyle?: React$1.CSSProperties;
32
28
  } & React$1.ClassAttributes<HTMLDivElement> & React$1.HTMLAttributes<HTMLDivElement> & {
33
29
  hideLabel?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"chart-tooltip.d.ts","names":[],"sources":["../../../src/components/chart-tooltip.tsx"],"mappings":";;;;;;;;cAOa,kBAAA,SAAkB,iBAAA,CAAA,OAAA;AAAA,cAElB,yBAAA,EAAyB,OAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,iBAAA,CAAA,0BAAA,CA0JrC,+CAAA,CA1JqC,SAAA,EAAA,+CAAA,CAAA,QAAA;;;;uBAAA,0BAAA,CAAA,gBAAA"}
1
+ {"version":3,"file":"chart-tooltip.d.ts","names":[],"sources":["../../../src/components/chart-tooltip.tsx"],"mappings":";;;;cAOa,kBAAA,SAAkB,iBAAA,CAAA,OAA4B;AAAA,cAE9C,yBAAA,EAAyB,OAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,iBAAA,CAAA,0BAAA,0DAAA,SAAA,2DAAA,QAAA"}
@@ -1,11 +1,9 @@
1
1
  "use client";
2
-
3
2
  import { cn } from "@hexclave/ui";
4
3
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
5
4
  import * as React$1 from "react";
6
5
  import * as RechartsPrimitive from "recharts";
7
6
  import { getPayloadConfigFromPayload, useDesignChart } from "./chart-container.js";
8
-
9
7
  //#region src/components/chart-tooltip.tsx
10
8
  const DesignChartTooltip = RechartsPrimitive.Tooltip;
11
9
  const DesignChartTooltipContent = React$1.forwardRef(({ active, payload, className, indicator = "dot", hideLabel = false, hideIndicator = false, label, labelFormatter, labelClassName, formatter, color, nameKey, labelKey }, ref) => {
@@ -38,7 +36,7 @@ const DesignChartTooltipContent = React$1.forwardRef(({ active, payload, classNa
38
36
  const nestLabel = payload.length === 1 && indicator !== "dot";
39
37
  return /* @__PURE__ */ jsxs("div", {
40
38
  ref,
41
- className: cn("grid min-w-[8rem] items-start gap-1.5 rounded-xl bg-background/95 px-3.5 py-2.5 text-xs shadow-lg backdrop-blur-xl ring-1 ring-foreground/[0.08]", className),
39
+ className: cn("grid min-w-[8rem] items-start gap-1.5 rounded-xl bg-white/95 px-3.5 py-2.5 text-xs shadow-lg ring-1 ring-black/[0.08] backdrop-blur-xl dark:bg-background/95 dark:ring-white/[0.08]", className),
42
40
  style: { zIndex: 9999 },
43
41
  children: [!nestLabel ? tooltipLabel : null, /* @__PURE__ */ jsx("div", {
44
42
  className: "grid gap-1.5",
@@ -78,7 +76,7 @@ const DesignChartTooltipContent = React$1.forwardRef(({ active, payload, classNa
78
76
  });
79
77
  });
80
78
  DesignChartTooltipContent.displayName = "DesignChartTooltipContent";
81
-
82
79
  //#endregion
83
80
  export { DesignChartTooltip, DesignChartTooltipContent };
81
+
84
82
  //# sourceMappingURL=chart-tooltip.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chart-tooltip.js","names":["React"],"sources":["../../../src/components/chart-tooltip.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport * as RechartsPrimitive from \"recharts\";\nimport { cn } from \"@hexclave/ui\";\nimport { useDesignChart, getPayloadConfigFromPayload } from \"./chart-container\";\n\nexport const DesignChartTooltip = RechartsPrimitive.Tooltip;\n\nexport const DesignChartTooltipContent = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<typeof RechartsPrimitive.Tooltip> &\n React.ComponentProps<\"div\"> & {\n hideLabel?: boolean,\n hideIndicator?: boolean,\n indicator?: \"line\" | \"dot\" | \"dashed\",\n nameKey?: string,\n labelKey?: string,\n }\n>(\n (\n {\n active,\n payload,\n className,\n indicator = \"dot\",\n hideLabel = false,\n hideIndicator = false,\n label,\n labelFormatter,\n labelClassName,\n formatter,\n color,\n nameKey,\n labelKey,\n },\n ref\n ) => {\n const { config } = useDesignChart();\n\n const tooltipLabel = React.useMemo(() => {\n if (hideLabel || !payload?.length) {\n return null;\n }\n\n const [item] = payload;\n const key = `${labelKey || item.dataKey || item.name || \"value\"}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n const configEntry = typeof label === \"string\" ? config[label as keyof typeof config] : undefined;\n const value =\n !labelKey && typeof label === \"string\"\n ? configEntry?.label ?? label\n : itemConfig?.label;\n\n if (labelFormatter) {\n return (\n <div className={cn(\"font-medium text-muted-foreground tracking-wide\", labelClassName)}>\n {labelFormatter(value, payload)}\n </div>\n );\n }\n\n if (!value) {\n return null;\n }\n\n return <div className={cn(\"font-medium text-muted-foreground tracking-wide\", labelClassName)}>{value}</div>;\n }, [\n label,\n labelFormatter,\n payload,\n hideLabel,\n labelClassName,\n config,\n labelKey,\n ]);\n\n if (!active || !payload?.length) {\n return null;\n }\n\n const nestLabel = payload.length === 1 && indicator !== \"dot\";\n\n return (\n <div\n ref={ref}\n className={cn(\n \"grid min-w-[8rem] items-start gap-1.5 rounded-xl bg-background/95 px-3.5 py-2.5 text-xs shadow-lg backdrop-blur-xl ring-1 ring-foreground/[0.08]\",\n className\n )}\n style={{ zIndex: 9999 }}\n >\n {!nestLabel ? tooltipLabel : null}\n <div className=\"grid gap-1.5\">\n {payload.map((item, index) => {\n const key = `${nameKey || item.name || item.dataKey || \"value\"}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n const indicatorColor = color || item.payload.fill || item.color;\n\n return (\n <div\n key={item.dataKey}\n className={cn(\n \"flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground\",\n indicator === \"dot\" && \"items-center\"\n )}\n >\n {formatter && item.value !== undefined && item.name ? (\n formatter(item.value, item.name, item, index, item.payload)\n ) : (\n <>\n {itemConfig?.icon ? (\n <itemConfig.icon />\n ) : (\n !hideIndicator && (\n <div\n className={cn(\n \"shrink-0 rounded-full\",\n {\n \"h-2 w-2 ring-2 ring-white/20\": indicator === \"dot\",\n \"w-1 rounded-[2px]\": indicator === \"line\",\n \"w-0 border-[1.5px] border-dashed bg-transparent rounded-[2px]\":\n indicator === \"dashed\",\n \"my-0.5\": nestLabel && indicator === \"dashed\",\n }\n )}\n style={\n {\n \"--color-bg\": indicatorColor,\n \"--color-border\": indicatorColor,\n backgroundColor: indicator === \"dot\" ? indicatorColor : undefined,\n } as React.CSSProperties\n }\n />\n )\n )}\n <div\n className={cn(\n \"flex flex-1 justify-between leading-none\",\n nestLabel ? \"items-end\" : \"items-center\"\n )}\n >\n <div className=\"grid gap-1.5\">\n {nestLabel ? tooltipLabel : null}\n <span className=\"text-[11px] text-muted-foreground\">\n {itemConfig?.label || item.name}\n </span>\n </div>\n {item.value != null && (\n <span className=\"ml-auto font-mono text-xs font-semibold tabular-nums text-foreground\">\n {typeof item.value === \"number\" ? item.value.toLocaleString() : item.value}\n </span>\n )}\n </div>\n </>\n )}\n </div>\n );\n })}\n </div>\n </div>\n );\n }\n);\nDesignChartTooltipContent.displayName = \"DesignChartTooltipContent\";\n"],"mappings":";;;;;;;;;AAOA,MAAa,qBAAqB,kBAAkB;AAEpD,MAAa,4BAA4BA,QAAM,YAY3C,EACE,QACA,SACA,WACA,YAAY,OACZ,YAAY,OACZ,gBAAgB,OAChB,OACA,gBACA,gBACA,WACA,OACA,SACA,YAEF,QACG;CACH,MAAM,EAAE,WAAW,gBAAgB;CAEnC,MAAM,eAAeA,QAAM,cAAc;AACvC,MAAI,aAAa,CAAC,SAAS,OACzB,QAAO;EAGT,MAAM,CAAC,QAAQ;EAEf,MAAM,aAAa,4BAA4B,QAAQ,MAD3C,GAAG,YAAY,KAAK,WAAW,KAAK,QAAQ,UACS;EACjE,MAAM,cAAc,OAAO,UAAU,WAAW,OAAO,SAAgC;EACvF,MAAM,QACJ,CAAC,YAAY,OAAO,UAAU,WAC1B,aAAa,SAAS,QACtB,YAAY;AAElB,MAAI,eACF,QACE,oBAAC;GAAI,WAAW,GAAG,mDAAmD,eAAe;aAClF,eAAe,OAAO,QAAQ;IAC3B;AAIV,MAAI,CAAC,MACH,QAAO;AAGT,SAAO,oBAAC;GAAI,WAAW,GAAG,mDAAmD,eAAe;aAAG;IAAY;IAC1G;EACD;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CAAC;AAEF,KAAI,CAAC,UAAU,CAAC,SAAS,OACvB,QAAO;CAGT,MAAM,YAAY,QAAQ,WAAW,KAAK,cAAc;AAExD,QACE,qBAAC;EACM;EACL,WAAW,GACT,oJACA,UACD;EACD,OAAO,EAAE,QAAQ,MAAM;aAEtB,CAAC,YAAY,eAAe,MAC7B,oBAAC;GAAI,WAAU;aACZ,QAAQ,KAAK,MAAM,UAAU;IAE5B,MAAM,aAAa,4BAA4B,QAAQ,MAD3C,GAAG,WAAW,KAAK,QAAQ,KAAK,WAAW,UACU;IACjE,MAAM,iBAAiB,SAAS,KAAK,QAAQ,QAAQ,KAAK;AAE1D,WACE,oBAAC;KAEC,WAAW,GACT,uGACA,cAAc,SAAS,eACxB;eAEA,aAAa,KAAK,UAAU,UAAa,KAAK,OAC7C,UAAU,KAAK,OAAO,KAAK,MAAM,MAAM,OAAO,KAAK,QAAQ,GAE3D,4CACG,YAAY,OACX,oBAAC,WAAW,SAAO,GAEnB,CAAC,iBACC,oBAAC;MACC,WAAW,GACT,yBACA;OACE,gCAAgC,cAAc;OAC9C,qBAAqB,cAAc;OACnC,iEACE,cAAc;OAChB,UAAU,aAAa,cAAc;OACtC,CACF;MACD,OACE;OACE,cAAc;OACd,kBAAkB;OAClB,iBAAiB,cAAc,QAAQ,iBAAiB;OACzD;OAEH,EAGN,qBAAC;MACC,WAAW,GACT,4CACA,YAAY,cAAc,eAC3B;iBAED,qBAAC;OAAI,WAAU;kBACZ,YAAY,eAAe,MAC5B,oBAAC;QAAK,WAAU;kBACb,YAAY,SAAS,KAAK;SACtB;QACH,EACL,KAAK,SAAS,QACb,oBAAC;OAAK,WAAU;iBACb,OAAO,KAAK,UAAU,WAAW,KAAK,MAAM,gBAAgB,GAAG,KAAK;QAChE;OAEL,IACL;OArDA,KAAK,QAuDN;KAER;IACE;GACF;EAGX;AACD,0BAA0B,cAAc"}
1
+ {"version":3,"file":"chart-tooltip.js","names":["React"],"sources":["../../../src/components/chart-tooltip.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport * as RechartsPrimitive from \"recharts\";\nimport { cn } from \"@hexclave/ui\";\nimport { useDesignChart, getPayloadConfigFromPayload } from \"./chart-container\";\n\nexport const DesignChartTooltip = RechartsPrimitive.Tooltip;\n\nexport const DesignChartTooltipContent = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<typeof RechartsPrimitive.Tooltip> &\n React.ComponentProps<\"div\"> & {\n hideLabel?: boolean,\n hideIndicator?: boolean,\n indicator?: \"line\" | \"dot\" | \"dashed\",\n nameKey?: string,\n labelKey?: string,\n }\n>(\n (\n {\n active,\n payload,\n className,\n indicator = \"dot\",\n hideLabel = false,\n hideIndicator = false,\n label,\n labelFormatter,\n labelClassName,\n formatter,\n color,\n nameKey,\n labelKey,\n },\n ref\n ) => {\n const { config } = useDesignChart();\n\n const tooltipLabel = React.useMemo(() => {\n if (hideLabel || !payload?.length) {\n return null;\n }\n\n const [item] = payload;\n const key = `${labelKey || item.dataKey || item.name || \"value\"}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n const configEntry = typeof label === \"string\" ? config[label as keyof typeof config] : undefined;\n const value =\n !labelKey && typeof label === \"string\"\n ? configEntry?.label ?? label\n : itemConfig?.label;\n\n if (labelFormatter) {\n return (\n <div className={cn(\"font-medium text-muted-foreground tracking-wide\", labelClassName)}>\n {labelFormatter(value, payload)}\n </div>\n );\n }\n\n if (!value) {\n return null;\n }\n\n return <div className={cn(\"font-medium text-muted-foreground tracking-wide\", labelClassName)}>{value}</div>;\n }, [\n label,\n labelFormatter,\n payload,\n hideLabel,\n labelClassName,\n config,\n labelKey,\n ]);\n\n if (!active || !payload?.length) {\n return null;\n }\n\n const nestLabel = payload.length === 1 && indicator !== \"dot\";\n\n return (\n <div\n ref={ref}\n className={cn(\n \"grid min-w-[8rem] items-start gap-1.5 rounded-xl bg-white/95 px-3.5 py-2.5 text-xs shadow-lg ring-1 ring-black/[0.08] backdrop-blur-xl dark:bg-background/95 dark:ring-white/[0.08]\",\n className\n )}\n style={{ zIndex: 9999 }}\n >\n {!nestLabel ? tooltipLabel : null}\n <div className=\"grid gap-1.5\">\n {payload.map((item, index) => {\n const key = `${nameKey || item.name || item.dataKey || \"value\"}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n const indicatorColor = color || item.payload.fill || item.color;\n\n return (\n <div\n key={item.dataKey}\n className={cn(\n \"flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground\",\n indicator === \"dot\" && \"items-center\"\n )}\n >\n {formatter && item.value !== undefined && item.name ? (\n formatter(item.value, item.name, item, index, item.payload)\n ) : (\n <>\n {itemConfig?.icon ? (\n <itemConfig.icon />\n ) : (\n !hideIndicator && (\n <div\n className={cn(\n \"shrink-0 rounded-full\",\n {\n \"h-2 w-2 ring-2 ring-white/20\": indicator === \"dot\",\n \"w-1 rounded-[2px]\": indicator === \"line\",\n \"w-0 border-[1.5px] border-dashed bg-transparent rounded-[2px]\":\n indicator === \"dashed\",\n \"my-0.5\": nestLabel && indicator === \"dashed\",\n }\n )}\n style={\n {\n \"--color-bg\": indicatorColor,\n \"--color-border\": indicatorColor,\n backgroundColor: indicator === \"dot\" ? indicatorColor : undefined,\n } as React.CSSProperties\n }\n />\n )\n )}\n <div\n className={cn(\n \"flex flex-1 justify-between leading-none\",\n nestLabel ? \"items-end\" : \"items-center\"\n )}\n >\n <div className=\"grid gap-1.5\">\n {nestLabel ? tooltipLabel : null}\n <span className=\"text-[11px] text-muted-foreground\">\n {itemConfig?.label || item.name}\n </span>\n </div>\n {item.value != null && (\n <span className=\"ml-auto font-mono text-xs font-semibold tabular-nums text-foreground\">\n {typeof item.value === \"number\" ? item.value.toLocaleString() : item.value}\n </span>\n )}\n </div>\n </>\n )}\n </div>\n );\n })}\n </div>\n </div>\n );\n }\n);\nDesignChartTooltipContent.displayName = \"DesignChartTooltipContent\";\n"],"mappings":";;;;;;;AAOA,MAAa,qBAAqB,kBAAkB;AAEpD,MAAa,4BAA4BA,QAAM,YAY3C,EACE,QACA,SACA,WACA,YAAY,OACZ,YAAY,OACZ,gBAAgB,OAChB,OACA,gBACA,gBACA,WACA,OACA,SACA,YAEF,QACG;CACH,MAAM,EAAE,WAAW,eAAe;CAElC,MAAM,eAAeA,QAAM,cAAc;EACvC,IAAI,aAAa,CAAC,SAAS,QACzB,OAAO;EAGT,MAAM,CAAC,QAAQ;EAEf,MAAM,aAAa,4BAA4B,QAAQ,MAAM,GAD9C,YAAY,KAAK,WAAW,KAAK,QAAQ,SACQ;EAChE,MAAM,cAAc,OAAO,UAAU,WAAW,OAAO,SAAgC,KAAA;EACvF,MAAM,QACJ,CAAC,YAAY,OAAO,UAAU,WAC1B,aAAa,SAAS,QACtB,YAAY;EAElB,IAAI,gBACF,OACE,oBAAC,OAAD;GAAK,WAAW,GAAG,mDAAmD,cAAc;aACjF,eAAe,OAAO,OAAO;EAC3B,CAAA;EAIT,IAAI,CAAC,OACH,OAAO;EAGT,OAAO,oBAAC,OAAD;GAAK,WAAW,GAAG,mDAAmD,cAAc;aAAI;EAAW,CAAA;CAC5G,GAAG;EACD;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CAAC;CAED,IAAI,CAAC,UAAU,CAAC,SAAS,QACvB,OAAO;CAGT,MAAM,YAAY,QAAQ,WAAW,KAAK,cAAc;CAExD,OACE,qBAAC,OAAD;EACO;EACL,WAAW,GACT,uLACA,SACF;EACA,OAAO,EAAE,QAAQ,KAAK;YANxB,CAQG,CAAC,YAAY,eAAe,MAC7B,oBAAC,OAAD;GAAK,WAAU;aACZ,QAAQ,KAAK,MAAM,UAAU;IAE5B,MAAM,aAAa,4BAA4B,QAAQ,MAAM,GAD9C,WAAW,KAAK,QAAQ,KAAK,WAAW,SACS;IAChE,MAAM,iBAAiB,SAAS,KAAK,QAAQ,QAAQ,KAAK;IAE1D,OACE,oBAAC,OAAD;KAEE,WAAW,GACT,uGACA,cAAc,SAAS,cACzB;eAEC,aAAa,KAAK,UAAU,KAAA,KAAa,KAAK,OAC7C,UAAU,KAAK,OAAO,KAAK,MAAM,MAAM,OAAO,KAAK,OAAO,IAE1D,qBAAA,UAAA,EAAA,UAAA,CACG,YAAY,OACX,oBAAC,WAAW,MAAZ,CAAkB,CAAA,IAElB,CAAC,iBACC,oBAAC,OAAD;MACE,WAAW,GACT,yBACA;OACE,gCAAgC,cAAc;OAC9C,qBAAqB,cAAc;OACnC,iEACE,cAAc;OAChB,UAAU,aAAa,cAAc;MACvC,CACF;MACA,OACE;OACE,cAAc;OACd,kBAAkB;OAClB,iBAAiB,cAAc,QAAQ,iBAAiB,KAAA;MAC1D;KAEH,CAAA,GAGL,qBAAC,OAAD;MACE,WAAW,GACT,4CACA,YAAY,cAAc,cAC5B;gBAJF,CAME,qBAAC,OAAD;OAAK,WAAU;iBAAf,CACG,YAAY,eAAe,MAC5B,oBAAC,QAAD;QAAM,WAAU;kBACb,YAAY,SAAS,KAAK;OACvB,CAAA,CACH;UACJ,KAAK,SAAS,QACb,oBAAC,QAAD;OAAM,WAAU;iBACb,OAAO,KAAK,UAAU,WAAW,KAAK,MAAM,eAAe,IAAI,KAAK;MACjE,CAAA,CAEL;OACL,EAAA,CAAA;IAED,GAvDE,KAAK,OAuDP;GAET,CAAC;EACE,CAAA,CACF;;AAET,CACF;AACA,0BAA0B,cAAc"}
@@ -1,5 +1,3 @@
1
- import * as react_jsx_runtime0 from "react/jsx-runtime";
2
-
3
1
  //#region src/components/cursor-blast-effect.d.ts
4
2
  type CursorBlastEffectProps = {
5
3
  /** Lifetime of each blast animation in ms. Default: 720 */blastLifetimeMs?: number; /** Maximum number of concurrent active blasts. Default: 18 */
@@ -21,7 +19,7 @@ declare function CursorBlastEffect({
21
19
  rageClickWindowMs,
22
20
  rageClickRadiusPx,
23
21
  containerRef
24
- }?: CursorBlastEffectProps): react_jsx_runtime0.JSX.Element | null;
22
+ }?: CursorBlastEffectProps): import("react/jsx-runtime").JSX.Element | null;
25
23
  //#endregion
26
24
  export { CursorBlastEffect, CursorBlastEffectProps };
27
25
  //# sourceMappingURL=cursor-blast-effect.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cursor-blast-effect.d.ts","names":[],"sources":["../../../src/components/cursor-blast-effect.tsx"],"mappings":";;;KA6BY,sBAAA;6DAEV,eAAA,WAFU;EAIV,eAAA;EAEA,kBAAA,WAJA;EAMA,iBAAA,WAFA;EAIA,iBAAA;EAAA;;;;;EAMA,YAAA,GAAe,KAAA,CAAM,SAAA,CAAU,WAAA;AAAA;AAAA,iBAGjB,iBAAA,CAAA;EACd,eAAA;EACA,eAAA;EACA,kBAAA;EACA,iBAAA;EACA,iBAAA;EACA;AAAA,IACC,sBAAA,GAA2B,kBAAA,CAAA,GAAA,CAAA,OAAA"}
1
+ {"version":3,"file":"cursor-blast-effect.d.ts","names":[],"sources":["../../../src/components/cursor-blast-effect.tsx"],"mappings":";KA6BY,sBAAA;EAAA,2DAEV,eAAA;EAEA,eAAA,WAFA;EAIA,kBAAA;EAEA,iBAAA,WAEA;EAAA,iBAAA;EAMe;;;;AAA2B;EAA1C,YAAA,GAAe,KAAA,CAAM,SAAS,CAAC,WAAA;AAAA;AAAA,iBAGjB,iBAAA;EACd,eAAA;EACA,eAAA;EACA,kBAAA;EACA,iBAAA;EACA,iBAAA;EACA;AAAA,IACC,sBAAA,+BAA2B,GAAA,CAAA,OAAA"}
@@ -1,9 +1,7 @@
1
1
  "use client";
2
-
3
2
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
4
3
  import { useEffect, useRef, useState } from "react";
5
4
  import { createPortal } from "react-dom";
6
-
7
5
  //#region src/components/cursor-blast-effect.tsx
8
6
  const DEFAULT_BLAST_LIFETIME_MS = 720;
9
7
  const DEFAULT_MAX_ACTIVE_BLASTS = 18;
@@ -236,7 +234,7 @@ function CursorBlastEffect({ blastLifetimeMs = DEFAULT_BLAST_LIFETIME_MS, maxAct
236
234
  children: blastElements
237
235
  }), document.body);
238
236
  }
239
-
240
237
  //#endregion
241
238
  export { CursorBlastEffect };
239
+
242
240
  //# sourceMappingURL=cursor-blast-effect.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cursor-blast-effect.js","names":[],"sources":["../../../src/components/cursor-blast-effect.tsx"],"sourcesContent":["\"use client\";\n\nimport { useEffect, useRef, useState } from \"react\";\nimport { createPortal } from \"react-dom\";\n\ntype Blast = {\n id: number,\n x: number,\n y: number,\n size: number,\n hue: number,\n};\n\nconst DEFAULT_BLAST_LIFETIME_MS = 720;\nconst DEFAULT_MAX_ACTIVE_BLASTS = 18;\n\n/** Minimum rapid clicks in the time window to count as a rage click */\nconst DEFAULT_RAGE_CLICK_THRESHOLD = 3;\n/** Time window (ms) in which clicks must occur to be considered rage clicking */\nconst DEFAULT_RAGE_CLICK_WINDOW_MS = 600;\n/** Max distance (px) between clicks to still count as same-spot rage clicking */\nconst DEFAULT_RAGE_CLICK_RADIUS_PX = 60;\n\ntype RecentClick = {\n time: number,\n x: number,\n y: number,\n};\n\nexport type CursorBlastEffectProps = {\n /** Lifetime of each blast animation in ms. Default: 720 */\n blastLifetimeMs?: number,\n /** Maximum number of concurrent active blasts. Default: 18 */\n maxActiveBlasts?: number,\n /** Minimum rapid clicks in the time window to trigger a blast. Default: 3 */\n rageClickThreshold?: number,\n /** Time window (ms) for counting rage clicks. Default: 600 */\n rageClickWindowMs?: number,\n /** Max distance (px) between clicks to count as same-spot rage clicking. Default: 60 */\n rageClickRadiusPx?: number,\n /**\n * When provided, the blast effect is scoped to this container element.\n * Clicks are only detected within the container and blasts are positioned\n * relative to the container rather than the viewport.\n */\n containerRef?: React.RefObject<HTMLElement | null>,\n};\n\nexport function CursorBlastEffect({\n blastLifetimeMs = DEFAULT_BLAST_LIFETIME_MS,\n maxActiveBlasts = DEFAULT_MAX_ACTIVE_BLASTS,\n rageClickThreshold = DEFAULT_RAGE_CLICK_THRESHOLD,\n rageClickWindowMs = DEFAULT_RAGE_CLICK_WINDOW_MS,\n rageClickRadiusPx = DEFAULT_RAGE_CLICK_RADIUS_PX,\n containerRef,\n}: CursorBlastEffectProps = {}) {\n const [blasts, setBlasts] = useState<Blast[]>([]);\n const [mounted, setMounted] = useState(false);\n const idCounterRef = useRef(0);\n const timeoutIdsRef = useRef<Map<number, number>>(new Map());\n const recentClicksRef = useRef<RecentClick[]>([]);\n\n // Store latest config in refs so the effect callback always reads current values\n const configRef = useRef({\n blastLifetimeMs,\n maxActiveBlasts,\n rageClickThreshold,\n rageClickWindowMs,\n rageClickRadiusPx,\n });\n configRef.current = {\n blastLifetimeMs,\n maxActiveBlasts,\n rageClickThreshold,\n rageClickWindowMs,\n rageClickRadiusPx,\n };\n\n useEffect(() => {\n setMounted(true);\n }, []);\n\n useEffect(() => {\n const removeBlast = (id: number) => {\n setBlasts((prev) => prev.filter((blast) => blast.id !== id));\n const timeoutId = timeoutIdsRef.current.get(id);\n if (timeoutId !== undefined) {\n window.clearTimeout(timeoutId);\n timeoutIdsRef.current.delete(id);\n }\n };\n\n const spawnBlast = (x: number, y: number) => {\n const cfg = configRef.current;\n const nextId = idCounterRef.current;\n idCounterRef.current += 1;\n\n const nextBlast: Blast = {\n id: nextId,\n x,\n y,\n size: 44 + Math.random() * 20,\n hue: 185 + Math.random() * 35,\n };\n\n setBlasts((prev) => {\n const next = [...prev, nextBlast];\n if (next.length <= cfg.maxActiveBlasts) {\n return next;\n }\n return next.slice(next.length - cfg.maxActiveBlasts);\n });\n\n const timeoutId = window.setTimeout(() => removeBlast(nextId), cfg.blastLifetimeMs);\n timeoutIdsRef.current.set(nextId, timeoutId);\n };\n\n const onClick = (event: MouseEvent) => {\n if (window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches) {\n return;\n }\n\n const cfg = configRef.current;\n const now = performance.now();\n\n let x: number;\n let y: number;\n\n if (containerRef?.current) {\n const rect = containerRef.current.getBoundingClientRect();\n x = event.clientX - rect.left;\n y = event.clientY - rect.top;\n } else {\n x = event.clientX;\n y = event.clientY;\n }\n\n // Prune clicks outside the time window\n recentClicksRef.current = recentClicksRef.current.filter(\n (click) => now - click.time < cfg.rageClickWindowMs,\n );\n\n recentClicksRef.current.push({ time: now, x, y });\n\n // Count how many recent clicks are within the radius of the current click\n const nearbyCount = recentClicksRef.current.filter((click) => {\n const dx = click.x - x;\n const dy = click.y - y;\n return Math.sqrt(dx * dx + dy * dy) <= cfg.rageClickRadiusPx;\n }).length;\n\n if (nearbyCount >= cfg.rageClickThreshold) {\n spawnBlast(x, y);\n }\n };\n\n const target = containerRef?.current ?? window;\n const timeoutIds = timeoutIdsRef.current;\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion -- EventTarget union requires cast\n (target as EventTarget).addEventListener(\"click\", onClick as EventListener);\n return () => {\n (target as EventTarget).removeEventListener(\"click\", onClick as EventListener);\n for (const timeoutId of timeoutIds.values()) {\n window.clearTimeout(timeoutId);\n }\n timeoutIds.clear();\n };\n }, [containerRef]);\n\n if (!mounted) {\n return null;\n }\n\n const blastElements = (\n <>\n {blasts.map((blast) => (\n <div\n key={blast.id}\n style={{\n position: \"absolute\",\n left: blast.x,\n top: blast.y,\n width: blast.size,\n height: blast.size,\n transform: \"translate(-50%, -50%)\",\n willChange: \"transform, opacity\",\n filter: `hue-rotate(${blast.hue}deg)`,\n }}\n >\n <span className=\"cursor-blast-ring\" />\n <span className=\"cursor-blast-core\" />\n {Array.from({ length: 10 }).map((_, index) => {\n const angle = (360 / 10) * index;\n return (\n <span\n key={`${blast.id}-${index}`}\n className=\"cursor-blast-shard-wrap\"\n style={{\n transform: `translate(-50%, -50%) rotate(${angle}deg)`,\n animationDelay: `${index * 16}ms`,\n }}\n >\n <span className=\"cursor-blast-shard\" />\n </span>\n );\n })}\n </div>\n ))}\n <style dangerouslySetInnerHTML={{ __html: `\n .cursor-blast-ring {\n position: absolute;\n inset: 0;\n border-radius: 999px;\n border: 2px solid hsl(197 98% 67% / 0.9);\n box-shadow:\n 0 0 22px hsl(191 100% 72% / 0.6),\n inset 0 0 12px hsl(204 100% 77% / 0.65);\n animation: blast-ring 560ms cubic-bezier(0.16, 1, 0.3, 1) forwards;\n }\n\n .cursor-blast-core {\n position: absolute;\n left: 50%;\n top: 50%;\n width: 10px;\n height: 10px;\n border-radius: 999px;\n transform: translate(-50%, -50%);\n background: hsl(196 100% 85%);\n box-shadow:\n 0 0 26px hsl(193 100% 72% / 0.9),\n 0 0 10px hsl(201 100% 85% / 0.9);\n animation: blast-core 420ms ease-out forwards;\n }\n\n .cursor-blast-shard-wrap {\n position: absolute;\n left: 50%;\n top: 50%;\n width: 0;\n height: 0;\n }\n\n .cursor-blast-shard {\n position: absolute;\n left: 0;\n top: -1.5px;\n width: 12px;\n height: 3px;\n border-radius: 999px;\n background: linear-gradient(90deg, hsl(190 100% 84%), hsl(197 98% 67%));\n box-shadow: 0 0 12px hsl(195 100% 70% / 0.8);\n animation: blast-shard 680ms cubic-bezier(0.22, 1, 0.36, 1) forwards;\n }\n\n @keyframes blast-ring {\n 0% {\n transform: scale(0.2);\n opacity: 0.95;\n }\n 100% {\n transform: scale(1.6);\n opacity: 0;\n }\n }\n\n @keyframes blast-core {\n 0% {\n transform: translate(-50%, -50%) scale(0.5);\n opacity: 1;\n }\n 100% {\n transform: translate(-50%, -50%) scale(2.2);\n opacity: 0;\n }\n }\n\n @keyframes blast-shard {\n 0% {\n transform: translateX(0) scaleX(0.7);\n opacity: 1;\n }\n 100% {\n transform: translateX(46px) scaleX(1.1);\n opacity: 0;\n }\n }\n\n @media (prefers-reduced-motion: reduce) {\n .cursor-blast-ring,\n .cursor-blast-core,\n .cursor-blast-shard {\n animation-duration: 1ms;\n }\n }\n ` }} />\n </>\n );\n\n // When scoped to a container, render inline (the container must have position: relative)\n if (containerRef) {\n return (\n <div\n aria-hidden\n style={{\n position: \"absolute\",\n inset: 0,\n zIndex: 2147483647,\n pointerEvents: \"none\",\n overflow: \"hidden\",\n borderRadius: \"inherit\",\n }}\n >\n {blastElements}\n </div>\n );\n }\n\n // Default: portal to body with fixed positioning (original behaviour)\n return createPortal(\n <div\n aria-hidden\n style={{\n position: \"fixed\",\n inset: 0,\n zIndex: 2147483647,\n pointerEvents: \"none\",\n }}\n >\n {blastElements}\n </div>,\n document.body,\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"cursor-blast-effect.js","names":[],"sources":["../../../src/components/cursor-blast-effect.tsx"],"sourcesContent":["\"use client\";\n\nimport { useEffect, useRef, useState } from \"react\";\nimport { createPortal } from \"react-dom\";\n\ntype Blast = {\n id: number,\n x: number,\n y: number,\n size: number,\n hue: number,\n};\n\nconst DEFAULT_BLAST_LIFETIME_MS = 720;\nconst DEFAULT_MAX_ACTIVE_BLASTS = 18;\n\n/** Minimum rapid clicks in the time window to count as a rage click */\nconst DEFAULT_RAGE_CLICK_THRESHOLD = 3;\n/** Time window (ms) in which clicks must occur to be considered rage clicking */\nconst DEFAULT_RAGE_CLICK_WINDOW_MS = 600;\n/** Max distance (px) between clicks to still count as same-spot rage clicking */\nconst DEFAULT_RAGE_CLICK_RADIUS_PX = 60;\n\ntype RecentClick = {\n time: number,\n x: number,\n y: number,\n};\n\nexport type CursorBlastEffectProps = {\n /** Lifetime of each blast animation in ms. Default: 720 */\n blastLifetimeMs?: number,\n /** Maximum number of concurrent active blasts. Default: 18 */\n maxActiveBlasts?: number,\n /** Minimum rapid clicks in the time window to trigger a blast. Default: 3 */\n rageClickThreshold?: number,\n /** Time window (ms) for counting rage clicks. Default: 600 */\n rageClickWindowMs?: number,\n /** Max distance (px) between clicks to count as same-spot rage clicking. Default: 60 */\n rageClickRadiusPx?: number,\n /**\n * When provided, the blast effect is scoped to this container element.\n * Clicks are only detected within the container and blasts are positioned\n * relative to the container rather than the viewport.\n */\n containerRef?: React.RefObject<HTMLElement | null>,\n};\n\nexport function CursorBlastEffect({\n blastLifetimeMs = DEFAULT_BLAST_LIFETIME_MS,\n maxActiveBlasts = DEFAULT_MAX_ACTIVE_BLASTS,\n rageClickThreshold = DEFAULT_RAGE_CLICK_THRESHOLD,\n rageClickWindowMs = DEFAULT_RAGE_CLICK_WINDOW_MS,\n rageClickRadiusPx = DEFAULT_RAGE_CLICK_RADIUS_PX,\n containerRef,\n}: CursorBlastEffectProps = {}) {\n const [blasts, setBlasts] = useState<Blast[]>([]);\n const [mounted, setMounted] = useState(false);\n const idCounterRef = useRef(0);\n const timeoutIdsRef = useRef<Map<number, number>>(new Map());\n const recentClicksRef = useRef<RecentClick[]>([]);\n\n // Store latest config in refs so the effect callback always reads current values\n const configRef = useRef({\n blastLifetimeMs,\n maxActiveBlasts,\n rageClickThreshold,\n rageClickWindowMs,\n rageClickRadiusPx,\n });\n configRef.current = {\n blastLifetimeMs,\n maxActiveBlasts,\n rageClickThreshold,\n rageClickWindowMs,\n rageClickRadiusPx,\n };\n\n useEffect(() => {\n setMounted(true);\n }, []);\n\n useEffect(() => {\n const removeBlast = (id: number) => {\n setBlasts((prev) => prev.filter((blast) => blast.id !== id));\n const timeoutId = timeoutIdsRef.current.get(id);\n if (timeoutId !== undefined) {\n window.clearTimeout(timeoutId);\n timeoutIdsRef.current.delete(id);\n }\n };\n\n const spawnBlast = (x: number, y: number) => {\n const cfg = configRef.current;\n const nextId = idCounterRef.current;\n idCounterRef.current += 1;\n\n const nextBlast: Blast = {\n id: nextId,\n x,\n y,\n size: 44 + Math.random() * 20,\n hue: 185 + Math.random() * 35,\n };\n\n setBlasts((prev) => {\n const next = [...prev, nextBlast];\n if (next.length <= cfg.maxActiveBlasts) {\n return next;\n }\n return next.slice(next.length - cfg.maxActiveBlasts);\n });\n\n const timeoutId = window.setTimeout(() => removeBlast(nextId), cfg.blastLifetimeMs);\n timeoutIdsRef.current.set(nextId, timeoutId);\n };\n\n const onClick = (event: MouseEvent) => {\n if (window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches) {\n return;\n }\n\n const cfg = configRef.current;\n const now = performance.now();\n\n let x: number;\n let y: number;\n\n if (containerRef?.current) {\n const rect = containerRef.current.getBoundingClientRect();\n x = event.clientX - rect.left;\n y = event.clientY - rect.top;\n } else {\n x = event.clientX;\n y = event.clientY;\n }\n\n // Prune clicks outside the time window\n recentClicksRef.current = recentClicksRef.current.filter(\n (click) => now - click.time < cfg.rageClickWindowMs,\n );\n\n recentClicksRef.current.push({ time: now, x, y });\n\n // Count how many recent clicks are within the radius of the current click\n const nearbyCount = recentClicksRef.current.filter((click) => {\n const dx = click.x - x;\n const dy = click.y - y;\n return Math.sqrt(dx * dx + dy * dy) <= cfg.rageClickRadiusPx;\n }).length;\n\n if (nearbyCount >= cfg.rageClickThreshold) {\n spawnBlast(x, y);\n }\n };\n\n const target = containerRef?.current ?? window;\n const timeoutIds = timeoutIdsRef.current;\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion -- EventTarget union requires cast\n (target as EventTarget).addEventListener(\"click\", onClick as EventListener);\n return () => {\n (target as EventTarget).removeEventListener(\"click\", onClick as EventListener);\n for (const timeoutId of timeoutIds.values()) {\n window.clearTimeout(timeoutId);\n }\n timeoutIds.clear();\n };\n }, [containerRef]);\n\n if (!mounted) {\n return null;\n }\n\n const blastElements = (\n <>\n {blasts.map((blast) => (\n <div\n key={blast.id}\n style={{\n position: \"absolute\",\n left: blast.x,\n top: blast.y,\n width: blast.size,\n height: blast.size,\n transform: \"translate(-50%, -50%)\",\n willChange: \"transform, opacity\",\n filter: `hue-rotate(${blast.hue}deg)`,\n }}\n >\n <span className=\"cursor-blast-ring\" />\n <span className=\"cursor-blast-core\" />\n {Array.from({ length: 10 }).map((_, index) => {\n const angle = (360 / 10) * index;\n return (\n <span\n key={`${blast.id}-${index}`}\n className=\"cursor-blast-shard-wrap\"\n style={{\n transform: `translate(-50%, -50%) rotate(${angle}deg)`,\n animationDelay: `${index * 16}ms`,\n }}\n >\n <span className=\"cursor-blast-shard\" />\n </span>\n );\n })}\n </div>\n ))}\n <style dangerouslySetInnerHTML={{ __html: `\n .cursor-blast-ring {\n position: absolute;\n inset: 0;\n border-radius: 999px;\n border: 2px solid hsl(197 98% 67% / 0.9);\n box-shadow:\n 0 0 22px hsl(191 100% 72% / 0.6),\n inset 0 0 12px hsl(204 100% 77% / 0.65);\n animation: blast-ring 560ms cubic-bezier(0.16, 1, 0.3, 1) forwards;\n }\n\n .cursor-blast-core {\n position: absolute;\n left: 50%;\n top: 50%;\n width: 10px;\n height: 10px;\n border-radius: 999px;\n transform: translate(-50%, -50%);\n background: hsl(196 100% 85%);\n box-shadow:\n 0 0 26px hsl(193 100% 72% / 0.9),\n 0 0 10px hsl(201 100% 85% / 0.9);\n animation: blast-core 420ms ease-out forwards;\n }\n\n .cursor-blast-shard-wrap {\n position: absolute;\n left: 50%;\n top: 50%;\n width: 0;\n height: 0;\n }\n\n .cursor-blast-shard {\n position: absolute;\n left: 0;\n top: -1.5px;\n width: 12px;\n height: 3px;\n border-radius: 999px;\n background: linear-gradient(90deg, hsl(190 100% 84%), hsl(197 98% 67%));\n box-shadow: 0 0 12px hsl(195 100% 70% / 0.8);\n animation: blast-shard 680ms cubic-bezier(0.22, 1, 0.36, 1) forwards;\n }\n\n @keyframes blast-ring {\n 0% {\n transform: scale(0.2);\n opacity: 0.95;\n }\n 100% {\n transform: scale(1.6);\n opacity: 0;\n }\n }\n\n @keyframes blast-core {\n 0% {\n transform: translate(-50%, -50%) scale(0.5);\n opacity: 1;\n }\n 100% {\n transform: translate(-50%, -50%) scale(2.2);\n opacity: 0;\n }\n }\n\n @keyframes blast-shard {\n 0% {\n transform: translateX(0) scaleX(0.7);\n opacity: 1;\n }\n 100% {\n transform: translateX(46px) scaleX(1.1);\n opacity: 0;\n }\n }\n\n @media (prefers-reduced-motion: reduce) {\n .cursor-blast-ring,\n .cursor-blast-core,\n .cursor-blast-shard {\n animation-duration: 1ms;\n }\n }\n ` }} />\n </>\n );\n\n // When scoped to a container, render inline (the container must have position: relative)\n if (containerRef) {\n return (\n <div\n aria-hidden\n style={{\n position: \"absolute\",\n inset: 0,\n zIndex: 2147483647,\n pointerEvents: \"none\",\n overflow: \"hidden\",\n borderRadius: \"inherit\",\n }}\n >\n {blastElements}\n </div>\n );\n }\n\n // Default: portal to body with fixed positioning (original behaviour)\n return createPortal(\n <div\n aria-hidden\n style={{\n position: \"fixed\",\n inset: 0,\n zIndex: 2147483647,\n pointerEvents: \"none\",\n }}\n >\n {blastElements}\n </div>,\n document.body,\n );\n}\n"],"mappings":"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"}
@@ -1,5 +1,4 @@
1
- import * as react_jsx_runtime0 from "react/jsx-runtime";
2
- import { DataGridColumnDef, DataGridExportOptions } from "./types";
1
+ import { DataGridColumnDef, DataGridExportOptions } from "./types.js";
3
2
 
4
3
  //#region src/components/data-grid/data-grid-export-dialog.d.ts
5
4
  type DataGridExportDialogProps<TRow> = {
@@ -17,7 +16,7 @@ declare function DataGridExportDialog<TRow>({
17
16
  columns,
18
17
  exportFilename,
19
18
  exportOptions
20
- }: DataGridExportDialogProps<TRow>): react_jsx_runtime0.JSX.Element;
19
+ }: DataGridExportDialogProps<TRow>): import("react/jsx-runtime").JSX.Element;
21
20
  //#endregion
22
21
  export { DataGridExportDialog };
23
22
  //# sourceMappingURL=data-grid-export-dialog.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"data-grid-export-dialog.d.ts","names":[],"sources":["../../../../src/components/data-grid/data-grid-export-dialog.tsx"],"mappings":";;;;KA4BK,yBAAA;EACH,IAAA;EACA,YAAA,GAAe,IAAA;EACf,IAAA,WAAe,IAAA;EACf,OAAA,WAAkB,iBAAA,CAAkB,IAAA;EACpC,cAAA;EACA,aAAA,GAAgB,qBAAA,CAAsB,IAAA;AAAA;AAAA,iBASxB,oBAAA,MAAA,CAAA;EACd,IAAA;EACA,YAAA;EACA,IAAA;EACA,OAAA;EACA,cAAA;EACA;AAAA,GACC,yBAAA,CAA0B,IAAA,IAAK,kBAAA,CAAA,GAAA,CAAA,OAAA"}
1
+ {"version":3,"file":"data-grid-export-dialog.d.ts","names":[],"sources":["../../../../src/components/data-grid/data-grid-export-dialog.tsx"],"mappings":";;;KA4BK,yBAAA;EACH,IAAA;EACA,YAAA,GAAe,IAAA;EACf,IAAA,WAAe,IAAA;EACf,OAAA,WAAkB,iBAAA,CAAkB,IAAA;EACpC,cAAA;EACA,aAAA,GAAgB,qBAAA,CAAsB,IAAA;AAAA;AAAA,iBASxB,oBAAA;EACd,IAAA;EACA,YAAA;EACA,IAAA;EACA,OAAA;EACA,cAAA;EACA;AAAA,GACC,yBAAA,CAA0B,IAAA,gCAAK,GAAA,CAAA,OAAA"}