@astryxdesign/lab 0.0.0-bootstrap.0 → 0.1.2-canary.04e71b2

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 (513) hide show
  1. package/CHANGELOG.md +67 -0
  2. package/LICENSE +21 -0
  3. package/README.md +47 -1
  4. package/dist/Chart/Chart.d.ts +77 -0
  5. package/dist/Chart/Chart.d.ts.map +1 -0
  6. package/dist/Chart/Chart.js +247 -0
  7. package/dist/Chart/ChartArea.d.ts +28 -0
  8. package/dist/Chart/ChartArea.d.ts.map +1 -0
  9. package/dist/Chart/ChartArea.js +71 -0
  10. package/dist/Chart/ChartAxis.d.ts +27 -0
  11. package/dist/Chart/ChartAxis.d.ts.map +1 -0
  12. package/dist/Chart/ChartAxis.js +147 -0
  13. package/dist/Chart/ChartBar.d.ts +19 -0
  14. package/dist/Chart/ChartBar.d.ts.map +1 -0
  15. package/dist/Chart/ChartBar.js +61 -0
  16. package/dist/Chart/ChartBrush.d.ts +59 -0
  17. package/dist/Chart/ChartBrush.d.ts.map +1 -0
  18. package/dist/Chart/ChartBrush.js +197 -0
  19. package/dist/Chart/ChartCandlestick.d.ts +50 -0
  20. package/dist/Chart/ChartCandlestick.d.ts.map +1 -0
  21. package/dist/Chart/ChartCandlestick.js +138 -0
  22. package/dist/Chart/ChartContext.d.ts +5 -0
  23. package/dist/Chart/ChartContext.d.ts.map +1 -0
  24. package/dist/Chart/ChartContext.js +20 -0
  25. package/dist/Chart/ChartDot.d.ts +18 -0
  26. package/dist/Chart/ChartDot.d.ts.map +1 -0
  27. package/dist/Chart/ChartDot.js +43 -0
  28. package/dist/Chart/ChartDotGL.d.ts +16 -0
  29. package/dist/Chart/ChartDotGL.d.ts.map +1 -0
  30. package/dist/Chart/ChartDotGL.js +135 -0
  31. package/dist/Chart/ChartDotGLInteractive.d.ts +41 -0
  32. package/dist/Chart/ChartDotGLInteractive.d.ts.map +1 -0
  33. package/dist/Chart/ChartDotGLInteractive.js +446 -0
  34. package/dist/Chart/ChartErrorBar.d.ts +23 -0
  35. package/dist/Chart/ChartErrorBar.d.ts.map +1 -0
  36. package/dist/Chart/ChartErrorBar.js +68 -0
  37. package/dist/Chart/ChartGrid.d.ts +17 -0
  38. package/dist/Chart/ChartGrid.d.ts.map +1 -0
  39. package/dist/Chart/ChartGrid.js +67 -0
  40. package/dist/Chart/ChartHeatmapGL.d.ts +10 -0
  41. package/dist/Chart/ChartHeatmapGL.d.ts.map +1 -0
  42. package/dist/Chart/ChartHeatmapGL.js +171 -0
  43. package/dist/Chart/ChartLegend.d.ts +60 -0
  44. package/dist/Chart/ChartLegend.d.ts.map +1 -0
  45. package/dist/Chart/ChartLegend.js +161 -0
  46. package/dist/Chart/ChartLine.d.ts +23 -0
  47. package/dist/Chart/ChartLine.d.ts.map +1 -0
  48. package/dist/Chart/ChartLine.js +64 -0
  49. package/dist/Chart/ChartReferenceLine.d.ts +11 -0
  50. package/dist/Chart/ChartReferenceLine.d.ts.map +1 -0
  51. package/dist/Chart/ChartReferenceLine.js +109 -0
  52. package/dist/Chart/ChartSelect.d.ts +9 -0
  53. package/dist/Chart/ChartSelect.d.ts.map +1 -0
  54. package/dist/Chart/ChartSelect.js +90 -0
  55. package/dist/Chart/ChartStreamGL.d.ts +17 -0
  56. package/dist/Chart/ChartStreamGL.d.ts.map +1 -0
  57. package/dist/Chart/ChartStreamGL.js +157 -0
  58. package/dist/Chart/ChartTooltip.d.ts +85 -0
  59. package/dist/Chart/ChartTooltip.d.ts.map +1 -0
  60. package/dist/Chart/ChartTooltip.js +335 -0
  61. package/dist/Chart/ChartZoom.d.ts +23 -0
  62. package/dist/Chart/ChartZoom.d.ts.map +1 -0
  63. package/dist/Chart/ChartZoom.js +314 -0
  64. package/dist/Chart/formatters.d.ts +33 -0
  65. package/dist/Chart/formatters.d.ts.map +1 -0
  66. package/dist/Chart/formatters.js +101 -0
  67. package/dist/Chart/getChartColors.d.ts +56 -0
  68. package/dist/Chart/getChartColors.d.ts.map +1 -0
  69. package/dist/Chart/getChartColors.js +150 -0
  70. package/dist/Chart/index.d.ts +29 -0
  71. package/dist/Chart/index.d.ts.map +1 -0
  72. package/dist/Chart/index.js +29 -0
  73. package/dist/Chart/m4.d.ts +36 -0
  74. package/dist/Chart/m4.d.ts.map +1 -0
  75. package/dist/Chart/m4.js +106 -0
  76. package/dist/Chart/types.d.ts +55 -0
  77. package/dist/Chart/types.d.ts.map +1 -0
  78. package/dist/Chart/types.js +1 -0
  79. package/dist/Chart/useChartColors.d.ts +16 -0
  80. package/dist/Chart/useChartColors.d.ts.map +1 -0
  81. package/dist/Chart/useChartColors.js +30 -0
  82. package/dist/Chart/useChartRange.d.ts +50 -0
  83. package/dist/Chart/useChartRange.d.ts.map +1 -0
  84. package/dist/Chart/useChartRange.js +90 -0
  85. package/dist/Chart/utils.d.ts +15 -0
  86. package/dist/Chart/utils.d.ts.map +1 -0
  87. package/dist/Chart/utils.js +24 -0
  88. package/dist/Chart/webgl.d.ts +62 -0
  89. package/dist/Chart/webgl.d.ts.map +1 -0
  90. package/dist/Chart/webgl.js +169 -0
  91. package/dist/ChartV2/Chart.d.ts +32 -0
  92. package/dist/ChartV2/Chart.d.ts.map +1 -0
  93. package/dist/ChartV2/Chart.js +281 -0
  94. package/dist/ChartV2/ChartAxis.d.ts +36 -0
  95. package/dist/ChartV2/ChartAxis.d.ts.map +1 -0
  96. package/dist/ChartV2/ChartAxis.js +161 -0
  97. package/dist/ChartV2/ChartGrid.d.ts +20 -0
  98. package/dist/ChartV2/ChartGrid.d.ts.map +1 -0
  99. package/dist/ChartV2/ChartGrid.js +76 -0
  100. package/dist/ChartV2/ChartLegend.d.ts +14 -0
  101. package/dist/ChartV2/ChartLegend.d.ts.map +1 -0
  102. package/dist/ChartV2/ChartLegend.js +54 -0
  103. package/dist/ChartV2/ChartSwatch.d.ts +36 -0
  104. package/dist/ChartV2/ChartSwatch.d.ts.map +1 -0
  105. package/dist/ChartV2/ChartSwatch.js +82 -0
  106. package/dist/ChartV2/ChartTooltip.d.ts +46 -0
  107. package/dist/ChartV2/ChartTooltip.d.ts.map +1 -0
  108. package/dist/ChartV2/ChartTooltip.js +267 -0
  109. package/dist/ChartV2/ChartV2Context.d.ts +4 -0
  110. package/dist/ChartV2/ChartV2Context.d.ts.map +1 -0
  111. package/dist/ChartV2/ChartV2Context.js +12 -0
  112. package/dist/ChartV2/index.d.ts +13 -0
  113. package/dist/ChartV2/index.d.ts.map +1 -0
  114. package/dist/ChartV2/index.js +10 -0
  115. package/dist/ChartV2/layout.d.ts +25 -0
  116. package/dist/ChartV2/layout.d.ts.map +1 -0
  117. package/dist/ChartV2/layout.js +195 -0
  118. package/dist/ChartV2/legend.d.ts +18 -0
  119. package/dist/ChartV2/legend.d.ts.map +1 -0
  120. package/dist/ChartV2/legend.js +24 -0
  121. package/dist/ChartV2/marks/area.d.ts +19 -0
  122. package/dist/ChartV2/marks/area.d.ts.map +1 -0
  123. package/dist/ChartV2/marks/area.js +109 -0
  124. package/dist/ChartV2/marks/band.d.ts +9 -0
  125. package/dist/ChartV2/marks/band.d.ts.map +1 -0
  126. package/dist/ChartV2/marks/band.js +59 -0
  127. package/dist/ChartV2/marks/bar.d.ts +17 -0
  128. package/dist/ChartV2/marks/bar.d.ts.map +1 -0
  129. package/dist/ChartV2/marks/bar.js +120 -0
  130. package/dist/ChartV2/marks/candlestick.d.ts +15 -0
  131. package/dist/ChartV2/marks/candlestick.d.ts.map +1 -0
  132. package/dist/ChartV2/marks/candlestick.js +83 -0
  133. package/dist/ChartV2/marks/dot.d.ts +15 -0
  134. package/dist/ChartV2/marks/dot.d.ts.map +1 -0
  135. package/dist/ChartV2/marks/dot.js +65 -0
  136. package/dist/ChartV2/marks/dotGL.d.ts +16 -0
  137. package/dist/ChartV2/marks/dotGL.d.ts.map +1 -0
  138. package/dist/ChartV2/marks/dotGL.js +178 -0
  139. package/dist/ChartV2/marks/dotGLInteractive.d.ts +30 -0
  140. package/dist/ChartV2/marks/dotGLInteractive.d.ts.map +1 -0
  141. package/dist/ChartV2/marks/dotGLInteractive.js +464 -0
  142. package/dist/ChartV2/marks/errorBar.d.ts +27 -0
  143. package/dist/ChartV2/marks/errorBar.d.ts.map +1 -0
  144. package/dist/ChartV2/marks/errorBar.js +87 -0
  145. package/dist/ChartV2/marks/heatmapGL.d.ts +23 -0
  146. package/dist/ChartV2/marks/heatmapGL.d.ts.map +1 -0
  147. package/dist/ChartV2/marks/heatmapGL.js +242 -0
  148. package/dist/ChartV2/marks/index.d.ts +13 -0
  149. package/dist/ChartV2/marks/index.d.ts.map +1 -0
  150. package/dist/ChartV2/marks/index.js +14 -0
  151. package/dist/ChartV2/marks/line.d.ts +18 -0
  152. package/dist/ChartV2/marks/line.d.ts.map +1 -0
  153. package/dist/ChartV2/marks/line.js +76 -0
  154. package/dist/ChartV2/marks/referenceLine.d.ts +35 -0
  155. package/dist/ChartV2/marks/referenceLine.d.ts.map +1 -0
  156. package/dist/ChartV2/marks/referenceLine.js +186 -0
  157. package/dist/ChartV2/marks/streamGL.d.ts +36 -0
  158. package/dist/ChartV2/marks/streamGL.d.ts.map +1 -0
  159. package/dist/ChartV2/marks/streamGL.js +204 -0
  160. package/dist/ChartV2/tooltip.d.ts +38 -0
  161. package/dist/ChartV2/tooltip.d.ts.map +1 -0
  162. package/dist/ChartV2/tooltip.js +54 -0
  163. package/dist/ChartV2/types.d.ts +115 -0
  164. package/dist/ChartV2/types.d.ts.map +1 -0
  165. package/dist/ChartV2/types.js +35 -0
  166. package/dist/ChatReasoning/ChatReasoning.d.ts +51 -0
  167. package/dist/ChatReasoning/ChatReasoning.d.ts.map +1 -0
  168. package/dist/ChatReasoning/ChatReasoning.js +236 -0
  169. package/dist/CircularProgress/CircularProgress.d.ts +101 -0
  170. package/dist/CircularProgress/CircularProgress.d.ts.map +1 -0
  171. package/dist/CircularProgress/CircularProgress.js +263 -0
  172. package/dist/CircularProgress/index.d.ts +6 -0
  173. package/dist/CircularProgress/index.d.ts.map +1 -0
  174. package/dist/CircularProgress/index.js +8 -0
  175. package/dist/CodeBlock/index.d.ts +8 -0
  176. package/dist/CodeBlock/index.d.ts.map +1 -0
  177. package/dist/CodeBlock/index.js +9 -0
  178. package/dist/CodeEditor/CodeEditor.d.ts +46 -0
  179. package/dist/CodeEditor/CodeEditor.d.ts.map +1 -0
  180. package/dist/CodeEditor/CodeEditor.js +396 -0
  181. package/dist/CodeEditor/index.d.ts +6 -0
  182. package/dist/CodeEditor/index.d.ts.map +1 -0
  183. package/dist/CodeEditor/index.js +7 -0
  184. package/dist/Radial/RadialArea.d.ts +25 -0
  185. package/dist/Radial/RadialArea.d.ts.map +1 -0
  186. package/dist/Radial/RadialArea.js +91 -0
  187. package/dist/Radial/RadialAxis.d.ts +14 -0
  188. package/dist/Radial/RadialAxis.d.ts.map +1 -0
  189. package/dist/Radial/RadialAxis.js +55 -0
  190. package/dist/Radial/RadialChart.d.ts +70 -0
  191. package/dist/Radial/RadialChart.d.ts.map +1 -0
  192. package/dist/Radial/RadialChart.js +174 -0
  193. package/dist/Radial/RadialContext.d.ts +5 -0
  194. package/dist/Radial/RadialContext.d.ts.map +1 -0
  195. package/dist/Radial/RadialContext.js +19 -0
  196. package/dist/Radial/RadialGrid.d.ts +14 -0
  197. package/dist/Radial/RadialGrid.d.ts.map +1 -0
  198. package/dist/Radial/RadialGrid.js +70 -0
  199. package/dist/Radial/RadialSlice.d.ts +23 -0
  200. package/dist/Radial/RadialSlice.d.ts.map +1 -0
  201. package/dist/Radial/RadialSlice.js +85 -0
  202. package/dist/Radial/RadialTooltip.d.ts +44 -0
  203. package/dist/Radial/RadialTooltip.d.ts.map +1 -0
  204. package/dist/Radial/RadialTooltip.js +284 -0
  205. package/dist/Radial/index.d.ts +9 -0
  206. package/dist/Radial/index.d.ts.map +1 -0
  207. package/dist/Radial/index.js +9 -0
  208. package/dist/Radial/types.d.ts +39 -0
  209. package/dist/Radial/types.d.ts.map +1 -0
  210. package/dist/Radial/types.js +1 -0
  211. package/dist/SVGIcon/SVGIcon.d.ts +87 -0
  212. package/dist/SVGIcon/SVGIcon.d.ts.map +1 -0
  213. package/dist/SVGIcon/SVGIcon.js +299 -0
  214. package/dist/SVGIcon/icons.d.ts +49 -0
  215. package/dist/SVGIcon/icons.d.ts.map +1 -0
  216. package/dist/SVGIcon/icons.js +326 -0
  217. package/dist/SVGIcon/index.d.ts +15 -0
  218. package/dist/SVGIcon/index.d.ts.map +1 -0
  219. package/dist/SVGIcon/index.js +22 -0
  220. package/dist/SVGIcon/pathTransforms.d.ts +35 -0
  221. package/dist/SVGIcon/pathTransforms.d.ts.map +1 -0
  222. package/dist/SVGIcon/pathTransforms.js +644 -0
  223. package/dist/SVGIcon/tokens.stylex.d.ts +37 -0
  224. package/dist/SVGIcon/tokens.stylex.d.ts.map +1 -0
  225. package/dist/SVGIcon/tokens.stylex.js +40 -0
  226. package/dist/SVGIcon/variations.stylex.d.ts +44 -0
  227. package/dist/SVGIcon/variations.stylex.d.ts.map +1 -0
  228. package/dist/SVGIcon/variations.stylex.js +119 -0
  229. package/dist/SVGIcon/xif-examples.d.ts +22 -0
  230. package/dist/SVGIcon/xif-examples.d.ts.map +1 -0
  231. package/dist/SVGIcon/xif-examples.js +202 -0
  232. package/dist/SVGIcon/xif-types.d.ts +129 -0
  233. package/dist/SVGIcon/xif-types.d.ts.map +1 -0
  234. package/dist/SVGIcon/xif-types.js +1 -0
  235. package/dist/Sankey/SankeyChart.d.ts +72 -0
  236. package/dist/Sankey/SankeyChart.d.ts.map +1 -0
  237. package/dist/Sankey/SankeyChart.js +162 -0
  238. package/dist/Sankey/SankeyContext.d.ts +5 -0
  239. package/dist/Sankey/SankeyContext.d.ts.map +1 -0
  240. package/dist/Sankey/SankeyContext.js +20 -0
  241. package/dist/Sankey/SankeyGrid.d.ts +20 -0
  242. package/dist/Sankey/SankeyGrid.d.ts.map +1 -0
  243. package/dist/Sankey/SankeyGrid.js +53 -0
  244. package/dist/Sankey/SankeyLabel.d.ts +11 -0
  245. package/dist/Sankey/SankeyLabel.d.ts.map +1 -0
  246. package/dist/Sankey/SankeyLabel.js +179 -0
  247. package/dist/Sankey/SankeyLink.d.ts +29 -0
  248. package/dist/Sankey/SankeyLink.d.ts.map +1 -0
  249. package/dist/Sankey/SankeyLink.js +139 -0
  250. package/dist/Sankey/SankeyNode.d.ts +15 -0
  251. package/dist/Sankey/SankeyNode.d.ts.map +1 -0
  252. package/dist/Sankey/SankeyNode.js +56 -0
  253. package/dist/Sankey/index.d.ts +8 -0
  254. package/dist/Sankey/index.d.ts.map +1 -0
  255. package/dist/Sankey/index.js +8 -0
  256. package/dist/Sankey/layout.d.ts +26 -0
  257. package/dist/Sankey/layout.d.ts.map +1 -0
  258. package/dist/Sankey/layout.js +157 -0
  259. package/dist/Sankey/types.d.ts +84 -0
  260. package/dist/Sankey/types.d.ts.map +1 -0
  261. package/dist/Sankey/types.js +1 -0
  262. package/dist/Schedule/CalendarEvent.d.ts +36 -0
  263. package/dist/Schedule/CalendarEvent.d.ts.map +1 -0
  264. package/dist/Schedule/CalendarEvent.js +35 -0
  265. package/dist/Schedule/DayView.d.ts +8 -0
  266. package/dist/Schedule/DayView.d.ts.map +1 -0
  267. package/dist/Schedule/DayView.js +105 -0
  268. package/dist/Schedule/ListView.d.ts +6 -0
  269. package/dist/Schedule/ListView.d.ts.map +1 -0
  270. package/dist/Schedule/ListView.js +171 -0
  271. package/dist/Schedule/MonthlyView.d.ts +6 -0
  272. package/dist/Schedule/MonthlyView.d.ts.map +1 -0
  273. package/dist/Schedule/MonthlyView.js +270 -0
  274. package/dist/Schedule/Schedule.d.ts +22 -0
  275. package/dist/Schedule/Schedule.d.ts.map +1 -0
  276. package/dist/Schedule/Schedule.js +185 -0
  277. package/dist/Schedule/TimeGridView.d.ts +12 -0
  278. package/dist/Schedule/TimeGridView.d.ts.map +1 -0
  279. package/dist/Schedule/TimeGridView.js +364 -0
  280. package/dist/Schedule/WeeklyView.d.ts +9 -0
  281. package/dist/Schedule/WeeklyView.d.ts.map +1 -0
  282. package/dist/Schedule/WeeklyView.js +112 -0
  283. package/dist/Schedule/context.d.ts +20 -0
  284. package/dist/Schedule/context.d.ts.map +1 -0
  285. package/dist/Schedule/context.js +19 -0
  286. package/dist/Schedule/dateMath.d.ts +21 -0
  287. package/dist/Schedule/dateMath.d.ts.map +1 -0
  288. package/dist/Schedule/dateMath.js +63 -0
  289. package/dist/Schedule/index.d.ts +19 -0
  290. package/dist/Schedule/index.d.ts.map +1 -0
  291. package/dist/Schedule/index.js +17 -0
  292. package/dist/Schedule/plugins/PaginationPlugin.d.ts +7 -0
  293. package/dist/Schedule/plugins/PaginationPlugin.d.ts.map +1 -0
  294. package/dist/Schedule/plugins/PaginationPlugin.js +81 -0
  295. package/dist/Schedule/plugins/ViewSelectorPlugin.d.ts +11 -0
  296. package/dist/Schedule/plugins/ViewSelectorPlugin.d.ts.map +1 -0
  297. package/dist/Schedule/plugins/ViewSelectorPlugin.js +78 -0
  298. package/dist/Schedule/plugins/index.d.ts +5 -0
  299. package/dist/Schedule/plugins/index.d.ts.map +1 -0
  300. package/dist/Schedule/plugins/index.js +14 -0
  301. package/dist/Schedule/shared.d.ts +923 -0
  302. package/dist/Schedule/shared.d.ts.map +1 -0
  303. package/dist/Schedule/shared.js +1325 -0
  304. package/dist/Schedule/types.d.ts +51 -0
  305. package/dist/Schedule/types.d.ts.map +1 -0
  306. package/dist/Schedule/types.js +1 -0
  307. package/dist/Schedule/useCurrentTime.d.ts +3 -0
  308. package/dist/Schedule/useCurrentTime.d.ts.map +1 -0
  309. package/dist/Schedule/useCurrentTime.js +43 -0
  310. package/dist/Schedule/zonedDateTime.d.ts +20 -0
  311. package/dist/Schedule/zonedDateTime.d.ts.map +1 -0
  312. package/dist/Schedule/zonedDateTime.js +31 -0
  313. package/dist/Stepper/Step.d.ts +120 -0
  314. package/dist/Stepper/Step.d.ts.map +1 -0
  315. package/dist/Stepper/Step.js +573 -0
  316. package/dist/Stepper/StepStatus.d.ts +24 -0
  317. package/dist/Stepper/StepStatus.d.ts.map +1 -0
  318. package/dist/Stepper/StepStatus.js +1 -0
  319. package/dist/Stepper/Stepper.d.ts +77 -0
  320. package/dist/Stepper/Stepper.d.ts.map +1 -0
  321. package/dist/Stepper/Stepper.js +104 -0
  322. package/dist/Stepper/StepperContext.d.ts +12 -0
  323. package/dist/Stepper/StepperContext.d.ts.map +1 -0
  324. package/dist/Stepper/StepperContext.js +24 -0
  325. package/dist/Stepper/index.d.ts +8 -0
  326. package/dist/Stepper/index.d.ts.map +1 -0
  327. package/dist/Stepper/index.js +7 -0
  328. package/dist/ThreeD/ThreeDAxis.d.ts +6 -0
  329. package/dist/ThreeD/ThreeDAxis.d.ts.map +1 -0
  330. package/dist/ThreeD/ThreeDAxis.js +75 -0
  331. package/dist/ThreeD/ThreeDBar.d.ts +7 -0
  332. package/dist/ThreeD/ThreeDBar.d.ts.map +1 -0
  333. package/dist/ThreeD/ThreeDBar.js +98 -0
  334. package/dist/ThreeD/ThreeDChart.d.ts +24 -0
  335. package/dist/ThreeD/ThreeDChart.d.ts.map +1 -0
  336. package/dist/ThreeD/ThreeDChart.js +202 -0
  337. package/dist/ThreeD/ThreeDContext.d.ts +5 -0
  338. package/dist/ThreeD/ThreeDContext.d.ts.map +1 -0
  339. package/dist/ThreeD/ThreeDContext.js +19 -0
  340. package/dist/ThreeD/ThreeDGrid.d.ts +5 -0
  341. package/dist/ThreeD/ThreeDGrid.d.ts.map +1 -0
  342. package/dist/ThreeD/ThreeDGrid.js +55 -0
  343. package/dist/ThreeD/ThreeDScatter.d.ts +7 -0
  344. package/dist/ThreeD/ThreeDScatter.d.ts.map +1 -0
  345. package/dist/ThreeD/ThreeDScatter.js +57 -0
  346. package/dist/ThreeD/ThreeDScatterGL.d.ts +7 -0
  347. package/dist/ThreeD/ThreeDScatterGL.d.ts.map +1 -0
  348. package/dist/ThreeD/ThreeDScatterGL.js +243 -0
  349. package/dist/ThreeD/ThreeDSurface.d.ts +15 -0
  350. package/dist/ThreeD/ThreeDSurface.d.ts.map +1 -0
  351. package/dist/ThreeD/ThreeDSurface.js +97 -0
  352. package/dist/ThreeD/index.d.ts +10 -0
  353. package/dist/ThreeD/index.d.ts.map +1 -0
  354. package/dist/ThreeD/index.js +10 -0
  355. package/dist/ThreeD/types.d.ts +57 -0
  356. package/dist/ThreeD/types.d.ts.map +1 -0
  357. package/dist/ThreeD/types.js +1 -0
  358. package/dist/index.d.ts +26 -0
  359. package/dist/index.d.ts.map +1 -0
  360. package/dist/index.js +47 -0
  361. package/dist/lab.css +423 -0
  362. package/package.json +69 -4
  363. package/src/Chart/Chart.tsx +312 -0
  364. package/src/Chart/ChartArea.doc.mjs +16 -0
  365. package/src/Chart/ChartArea.tsx +91 -0
  366. package/src/Chart/ChartAxis.tsx +186 -0
  367. package/src/Chart/ChartBar.doc.mjs +16 -0
  368. package/src/Chart/ChartBar.tsx +71 -0
  369. package/src/Chart/ChartBrush.tsx +237 -0
  370. package/src/Chart/ChartCandlestick.doc.mjs +16 -0
  371. package/src/Chart/ChartCandlestick.tsx +186 -0
  372. package/src/Chart/ChartContext.ts +23 -0
  373. package/src/Chart/ChartDot.doc.mjs +16 -0
  374. package/src/Chart/ChartDot.tsx +44 -0
  375. package/src/Chart/ChartDotGL.doc.mjs +16 -0
  376. package/src/Chart/ChartDotGL.tsx +151 -0
  377. package/src/Chart/ChartDotGLInteractive.doc.mjs +16 -0
  378. package/src/Chart/ChartDotGLInteractive.tsx +519 -0
  379. package/src/Chart/ChartErrorBar.tsx +84 -0
  380. package/src/Chart/ChartGrid.tsx +86 -0
  381. package/src/Chart/ChartHeatmapGL.doc.mjs +16 -0
  382. package/src/Chart/ChartHeatmapGL.tsx +219 -0
  383. package/src/Chart/ChartLegend.tsx +181 -0
  384. package/src/Chart/ChartLine.doc.mjs +16 -0
  385. package/src/Chart/ChartLine.tsx +70 -0
  386. package/src/Chart/ChartReferenceLine.tsx +76 -0
  387. package/src/Chart/ChartSelect.tsx +111 -0
  388. package/src/Chart/ChartStreamGL.doc.mjs +16 -0
  389. package/src/Chart/ChartStreamGL.tsx +189 -0
  390. package/src/Chart/ChartTooltip.tsx +451 -0
  391. package/src/Chart/ChartZoom.tsx +400 -0
  392. package/src/Chart/formatters.ts +95 -0
  393. package/src/Chart/getChartColors.ts +249 -0
  394. package/src/Chart/index.ts +90 -0
  395. package/src/Chart/m4.test.ts +66 -0
  396. package/src/Chart/m4.ts +128 -0
  397. package/src/Chart/types.ts +64 -0
  398. package/src/Chart/useChartColors.ts +34 -0
  399. package/src/Chart/useChartRange.test.ts +101 -0
  400. package/src/Chart/useChartRange.ts +146 -0
  401. package/src/Chart/utils.ts +31 -0
  402. package/src/Chart/webgl.ts +192 -0
  403. package/src/ChartV2/Chart.tsx +348 -0
  404. package/src/ChartV2/ChartAxis.tsx +209 -0
  405. package/src/ChartV2/ChartGrid.tsx +99 -0
  406. package/src/ChartV2/ChartLegend.tsx +69 -0
  407. package/src/ChartV2/ChartSwatch.doc.mjs +17 -0
  408. package/src/ChartV2/ChartSwatch.tsx +86 -0
  409. package/src/ChartV2/ChartTooltip.tsx +382 -0
  410. package/src/ChartV2/ChartV2.doc.mjs +16 -0
  411. package/src/ChartV2/ChartV2Context.ts +15 -0
  412. package/src/ChartV2/index.ts +62 -0
  413. package/src/ChartV2/layout.ts +223 -0
  414. package/src/ChartV2/legend.ts +32 -0
  415. package/src/ChartV2/marks/area.tsx +122 -0
  416. package/src/ChartV2/marks/band.tsx +70 -0
  417. package/src/ChartV2/marks/bar.tsx +159 -0
  418. package/src/ChartV2/marks/candlestick.tsx +106 -0
  419. package/src/ChartV2/marks/dot.tsx +64 -0
  420. package/src/ChartV2/marks/dotGL.tsx +202 -0
  421. package/src/ChartV2/marks/dotGLInteractive.tsx +546 -0
  422. package/src/ChartV2/marks/errorBar.tsx +89 -0
  423. package/src/ChartV2/marks/heatmapGL.tsx +299 -0
  424. package/src/ChartV2/marks/index.ts +14 -0
  425. package/src/ChartV2/marks/line.tsx +94 -0
  426. package/src/ChartV2/marks/referenceLine.tsx +224 -0
  427. package/src/ChartV2/marks/streamGL.tsx +251 -0
  428. package/src/ChartV2/tooltip.ts +70 -0
  429. package/src/ChartV2/types.ts +129 -0
  430. package/src/ChatReasoning/ChatReasoning.doc.mjs +16 -0
  431. package/src/ChatReasoning/ChatReasoning.test.tsx +56 -0
  432. package/src/ChatReasoning/ChatReasoning.tsx +322 -0
  433. package/src/CircularProgress/CircularProgress.doc.mjs +174 -0
  434. package/src/CircularProgress/CircularProgress.test.tsx +157 -0
  435. package/src/CircularProgress/CircularProgress.tsx +373 -0
  436. package/src/CircularProgress/index.ts +15 -0
  437. package/src/CodeBlock/index.ts +10 -0
  438. package/src/CodeEditor/CodeEditor.doc.mjs +16 -0
  439. package/src/CodeEditor/CodeEditor.tsx +466 -0
  440. package/src/CodeEditor/index.ts +8 -0
  441. package/src/Radial/RadialArea.tsx +103 -0
  442. package/src/Radial/RadialAxis.tsx +60 -0
  443. package/src/Radial/RadialChart.doc.mjs +16 -0
  444. package/src/Radial/RadialChart.tsx +219 -0
  445. package/src/Radial/RadialContext.ts +22 -0
  446. package/src/Radial/RadialGrid.tsx +81 -0
  447. package/src/Radial/RadialSlice.tsx +130 -0
  448. package/src/Radial/RadialTooltip.tsx +347 -0
  449. package/src/Radial/index.ts +14 -0
  450. package/src/Radial/types.ts +46 -0
  451. package/src/SVGIcon/SVGIcon.doc.mjs +16 -0
  452. package/src/SVGIcon/SVGIcon.tsx +406 -0
  453. package/src/SVGIcon/icons.ts +283 -0
  454. package/src/SVGIcon/index.ts +73 -0
  455. package/src/SVGIcon/pathTransforms.ts +612 -0
  456. package/src/SVGIcon/tokens.stylex.ts +53 -0
  457. package/src/SVGIcon/variations.stylex.ts +122 -0
  458. package/src/SVGIcon/xif-examples.ts +191 -0
  459. package/src/SVGIcon/xif-types.ts +181 -0
  460. package/src/Sankey/SankeyChart.doc.mjs +16 -0
  461. package/src/Sankey/SankeyChart.tsx +220 -0
  462. package/src/Sankey/SankeyContext.ts +23 -0
  463. package/src/Sankey/SankeyGrid.tsx +69 -0
  464. package/src/Sankey/SankeyLabel.tsx +234 -0
  465. package/src/Sankey/SankeyLink.tsx +167 -0
  466. package/src/Sankey/SankeyNode.tsx +66 -0
  467. package/src/Sankey/index.ts +22 -0
  468. package/src/Sankey/layout.ts +219 -0
  469. package/src/Sankey/types.ts +93 -0
  470. package/src/Schedule/CalendarEvent.ts +74 -0
  471. package/src/Schedule/DayView.tsx +112 -0
  472. package/src/Schedule/ListView.tsx +236 -0
  473. package/src/Schedule/MonthlyView.tsx +401 -0
  474. package/src/Schedule/Schedule.doc.mjs +16 -0
  475. package/src/Schedule/Schedule.test.tsx +405 -0
  476. package/src/Schedule/Schedule.tsx +307 -0
  477. package/src/Schedule/TimeGridView.tsx +589 -0
  478. package/src/Schedule/WeeklyView.tsx +130 -0
  479. package/src/Schedule/context.tsx +49 -0
  480. package/src/Schedule/dateMath.ts +112 -0
  481. package/src/Schedule/index.ts +61 -0
  482. package/src/Schedule/plugins/PaginationPlugin.tsx +98 -0
  483. package/src/Schedule/plugins/ViewSelectorPlugin.tsx +128 -0
  484. package/src/Schedule/plugins/index.tsx +20 -0
  485. package/src/Schedule/shared.tsx +1304 -0
  486. package/src/Schedule/types.ts +86 -0
  487. package/src/Schedule/useCurrentTime.ts +50 -0
  488. package/src/Schedule/zonedDateTime.ts +71 -0
  489. package/src/Stepper/Step.doc.mjs +17 -0
  490. package/src/Stepper/Step.tsx +756 -0
  491. package/src/Stepper/StepStatus.ts +26 -0
  492. package/src/Stepper/Stepper.doc.mjs +265 -0
  493. package/src/Stepper/Stepper.test.tsx +281 -0
  494. package/src/Stepper/Stepper.tsx +157 -0
  495. package/src/Stepper/StepperContext.ts +43 -0
  496. package/src/Stepper/index.ts +14 -0
  497. package/src/ThreeD/3DBar.doc.mjs +16 -0
  498. package/src/ThreeD/3DChart.doc.mjs +16 -0
  499. package/src/ThreeD/3DScatter.doc.mjs +16 -0
  500. package/src/ThreeD/3DScatterGL.doc.mjs +16 -0
  501. package/src/ThreeD/3DSurface.doc.mjs +16 -0
  502. package/src/ThreeD/ThreeDAxis.tsx +86 -0
  503. package/src/ThreeD/ThreeDBar.tsx +130 -0
  504. package/src/ThreeD/ThreeDChart.tsx +262 -0
  505. package/src/ThreeD/ThreeDContext.ts +22 -0
  506. package/src/ThreeD/ThreeDGrid.tsx +68 -0
  507. package/src/ThreeD/ThreeDScatter.tsx +63 -0
  508. package/src/ThreeD/ThreeDScatterGL.tsx +270 -0
  509. package/src/ThreeD/ThreeDSurface.tsx +142 -0
  510. package/src/ThreeD/index.ts +11 -0
  511. package/src/ThreeD/projection.test.ts +132 -0
  512. package/src/ThreeD/types.ts +62 -0
  513. package/src/index.ts +250 -0
