@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,23 @@
1
+ /** Toolbar position relative to the chart */
2
+ export type ZoomToolbarPosition = 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left';
3
+ export interface ChartZoomProps {
4
+ onXDomainChange?: (domain: [number, number]) => void;
5
+ onYDomainChange?: (domain: [number, number]) => void;
6
+ /**
7
+ * Zoom speed factor per scroll tick. Higher = faster zoom.
8
+ * @default 0.1
9
+ */
10
+ zoomSpeed?: number;
11
+ /** Only zoom/pan the x-axis */
12
+ xOnly?: boolean;
13
+ /** Only zoom/pan the y-axis */
14
+ yOnly?: boolean;
15
+ /**
16
+ * Show the zoom/pan toolbar.
17
+ * Pass `false` to hide, or a position string to show at that corner.
18
+ * @default 'top-right'
19
+ */
20
+ toolbar?: false | ZoomToolbarPosition;
21
+ }
22
+ export declare function ChartZoom({ onXDomainChange, onYDomainChange, zoomSpeed, xOnly, yOnly, toolbar, }: ChartZoomProps): import("react").JSX.Element;
23
+ //# sourceMappingURL=ChartZoom.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChartZoom.d.ts","sourceRoot":"","sources":["../../src/Chart/ChartZoom.tsx"],"names":[],"mappings":"AAmBA,6CAA6C;AAC7C,MAAM,MAAM,mBAAmB,GAC3B,WAAW,GACX,UAAU,GACV,cAAc,GACd,aAAa,CAAC;AAElB,MAAM,WAAW,cAAc;IAC7B,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC;IACrD,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC;IAErD;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,+BAA+B;IAC/B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,+BAA+B;IAC/B,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB;;;;OAIG;IACH,OAAO,CAAC,EAAE,KAAK,GAAG,mBAAmB,CAAC;CACvC;AAiDD,wBAAgB,SAAS,CAAC,EACxB,eAAe,EACf,eAAe,EACf,SAAe,EACf,KAAa,EACb,KAAa,EACb,OAAqB,GACtB,EAAE,cAAc,+BAwShB"}
@@ -0,0 +1,314 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
2
+
3
+ /**
4
+ * @file ChartZoom.tsx
5
+ * @output Scroll/pinch zoom + drag pan with optional toolbar.
6
+ * @position Child of Chart; modifies x/yDomain via callbacks
7
+ *
8
+ * Zoom is aspect-ratio-normalized: both axes scale by the same visual
9
+ * factor regardless of their domain ranges. Reset button restores
10
+ * the initial domains captured on mount.
11
+ */
12
+
13
+ import { useCallback, useRef, useEffect } from 'react';
14
+ import { createPortal } from 'react-dom';
15
+ import { IconButton } from '@astryxdesign/core/IconButton';
16
+ import { useChart } from "./ChartContext.js";
17
+ import { isBandScale } from "./utils.js";
18
+
19
+ /** Toolbar position relative to the chart */
20
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
21
+ // Chart toolbar icons (16x16 SVG)
22
+ function ZoomInIcon() {
23
+ return /*#__PURE__*/_jsx("svg", {
24
+ width: 16,
25
+ height: 16,
26
+ viewBox: "0 0 16 16",
27
+ fill: "none",
28
+ stroke: "currentColor",
29
+ strokeWidth: 1.5,
30
+ strokeLinecap: "round",
31
+ children: /*#__PURE__*/_jsx("path", {
32
+ d: "M8 3v10M3 8h10"
33
+ })
34
+ });
35
+ }
36
+ function ZoomOutIcon() {
37
+ return /*#__PURE__*/_jsx("svg", {
38
+ width: 16,
39
+ height: 16,
40
+ viewBox: "0 0 16 16",
41
+ fill: "none",
42
+ stroke: "currentColor",
43
+ strokeWidth: 1.5,
44
+ strokeLinecap: "round",
45
+ children: /*#__PURE__*/_jsx("path", {
46
+ d: "M3 8h10"
47
+ })
48
+ });
49
+ }
50
+ function ResetIcon() {
51
+ return /*#__PURE__*/_jsx("svg", {
52
+ width: 16,
53
+ height: 16,
54
+ viewBox: "0 0 16 16",
55
+ fill: "none",
56
+ stroke: "currentColor",
57
+ strokeWidth: 1.5,
58
+ strokeLinecap: "round",
59
+ strokeLinejoin: "round",
60
+ children: /*#__PURE__*/_jsx("path", {
61
+ d: "M2 8a6 6 0 1 1 1.5 4M2 12V8h4"
62
+ })
63
+ });
64
+ }
65
+ export function ChartZoom({
66
+ onXDomainChange,
67
+ onYDomainChange,
68
+ zoomSpeed = 0.1,
69
+ xOnly = false,
70
+ yOnly = false,
71
+ toolbar = 'top-right'
72
+ }) {
73
+ const {
74
+ width,
75
+ height,
76
+ xScale,
77
+ yScale,
78
+ svgRef
79
+ } = useChart();
80
+
81
+ // Capture initial domains on mount for reset
82
+ const initialDomainsRef = useRef(null);
83
+ useEffect(() => {
84
+ if (initialDomainsRef.current) {
85
+ return;
86
+ } // only capture once
87
+ const xDomain = isBandScale(xScale) ? null : xScale.domain();
88
+ const yDomain = yScale.domain();
89
+ initialDomainsRef.current = {
90
+ x: xDomain,
91
+ y: yDomain
92
+ };
93
+ }, [xScale, yScale]);
94
+ const dragRef = useRef(null);
95
+ const pointersRef = useRef(new Map());
96
+ const pinchRef = useRef(null);
97
+ const getXDomain = useCallback(() => isBandScale(xScale) ? [0, 0] : xScale.domain(), [xScale]);
98
+
99
+ // Zoom a single axis around a pivot point by a factor.
100
+ // factor > 1 = zoom out, factor < 1 = zoom in.
101
+ const zoomAxis = useCallback((domain, factor, pivot) => {
102
+ const [lo, hi] = domain;
103
+ const range = hi - lo;
104
+ const leftRatio = (pivot - lo) / range;
105
+ const newRange = range * factor;
106
+ return [pivot - newRange * leftRatio, pivot + newRange * (1 - leftRatio)];
107
+ }, []);
108
+ const zoomBy = useCallback((factor, pivotX, pivotY) => {
109
+ if (!yOnly && !isBandScale(xScale)) {
110
+ const linear = xScale;
111
+ const [xMin, xMax] = linear.domain();
112
+ const xPivot = pivotX != null ? linear.invert(pivotX) : (xMin + xMax) / 2;
113
+ onXDomainChange?.(zoomAxis([xMin, xMax], factor, xPivot));
114
+ }
115
+ if (!xOnly) {
116
+ const [yMin, yMax] = yScale.domain();
117
+ const yPivot = pivotY != null ? yScale.invert(pivotY) : (yMin + yMax) / 2;
118
+ onYDomainChange?.(zoomAxis([yMin, yMax], factor, yPivot));
119
+ }
120
+ }, [xScale, yScale, onXDomainChange, onYDomainChange, xOnly, yOnly, zoomAxis]);
121
+ const handleWheel = useCallback(e => {
122
+ e.preventDefault();
123
+ const svg = e.currentTarget.ownerSVGElement;
124
+ if (!svg) {
125
+ return;
126
+ }
127
+ const pt = svg.createSVGPoint();
128
+ pt.x = e.clientX;
129
+ pt.y = e.clientY;
130
+ const local = pt.matrixTransform(e.currentTarget.getScreenCTM()?.inverse());
131
+
132
+ // Clamp delta to prevent trackpad acceleration from blowing out the domain.
133
+ // A single tick should zoom by at most zoomSpeed (10% default).
134
+ const clampedDelta = Math.sign(e.deltaY) * Math.min(Math.abs(e.deltaY), 50);
135
+ const rawFactor = 1 + clampedDelta / 50 * zoomSpeed;
136
+
137
+ // Apply per-axis, normalizing by each axis's pixel-to-domain ratio
138
+ // so both axes zoom at the same visual rate.
139
+ if (!yOnly && !isBandScale(xScale)) {
140
+ const linear = xScale;
141
+ const [xMin, xMax] = linear.domain();
142
+ const xPivot = linear.invert(local.x);
143
+ onXDomainChange?.(zoomAxis([xMin, xMax], rawFactor, xPivot));
144
+ }
145
+ if (!xOnly) {
146
+ const [yMin, yMax] = yScale.domain();
147
+ const yPivot = yScale.invert(local.y);
148
+ onYDomainChange?.(zoomAxis([yMin, yMax], rawFactor, yPivot));
149
+ }
150
+ }, [zoomSpeed, xScale, yScale, onXDomainChange, onYDomainChange, xOnly, yOnly, zoomAxis]);
151
+ const onPointerDown = useCallback(e => {
152
+ e.target.setPointerCapture(e.pointerId);
153
+ e.preventDefault(); // prevent selection on touch
154
+ pointersRef.current.set(e.pointerId, {
155
+ x: e.clientX,
156
+ y: e.clientY
157
+ });
158
+ if (pointersRef.current.size === 2) {
159
+ const pts = [...pointersRef.current.values()];
160
+ const dist = Math.hypot(pts[1].x - pts[0].x, pts[1].y - pts[0].y);
161
+ pinchRef.current = {
162
+ dist,
163
+ xDomain: getXDomain(),
164
+ yDomain: yScale.domain()
165
+ };
166
+ dragRef.current = null;
167
+ } else if (pointersRef.current.size === 1) {
168
+ dragRef.current = {
169
+ startX: e.clientX,
170
+ startY: e.clientY,
171
+ xDomain: getXDomain(),
172
+ yDomain: yScale.domain()
173
+ };
174
+ }
175
+ }, [getXDomain, yScale]);
176
+ const onPointerMove = useCallback(e => {
177
+ pointersRef.current.set(e.pointerId, {
178
+ x: e.clientX,
179
+ y: e.clientY
180
+ });
181
+ if (pointersRef.current.size === 2 && pinchRef.current) {
182
+ const pts = [...pointersRef.current.values()];
183
+ const dist = Math.hypot(pts[1].x - pts[0].x, pts[1].y - pts[0].y);
184
+ const ratio = pinchRef.current.dist / dist;
185
+ if (!yOnly && !isBandScale(xScale)) {
186
+ const [xMin, xMax] = pinchRef.current.xDomain;
187
+ const mid = (xMin + xMax) / 2;
188
+ const half = (xMax - xMin) / 2 * ratio;
189
+ onXDomainChange?.([mid - half, mid + half]);
190
+ }
191
+ if (!xOnly) {
192
+ const [yMin, yMax] = pinchRef.current.yDomain;
193
+ const mid = (yMin + yMax) / 2;
194
+ const half = (yMax - yMin) / 2 * ratio;
195
+ onYDomainChange?.([mid - half, mid + half]);
196
+ }
197
+ } else if (dragRef.current) {
198
+ const dx = e.clientX - dragRef.current.startX;
199
+ const dy = e.clientY - dragRef.current.startY;
200
+ if (!yOnly && !isBandScale(xScale)) {
201
+ const [xMin, xMax] = dragRef.current.xDomain;
202
+ const xShift = -(dx / width) * (xMax - xMin);
203
+ onXDomainChange?.([xMin + xShift, xMax + xShift]);
204
+ }
205
+ if (!xOnly) {
206
+ const [yMin, yMax] = dragRef.current.yDomain;
207
+ const yShift = dy / height * (yMax - yMin);
208
+ onYDomainChange?.([yMin + yShift, yMax + yShift]);
209
+ }
210
+ }
211
+ }, [xScale, width, height, onXDomainChange, onYDomainChange, xOnly, yOnly]);
212
+ const onPointerUp = useCallback(e => {
213
+ pointersRef.current.delete(e.pointerId);
214
+ if (pointersRef.current.size < 2) {
215
+ pinchRef.current = null;
216
+ }
217
+ if (pointersRef.current.size === 0) {
218
+ dragRef.current = null;
219
+ }
220
+ }, []);
221
+ const handleReset = useCallback(() => {
222
+ const init = initialDomainsRef.current;
223
+ if (!init) {
224
+ return;
225
+ }
226
+ if (init.x) {
227
+ onXDomainChange?.(init.x);
228
+ }
229
+ onYDomainChange?.(init.y);
230
+ }, [onXDomainChange, onYDomainChange]);
231
+
232
+ // Toolbar portal target
233
+ const portalTarget = svgRef.current?.parentElement;
234
+
235
+ // Toolbar position styles
236
+ const toolbarPositionStyle = pos => {
237
+ const base = {
238
+ position: 'absolute',
239
+ display: 'flex',
240
+ flexDirection: 'column',
241
+ gap: 4,
242
+ zIndex: 1
243
+ };
244
+ switch (pos) {
245
+ case 'top-right':
246
+ return {
247
+ ...base,
248
+ top: 8,
249
+ right: 8
250
+ };
251
+ case 'top-left':
252
+ return {
253
+ ...base,
254
+ top: 8,
255
+ left: 8
256
+ };
257
+ case 'bottom-right':
258
+ return {
259
+ ...base,
260
+ bottom: 8,
261
+ right: 8
262
+ };
263
+ case 'bottom-left':
264
+ return {
265
+ ...base,
266
+ bottom: 8,
267
+ left: 8
268
+ };
269
+ }
270
+ };
271
+ const zoomRectStyle = {
272
+ cursor: 'grab',
273
+ touchAction: 'none',
274
+ userSelect: 'none'
275
+ };
276
+ return /*#__PURE__*/_jsxs(_Fragment, {
277
+ children: [/*#__PURE__*/_jsx("g", {
278
+ children: /*#__PURE__*/_jsx("rect", {
279
+ x: 0,
280
+ y: 0,
281
+ width: width,
282
+ height: height,
283
+ fill: "transparent",
284
+ style: zoomRectStyle,
285
+ onWheel: handleWheel,
286
+ onPointerDown: onPointerDown,
287
+ onPointerMove: onPointerMove,
288
+ onPointerUp: onPointerUp,
289
+ onPointerCancel: onPointerUp
290
+ })
291
+ }), toolbar && portalTarget && /*#__PURE__*/createPortal(/*#__PURE__*/_jsxs("div", {
292
+ style: toolbarPositionStyle(toolbar),
293
+ children: [/*#__PURE__*/_jsx(IconButton, {
294
+ label: "Zoom in",
295
+ icon: /*#__PURE__*/_jsx(ZoomInIcon, {}),
296
+ variant: "ghost",
297
+ size: "sm",
298
+ onClick: () => zoomBy(1 / (1 + zoomSpeed))
299
+ }), /*#__PURE__*/_jsx(IconButton, {
300
+ label: "Zoom out",
301
+ icon: /*#__PURE__*/_jsx(ZoomOutIcon, {}),
302
+ variant: "ghost",
303
+ size: "sm",
304
+ onClick: () => zoomBy(1 + zoomSpeed)
305
+ }), /*#__PURE__*/_jsx(IconButton, {
306
+ label: "Reset zoom",
307
+ icon: /*#__PURE__*/_jsx(ResetIcon, {}),
308
+ variant: "ghost",
309
+ size: "sm",
310
+ onClick: handleReset
311
+ })]
312
+ }), portalTarget)]
313
+ });
314
+ }
@@ -0,0 +1,33 @@
1
+ /**
2
+ * @file formatters.ts
3
+ * @output Built-in tick format utilities for common data types
4
+ * @position Utility; consumed by ChartAxis via tickFormat prop
5
+ */
6
+ /**
7
+ * Compact number formatter (e.g. 1200 → "1.2K", 1500000 → "1.5M")
8
+ */
9
+ export declare function compactNumber(value: unknown): string;
10
+ /**
11
+ * Currency formatter factory. Returns a tick format function.
12
+ *
13
+ * @example
14
+ * ```
15
+ * <ChartAxis tickFormat={currency()} /> // $1.5K
16
+ * <ChartAxis tickFormat={currency('€')} /> // €1.5K
17
+ * <ChartAxis tickFormat={currency('¥')} /> // ¥1.5K
18
+ * ```
19
+ */
20
+ export declare function currency(symbol?: string): (value: unknown) => string;
21
+ /**
22
+ * Percent formatter (e.g. 0.45 → "45%", 1.2 → "120%")
23
+ */
24
+ export declare function percent(value: unknown): string;
25
+ /**
26
+ * Date formatter — short date (e.g. "Jan 5", "Mar 12")
27
+ */
28
+ export declare function shortDate(value: unknown): string;
29
+ /**
30
+ * Date formatter — month/year (e.g. "Jan 2024", "Mar 2025")
31
+ */
32
+ export declare function monthYear(value: unknown): string;
33
+ //# sourceMappingURL=formatters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatters.d.ts","sourceRoot":"","sources":["../../src/Chart/formatters.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AAEH;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAepD;AAED;;;;;;;;;GASG;AACH,wBAAgB,QAAQ,CAAC,MAAM,SAAM,GAAG,CAAC,KAAK,EAAE,OAAO,KAAK,MAAM,CAiBjE;AAQD;;GAEG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAM9C;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAMhD;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAMhD"}
@@ -0,0 +1,101 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
2
+
3
+ /**
4
+ * @file formatters.ts
5
+ * @output Built-in tick format utilities for common data types
6
+ * @position Utility; consumed by ChartAxis via tickFormat prop
7
+ */
8
+
9
+ /**
10
+ * Compact number formatter (e.g. 1200 → "1.2K", 1500000 → "1.5M")
11
+ */
12
+ export function compactNumber(value) {
13
+ const n = Number(value);
14
+ if (isNaN(n)) {
15
+ return String(value);
16
+ }
17
+ if (Math.abs(n) >= 1_000_000_000) {
18
+ return `${strip(n / 1_000_000_000)}B`;
19
+ }
20
+ if (Math.abs(n) >= 1_000_000) {
21
+ return `${strip(n / 1_000_000)}M`;
22
+ }
23
+ if (Math.abs(n) >= 1_000) {
24
+ return `${strip(n / 1_000)}K`;
25
+ }
26
+ return n.toString();
27
+ }
28
+
29
+ /**
30
+ * Currency formatter factory. Returns a tick format function.
31
+ *
32
+ * @example
33
+ * ```
34
+ * <ChartAxis tickFormat={currency()} /> // $1.5K
35
+ * <ChartAxis tickFormat={currency('€')} /> // €1.5K
36
+ * <ChartAxis tickFormat={currency('¥')} /> // ¥1.5K
37
+ * ```
38
+ */
39
+ export function currency(symbol = '$') {
40
+ return value => {
41
+ const n = Number(value);
42
+ if (isNaN(n)) {
43
+ return String(value);
44
+ }
45
+ if (Math.abs(n) >= 1_000_000_000) {
46
+ return `${symbol}${strip(n / 1_000_000_000)}B`;
47
+ }
48
+ if (Math.abs(n) >= 1_000_000) {
49
+ return `${symbol}${strip(n / 1_000_000)}M`;
50
+ }
51
+ if (Math.abs(n) >= 1_000) {
52
+ return `${symbol}${strip(n / 1_000)}K`;
53
+ }
54
+ return `${symbol}${n.toLocaleString()}`;
55
+ };
56
+ }
57
+
58
+ /** Remove trailing .0 from fixed-point strings */
59
+ function strip(n) {
60
+ const s = n.toFixed(1);
61
+ return s.endsWith('.0') ? s.slice(0, -2) : s;
62
+ }
63
+
64
+ /**
65
+ * Percent formatter (e.g. 0.45 → "45%", 1.2 → "120%")
66
+ */
67
+ export function percent(value) {
68
+ const n = Number(value);
69
+ if (isNaN(n)) {
70
+ return String(value);
71
+ }
72
+ return `${Math.round(n * 100)}%`;
73
+ }
74
+
75
+ /**
76
+ * Date formatter — short date (e.g. "Jan 5", "Mar 12")
77
+ */
78
+ export function shortDate(value) {
79
+ const d = value instanceof Date ? value : new Date(Number(value));
80
+ if (isNaN(d.getTime())) {
81
+ return String(value);
82
+ }
83
+ return d.toLocaleDateString(undefined, {
84
+ month: 'short',
85
+ day: 'numeric'
86
+ });
87
+ }
88
+
89
+ /**
90
+ * Date formatter — month/year (e.g. "Jan 2024", "Mar 2025")
91
+ */
92
+ export function monthYear(value) {
93
+ const d = value instanceof Date ? value : new Date(Number(value));
94
+ if (isNaN(d.getTime())) {
95
+ return String(value);
96
+ }
97
+ return d.toLocaleDateString(undefined, {
98
+ month: 'short',
99
+ year: 'numeric'
100
+ });
101
+ }
@@ -0,0 +1,56 @@
1
+ /**
2
+ * @file getChartColors.ts
3
+ * @output Pure function to resolve chart colors from a theme — no React required
4
+ * @position Foundation utility; consumed by useChartColors and non-React contexts
5
+ *
6
+ * Takes a token resolver function (or a defined theme + mode) and returns
7
+ * the full chart colors API. The useChartColors hook wraps this.
8
+ */
9
+ import type { DefinedTheme } from '@astryxdesign/core/theme';
10
+ /** Hue names available in the sequential ramps */
11
+ export type SequentialHue = 'blue' | 'shamrock' | 'orange' | 'pink' | 'purple' | 'red' | 'teal' | 'yellow' | 'gray';
12
+ /** The chart colors API returned by both getChartColors and useChartColors */
13
+ export interface ChartColorsAPI {
14
+ categorical(n: number): string[];
15
+ sequential: Record<SequentialHue, (n: number) => string[]>;
16
+ diverging: {
17
+ positiveNegative(n: number): string[];
18
+ coldHot(n: number): string[];
19
+ custom(neg: SequentialHue, pos: SequentialHue, n: number, midpoint?: string): string[];
20
+ };
21
+ semantic: {
22
+ positive: string;
23
+ negative: string;
24
+ warning: string;
25
+ neutral: string;
26
+ };
27
+ /** Structural colors for chart chrome — axes, grid, ticks, labels */
28
+ structural: {
29
+ axis: string;
30
+ grid: string;
31
+ tick: string;
32
+ label: string;
33
+ };
34
+ alpha(hex: string, opacity: number): string;
35
+ }
36
+ /** A function that resolves a token name to its current value */
37
+ export type TokenResolver = (name: string) => string;
38
+ /**
39
+ * Build chart colors from a token resolver function.
40
+ * This is the lowest-level API — pass any function that maps token names to values.
41
+ */
42
+ export declare function getChartColorsFromResolver(resolve: TokenResolver): ChartColorsAPI;
43
+ /**
44
+ * Build chart colors from a defined theme and color mode.
45
+ *
46
+ * Use this in non-React contexts — WebGL setup, SSR, tests, Node scripts.
47
+ *
48
+ * @example
49
+ * ```
50
+ * import { neutralTheme } from '@astryxdesign/theme-neutral';
51
+ * const colors = getChartColors(neutralTheme, 'light');
52
+ * colors.categorical(5)
53
+ * ```
54
+ */
55
+ export declare function getChartColors(theme: DefinedTheme, mode?: 'light' | 'dark'): ChartColorsAPI;
56
+ //# sourceMappingURL=getChartColors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getChartColors.d.ts","sourceRoot":"","sources":["../../src/Chart/getChartColors.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,0BAA0B,CAAC;AAM3D,kDAAkD;AAClD,MAAM,MAAM,aAAa,GACrB,MAAM,GACN,UAAU,GACV,QAAQ,GACR,MAAM,GACN,QAAQ,GACR,KAAK,GACL,MAAM,GACN,QAAQ,GACR,MAAM,CAAC;AAEX,8EAA8E;AAC9E,MAAM,WAAW,cAAc;IAC7B,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACjC,UAAU,EAAE,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,EAAE,CAAC,CAAC;IAC3D,SAAS,EAAE;QACT,gBAAgB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;QACtC,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;QAC7B,MAAM,CACJ,GAAG,EAAE,aAAa,EAClB,GAAG,EAAE,aAAa,EAClB,CAAC,EAAE,MAAM,EACT,QAAQ,CAAC,EAAE,MAAM,GAChB,MAAM,EAAE,CAAC;KACb,CAAC;IACF,QAAQ,EAAE;QACR,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,qEAAqE;IACrE,UAAU,EAAE;QACV,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;CAC7C;AAED,iEAAiE;AACjE,MAAM,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;AAgErD;;;GAGG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,aAAa,GACrB,cAAc,CA+EhB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,YAAY,EACnB,IAAI,GAAE,OAAO,GAAG,MAAgB,GAC/B,cAAc,CAsBhB"}
@@ -0,0 +1,150 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
2
+
3
+ /**
4
+ * @file getChartColors.ts
5
+ * @output Pure function to resolve chart colors from a theme — no React required
6
+ * @position Foundation utility; consumed by useChartColors and non-React contexts
7
+ *
8
+ * Takes a token resolver function (or a defined theme + mode) and returns
9
+ * the full chart colors API. The useChartColors hook wraps this.
10
+ */
11
+
12
+ // =============================================================================
13
+ // Types
14
+ // =============================================================================
15
+
16
+ /** Hue names available in the sequential ramps */
17
+
18
+ /** The chart colors API returned by both getChartColors and useChartColors */
19
+
20
+ /** A function that resolves a token name to its current value */
21
+
22
+ // =============================================================================
23
+ // Internals
24
+ // =============================================================================
25
+
26
+ const CATEGORICAL_TOKENS = ['--color-data-categorical-blue', '--color-data-categorical-orange', '--color-data-categorical-purple', '--color-data-categorical-green', '--color-data-categorical-pink', '--color-data-categorical-cyan', '--color-data-categorical-red', '--color-data-categorical-teal', '--color-data-categorical-brown', '--color-data-categorical-indigo'];
27
+ const SEQUENTIAL_HUES = ['blue', 'shamrock', 'orange', 'pink', 'purple', 'red', 'teal', 'yellow', 'gray'];
28
+ function pickFromRamp(stops, n) {
29
+ if (n <= 0) {
30
+ return [];
31
+ }
32
+ if (n >= 5) {
33
+ return stops;
34
+ }
35
+ if (n === 1) {
36
+ return [stops[2]];
37
+ }
38
+ return Array.from({
39
+ length: n
40
+ }, (_, i) => stops[Math.round(i * 4 / (n - 1))]);
41
+ }
42
+ function hexAlpha(hex, opacity) {
43
+ const match = hex.match(/^#?([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})$/);
44
+ if (!match) {
45
+ return hex;
46
+ }
47
+ const r = parseInt(match[1], 16);
48
+ const g = parseInt(match[2], 16);
49
+ const b = parseInt(match[3], 16);
50
+ return `rgba(${r},${g},${b},${Math.max(0, Math.min(1, opacity))})`;
51
+ }
52
+
53
+ // =============================================================================
54
+ // Public API
55
+ // =============================================================================
56
+
57
+ /**
58
+ * Build chart colors from a token resolver function.
59
+ * This is the lowest-level API — pass any function that maps token names to values.
60
+ */
61
+ export function getChartColorsFromResolver(resolve) {
62
+ const categorical = CATEGORICAL_TOKENS.map(t => resolve(t));
63
+ const ramp = hue => [5, 4, 3, 2, 1].map(step => resolve(`--color-data-${hue}-${step}`));
64
+ const gray1 = resolve('--color-data-gray-1');
65
+ function buildDiverging(negHue, posHue, n, midpoint = gray1) {
66
+ if (n <= 0) {
67
+ return [];
68
+ }
69
+ if (n === 1) {
70
+ return [midpoint];
71
+ }
72
+ const neg = ramp(negHue);
73
+ const pos = ramp(posHue);
74
+ const half = Math.floor(n / 2);
75
+ const hasCenter = n % 2 === 1;
76
+ const negSide = pickFromRamp(neg, half);
77
+ const posSide = pickFromRamp(pos, half).reverse();
78
+ if (hasCenter) {
79
+ return [...negSide, midpoint, ...posSide];
80
+ }
81
+ return [...negSide, ...posSide];
82
+ }
83
+ return {
84
+ categorical(n) {
85
+ if (n <= 0) {
86
+ return [];
87
+ }
88
+ return categorical.slice(0, Math.min(n, categorical.length));
89
+ },
90
+ sequential: Object.fromEntries(SEQUENTIAL_HUES.map(hue => [hue, n => {
91
+ if (n <= 0) {
92
+ return [];
93
+ }
94
+ return pickFromRamp(ramp(hue), n);
95
+ }])),
96
+ diverging: {
97
+ positiveNegative: n => buildDiverging('shamrock', 'red', n),
98
+ coldHot: n => buildDiverging('blue', 'red', n),
99
+ custom: (neg, pos, n, mid) => buildDiverging(neg, pos, n, mid)
100
+ },
101
+ semantic: {
102
+ positive: resolve('--color-data-categorical-green'),
103
+ negative: resolve('--color-data-categorical-red'),
104
+ warning: resolve('--color-data-categorical-orange'),
105
+ neutral: resolve('--color-data-neutral')
106
+ },
107
+ structural: {
108
+ axis: resolve('--color-border-emphasized'),
109
+ grid: resolve('--color-border'),
110
+ tick: resolve('--color-border-emphasized'),
111
+ label: resolve('--color-text-secondary')
112
+ },
113
+ alpha: hexAlpha
114
+ };
115
+ }
116
+
117
+ /**
118
+ * Build chart colors from a defined theme and color mode.
119
+ *
120
+ * Use this in non-React contexts — WebGL setup, SSR, tests, Node scripts.
121
+ *
122
+ * @example
123
+ * ```
124
+ * import { neutralTheme } from '@astryxdesign/theme-neutral';
125
+ * const colors = getChartColors(neutralTheme, 'light');
126
+ * colors.categorical(5)
127
+ * ```
128
+ */
129
+ export function getChartColors(theme, mode = 'light') {
130
+ // Build a resolver from the theme's token map
131
+ const resolve = name => {
132
+ // Check theme token overrides first, then fall back to defaults
133
+ const raw = theme.tokens?.[name] ?? '';
134
+ if (!raw) {
135
+ return '';
136
+ }
137
+ // Resolve light-dark() for the given mode
138
+ if (raw.startsWith('light-dark(') && raw.endsWith(')')) {
139
+ const inner = raw.slice(11, -1);
140
+ const commaIdx = inner.indexOf(',');
141
+ if (commaIdx !== -1) {
142
+ const light = inner.slice(0, commaIdx).trim();
143
+ const dark = inner.slice(commaIdx + 1).trim();
144
+ return mode === 'light' ? light : dark;
145
+ }
146
+ }
147
+ return raw;
148
+ };
149
+ return getChartColorsFromResolver(resolve);
150
+ }