@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,756 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
2
+
3
+ 'use client';
4
+
5
+ /**
6
+ * @file Step.tsx
7
+ * @input Uses React, stylex, theme tokens, StepperContext
8
+ * @output Exports Step component and StepProps
9
+ * @position Individual step item; used inside Stepper
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/Stepper.test.tsx
14
+ * - /packages/lab/src/Stepper/index.ts
15
+ * - /apps/storybook/stories/Stepper.stories.tsx
16
+ * - /packages/cli/templates/blocks/components/Stepper/ (showcase blocks)
17
+ */
18
+
19
+ import {type ReactNode} from 'react';
20
+ import * as stylex from '@stylexjs/stylex';
21
+
22
+ import {
23
+ colorVars,
24
+ spacingVars,
25
+ radiusVars,
26
+ fontWeightVars,
27
+ typeScaleVars,
28
+ durationVars,
29
+ easeVars,
30
+ } from '@astryxdesign/core/theme/tokens.stylex';
31
+ import {mergeProps} from '@astryxdesign/core/utils';
32
+ import type {BaseProps} from '@astryxdesign/core';
33
+ import {useStepperContext} from './StepperContext';
34
+ import {themeProps} from '@astryxdesign/core/utils';
35
+ import type {StepStatus} from './StepStatus';
36
+
37
+ /**
38
+ * Built-in indicator presets. Anything other than these strings passed to
39
+ * `indicator` is treated as a custom ReactNode (e.g. an `<Icon />`).
40
+ * - 'auto': numbered badge for not-yet-reached steps, a check once completed
41
+ * (default)
42
+ * - 'number': always a numbered badge
43
+ * - 'none': no indicator — just the progress bar and label
44
+ */
45
+ export type StepIndicatorPreset = 'auto' | 'number' | 'none';
46
+ export type StepDensity = 'compact' | 'balanced' | 'spacious';
47
+
48
+ export interface StepProps extends BaseProps<HTMLLIElement> {
49
+ /** Ref forwarded to the root element */
50
+ ref?: React.Ref<HTMLLIElement>;
51
+ /**
52
+ * Zero-based index of this step. Used to derive progress (completed /
53
+ * active / not-started) relative to the parent's `activeStep`.
54
+ */
55
+ step: number;
56
+ /**
57
+ * Step label text.
58
+ */
59
+ label: string;
60
+ /**
61
+ * Optional description shown below the label.
62
+ */
63
+ description?: string;
64
+ /**
65
+ * Content rendered below the label and description. Useful in vertical
66
+ * steppers to show form fields or detailed content for each step.
67
+ */
68
+ children?: ReactNode;
69
+ /**
70
+ * Custom icon rendered inside the indicator. Accepts any ReactNode (for
71
+ * example an `<Icon />`). Equivalent to passing the node directly to
72
+ * `indicator`; takes precedence over the built-in number/check.
73
+ */
74
+ icon?: ReactNode;
75
+ /**
76
+ * Semantic color for the step. Controls **color only** and maps to the
77
+ * global Astryx semantic tokens (`accent`, `success`, `warning`, `error`).
78
+ * Leave unset to use the progress-derived default coloring.
79
+ */
80
+ status?: StepStatus;
81
+ /**
82
+ * Disable interaction for this step.
83
+ * @default false
84
+ */
85
+ isDisabled?: boolean;
86
+ /**
87
+ * Marks the step as optional, appending an "Optional" affordance after the
88
+ * label.
89
+ * @default false
90
+ */
91
+ isOptional?: boolean;
92
+ /**
93
+ * Trailing content rendered at the end of the label row (e.g. a timestamp
94
+ * or status chip).
95
+ */
96
+ endContent?: ReactNode;
97
+ /**
98
+ * What to show as the step indicator. Accepts a preset string or any
99
+ * ReactNode:
100
+ * - 'auto': numbered badge until completed, then a check (default)
101
+ * - 'number': always a numbered badge
102
+ * - 'none': no indicator, just the bar + label
103
+ * - ReactNode: any custom icon or element to render as the indicator
104
+ * @default 'auto'
105
+ */
106
+ indicator?: StepIndicatorPreset | ReactNode;
107
+ /**
108
+ * Controls vertical padding of the step. Falls back to the stepper-level
109
+ * density when unset.
110
+ * - 'compact': minimal padding (4px block)
111
+ * - 'balanced': default (8px block)
112
+ * - 'spacious': generous (12px block, 12px inline)
113
+ */
114
+ density?: StepDensity;
115
+ }
116
+
117
+ // --- Default progress icons (16px) ---
118
+
119
+ /** Filled check — shown for completed steps in 'auto' mode. */
120
+ function CheckCircleIcon() {
121
+ return (
122
+ <svg width="16" height="16" viewBox="0 0 16 16" fill="none">
123
+ <circle cx="8" cy="8" r="8" fill="currentColor" />
124
+ <path
125
+ d="M5 8.5l2 2 4-4"
126
+ stroke="white"
127
+ strokeWidth="1.5"
128
+ strokeLinecap="round"
129
+ strokeLinejoin="round"
130
+ />
131
+ </svg>
132
+ );
133
+ }
134
+
135
+ /** Filled dot in a ring — shown for the active step in 'auto' mode. */
136
+ function CurrentIcon() {
137
+ return (
138
+ <svg width="16" height="16" viewBox="0 0 16 16" fill="none">
139
+ <circle cx="8" cy="8" r="7" stroke="currentColor" strokeWidth="2" />
140
+ <circle cx="8" cy="8" r="4" fill="currentColor" />
141
+ </svg>
142
+ );
143
+ }
144
+
145
+ // --- Styles ---
146
+
147
+ const BAR_WIDTH = '4px';
148
+ const ICON_SIZE = spacingVars['--spacing-4'];
149
+ const NUMBER_SIZE = spacingVars['--spacing-5'];
150
+
151
+ const styles = stylex.create({
152
+ // ===================== VERTICAL LAYOUT =====================
153
+ verticalRoot: {
154
+ display: 'flex',
155
+ flexDirection: 'row',
156
+ alignItems: 'stretch',
157
+ position: 'relative',
158
+ gap: spacingVars['--spacing-0-5'],
159
+ },
160
+
161
+ // 4px progress bar segment
162
+ verticalBar: {
163
+ width: BAR_WIDTH,
164
+ borderRadius: radiusVars['--radius-full'],
165
+ flexShrink: 0,
166
+ alignSelf: 'stretch',
167
+ },
168
+ barCompleted: {
169
+ backgroundColor: colorVars['--color-accent'],
170
+ },
171
+ barIncomplete: {
172
+ backgroundColor: colorVars['--color-border'],
173
+ },
174
+ // Semantic status overrides for the bar — color only.
175
+ barAccent: {
176
+ backgroundColor: colorVars['--color-accent'],
177
+ },
178
+ barSuccess: {
179
+ backgroundColor: colorVars['--color-success'],
180
+ },
181
+ barWarning: {
182
+ backgroundColor: colorVars['--color-warning'],
183
+ },
184
+ barError: {
185
+ backgroundColor: colorVars['--color-error'],
186
+ },
187
+
188
+ // Step body — the selectable area
189
+ verticalBody: {
190
+ display: 'flex',
191
+ flexDirection: 'column',
192
+ flex: 1,
193
+ },
194
+
195
+ // ===================== HORIZONTAL LAYOUT =====================
196
+ horizontalStep: {
197
+ display: 'flex',
198
+ flexDirection: 'column',
199
+ alignItems: 'flex-start',
200
+ flex: 1,
201
+ // density padding applied via density styles below
202
+ },
203
+
204
+ // Full-width progress bar segment sitting above each horizontal step.
205
+ // Each step owns its own segment (filled from its derived progress) so the
206
+ // parent never has to introspect children to build the bar.
207
+ horizontalBar: {
208
+ width: '100%',
209
+ height: BAR_WIDTH,
210
+ borderRadius: radiusVars['--radius-full'],
211
+ flexShrink: 0,
212
+ marginBlockEnd: spacingVars['--spacing-0-5'],
213
+ },
214
+
215
+ // ===================== SHARED =====================
216
+
217
+ // Icon + Label in one row
218
+ iconLabelRow: {
219
+ display: 'flex',
220
+ flexDirection: 'row',
221
+ alignItems: 'center',
222
+ gap: spacingVars['--spacing-2'],
223
+ },
224
+
225
+ // Indicator icon container
226
+ icon: {
227
+ display: 'flex',
228
+ alignItems: 'center',
229
+ justifyContent: 'center',
230
+ width: ICON_SIZE,
231
+ height: ICON_SIZE,
232
+ flexShrink: 0,
233
+ },
234
+ iconCompleted: {
235
+ color: colorVars['--color-accent'],
236
+ },
237
+ iconInProgress: {
238
+ color: colorVars['--color-accent'],
239
+ },
240
+ iconNotStarted: {
241
+ color: colorVars['--color-icon-secondary'],
242
+ },
243
+ iconDisabled: {
244
+ color: colorVars['--color-icon-disabled'],
245
+ opacity: 0.5,
246
+ },
247
+ // Semantic status overrides for the icon — color only.
248
+ iconAccent: {
249
+ color: colorVars['--color-accent'],
250
+ },
251
+ iconSuccess: {
252
+ color: colorVars['--color-success'],
253
+ },
254
+ iconWarning: {
255
+ color: colorVars['--color-warning'],
256
+ },
257
+ iconError: {
258
+ color: colorVars['--color-error'],
259
+ },
260
+
261
+ // Number badge
262
+ numberBadge: {
263
+ display: 'grid',
264
+ placeItems: 'center',
265
+ width: NUMBER_SIZE,
266
+ height: NUMBER_SIZE,
267
+ borderRadius: radiusVars['--radius-full'],
268
+ // 10px is below the smallest type token (--text-supporting-size, 12px);
269
+ // intentional micro-type for the compact 20px numeric badge.
270
+ fontSize: '10px',
271
+ paddingBlockEnd: '1px',
272
+ fontWeight: fontWeightVars['--font-weight-semibold'],
273
+ lineHeight: 1,
274
+ flexShrink: 0,
275
+ textAlign: 'center',
276
+ },
277
+ numberCompleted: {
278
+ backgroundColor: colorVars['--color-accent'],
279
+ color: colorVars['--color-background-surface'],
280
+ },
281
+ numberInProgress: {
282
+ backgroundColor: colorVars['--color-accent'],
283
+ color: colorVars['--color-background-surface'],
284
+ },
285
+ numberNotStarted: {
286
+ backgroundColor: colorVars['--color-background-muted'],
287
+ color: colorVars['--color-text-secondary'],
288
+ },
289
+ numberDisabled: {
290
+ backgroundColor: colorVars['--color-background-muted'],
291
+ color: colorVars['--color-text-disabled'],
292
+ opacity: 0.5,
293
+ },
294
+ // Semantic status overrides for the number badge — color only.
295
+ numberAccent: {
296
+ backgroundColor: colorVars['--color-accent'],
297
+ color: colorVars['--color-on-accent'],
298
+ },
299
+ numberSuccess: {
300
+ backgroundColor: colorVars['--color-success'],
301
+ color: colorVars['--color-on-success'],
302
+ },
303
+ numberWarning: {
304
+ backgroundColor: colorVars['--color-warning'],
305
+ color: colorVars['--color-on-warning'],
306
+ },
307
+ numberError: {
308
+ backgroundColor: colorVars['--color-error'],
309
+ color: colorVars['--color-on-error'],
310
+ },
311
+
312
+ // Label
313
+ label: {
314
+ fontSize: typeScaleVars['--text-body-size'],
315
+ lineHeight: typeScaleVars['--text-body-leading'],
316
+ fontWeight: fontWeightVars['--font-weight-normal'],
317
+ color: colorVars['--color-text-primary'],
318
+ },
319
+ labelInProgress: {
320
+ fontWeight: fontWeightVars['--font-weight-semibold'],
321
+ },
322
+ labelNotStarted: {
323
+ color: colorVars['--color-text-secondary'],
324
+ },
325
+ labelDisabled: {
326
+ color: colorVars['--color-text-disabled'],
327
+ },
328
+
329
+ // Optional tag
330
+ optionalDot: {
331
+ fontSize: typeScaleVars['--text-body-size'],
332
+ color: colorVars['--color-text-secondary'],
333
+ },
334
+ optionalText: {
335
+ fontSize: typeScaleVars['--text-body-size'],
336
+ color: colorVars['--color-text-secondary'],
337
+ },
338
+
339
+ // Description
340
+ descriptionRow: {
341
+ paddingInlineStart: spacingVars['--spacing-0'],
342
+ },
343
+ descriptionRowWithIndicator: {
344
+ // Align with label: icon (16px) + gap (8px) = 24px
345
+ paddingInlineStart: spacingVars['--spacing-6'],
346
+ },
347
+ descriptionRowWithNumber: {
348
+ // Align with label: number badge (20px) + gap (8px) = 28px
349
+ paddingInlineStart: spacingVars['--spacing-7'],
350
+ },
351
+ description: {
352
+ fontSize: typeScaleVars['--text-supporting-size'],
353
+ lineHeight: typeScaleVars['--text-supporting-leading'],
354
+ color: colorVars['--color-text-secondary'],
355
+ },
356
+
357
+ // Step content (children / flex slot)
358
+ stepContent: {
359
+ paddingBlockStart: spacingVars['--spacing-2'],
360
+ },
361
+ stepContentWithIndicator: {
362
+ paddingInlineStart: spacingVars['--spacing-6'],
363
+ },
364
+ stepContentWithNumber: {
365
+ paddingInlineStart: spacingVars['--spacing-7'],
366
+ },
367
+
368
+ // Density
369
+ densityCompact: {
370
+ paddingBlock: spacingVars['--spacing-1'],
371
+ paddingInline: spacingVars['--spacing-2'],
372
+ },
373
+ densityBalanced: {
374
+ paddingBlock: spacingVars['--spacing-2'],
375
+ paddingInline: spacingVars['--spacing-2'],
376
+ },
377
+ densitySpacious: {
378
+ paddingBlock: spacingVars['--spacing-3'],
379
+ paddingInline: spacingVars['--spacing-3'],
380
+ },
381
+
382
+ // Button reset for clickable steps
383
+ buttonReset: {
384
+ all: 'unset',
385
+ textAlign: 'start',
386
+ alignItems: 'stretch',
387
+ display: 'flex',
388
+ flexDirection: 'column',
389
+ width: '100%',
390
+ cursor: 'pointer',
391
+ borderRadius: radiusVars['--radius-element'],
392
+ transitionProperty: 'background-color',
393
+ transitionDuration: durationVars['--duration-fast-min'],
394
+ transitionTimingFunction: easeVars['--ease-standard'],
395
+ backgroundColor: {
396
+ default: 'transparent',
397
+ ':hover': {
398
+ '@media (hover: hover)': colorVars['--color-overlay-hover'],
399
+ },
400
+ ':active': colorVars['--color-overlay-pressed'],
401
+ },
402
+ },
403
+
404
+ focusRing: {
405
+ outline: {
406
+ default: 'none',
407
+ ':focus-visible': `2px solid ${colorVars['--color-accent']}`,
408
+ },
409
+ outlineOffset: {
410
+ default: '0',
411
+ ':focus-visible': '2px',
412
+ },
413
+ },
414
+ });
415
+
416
+ /**
417
+ * An individual step within an Stepper. Renders a 4px progress-bar segment,
418
+ * an indicator (numbered badge, check, or any custom icon), a label with
419
+ * optional description, and an optional content slot.
420
+ *
421
+ * Progress (completed / active / not-started) is derived from the parent's
422
+ * `activeStep` and this step's `step` prop. The optional `status` prop layers a
423
+ * semantic color (`accent` / `success` / `warning` / `error`) on top — color
424
+ * only; it does not change layout or iconography.
425
+ *
426
+ * @example
427
+ * ```
428
+ * <Step step={0} label="Account details" description="Enter your email" />
429
+ * ```
430
+ *
431
+ * @example
432
+ * ```
433
+ * // Generic icon + semantic color
434
+ * <Step step={1} label="Payment" status="error" icon={<Icon icon="warning" />} />
435
+ * ```
436
+ */
437
+ export function Step({
438
+ step,
439
+ label,
440
+ description,
441
+ children,
442
+ icon,
443
+ status,
444
+ isDisabled = false,
445
+ isOptional = false,
446
+ endContent,
447
+ indicator: indicatorProp,
448
+ density: densityProp,
449
+ xstyle,
450
+ className,
451
+ style,
452
+ ref,
453
+ 'data-testid': dataTestId,
454
+ ...rest
455
+ }: StepProps) {
456
+ const ctx = useStepperContext();
457
+ const {activeStep, orientation, onStepClick, density: ctxDensity} = ctx;
458
+
459
+ const density = densityProp ?? ctxDensity;
460
+
461
+ // Resolve indicator prop — may be a preset string or a custom ReactNode.
462
+ const isCustomIndicator =
463
+ indicatorProp != null && typeof indicatorProp !== 'string';
464
+ const indicator: StepIndicatorPreset = isCustomIndicator
465
+ ? 'auto'
466
+ : ((indicatorProp as StepIndicatorPreset | undefined) ?? 'auto');
467
+
468
+ // Internal progress, derived from the parent's activeStep. This is NOT the
469
+ // public `status` prop — `status` controls semantic color only.
470
+ const progress: 'completed' | 'in-progress' | 'not-started' =
471
+ step === activeStep
472
+ ? 'in-progress'
473
+ : step < activeStep
474
+ ? 'completed'
475
+ : 'not-started';
476
+
477
+ const isVertical = orientation === 'vertical';
478
+ const isActive = progress === 'in-progress';
479
+ // Any non-disabled step is navigable when an onStepClick handler is provided,
480
+ // including not-started steps (free navigation across the flow).
481
+ const isClickable = !isDisabled && onStepClick != null;
482
+
483
+ const handleClick = () => {
484
+ if (isClickable && onStepClick) {
485
+ onStepClick(step);
486
+ }
487
+ };
488
+
489
+ // Bar fill is purely progress-based; `status` recolors it when set.
490
+ const isBarFilled = progress === 'completed' || progress === 'in-progress';
491
+ const statusBarStyle =
492
+ status === 'accent'
493
+ ? styles.barAccent
494
+ : status === 'success'
495
+ ? styles.barSuccess
496
+ : status === 'warning'
497
+ ? styles.barWarning
498
+ : status === 'error'
499
+ ? styles.barError
500
+ : undefined;
501
+
502
+ // --- Build indicator node ---
503
+ // 'auto': number for not-started, check/dot icon once reached
504
+ // 'number': always number badge
505
+ // 'none': nothing
506
+ // custom ReactNode (or `icon` prop): render as-is
507
+ let indicatorNode: ReactNode = null;
508
+
509
+ const customIcon = isCustomIndicator ? indicatorProp : (icon ?? null);
510
+
511
+ if (indicator !== 'none') {
512
+ const showNumber =
513
+ customIcon == null &&
514
+ (indicator === 'number' ||
515
+ (indicator === 'auto' && progress === 'not-started'));
516
+
517
+ if (showNumber) {
518
+ const numberColorStyle = isDisabled
519
+ ? styles.numberDisabled
520
+ : status === 'accent'
521
+ ? styles.numberAccent
522
+ : status === 'success'
523
+ ? styles.numberSuccess
524
+ : status === 'warning'
525
+ ? styles.numberWarning
526
+ : status === 'error'
527
+ ? styles.numberError
528
+ : progress === 'completed'
529
+ ? styles.numberCompleted
530
+ : progress === 'in-progress'
531
+ ? styles.numberInProgress
532
+ : styles.numberNotStarted;
533
+
534
+ indicatorNode = (
535
+ <div
536
+ aria-hidden="true"
537
+ {...stylex.props(styles.numberBadge, numberColorStyle)}>
538
+ {step + 1}
539
+ </div>
540
+ );
541
+ } else {
542
+ // Custom icon takes priority, otherwise the progress-derived default.
543
+ const iconContent =
544
+ customIcon != null ? (
545
+ customIcon
546
+ ) : progress === 'completed' ? (
547
+ <CheckCircleIcon />
548
+ ) : (
549
+ <CurrentIcon />
550
+ );
551
+
552
+ const iconColorStyle = isDisabled
553
+ ? styles.iconDisabled
554
+ : status === 'accent'
555
+ ? styles.iconAccent
556
+ : status === 'success'
557
+ ? styles.iconSuccess
558
+ : status === 'warning'
559
+ ? styles.iconWarning
560
+ : status === 'error'
561
+ ? styles.iconError
562
+ : progress === 'completed'
563
+ ? styles.iconCompleted
564
+ : progress === 'in-progress'
565
+ ? styles.iconInProgress
566
+ : styles.iconNotStarted;
567
+
568
+ indicatorNode = (
569
+ <div aria-hidden="true" {...stylex.props(styles.icon, iconColorStyle)}>
570
+ {iconContent}
571
+ </div>
572
+ );
573
+ }
574
+ }
575
+
576
+ const hasIndicator = indicator !== 'none';
577
+ const isNumber =
578
+ hasIndicator &&
579
+ customIcon == null &&
580
+ (indicator === 'number' ||
581
+ (indicator === 'auto' && progress === 'not-started'));
582
+
583
+ const labelColorStyle = isDisabled
584
+ ? styles.labelDisabled
585
+ : progress === 'not-started'
586
+ ? styles.labelNotStarted
587
+ : isActive
588
+ ? styles.labelInProgress
589
+ : undefined;
590
+
591
+ // Indicator + Label row
592
+ const iconLabelNode = (
593
+ <div {...stylex.props(styles.iconLabelRow)}>
594
+ {indicatorNode}
595
+ <span {...stylex.props(styles.label, labelColorStyle)}>{label}</span>
596
+ {isOptional && (
597
+ <>
598
+ <span {...stylex.props(styles.optionalDot)}>•</span>
599
+ <span {...stylex.props(styles.optionalText)}>Optional</span>
600
+ </>
601
+ )}
602
+ {endContent}
603
+ </div>
604
+ );
605
+
606
+ const descriptionNode =
607
+ description != null ? (
608
+ <div
609
+ {...stylex.props(
610
+ hasIndicator
611
+ ? isNumber
612
+ ? styles.descriptionRowWithNumber
613
+ : styles.descriptionRowWithIndicator
614
+ : styles.descriptionRow,
615
+ )}>
616
+ <span {...stylex.props(styles.description)}>{description}</span>
617
+ </div>
618
+ ) : null;
619
+
620
+ const contentNode =
621
+ children != null ? (
622
+ <div
623
+ {...stylex.props(
624
+ styles.stepContent,
625
+ hasIndicator &&
626
+ (isNumber
627
+ ? styles.stepContentWithNumber
628
+ : styles.stepContentWithIndicator),
629
+ )}>
630
+ {children}
631
+ </div>
632
+ ) : null;
633
+
634
+ // Theme data attributes reflect progress + optional semantic status.
635
+ const stepThemeProps = themeProps('step', {
636
+ progress,
637
+ status: status ?? undefined,
638
+ });
639
+
640
+ // ======= VERTICAL =======
641
+ if (isVertical) {
642
+ return (
643
+ <li
644
+ ref={ref}
645
+ {...mergeProps(
646
+ stepThemeProps,
647
+ stylex.props(styles.verticalRoot, xstyle),
648
+ className,
649
+ style,
650
+ )}
651
+ aria-current={isActive ? 'step' : undefined}
652
+ data-testid={dataTestId}
653
+ {...rest}>
654
+ {/* 4px progress bar */}
655
+ <div
656
+ {...mergeProps(
657
+ themeProps('step-bar'),
658
+ stylex.props(
659
+ styles.verticalBar,
660
+ statusBarStyle ??
661
+ (isBarFilled ? styles.barCompleted : styles.barIncomplete),
662
+ ),
663
+ )}
664
+ aria-hidden="true"
665
+ />
666
+ {/* Body: button wraps only label area, children render outside */}
667
+ <div {...stylex.props(styles.verticalBody)}>
668
+ {isClickable ? (
669
+ <button
670
+ type="button"
671
+ onClick={handleClick}
672
+ aria-label={`Go to step ${step + 1}: ${label}`}
673
+ {...stylex.props(
674
+ styles.buttonReset,
675
+ styles.focusRing,
676
+ density === 'compact' && styles.densityCompact,
677
+ density === 'balanced' && styles.densityBalanced,
678
+ density === 'spacious' && styles.densitySpacious,
679
+ )}>
680
+ {iconLabelNode}
681
+ {descriptionNode}
682
+ </button>
683
+ ) : (
684
+ <div
685
+ {...stylex.props(
686
+ density === 'compact' && styles.densityCompact,
687
+ density === 'balanced' && styles.densityBalanced,
688
+ density === 'spacious' && styles.densitySpacious,
689
+ )}>
690
+ {iconLabelNode}
691
+ {descriptionNode}
692
+ </div>
693
+ )}
694
+ {contentNode}
695
+ </div>
696
+ </li>
697
+ );
698
+ }
699
+
700
+ // ======= HORIZONTAL =======
701
+ return (
702
+ <li
703
+ ref={ref}
704
+ {...mergeProps(
705
+ stepThemeProps,
706
+ stylex.props(styles.horizontalStep, xstyle),
707
+ className,
708
+ style,
709
+ )}
710
+ aria-current={isActive ? 'step' : undefined}
711
+ data-testid={dataTestId}
712
+ {...rest}>
713
+ {/* 4px progress bar segment for this step */}
714
+ <div
715
+ {...mergeProps(
716
+ themeProps('step-bar'),
717
+ stylex.props(
718
+ styles.horizontalBar,
719
+ statusBarStyle ??
720
+ (isBarFilled ? styles.barCompleted : styles.barIncomplete),
721
+ ),
722
+ )}
723
+ aria-hidden="true"
724
+ />
725
+ {isClickable ? (
726
+ <button
727
+ type="button"
728
+ onClick={handleClick}
729
+ aria-label={`Go to step ${step + 1}: ${label}`}
730
+ {...stylex.props(
731
+ styles.buttonReset,
732
+ styles.focusRing,
733
+ density === 'compact' && styles.densityCompact,
734
+ density === 'balanced' && styles.densityBalanced,
735
+ density === 'spacious' && styles.densitySpacious,
736
+ )}>
737
+ {iconLabelNode}
738
+ {descriptionNode}
739
+ </button>
740
+ ) : (
741
+ <div
742
+ {...stylex.props(
743
+ density === 'compact' && styles.densityCompact,
744
+ density === 'balanced' && styles.densityBalanced,
745
+ density === 'spacious' && styles.densitySpacious,
746
+ )}>
747
+ {iconLabelNode}
748
+ {descriptionNode}
749
+ </div>
750
+ )}
751
+ {contentNode}
752
+ </li>
753
+ );
754
+ }
755
+
756
+ Step.displayName = 'Step';