@cronus-ui/ui 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (717) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +262 -0
  3. package/dist/charts/animation.d.ts +11 -0
  4. package/dist/charts/animation.js +29 -0
  5. package/dist/charts/area-chart-loading.d.ts +34 -0
  6. package/dist/charts/area-chart-loading.js +22 -0
  7. package/dist/charts/area-chart.d.ts +48 -0
  8. package/dist/charts/area-chart.js +57 -0
  9. package/dist/charts/area-gradient-defs.d.ts +20 -0
  10. package/dist/charts/area-gradient-defs.js +15 -0
  11. package/dist/charts/area.d.ts +76 -0
  12. package/dist/charts/area.js +104 -0
  13. package/dist/charts/background.d.ts +27 -0
  14. package/dist/charts/background.js +68 -0
  15. package/dist/charts/bar-chart-loading.d.ts +17 -0
  16. package/dist/charts/bar-chart-loading.js +14 -0
  17. package/dist/charts/bar-chart.d.ts +55 -0
  18. package/dist/charts/bar-chart.js +432 -0
  19. package/dist/charts/bar-depth-geometry.d.ts +33 -0
  20. package/dist/charts/bar-depth-geometry.js +38 -0
  21. package/dist/charts/bar-depth.d.ts +157 -0
  22. package/dist/charts/bar-depth.js +586 -0
  23. package/dist/charts/bar-squares-layout.d.ts +28 -0
  24. package/dist/charts/bar-squares-layout.js +47 -0
  25. package/dist/charts/bar-squares.d.ts +49 -0
  26. package/dist/charts/bar-squares.js +207 -0
  27. package/dist/charts/bar-x-axis.d.ts +14 -0
  28. package/dist/charts/bar-x-axis.js +73 -0
  29. package/dist/charts/bar-y-axis.d.ts +12 -0
  30. package/dist/charts/bar-y-axis.js +64 -0
  31. package/dist/charts/bar.d.ts +41 -0
  32. package/dist/charts/bar.js +208 -0
  33. package/dist/charts/candlestick-chart.d.ts +46 -0
  34. package/dist/charts/candlestick-chart.js +203 -0
  35. package/dist/charts/candlestick.d.ts +24 -0
  36. package/dist/charts/candlestick.js +139 -0
  37. package/dist/charts/chart-brush-handle.d.ts +15 -0
  38. package/dist/charts/chart-brush-handle.js +47 -0
  39. package/dist/charts/chart-brush-layout.d.ts +27 -0
  40. package/dist/charts/chart-brush-layout.js +42 -0
  41. package/dist/charts/chart-brush-selection-overlay.d.ts +19 -0
  42. package/dist/charts/chart-brush-selection-overlay.js +44 -0
  43. package/dist/charts/chart-brush-track-overlay.d.ts +23 -0
  44. package/dist/charts/chart-brush-track-overlay.js +65 -0
  45. package/dist/charts/chart-brush.d.ts +32 -0
  46. package/dist/charts/chart-brush.js +116 -0
  47. package/dist/charts/chart-center-typography.d.ts +12 -0
  48. package/dist/charts/chart-center-typography.js +12 -0
  49. package/dist/charts/chart-child-passthrough.d.ts +17 -0
  50. package/dist/charts/chart-child-passthrough.js +74 -0
  51. package/dist/charts/chart-config-context.d.ts +26 -0
  52. package/dist/charts/chart-config-context.js +47 -0
  53. package/dist/charts/chart-context.d.ts +199 -0
  54. package/dist/charts/chart-context.js +201 -0
  55. package/dist/charts/chart-defs.d.ts +13 -0
  56. package/dist/charts/chart-defs.js +49 -0
  57. package/dist/charts/chart-formatters.d.ts +10 -0
  58. package/dist/charts/chart-formatters.js +28 -0
  59. package/dist/charts/chart-legend-hover.d.ts +13 -0
  60. package/dist/charts/chart-legend-hover.js +18 -0
  61. package/dist/charts/chart-legend.d.ts +55 -0
  62. package/dist/charts/chart-legend.js +30 -0
  63. package/dist/charts/chart-loading-label.d.ts +10 -0
  64. package/dist/charts/chart-loading-label.js +21 -0
  65. package/dist/charts/chart-phase.d.ts +31 -0
  66. package/dist/charts/chart-phase.js +21 -0
  67. package/dist/charts/chart-reveal-clip.d.ts +24 -0
  68. package/dist/charts/chart-reveal-clip.js +24 -0
  69. package/dist/charts/chart-scale.d.ts +12 -0
  70. package/dist/charts/chart-scale.js +17 -0
  71. package/dist/charts/chart-stat-flow.d.ts +36 -0
  72. package/dist/charts/chart-stat-flow.js +23 -0
  73. package/dist/charts/choropleth/choropleth-chart.d.ts +43 -0
  74. package/dist/charts/choropleth/choropleth-chart.js +218 -0
  75. package/dist/charts/choropleth/choropleth-context.d.ts +86 -0
  76. package/dist/charts/choropleth/choropleth-context.js +106 -0
  77. package/dist/charts/choropleth/choropleth-feature.d.ts +13 -0
  78. package/dist/charts/choropleth/choropleth-feature.js +125 -0
  79. package/dist/charts/choropleth/choropleth-graticule.d.ts +11 -0
  80. package/dist/charts/choropleth/choropleth-graticule.js +12 -0
  81. package/dist/charts/choropleth/choropleth-tooltip.d.ts +31 -0
  82. package/dist/charts/choropleth/choropleth-tooltip.js +50 -0
  83. package/dist/charts/choropleth/index.d.ts +7 -0
  84. package/dist/charts/choropleth/index.js +6 -0
  85. package/dist/charts/composed-chart.d.ts +36 -0
  86. package/dist/charts/composed-chart.js +152 -0
  87. package/dist/charts/dash-tail-stroke.d.ts +18 -0
  88. package/dist/charts/dash-tail-stroke.js +13 -0
  89. package/dist/charts/decimate-time-series.d.ts +10 -0
  90. package/dist/charts/decimate-time-series.js +112 -0
  91. package/dist/charts/fade-edges.d.ts +34 -0
  92. package/dist/charts/fade-edges.js +35 -0
  93. package/dist/charts/filter-data-by-x-domain.d.ts +5 -0
  94. package/dist/charts/filter-data-by-x-domain.js +42 -0
  95. package/dist/charts/funnel-chart.d.ts +91 -0
  96. package/dist/charts/funnel-chart.js +302 -0
  97. package/dist/charts/gauge-label-layout.d.ts +22 -0
  98. package/dist/charts/gauge-label-layout.js +44 -0
  99. package/dist/charts/gauge.d.ts +56 -0
  100. package/dist/charts/gauge.js +307 -0
  101. package/dist/charts/generate-chart-skeleton-data.d.ts +16 -0
  102. package/dist/charts/generate-chart-skeleton-data.js +25 -0
  103. package/dist/charts/grid.d.ts +58 -0
  104. package/dist/charts/grid.js +80 -0
  105. package/dist/charts/heatmap/generate-heatmap-skeleton-data.d.ts +4 -0
  106. package/dist/charts/heatmap/generate-heatmap-skeleton-data.js +12 -0
  107. package/dist/charts/heatmap/heatmap-animation.d.ts +41 -0
  108. package/dist/charts/heatmap/heatmap-animation.js +85 -0
  109. package/dist/charts/heatmap/heatmap-cells.d.ts +21 -0
  110. package/dist/charts/heatmap/heatmap-cells.js +265 -0
  111. package/dist/charts/heatmap/heatmap-chart-loading.d.ts +21 -0
  112. package/dist/charts/heatmap/heatmap-chart-loading.js +14 -0
  113. package/dist/charts/heatmap/heatmap-chart.d.ts +80 -0
  114. package/dist/charts/heatmap/heatmap-chart.js +275 -0
  115. package/dist/charts/heatmap/heatmap-colors.d.ts +70 -0
  116. package/dist/charts/heatmap/heatmap-colors.js +113 -0
  117. package/dist/charts/heatmap/heatmap-context.d.ts +109 -0
  118. package/dist/charts/heatmap/heatmap-context.js +69 -0
  119. package/dist/charts/heatmap/heatmap-legend-gradient.d.ts +20 -0
  120. package/dist/charts/heatmap/heatmap-legend-gradient.js +44 -0
  121. package/dist/charts/heatmap/heatmap-legend-swatch.d.ts +8 -0
  122. package/dist/charts/heatmap/heatmap-legend-swatch.js +26 -0
  123. package/dist/charts/heatmap/heatmap-legend.d.ts +41 -0
  124. package/dist/charts/heatmap/heatmap-legend.js +68 -0
  125. package/dist/charts/heatmap/heatmap-pattern-defs.d.ts +5 -0
  126. package/dist/charts/heatmap/heatmap-pattern-defs.js +25 -0
  127. package/dist/charts/heatmap/heatmap-resolve-separator.d.ts +8 -0
  128. package/dist/charts/heatmap/heatmap-resolve-separator.js +82 -0
  129. package/dist/charts/heatmap/heatmap-separator.d.ts +63 -0
  130. package/dist/charts/heatmap/heatmap-separator.js +71 -0
  131. package/dist/charts/heatmap/heatmap-tooltip.d.ts +30 -0
  132. package/dist/charts/heatmap/heatmap-tooltip.js +20 -0
  133. package/dist/charts/heatmap/heatmap-utils.d.ts +175 -0
  134. package/dist/charts/heatmap/heatmap-utils.js +595 -0
  135. package/dist/charts/heatmap/heatmap-x-axis.d.ts +7 -0
  136. package/dist/charts/heatmap/heatmap-x-axis.js +54 -0
  137. package/dist/charts/heatmap/heatmap-y-axis.d.ts +14 -0
  138. package/dist/charts/heatmap/heatmap-y-axis.js +37 -0
  139. package/dist/charts/heatmap/index.d.ts +15 -0
  140. package/dist/charts/heatmap/index.js +15 -0
  141. package/dist/charts/heatmap/use-delayed-tooltip-data.d.ts +3 -0
  142. package/dist/charts/heatmap/use-delayed-tooltip-data.js +53 -0
  143. package/dist/charts/highlight-segment-bounds.d.ts +18 -0
  144. package/dist/charts/highlight-segment-bounds.js +36 -0
  145. package/dist/charts/highlight-segment.d.ts +22 -0
  146. package/dist/charts/highlight-segment.js +14 -0
  147. package/dist/charts/index.d.ts +106 -0
  148. package/dist/charts/index.js +133 -0
  149. package/dist/charts/indicator-fade.d.ts +15 -0
  150. package/dist/charts/indicator-fade.js +42 -0
  151. package/dist/charts/legend/index.d.ts +8 -0
  152. package/dist/charts/legend/index.js +10 -0
  153. package/dist/charts/legend/legend-context.d.ts +48 -0
  154. package/dist/charts/legend/legend-context.js +34 -0
  155. package/dist/charts/legend/legend-item.d.ts +12 -0
  156. package/dist/charts/legend/legend-item.js +11 -0
  157. package/dist/charts/legend/legend-label.d.ts +9 -0
  158. package/dist/charts/legend/legend-label.js +10 -0
  159. package/dist/charts/legend/legend-marker.d.ts +9 -0
  160. package/dist/charts/legend/legend-marker.js +11 -0
  161. package/dist/charts/legend/legend-progress.d.ts +13 -0
  162. package/dist/charts/legend/legend-progress.js +15 -0
  163. package/dist/charts/legend/legend-value.d.ts +17 -0
  164. package/dist/charts/legend/legend-value.js +11 -0
  165. package/dist/charts/legend/legend.d.ts +23 -0
  166. package/dist/charts/legend/legend.js +43 -0
  167. package/dist/charts/line-chart-loading.d.ts +34 -0
  168. package/dist/charts/line-chart-loading.js +22 -0
  169. package/dist/charts/line-chart.d.ts +46 -0
  170. package/dist/charts/line-chart.js +91 -0
  171. package/dist/charts/line-loading-pulse.d.ts +20 -0
  172. package/dist/charts/line-loading-pulse.js +124 -0
  173. package/dist/charts/line-loading-timing.d.ts +10 -0
  174. package/dist/charts/line-loading-timing.js +10 -0
  175. package/dist/charts/line-series-terminal-marker.d.ts +16 -0
  176. package/dist/charts/line-series-terminal-marker.js +46 -0
  177. package/dist/charts/line.d.ts +64 -0
  178. package/dist/charts/line.js +96 -0
  179. package/dist/charts/live-line-chart.d.ts +35 -0
  180. package/dist/charts/live-line-chart.js +374 -0
  181. package/dist/charts/live-line.d.ts +39 -0
  182. package/dist/charts/live-line.js +78 -0
  183. package/dist/charts/live-x-axis.d.ts +12 -0
  184. package/dist/charts/live-x-axis.js +85 -0
  185. package/dist/charts/live-y-axis.d.ts +16 -0
  186. package/dist/charts/live-y-axis.js +137 -0
  187. package/dist/charts/loading-sweep.d.ts +66 -0
  188. package/dist/charts/loading-sweep.js +174 -0
  189. package/dist/charts/markers/chart-markers.d.ts +25 -0
  190. package/dist/charts/markers/chart-markers.js +87 -0
  191. package/dist/charts/markers/index.d.ts +3 -0
  192. package/dist/charts/markers/index.js +3 -0
  193. package/dist/charts/markers/marker-group.d.ts +88 -0
  194. package/dist/charts/markers/marker-group.js +171 -0
  195. package/dist/charts/motion-utils.d.ts +9 -0
  196. package/dist/charts/motion-utils.js +28 -0
  197. package/dist/charts/notch-gauge-shared.d.ts +49 -0
  198. package/dist/charts/notch-gauge-shared.js +103 -0
  199. package/dist/charts/path-stroke-utils.d.ts +20 -0
  200. package/dist/charts/path-stroke-utils.js +55 -0
  201. package/dist/charts/pattern-area.d.ts +21 -0
  202. package/dist/charts/pattern-area.js +19 -0
  203. package/dist/charts/pattern-preset.d.ts +26 -0
  204. package/dist/charts/pattern-preset.js +83 -0
  205. package/dist/charts/pie-center-shell.d.ts +24 -0
  206. package/dist/charts/pie-center-shell.js +109 -0
  207. package/dist/charts/pie-center.d.ts +46 -0
  208. package/dist/charts/pie-center.js +46 -0
  209. package/dist/charts/pie-chart.d.ts +50 -0
  210. package/dist/charts/pie-chart.js +248 -0
  211. package/dist/charts/pie-context.d.ts +74 -0
  212. package/dist/charts/pie-context.js +95 -0
  213. package/dist/charts/pie-slice.d.ts +28 -0
  214. package/dist/charts/pie-slice.js +180 -0
  215. package/dist/charts/profit-loss-legend-hover.d.ts +11 -0
  216. package/dist/charts/profit-loss-legend-hover.js +12 -0
  217. package/dist/charts/profit-loss-legend.d.ts +17 -0
  218. package/dist/charts/profit-loss-legend.js +18 -0
  219. package/dist/charts/profit-loss-line.d.ts +27 -0
  220. package/dist/charts/profit-loss-line.js +77 -0
  221. package/dist/charts/profit-loss-segments.d.ts +12 -0
  222. package/dist/charts/profit-loss-segments.js +86 -0
  223. package/dist/charts/projection-config.d.ts +11 -0
  224. package/dist/charts/projection-config.js +80 -0
  225. package/dist/charts/projection-line-end-marker.d.ts +15 -0
  226. package/dist/charts/projection-line-end-marker.js +27 -0
  227. package/dist/charts/projection-line.d.ts +40 -0
  228. package/dist/charts/projection-line.js +79 -0
  229. package/dist/charts/projection-utils.d.ts +46 -0
  230. package/dist/charts/projection-utils.js +253 -0
  231. package/dist/charts/radar-area.d.ts +17 -0
  232. package/dist/charts/radar-area.js +84 -0
  233. package/dist/charts/radar-axis.d.ts +14 -0
  234. package/dist/charts/radar-axis.js +24 -0
  235. package/dist/charts/radar-chart.d.ts +36 -0
  236. package/dist/charts/radar-chart.js +89 -0
  237. package/dist/charts/radar-context.d.ts +68 -0
  238. package/dist/charts/radar-context.js +87 -0
  239. package/dist/charts/radar-grid.d.ts +16 -0
  240. package/dist/charts/radar-grid.js +40 -0
  241. package/dist/charts/radar-labels.d.ts +16 -0
  242. package/dist/charts/radar-labels.js +29 -0
  243. package/dist/charts/reference-area-config.d.ts +10 -0
  244. package/dist/charts/reference-area-config.js +39 -0
  245. package/dist/charts/reference-area-geometry.d.ts +23 -0
  246. package/dist/charts/reference-area-geometry.js +68 -0
  247. package/dist/charts/reference-area-registration-context.d.ts +8 -0
  248. package/dist/charts/reference-area-registration-context.js +7 -0
  249. package/dist/charts/reference-area.d.ts +52 -0
  250. package/dist/charts/reference-area.js +101 -0
  251. package/dist/charts/ring-center.d.ts +46 -0
  252. package/dist/charts/ring-center.js +41 -0
  253. package/dist/charts/ring-chart.d.ts +41 -0
  254. package/dist/charts/ring-chart.js +212 -0
  255. package/dist/charts/ring-context.d.ts +66 -0
  256. package/dist/charts/ring-context.js +92 -0
  257. package/dist/charts/ring.d.ts +11 -0
  258. package/dist/charts/ring.js +104 -0
  259. package/dist/charts/sankey/index.d.ts +6 -0
  260. package/dist/charts/sankey/index.js +6 -0
  261. package/dist/charts/sankey/sankey-chart.d.ts +39 -0
  262. package/dist/charts/sankey/sankey-chart.js +117 -0
  263. package/dist/charts/sankey/sankey-context.d.ts +69 -0
  264. package/dist/charts/sankey/sankey-context.js +23 -0
  265. package/dist/charts/sankey/sankey-link.d.ts +26 -0
  266. package/dist/charts/sankey/sankey-link.js +155 -0
  267. package/dist/charts/sankey/sankey-node.d.ts +29 -0
  268. package/dist/charts/sankey/sankey-node.js +200 -0
  269. package/dist/charts/sankey/sankey-tooltip.d.ts +24 -0
  270. package/dist/charts/sankey/sankey-tooltip.js +70 -0
  271. package/dist/charts/scatter-chart-shell.d.ts +21 -0
  272. package/dist/charts/scatter-chart-shell.js +152 -0
  273. package/dist/charts/scatter-chart.d.ts +32 -0
  274. package/dist/charts/scatter-chart.js +56 -0
  275. package/dist/charts/scatter-svg.d.ts +6 -0
  276. package/dist/charts/scatter-svg.js +16 -0
  277. package/dist/charts/scatter.d.ts +21 -0
  278. package/dist/charts/scatter.js +30 -0
  279. package/dist/charts/segment.d.ts +26 -0
  280. package/dist/charts/segment.js +42 -0
  281. package/dist/charts/series-bar-layout.d.ts +18 -0
  282. package/dist/charts/series-bar-layout.js +31 -0
  283. package/dist/charts/series-bar.d.ts +20 -0
  284. package/dist/charts/series-bar.js +120 -0
  285. package/dist/charts/series-dash-tail-overlay.d.ts +17 -0
  286. package/dist/charts/series-dash-tail-overlay.js +39 -0
  287. package/dist/charts/series-highlight-layer.d.ts +23 -0
  288. package/dist/charts/series-highlight-layer.js +21 -0
  289. package/dist/charts/series-hover-dim.d.ts +29 -0
  290. package/dist/charts/series-hover-dim.js +26 -0
  291. package/dist/charts/series-markers.d.ts +14 -0
  292. package/dist/charts/series-markers.js +98 -0
  293. package/dist/charts/series-path-utils.d.ts +19 -0
  294. package/dist/charts/series-path-utils.js +60 -0
  295. package/dist/charts/series-point-marker.d.ts +48 -0
  296. package/dist/charts/series-point-marker.js +48 -0
  297. package/dist/charts/shimmering-text.d.ts +23 -0
  298. package/dist/charts/shimmering-text.js +31 -0
  299. package/dist/charts/static-chart-preview-context.d.ts +7 -0
  300. package/dist/charts/static-chart-preview-context.js +12 -0
  301. package/dist/charts/sunburst-breadcrumb.d.ts +16 -0
  302. package/dist/charts/sunburst-breadcrumb.js +26 -0
  303. package/dist/charts/sunburst-center.d.ts +5 -0
  304. package/dist/charts/sunburst-center.js +17 -0
  305. package/dist/charts/sunburst-chart.d.ts +30 -0
  306. package/dist/charts/sunburst-chart.js +263 -0
  307. package/dist/charts/sunburst-context.d.ts +61 -0
  308. package/dist/charts/sunburst-context.js +112 -0
  309. package/dist/charts/sunburst-data.d.ts +9 -0
  310. package/dist/charts/sunburst-data.js +2 -0
  311. package/dist/charts/sunburst-hint.d.ts +13 -0
  312. package/dist/charts/sunburst-hint.js +31 -0
  313. package/dist/charts/sunburst-labels.d.ts +9 -0
  314. package/dist/charts/sunburst-labels.js +63 -0
  315. package/dist/charts/sunburst-segment.d.ts +11 -0
  316. package/dist/charts/sunburst-segment.js +78 -0
  317. package/dist/charts/sunburst.d.ts +101 -0
  318. package/dist/charts/sunburst.js +396 -0
  319. package/dist/charts/time-series-chart-shell.d.ts +47 -0
  320. package/dist/charts/time-series-chart-shell.js +390 -0
  321. package/dist/charts/tooltip/chart-tooltip.d.ts +76 -0
  322. package/dist/charts/tooltip/chart-tooltip.js +150 -0
  323. package/dist/charts/tooltip/date-ticker.d.ts +11 -0
  324. package/dist/charts/tooltip/date-ticker.js +77 -0
  325. package/dist/charts/tooltip/index.d.ts +7 -0
  326. package/dist/charts/tooltip/index.js +7 -0
  327. package/dist/charts/tooltip/tooltip-box.d.ts +48 -0
  328. package/dist/charts/tooltip/tooltip-box.js +114 -0
  329. package/dist/charts/tooltip/tooltip-content.d.ts +18 -0
  330. package/dist/charts/tooltip/tooltip-content.js +9 -0
  331. package/dist/charts/tooltip/tooltip-dot.d.ts +28 -0
  332. package/dist/charts/tooltip/tooltip-dot.js +54 -0
  333. package/dist/charts/tooltip/tooltip-indicator.d.ts +45 -0
  334. package/dist/charts/tooltip/tooltip-indicator.js +65 -0
  335. package/dist/charts/use-animated-series-path.d.ts +19 -0
  336. package/dist/charts/use-animated-series-path.js +93 -0
  337. package/dist/charts/use-animated-y-domains.d.ts +14 -0
  338. package/dist/charts/use-animated-y-domains.js +150 -0
  339. package/dist/charts/use-chart-interaction.d.ts +41 -0
  340. package/dist/charts/use-chart-interaction.js +244 -0
  341. package/dist/charts/use-chart-phase-orchestrator.d.ts +23 -0
  342. package/dist/charts/use-chart-phase-orchestrator.js +139 -0
  343. package/dist/charts/use-enter-complete.d.ts +8 -0
  344. package/dist/charts/use-enter-complete.js +23 -0
  345. package/dist/charts/use-grid-shimmer.d.ts +16 -0
  346. package/dist/charts/use-grid-shimmer.js +63 -0
  347. package/dist/charts/use-highlight-segment.d.ts +14 -0
  348. package/dist/charts/use-highlight-segment.js +34 -0
  349. package/dist/charts/use-mount-progress.d.ts +4 -0
  350. package/dist/charts/use-mount-progress.js +22 -0
  351. package/dist/charts/use-scatter-chart-interaction.d.ts +35 -0
  352. package/dist/charts/use-scatter-chart-interaction.js +228 -0
  353. package/dist/charts/use-scheduled-tooltip.d.ts +9 -0
  354. package/dist/charts/use-scheduled-tooltip.js +76 -0
  355. package/dist/charts/visx-pattern.d.ts +19 -0
  356. package/dist/charts/visx-pattern.js +20 -0
  357. package/dist/charts/x-axis.d.ts +27 -0
  358. package/dist/charts/x-axis.js +415 -0
  359. package/dist/charts/y-axis-scales.d.ts +26 -0
  360. package/dist/charts/y-axis-scales.js +72 -0
  361. package/dist/charts/y-axis-ticks.d.ts +12 -0
  362. package/dist/charts/y-axis-ticks.js +24 -0
  363. package/dist/charts/y-axis.d.ts +22 -0
  364. package/dist/charts/y-axis.js +80 -0
  365. package/dist/charts/y-domain-utils.d.ts +27 -0
  366. package/dist/charts/y-domain-utils.js +88 -0
  367. package/dist/components/accordion.d.ts +6 -0
  368. package/dist/components/accordion.js +20 -0
  369. package/dist/components/alert-dialog.d.ts +18 -0
  370. package/dist/components/alert-dialog.js +41 -0
  371. package/dist/components/alert.d.ts +24 -0
  372. package/dist/components/alert.js +46 -0
  373. package/dist/components/animated-button.d.ts +5 -0
  374. package/dist/components/animated-button.js +16 -0
  375. package/dist/components/animated-list.d.ts +26 -0
  376. package/dist/components/animated-list.js +25 -0
  377. package/dist/components/animated-number.d.ts +67 -0
  378. package/dist/components/animated-number.js +131 -0
  379. package/dist/components/app-shell.d.ts +27 -0
  380. package/dist/components/app-shell.js +18 -0
  381. package/dist/components/area-chart.d.ts +11 -0
  382. package/dist/components/area-chart.js +12 -0
  383. package/dist/components/aspect-ratio.d.ts +16 -0
  384. package/dist/components/aspect-ratio.js +14 -0
  385. package/dist/components/aurora-background.d.ts +3 -0
  386. package/dist/components/aurora-background.js +8 -0
  387. package/dist/components/autocomplete.d.ts +55 -0
  388. package/dist/components/autocomplete.js +279 -0
  389. package/dist/components/avatar-group.d.ts +39 -0
  390. package/dist/components/avatar-group.js +50 -0
  391. package/dist/components/avatar.d.ts +5 -0
  392. package/dist/components/avatar.js +17 -0
  393. package/dist/components/badge.d.ts +10 -0
  394. package/dist/components/badge.js +35 -0
  395. package/dist/components/banner.d.ts +45 -0
  396. package/dist/components/banner.js +80 -0
  397. package/dist/components/bar-chart.d.ts +11 -0
  398. package/dist/components/bar-chart.js +9 -0
  399. package/dist/components/border-beam.d.ts +45 -0
  400. package/dist/components/border-beam.js +48 -0
  401. package/dist/components/breadcrumb.d.ts +12 -0
  402. package/dist/components/breadcrumb.js +35 -0
  403. package/dist/components/button-group.d.ts +7 -0
  404. package/dist/components/button-group.js +10 -0
  405. package/dist/components/button.d.ts +12 -0
  406. package/dist/components/button.js +39 -0
  407. package/dist/components/calendar.d.ts +7 -0
  408. package/dist/components/calendar.js +71 -0
  409. package/dist/components/candlestick-chart.d.ts +13 -0
  410. package/dist/components/candlestick-chart.js +66 -0
  411. package/dist/components/card-stack.d.ts +28 -0
  412. package/dist/components/card-stack.js +47 -0
  413. package/dist/components/card.d.ts +9 -0
  414. package/dist/components/card.js +32 -0
  415. package/dist/components/carousel.d.ts +82 -0
  416. package/dist/components/carousel.js +310 -0
  417. package/dist/components/chart.d.ts +100 -0
  418. package/dist/components/chart.js +210 -0
  419. package/dist/components/checkbox.d.ts +3 -0
  420. package/dist/components/checkbox.js +11 -0
  421. package/dist/components/chip.d.ts +80 -0
  422. package/dist/components/chip.js +186 -0
  423. package/dist/components/choropleth-chart.d.ts +12 -0
  424. package/dist/components/choropleth-chart.js +31 -0
  425. package/dist/components/click-spark.d.ts +19 -0
  426. package/dist/components/click-spark.js +51 -0
  427. package/dist/components/code-block.d.ts +13 -0
  428. package/dist/components/code-block.js +20 -0
  429. package/dist/components/code-tabs.d.ts +51 -0
  430. package/dist/components/code-tabs.js +150 -0
  431. package/dist/components/collapsible.d.ts +5 -0
  432. package/dist/components/collapsible.js +12 -0
  433. package/dist/components/color-picker.d.ts +30 -0
  434. package/dist/components/color-picker.js +300 -0
  435. package/dist/components/combobox.d.ts +33 -0
  436. package/dist/components/combobox.js +32 -0
  437. package/dist/components/command.d.ts +87 -0
  438. package/dist/components/command.js +44 -0
  439. package/dist/components/comparison-slider.d.ts +17 -0
  440. package/dist/components/comparison-slider.js +81 -0
  441. package/dist/components/composed-chart.d.ts +13 -0
  442. package/dist/components/composed-chart.js +22 -0
  443. package/dist/components/confetti.d.ts +21 -0
  444. package/dist/components/confetti.js +111 -0
  445. package/dist/components/confirmation-dialog.d.ts +46 -0
  446. package/dist/components/confirmation-dialog.js +102 -0
  447. package/dist/components/context-menu.d.ts +28 -0
  448. package/dist/components/context-menu.js +52 -0
  449. package/dist/components/copy-button.d.ts +13 -0
  450. package/dist/components/copy-button.js +72 -0
  451. package/dist/components/countdown.d.ts +58 -0
  452. package/dist/components/countdown.js +106 -0
  453. package/dist/components/credit-card-input.d.ts +62 -0
  454. package/dist/components/credit-card-input.js +211 -0
  455. package/dist/components/currency-input.d.ts +86 -0
  456. package/dist/components/currency-input.js +215 -0
  457. package/dist/components/data-table.d.ts +232 -0
  458. package/dist/components/data-table.js +359 -0
  459. package/dist/components/date-picker.d.ts +66 -0
  460. package/dist/components/date-picker.js +55 -0
  461. package/dist/components/date-range-picker.d.ts +59 -0
  462. package/dist/components/date-range-picker.js +59 -0
  463. package/dist/components/description-list.d.ts +84 -0
  464. package/dist/components/description-list.js +138 -0
  465. package/dist/components/dialog.d.ts +26 -0
  466. package/dist/components/dialog.js +35 -0
  467. package/dist/components/dock.d.ts +34 -0
  468. package/dist/components/dock.js +61 -0
  469. package/dist/components/dot-pattern.d.ts +24 -0
  470. package/dist/components/dot-pattern.js +19 -0
  471. package/dist/components/drawer.d.ts +22 -0
  472. package/dist/components/drawer.js +37 -0
  473. package/dist/components/dropdown-menu.d.ts +32 -0
  474. package/dist/components/dropdown-menu.js +56 -0
  475. package/dist/components/dynamic-island.d.ts +26 -0
  476. package/dist/components/dynamic-island.js +31 -0
  477. package/dist/components/empty.d.ts +7 -0
  478. package/dist/components/empty.js +24 -0
  479. package/dist/components/expandable-tabs.d.ts +24 -0
  480. package/dist/components/expandable-tabs.js +30 -0
  481. package/dist/components/fab.d.ts +35 -0
  482. package/dist/components/fab.js +36 -0
  483. package/dist/components/field.d.ts +6 -0
  484. package/dist/components/field.js +22 -0
  485. package/dist/components/file-dropzone.d.ts +28 -0
  486. package/dist/components/file-dropzone.js +59 -0
  487. package/dist/components/flickering-grid.d.ts +25 -0
  488. package/dist/components/flickering-grid.js +30 -0
  489. package/dist/components/flip-card.d.ts +70 -0
  490. package/dist/components/flip-card.js +117 -0
  491. package/dist/components/floating-label-input.d.ts +34 -0
  492. package/dist/components/floating-label-input.js +25 -0
  493. package/dist/components/form.d.ts +25 -0
  494. package/dist/components/form.js +68 -0
  495. package/dist/components/frame.d.ts +12 -0
  496. package/dist/components/frame.js +10 -0
  497. package/dist/components/funnel-chart.d.ts +11 -0
  498. package/dist/components/funnel-chart.js +16 -0
  499. package/dist/components/gauge-chart.d.ts +8 -0
  500. package/dist/components/gauge-chart.js +10 -0
  501. package/dist/components/glare-hover.d.ts +15 -0
  502. package/dist/components/glare-hover.js +64 -0
  503. package/dist/components/glass-card.d.ts +3 -0
  504. package/dist/components/glass-card.js +8 -0
  505. package/dist/components/gradient-border.d.ts +7 -0
  506. package/dist/components/gradient-border.js +8 -0
  507. package/dist/components/gradient-text.d.ts +6 -0
  508. package/dist/components/gradient-text.js +10 -0
  509. package/dist/components/grid-pattern.d.ts +23 -0
  510. package/dist/components/grid-pattern.js +18 -0
  511. package/dist/components/heatmap-chart.d.ts +6 -0
  512. package/dist/components/heatmap-chart.js +8 -0
  513. package/dist/components/heatmap.d.ts +28 -0
  514. package/dist/components/heatmap.js +41 -0
  515. package/dist/components/highlighter.d.ts +20 -0
  516. package/dist/components/highlighter.js +19 -0
  517. package/dist/components/hover-card.d.ts +5 -0
  518. package/dist/components/hover-card.js +12 -0
  519. package/dist/components/image-zoom.d.ts +47 -0
  520. package/dist/components/image-zoom.js +125 -0
  521. package/dist/components/input-group.d.ts +10 -0
  522. package/dist/components/input-group.js +12 -0
  523. package/dist/components/input-otp.d.ts +18 -0
  524. package/dist/components/input-otp.js +38 -0
  525. package/dist/components/input.d.ts +6 -0
  526. package/dist/components/input.js +8 -0
  527. package/dist/components/json-viewer.d.ts +43 -0
  528. package/dist/components/json-viewer.js +313 -0
  529. package/dist/components/kanban.d.ts +31 -0
  530. package/dist/components/kanban.js +143 -0
  531. package/dist/components/kbd.d.ts +3 -0
  532. package/dist/components/kbd.js +8 -0
  533. package/dist/components/label.d.ts +3 -0
  534. package/dist/components/label.js +9 -0
  535. package/dist/components/light-rays.d.ts +19 -0
  536. package/dist/components/light-rays.js +20 -0
  537. package/dist/components/lightbox.d.ts +24 -0
  538. package/dist/components/lightbox.js +68 -0
  539. package/dist/components/line-chart.d.ts +10 -0
  540. package/dist/components/line-chart.js +9 -0
  541. package/dist/components/live-line-chart.d.ts +12 -0
  542. package/dist/components/live-line-chart.js +42 -0
  543. package/dist/components/logo-carousel.d.ts +27 -0
  544. package/dist/components/logo-carousel.js +101 -0
  545. package/dist/components/magnetic.d.ts +44 -0
  546. package/dist/components/magnetic.js +172 -0
  547. package/dist/components/marquee.d.ts +71 -0
  548. package/dist/components/marquee.js +141 -0
  549. package/dist/components/masonry.d.ts +16 -0
  550. package/dist/components/masonry.js +84 -0
  551. package/dist/components/menubar.d.ts +33 -0
  552. package/dist/components/menubar.js +56 -0
  553. package/dist/components/meteors.d.ts +20 -0
  554. package/dist/components/meteors.js +39 -0
  555. package/dist/components/metric.d.ts +9 -0
  556. package/dist/components/metric.js +35 -0
  557. package/dist/components/mode-toggle.d.ts +32 -0
  558. package/dist/components/mode-toggle.js +40 -0
  559. package/dist/components/morphing-popover.d.ts +91 -0
  560. package/dist/components/morphing-popover.js +194 -0
  561. package/dist/components/motion-presets.d.ts +9 -0
  562. package/dist/components/motion-presets.js +20 -0
  563. package/dist/components/multi-select.d.ts +54 -0
  564. package/dist/components/multi-select.js +0 -0
  565. package/dist/components/navigation-menu.d.ts +12 -0
  566. package/dist/components/navigation-menu.js +42 -0
  567. package/dist/components/noise.d.ts +19 -0
  568. package/dist/components/noise.js +18 -0
  569. package/dist/components/notification-center.d.ts +68 -0
  570. package/dist/components/notification-center.js +57 -0
  571. package/dist/components/number-input.d.ts +45 -0
  572. package/dist/components/number-input.js +148 -0
  573. package/dist/components/orbit.d.ts +77 -0
  574. package/dist/components/orbit.js +100 -0
  575. package/dist/components/pagination.d.ts +16 -0
  576. package/dist/components/pagination.js +34 -0
  577. package/dist/components/particles.d.ts +18 -0
  578. package/dist/components/particles.js +92 -0
  579. package/dist/components/password-input.d.ts +16 -0
  580. package/dist/components/password-input.js +49 -0
  581. package/dist/components/phone-input.d.ts +67 -0
  582. package/dist/components/phone-input.js +225 -0
  583. package/dist/components/pie-chart.d.ts +12 -0
  584. package/dist/components/pie-chart.js +13 -0
  585. package/dist/components/pill-nav.d.ts +25 -0
  586. package/dist/components/pill-nav.js +66 -0
  587. package/dist/components/popover.d.ts +7 -0
  588. package/dist/components/popover.js +15 -0
  589. package/dist/components/profit-loss-chart.d.ts +10 -0
  590. package/dist/components/profit-loss-chart.js +8 -0
  591. package/dist/components/progress.d.ts +10 -0
  592. package/dist/components/progress.js +17 -0
  593. package/dist/components/progressive-blur.d.ts +24 -0
  594. package/dist/components/progressive-blur.js +43 -0
  595. package/dist/components/radar-chart.d.ts +9 -0
  596. package/dist/components/radar-chart.js +9 -0
  597. package/dist/components/radio-group.d.ts +4 -0
  598. package/dist/components/radio-group.js +15 -0
  599. package/dist/components/rating.d.ts +29 -0
  600. package/dist/components/rating.js +94 -0
  601. package/dist/components/resizable.d.ts +57 -0
  602. package/dist/components/resizable.js +73 -0
  603. package/dist/components/retro-grid.d.ts +25 -0
  604. package/dist/components/retro-grid.js +26 -0
  605. package/dist/components/reveal.d.ts +9 -0
  606. package/dist/components/reveal.js +14 -0
  607. package/dist/components/rich-text-editor.d.ts +28 -0
  608. package/dist/components/rich-text-editor.js +83 -0
  609. package/dist/components/ring-chart.d.ts +13 -0
  610. package/dist/components/ring-chart.js +16 -0
  611. package/dist/components/ripple.d.ts +25 -0
  612. package/dist/components/ripple.js +26 -0
  613. package/dist/components/sankey-chart.d.ts +16 -0
  614. package/dist/components/sankey-chart.js +8 -0
  615. package/dist/components/scatter-chart.d.ts +12 -0
  616. package/dist/components/scatter-chart.js +9 -0
  617. package/dist/components/scheduler.d.ts +50 -0
  618. package/dist/components/scheduler.js +93 -0
  619. package/dist/components/scramble-text.d.ts +39 -0
  620. package/dist/components/scramble-text.js +78 -0
  621. package/dist/components/scroll-area.d.ts +13 -0
  622. package/dist/components/scroll-area.js +14 -0
  623. package/dist/components/scroll-progress.d.ts +19 -0
  624. package/dist/components/scroll-progress.js +67 -0
  625. package/dist/components/segmented-control.d.ts +48 -0
  626. package/dist/components/segmented-control.js +222 -0
  627. package/dist/components/select.d.ts +12 -0
  628. package/dist/components/select.js +43 -0
  629. package/dist/components/separator.d.ts +3 -0
  630. package/dist/components/separator.js +9 -0
  631. package/dist/components/sheet.d.ts +25 -0
  632. package/dist/components/sheet.js +47 -0
  633. package/dist/components/shimmer.d.ts +3 -0
  634. package/dist/components/shimmer.js +8 -0
  635. package/dist/components/shiny-text.d.ts +20 -0
  636. package/dist/components/shiny-text.js +24 -0
  637. package/dist/components/sidebar.d.ts +92 -0
  638. package/dist/components/sidebar.js +290 -0
  639. package/dist/components/signature-pad.d.ts +44 -0
  640. package/dist/components/signature-pad.js +317 -0
  641. package/dist/components/skeleton.d.ts +3 -0
  642. package/dist/components/skeleton.js +8 -0
  643. package/dist/components/slider.d.ts +10 -0
  644. package/dist/components/slider.js +27 -0
  645. package/dist/components/sonner.d.ts +9 -0
  646. package/dist/components/sonner.js +17 -0
  647. package/dist/components/sparkles-text.d.ts +19 -0
  648. package/dist/components/sparkles-text.js +36 -0
  649. package/dist/components/sparkline.d.ts +22 -0
  650. package/dist/components/sparkline.js +100 -0
  651. package/dist/components/spinner.d.ts +10 -0
  652. package/dist/components/spinner.js +20 -0
  653. package/dist/components/spinning-text.d.ts +29 -0
  654. package/dist/components/spinning-text.js +40 -0
  655. package/dist/components/split-button.d.ts +71 -0
  656. package/dist/components/split-button.js +30 -0
  657. package/dist/components/spotlight-card.d.ts +11 -0
  658. package/dist/components/spotlight-card.js +63 -0
  659. package/dist/components/star-border.d.ts +19 -0
  660. package/dist/components/star-border.js +18 -0
  661. package/dist/components/status-dot.d.ts +60 -0
  662. package/dist/components/status-dot.js +76 -0
  663. package/dist/components/stepper.d.ts +98 -0
  664. package/dist/components/stepper.js +164 -0
  665. package/dist/components/sunburst-chart.d.ts +11 -0
  666. package/dist/components/sunburst-chart.js +45 -0
  667. package/dist/components/switch.d.ts +3 -0
  668. package/dist/components/switch.js +10 -0
  669. package/dist/components/table-of-contents.d.ts +64 -0
  670. package/dist/components/table-of-contents.js +0 -0
  671. package/dist/components/table.d.ts +10 -0
  672. package/dist/components/table.js +38 -0
  673. package/dist/components/tabs.d.ts +6 -0
  674. package/dist/components/tabs.js +22 -0
  675. package/dist/components/tags-input.d.ts +39 -0
  676. package/dist/components/tags-input.js +86 -0
  677. package/dist/components/terminal.d.ts +86 -0
  678. package/dist/components/terminal.js +182 -0
  679. package/dist/components/text-effect.d.ts +71 -0
  680. package/dist/components/text-effect.js +166 -0
  681. package/dist/components/textarea.d.ts +6 -0
  682. package/dist/components/textarea.js +8 -0
  683. package/dist/components/tilt-card.d.ts +30 -0
  684. package/dist/components/tilt-card.js +84 -0
  685. package/dist/components/time-picker.d.ts +58 -0
  686. package/dist/components/time-picker.js +245 -0
  687. package/dist/components/timeline.d.ts +81 -0
  688. package/dist/components/timeline.js +165 -0
  689. package/dist/components/toggle-group.d.ts +12 -0
  690. package/dist/components/toggle-group.js +23 -0
  691. package/dist/components/toggle.d.ts +12 -0
  692. package/dist/components/toggle.js +25 -0
  693. package/dist/components/toolbar.d.ts +14 -0
  694. package/dist/components/toolbar.js +89 -0
  695. package/dist/components/tooltip.d.ts +29 -0
  696. package/dist/components/tooltip.js +48 -0
  697. package/dist/components/tree-view.d.ts +45 -0
  698. package/dist/components/tree-view.js +197 -0
  699. package/dist/components/typing-text.d.ts +49 -0
  700. package/dist/components/typing-text.js +90 -0
  701. package/dist/components/usage-meter.d.ts +30 -0
  702. package/dist/components/usage-meter.js +90 -0
  703. package/dist/components/video-player.d.ts +48 -0
  704. package/dist/components/video-player.js +216 -0
  705. package/dist/components/word-rotate.d.ts +40 -0
  706. package/dist/components/word-rotate.js +34 -0
  707. package/dist/index.d.ts +306 -0
  708. package/dist/index.js +179 -0
  709. package/dist/lib/cn.d.ts +7 -0
  710. package/dist/lib/cn.js +10 -0
  711. package/dist/lib/demo-saas.d.ts +171 -0
  712. package/dist/lib/demo-saas.js +210 -0
  713. package/dist/lib/demo-store.d.ts +157 -0
  714. package/dist/lib/demo-store.js +353 -0
  715. package/dist/testing/index.d.ts +76 -0
  716. package/dist/testing/index.js +116 -0
  717. package/package.json +941 -0