@@ -0,0 +1,147 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
2
+
3
+ /**
4
+ * @file ChartAxis.tsx
5
+ * @output Renders an axis (top, right, bottom, left) using the chart's scales
6
+ * @position Child of Chart; reads scales from context
7
+ *
8
+ * Ticks use CSS transitions for smooth sliding during streaming updates.
9
+ */
10
+
11
+ import { useMemo } from 'react';
12
+ import { useChart } from "./ChartContext.js";
13
+ import { isBandScale } from "./utils.js";
14
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
15
+ /**
16
+ * Chart axis. Renders tick marks and labels for the x or y dimension.
17
+ * Ticks transition smoothly when the scale domain shifts (e.g. streaming).
18
+ *
19
+ * @example
20
+ * ```
21
+ * <ChartAxis position="bottom" />
22
+ * <ChartAxis position="left" tickCount={5} tickFormat={currency} />
23
+ * <ChartAxis position="bottom" maxTicks={6} truncate={10} />
24
+ * ```
25
+ */
26
+ export function ChartAxis({
27
+ position,
28
+ tickCount = 5,
29
+ maxTicks,
30
+ tickFormat,
31
+ truncate,
32
+ animated = true
33
+ }) {
34
+ const {
35
+ width,
36
+ height,
37
+ xScale,
38
+ yScale
39
+ } = useChart();
40
+ const isHorizontal = position === 'top' || position === 'bottom';
41
+ const scale = isHorizontal ? xScale : yScale;
42
+ const ticks = useMemo(() => {
43
+ let allTicks;
44
+ if (isBandScale(scale)) {
45
+ allTicks = scale.domain().map(d => ({
46
+ value: d,
47
+ offset: (scale(d) ?? 0) + scale.bandwidth() / 2
48
+ }));
49
+ } else {
50
+ const linearScale = scale;
51
+ allTicks = linearScale.ticks(tickCount).map(d => ({
52
+ value: d,
53
+ offset: linearScale(d)
54
+ }));
55
+ }
56
+
57
+ // Auto-skip: show every Nth label if maxTicks is exceeded
58
+ if (maxTicks && allTicks.length > maxTicks) {
59
+ const step = Math.ceil(allTicks.length / maxTicks);
60
+ allTicks = allTicks.filter((_, i) => i % step === 0);
61
+ }
62
+ return allTicks;
63
+ }, [scale, tickCount, maxTicks]);
64
+ const transform = position === 'bottom' ? `translate(0,${height})` : position === 'right' ? `translate(${width},0)` : undefined;
65
+
66
+ // For the bottom axis, draw the axis line at y=0 when the domain spans negative values
67
+ const axisLineY = (() => {
68
+ if (position !== 'bottom') {
69
+ return 0;
70
+ }
71
+ const domain = yScale.domain();
72
+ if (domain[0] < 0 && domain[1] > 0) {
73
+ // The axis line should appear at the zero mark relative to the bottom edge
74
+ return yScale(0) - height;
75
+ }
76
+ return 0;
77
+ })();
78
+ const baseFormat = tickFormat ?? String;
79
+ const format = truncate ? value => {
80
+ const str = baseFormat(value);
81
+ return str.length > truncate ? str.slice(0, truncate) + '\u2026' : str;
82
+ } : baseFormat;
83
+ const tickSize = 6;
84
+
85
+ // Transition style for smooth tick movement during streaming
86
+ const tickTransition = animated ? 'transform 150ms linear, opacity 150ms ease' : undefined;
87
+ return /*#__PURE__*/_jsxs("g", {
88
+ transform: transform,
89
+ children: [/*#__PURE__*/_jsx("line", {
90
+ x1: isHorizontal ? 0 : 0,
91
+ x2: isHorizontal ? width : 0,
92
+ y1: isHorizontal ? axisLineY : 0,
93
+ y2: isHorizontal ? axisLineY : height,
94
+ stroke: "var(--color-border-emphasized)",
95
+ strokeWidth: 1
96
+ }), ticks.map(({
97
+ value,
98
+ offset
99
+ }) => {
100
+ const label = format(value);
101
+ // Clip ticks that are outside the visible area
102
+ const isVisible = isHorizontal ? offset >= -10 && offset <= width + 10 : offset >= -10 && offset <= height + 10;
103
+ if (isHorizontal) {
104
+ const y = position === 'bottom' ? tickSize : -tickSize;
105
+ return /*#__PURE__*/_jsxs("g", {
106
+ style: {
107
+ transform: `translateX(${offset}px)`,
108
+ transition: tickTransition,
109
+ opacity: isVisible ? 1 : 0
110
+ },
111
+ children: [/*#__PURE__*/_jsx("line", {
112
+ y2: y,
113
+ stroke: "var(--color-border-emphasized)",
114
+ strokeWidth: 1
115
+ }), /*#__PURE__*/_jsx("text", {
116
+ y: position === 'bottom' ? tickSize + 12 : -(tickSize + 4),
117
+ textAnchor: "middle",
118
+ fill: "var(--color-text-secondary)",
119
+ fontSize: 12,
120
+ children: label
121
+ })]
122
+ }, label);
123
+ }
124
+ // Vertical axis
125
+ const x = position === 'left' ? -tickSize : tickSize;
126
+ return /*#__PURE__*/_jsxs("g", {
127
+ style: {
128
+ transform: `translateY(${offset}px)`,
129
+ transition: tickTransition,
130
+ opacity: isVisible ? 1 : 0
131
+ },
132
+ children: [/*#__PURE__*/_jsx("line", {
133
+ x2: x,
134
+ stroke: "var(--color-border-emphasized)",
135
+ strokeWidth: 1
136
+ }), /*#__PURE__*/_jsx("text", {
137
+ x: position === 'left' ? -(tickSize + 4) : tickSize + 4,
138
+ dy: "0.32em",
139
+ textAnchor: position === 'left' ? 'end' : 'start',
140
+ fill: "var(--color-text-secondary)",
141
+ fontSize: 12,
142
+ children: label
143
+ })]
144
+ }, label);
145
+ })]
146
+ });
147
+ }
@@ -0,0 +1,19 @@
1
+ export interface ChartBarProps {
2
+ /** Which data key to visualize */
3
+ dataKey: string;
4
+ /** Bar fill color (hex string, CSS var, etc.) */
5
+ color: string;
6
+ /** Corner radius on bar tops */
7
+ radius?: number;
8
+ }
9
+ /**
10
+ * Bar marks. Requires a band xScale (categorical x-axis).
11
+ * Bars grow from the zero line — handles both positive and negative values.
12
+ *
13
+ * @example
14
+ * ```
15
+ * <ChartBar dataKey="revenue" color={useChartColors().categorical(1)[0]} />
16
+ * ```
17
+ */
18
+ export declare function ChartBar({ dataKey, color, radius }: ChartBarProps): import("react").JSX.Element | null;
19
+ //# sourceMappingURL=ChartBar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChartBar.d.ts","sourceRoot":"","sources":["../../src/Chart/ChartBar.tsx"],"names":[],"mappings":"AAWA,MAAM,WAAW,aAAa;IAC5B,kCAAkC;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,iDAAiD;IACjD,KAAK,EAAE,MAAM,CAAC;IACd,gCAAgC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CAAC,EAAC,OAAO,EAAE,KAAK,EAAE,MAAU,EAAC,EAAE,aAAa,sCAyCnE"}
@@ -0,0 +1,61 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
2
+
3
+ /**
4
+ * @file ChartBar.tsx
5
+ * @output Renders vertical bars for a data key
6
+ * @position Child of Chart; reads scales from context
7
+ */
8
+
9
+ import { useChart } from "./ChartContext.js";
10
+ import { isBandScale } from "./utils.js";
11
+ import { jsx as _jsx } from "react/jsx-runtime";
12
+ /**
13
+ * Bar marks. Requires a band xScale (categorical x-axis).
14
+ * Bars grow from the zero line — handles both positive and negative values.
15
+ *
16
+ * @example
17
+ * ```
18
+ * <ChartBar dataKey="revenue" color={useChartColors().categorical(1)[0]} />
19
+ * ```
20
+ */
21
+ export function ChartBar({
22
+ dataKey,
23
+ color,
24
+ radius = 4
25
+ }) {
26
+ const {
27
+ data,
28
+ xKey,
29
+ xScale,
30
+ yScale
31
+ } = useChart();
32
+ if (!isBandScale(xScale)) {
33
+ return null;
34
+ }
35
+
36
+ // Zero line position — bars grow from here
37
+ const zeroY = yScale(0);
38
+ return /*#__PURE__*/_jsx("g", {
39
+ children: data.map((d, i) => {
40
+ const xVal = xScale(String(d[xKey]));
41
+ if (xVal == null) {
42
+ return null;
43
+ }
44
+ const yVal = typeof d[dataKey] === 'number' ? d[dataKey] : 0;
45
+ const yPos = yScale(yVal);
46
+
47
+ // Bar grows from zero line toward the value
48
+ const barY = Math.min(yPos, zeroY);
49
+ const barHeight = Math.abs(yPos - zeroY);
50
+ return /*#__PURE__*/_jsx("rect", {
51
+ x: xVal,
52
+ y: barY,
53
+ width: xScale.bandwidth(),
54
+ height: Math.max(0, barHeight),
55
+ fill: color,
56
+ rx: radius,
57
+ ry: radius
58
+ }, i);
59
+ })
60
+ });
61
+ }
@@ -0,0 +1,59 @@
1
+ /**
2
+ * @file ChartBrush.tsx
3
+ * @output Drag-to-select region. Supports x-only or 2D (xy) brush modes.
4
+ * @position Child of Chart; reads scales from context
5
+ */
6
+ import React from 'react';
7
+ /**
8
+ * Brush direction mode:
9
+ * - `'x'` — horizontal range selection (default)
10
+ * - `'xy'` — 2D rectangular selection
11
+ */
12
+ export type BrushMode = 'x' | 'xy';
13
+ export interface BrushRange {
14
+ x: [number, number];
15
+ y?: [number, number];
16
+ }
17
+ export interface ChartBrushProps {
18
+ /**
19
+ * Brush direction mode.
20
+ * - `'x'` — horizontal selection (default, good for time ranges)
21
+ * - `'xy'` — rectangular 2D selection (good for scatter plots)
22
+ *
23
+ * @default 'x'
24
+ */
25
+ mode?: BrushMode;
26
+ /**
27
+ * Called when the user finishes a brush gesture.
28
+ * Receives the selected range in data coordinates and the matching data points.
29
+ */
30
+ onBrush?: (range: BrushRange, data: Record<string, unknown>[]) => void;
31
+ /**
32
+ * Called when the brush is cleared (click without drag).
33
+ */
34
+ onClear?: () => void;
35
+ /**
36
+ * Brush overlay color.
37
+ * @default 'var(--color-accent)'
38
+ */
39
+ color?: string;
40
+ /**
41
+ * Brush overlay opacity.
42
+ * @default 0.15
43
+ */
44
+ opacity?: number;
45
+ }
46
+ /**
47
+ * Brush interaction for range selection.
48
+ *
49
+ * @example
50
+ * ```tsx
51
+ * // X-only (default)
52
+ * <ChartBrush onBrush={({x}) => setZoom(x)} />
53
+ *
54
+ * // 2D rectangular
55
+ * <ChartBrush mode="xy" onBrush={({x, y}, points) => setSelected(points)} />
56
+ * ```
57
+ */
58
+ export declare function ChartBrush({ mode, onBrush, onClear, color, opacity, }: ChartBrushProps): React.JSX.Element;
59
+ //# sourceMappingURL=ChartBrush.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChartBrush.d.ts","sourceRoot":"","sources":["../../src/Chart/ChartBrush.tsx"],"names":[],"mappings":"AAEA;;;;GAIG;AAEH,OAAO,KAAsC,MAAM,OAAO,CAAC;AAK3D;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG,GAAG,GAAG,IAAI,CAAC;AAEnC,MAAM,WAAW,UAAU;IACzB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpB,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;IAEjB;;;OAGG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,IAAI,CAAC;IAEvE;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAErB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAiBD;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CAAC,EACzB,IAAU,EACV,OAAO,EACP,OAAO,EACP,KAA6B,EAC7B,OAAc,GACf,EAAE,eAAe,qBAgJjB"}
@@ -0,0 +1,197 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
2
+
3
+ /**
4
+ * @file ChartBrush.tsx
5
+ * @output Drag-to-select region. Supports x-only or 2D (xy) brush modes.
6
+ * @position Child of Chart; reads scales from context
7
+ */
8
+
9
+ import React, { useState, useCallback, useRef } from 'react';
10
+ import { useChart } from "./ChartContext.js";
11
+ import { isBandScale } from "./utils.js";
12
+
13
+ /**
14
+ * Brush direction mode:
15
+ * - `'x'` — horizontal range selection (default)
16
+ * - `'xy'` — 2D rectangular selection
17
+ */
18
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
19
+ function localCoords(e) {
20
+ const svg = e.currentTarget.ownerSVGElement;
21
+ if (!svg) {
22
+ return {
23
+ x: 0,
24
+ y: 0
25
+ };
26
+ }
27
+ const pt = svg.createSVGPoint();
28
+ pt.x = e.clientX;
29
+ pt.y = e.clientY;
30
+ const local = pt.matrixTransform(e.currentTarget.getScreenCTM()?.inverse());
31
+ return {
32
+ x: local.x,
33
+ y: local.y
34
+ };
35
+ }
36
+
37
+ /**
38
+ * Brush interaction for range selection.
39
+ *
40
+ * @example
41
+ * ```tsx
42
+ * // X-only (default)
43
+ * <ChartBrush onBrush={({x}) => setZoom(x)} />
44
+ *
45
+ * // 2D rectangular
46
+ * <ChartBrush mode="xy" onBrush={({x, y}, points) => setSelected(points)} />
47
+ * ```
48
+ */
49
+ export function ChartBrush({
50
+ mode = 'x',
51
+ onBrush,
52
+ onClear,
53
+ color = 'var(--color-accent)',
54
+ opacity = 0.15
55
+ }) {
56
+ const {
57
+ width,
58
+ height,
59
+ data,
60
+ xKey,
61
+ xScale,
62
+ yScale
63
+ } = useChart();
64
+ const [brush, setBrush] = useState(null);
65
+ const dragging = useRef(false);
66
+ const startRef = useRef({
67
+ x: 0,
68
+ y: 0
69
+ });
70
+ const onPointerDown = useCallback(e => {
71
+ e.target.setPointerCapture(e.pointerId);
72
+ dragging.current = true;
73
+ const {
74
+ x,
75
+ y
76
+ } = localCoords(e);
77
+ startRef.current = {
78
+ x,
79
+ y
80
+ };
81
+ setBrush({
82
+ x0: x,
83
+ y0: y,
84
+ x1: x,
85
+ y1: y
86
+ });
87
+ }, []);
88
+ const onPointerMove = useCallback(e => {
89
+ if (!dragging.current) {
90
+ return;
91
+ }
92
+ const {
93
+ x,
94
+ y
95
+ } = localCoords(e);
96
+ const {
97
+ x: sx,
98
+ y: sy
99
+ } = startRef.current;
100
+ if (mode === 'x') {
101
+ setBrush({
102
+ x0: Math.min(sx, x),
103
+ y0: 0,
104
+ x1: Math.max(sx, x),
105
+ y1: height
106
+ });
107
+ } else {
108
+ setBrush({
109
+ x0: Math.min(sx, x),
110
+ y0: Math.min(sy, y),
111
+ x1: Math.max(sx, x),
112
+ y1: Math.max(sy, y)
113
+ });
114
+ }
115
+ }, [mode, height]);
116
+ const onPointerUp = useCallback(() => {
117
+ dragging.current = false;
118
+ if (!brush) {
119
+ return;
120
+ }
121
+ const dx = Math.abs(brush.x1 - brush.x0);
122
+ const dy = Math.abs(brush.y1 - brush.y0);
123
+
124
+ // Too small — treat as click (clear)
125
+ if (dx < 3 && (mode === 'x' || dy < 3)) {
126
+ setBrush(null);
127
+ onClear?.();
128
+ return;
129
+ }
130
+ if (isBandScale(xScale)) {
131
+ // Band scale — can't invert meaningfully for range
132
+ setBrush(null);
133
+ return;
134
+ }
135
+ const linear = xScale;
136
+ const xMin = linear.invert(brush.x0);
137
+ const xMax = linear.invert(brush.x1);
138
+ const range = {
139
+ x: [xMin, xMax]
140
+ };
141
+ let selected;
142
+ if (mode === 'xy') {
143
+ const yMin = yScale.invert(brush.y1); // y is inverted (top=0)
144
+ const yMax = yScale.invert(brush.y0);
145
+ range.y = [yMin, yMax];
146
+ selected = data.filter(d => {
147
+ const xv = d[xKey];
148
+ if (typeof xv !== 'number' || xv < xMin || xv > xMax) {
149
+ return false;
150
+ }
151
+ // Check all numeric values against y range
152
+ return Object.entries(d).some(([k, v]) => k !== xKey && typeof v === 'number' && v >= yMin && v <= yMax);
153
+ });
154
+ } else {
155
+ selected = data.filter(d => {
156
+ const v = d[xKey];
157
+ return typeof v === 'number' && v >= xMin && v <= xMax;
158
+ });
159
+ }
160
+ onBrush?.(range, selected);
161
+ }, [brush, mode, xScale, yScale, data, xKey, onBrush, onClear]);
162
+ const rectX = brush ? brush.x0 : 0;
163
+ const rectY = brush ? brush.y0 : 0;
164
+ const rectW = brush ? brush.x1 - brush.x0 : 0;
165
+ const rectH = brush ? brush.y1 - brush.y0 : 0;
166
+ const brushRectStyle = {
167
+ cursor: 'crosshair',
168
+ touchAction: 'none',
169
+ userSelect: 'none'
170
+ };
171
+ return /*#__PURE__*/_jsxs("g", {
172
+ children: [/*#__PURE__*/_jsx("rect", {
173
+ x: 0,
174
+ y: 0,
175
+ width: width,
176
+ height: height,
177
+ fill: "transparent",
178
+ style: brushRectStyle,
179
+ onPointerDown: onPointerDown,
180
+ onPointerMove: onPointerMove,
181
+ onPointerUp: onPointerUp,
182
+ onPointerCancel: onPointerUp
183
+ }), brush && (rectW > 1 || rectH > 1) && /*#__PURE__*/_jsx("rect", {
184
+ x: rectX,
185
+ y: rectY,
186
+ width: rectW,
187
+ height: rectH,
188
+ fill: color,
189
+ fillOpacity: opacity,
190
+ stroke: color,
191
+ strokeWidth: 1,
192
+ strokeOpacity: 0.4,
193
+ rx: mode === 'xy' ? 2 : 0,
194
+ pointerEvents: "none"
195
+ })]
196
+ });
197
+ }
@@ -0,0 +1,50 @@
1
+ export interface ChartCandlestickProps {
2
+ /** Data key for the high/max value (top of whisker) */
3
+ high: string;
4
+ /** Data key for the low/min value (bottom of whisker) */
5
+ low: string;
6
+ /** Data key for the open/Q1 value (bottom of body) */
7
+ open: string;
8
+ /** Data key for the close/Q3 value (top of body) */
9
+ close: string;
10
+ /**
11
+ * Visual variant:
12
+ * - `'default'` — filled body with whiskers
13
+ * - `'bar'` — OHLC bar — vertical range line, left tick at open, right tick at close
14
+ */
15
+ variant?: 'default' | 'bar';
16
+ /** Color when close >= open (bullish / positive) */
17
+ upColor?: string;
18
+ /** Color when close < open (bearish / negative) */
19
+ downColor?: string;
20
+ /** Fixed color — overrides up/down logic. Use for box plots. */
21
+ color?: string;
22
+ /** Body width as fraction of band width (default: 0.6) */
23
+ bodyWidth?: number;
24
+ /** Stroke width for whiskers and bar lines */
25
+ strokeWidth?: number;
26
+ /** Corner radius on body (default variant only) */
27
+ radius?: number;
28
+ }
29
+ /**
30
+ * Candlestick / box-whisker marks.
31
+ *
32
+ * @example
33
+ * ```
34
+ * // Financial OHLC
35
+ * <ChartCandlestick
36
+ * high="high" low="low" open="open" close="close"
37
+ * upColor={useChartColors().semantic.positive}
38
+ * downColor={useChartColors().semantic.negative}
39
+ * />
40
+ *
41
+ * // OHLC bar
42
+ * <ChartCandlestick
43
+ * variant="bar"
44
+ * high="max" low="min" open="q1" close="median"
45
+ * color={useChartColors().categorical(1)[0]}
46
+ * />
47
+ * ```
48
+ */
49
+ export declare function ChartCandlestick({ high, low, open, close, variant, upColor, downColor, color, bodyWidth, strokeWidth, radius, }: ChartCandlestickProps): import("react").JSX.Element | null;
50
+ //# sourceMappingURL=ChartCandlestick.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChartCandlestick.d.ts","sourceRoot":"","sources":["../../src/Chart/ChartCandlestick.tsx"],"names":[],"mappings":"AAeA,MAAM,WAAW,qBAAqB;IACpC,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAC;IACb,yDAAyD;IACzD,GAAG,EAAE,MAAM,CAAC;IACZ,sDAAsD;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,oDAAoD;IACpD,KAAK,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,OAAO,CAAC,EAAE,SAAS,GAAG,KAAK,CAAC;IAC5B,oDAAoD;IACpD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mDAAmD;IACnD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gEAAgE;IAChE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0DAA0D;IAC1D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8CAA8C;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mDAAmD;IACnD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,IAAI,EACJ,GAAG,EACH,IAAI,EACJ,KAAK,EACL,OAAmB,EACnB,OAAO,EACP,SAAS,EACT,KAAK,EACL,SAAe,EACf,WAAiB,EACjB,MAAU,GACX,EAAE,qBAAqB,sCA6GvB"}
@@ -0,0 +1,138 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
2
+
3
+ /**
4
+ * @file ChartCandlestick.tsx
5
+ * @output Renders candlestick/box-whisker marks for OHLC or statistical data
6
+ * @position Child of Chart; reads scales from context
7
+ *
8
+ * Two variants:
9
+ * - `'default'` — filled body with whiskers (traditional candlestick/box plot)
10
+ * - `'bar'` — OHLC bar — vertical line with open/close ticks
11
+ */
12
+
13
+ import { useChart } from "./ChartContext.js";
14
+ import { isBandScale } from "./utils.js";
15
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
16
+ /**
17
+ * Candlestick / box-whisker marks.
18
+ *
19
+ * @example
20
+ * ```
21
+ * // Financial OHLC
22
+ * <ChartCandlestick
23
+ * high="high" low="low" open="open" close="close"
24
+ * upColor={useChartColors().semantic.positive}
25
+ * downColor={useChartColors().semantic.negative}
26
+ * />
27
+ *
28
+ * // OHLC bar
29
+ * <ChartCandlestick
30
+ * variant="bar"
31
+ * high="max" low="min" open="q1" close="median"
32
+ * color={useChartColors().categorical(1)[0]}
33
+ * />
34
+ * ```
35
+ */
36
+ export function ChartCandlestick({
37
+ high,
38
+ low,
39
+ open,
40
+ close,
41
+ variant = 'default',
42
+ upColor,
43
+ downColor,
44
+ color,
45
+ bodyWidth = 0.6,
46
+ strokeWidth = 1.5,
47
+ radius = 2
48
+ }) {
49
+ const {
50
+ data,
51
+ xKey,
52
+ xScale,
53
+ yScale
54
+ } = useChart();
55
+ if (!isBandScale(xScale)) {
56
+ return null;
57
+ }
58
+ const bw = xScale.bandwidth();
59
+ return /*#__PURE__*/_jsx("g", {
60
+ children: data.map((d, i) => {
61
+ const xVal = xScale(String(d[xKey]));
62
+ if (xVal == null) {
63
+ return null;
64
+ }
65
+ const hVal = typeof d[high] === 'number' ? d[high] : 0;
66
+ const lVal = typeof d[low] === 'number' ? d[low] : 0;
67
+ const oVal = typeof d[open] === 'number' ? d[open] : 0;
68
+ const cVal = typeof d[close] === 'number' ? d[close] : 0;
69
+ const isUp = cVal >= oVal;
70
+ const fill = color ?? (isUp ? upColor ?? 'var(--color-data-categorical-green)' : downColor ?? 'var(--color-data-categorical-red)');
71
+ const centerX = xVal + bw / 2;
72
+ const yHigh = yScale(hVal);
73
+ const yLow = yScale(lVal);
74
+ const yOpen = yScale(oVal);
75
+ const yClose = yScale(cVal);
76
+ const bodyTop = Math.min(yOpen, yClose);
77
+ const bodyBot = Math.max(yOpen, yClose);
78
+ if (variant === 'bar') {
79
+ // OHLC bar: vertical line (high→low), left tick at open, right tick at close
80
+ const tickLen = bw * bodyWidth * 0.4;
81
+ return /*#__PURE__*/_jsxs("g", {
82
+ children: [/*#__PURE__*/_jsx("line", {
83
+ x1: centerX,
84
+ x2: centerX,
85
+ y1: yHigh,
86
+ y2: yLow,
87
+ stroke: fill,
88
+ strokeWidth: strokeWidth
89
+ }), /*#__PURE__*/_jsx("line", {
90
+ x1: centerX - tickLen,
91
+ x2: centerX,
92
+ y1: yOpen,
93
+ y2: yOpen,
94
+ stroke: fill,
95
+ strokeWidth: strokeWidth
96
+ }), /*#__PURE__*/_jsx("line", {
97
+ x1: centerX,
98
+ x2: centerX + tickLen,
99
+ y1: yClose,
100
+ y2: yClose,
101
+ stroke: fill,
102
+ strokeWidth: strokeWidth
103
+ })]
104
+ }, i);
105
+ }
106
+
107
+ // Default variant: filled body with whiskers
108
+ const bodyW = bw * bodyWidth;
109
+ const bodyX = centerX - bodyW / 2;
110
+ const bodyH = Math.max(1, bodyBot - bodyTop);
111
+ return /*#__PURE__*/_jsxs("g", {
112
+ children: [/*#__PURE__*/_jsx("line", {
113
+ x1: centerX,
114
+ x2: centerX,
115
+ y1: yHigh,
116
+ y2: bodyTop,
117
+ stroke: fill,
118
+ strokeWidth: strokeWidth
119
+ }), /*#__PURE__*/_jsx("line", {
120
+ x1: centerX,
121
+ x2: centerX,
122
+ y1: bodyBot,
123
+ y2: yLow,
124
+ stroke: fill,
125
+ strokeWidth: strokeWidth
126
+ }), /*#__PURE__*/_jsx("rect", {
127
+ x: bodyX,
128
+ y: bodyTop,
129
+ width: bodyW,
130
+ height: bodyH,
131
+ fill: fill,
132
+ rx: radius,
133
+ ry: radius
134
+ })]
135
+ }, i);
136
+ })
137
+ });
138
+ }
@@ -0,0 +1,5 @@
1
+ import type { ChartContext } from './types';
2
+ export declare const ChartProvider: import("react").Provider<ChartContext | null>;
3
+ /** Access the chart context. Throws if used outside <Chart>. */
4
+ export declare function useChart(): ChartContext;
5
+ //# sourceMappingURL=ChartContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChartContext.d.ts","sourceRoot":"","sources":["../../src/Chart/ChartContext.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,SAAS,CAAC;AAI1C,eAAO,MAAM,aAAa,+CAAoB,CAAC;AAE/C,gEAAgE;AAChE,wBAAgB,QAAQ,IAAI,YAAY,CAMvC"}