@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,208 @@
1
+ "use client";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { motion } from "motion/react";
4
+ import { memo, useId, useMemo } from "react";
5
+ import { barDepthAndRise, barDepthMaxDepth } from "./bar-depth-geometry.js";
6
+ import { chartCssVars, useChart, useChartStable, useYScale } from "./chart-context.js";
7
+ import { useChartLegendHover } from "./chart-legend-hover.js";
8
+ import { transitionWithDelay } from "./motion-utils.js";
9
+ // ── Bar-depth perspective trim ───────────────────────────────────────────
10
+ // Uses the SHARED geometry (`bar-depth-geometry.ts`) so a
11
+ // `<Bar perspective>` front face lines up exactly with
12
+ // `<BarDepthBack>`'s lid — the formula lives in one place for both.
13
+ /** perspectiveRise for a positive bar whose visual top sits at `topY`.
14
+ * Returns 0 for a dead-center bar or a dense chart (degenerate depth). */
15
+ function barDepthPerspectiveRise(barScale, bandWidth, barXAccessor, innerWidth, datum, topY, baselineY) {
16
+ const centerX = innerWidth / 2;
17
+ if (centerX <= 0) {
18
+ return 0;
19
+ }
20
+ const step = barScale.step?.() ?? bandWidth;
21
+ const maxDepth = barDepthMaxDepth(step, bandWidth);
22
+ const bandX = barScale(barXAccessor(datum)) ?? 0;
23
+ const cx = bandX + bandWidth / 2;
24
+ const absOffset = Math.min(1, Math.abs((cx - centerX) / centerX));
25
+ const naturalHeight = Math.abs(baselineY - topY);
26
+ return barDepthAndRise(absOffset, naturalHeight, maxDepth).perspectiveRise;
27
+ }
28
+ function AnimatedBar({ x, y, width, height, fill, rx, ry, index, isFaded, animationType, innerHeight, fadedOpacity, staggerDelay, enterTransition, revealEpoch, isHorizontal, }) {
29
+ const enterAnim = transitionWithDelay(enterTransition, index * staggerDelay);
30
+ if (animationType === "fade") {
31
+ return (_jsx(motion.rect, { animate: {
32
+ opacity: isFaded ? fadedOpacity : 1,
33
+ filter: "blur(0px)",
34
+ }, fill: fill, height: height, initial: { opacity: 0, filter: "blur(2px)" }, rx: rx, ry: ry, transition: enterAnim, width: width, x: x, y: y }, `fade-${index}-${revealEpoch}`));
35
+ }
36
+ const initial = isHorizontal
37
+ ? { width: 0, height, x: 0, y }
38
+ : { width, height: 0, x, y: innerHeight };
39
+ const target = isHorizontal ? { width, height, x: 0, y } : { width, height, x, y };
40
+ return (_jsx("g", { opacity: isFaded ? fadedOpacity : 1, style: { transition: "opacity 0.15s ease-in-out" }, children: _jsx(motion.rect, { animate: target, fill: fill, initial: initial, rx: rx, ry: ry, transition: enterAnim }, `grow-${index}-${revealEpoch}`) }));
41
+ }
42
+ const BarInner = memo(function BarInner({ dataKey, yAxisId, fill = chartCssVars.linePrimary, lineCap = "round", animate = true, animationType = "grow", fadedOpacity = 0.22, staggerDelay, stackGap = 0, groupGap = 4, perspective = false, minBarHeight = 0, barScale, bandWidth, barXAccessor, }) {
43
+ const { data, yScale: chartYScale, innerHeight, innerWidth, isLoaded, hoveredBarIndex, lines, orientation, stacked, stackOffsets, animationDuration, enterTransition, revealEpoch = 0, } = useChart();
44
+ // Calculate stagger delay automatically if not provided
45
+ // Total animation duration is ~1200ms, with 40% for stagger spread and 60% for bar animation
46
+ const totalAnimDuration = animationDuration || 1100;
47
+ const staggerSpread = totalAnimDuration * 0.4; // 40% of time for stagger spread
48
+ const calculatedStaggerDelay = staggerDelay ?? (data.length > 1 ? staggerSpread / 1000 / data.length : 0);
49
+ const uniqueId = useId();
50
+ const isHorizontal = orientation === "horizontal";
51
+ // Find the index of this bar series among all bar series
52
+ const { hoveredIndex: legendHoveredIndex } = useChartLegendHover();
53
+ const seriesIndex = useMemo(() => {
54
+ const idx = lines.findIndex((l) => l.dataKey === dataKey);
55
+ return idx >= 0 ? idx : 0;
56
+ }, [lines, dataKey]);
57
+ const seriesConfig = lines[seriesIndex];
58
+ const valueScale = useYScale(yAxisId ?? seriesConfig?.yAxisId);
59
+ const isLegendDimmed = legendHoveredIndex !== null && legendHoveredIndex !== seriesIndex;
60
+ const seriesCount = lines.length;
61
+ const isLastSeries = seriesIndex === seriesCount - 1;
62
+ // Calculate the width for each bar within a group (for non-stacked)
63
+ const barWidth = useMemo(() => {
64
+ if (!bandWidth || seriesCount === 0) {
65
+ return 0;
66
+ }
67
+ if (stacked) {
68
+ // Stacked bars use full band width
69
+ return bandWidth;
70
+ }
71
+ // Leave a gap between grouped bars (controlled by groupGap prop)
72
+ const effectiveGroupGap = seriesCount > 1 ? groupGap : 0;
73
+ return (bandWidth - effectiveGroupGap * (seriesCount - 1)) / seriesCount;
74
+ }, [bandWidth, seriesCount, stacked, groupGap]);
75
+ // Calculate corner radius based on lineCap. Perspective bars force a flat
76
+ // top (radius 0) so the 3D lid from `<BarDepthBack>` meets the bar with no
77
+ // gap — rounded corners would leave a wedge, so `perspective` overrides it.
78
+ const cornerRadius = useMemo(() => {
79
+ if (perspective) {
80
+ return 0;
81
+ }
82
+ if (typeof lineCap === "number") {
83
+ return lineCap;
84
+ }
85
+ if (lineCap === "round" && barWidth) {
86
+ return Math.min(barWidth / 2, 8);
87
+ }
88
+ return 0;
89
+ }, [lineCap, barWidth, perspective]);
90
+ return (_jsx("g", { className: `bar-series-${uniqueId}`, children: data.map((d, i) => {
91
+ const value = d[dataKey];
92
+ if (typeof value !== "number") {
93
+ return null;
94
+ }
95
+ const categoryValue = barXAccessor(d);
96
+ const bandPos = barScale(categoryValue) ?? 0;
97
+ let x;
98
+ let y;
99
+ let barHeight;
100
+ let barW;
101
+ const scale = isHorizontal ? chartYScale : valueScale;
102
+ if (isHorizontal) {
103
+ // Horizontal bars: category on y-axis, value on x-axis
104
+ const valuePos = scale(value) ?? 0;
105
+ barW = valuePos; // Width is the value position (grows from left)
106
+ barHeight = barWidth;
107
+ if (stacked && stackOffsets) {
108
+ const offset = stackOffsets.get(i)?.get(dataKey) ?? 0;
109
+ x = scale(offset) ?? 0;
110
+ barW = valuePos - x;
111
+ // Apply stack gap for horizontal: shift right and reduce width
112
+ const gapOffset = seriesIndex * stackGap;
113
+ x += gapOffset;
114
+ if (!isLastSeries && stackGap > 0) {
115
+ barW = Math.max(0, barW - stackGap);
116
+ }
117
+ }
118
+ else {
119
+ x = 0;
120
+ // For grouped bars, offset y position
121
+ const effectiveGroupGap = seriesCount > 1 ? groupGap : 0;
122
+ y = bandPos + seriesIndex * (barWidth + effectiveGroupGap);
123
+ }
124
+ y = stacked
125
+ ? bandPos
126
+ : bandPos + seriesIndex * (barWidth + (seriesCount > 1 ? groupGap : 0));
127
+ }
128
+ else {
129
+ // Vertical bars: category on x-axis, value on y-axis
130
+ const valuePos = scale(value) ?? 0;
131
+ barHeight = innerHeight - valuePos;
132
+ barW = barWidth;
133
+ if (stacked && stackOffsets) {
134
+ const offset = stackOffsets.get(i)?.get(dataKey) ?? 0;
135
+ const offsetY = scale(offset) ?? innerHeight;
136
+ // Apply stack gap: shift up and reduce height
137
+ const gapOffset = seriesIndex * stackGap;
138
+ y = offsetY - barHeight - gapOffset;
139
+ // Reduce height slightly for non-last bars to create visual gap
140
+ if (!isLastSeries && stackGap > 0) {
141
+ barHeight = Math.max(0, barHeight - stackGap);
142
+ }
143
+ }
144
+ else {
145
+ y = valuePos;
146
+ // For grouped bars, offset x position
147
+ const effectiveGroupGap = seriesCount > 1 ? groupGap : 0;
148
+ x = bandPos + seriesIndex * (barWidth + effectiveGroupGap);
149
+ }
150
+ x = stacked
151
+ ? bandPos
152
+ : bandPos + seriesIndex * (barWidth + (seriesCount > 1 ? groupGap : 0));
153
+ // Minimum visible height — floor short/zero non-stacked bars so a
154
+ // zero-value data point still reads as a tiny bar instead of
155
+ // vanishing. Grows up from the baseline. Floored bars skip the
156
+ // perspective trim (sub-pixel on a 3px bar; keeps the front aligned
157
+ // with bar-depth, which also skips trim for floored bars).
158
+ let isFloored = false;
159
+ if (!stacked && minBarHeight > 0 && value >= 0 && barHeight < minBarHeight) {
160
+ const baselineY = scale(0) ?? innerHeight;
161
+ barHeight = minBarHeight;
162
+ y = baselineY - minBarHeight;
163
+ isFloored = true;
164
+ }
165
+ // Perspective trim — shrink the topmost positive bar's front-face
166
+ // top down by its perspective rise so it meets `<BarDepthBack>`'s
167
+ // lid back edge. Stacked: only the last (topmost) series; grouped or
168
+ // single: every positive bar. Clamped to `barHeight - 1` so very
169
+ // short bars keep a positive height (matches bar-depth's clamp).
170
+ if (perspective && value > 0 && !isFloored && (!stacked || isLastSeries)) {
171
+ const baselineY = scale(0) ?? innerHeight;
172
+ const rise = barDepthPerspectiveRise(barScale, bandWidth, barXAccessor, innerWidth, d, y, baselineY);
173
+ const trim = Math.min(rise, Math.max(0, barHeight - 1));
174
+ y += trim;
175
+ barHeight -= trim;
176
+ }
177
+ }
178
+ const isFaded = (hoveredBarIndex !== null && hoveredBarIndex !== i) || isLegendDimmed;
179
+ // Use categoryValue as key since it's the unique identifier from data
180
+ const barKey = `bar-${dataKey}-${categoryValue}`;
181
+ // Apply rounded corners:
182
+ // - For non-stacked: always apply
183
+ // - For stacked with gap: apply to all bars
184
+ // - For stacked without gap: only apply to the last series
185
+ const applyRounding = !stacked || stackGap > 0 || isLastSeries;
186
+ const effectiveRx = applyRounding ? cornerRadius : 0;
187
+ const effectiveRy = applyRounding ? cornerRadius : 0;
188
+ if (animate && !isLoaded) {
189
+ return (_jsx(AnimatedBar, { animationType: animationType, enterTransition: enterTransition, fadedOpacity: fadedOpacity, fill: fill, height: barHeight, index: i, innerHeight: innerHeight, isFaded: isFaded, isHorizontal: isHorizontal, revealEpoch: revealEpoch, rx: effectiveRx, ry: effectiveRy, staggerDelay: calculatedStaggerDelay, width: barW, x: x, y: y }, barKey));
190
+ }
191
+ // Static bar after animation completes
192
+ return (_jsx("rect", { fill: fill, height: barHeight, opacity: isFaded ? fadedOpacity : 1, rx: effectiveRx, ry: effectiveRy, style: {
193
+ cursor: "default",
194
+ transition: "opacity 0.15s ease-in-out",
195
+ }, width: barW, x: x, y: y }, barKey));
196
+ }) }));
197
+ });
198
+ export function Bar(props) {
199
+ const { barScale, bandWidth, barXAccessor } = useChartStable();
200
+ if (!(barScale && bandWidth && barXAccessor)) {
201
+ console.warn("Bar component must be used within a BarChart");
202
+ return null;
203
+ }
204
+ return (_jsx(BarInner, { ...props, bandWidth: bandWidth, barScale: barScale, barXAccessor: barXAccessor }));
205
+ }
206
+ Bar.displayName = "Bar";
207
+ export default Bar;
208
+ //# sourceMappingURL=bar.js.map
@@ -0,0 +1,46 @@
1
+ import type { Transition } from "motion/react";
2
+ import { type ReactNode } from "react";
3
+ import { type Margin } from "./chart-context.js";
4
+ export interface OHLCDataPoint {
5
+ date: Date;
6
+ open: number;
7
+ high: number;
8
+ low: number;
9
+ close: number;
10
+ }
11
+ export interface CandlestickChartProps {
12
+ /** OHLC data array */
13
+ data: OHLCDataPoint[];
14
+ /** Key in data for the x-axis (date). Default: "date" */
15
+ xDataKey?: string;
16
+ /** Chart margins */
17
+ margin?: Partial<Margin>;
18
+ /** Animation duration in milliseconds. Default: 1500 */
19
+ animationDuration?: number;
20
+ /** Motion enter transition (spring or cubic-bezier tween). */
21
+ enterTransition?: Transition;
22
+ /** Signature of motion URL state — triggers enter replay when it changes. */
23
+ revealSignature?: string;
24
+ /** Aspect ratio as "width / height". Default: "2 / 1" */
25
+ aspectRatio?: string;
26
+ /** Additional class name for the container */
27
+ className?: string;
28
+ /** Inline styles for the container (e.g. { height: 320 }) */
29
+ style?: React.CSSProperties;
30
+ /** Gap between candles as fraction of slot width (0–1). Default: 0.2. Ignored when candleWidth is set. */
31
+ candleGap?: number;
32
+ /** Fixed candle body width in pixels. If set, overrides candleGap. */
33
+ candleWidth?: number;
34
+ /** When set, xScale uses this domain instead of deriving from data. Use with brush so main chart and strip share the same scale. */
35
+ xDomain?: [Date, Date];
36
+ /** When xDomain is set, use this as the number of slots for scale padding (e.g. full data length). */
37
+ xDomainSlotCount?: number;
38
+ /** Child components (Candlestick, Grid, XAxis, YAxis, ChartTooltip, etc.) */
39
+ children: ReactNode;
40
+ }
41
+ export declare function CandlestickChart({ data, xDataKey, margin: marginProp, animationDuration, enterTransition, revealSignature, aspectRatio, className, style, candleGap, candleWidth, xDomain, xDomainSlotCount, children, }: CandlestickChartProps): import("react").JSX.Element;
42
+ export declare namespace CandlestickChart {
43
+ var displayName: string;
44
+ }
45
+ export default CandlestickChart;
46
+ //# sourceMappingURL=candlestick-chart.d.ts.map
@@ -0,0 +1,203 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { ParentSize } from "@visx/responsive";
4
+ import { scaleLinear, scaleTime } from "@visx/scale";
5
+ import { bisector } from "d3-array";
6
+ import { Children, isValidElement, memo, useCallback, useEffect, useMemo, useRef, useState, } from "react";
7
+ import { cn } from "../lib/cn.js";
8
+ import { isClipExcludedComponent, isPostOverlayComponent, isUnderlayComponent, } from "./chart-child-passthrough.js";
9
+ import { ChartProvider } from "./chart-context.js";
10
+ import { shortDateFmt } from "./chart-formatters.js";
11
+ import { DEFAULT_CHART_LIFECYCLE } from "./chart-phase.js";
12
+ import { decimateOhlcData, maxRenderPointsForWidth } from "./decimate-time-series.js";
13
+ import { extractReferenceAreaConfigs } from "./reference-area-config.js";
14
+ import { useChartInteraction } from "./use-chart-interaction.js";
15
+ import { wrapSingleYScale } from "./y-axis-scales.js";
16
+ const DEFAULT_MARGIN = { top: 40, right: 40, bottom: 40, left: 40 };
17
+ function ChartInner(props) {
18
+ const { width, height } = props;
19
+ if (width < 10 || height < 10) {
20
+ return null;
21
+ }
22
+ return _jsx(ChartCore, { ...props });
23
+ }
24
+ const ChartCore = memo(function ChartCore({ width, height, data, xDataKey, margin, animationDuration, enterTransition, revealSignature = "", candleGap, candleWidthProp, xDomain, xDomainSlotCount, children, containerRef, }) {
25
+ const [isLoaded, setIsLoaded] = useState(false);
26
+ const [revealEpoch, setRevealEpoch] = useState(0);
27
+ const innerWidth = width - margin.left - margin.right;
28
+ const innerHeight = height - margin.top - margin.bottom;
29
+ const xAccessor = useCallback((d) => {
30
+ const value = d[xDataKey];
31
+ return value instanceof Date ? value : new Date(value);
32
+ }, [xDataKey]);
33
+ const bisectDate = useMemo(() => bisector((d) => xAccessor(d)).left, [xAccessor]);
34
+ const slotCount = xDomain && xDomainSlotCount != null ? xDomainSlotCount : data.length;
35
+ const slotWidth = innerWidth / Math.max(slotCount, 1);
36
+ const xScale = useMemo(() => {
37
+ const minTime = xDomain
38
+ ? xDomain[0].getTime()
39
+ : Math.min(...data.map((d) => xAccessor(d).getTime()));
40
+ const maxTime = xDomain
41
+ ? xDomain[1].getTime()
42
+ : Math.max(...data.map((d) => xAccessor(d).getTime()));
43
+ const padding = slotWidth / 2;
44
+ return scaleTime({
45
+ range: [padding, innerWidth - padding],
46
+ domain: [minTime, maxTime],
47
+ });
48
+ }, [innerWidth, data, xAccessor, slotWidth, xDomain]);
49
+ const yScale = useMemo(() => {
50
+ let minVal = Number.POSITIVE_INFINITY;
51
+ let maxVal = Number.NEGATIVE_INFINITY;
52
+ for (const d of data) {
53
+ const low = d.low;
54
+ const high = d.high;
55
+ if (typeof low === "number" && low < minVal) {
56
+ minVal = low;
57
+ }
58
+ if (typeof high === "number" && high > maxVal) {
59
+ maxVal = high;
60
+ }
61
+ }
62
+ if (minVal === Number.POSITIVE_INFINITY) {
63
+ minVal = 0;
64
+ }
65
+ if (maxVal === Number.NEGATIVE_INFINITY) {
66
+ maxVal = 100;
67
+ }
68
+ const padding = (maxVal - minVal) * 0.05 || 1;
69
+ return scaleLinear({
70
+ range: [innerHeight, 0],
71
+ domain: [minVal - padding, maxVal + padding],
72
+ nice: true,
73
+ });
74
+ }, [innerHeight, data]);
75
+ const columnWidth = slotWidth;
76
+ const bandWidth = candleWidthProp ?? slotWidth * (1 - candleGap);
77
+ const lines = useMemo(() => [{ dataKey: "close", stroke: "var(--chart-line-primary)", strokeWidth: 0 }], []);
78
+ const renderData = useMemo(() => decimateOhlcData(data, maxRenderPointsForWidth(innerWidth)), [data, innerWidth]);
79
+ const dateLabels = useMemo(() => data.map((d) => shortDateFmt.format(xAccessor(d))), [data, xAccessor]);
80
+ // biome-ignore lint/correctness/useExhaustiveDependencies: revealSignature
81
+ useEffect(() => {
82
+ setRevealEpoch((n) => n + 1);
83
+ setIsLoaded(false);
84
+ const timer = setTimeout(() => setIsLoaded(true), animationDuration);
85
+ return () => clearTimeout(timer);
86
+ }, [animationDuration, revealSignature]);
87
+ const { tooltipData, setTooltipData, selection, clearSelection, interactionHandlers, interactionStyle, } = useChartInteraction({
88
+ xScale,
89
+ yScale,
90
+ yScales: wrapSingleYScale(yScale),
91
+ data,
92
+ lines,
93
+ margin,
94
+ xAccessor,
95
+ bisectDate,
96
+ canInteract: isLoaded,
97
+ });
98
+ const hoveredCandleIndex = tooltipData?.index ?? null;
99
+ const isDefsComponent = (child) => {
100
+ const displayName = child.type?.displayName ||
101
+ child.type?.name ||
102
+ "";
103
+ return (displayName.includes("Gradient") ||
104
+ displayName.includes("Pattern") ||
105
+ displayName === "LinearGradient" ||
106
+ displayName === "RadialGradient" ||
107
+ displayName === "Lines" ||
108
+ displayName === "PatternLines");
109
+ };
110
+ const defsChildren = [];
111
+ const clipExcludedChildren = [];
112
+ const underlayChildren = [];
113
+ const preOverlayChildren = [];
114
+ const postOverlayChildren = [];
115
+ Children.forEach(children, (child) => {
116
+ if (!isValidElement(child)) {
117
+ return;
118
+ }
119
+ if (isDefsComponent(child)) {
120
+ defsChildren.push(child);
121
+ }
122
+ else if (isPostOverlayComponent(child)) {
123
+ postOverlayChildren.push(child);
124
+ }
125
+ else if (isClipExcludedComponent(child)) {
126
+ clipExcludedChildren.push(child);
127
+ }
128
+ else if (isUnderlayComponent(child)) {
129
+ underlayChildren.push(child);
130
+ }
131
+ else {
132
+ preOverlayChildren.push(child);
133
+ }
134
+ });
135
+ const referenceAreas = useMemo(() => extractReferenceAreaConfigs(children), [children]);
136
+ const yScales = useMemo(() => wrapSingleYScale(yScale), [yScale]);
137
+ const contextValue = useMemo(() => ({
138
+ ...DEFAULT_CHART_LIFECYCLE,
139
+ data,
140
+ renderData,
141
+ xScale,
142
+ yScale,
143
+ yScales,
144
+ width,
145
+ height,
146
+ innerWidth,
147
+ innerHeight,
148
+ margin,
149
+ columnWidth,
150
+ tooltipData,
151
+ setTooltipData,
152
+ containerRef,
153
+ lines,
154
+ referenceAreas,
155
+ isLoaded,
156
+ animationDuration,
157
+ enterTransition,
158
+ revealEpoch,
159
+ xAccessor,
160
+ dateLabels,
161
+ selection: selection ?? null,
162
+ clearSelection,
163
+ bandWidth,
164
+ hoveredCandleIndex,
165
+ }), [
166
+ data,
167
+ renderData,
168
+ xScale,
169
+ yScale,
170
+ yScales,
171
+ width,
172
+ height,
173
+ innerWidth,
174
+ innerHeight,
175
+ margin,
176
+ columnWidth,
177
+ tooltipData,
178
+ setTooltipData,
179
+ containerRef,
180
+ lines,
181
+ referenceAreas,
182
+ isLoaded,
183
+ animationDuration,
184
+ enterTransition,
185
+ revealEpoch,
186
+ xAccessor,
187
+ dateLabels,
188
+ selection,
189
+ clearSelection,
190
+ bandWidth,
191
+ hoveredCandleIndex,
192
+ ]);
193
+ return (_jsx(ChartProvider, { value: contextValue, children: _jsxs("svg", { "aria-hidden": "true", height: height, width: width, children: [_jsxs("defs", { children: [_jsxs("linearGradient", { id: "candlestick-positive", x1: "0", x2: "0", y1: "1", y2: "0", children: [_jsx("stop", { offset: "0%", stopColor: "var(--color-emerald-500)" }), _jsx("stop", { offset: "100%", stopColor: "var(--color-emerald-500)" })] }), _jsxs("linearGradient", { id: "candlestick-negative", x1: "0", x2: "0", y1: "1", y2: "0", children: [_jsx("stop", { offset: "0%", stopColor: "var(--color-red-500)" }), _jsx("stop", { offset: "100%", stopColor: "var(--color-red-500)" })] }), defsChildren] }), _jsx("rect", { fill: "transparent", height: height, width: width, x: 0, y: 0 }), _jsxs("g", { ...interactionHandlers, style: interactionStyle, transform: `translate(${margin.left},${margin.top})`, children: [_jsx("rect", { fill: "transparent", height: innerHeight, width: innerWidth, x: 0, y: 0 }), clipExcludedChildren, underlayChildren, preOverlayChildren, postOverlayChildren] })] }) }));
194
+ });
195
+ export function CandlestickChart({ data, xDataKey = "date", margin: marginProp, animationDuration = 1100, enterTransition, revealSignature, aspectRatio = "2 / 1", className = "", style, candleGap = 0.2, candleWidth, xDomain, xDomainSlotCount, children, }) {
196
+ const containerRef = useRef(null);
197
+ const margin = { ...DEFAULT_MARGIN, ...marginProp };
198
+ const dataAsRecords = data;
199
+ return (_jsx("div", { "data-slot": "candlestick-chart", className: cn("relative w-full", className), ref: containerRef, style: { aspectRatio, touchAction: "none", ...style }, children: _jsx(ParentSize, { debounceTime: 10, children: ({ width, height }) => (_jsx(ChartInner, { animationDuration: animationDuration, candleGap: candleGap, candleWidthProp: candleWidth, containerRef: containerRef, data: dataAsRecords, enterTransition: enterTransition, height: height, margin: margin, revealSignature: revealSignature, width: width, xDataKey: xDataKey, xDomain: xDomain, xDomainSlotCount: xDomainSlotCount, children: children })) }) }));
200
+ }
201
+ CandlestickChart.displayName = "CandlestickChart";
202
+ export default CandlestickChart;
203
+ //# sourceMappingURL=candlestick-chart.js.map
@@ -0,0 +1,24 @@
1
+ export interface CandlestickProps {
2
+ /** Whether to animate the candlesticks. Default: true */
3
+ animate?: boolean;
4
+ /** Fill for positive (close >= open) candles. Color or url(#gradient). Default: emerald */
5
+ positiveFill?: string;
6
+ /** Fill for negative candles. Color or url(#gradient). Default: red */
7
+ negativeFill?: string;
8
+ /** Optional pattern URL for body only (e.g. url(#pattern)). When set, body is drawn solid first, then pattern overlaid and masked to the body rect. */
9
+ bodyPatternPositive?: string;
10
+ /** Optional pattern URL for negative candle body. */
11
+ bodyPatternNegative?: string;
12
+ /** Inner border width on the body (drawn inside so it does not expand the shape). Default: 0 (off). */
13
+ insideStrokeWidth?: number;
14
+ /** Opacity when another candle is hovered. Default: 0.3 */
15
+ fadedOpacity?: number;
16
+ /** Dim non-hovered candles on hover. Default: true */
17
+ showHoverFade?: boolean;
18
+ }
19
+ export declare function Candlestick({ animate, positiveFill, negativeFill, bodyPatternPositive, bodyPatternNegative, insideStrokeWidth, fadedOpacity, showHoverFade, }: CandlestickProps): import("react").JSX.Element;
20
+ export declare namespace Candlestick {
21
+ var displayName: string;
22
+ }
23
+ export default Candlestick;
24
+ //# sourceMappingURL=candlestick.d.ts.map
@@ -0,0 +1,139 @@
1
+ "use client";
2
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { motion } from "motion/react";
4
+ import { memo, useMemo } from "react";
5
+ import { useChart } from "./chart-context.js";
6
+ import { useChartLegendHover } from "./chart-legend-hover.js";
7
+ import { transitionWithDelay } from "./motion-utils.js";
8
+ const DEFAULT_POSITIVE = "url(#candlestick-positive)";
9
+ const DEFAULT_NEGATIVE = "url(#candlestick-negative)";
10
+ const SOLID_POSITIVE = "var(--color-emerald-500)";
11
+ const SOLID_NEGATIVE = "var(--color-red-500)";
12
+ const WICK_WIDTH = 1.5;
13
+ function getSolidColor(isPositive) {
14
+ return isPositive ? SOLID_POSITIVE : SOLID_NEGATIVE;
15
+ }
16
+ function computeGeometries(renderData, xScale, yScale, xAccessor, candleWidth, positiveFill, negativeFill, bodyPatternPositive, bodyPatternNegative, insideStrokeWidth) {
17
+ return renderData.map((d) => {
18
+ const date = xAccessor(d);
19
+ const open = d.open;
20
+ const high = d.high;
21
+ const low = d.low;
22
+ const close = d.close;
23
+ const centerX = xScale(date) ?? 0;
24
+ const yHigh = yScale(high) ?? 0;
25
+ const yLow = yScale(low) ?? 0;
26
+ const yOpen = yScale(open) ?? 0;
27
+ const yClose = yScale(close) ?? 0;
28
+ const bodyTop = Math.min(yOpen, yClose);
29
+ const bodyHeight = Math.abs(yClose - yOpen) || 1;
30
+ const bodyLeft = centerX - candleWidth / 2;
31
+ const wickTop = Math.min(yHigh, yLow);
32
+ const wickHeight = Math.abs(yLow - yHigh) || 1;
33
+ const isPositive = close >= open;
34
+ const fill = isPositive ? positiveFill : negativeFill;
35
+ const bodyPattern = isPositive ? bodyPatternPositive : bodyPatternNegative;
36
+ const hasPatternOverlay = Boolean(bodyPattern);
37
+ const bodySolidFill = hasPatternOverlay ? getSolidColor(isPositive) : fill;
38
+ return {
39
+ time: date.getTime(),
40
+ centerX,
41
+ bodyTop,
42
+ bodyHeight,
43
+ bodyLeft,
44
+ candleWidth,
45
+ wickTop,
46
+ wickHeight,
47
+ wickLeft: centerX - WICK_WIDTH / 2,
48
+ bodySolidFill,
49
+ wickFill: hasPatternOverlay ? bodySolidFill : fill,
50
+ bodyPattern: hasPatternOverlay ? bodyPattern : undefined,
51
+ insideStrokeWidth,
52
+ isPositive,
53
+ };
54
+ });
55
+ }
56
+ function geometryDimOpacity(geometry, fadedOpacity, legendHoveredIndex, hoveredTime) {
57
+ if (legendHoveredIndex !== null) {
58
+ const dimFromLegend = (legendHoveredIndex === 0 && !geometry.isPositive) ||
59
+ (legendHoveredIndex === 1 && geometry.isPositive);
60
+ return dimFromLegend ? fadedOpacity : 1;
61
+ }
62
+ if (hoveredTime !== null && geometry.time !== hoveredTime) {
63
+ return fadedOpacity;
64
+ }
65
+ return 1;
66
+ }
67
+ const CandlestickBody = memo(function CandlestickBody({ geometry }) {
68
+ const { wickLeft, wickTop, wickHeight, wickFill, bodyLeft, bodyTop, bodyHeight, candleWidth, bodySolidFill, bodyPattern, insideStrokeWidth, } = geometry;
69
+ return (_jsxs(_Fragment, { children: [_jsx("rect", { fill: wickFill, height: wickHeight, width: WICK_WIDTH, x: wickLeft, y: wickTop }), _jsx("rect", { fill: bodySolidFill, height: bodyHeight, rx: 1, ry: 1, stroke: bodySolidFill, strokeWidth: 1, width: candleWidth, x: bodyLeft, y: bodyTop }), bodyPattern ? (_jsx("rect", { fill: bodyPattern, height: bodyHeight, rx: 1, ry: 1, width: candleWidth, x: bodyLeft, y: bodyTop })) : null, insideStrokeWidth > 0 ? (_jsx("rect", { fill: "none", height: bodyHeight - insideStrokeWidth, rx: 1, ry: 1, stroke: bodySolidFill, strokeWidth: insideStrokeWidth, width: candleWidth - insideStrokeWidth, x: bodyLeft + insideStrokeWidth / 2, y: bodyTop + insideStrokeWidth / 2 })) : null] }));
70
+ });
71
+ const CandlestickBodies = memo(function CandlestickBodies({ geometries, fadedOpacity, legendHoveredIndex, hoveredTime, }) {
72
+ return (_jsx(_Fragment, { children: geometries.map((geometry) => (_jsx("g", { opacity: geometryDimOpacity(geometry, fadedOpacity, legendHoveredIndex, hoveredTime), style: { transition: "opacity 0.15s ease-in-out" }, children: _jsx(CandlestickBody, { geometry: geometry }) }, geometry.time))) }));
73
+ });
74
+ function AnimatedCandle({ geometry, delay, enterTransition, revealEpoch }) {
75
+ const t = transitionWithDelay(enterTransition, delay);
76
+ const bodyOrigin = `${geometry.centerX}px ${geometry.bodyTop + geometry.bodyHeight / 2}px`;
77
+ const wickCenterY = geometry.wickTop + geometry.wickHeight / 2;
78
+ return (_jsxs(motion.g, { animate: { opacity: 1 }, initial: { opacity: 0 }, style: { transformOrigin: `${geometry.centerX}px ${wickCenterY}px` }, transition: { ...t, opacity: { duration: 0.15 } }, children: [_jsx(motion.rect, { animate: { scaleY: 1 }, fill: geometry.wickFill, height: geometry.wickHeight, initial: { scaleY: 0 }, style: { transformOrigin: `${geometry.centerX}px ${wickCenterY}px` }, transition: t, width: WICK_WIDTH, x: geometry.wickLeft, y: geometry.wickTop }), _jsx(motion.rect, { animate: { scaleY: 1 }, fill: geometry.bodySolidFill, height: geometry.bodyHeight, initial: { scaleY: 0 }, rx: 1, ry: 1, stroke: geometry.bodySolidFill, strokeWidth: 1, style: { transformOrigin: bodyOrigin }, transition: t, width: geometry.candleWidth, x: geometry.bodyLeft, y: geometry.bodyTop }), geometry.bodyPattern ? (_jsx(motion.rect, { animate: { scaleY: 1 }, fill: geometry.bodyPattern, height: geometry.bodyHeight, initial: { scaleY: 0 }, rx: 1, ry: 1, style: { transformOrigin: bodyOrigin }, transition: t, width: geometry.candleWidth, x: geometry.bodyLeft, y: geometry.bodyTop })) : null] }, `candle-enter-${geometry.time}-${revealEpoch}`));
79
+ }
80
+ export function Candlestick({ animate = true, positiveFill = DEFAULT_POSITIVE, negativeFill = DEFAULT_NEGATIVE, bodyPatternPositive, bodyPatternNegative, insideStrokeWidth = 0, fadedOpacity = 0.3, showHoverFade = true, }) {
81
+ const { data, xScale, yScale, xAccessor, animationDuration, enterTransition, revealEpoch = 0, isLoaded, bandWidth, columnWidth, hoveredCandleIndex, } = useChart();
82
+ const { hoveredIndex: legendHoveredIndex } = useChartLegendHover();
83
+ const candleWidth = Math.min(bandWidth ?? columnWidth * 0.8, columnWidth);
84
+ const geometries = useMemo(() => computeGeometries(data, xScale, yScale, xAccessor, candleWidth, positiveFill, negativeFill, bodyPatternPositive, bodyPatternNegative, insideStrokeWidth), [
85
+ data,
86
+ xScale,
87
+ yScale,
88
+ xAccessor,
89
+ candleWidth,
90
+ positiveFill,
91
+ negativeFill,
92
+ bodyPatternPositive,
93
+ bodyPatternNegative,
94
+ insideStrokeWidth,
95
+ ]);
96
+ const hoveredTime = useMemo(() => {
97
+ if (hoveredCandleIndex == null) {
98
+ return null;
99
+ }
100
+ const point = data[hoveredCandleIndex];
101
+ return point ? xAccessor(point).getTime() : null;
102
+ }, [hoveredCandleIndex, data, xAccessor]);
103
+ const highlightGeometry = useMemo(() => {
104
+ if (hoveredCandleIndex == null) {
105
+ return null;
106
+ }
107
+ const point = data[hoveredCandleIndex];
108
+ if (!point) {
109
+ return null;
110
+ }
111
+ return (computeGeometries([point], xScale, yScale, xAccessor, candleWidth, positiveFill, negativeFill, bodyPatternPositive, bodyPatternNegative, insideStrokeWidth)[0] ?? null);
112
+ }, [
113
+ hoveredCandleIndex,
114
+ data,
115
+ xScale,
116
+ yScale,
117
+ xAccessor,
118
+ candleWidth,
119
+ positiveFill,
120
+ negativeFill,
121
+ bodyPatternPositive,
122
+ bodyPatternNegative,
123
+ insideStrokeWidth,
124
+ ]);
125
+ const defaultEnter = {
126
+ type: "spring",
127
+ duration: 0.8,
128
+ bounce: 0.15,
129
+ };
130
+ const enter = enterTransition ?? defaultEnter;
131
+ const staggerDelayMs = data.length > 0 ? (animationDuration * 0.6) / data.length : 0;
132
+ if (animate && !isLoaded) {
133
+ return (_jsx("g", { className: "chart-candlesticks", children: geometries.map((geometry, index) => (_jsx(AnimatedCandle, { delay: (index * staggerDelayMs) / 1000, enterTransition: enter, geometry: geometry, revealEpoch: revealEpoch }, geometry.time))) }));
134
+ }
135
+ return (_jsxs("g", { className: "chart-candlesticks", children: [_jsx(CandlestickBodies, { fadedOpacity: fadedOpacity, geometries: geometries, hoveredTime: showHoverFade ? hoveredTime : null, legendHoveredIndex: legendHoveredIndex }), highlightGeometry ? (_jsx("g", { children: _jsx(CandlestickBody, { geometry: highlightGeometry }) })) : null] }));
136
+ }
137
+ Candlestick.displayName = "Candlestick";
138
+ export default Candlestick;
139
+ //# sourceMappingURL=candlestick.js.map
@@ -0,0 +1,15 @@
1
+ import type { BrushHandleRenderProps } from "@visx/brush/lib/BrushHandle";
2
+ import type { ChartBrushOverlayHost } from "./chart-brush-track-overlay.js";
3
+ export declare function renderChartBrushHandle({ x, y, width, height, className }: BrushHandleRenderProps): import("react").JSX.Element;
4
+ export interface ChartBrushHandleOverlayProps {
5
+ innerWidth: number;
6
+ innerHeight: number;
7
+ /** Pixel x of the selection start within the plot area. */
8
+ selectionX0: number;
9
+ /** Pixel x of the selection end within the plot area. */
10
+ selectionX1: number;
11
+ }
12
+ /** Renders brush resize pills above the outside blur portal (`z-[2]`). */
13
+ export declare function ChartBrushHandleOverlayContent({ containerRef, margin, innerWidth, innerHeight, selectionX0, selectionX1, }: ChartBrushHandleOverlayProps & ChartBrushOverlayHost): import("react").ReactPortal | null;
14
+ export declare function ChartBrushHandleOverlay(props: ChartBrushHandleOverlayProps): import("react").JSX.Element;
15
+ //# sourceMappingURL=chart-brush-handle.d.ts.map