@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,104 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
2
+
3
+ 'use client';
4
+
5
+ /**
6
+ * @file Stepper.tsx
7
+ * @input Uses React, stylex, theme tokens, StepperContext
8
+ * @output Exports Stepper component and StepperProps
9
+ * @position Core container component; consumed by index.ts
10
+ *
11
+ * SYNC: When modified, update these files to stay in sync:
12
+ * - /packages/lab/src/Stepper/Stepper.doc.mjs (props table, features, implementation notes)
13
+ * - /packages/lab/src/Stepper/Stepper.test.tsx (tests for new/changed behavior)
14
+ * - /packages/lab/src/Stepper/index.ts (exports if types change)
15
+ * - /apps/storybook/stories/Stepper.stories.tsx (storybook stories)
16
+ * - /packages/cli/templates/blocks/components/Stepper/ (showcase blocks)
17
+ */
18
+ import { useMemo } from 'react';
19
+ import * as stylex from '@stylexjs/stylex';
20
+ import { mergeProps } from '@astryxdesign/core/utils';
21
+ import { themeProps } from '@astryxdesign/core/utils';
22
+ import { StepperContext } from "./StepperContext.js";
23
+ import { jsx as _jsx } from "react/jsx-runtime";
24
+ const STEP_GAP = '2px';
25
+ const styles = {
26
+ root: {
27
+ k1xSpc: "x78zum5",
28
+ kzqmXN: "xh8yej3",
29
+ kH6xsr: "x3ct3a4",
30
+ kogj98: "x1ghz6dp",
31
+ kmVPX3: "x1717udv",
32
+ $$css: true
33
+ },
34
+ horizontal: {
35
+ kXwgrk: "x1q0g3np",
36
+ kGNEyG: "x1cy8zhl",
37
+ kOIVth: "x195vfkc",
38
+ $$css: true
39
+ },
40
+ vertical: {
41
+ kXwgrk: "xdt5ytf",
42
+ kOIVth: "x195vfkc",
43
+ $$css: true
44
+ }
45
+ };
46
+
47
+ /**
48
+ * A stepper component for multi-step workflows. Displays numbered steps
49
+ * with visual indicators for completed, active, and upcoming states.
50
+ *
51
+ * Each Step child must provide a `step` prop (zero-based index) so it
52
+ * can derive its state from the parent's activeStep. CSS :last-child
53
+ * handles connector hiding — no child introspection needed.
54
+ *
55
+ * Rendered as an ordered list (`<ol>`/`<li>`) rather than a `nav`
56
+ * landmark: a stepper communicates *progress through a sequence*, not a
57
+ * set of site navigation links. The active step is marked with
58
+ * `aria-current="step"` (handled per-step) and the list carries an
59
+ * accessible `label`. This follows the WAI-ARIA pattern for steppers /
60
+ * progress sequences and avoids polluting the page's landmark map.
61
+ *
62
+ * @example
63
+ * ```
64
+ * <Stepper activeStep={1}>
65
+ * <Step step={0} label="Account" />
66
+ * <Step step={1} label="Profile" />
67
+ * <Step step={2} label="Review" />
68
+ * </Stepper>
69
+ * ```
70
+ */
71
+ export function Stepper({
72
+ activeStep,
73
+ children,
74
+ orientation = 'horizontal',
75
+ onStepClick,
76
+ label = 'Progress',
77
+ density = 'balanced',
78
+ xstyle,
79
+ className,
80
+ style,
81
+ ref,
82
+ ...rest
83
+ }) {
84
+ const ctxValue = useMemo(() => ({
85
+ activeStep,
86
+ orientation,
87
+ isNonLinear: onStepClick != null,
88
+ onStepClick: onStepClick ?? null,
89
+ density
90
+ }), [activeStep, orientation, onStepClick, density]);
91
+ return /*#__PURE__*/_jsx(StepperContext, {
92
+ value: ctxValue,
93
+ children: /*#__PURE__*/_jsx("ol", {
94
+ ref: ref,
95
+ "aria-label": label,
96
+ ...rest,
97
+ ...mergeProps(themeProps('stepper', {
98
+ orientation
99
+ }), stylex.props(styles.root, orientation === 'horizontal' ? styles.horizontal : styles.vertical, xstyle), className, style),
100
+ children: children
101
+ })
102
+ });
103
+ }
104
+ Stepper.displayName = 'Stepper';
@@ -0,0 +1,12 @@
1
+ export type StepperOrientation = 'horizontal' | 'vertical';
2
+ export type StepperDensity = 'compact' | 'balanced' | 'spacious';
3
+ export interface StepperContextValue {
4
+ activeStep: number;
5
+ orientation: StepperOrientation;
6
+ isNonLinear: boolean;
7
+ onStepClick: ((index: number) => void) | null;
8
+ density: StepperDensity;
9
+ }
10
+ export declare const StepperContext: import("react").Context<StepperContextValue | null>;
11
+ export declare function useStepperContext(): StepperContextValue;
12
+ //# sourceMappingURL=StepperContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StepperContext.d.ts","sourceRoot":"","sources":["../../src/Stepper/StepperContext.ts"],"names":[],"mappings":"AAiBA,MAAM,MAAM,kBAAkB,GAAG,YAAY,GAAG,UAAU,CAAC;AAC3D,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;AAEjE,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,kBAAkB,CAAC;IAChC,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC;IAC9C,OAAO,EAAE,cAAc,CAAC;CACzB;AAED,eAAO,MAAM,cAAc,qDAE1B,CAAC;AAGF,wBAAgB,iBAAiB,IAAI,mBAAmB,CASvD"}
@@ -0,0 +1,24 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
2
+
3
+ 'use client';
4
+
5
+ /**
6
+ * @file StepperContext.ts
7
+ * @input Uses React createContext/use
8
+ * @output Exports StepperContext, useStepperContext, and context types
9
+ * @position Context for Stepper <-> Step communication
10
+ *
11
+ * SYNC: When modified, update these files to stay in sync:
12
+ * - /packages/lab/src/Stepper/Stepper.doc.mjs
13
+ * - /packages/lab/src/Stepper/index.ts
14
+ */
15
+ import { createContext, use } from 'react';
16
+ export const StepperContext = /*#__PURE__*/createContext(null);
17
+ StepperContext.displayName = 'StepperContext';
18
+ export function useStepperContext() {
19
+ const ctx = use(StepperContext);
20
+ if (ctx == null) {
21
+ throw new Error('useStepperContext must be used within Stepper. ' + 'Wrap your Step in <Stepper>.');
22
+ }
23
+ return ctx;
24
+ }
@@ -0,0 +1,8 @@
1
+ export { Stepper } from './Stepper';
2
+ export type { StepperProps } from './Stepper';
3
+ export { Step } from './Step';
4
+ export type { StepProps, StepIndicatorPreset } from './Step';
5
+ export type { StepStatus } from './StepStatus';
6
+ export { useStepperContext } from './StepperContext';
7
+ export type { StepperOrientation } from './StepperContext';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Stepper/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAC;AAClC,YAAY,EAAC,YAAY,EAAC,MAAM,WAAW,CAAC;AAE5C,OAAO,EAAC,IAAI,EAAC,MAAM,QAAQ,CAAC;AAC5B,YAAY,EAAC,SAAS,EAAE,mBAAmB,EAAC,MAAM,QAAQ,CAAC;AAE3D,YAAY,EAAC,UAAU,EAAC,MAAM,cAAc,CAAC;AAE7C,OAAO,EAAC,iBAAiB,EAAC,MAAM,kBAAkB,CAAC;AACnD,YAAY,EAAC,kBAAkB,EAAC,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,7 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
2
+
3
+ 'use client';
4
+
5
+ export { Stepper } from "./Stepper.js";
6
+ export { Step } from "./Step.js";
7
+ export { useStepperContext } from "./StepperContext.js";
@@ -0,0 +1,6 @@
1
+ export interface ThreeDAxisProps {
2
+ /** Show axis labels (default: true) */
3
+ labels?: boolean;
4
+ }
5
+ export declare function ThreeDAxis({ labels }: ThreeDAxisProps): import("react").JSX.Element;
6
+ //# sourceMappingURL=ThreeDAxis.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThreeDAxis.d.ts","sourceRoot":"","sources":["../../src/ThreeD/ThreeDAxis.tsx"],"names":[],"mappings":"AASA,MAAM,WAAW,eAAe;IAC9B,uCAAuC;IACvC,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,wBAAgB,UAAU,CAAC,EAAC,MAAa,EAAC,EAAE,eAAe,+BAuE1D"}
@@ -0,0 +1,75 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
2
+
3
+ /**
4
+ * @file ThreeDAxis.tsx
5
+ * @output 3D axis lines with labels at each end
6
+ */
7
+
8
+ import { use3D } from "./ThreeDContext.js";
9
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
10
+ export function ThreeDAxis({
11
+ labels = true
12
+ }) {
13
+ const {
14
+ project,
15
+ xKey,
16
+ yKey,
17
+ zKey,
18
+ xDomain,
19
+ yDomain,
20
+ zDomain
21
+ } = use3D();
22
+ const origin = project(0, 0, 0);
23
+ const xEnd = project(1, 0, 0);
24
+ const yEnd = project(0, 1, 0);
25
+ const zEnd = project(0, 0, 1);
26
+ const lineColor = 'var(--color-border-emphasized)';
27
+ const labelColor = 'var(--color-text-secondary)';
28
+ return /*#__PURE__*/_jsxs("g", {
29
+ children: [/*#__PURE__*/_jsx("line", {
30
+ x1: origin.px,
31
+ y1: origin.py,
32
+ x2: xEnd.px,
33
+ y2: xEnd.py,
34
+ stroke: lineColor,
35
+ strokeWidth: 1.5
36
+ }), /*#__PURE__*/_jsx("line", {
37
+ x1: origin.px,
38
+ y1: origin.py,
39
+ x2: yEnd.px,
40
+ y2: yEnd.py,
41
+ stroke: lineColor,
42
+ strokeWidth: 1.5
43
+ }), /*#__PURE__*/_jsx("line", {
44
+ x1: origin.px,
45
+ y1: origin.py,
46
+ x2: zEnd.px,
47
+ y2: zEnd.py,
48
+ stroke: lineColor,
49
+ strokeWidth: 1.5
50
+ }), labels && /*#__PURE__*/_jsxs(_Fragment, {
51
+ children: [/*#__PURE__*/_jsxs("text", {
52
+ x: xEnd.px + 8,
53
+ y: xEnd.py,
54
+ fill: labelColor,
55
+ fontSize: 11,
56
+ dominantBaseline: "central",
57
+ children: [xKey, " [", xDomain[0], "-", xDomain[1], "]"]
58
+ }), /*#__PURE__*/_jsxs("text", {
59
+ x: yEnd.px + 8,
60
+ y: yEnd.py,
61
+ fill: labelColor,
62
+ fontSize: 11,
63
+ dominantBaseline: "central",
64
+ children: [yKey, " [", yDomain[0], "-", yDomain[1], "]"]
65
+ }), /*#__PURE__*/_jsxs("text", {
66
+ x: zEnd.px + 8,
67
+ y: zEnd.py,
68
+ fill: labelColor,
69
+ fontSize: 11,
70
+ dominantBaseline: "central",
71
+ children: [zKey, " [", zDomain[0], "-", zDomain[1], "]"]
72
+ })]
73
+ })]
74
+ });
75
+ }
@@ -0,0 +1,7 @@
1
+ export interface ThreeDBarProps {
2
+ color: string;
3
+ barWidth?: number;
4
+ barDepth?: number;
5
+ }
6
+ export declare function ThreeDBar({ color, barWidth, barDepth, }: ThreeDBarProps): import("react").JSX.Element;
7
+ //# sourceMappingURL=ThreeDBar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThreeDBar.d.ts","sourceRoot":"","sources":["../../src/ThreeD/ThreeDBar.tsx"],"names":[],"mappings":"AAUA,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,QAAe,EACf,QAAe,GAChB,EAAE,cAAc,+BA6GhB"}
@@ -0,0 +1,98 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
2
+
3
+ /**
4
+ * @file ThreeDBar.tsx
5
+ * @output 3D bar chart — projected rectangles with depth shading
6
+ */
7
+
8
+ import { useMemo } from 'react';
9
+ import { use3D } from "./ThreeDContext.js";
10
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
11
+ export function ThreeDBar({
12
+ color,
13
+ barWidth = 0.06,
14
+ barDepth = 0.06
15
+ }) {
16
+ const {
17
+ data,
18
+ xKey,
19
+ yKey,
20
+ zKey,
21
+ project,
22
+ xDomain,
23
+ yDomain,
24
+ zDomain,
25
+ normalize
26
+ } = use3D();
27
+ const bars = useMemo(() => {
28
+ return data.map((d, i) => {
29
+ const nx = normalize(d[xKey], xDomain);
30
+ const ny = normalize(d[yKey], yDomain);
31
+ const nz = normalize(d[zKey], zDomain);
32
+ const hw = barWidth / 2;
33
+ const hd = barDepth / 2;
34
+
35
+ // Bar goes from y=0 to y=ny
36
+ // Four top corners of the bar
37
+ const topFL = project(nx - hw, ny, nz - hd); // front-left
38
+ const topFR = project(nx + hw, ny, nz - hd); // front-right
39
+ const topBL = project(nx - hw, ny, nz + hd); // back-left
40
+ const topBR = project(nx + hw, ny, nz + hd); // back-right
41
+
42
+ // Four bottom corners (y=0)
43
+ const botFL = project(nx - hw, 0, nz - hd);
44
+ const botFR = project(nx + hw, 0, nz - hd);
45
+ const botBL = project(nx - hw, 0, nz + hd);
46
+ const botBR = project(nx + hw, 0, nz + hd);
47
+
48
+ // Average depth for sorting
49
+ const avgDepth = (topFL.depth + topBR.depth + botFL.depth + botBR.depth) / 4;
50
+ return {
51
+ topFL,
52
+ topFR,
53
+ topBL,
54
+ topBR,
55
+ botFL,
56
+ botFR,
57
+ botBL,
58
+ botBR,
59
+ avgDepth,
60
+ index: i,
61
+ ny
62
+ };
63
+ }).sort((a, b) => a.avgDepth - b.avgDepth);
64
+ }, [data, xKey, yKey, zKey, project, xDomain, yDomain, zDomain, normalize, barWidth, barDepth]);
65
+ return /*#__PURE__*/_jsx("g", {
66
+ children: bars.map(b => {
67
+ const face = (pts, _shade) => pts.map(p => `${p.px},${p.py}`).join(' ');
68
+
69
+ // Front face
70
+ const front = [b.botFL, b.botFR, b.topFR, b.topFL];
71
+ // Right face
72
+ const right = [b.botFR, b.botBR, b.topBR, b.topFR];
73
+ // Top face
74
+ const top = [b.topFL, b.topFR, b.topBR, b.topBL];
75
+ return /*#__PURE__*/_jsxs("g", {
76
+ children: [/*#__PURE__*/_jsx("polygon", {
77
+ points: face(front, 0),
78
+ fill: color,
79
+ fillOpacity: 0.9,
80
+ stroke: color,
81
+ strokeWidth: 0.5
82
+ }), /*#__PURE__*/_jsx("polygon", {
83
+ points: face(right, 0),
84
+ fill: color,
85
+ fillOpacity: 0.7,
86
+ stroke: color,
87
+ strokeWidth: 0.5
88
+ }), /*#__PURE__*/_jsx("polygon", {
89
+ points: face(top, 0),
90
+ fill: color,
91
+ fillOpacity: 1,
92
+ stroke: color,
93
+ strokeWidth: 0.5
94
+ })]
95
+ }, b.index);
96
+ })
97
+ });
98
+ }
@@ -0,0 +1,24 @@
1
+ /**
2
+ * @file ThreeDChart.tsx
3
+ * @output Root 3D chart container — projected SVG with depth sorting
4
+ * @position Parent component; all 3D marks read from its context
5
+ */
6
+ import { type ReactNode } from 'react';
7
+ export interface ThreeDChartProps {
8
+ data: Record<string, unknown>[];
9
+ xKey: string;
10
+ yKey: string;
11
+ zKey: string;
12
+ xDomain?: [number, number];
13
+ yDomain?: [number, number];
14
+ zDomain?: [number, number];
15
+ height?: number;
16
+ azimuth?: number;
17
+ elevation?: number;
18
+ interactive?: boolean;
19
+ /** Auto-rotate speed in degrees per frame (default: 0 = off) */
20
+ autoRotate?: number;
21
+ children: ReactNode;
22
+ }
23
+ export declare function ThreeDChart({ data, xKey, yKey, zKey, xDomain: xDomainProp, yDomain: yDomainProp, zDomain: zDomainProp, height, azimuth: azimuthProp, elevation: elevationProp, interactive, autoRotate, children, }: ThreeDChartProps): import("react").JSX.Element;
24
+ //# sourceMappingURL=ThreeDChart.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThreeDChart.d.ts","sourceRoot":"","sources":["../../src/ThreeD/ThreeDChart.tsx"],"names":[],"mappings":"AAEA;;;;GAIG;AAEH,OAAO,EAEL,KAAK,SAAS,EAOf,MAAM,OAAO,CAAC;AAIf,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3B,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3B,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,gEAAgE;IAChE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,SAAS,CAAC;CACrB;AAsBD,wBAAgB,WAAW,CAAC,EAC1B,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,WAAW,EACpB,MAAY,EACZ,OAAO,EAAE,WAAgB,EACzB,SAAS,EAAE,aAAkB,EAC7B,WAAmB,EACnB,UAAc,EACd,QAAQ,GACT,EAAE,gBAAgB,+BA6LlB"}
@@ -0,0 +1,202 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
2
+
3
+ /**
4
+ * @file ThreeDChart.tsx
5
+ * @output Root 3D chart container — projected SVG with depth sorting
6
+ * @position Parent component; all 3D marks read from its context
7
+ */
8
+
9
+ import { useMemo, useRef, useState, useEffect, useLayoutEffect, useCallback } from 'react';
10
+ import { ThreeDProvider } from "./ThreeDContext.js";
11
+ import { jsx as _jsx } from "react/jsx-runtime";
12
+ function computeDomain(data, key) {
13
+ let min = Infinity,
14
+ max = -Infinity;
15
+ for (const d of data) {
16
+ const v = d[key];
17
+ if (typeof v === 'number') {
18
+ if (v < min) {
19
+ min = v;
20
+ }
21
+ if (v > max) {
22
+ max = v;
23
+ }
24
+ }
25
+ }
26
+ return [min === Infinity ? 0 : min, max === -Infinity ? 1 : max];
27
+ }
28
+ export function ThreeDChart({
29
+ data,
30
+ xKey,
31
+ yKey,
32
+ zKey,
33
+ xDomain: xDomainProp,
34
+ yDomain: yDomainProp,
35
+ zDomain: zDomainProp,
36
+ height = 400,
37
+ azimuth: azimuthProp = 35,
38
+ elevation: elevationProp = 25,
39
+ interactive = false,
40
+ autoRotate = 0,
41
+ children
42
+ }) {
43
+ const containerRef = useRef(null);
44
+ const [containerWidth, setContainerWidth] = useState(0);
45
+ const [camera, setCamera] = useState({
46
+ azimuth: azimuthProp,
47
+ elevation: elevationProp
48
+ });
49
+ const dragRef = useRef(null);
50
+ useLayoutEffect(() => {
51
+ if (!containerRef.current) {
52
+ return;
53
+ }
54
+ const obs = new ResizeObserver(e => {
55
+ if (e[0]) {
56
+ setContainerWidth(e[0].contentRect.width);
57
+ }
58
+ });
59
+ obs.observe(containerRef.current);
60
+ return () => obs.disconnect();
61
+ }, []);
62
+ const width = containerWidth;
63
+ const xDomain = xDomainProp ?? computeDomain(data, xKey);
64
+ const yDomain = yDomainProp ?? computeDomain(data, yKey);
65
+ const zDomain = zDomainProp ?? computeDomain(data, zKey);
66
+ const normalize = useCallback((value, domain) => {
67
+ const range = domain[1] - domain[0];
68
+ return range === 0 ? 0.5 : (value - domain[0]) / range;
69
+ }, []);
70
+
71
+ // Projection: normalized [0,1]^3 → 2D pixel coords
72
+ // SYNC: This math is replicated in ThreeDScatterGL's vertex shader.
73
+ // Both must produce identical output. Verified by projection.test.ts.
74
+ // If you change this, update the shader and re-run the parity tests.
75
+ const project = useMemo(() => {
76
+ const azRad = camera.azimuth * Math.PI / 180;
77
+ const elRad = camera.elevation * Math.PI / 180;
78
+ const cosAz = Math.cos(azRad),
79
+ sinAz = Math.sin(azRad);
80
+ const cosEl = Math.cos(elRad),
81
+ sinEl = Math.sin(elRad);
82
+ const scale = Math.min(width, height) * 0.35;
83
+ const cx = width / 2,
84
+ cy = height / 2;
85
+ return (nx, ny, nz) => {
86
+ const x = nx - 0.5,
87
+ y = ny - 0.5,
88
+ z = nz - 0.5;
89
+ const x1 = x * cosAz + z * sinAz;
90
+ const z1 = -x * sinAz + z * cosAz;
91
+ const y1 = y * cosEl - z1 * sinEl;
92
+ const z2 = y * sinEl + z1 * cosEl;
93
+ return {
94
+ px: cx + x1 * scale,
95
+ py: cy - y1 * scale,
96
+ depth: z2
97
+ };
98
+ };
99
+ }, [camera.azimuth, camera.elevation, width, height]);
100
+ const handleStart = useCallback((clientX, clientY) => {
101
+ if (!interactive) {
102
+ return;
103
+ }
104
+ dragRef.current = {
105
+ startX: clientX,
106
+ startY: clientY,
107
+ startAz: camera.azimuth,
108
+ startEl: camera.elevation
109
+ };
110
+ }, [interactive, camera]);
111
+ const handleMove = useCallback((clientX, clientY) => {
112
+ if (!dragRef.current) {
113
+ return;
114
+ }
115
+ const dx = clientX - dragRef.current.startX;
116
+ const dy = clientY - dragRef.current.startY;
117
+ setCamera({
118
+ azimuth: dragRef.current.startAz + dx * 0.5,
119
+ elevation: Math.max(-89, Math.min(89, dragRef.current.startEl - dy * 0.5))
120
+ });
121
+ }, []);
122
+ const handleEnd = useCallback(() => {
123
+ dragRef.current = null;
124
+ }, []);
125
+
126
+ // Auto-rotation — throttled to ~20fps to avoid overwhelming React with re-renders
127
+ useEffect(() => {
128
+ if (autoRotate === 0) {
129
+ return;
130
+ }
131
+ let raf;
132
+ let lastUpdate = 0;
133
+ const interval = 50; // ms between React updates (~20fps)
134
+ const tick = now => {
135
+ if (!dragRef.current && now - lastUpdate >= interval) {
136
+ const elapsed = lastUpdate === 0 ? interval : now - lastUpdate;
137
+ lastUpdate = now;
138
+ const degrees = autoRotate * (elapsed / 16.67); // normalize to 60fps equivalent
139
+ setCamera(prev => ({
140
+ ...prev,
141
+ azimuth: prev.azimuth + degrees
142
+ }));
143
+ }
144
+ raf = requestAnimationFrame(tick);
145
+ };
146
+ raf = requestAnimationFrame(tick);
147
+ return () => cancelAnimationFrame(raf);
148
+ }, [autoRotate]);
149
+ const ctx = useMemo(() => ({
150
+ width,
151
+ height,
152
+ data,
153
+ xKey,
154
+ yKey,
155
+ zKey,
156
+ project,
157
+ xDomain,
158
+ yDomain,
159
+ zDomain,
160
+ normalize,
161
+ camera
162
+ }), [width, height, data, xKey, yKey, zKey, project, xDomain, yDomain, zDomain, normalize, camera]);
163
+ const containerStyle = {
164
+ width: '100%',
165
+ touchAction: interactive ? 'none' : undefined,
166
+ userSelect: interactive ? 'none' : undefined
167
+ };
168
+ return /*#__PURE__*/_jsx("div", {
169
+ ref: containerRef,
170
+ style: containerStyle,
171
+ children: containerWidth > 0 && /*#__PURE__*/_jsx("svg", {
172
+ width: containerWidth,
173
+ height: height,
174
+ onMouseDown: e => handleStart(e.clientX, e.clientY),
175
+ onMouseMove: e => handleMove(e.clientX, e.clientY),
176
+ onMouseUp: handleEnd,
177
+ onMouseLeave: handleEnd,
178
+ onTouchStart: e => {
179
+ const t = e.touches[0];
180
+ if (t) {
181
+ handleStart(t.clientX, t.clientY);
182
+ }
183
+ },
184
+ onTouchMove: e => {
185
+ const t = e.touches[0];
186
+ if (t) {
187
+ e.preventDefault();
188
+ handleMove(t.clientX, t.clientY);
189
+ }
190
+ },
191
+ onTouchEnd: handleEnd,
192
+ style: {
193
+ cursor: interactive ? 'grab' : undefined,
194
+ touchAction: interactive ? 'none' : undefined
195
+ },
196
+ children: /*#__PURE__*/_jsx(ThreeDProvider, {
197
+ value: ctx,
198
+ children: children
199
+ })
200
+ })
201
+ });
202
+ }
@@ -0,0 +1,5 @@
1
+ import type { ThreeDContext } from './types';
2
+ export declare const ThreeDProvider: import("react").Provider<ThreeDContext | null>;
3
+ /** Access the 3D chart context. Throws if used outside ThreeDChart. */
4
+ export declare function use3D(): ThreeDContext;
5
+ //# sourceMappingURL=ThreeDContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThreeDContext.d.ts","sourceRoot":"","sources":["../../src/ThreeD/ThreeDContext.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,SAAS,CAAC;AAI3C,eAAO,MAAM,cAAc,gDAAqB,CAAC;AAEjD,uEAAuE;AACvE,wBAAgB,KAAK,IAAI,aAAa,CAMrC"}
@@ -0,0 +1,19 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
2
+
3
+ /**
4
+ * @file ThreeDContext.ts
5
+ * @output React context for 3D chart components
6
+ */
7
+
8
+ import { createContext, useContext } from 'react';
9
+ const ThreeDCtx = /*#__PURE__*/createContext(null);
10
+ export const ThreeDProvider = ThreeDCtx.Provider;
11
+
12
+ /** Access the 3D chart context. Throws if used outside ThreeDChart. */
13
+ export function use3D() {
14
+ const ctx = useContext(ThreeDCtx);
15
+ if (!ctx) {
16
+ throw new Error('3D components must be used inside <ThreeDChart>');
17
+ }
18
+ return ctx;
19
+ }
@@ -0,0 +1,5 @@
1
+ export interface ThreeDGridProps {
2
+ divisions?: number;
3
+ }
4
+ export declare function ThreeDGrid({ divisions }: ThreeDGridProps): import("react").JSX.Element;
5
+ //# sourceMappingURL=ThreeDGrid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThreeDGrid.d.ts","sourceRoot":"","sources":["../../src/ThreeD/ThreeDGrid.tsx"],"names":[],"mappings":"AAUA,MAAM,WAAW,eAAe;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,UAAU,CAAC,EAAC,SAAa,EAAC,EAAE,eAAe,+BAqD1D"}