@@ -0,0 +1,210 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { createContext, forwardRef, useContext, useId, useMemo } from "react";
4
+ import * as RechartsPrimitive from "recharts";
5
+ import { cn } from "../lib/cn.js";
6
+ // Supported themes and their CSS selector prefixes.
7
+ const THEMES = { light: "", dark: ".dark" };
8
+ /** Map series to a ChartConfig using chart-1..5 when color is omitted. */
9
+ export function chartSeriesConfig(series) {
10
+ const config = {};
11
+ for (const [index, item] of series.entries()) {
12
+ config[item.key] = {
13
+ label: item.label,
14
+ color: item.color ?? `var(--cronus-chart-${(index % 5) + 1})`,
15
+ };
16
+ }
17
+ return config;
18
+ }
19
+ const ChartContext = createContext(null);
20
+ // Pinned locale: a bare `toLocaleString()` would format by ambient locale and
21
+ // render differently on the server than in the browser.
22
+ const TOOLTIP_NUMBER = new Intl.NumberFormat("en-US");
23
+ function useChart() {
24
+ const context = useContext(ChartContext);
25
+ if (!context) {
26
+ throw new Error("useChart must be used within a <ChartContainer />");
27
+ }
28
+ return context;
29
+ }
30
+ const ChartContainer = forwardRef(({ id, className, children, config, ...props }, ref) => {
31
+ const uniqueId = useId();
32
+ const chartId = `chart-${id || uniqueId.replace(/:/g, "")}`;
33
+ return (_jsx(ChartContext.Provider, { value: { config }, children: _jsxs("div", { "data-slot": "chart", "data-chart": chartId, ref: ref, className: cn("flex aspect-video justify-center text-xs [&_.recharts-cartesian-grid_line]:stroke-border/50 [&_.recharts-cartesian-axis-tick_text]:fill-fg-tertiary [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-none [&_.recharts-sector]:outline-none [&_.recharts-surface]:outline-none", className), ...props, children: [_jsx(ChartStyle, { id: chartId, config: config }), _jsx(RechartsPrimitive.ResponsiveContainer, { children: children })] }) }));
34
+ });
35
+ ChartContainer.displayName = "ChartContainer";
36
+ // ── CSS-injection hardening ────────────────────────────────────────
37
+ // ChartStyle injects per-chart CSS custom properties via a <style> tag
38
+ // (dangerouslySetInnerHTML). Both the config key and the color value flow
39
+ // into that raw CSS, so each is validated against a strict allowlist before
40
+ // being emitted. Anything that does not match is dropped (the line is not
41
+ // emitted) so a malicious value like `red;} body{display:none` cannot break
42
+ // out of the declaration.
43
+ // Keys become part of `--color-<key>`. Restrict to identifier-safe chars.
44
+ const CHART_KEY_RE = /^[a-zA-Z0-9_-]+$/;
45
+ // Allowed color value forms:
46
+ // - hex: #rgb / #rgba / #rrggbb / #rrggbbaa
47
+ // - functional: rgb()/rgba()/hsl()/hsla()/oklch()/oklab() with numeric args
48
+ // (digits, %, ., -, /, spaces and commas only — no nested fns, no ; or {})
49
+ // - var(--token) reference (optionally chained: var(--a, var(--b)))
50
+ // - a bare named token reference: letters/digits/_/- (e.g. a CSS var name or
51
+ // a keyword like `transparent` / `currentColor`)
52
+ const HEX_RE = /^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/;
53
+ const FUNC_RE = /^(?:rgb|rgba|hsl|hsla|oklch|oklab)\(\s*[0-9.\-%/,\s]+\)$/;
54
+ const VAR_RE = /^var\(\s*--[a-zA-Z0-9_-]+\s*(?:,\s*[a-zA-Z0-9_\-#%.,()/\s]+)?\)$/;
55
+ const NAMED_RE = /^[a-zA-Z][a-zA-Z0-9_-]*$/;
56
+ function isSafeChartColor(value) {
57
+ const v = value.trim();
58
+ if (!v || v.length > 128) {
59
+ return false;
60
+ }
61
+ return HEX_RE.test(v) || FUNC_RE.test(v) || VAR_RE.test(v) || NAMED_RE.test(v);
62
+ }
63
+ const ChartStyle = ({ id, config }) => {
64
+ const colorConfig = Object.entries(config).filter(([, conf]) => conf.theme || conf.color);
65
+ if (!colorConfig.length) {
66
+ return null;
67
+ }
68
+ // `id` is interpolated into the CSS selector; restrict it to identifier-safe
69
+ // chars so it cannot terminate the selector and inject arbitrary rules.
70
+ const safeId = CHART_KEY_RE.test(id) ? id : null;
71
+ if (!safeId) {
72
+ return null;
73
+ }
74
+ const css = Object.entries(THEMES)
75
+ .map(([theme, prefix]) => {
76
+ const decls = colorConfig
77
+ .map(([key, itemConfig]) => {
78
+ const color = itemConfig.theme?.[theme] || itemConfig.color;
79
+ // Skip entries with an unsafe key or an unsafe/absent color value.
80
+ if (!color || typeof color !== "string" || !CHART_KEY_RE.test(key)) {
81
+ return null;
82
+ }
83
+ if (!isSafeChartColor(color)) {
84
+ return null;
85
+ }
86
+ return ` --color-${key}: ${color.trim()};`;
87
+ })
88
+ .filter(Boolean)
89
+ .join("\n");
90
+ if (!decls) {
91
+ return null;
92
+ }
93
+ return `${prefix} [data-chart=${safeId}] {\n${decls}\n}`;
94
+ })
95
+ .filter(Boolean)
96
+ .join("\n");
97
+ if (!css) {
98
+ return null;
99
+ }
100
+ return (_jsx("style", {
101
+ // biome-ignore lint/security/noDangerouslySetInnerHtml: injecting per-chart CSS vars is the canonical recharts pattern; key + color are validated against a strict allowlist above
102
+ dangerouslySetInnerHTML: { __html: css } }));
103
+ };
104
+ const ChartTooltip = RechartsPrimitive.Tooltip;
105
+ const ChartTooltipContent = forwardRef(({ active, payload, className, indicator = "dot", hideLabel = false, hideIndicator = false, label, labelKey, nameKey, formatValue, }, ref) => {
106
+ const { config } = useChart();
107
+ const tooltipLabel = useMemo(() => {
108
+ if (hideLabel || !payload?.length) {
109
+ return null;
110
+ }
111
+ const [item] = payload;
112
+ let value = typeof label === "string" || typeof label === "number" ? label : null;
113
+ if (labelKey) {
114
+ const datum = item?.payload;
115
+ const fromDatum = datum?.[labelKey];
116
+ if (typeof fromDatum === "string" || typeof fromDatum === "number") {
117
+ value = fromDatum;
118
+ }
119
+ else {
120
+ const itemConfig = getPayloadConfigFromPayload(config, item, labelKey);
121
+ value = itemConfig?.label ?? value;
122
+ }
123
+ }
124
+ else if (typeof label === "string" && config[label]?.label) {
125
+ value = config[label].label;
126
+ }
127
+ if (!value) {
128
+ return null;
129
+ }
130
+ return _jsx("div", { className: "text-[11px] text-fg-tertiary", children: value });
131
+ }, [label, labelKey, payload, hideLabel, config]);
132
+ if (!active || !payload?.length) {
133
+ return null;
134
+ }
135
+ const nestLabel = payload.length === 1 && indicator !== "dot";
136
+ return (_jsxs("div", { ref: ref, className: cn("grid min-w-[10.5rem] items-start gap-2 rounded-xl border border-border bg-surface-floating px-3 py-2.5 text-xs text-fg shadow-lg transition-[opacity,transform] duration-200 ease-[cubic-bezier(.22,1,.36,1)] starting:translate-y-1 starting:opacity-0 motion-reduce:transition-none motion-reduce:starting:translate-y-0 motion-reduce:starting:opacity-100", className), children: [!nestLabel ? tooltipLabel : null, _jsx("div", { className: "grid gap-1.5", children: payload.map((item, index) => {
137
+ const key = `${nameKey || item.name || item.dataKey || "value"}`;
138
+ const itemConfig = getPayloadConfigFromPayload(config, item, key);
139
+ const indicatorColor = item.color;
140
+ return (_jsxs("div", { className: "flex w-full flex-wrap items-stretch gap-2 [&>svg]:size-2.5 [&>svg]:text-fg-tertiary", children: [itemConfig?.icon ? (_jsx(itemConfig.icon, {})) : (!hideIndicator && (_jsx("div", { className: cn("shrink-0 rounded-full", {
141
+ "size-2": indicator === "dot",
142
+ "mt-0.5 h-3 w-0.5 rounded-sm": indicator === "line",
143
+ "w-0 border-[1.5px] border-dashed bg-transparent": indicator === "dashed",
144
+ }), style: { backgroundColor: indicatorColor } }))), _jsxs("div", { className: cn("flex flex-1 justify-between leading-none", nestLabel ? "items-end" : "items-center"), children: [_jsxs("div", { className: "grid gap-1.5", children: [nestLabel ? tooltipLabel : null, _jsx("span", { className: "text-fg-secondary", children: itemConfig?.label || item.name })] }), item.value != null && (_jsx("span", { className: "font-mono font-medium tabular-nums text-fg", children: typeof item.value === "number"
145
+ ? (formatValue?.(item.value, key) ?? TOOLTIP_NUMBER.format(item.value))
146
+ : item.value }))] })] }, item.dataKey ?? index));
147
+ }) })] }));
148
+ });
149
+ ChartTooltipContent.displayName = "ChartTooltipContent";
150
+ function readCursorLabel(payload, labelKey) {
151
+ const datum = payload?.[0]?.payload;
152
+ if (!datum)
153
+ return "";
154
+ const keys = labelKey ? [labelKey] : ["date", "day", "month", "label", "name"];
155
+ for (const key of keys) {
156
+ const value = datum[key];
157
+ if (typeof value === "string" && value.length > 0)
158
+ return value;
159
+ if (typeof value === "number")
160
+ return String(value);
161
+ }
162
+ return "";
163
+ }
164
+ function ChartCursor({ x, points, height = 0, top = 0, payload, labelKey, showAxisLabel = true, }) {
165
+ const lineX = x ?? points?.[0]?.x;
166
+ if (lineX == null || !Number.isFinite(lineX))
167
+ return null;
168
+ const tick = readCursorLabel(payload, labelKey);
169
+ const pillWidth = Math.max(48, Math.min(96, tick.length * 7 + 16));
170
+ return (_jsxs("g", { "data-slot": "chart-cursor", pointerEvents: "none", children: [_jsx("line", { x1: lineX, x2: lineX, y1: top, y2: top + height, className: "stroke-fg-muted", strokeWidth: 1 }), tick && showAxisLabel ? (_jsxs("g", { transform: `translate(${lineX}, ${top + height + 14})`, children: [_jsx("rect", { x: -pillWidth / 2, y: -10, width: pillWidth, height: 20, rx: 10, className: "fill-fg" }), _jsx("text", { textAnchor: "middle", dominantBaseline: "middle", y: 1, className: "fill-fg-inverse text-[11px] font-medium", children: tick })] })) : null] }));
171
+ }
172
+ ChartCursor.displayName = "ChartCursor";
173
+ const ChartLegend = RechartsPrimitive.Legend;
174
+ const ChartLegendContent = forwardRef(({ className, hideIcon = false, payload, verticalAlign = "bottom", nameKey }, ref) => {
175
+ const { config } = useChart();
176
+ if (!payload?.length) {
177
+ return null;
178
+ }
179
+ return (_jsx("div", { ref: ref, className: cn("flex items-center justify-center gap-4", verticalAlign === "top" ? "pb-3" : "pt-3", className), children: payload.map((item, index) => {
180
+ const key = `${nameKey || item.dataKey || "value"}`;
181
+ const itemConfig = getPayloadConfigFromPayload(config, item, key);
182
+ return (_jsxs("div", { className: "flex items-center gap-1.5 text-fg-tertiary [&>svg]:size-3 [&>svg]:text-fg-tertiary", children: [itemConfig?.icon && !hideIcon ? (_jsx(itemConfig.icon, {})) : (_jsx("div", { className: "size-2 shrink-0 rounded-[2px]", style: { backgroundColor: item.color } })), itemConfig?.label] }, item.value ?? index));
183
+ }) }));
184
+ });
185
+ ChartLegendContent.displayName = "ChartLegendContent";
186
+ // Resolve the config entry for a payload item, checking the item and its nested
187
+ // payload datum for a usable config key. Payload shapes are untyped (recharts).
188
+ function getPayloadConfigFromPayload(config,
189
+ // biome-ignore lint/suspicious/noExplicitAny: recharts payload item is untyped
190
+ payload, key) {
191
+ if (typeof payload !== "object" || payload === null) {
192
+ return undefined;
193
+ }
194
+ const payloadPayload = "payload" in payload && typeof payload.payload === "object" && payload.payload !== null
195
+ ? payload.payload
196
+ : undefined;
197
+ let configLabelKey = key;
198
+ if (key in payload && typeof payload[key] === "string") {
199
+ configLabelKey = payload[key];
200
+ }
201
+ else if (payloadPayload && key in payloadPayload && typeof payloadPayload[key] === "string") {
202
+ configLabelKey = payloadPayload[key];
203
+ }
204
+ return configLabelKey in config ? config[configLabelKey] : config[key];
205
+ }
206
+ export { ChartContainer, ChartCursor, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent,
207
+ // Exported for unit testing of the CSS-injection allowlist. Not re-exported
208
+ // from the package barrel, so the public API is unchanged.
209
+ isSafeChartColor, };
210
+ //# sourceMappingURL=chart.js.map
@@ -0,0 +1,3 @@
1
+ import * as CheckboxPrimitive from "@radix-ui/react-checkbox";
2
+ export declare const Checkbox: import("react").ForwardRefExoticComponent<Omit<CheckboxPrimitive.CheckboxProps & import("react").RefAttributes<HTMLButtonElement>, "ref"> & import("react").RefAttributes<HTMLButtonElement>>;
3
+ //# sourceMappingURL=checkbox.d.ts.map
@@ -0,0 +1,11 @@
1
+ "use client";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import * as CheckboxPrimitive from "@radix-ui/react-checkbox";
4
+ import { Check } from "lucide-react";
5
+ import { forwardRef } from "react";
6
+ import { cn } from "../lib/cn.js";
7
+ export const Checkbox = forwardRef(({ className, ...props }, ref) => {
8
+ return (_jsx(CheckboxPrimitive.Root, { ref: ref, "data-slot": "checkbox", className: cn("peer size-4 shrink-0 rounded-sm border border-border bg-surface-inset shadow-xs transition-colors outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-surface-base disabled:opacity-50 disabled:pointer-events-none data-[state=checked]:bg-primary data-[state=checked]:border-primary data-[state=checked]:text-primary-foreground aria-invalid:border-error aria-invalid:ring-2 aria-invalid:ring-error/30", className), ...props, children: _jsx(CheckboxPrimitive.Indicator, { className: "flex items-center justify-center text-current", children: _jsx(Check, { className: "size-3.5" }) }) }));
9
+ });
10
+ Checkbox.displayName = "Checkbox";
11
+ //# sourceMappingURL=checkbox.js.map
@@ -0,0 +1,80 @@
1
+ import { type VariantProps } from "class-variance-authority";
2
+ import { type HTMLAttributes, type ReactNode } from "react";
3
+ declare const chipVariants: (props?: ({
4
+ variant?: "outline" | "solid" | "soft" | null | undefined;
5
+ color?: "info" | "success" | "warning" | "primary" | "error" | "neutral" | null | undefined;
6
+ size?: "sm" | "md" | "lg" | null | undefined;
7
+ interactive?: boolean | null | undefined;
8
+ selected?: boolean | null | undefined;
9
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
10
+ /** Localizable strings rendered by {@link Chip}. Defaults are English. */
11
+ export interface ChipLabels {
12
+ /**
13
+ * Screen-reader string for the remove affordance: the accessible name of the
14
+ * remove button on a non-interactive chip, and the Delete/Backspace removal
15
+ * hint (exposed as the chip's accessible description) on an interactive one.
16
+ * @default "Remove"
17
+ */
18
+ remove: string;
19
+ }
20
+ export interface ChipProps extends Omit<HTMLAttributes<HTMLElement>, "color">, Omit<VariantProps<typeof chipVariants>, "interactive" | "selected"> {
21
+ /**
22
+ * Visual treatment: `solid` fill, `soft` 15% tint, or `outline`.
23
+ * @default "soft"
24
+ */
25
+ variant?: "solid" | "soft" | "outline";
26
+ /**
27
+ * Semantic hue applied by the variant recipe.
28
+ * @default "neutral"
29
+ */
30
+ color?: "neutral" | "primary" | "success" | "warning" | "error" | "info";
31
+ /**
32
+ * Pill height / typography preset.
33
+ * @default "md"
34
+ */
35
+ size?: "sm" | "md" | "lg";
36
+ /**
37
+ * Toggle state for filter-style chips. Any non-`undefined` value renders the
38
+ * chip as a `<button>` with `aria-pressed`; while `true` it also gains a
39
+ * leading check mark and emphasized styling.
40
+ * @default undefined
41
+ */
42
+ selected?: boolean;
43
+ /** Leading icon slot rendered before the label (e.g. a lucide icon). */
44
+ icon?: ReactNode;
45
+ /** Leading avatar slot (an `img`, `Avatar`, …) clipped to a circle and sized by `size`. */
46
+ avatar?: ReactNode;
47
+ /**
48
+ * Makes the chip dismissible. On a static chip this renders a real,
49
+ * focusable remove button (Enter/Space activate it); on an interactive chip
50
+ * the affordance is decorative and Delete or Backspace on the focused chip
51
+ * removes it instead. Removal never triggers `onClick`, and removal clicks
52
+ * never propagate to ancestor click handlers.
53
+ */
54
+ onRemove?: () => void;
55
+ /**
56
+ * Disables the chip and its remove affordance.
57
+ * @default false
58
+ */
59
+ disabled?: boolean;
60
+ /** Override any subset of the built-in screen-reader strings. See {@link ChipLabels}. */
61
+ labels?: Partial<ChipLabels>;
62
+ }
63
+ /**
64
+ * Interactive filter / selection chip. Where {@link Badge} is a static status
65
+ * label, Chip is a control: give it `onClick` and/or `selected` and it renders
66
+ * as a real `<button>` (Enter/Space activate natively, `aria-pressed` carries
67
+ * the toggle state); leave both off and it stays a server-safe `<span>`. A
68
+ * `selected`-only chip attaches no event handlers, so it can also render from
69
+ * a Server Component as a display-only pressed button.
70
+ * `onRemove` adds a dismiss affordance plus Delete/Backspace removal.
71
+ */
72
+ export declare const Chip: import("react").ForwardRefExoticComponent<ChipProps & import("react").RefAttributes<HTMLElement>>;
73
+ export interface ChipGroupProps extends HTMLAttributes<HTMLDivElement> {
74
+ /** Accessible name announcing what the chip collection represents. */
75
+ "aria-label"?: string;
76
+ }
77
+ /** Flex-wrap layout for a set of related chips, exposed as a labelled `role="group"`. */
78
+ export declare const ChipGroup: import("react").ForwardRefExoticComponent<ChipGroupProps & import("react").RefAttributes<HTMLDivElement>>;
79
+ export { chipVariants };
80
+ //# sourceMappingURL=chip.d.ts.map
@@ -0,0 +1,186 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { cva } from "class-variance-authority";
3
+ import { Check, X } from "lucide-react";
4
+ import { forwardRef, useId, } from "react";
5
+ import { cn } from "../lib/cn.js";
6
+ const chipVariants = cva("inline-flex items-center whitespace-nowrap rounded-full border font-medium transition-[background,border-color,box-shadow,transform,opacity] duration-150 ease-[var(--ease-out-quart)] outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-surface-base disabled:opacity-50 disabled:pointer-events-none data-[disabled]:opacity-50 data-[disabled]:pointer-events-none [&_svg]:shrink-0 [&_svg]:pointer-events-none", {
7
+ variants: {
8
+ variant: {
9
+ solid: "border-transparent shadow-xs",
10
+ soft: "border-transparent",
11
+ outline: "bg-transparent",
12
+ },
13
+ // Colour recipes depend on the variant, so they live in compoundVariants.
14
+ color: {
15
+ neutral: "",
16
+ primary: "",
17
+ success: "",
18
+ warning: "",
19
+ error: "",
20
+ info: "",
21
+ },
22
+ size: {
23
+ sm: "h-6 gap-1 px-2 text-xs [&_svg]:size-3 [&_[data-slot=chip-avatar]]:size-4",
24
+ md: "h-7 gap-1.5 px-2.5 text-sm [&_svg]:size-3.5 [&_[data-slot=chip-avatar]]:size-5",
25
+ lg: "h-8 gap-2 px-3 text-sm [&_svg]:size-4 [&_[data-slot=chip-avatar]]:size-6",
26
+ },
27
+ // Derived from `onClick`/`selected` inside the component — not public props.
28
+ interactive: {
29
+ true: "cursor-pointer select-none active:scale-[0.97]",
30
+ false: "",
31
+ },
32
+ selected: {
33
+ true: "font-semibold",
34
+ false: "",
35
+ },
36
+ },
37
+ compoundVariants: [
38
+ // ── solid ── filled pills. `neutral` is the inverse fill (`fg-inverse`
39
+ // is the AA-paired text token for an `fg` surface) and `primary` rides
40
+ // its paired foreground token. The semantic hues have no paired
41
+ // foreground, so they reuse the Button technique: darken the fill 30%
42
+ // toward black in OKLCH so white text clears >=4.5:1 on every theme/mode
43
+ // (see button.tsx `destructive` — the raw fills are too light for white).
44
+ { variant: "solid", color: "neutral", class: "bg-fg text-fg-inverse" },
45
+ { variant: "solid", color: "primary", class: "bg-primary text-primary-foreground" },
46
+ {
47
+ variant: "solid",
48
+ color: "success",
49
+ class: "bg-[color-mix(in_oklch,var(--cronus-success),black_30%)] text-white",
50
+ },
51
+ {
52
+ variant: "solid",
53
+ color: "warning",
54
+ class: "bg-[color-mix(in_oklch,var(--cronus-warning),black_30%)] text-white",
55
+ },
56
+ {
57
+ variant: "solid",
58
+ color: "error",
59
+ class: "bg-[color-mix(in_oklch,var(--cronus-error),black_30%)] text-white",
60
+ },
61
+ {
62
+ variant: "solid",
63
+ color: "info",
64
+ class: "bg-[color-mix(in_oklch,var(--cronus-info),black_30%)] text-white",
65
+ },
66
+ // ── soft ── 15% tints. Same-hue text on a tint can read <4.5:1, so the
67
+ // label uses the AA-tuned `*-strong` text variants (tokens contract).
68
+ { variant: "soft", color: "neutral", class: "bg-surface-overlay text-fg" },
69
+ { variant: "soft", color: "primary", class: "bg-primary/15 text-primary-strong" },
70
+ { variant: "soft", color: "success", class: "bg-success/15 text-success-strong" },
71
+ { variant: "soft", color: "warning", class: "bg-warning/15 text-warning-strong" },
72
+ { variant: "soft", color: "error", class: "bg-error/15 text-error-strong" },
73
+ { variant: "soft", color: "info", class: "bg-info/15 text-info-strong" },
74
+ // ── outline ── bordered, transparent fill; text again on `*-strong`.
75
+ { variant: "outline", color: "neutral", class: "border-border text-fg" },
76
+ { variant: "outline", color: "primary", class: "border-primary/50 text-primary-strong" },
77
+ { variant: "outline", color: "success", class: "border-success/50 text-success-strong" },
78
+ { variant: "outline", color: "warning", class: "border-warning/50 text-warning-strong" },
79
+ { variant: "outline", color: "error", class: "border-error/50 text-error-strong" },
80
+ { variant: "outline", color: "info", class: "border-info/50 text-info-strong" },
81
+ // Hover affordances only when the chip is a real control. `currentColor`
82
+ // keeps them hue-correct for every color without another 18 entries.
83
+ { interactive: true, variant: "solid", class: "hover:opacity-90" },
84
+ { interactive: true, variant: "soft", class: "hover:border-current/40" },
85
+ { interactive: true, variant: "outline", class: "hover:bg-current/10" },
86
+ // Selection emphasis (the leading check mark is rendered by the
87
+ // component). Listed last so tailwind-merge resolves border/background
88
+ // conflicts in its favor.
89
+ {
90
+ selected: true,
91
+ variant: "soft",
92
+ class: "border-current/50 hover:border-current/50",
93
+ },
94
+ {
95
+ selected: true,
96
+ variant: "outline",
97
+ class: "border-current bg-current/10 hover:border-current",
98
+ },
99
+ ],
100
+ defaultVariants: {
101
+ variant: "soft",
102
+ color: "neutral",
103
+ size: "md",
104
+ interactive: false,
105
+ selected: false,
106
+ },
107
+ });
108
+ const DEFAULT_LABELS = { remove: "Remove" };
109
+ const REMOVE_AFFORDANCE_CLASSES = "ms-0.5 -me-1 inline-flex shrink-0 cursor-pointer items-center justify-center rounded-full p-0.5 opacity-70 transition-opacity duration-150 hover:opacity-100";
110
+ /**
111
+ * Interactive filter / selection chip. Where {@link Badge} is a static status
112
+ * label, Chip is a control: give it `onClick` and/or `selected` and it renders
113
+ * as a real `<button>` (Enter/Space activate natively, `aria-pressed` carries
114
+ * the toggle state); leave both off and it stays a server-safe `<span>`. A
115
+ * `selected`-only chip attaches no event handlers, so it can also render from
116
+ * a Server Component as a display-only pressed button.
117
+ * `onRemove` adds a dismiss affordance plus Delete/Backspace removal.
118
+ */
119
+ export const Chip = forwardRef(({ className, variant, color, size, selected, icon, avatar, onRemove, labels, disabled = false, onClick, onKeyDown, children, ...props }, ref) => {
120
+ const isInteractive = onClick !== undefined || selected !== undefined;
121
+ const dismissible = onRemove !== undefined;
122
+ const removeLabel = labels?.remove ?? DEFAULT_LABELS.remove;
123
+ // `selected` is a serializable boolean, so a display-only selected chip is
124
+ // legitimately reachable from a Server Component — where function props on
125
+ // host elements throw. Handlers are therefore only attached when they can
126
+ // do something (`onClick` routing or removal); a selected-only chip renders
127
+ // a handler-free `<button aria-pressed>`.
128
+ const attachesClickHandler = isInteractive && (onClick !== undefined || dismissible);
129
+ const describesRemoval = isInteractive && dismissible;
130
+ const removeHintId = useId();
131
+ // Delete/Backspace removes the focused chip (interactive chips only — the
132
+ // static variant exposes a real, focusable remove button instead).
133
+ const handleKeyDown = (event) => {
134
+ onKeyDown?.(event);
135
+ if (event.defaultPrevented || disabled)
136
+ return;
137
+ if (event.key === "Delete" || event.key === "Backspace") {
138
+ event.preventDefault();
139
+ onRemove?.();
140
+ }
141
+ };
142
+ // A real <button> may not nest inside the chip button (invalid HTML + axe
143
+ // `nested-interactive`), so the interactive chip renders its remove
144
+ // affordance as a decorative span and routes clicks on it here — removal
145
+ // must never activate the chip's own onClick.
146
+ const handleInteractiveClick = (event) => {
147
+ const target = event.target;
148
+ if (dismissible && target.closest("[data-slot=chip-remove]") !== null) {
149
+ // Same contract as the static path's remove button: removal clicks
150
+ // stay inside the chip and never reach ancestor click handlers.
151
+ event.stopPropagation();
152
+ onRemove?.();
153
+ return;
154
+ }
155
+ onClick?.(event);
156
+ };
157
+ const handleRemoveClick = (event) => {
158
+ // Keep the removal click from reaching any ancestor click handlers.
159
+ event.stopPropagation();
160
+ onRemove?.();
161
+ };
162
+ // Single render path for both elements; the cast is safe because every
163
+ // button-only attribute below is gated on `isInteractive`.
164
+ const Comp = (isInteractive ? "button" : "span");
165
+ return (_jsxs(Comp
166
+ // The root is a <button> or a <span>; the forwarded ref is typed as
167
+ // their shared supertype and narrowed here.
168
+ , {
169
+ // The root is a <button> or a <span>; the forwarded ref is typed as
170
+ // their shared supertype and narrowed here.
171
+ ref: ref, "data-slot": "chip", type: isInteractive ? "button" : undefined, disabled: isInteractive ? disabled : undefined, "data-disabled": disabled ? "" : undefined, "data-selected": selected ? "" : undefined, "aria-pressed": selected === undefined ? undefined : selected, "aria-keyshortcuts": describesRemoval ? "Delete Backspace" : undefined, "aria-describedby": describesRemoval ? removeHintId : undefined, className: cn(chipVariants({
172
+ variant,
173
+ color,
174
+ size,
175
+ interactive: isInteractive,
176
+ selected: selected === true,
177
+ }), className), onClick: attachesClickHandler ? handleInteractiveClick : onClick, onKeyDown: isInteractive && dismissible ? handleKeyDown : onKeyDown, ...props, children: [selected ? _jsx(Check, { "aria-hidden": "true", "data-slot": "chip-check" }) : null, avatar ? (_jsx("span", { "data-slot": "chip-avatar", "aria-hidden": "true", className: "-ms-1 inline-flex shrink-0 items-center justify-center overflow-hidden rounded-full [&>img]:size-full [&>img]:object-cover", children: avatar })) : null, icon ? (_jsx("span", { "data-slot": "chip-icon", "aria-hidden": "true", className: "inline-flex shrink-0 items-center justify-center", children: icon })) : null, children, dismissible ? (isInteractive ? (_jsxs(_Fragment, { children: [_jsx("span", { "data-slot": "chip-remove", "aria-hidden": "true", className: REMOVE_AFFORDANCE_CLASSES, children: _jsx(X, {}) }), _jsxs("span", { id: removeHintId, hidden: true, children: [removeLabel, ": Delete"] })] })) : (_jsxs("button", { type: "button", "data-slot": "chip-remove", disabled: disabled, className: cn(REMOVE_AFFORDANCE_CLASSES, "outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-inset"), onClick: handleRemoveClick, children: [_jsx(X, { "aria-hidden": "true" }), _jsx("span", { className: "sr-only", children: removeLabel })] }))) : null] }));
178
+ });
179
+ Chip.displayName = "Chip";
180
+ /** Flex-wrap layout for a set of related chips, exposed as a labelled `role="group"`. */
181
+ export const ChipGroup = forwardRef(({ className, ...props }, ref) => {
182
+ return (_jsx("div", { ref: ref, "data-slot": "chip-group", role: "group", className: cn("flex flex-wrap items-center gap-2", className), ...props }));
183
+ });
184
+ ChipGroup.displayName = "ChipGroup";
185
+ export { chipVariants };
186
+ //# sourceMappingURL=chip.js.map
@@ -0,0 +1,12 @@
1
+ import type { HTMLAttributes } from "react";
2
+ export interface ChoroplethRegion {
3
+ id: string;
4
+ name: string;
5
+ value: number;
6
+ }
7
+ export declare const CHOROPLETH_DEMO: ChoroplethRegion[];
8
+ export interface ChoroplethChartProps extends HTMLAttributes<HTMLDivElement> {
9
+ data?: ChoroplethRegion[];
10
+ }
11
+ export declare function ChoroplethChart({ data, className, ...props }: ChoroplethChartProps): import("react").JSX.Element;
12
+ //# sourceMappingURL=choropleth-chart.d.ts.map
@@ -0,0 +1,31 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { cn } from "../lib/cn.js";
3
+ export const CHOROPLETH_DEMO = [
4
+ { id: "nw", name: "Northwest", value: 42 },
5
+ { id: "ne", name: "Northeast", value: 78 },
6
+ { id: "w", name: "West", value: 31 },
7
+ { id: "c", name: "Central", value: 95 },
8
+ { id: "e", name: "East", value: 58 },
9
+ { id: "sw", name: "Southwest", value: 22 },
10
+ { id: "se", name: "Southeast", value: 67 },
11
+ ];
12
+ const CELLS = {
13
+ nw: "M10 10 h 80 v 50 h -80 z",
14
+ ne: "M100 10 h 80 v 50 h -80 z",
15
+ w: "M10 70 h 50 v 50 h -50 z",
16
+ c: "M70 70 h 50 v 50 h -50 z",
17
+ e: "M130 70 h 50 v 50 h -50 z",
18
+ sw: "M10 130 h 80 v 50 h -80 z",
19
+ se: "M100 130 h 80 v 50 h -80 z",
20
+ };
21
+ export function ChoroplethChart({ data = CHOROPLETH_DEMO, className, ...props }) {
22
+ const max = data.reduce((acc, item) => Math.max(acc, item.value), 1);
23
+ return (_jsx("div", { "data-slot": "choropleth-chart", className: cn("h-64 w-full", className), ...props, children: _jsx("svg", { viewBox: "0 0 200 190", className: "h-full w-full", "aria-hidden": "true", children: data.map((region) => {
24
+ const d = CELLS[region.id];
25
+ if (!d)
26
+ return null;
27
+ const opacity = 0.15 + (region.value / max) * 0.85;
28
+ return (_jsx("path", { d: d, className: "fill-primary stroke-border", style: { fillOpacity: opacity }, children: _jsx("title", { children: `${region.name}: ${region.value}` }) }, region.id));
29
+ }) }) }));
30
+ }
31
+ //# sourceMappingURL=choropleth-chart.js.map
@@ -0,0 +1,19 @@
1
+ import { type HTMLAttributes, type Ref } from "react";
2
+ export interface ClickSparkProps extends HTMLAttributes<HTMLDivElement> {
3
+ ref?: Ref<HTMLDivElement>;
4
+ /**
5
+ * Number of sparks emitted per click.
6
+ * @default 8
7
+ */
8
+ sparkCount?: number;
9
+ }
10
+ /**
11
+ * Emits a burst of sparks from the pointer on click. Sparks are decorative
12
+ * (`aria-hidden`) and skipped entirely when the visitor prefers reduced
13
+ * motion. Children stay fully interactive.
14
+ */
15
+ export declare function ClickSpark({ ref, className, children, sparkCount, onPointerDown, ...props }: ClickSparkProps): import("react").JSX.Element;
16
+ export declare namespace ClickSpark {
17
+ var displayName: string;
18
+ }
19
+ //# sourceMappingURL=click-spark.d.ts.map
@@ -0,0 +1,51 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useCallback, useRef, useState, } from "react";
4
+ import { cn } from "../lib/cn.js";
5
+ const SPARK_KEYFRAMES = "@keyframes cronus-click-spark{from{transform:translate(0,0) scale(1);opacity:1}to{transform:translate(var(--dx),var(--dy)) scale(0);opacity:0}}";
6
+ function finiteOr(value, fallback) {
7
+ return Number.isFinite(value) ? value : fallback;
8
+ }
9
+ function prefersReducedMotion() {
10
+ return (typeof window !== "undefined" &&
11
+ typeof window.matchMedia === "function" &&
12
+ window.matchMedia("(prefers-reduced-motion: reduce)").matches);
13
+ }
14
+ /**
15
+ * Emits a burst of sparks from the pointer on click. Sparks are decorative
16
+ * (`aria-hidden`) and skipped entirely when the visitor prefers reduced
17
+ * motion. Children stay fully interactive.
18
+ */
19
+ export function ClickSpark({ ref, className, children, sparkCount = 8, onPointerDown, ...props }) {
20
+ const [sparks, setSparks] = useState([]);
21
+ const nextId = useRef(0);
22
+ const count = Math.min(24, Math.max(3, Math.round(finiteOr(sparkCount, 8))));
23
+ const handlePointerDown = useCallback((event) => {
24
+ onPointerDown?.(event);
25
+ if (prefersReducedMotion())
26
+ return;
27
+ const rect = event.currentTarget.getBoundingClientRect();
28
+ const spark = {
29
+ id: nextId.current++,
30
+ x: event.clientX - rect.left,
31
+ y: event.clientY - rect.top,
32
+ };
33
+ setSparks((current) => [...current.slice(-8), spark]);
34
+ window.setTimeout(() => {
35
+ setSparks((current) => current.filter((item) => item.id !== spark.id));
36
+ }, 520);
37
+ }, [onPointerDown]);
38
+ return (_jsxs("div", { ref: ref, "data-slot": "click-spark", className: cn("relative", className), onPointerDown: handlePointerDown, ...props, children: [_jsx("style", { children: SPARK_KEYFRAMES }), _jsx("div", { className: "relative", children: children }), _jsx("div", { "aria-hidden": "true", className: "pointer-events-none absolute inset-0 overflow-hidden", children: sparks.map((spark) => Array.from({ length: count }, (_, index) => {
39
+ const angle = (index / count) * Math.PI * 2;
40
+ const distance = 18 + (index % 3) * 6;
41
+ return (_jsx("span", { className: "absolute size-1 rounded-full bg-primary [animation-duration:500ms] [animation-fill-mode:forwards] [animation-name:cronus-click-spark] [animation-timing-function:cubic-bezier(.22,1,.36,1)]", style: {
42
+ left: spark.x,
43
+ top: spark.y,
44
+ // contract-ok: spark origin is a physical pointer coordinate
45
+ ["--dx"]: `${Math.cos(angle) * distance}px`,
46
+ ["--dy"]: `${Math.sin(angle) * distance}px`,
47
+ } }, `${spark.id}-${index}`));
48
+ })) })] }));
49
+ }
50
+ ClickSpark.displayName = "ClickSpark";
51
+ //# sourceMappingURL=click-spark.js.map
@@ -0,0 +1,13 @@
1
+ import { type HTMLAttributes } from "react";
2
+ export interface CodeBlockProps extends Omit<HTMLAttributes<HTMLDivElement>, "children"> {
3
+ /** Raw source to render and copy. */
4
+ code: string;
5
+ /** Language label rendered as a Badge in the header. */
6
+ language?: string;
7
+ /** File name rendered in the header. */
8
+ filename?: string;
9
+ /** Render a gutter with 1-based line numbers. Defaults to false. */
10
+ showLineNumbers?: boolean;
11
+ }
12
+ export declare const CodeBlock: import("react").ForwardRefExoticComponent<CodeBlockProps & import("react").RefAttributes<HTMLDivElement>>;
13
+ //# sourceMappingURL=code-block.d.ts.map