@zendir/ui 0.4.1 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (391) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/README.md +640 -631
  3. package/dist/_virtual/_rolldown/runtime.js +13 -0
  4. package/dist/index.js +17 -221
  5. package/dist/react/3d/CesiumCaptureSource.d.ts +0 -1
  6. package/dist/react/3d/CesiumCaptureSource.js +364 -283
  7. package/dist/react/3d/CesiumCaptureSource.js.map +1 -1
  8. package/dist/react/3d/ZenSpace3D.d.ts +2 -3
  9. package/dist/react/3d/ZenSpace3D.js +1681 -1237
  10. package/dist/react/3d/ZenSpace3D.js.map +1 -1
  11. package/dist/react/3d/ZenSpace3DCesium.d.ts +0 -1
  12. package/dist/react/3d/ZenSpace3DCesium.js +513 -560
  13. package/dist/react/3d/ZenSpace3DCesium.js.map +1 -1
  14. package/dist/react/3d/ZenSpace3DShaders.js +61 -66
  15. package/dist/react/3d/ZenSpace3DShaders.js.map +1 -1
  16. package/dist/react/3d/ZenSpace3DTypes.d.ts +19 -20
  17. package/dist/react/3d/ZenSpace3DUtils.d.ts +0 -1
  18. package/dist/react/3d/ZenSpace3DUtils.js +37 -24
  19. package/dist/react/3d/ZenSpace3DUtils.js.map +1 -1
  20. package/dist/react/3d/capturePngAnalysis.js +42 -36
  21. package/dist/react/3d/capturePngAnalysis.js.map +1 -1
  22. package/dist/react/3d/index.d.ts +3 -3
  23. package/dist/react/3d/index.js +5 -53
  24. package/dist/react/3d/threeLoader.d.ts +1 -1
  25. package/dist/react/3d/threeLoader.js +23 -18
  26. package/dist/react/3d/threeLoader.js.map +1 -1
  27. package/dist/react/astro/ClassificationBanner.d.ts +2 -3
  28. package/dist/react/astro/ClassificationBanner.js +95 -79
  29. package/dist/react/astro/ClassificationBanner.js.map +1 -1
  30. package/dist/react/astro/GlobalStatusBar.d.ts +0 -1
  31. package/dist/react/astro/GlobalStatusBar.js +157 -163
  32. package/dist/react/astro/GlobalStatusBar.js.map +1 -1
  33. package/dist/react/astro/MissionClock.d.ts +7 -8
  34. package/dist/react/astro/MissionClock.js +377 -400
  35. package/dist/react/astro/MissionClock.js.map +1 -1
  36. package/dist/react/astro/MonitoringIcon.d.ts +1 -2
  37. package/dist/react/astro/MonitoringIcon.js +422 -358
  38. package/dist/react/astro/MonitoringIcon.js.map +1 -1
  39. package/dist/react/astro/Notification.d.ts +1 -2
  40. package/dist/react/astro/Notification.js +229 -126
  41. package/dist/react/astro/Notification.js.map +1 -1
  42. package/dist/react/astro/Progress.d.ts +0 -1
  43. package/dist/react/astro/Progress.js +199 -141
  44. package/dist/react/astro/Progress.js.map +1 -1
  45. package/dist/react/astro/SimulationControls.d.ts +3 -4
  46. package/dist/react/astro/SimulationControls.js +596 -650
  47. package/dist/react/astro/SimulationControls.js.map +1 -1
  48. package/dist/react/astro/StatusIndicator.d.ts +0 -1
  49. package/dist/react/astro/StatusIndicator.js +236 -170
  50. package/dist/react/astro/StatusIndicator.js.map +1 -1
  51. package/dist/react/astro/UnifiedTimeline.d.ts +9 -10
  52. package/dist/react/astro/UnifiedTimeline.js +2345 -2392
  53. package/dist/react/astro/UnifiedTimeline.js.map +1 -1
  54. package/dist/react/astro/index.d.ts +5 -5
  55. package/dist/react/astro/index.js +1 -25
  56. package/dist/react/cards/AccessCard.d.ts +0 -1
  57. package/dist/react/cards/AccessCard.js +471 -405
  58. package/dist/react/cards/AccessCard.js.map +1 -1
  59. package/dist/react/cards/OrbitCard.d.ts +0 -1
  60. package/dist/react/cards/OrbitCard.js +487 -364
  61. package/dist/react/cards/OrbitCard.js.map +1 -1
  62. package/dist/react/cards/SpacecraftCard.d.ts +0 -1
  63. package/dist/react/cards/SpacecraftCard.js +813 -925
  64. package/dist/react/cards/SpacecraftCard.js.map +1 -1
  65. package/dist/react/cards/TelemetryCard.d.ts +0 -1
  66. package/dist/react/cards/TelemetryCard.js +1055 -732
  67. package/dist/react/cards/TelemetryCard.js.map +1 -1
  68. package/dist/react/cards/TelemetryStreamCard.d.ts +0 -1
  69. package/dist/react/cards/TelemetryStreamCard.js +323 -297
  70. package/dist/react/cards/TelemetryStreamCard.js.map +1 -1
  71. package/dist/react/cards/index.d.ts +1 -1
  72. package/dist/react/cards/index.js +1 -8
  73. package/dist/react/charts/GroundTrackMap.d.ts +6 -7
  74. package/dist/react/charts/GroundTrackMap.js +1377 -1256
  75. package/dist/react/charts/GroundTrackMap.js.map +1 -1
  76. package/dist/react/charts/GroundTrackMapLeaflet.d.ts +1 -2
  77. package/dist/react/charts/GroundTrackMapLeaflet.js +1065 -987
  78. package/dist/react/charts/GroundTrackMapLeaflet.js.map +1 -1
  79. package/dist/react/charts/groundTrackMapLeafletTiles.js +34 -25
  80. package/dist/react/charts/groundTrackMapLeafletTiles.js.map +1 -1
  81. package/dist/react/charts/groundTrackMapLeafletUtils.js +70 -61
  82. package/dist/react/charts/groundTrackMapLeafletUtils.js.map +1 -1
  83. package/dist/react/charts/index.d.ts +1 -1
  84. package/dist/react/charts/index.js +7 -100
  85. package/dist/react/charts/unified/AstroChart.d.ts +1 -2
  86. package/dist/react/charts/unified/AstroChart.js +1331 -1411
  87. package/dist/react/charts/unified/AstroChart.js.map +1 -1
  88. package/dist/react/charts/unified/PowerOverviewChart.d.ts +3 -3
  89. package/dist/react/charts/unified/PowerOverviewChart.js +495 -478
  90. package/dist/react/charts/unified/PowerOverviewChart.js.map +1 -1
  91. package/dist/react/charts/unified/domain.d.ts +12 -13
  92. package/dist/react/charts/unified/domain.js +3999 -3145
  93. package/dist/react/charts/unified/domain.js.map +1 -1
  94. package/dist/react/charts/unified/generators.d.ts +3 -4
  95. package/dist/react/charts/unified/generators.js +561 -498
  96. package/dist/react/charts/unified/generators.js.map +1 -1
  97. package/dist/react/charts/unified/index.d.ts +1 -1
  98. package/dist/react/charts/unified/presets.d.ts +14 -15
  99. package/dist/react/charts/unified/presets.js +857 -994
  100. package/dist/react/charts/unified/presets.js.map +1 -1
  101. package/dist/react/charts/unified/sync.d.ts +2 -3
  102. package/dist/react/charts/unified/sync.js +229 -195
  103. package/dist/react/charts/unified/sync.js.map +1 -1
  104. package/dist/react/charts/unified/theme.d.ts +11 -12
  105. package/dist/react/charts/unified/theme.js +606 -642
  106. package/dist/react/charts/unified/theme.js.map +1 -1
  107. package/dist/react/charts/unified/types.d.ts +32 -33
  108. package/dist/react/charts/unified/useChartStream.d.ts +1 -2
  109. package/dist/react/charts/unified/useChartStream.js +203 -216
  110. package/dist/react/charts/unified/useChartStream.js.map +1 -1
  111. package/dist/react/chatgpt/AppCard.d.ts +1 -2
  112. package/dist/react/chatgpt/index.d.ts +7 -7
  113. package/dist/react/chatgpt/index.js +160 -139
  114. package/dist/react/chatgpt/index.js.map +1 -1
  115. package/dist/react/context/CategoryContext.d.ts +0 -1
  116. package/dist/react/context/CategoryContext.js +78 -29
  117. package/dist/react/context/CategoryContext.js.map +1 -1
  118. package/dist/react/context/DisplaySettingsContext.d.ts +1 -2
  119. package/dist/react/context/DisplaySettingsContext.js +205 -156
  120. package/dist/react/context/DisplaySettingsContext.js.map +1 -1
  121. package/dist/react/context/SpatialSelectionContext.d.ts +0 -1
  122. package/dist/react/context/SpatialSelectionContext.js +36 -7
  123. package/dist/react/context/SpatialSelectionContext.js.map +1 -1
  124. package/dist/react/core/data/DataTable.d.ts +3 -4
  125. package/dist/react/core/data/DataTable.js +473 -440
  126. package/dist/react/core/data/DataTable.js.map +1 -1
  127. package/dist/react/core/data/DataValue.d.ts +4 -5
  128. package/dist/react/core/data/DataValue.js +605 -538
  129. package/dist/react/core/data/DataValue.js.map +1 -1
  130. package/dist/react/core/data/propertyConfig.d.ts +1 -2
  131. package/dist/react/core/data/propertyConfig.js +446 -382
  132. package/dist/react/core/data/propertyConfig.js.map +1 -1
  133. package/dist/react/core/display/AstroIcon.d.ts +4 -5
  134. package/dist/react/core/display/AstroIcon.js +339 -429
  135. package/dist/react/core/display/AstroIcon.js.map +1 -1
  136. package/dist/react/core/display/Badge.d.ts +2 -3
  137. package/dist/react/core/display/Badge.js +131 -131
  138. package/dist/react/core/display/Badge.js.map +1 -1
  139. package/dist/react/core/display/CardHeader.d.ts +0 -1
  140. package/dist/react/core/display/CardHeader.js +398 -311
  141. package/dist/react/core/display/CardHeader.js.map +1 -1
  142. package/dist/react/core/display/Container.d.ts +2 -3
  143. package/dist/react/core/display/Container.js +640 -668
  144. package/dist/react/core/display/Container.js.map +1 -1
  145. package/dist/react/core/display/CopyButton.d.ts +1 -2
  146. package/dist/react/core/display/CopyButton.js +158 -101
  147. package/dist/react/core/display/CopyButton.js.map +1 -1
  148. package/dist/react/core/display/GlassCard.d.ts +3 -4
  149. package/dist/react/core/display/GlassCard.js +416 -369
  150. package/dist/react/core/display/GlassCard.js.map +1 -1
  151. package/dist/react/core/display/HeaderIconWithStatus.d.ts +0 -1
  152. package/dist/react/core/display/HeaderIconWithStatus.js +152 -152
  153. package/dist/react/core/display/HeaderIconWithStatus.js.map +1 -1
  154. package/dist/react/core/display/Icon.d.ts +2 -3
  155. package/dist/react/core/display/Icon.js +172 -143
  156. package/dist/react/core/display/Icon.js.map +1 -1
  157. package/dist/react/core/display/Typography.d.ts +24 -25
  158. package/dist/react/core/display/Typography.js +360 -178
  159. package/dist/react/core/display/Typography.js.map +1 -1
  160. package/dist/react/core/feedback/ConfirmDialog.d.ts +1 -2
  161. package/dist/react/core/feedback/ConfirmDialog.js +343 -304
  162. package/dist/react/core/feedback/ConfirmDialog.js.map +1 -1
  163. package/dist/react/core/feedback/Dialog.d.ts +2 -3
  164. package/dist/react/core/feedback/Dialog.js +189 -197
  165. package/dist/react/core/feedback/Dialog.js.map +1 -1
  166. package/dist/react/core/feedback/Toast.d.ts +2 -3
  167. package/dist/react/core/feedback/Toast.js +346 -207
  168. package/dist/react/core/feedback/Toast.js.map +1 -1
  169. package/dist/react/core/index.d.ts +26 -26
  170. package/dist/react/core/index.js +7 -119
  171. package/dist/react/core/inputs/Button.d.ts +2 -3
  172. package/dist/react/core/inputs/Button.js +281 -304
  173. package/dist/react/core/inputs/Button.js.map +1 -1
  174. package/dist/react/core/inputs/Checkbox.d.ts +2 -3
  175. package/dist/react/core/inputs/Checkbox.js +139 -127
  176. package/dist/react/core/inputs/Checkbox.js.map +1 -1
  177. package/dist/react/core/inputs/Input.d.ts +3 -4
  178. package/dist/react/core/inputs/Input.js +277 -285
  179. package/dist/react/core/inputs/Input.js.map +1 -1
  180. package/dist/react/core/inputs/LimitsBar.d.ts +1 -2
  181. package/dist/react/core/inputs/LimitsBar.js +271 -196
  182. package/dist/react/core/inputs/LimitsBar.js.map +1 -1
  183. package/dist/react/core/inputs/NumberInput.d.ts +2 -3
  184. package/dist/react/core/inputs/NumberInput.js +531 -503
  185. package/dist/react/core/inputs/NumberInput.js.map +1 -1
  186. package/dist/react/core/inputs/PinInput.d.ts +2 -3
  187. package/dist/react/core/inputs/PinInput.js +224 -207
  188. package/dist/react/core/inputs/PinInput.js.map +1 -1
  189. package/dist/react/core/inputs/Select.d.ts +1 -2
  190. package/dist/react/core/inputs/Select.js +298 -299
  191. package/dist/react/core/inputs/Select.js.map +1 -1
  192. package/dist/react/core/inputs/Toggle.d.ts +2 -3
  193. package/dist/react/core/inputs/Toggle.js +142 -148
  194. package/dist/react/core/inputs/Toggle.js.map +1 -1
  195. package/dist/react/core/layout/Box.d.ts +3 -4
  196. package/dist/react/core/layout/Box.js +118 -122
  197. package/dist/react/core/layout/Box.js.map +1 -1
  198. package/dist/react/core/layout/Center.d.ts +0 -1
  199. package/dist/react/core/layout/Center.js +45 -32
  200. package/dist/react/core/layout/Center.js.map +1 -1
  201. package/dist/react/core/layout/Divider.d.ts +1 -2
  202. package/dist/react/core/layout/Divider.js +112 -106
  203. package/dist/react/core/layout/Divider.js.map +1 -1
  204. package/dist/react/core/layout/Flex.d.ts +4 -5
  205. package/dist/react/core/layout/Flex.js +120 -124
  206. package/dist/react/core/layout/Flex.js.map +1 -1
  207. package/dist/react/core/layout/Grid.d.ts +5 -6
  208. package/dist/react/core/layout/Grid.js +131 -138
  209. package/dist/react/core/layout/Grid.js.map +1 -1
  210. package/dist/react/core/layout/Spacer.d.ts +0 -1
  211. package/dist/react/core/layout/Spacer.js +36 -29
  212. package/dist/react/core/layout/Spacer.js.map +1 -1
  213. package/dist/react/core/layout/Stack.d.ts +4 -5
  214. package/dist/react/core/layout/Stack.js +127 -70
  215. package/dist/react/core/layout/Stack.js.map +1 -1
  216. package/dist/react/core/layout/responsive.d.ts +1 -2
  217. package/dist/react/core/layout/responsive.js +25 -19
  218. package/dist/react/core/layout/responsive.js.map +1 -1
  219. package/dist/react/core/layout/useBreakpoint.d.ts +1 -1
  220. package/dist/react/core/layout/useBreakpoint.js +119 -66
  221. package/dist/react/core/layout/useBreakpoint.js.map +1 -1
  222. package/dist/react/core/navigation/AppBar.d.ts +1 -2
  223. package/dist/react/core/navigation/AppBar.js +827 -805
  224. package/dist/react/core/navigation/AppBar.js.map +1 -1
  225. package/dist/react/core/navigation/Pagination.d.ts +2 -3
  226. package/dist/react/core/navigation/Pagination.js +207 -187
  227. package/dist/react/core/navigation/Pagination.js.map +1 -1
  228. package/dist/react/core/navigation/SideNav.d.ts +11 -5
  229. package/dist/react/core/navigation/SideNav.js +857 -602
  230. package/dist/react/core/navigation/SideNav.js.map +1 -1
  231. package/dist/react/core/navigation/Tabs.d.ts +0 -1
  232. package/dist/react/core/navigation/Tabs.js +113 -119
  233. package/dist/react/core/navigation/Tabs.js.map +1 -1
  234. package/dist/react/core/overlays/Popover.d.ts +2 -3
  235. package/dist/react/core/overlays/Popover.js +303 -282
  236. package/dist/react/core/overlays/Popover.js.map +1 -1
  237. package/dist/react/core/overlays/SidePanel.d.ts +1 -2
  238. package/dist/react/core/overlays/SidePanel.js +217 -212
  239. package/dist/react/core/overlays/SidePanel.js.map +1 -1
  240. package/dist/react/core/overlays/Tooltip.d.ts +1 -2
  241. package/dist/react/core/overlays/Tooltip.js +170 -176
  242. package/dist/react/core/overlays/Tooltip.js.map +1 -1
  243. package/dist/react/core/widgets/ActivityPlanner.d.ts +0 -1
  244. package/dist/react/core/widgets/ActivityPlanner.js +855 -517
  245. package/dist/react/core/widgets/ActivityPlanner.js.map +1 -1
  246. package/dist/react/core/widgets/Capture.d.ts +2 -3
  247. package/dist/react/core/widgets/Capture.js +965 -779
  248. package/dist/react/core/widgets/Capture.js.map +1 -1
  249. package/dist/react/core/widgets/ChatPanel.d.ts +16 -17
  250. package/dist/react/core/widgets/ChatPanel.js +1734 -1034
  251. package/dist/react/core/widgets/ChatPanel.js.map +1 -1
  252. package/dist/react/core/widgets/ColorPickerPanel.d.ts +0 -1
  253. package/dist/react/core/widgets/ColorPickerPanel.js +298 -287
  254. package/dist/react/core/widgets/ColorPickerPanel.js.map +1 -1
  255. package/dist/react/core/widgets/CommandBuilder.d.ts +2 -3
  256. package/dist/react/core/widgets/CommandBuilder.js +624 -516
  257. package/dist/react/core/widgets/CommandBuilder.js.map +1 -1
  258. package/dist/react/core/widgets/ConnectionForm.d.ts +2 -3
  259. package/dist/react/core/widgets/ConnectionForm.js +528 -492
  260. package/dist/react/core/widgets/ConnectionForm.js.map +1 -1
  261. package/dist/react/core/widgets/FileExplorer.d.ts +3 -4
  262. package/dist/react/core/widgets/FileExplorer.js +617 -505
  263. package/dist/react/core/widgets/FileExplorer.js.map +1 -1
  264. package/dist/react/core/widgets/HexViewer.d.ts +2 -3
  265. package/dist/react/core/widgets/HexViewer.js +1353 -1091
  266. package/dist/react/core/widgets/HexViewer.js.map +1 -1
  267. package/dist/react/core/widgets/ImageFrame.d.ts +1 -2
  268. package/dist/react/core/widgets/ImageFrame.js +230 -193
  269. package/dist/react/core/widgets/ImageFrame.js.map +1 -1
  270. package/dist/react/core/widgets/ImageGallery.d.ts +2 -1
  271. package/dist/react/core/widgets/ImageGallery.js +380 -314
  272. package/dist/react/core/widgets/ImageGallery.js.map +1 -1
  273. package/dist/react/core/widgets/ImagePanel.d.ts +0 -1
  274. package/dist/react/core/widgets/ImagePanel.js +110 -101
  275. package/dist/react/core/widgets/ImagePanel.js.map +1 -1
  276. package/dist/react/core/widgets/LogViewer.d.ts +2 -3
  277. package/dist/react/core/widgets/LogViewer.js +711 -607
  278. package/dist/react/core/widgets/LogViewer.js.map +1 -1
  279. package/dist/react/core/widgets/MessageStream.d.ts +3 -4
  280. package/dist/react/core/widgets/MessageStream.js +514 -444
  281. package/dist/react/core/widgets/MessageStream.js.map +1 -1
  282. package/dist/react/core/widgets/MissionCalendar.d.ts +3 -4
  283. package/dist/react/core/widgets/MissionCalendar.js +1488 -1020
  284. package/dist/react/core/widgets/MissionCalendar.js.map +1 -1
  285. package/dist/react/core/widgets/PacketViewer.d.ts +2 -3
  286. package/dist/react/core/widgets/PacketViewer.js +550 -421
  287. package/dist/react/core/widgets/PacketViewer.js.map +1 -1
  288. package/dist/react/core/widgets/capture-placeholder.png.js +6 -5
  289. package/dist/react/core/widgets/capture-placeholder.png.js.map +1 -1
  290. package/dist/react/hooks/index.d.ts +5 -5
  291. package/dist/react/hooks/useAccessWindows.d.ts +0 -1
  292. package/dist/react/hooks/useCompactMode.d.ts +1 -1
  293. package/dist/react/hooks/useCompactMode.js +104 -58
  294. package/dist/react/hooks/useCompactMode.js.map +1 -1
  295. package/dist/react/hooks/useGroundTrackHistory.d.ts +0 -1
  296. package/dist/react/hooks/useSimulationScene.d.ts +1 -2
  297. package/dist/react/hooks/useSimulationScene.js +481 -374
  298. package/dist/react/hooks/useSimulationScene.js.map +1 -1
  299. package/dist/react/index.d.ts +3 -3
  300. package/dist/react/panels/LayerControlPanel.d.ts +1 -2
  301. package/dist/react/panels/LayerControlPanel.js +223 -180
  302. package/dist/react/panels/LayerControlPanel.js.map +1 -1
  303. package/dist/react/panels/ObjectInventoryPanel.d.ts +2 -3
  304. package/dist/react/panels/ObjectInventoryPanel.js +315 -250
  305. package/dist/react/panels/ObjectInventoryPanel.js.map +1 -1
  306. package/dist/react/panels/index.d.ts +1 -1
  307. package/dist/react/panels/index.js +1 -6
  308. package/dist/react/shared/ErrorBoundary.d.ts +1 -2
  309. package/dist/react/shared/ErrorBoundary.js +170 -139
  310. package/dist/react/shared/ErrorBoundary.js.map +1 -1
  311. package/dist/react/shared/Skeleton.d.ts +1 -2
  312. package/dist/react/shared/Skeleton.js +300 -301
  313. package/dist/react/shared/Skeleton.js.map +1 -1
  314. package/dist/react/theme/ThemeProvider.d.ts +2 -321
  315. package/dist/react/theme/ThemeProvider.js +312 -939
  316. package/dist/react/theme/ThemeProvider.js.map +1 -1
  317. package/dist/react/theme/cardAccent.d.ts +1 -2
  318. package/dist/react/theme/cardAccent.js +196 -126
  319. package/dist/react/theme/cardAccent.js.map +1 -1
  320. package/dist/react/theme/config.d.ts +0 -1
  321. package/dist/react/theme/config.js +47 -25
  322. package/dist/react/theme/config.js.map +1 -1
  323. package/dist/react/theme/index.d.ts +2 -2
  324. package/dist/react/theme/index.js +1 -16
  325. package/dist/react/theme/types.d.ts +332 -0
  326. package/dist/react/theme/types.js +39 -0
  327. package/dist/react/theme/types.js.map +1 -0
  328. package/dist/react/types.d.ts +8 -8
  329. package/dist/react/types.js +147 -47
  330. package/dist/react/types.js.map +1 -1
  331. package/dist/react/utils/categoryPalette.d.ts +0 -1
  332. package/dist/react/utils/categoryPalette.js +91 -102
  333. package/dist/react/utils/categoryPalette.js.map +1 -1
  334. package/dist/react/utils/index.d.ts +5 -5
  335. package/dist/react/utils/index.js +457 -371
  336. package/dist/react/utils/index.js.map +1 -1
  337. package/dist/react/visualizations/EclipseTimerCard.d.ts +0 -1
  338. package/dist/react/visualizations/LinkBudgetCard.d.ts +0 -1
  339. package/dist/react/visualizations/NavBallCard.d.ts +0 -1
  340. package/dist/react/visualizations/PropulsionCard.d.ts +1 -2
  341. package/dist/react/visualizations/SensorFootprintCard.d.ts +1 -2
  342. package/dist/react/visualizations/ThermalHeatmapCard.d.ts +0 -1
  343. package/dist/react/visualizations/index.d.ts +3 -3
  344. package/dist/react.d.ts +2 -1
  345. package/dist/react.js +17 -221
  346. package/dist/shaders/atmosphere.frag.js +6 -5
  347. package/dist/shaders/atmosphere.frag.js.map +1 -1
  348. package/dist/shaders/atmosphere.vert.js +6 -5
  349. package/dist/shaders/atmosphere.vert.js.map +1 -1
  350. package/dist/shaders/stars.frag.js +6 -5
  351. package/dist/shaders/stars.frag.js.map +1 -1
  352. package/dist/shaders/stars.vert.js +6 -5
  353. package/dist/shaders/stars.vert.js.map +1 -1
  354. package/dist/style.css +217 -194
  355. package/dist/tokens/core.d.ts +159 -0
  356. package/dist/tokens/core.js +144 -0
  357. package/dist/tokens/core.js.map +1 -0
  358. package/dist/tokens/css-vars.d.ts +213 -2
  359. package/dist/tokens/css-vars.js +590 -227
  360. package/dist/tokens/css-vars.js.map +1 -1
  361. package/dist/tokens/index.d.ts +31 -228
  362. package/dist/tokens/index.js +281 -366
  363. package/dist/tokens/index.js.map +1 -1
  364. package/dist/tokens/palettes/astro.d.ts +129 -0
  365. package/dist/tokens/palettes/astro.js +112 -0
  366. package/dist/tokens/palettes/astro.js.map +1 -0
  367. package/dist/tokens/palettes/index.d.ts +288 -0
  368. package/dist/tokens/palettes/index.js +35 -0
  369. package/dist/tokens/palettes/index.js.map +1 -0
  370. package/dist/tokens/palettes/tailwind.d.ts +324 -0
  371. package/dist/tokens/palettes/tailwind.js +201 -0
  372. package/dist/tokens/palettes/tailwind.js.map +1 -0
  373. package/dist/tokens/palettes/zendir.d.ts +126 -0
  374. package/dist/tokens/palettes/zendir.js +92 -0
  375. package/dist/tokens/palettes/zendir.js.map +1 -0
  376. package/dist/tokens/themes.d.ts +30 -0
  377. package/dist/tokens/themes.js +704 -0
  378. package/dist/tokens/themes.js.map +1 -0
  379. package/dist/tokens/tokens.css +419 -41
  380. package/dist/types/index.d.ts +2 -2
  381. package/package.json +310 -313
  382. package/dist/index.js.map +0 -1
  383. package/dist/react/3d/index.js.map +0 -1
  384. package/dist/react/astro/index.js.map +0 -1
  385. package/dist/react/cards/index.js.map +0 -1
  386. package/dist/react/charts/index.js.map +0 -1
  387. package/dist/react/core/index.js.map +0 -1
  388. package/dist/react/panels/index.js.map +0 -1
  389. package/dist/react/theme/astro-tokens.d.ts +0 -153
  390. package/dist/react/theme/index.js.map +0 -1
  391. package/dist/react.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"presets.js","sources":["../../../../src/react/charts/unified/presets.tsx"],"sourcesContent":["/**\n * @zendir/ui - Chart Presets\n * \n * Pre-configured chart components for common use cases.\n * Each preset wraps AstroChart with sensible defaults.\n */\n\nimport React, { forwardRef, memo } from 'react';\nimport { AstroChart, AstroChartHandle } from './AstroChart';\nimport type { AstroChartProps, SeriesData, AxisOptions } from './types';\nimport { STATUS_COLORS, ASTRO_DATA_VIZ_COLORS } from './theme';\nimport { useTheme } from '../../theme';\n\n// Medium-soft status colors (readable, not too pale)\nconst SOFT_STATUS_COLORS = {\n normal: '#6ed86e',\n caution: '#ffd54f',\n serious: '#ffa726',\n critical: '#e57373',\n off: '#90a4ae',\n standby: '#4fc3f7',\n};\n\n// =============================================================================\n// Shared Types\n// =============================================================================\n\ntype PresetProps = Omit<AstroChartProps, 'type'>;\n\n// =============================================================================\n// Line Chart\n// =============================================================================\n\nexport interface LineChartProps extends PresetProps {\n /** Enable smooth curves */\n smooth?: boolean;\n /** Show data points */\n showPoints?: boolean;\n /** Enable area fill */\n showArea?: boolean;\n}\n\nexport const LineChart = memo(forwardRef<AstroChartHandle, LineChartProps>(\n function LineChart({ smooth = true, showPoints = false, showArea = false, series = [], ...props }, ref) {\n const transformedSeries: SeriesData[] = series.map(s => ({\n ...s,\n type: showArea ? 'area' : 'line',\n smooth,\n symbol: showPoints ? { type: 'circle', size: 6 } : { type: 'none' },\n }));\n\n return (\n <AstroChart\n ref={ref}\n type={showArea ? 'area' : 'line'}\n series={transformedSeries}\n tooltip={{ trigger: 'axis', crosshair: 'x' }}\n {...props}\n />\n );\n }\n));\n\n// =============================================================================\n// Area Chart\n// =============================================================================\n\nexport interface AreaChartProps extends PresetProps {\n /** Stack areas */\n stacked?: boolean;\n /** Smooth curves */\n smooth?: boolean;\n}\n\nexport const AreaChart = memo(forwardRef<AstroChartHandle, AreaChartProps>(\n function AreaChart({ stacked = false, smooth = true, series = [], ...props }, ref) {\n const transformedSeries: SeriesData[] = series.map((s, _i) => ({\n ...s,\n type: 'area',\n smooth,\n stack: stacked ? 'total' : undefined,\n areaStyle: { opacity: stacked ? 0.8 : 0.3 },\n }));\n\n return (\n <AstroChart\n ref={ref}\n type=\"area\"\n series={transformedSeries}\n tooltip={{ trigger: 'axis', crosshair: 'x' }}\n {...props}\n />\n );\n }\n));\n\n// =============================================================================\n// Bar Chart\n// =============================================================================\n\nexport interface BarChartProps extends PresetProps {\n /** Stack bars */\n stacked?: boolean;\n /** Horizontal orientation */\n horizontal?: boolean;\n /** Bar category gap */\n categoryGap?: string;\n}\n\nexport const BarChart = memo(forwardRef<AstroChartHandle, BarChartProps>(\n function BarChart({ stacked = false, horizontal = false, series = [], xAxis, yAxis, ...props }, ref) {\n const transformedSeries: SeriesData[] = series.map(s => ({\n ...s,\n type: 'bar',\n stack: stacked ? 'total' : undefined,\n }));\n\n // Swap axes for horizontal\n const finalXAxis: AxisOptions = horizontal \n ? { type: 'value', ...(yAxis as AxisOptions) }\n : { type: 'category', ...xAxis };\n \n const finalYAxis: AxisOptions = horizontal\n ? { type: 'category', ...xAxis }\n : { type: 'value', ...(yAxis as AxisOptions) };\n\n return (\n <AstroChart\n ref={ref}\n type=\"bar\"\n series={transformedSeries}\n xAxis={finalXAxis}\n yAxis={finalYAxis}\n tooltip={{ trigger: 'axis' }}\n {...props}\n />\n );\n }\n));\n\n// =============================================================================\n// Scatter Chart\n// =============================================================================\n\nexport interface ScatterChartProps extends PresetProps {\n /** Symbol size */\n symbolSize?: number | ((value: number[]) => number);\n /** Show regression line */\n showRegression?: boolean;\n}\n\nexport const ScatterChart = memo(forwardRef<AstroChartHandle, ScatterChartProps>(\n function ScatterChart({ symbolSize = 10, series = [], ...props }, ref) {\n const transformedSeries: SeriesData[] = series.map(s => ({\n ...s,\n type: 'scatter',\n symbol: { \n type: 'circle', \n size: typeof symbolSize === 'number' ? symbolSize : 10,\n },\n }));\n\n return (\n <AstroChart\n ref={ref}\n type=\"scatter\"\n series={transformedSeries}\n tooltip={{ trigger: 'item' }}\n xAxis={{ type: 'value' }}\n yAxis={{ type: 'value' }}\n {...props}\n />\n );\n }\n));\n\n// =============================================================================\n// Pie Chart\n// =============================================================================\n\nexport interface PieChartProps extends Omit<PresetProps, 'xAxis' | 'yAxis' | 'zoom'> {\n /** Show as donut */\n donut?: boolean;\n /** Inner radius for donut (percentage) */\n innerRadius?: string;\n /** Outer radius (percentage) */\n outerRadius?: string;\n /** Show labels */\n showLabels?: boolean;\n /** Center content (for donut) */\n centerContent?: React.ReactNode;\n}\n\nexport const PieChart = memo(forwardRef<AstroChartHandle, PieChartProps>(\n function PieChart({ \n donut = false, \n innerRadius = '40%', \n outerRadius = '70%',\n showLabels = true,\n series = [],\n ...props \n }, ref) {\n const transformedSeries: SeriesData[] = series.map(s => ({\n ...s,\n type: donut ? 'donut' : 'pie',\n }));\n\n return (\n <AstroChart\n ref={ref}\n type={donut ? 'donut' : 'pie'}\n series={transformedSeries}\n tooltip={{ trigger: 'item' }}\n echartsOptions={{\n series: [{\n radius: donut ? [innerRadius, outerRadius] : outerRadius,\n label: {\n show: showLabels,\n formatter: '{b}: {d}%',\n },\n }],\n }}\n {...props}\n />\n );\n }\n));\n\n// =============================================================================\n// Donut Chart\n// =============================================================================\n\nexport const DonutChart = memo(forwardRef<AstroChartHandle, PieChartProps>(\n function DonutChart(props, ref) {\n return <PieChart ref={ref} donut {...props} />;\n }\n));\n\n// =============================================================================\n// Gauge Chart\n// =============================================================================\n\nexport interface GaugeChartProps extends Omit<PresetProps, 'xAxis' | 'yAxis' | 'zoom' | 'series'> {\n /** Current value */\n value: number;\n /** Minimum value */\n min?: number;\n /** Maximum value */\n max?: number;\n /** Unit label */\n unit?: string;\n /** Title label */\n label?: string;\n /** Threshold colors */\n thresholds?: {\n value: number;\n color: string;\n }[];\n /** Show progress arc */\n progress?: boolean;\n /** Show clock-style pointer (needle). Set false for arc + value only. */\n showPointer?: boolean;\n}\n\nexport const GaugeChart = memo(forwardRef<AstroChartHandle, GaugeChartProps>(\n function GaugeChart({ \n value, \n min = 0, \n max = 100, \n unit = '%',\n label,\n thresholds,\n progress = true,\n showPointer = true,\n width = 220,\n height = 220,\n ...props \n }, ref) {\n const { tokens } = useTheme();\n const range = max - min;\n const safeRange = range === 0 ? 1 : range;\n const clampedValue = Math.max(min, Math.min(max, value));\n const widthPx = typeof width === 'number' ? width : (typeof height === 'number' ? height : 220);\n const heightPx = typeof height === 'number' ? height : 220;\n const gaugeSize = Math.max(120, Math.min(widthPx, heightPx));\n const compactGauge = gaugeSize < 170;\n const arcWidth = Math.max(8, Math.round(gaugeSize * 0.07));\n const valueFontSize = Math.max(16, Math.round(gaugeSize * 0.15));\n const labelFontSize = Math.max(10, Math.round(gaugeSize * 0.07));\n const unitSuffix = unit?.trim() ?? '';\n const longUnit = unitSuffix.length > 4;\n\n const series: SeriesData[] = [{\n id: 'gauge',\n name: label || 'Value',\n type: 'gauge',\n data: [{ x: 0, y: clampedValue }],\n }];\n\n // Build color stops from thresholds\n const normalizedThresholds = [...(thresholds ?? [])]\n .filter((t) => Number.isFinite(t.value))\n .sort((a, b) => a.value - b.value);\n\n const colorStops = normalizedThresholds.map((t) => ([\n Math.max(0, Math.min(1, (t.value - min) / safeRange)),\n t.color,\n ] as [number, string]));\n\n if (colorStops.length === 0) {\n colorStops.push(\n [0.3, SOFT_STATUS_COLORS.normal],\n [0.7, SOFT_STATUS_COLORS.caution],\n [1, SOFT_STATUS_COLORS.critical],\n );\n } else if (colorStops[colorStops.length - 1][0] < 1) {\n colorStops.push([1, colorStops[colorStops.length - 1][1]]);\n }\n\n const activeColor = [...colorStops]\n .reverse()\n .find(([stop]) => stop <= (clampedValue - min) / safeRange)?.[1] ?? SOFT_STATUS_COLORS.normal;\n\n return (\n <AstroChart\n ref={ref}\n type=\"gauge\"\n series={series}\n width={width}\n height={height}\n echartsOptions={{\n series: [{\n type: 'gauge',\n min,\n max,\n progress: {\n show: progress,\n width: arcWidth,\n roundCap: true,\n },\n axisLine: {\n lineStyle: {\n width: arcWidth,\n color: colorStops,\n },\n },\n axisTick: { show: false },\n splitLine: { show: false },\n axisLabel: { show: false },\n pointer: {\n show: showPointer,\n length: compactGauge ? '56%' : '60%',\n width: Math.max(3, Math.round(arcWidth * 0.38)),\n },\n title: {\n show: !!label,\n offsetCenter: [0, compactGauge ? '73%' : '78%'],\n fontSize: labelFontSize,\n color: tokens.colors.text.secondary,\n },\n detail: {\n valueAnimation: true,\n formatter: (currentValue: number) => {\n const rounded = Math.round(currentValue);\n if (!unitSuffix) return `${rounded}`;\n if (longUnit) return `${rounded}\\n{unit|${unitSuffix}}`;\n return `${rounded}${unitSuffix}`;\n },\n rich: {\n unit: {\n color: tokens.colors.text.secondary,\n fontSize: Math.max(10, Math.round(valueFontSize * 0.48)),\n fontWeight: 500,\n lineHeight: Math.round(valueFontSize * 0.78),\n },\n },\n lineHeight: Math.round(valueFontSize * 1.05),\n fontSize: valueFontSize,\n fontWeight: 700,\n offsetCenter: [0, compactGauge ? '10%' : '14%'],\n color: activeColor,\n },\n data: [{ value: clampedValue, name: label }],\n }],\n }}\n {...props}\n />\n );\n }\n));\n\n// =============================================================================\n// Radar Chart\n// =============================================================================\n\nexport interface RadarChartProps extends Omit<PresetProps, 'xAxis' | 'yAxis' | 'zoom'> {\n /** Indicator definitions */\n indicators: {\n name: string;\n max: number;\n min?: number;\n }[];\n /** Fill area */\n areaStyle?: boolean;\n}\n\nexport const RadarChart = memo(forwardRef<AstroChartHandle, RadarChartProps>(\n function RadarChart({ indicators, areaStyle = true, series = [], ...props }, ref) {\n // Extract values from data - support both [{x,y}] and [number] formats\n const extractValues = (data: unknown[]): number[] => {\n if (!data || data.length === 0) return [];\n const first = data[0];\n if (typeof first === 'number') return data as number[];\n if (typeof first === 'object' && first !== null && 'y' in first) {\n return (data as Array<{ y: number }>).map(d => d.y);\n }\n return [];\n };\n\n return (\n <AstroChart\n ref={ref}\n type=\"radar\"\n series={[]} // Empty - we provide series via echartsOptions\n tooltip={{ trigger: 'item' }}\n echartsOptions={{\n radar: {\n indicator: indicators,\n shape: 'polygon',\n },\n series: series.map(s => ({\n type: 'radar',\n name: s.name,\n data: [{\n value: extractValues(s.data as unknown[]),\n name: s.name,\n }],\n areaStyle: areaStyle ? { opacity: 0.3 } : undefined,\n })),\n }}\n {...props}\n />\n );\n }\n));\n\n// =============================================================================\n// Heatmap Chart\n// =============================================================================\n\nexport interface HeatmapChartProps extends PresetProps {\n /** X-axis categories */\n xCategories: string[];\n /** Y-axis categories */\n yCategories: string[];\n /** Value range */\n valueRange?: [number, number];\n /** Show value labels */\n showLabels?: boolean;\n}\n\nexport const HeatmapChart = memo(forwardRef<AstroChartHandle, HeatmapChartProps>(\n function HeatmapChart({ \n xCategories, \n yCategories, \n valueRange = [0, 100],\n showLabels = true,\n series = [], \n ...props \n }, ref) {\n // Transform data to heatmap format if needed\n const heatmapData = series[0]?.data as unknown[];\n \n return (\n <AstroChart\n ref={ref}\n type=\"heatmap\"\n series={series}\n xAxis={{ type: 'category' }}\n yAxis={{ type: 'category' }}\n tooltip={{ trigger: 'item' }}\n echartsOptions={{\n xAxis: { data: xCategories },\n yAxis: { data: yCategories },\n visualMap: {\n min: valueRange[0],\n max: valueRange[1],\n calculable: true,\n orient: 'horizontal',\n left: 'center',\n bottom: '5%',\n },\n series: [{\n type: 'heatmap',\n data: heatmapData as [number, number, number][],\n label: {\n show: showLabels,\n },\n emphasis: {\n itemStyle: {\n shadowBlur: 10,\n shadowColor: 'rgba(0, 0, 0, 0.5)',\n },\n },\n }],\n }}\n {...props}\n />\n );\n }\n));\n\n// =============================================================================\n// Time Series Chart (optimized for streaming data)\n// =============================================================================\n\nexport interface TimeSeriesChartProps extends PresetProps {\n /** Time window in milliseconds */\n timeWindow?: number;\n /** Maximum data points */\n maxPoints?: number;\n /** Auto-scroll to latest data */\n autoScroll?: boolean;\n /** Show current values */\n showCurrentValues?: boolean;\n}\n\nexport const TimeSeriesChart = memo(forwardRef<AstroChartHandle, TimeSeriesChartProps>(\n function TimeSeriesChart({ \n timeWindow,\n maxPoints = 1000,\n autoScroll = true,\n showCurrentValues: _showCurrentValues = true,\n series = [],\n ...props \n }, ref) {\n const xAxis: AxisOptions = {\n type: 'time',\n ...(timeWindow ? {\n min: 'dataMin',\n max: 'dataMax',\n } : {}),\n };\n\n return (\n <AstroChart\n ref={ref}\n type=\"line\"\n series={series.map(s => ({\n ...s,\n smooth: true,\n symbol: { type: 'none' },\n }))}\n xAxis={xAxis}\n tooltip={{ \n trigger: 'axis', \n crosshair: 'x',\n }}\n zoom={autoScroll ? undefined : {\n enabled: true,\n type: 'both',\n axis: 'x',\n }}\n realTime={{\n enabled: true,\n maxPoints,\n timeWindow,\n shift: autoScroll,\n }}\n {...props}\n />\n );\n }\n));\n\n// =============================================================================\n// Dual Axis Chart\n// =============================================================================\n\nexport interface DualAxisChartProps extends PresetProps {\n /** Left Y-axis options */\n leftAxis?: AxisOptions;\n /** Right Y-axis options */\n rightAxis?: AxisOptions;\n}\n\nexport const DualAxisChart = memo(forwardRef<AstroChartHandle, DualAxisChartProps>(\n function DualAxisChart({ leftAxis, rightAxis, series = [], ...props }, ref) {\n // Assign series to axes based on yAxisIndex\n const transformedSeries: SeriesData[] = series.map((s, i) => ({\n ...s,\n yAxisIndex: s.yAxisIndex ?? (i % 2), // Alternate by default\n }));\n\n return (\n <AstroChart\n ref={ref}\n type=\"line\"\n series={transformedSeries}\n yAxis={[\n { position: 'left', ...leftAxis },\n { position: 'right', ...rightAxis },\n ]}\n tooltip={{ trigger: 'axis', crosshair: 'x' }}\n {...props}\n />\n );\n }\n));\n\n// =============================================================================\n// Stacked Area Chart\n// =============================================================================\n\nexport const StackedAreaChart = memo(forwardRef<AstroChartHandle, AreaChartProps>(\n function StackedAreaChart(props, ref) {\n return <AreaChart ref={ref} stacked {...props} />;\n }\n));\n\n// =============================================================================\n// Stacked Bar Chart\n// =============================================================================\n\nexport const StackedBarChart = memo(forwardRef<AstroChartHandle, BarChartProps>(\n function StackedBarChart(props, ref) {\n return <BarChart ref={ref} stacked {...props} />;\n }\n));\n\n// =============================================================================\n// Bubble Chart (AstroUXD compliant)\n// =============================================================================\n\nexport interface BubbleChartProps extends PresetProps {\n /** Min bubble size (px) */\n minSize?: number;\n /** Max bubble size (px) */\n maxSize?: number;\n /** Show size legend */\n showSizeLegend?: boolean;\n}\n\nexport const BubbleChart = memo(forwardRef<AstroChartHandle, BubbleChartProps>(\n function BubbleChart({ \n minSize = 10, \n maxSize = 60, \n showSizeLegend = true,\n series = [], \n ...props \n }, ref) {\n // Transform series for bubble (scatter with symbolSize)\n const transformedSeries: SeriesData[] = series.map(s => ({\n ...s,\n type: 'scatter' as const,\n }));\n\n return (\n <AstroChart\n ref={ref}\n type=\"scatter\"\n series={transformedSeries}\n tooltip={{ trigger: 'item' }}\n echartsOptions={{\n series: series.map((s, _idx) => {\n const data = s.data as Array<{ x: number; y: number; size?: number; label?: string } | [number, number, number]>;\n return {\n type: 'scatter',\n name: s.name,\n data: data.map(d => {\n if (Array.isArray(d)) return d;\n return [d.x, d.y, (d as { size?: number }).size ?? 10];\n }),\n symbolSize: (val: number[]) => {\n const size = val[2] ?? minSize;\n return Math.max(minSize, Math.min(maxSize, size));\n },\n };\n }),\n visualMap: showSizeLegend ? {\n show: true,\n dimension: 2,\n min: 0,\n max: 100,\n inRange: { symbolSize: [minSize, maxSize] },\n right: 10,\n top: 'center',\n } : undefined,\n }}\n {...props}\n />\n );\n }\n));\n\n// =============================================================================\n// Histogram Chart (AstroUXD compliant)\n// =============================================================================\n\nexport interface HistogramChartProps extends PresetProps {\n /** Number of bins (auto if not specified) */\n bins?: number;\n /** Show distribution curve overlay */\n showCurve?: boolean;\n}\n\nexport const HistogramChart = memo(forwardRef<AstroChartHandle, HistogramChartProps>(\n function HistogramChart({ \n bins: _bins = 20, \n showCurve: _showCurve = false,\n series = [], \n xAxis,\n ...props \n }, ref) {\n // Transform data into histogram bins\n const transformedSeries: SeriesData[] = series.map(s => ({\n ...s,\n type: 'bar' as const,\n }));\n\n return (\n <AstroChart\n ref={ref}\n type=\"bar\"\n series={transformedSeries}\n xAxis={{ type: 'category', ...xAxis }}\n yAxis={{ type: 'value', name: 'Frequency' }}\n tooltip={{ trigger: 'axis' }}\n echartsOptions={{\n series: series.map(s => ({\n type: 'bar',\n name: s.name,\n data: s.data,\n barWidth: '90%',\n itemStyle: { borderRadius: [2, 2, 0, 0] },\n })) as import('echarts').SeriesOption[],\n }}\n {...props}\n />\n );\n }\n));\n\n// =============================================================================\n// Sankey Diagram (Power/Data Flow)\n// =============================================================================\n\nexport interface SankeyChartProps extends Omit<PresetProps, 'series'> {\n /** Node definitions */\n nodes: { name: string; itemStyle?: { color?: string } }[];\n /** Link definitions */\n links: { source: string; target: string; value: number }[];\n /** Orient vertical or horizontal */\n orient?: 'horizontal' | 'vertical';\n}\n\nexport const SankeyChart = memo(forwardRef<AstroChartHandle, SankeyChartProps>(\n function SankeyChart({ \n nodes = [], \n links = [], \n orient = 'horizontal',\n ...props \n }, ref) {\n const { tokens } = useTheme();\n\n return (\n <AstroChart\n ref={ref}\n type=\"sankey\"\n series={[]}\n echartsOptions={{\n tooltip: {\n trigger: 'item',\n triggerOn: 'mousemove',\n },\n series: [{\n type: 'sankey',\n orient,\n layoutIterations: 32,\n emphasis: { focus: 'adjacency' },\n nodeAlign: 'justify',\n lineStyle: { color: 'gradient', curveness: 0.5 },\n data: nodes,\n links,\n label: {\n color: tokens.colors.text.primary,\n fontSize: 12,\n },\n }],\n }}\n {...props}\n />\n );\n }\n));\n\n// =============================================================================\n// Treemap (Storage/Allocation Visualization)\n// AstroUXDS compliant hierarchical visualization\n// =============================================================================\n\nexport interface TreemapDataNode {\n name: string;\n value?: number;\n children?: TreemapDataNode[];\n itemStyle?: { color?: string };\n}\n\nexport interface TreemapChartProps extends Omit<PresetProps, 'series'> {\n /** Hierarchical data */\n data: TreemapDataNode[];\n /** Show breadcrumb navigation */\n showBreadcrumb?: boolean;\n /** Leaf depth to show */\n leafDepth?: number;\n}\n\nexport const TreemapChart = memo(forwardRef<AstroChartHandle, TreemapChartProps>(\n function TreemapChart({ \n data = [], \n showBreadcrumb = true,\n leafDepth = 2,\n ...props \n }, ref) {\n const { tokens } = useTheme();\n\n return (\n <AstroChart\n ref={ref}\n type=\"treemap\"\n series={[]}\n echartsOptions={{\n tooltip: {\n formatter: ((info: any) => {\n const value = info.value;\n const name = info.name;\n return `${name}: ${typeof value === 'number' ? value.toLocaleString() : value}`;\n }) as unknown as string,\n },\n series: [{\n type: 'treemap',\n data,\n leafDepth,\n roam: false,\n // AstroUXDS compliant breadcrumb navigation\n breadcrumb: {\n show: showBreadcrumb,\n bottom: 10,\n itemStyle: { color: 'rgba(100, 116, 139, 0.6)' }, // Subtle grey\n },\n label: {\n show: true,\n formatter: '{b}',\n color: tokens.colors.text.primary,\n fontSize: 12,\n },\n upperLabel: {\n show: true,\n height: 30,\n color: tokens.colors.text.secondary,\n },\n // AstroUXDS compliant borders - subtle grey\n itemStyle: {\n borderColor: 'rgba(100, 116, 139, 0.2)',\n borderWidth: 2,\n gapWidth: 2,\n },\n levels: [\n {\n itemStyle: { borderColor: 'rgba(100, 116, 139, 0.3)', borderWidth: 4, gapWidth: 4 },\n upperLabel: { show: false },\n },\n {\n itemStyle: { borderColor: 'rgba(100, 116, 139, 0.25)', borderWidth: 2, gapWidth: 2 },\n emphasis: { itemStyle: { borderColor: ASTRO_DATA_VIZ_COLORS.mixed[0] } }, // Zendir Electric on hover\n },\n {\n colorSaturation: [0.35, 0.5],\n itemStyle: { borderColor: 'rgba(62, 60, 255, 0.3)', borderWidth: 1 }, // Zendir Electric subtle\n },\n ],\n }],\n }}\n {...props}\n />\n );\n }\n));\n\n// =============================================================================\n// Sunburst Chart (Hierarchical Status)\n// =============================================================================\n\nexport interface SunburstDataNode {\n name: string;\n value?: number;\n children?: SunburstDataNode[];\n itemStyle?: { color?: string };\n}\n\nexport interface SunburstChartProps extends Omit<PresetProps, 'series'> {\n /** Hierarchical data */\n data: SunburstDataNode[];\n /** Inner radius (percentage or pixels) */\n innerRadius?: string | number;\n /** Outer radius (percentage or pixels) */\n outerRadius?: string | number;\n}\n\nexport const SunburstChart = memo(forwardRef<AstroChartHandle, SunburstChartProps>(\n function SunburstChart({ \n data = [], \n innerRadius = '15%',\n outerRadius = '80%',\n ...props \n }, ref) {\n const { tokens } = useTheme();\n\n return (\n <AstroChart\n ref={ref}\n type=\"sunburst\"\n series={[]}\n echartsOptions={{\n tooltip: {\n trigger: 'item',\n },\n // Zendir-branded sunburst visualization\n series: [{\n type: 'sunburst',\n data,\n radius: [innerRadius, outerRadius],\n emphasis: { focus: 'ancestor' },\n label: {\n rotate: 'radial',\n color: tokens.colors.text.secondary,\n fontSize: 11,\n },\n itemStyle: {\n borderRadius: 4,\n borderWidth: 2,\n borderColor: 'rgba(62, 60, 255, 0.25)', // Zendir Electric subtle border\n },\n levels: [\n {},\n { r0: '15%', r: '40%', label: { rotate: 'tangential' } },\n { r0: '40%', r: '65%' },\n { r0: '65%', r: '80%', label: { position: 'outside', fontSize: 10 } },\n ],\n }],\n }}\n {...props}\n />\n );\n }\n));\n\n// =============================================================================\n// Parallel Coordinates (Multi-Parameter Analysis)\n// =============================================================================\n\nexport interface ParallelAxisDef {\n dim: number;\n name: string;\n min?: number;\n max?: number;\n type?: 'value' | 'category';\n data?: string[];\n}\n\nexport interface ParallelChartProps extends Omit<PresetProps, 'series'> {\n /** Axis definitions */\n axes: ParallelAxisDef[];\n /** Data rows (each row is values for each axis) */\n data: (number | string)[][];\n /** Line style */\n lineStyle?: { opacity?: number; width?: number };\n}\n\nexport const ParallelChart = memo(forwardRef<AstroChartHandle, ParallelChartProps>(\n function ParallelChart({ \n axes = [], \n data = [],\n lineStyle = { opacity: 0.5, width: 1.5 },\n ...props \n }, ref) {\n const { tokens } = useTheme();\n\n return (\n <AstroChart\n ref={ref}\n type=\"line\"\n series={[]}\n // AstroUXDS compliant parallel coordinates\n echartsOptions={{\n parallelAxis: axes.map(axis => ({\n dim: axis.dim,\n name: axis.name,\n min: axis.min,\n max: axis.max,\n type: axis.type || 'value',\n data: axis.data,\n nameTextStyle: { color: tokens.colors.text.secondary },\n axisLine: { lineStyle: { color: 'rgba(100, 116, 139, 0.3)' } },\n axisTick: { lineStyle: { color: 'rgba(100, 116, 139, 0.3)' } },\n axisLabel: { color: tokens.colors.text.tertiary },\n })),\n parallel: {\n left: 60,\n right: 60,\n bottom: 60,\n top: 60,\n parallelAxisDefault: {\n type: 'value',\n nameLocation: 'end',\n nameGap: 20,\n axisLine: { lineStyle: { color: 'rgba(100, 116, 139, 0.3)' } },\n axisTick: { lineStyle: { color: 'rgba(100, 116, 139, 0.3)' } },\n splitLine: { show: false },\n axisLabel: { color: tokens.colors.text.tertiary },\n },\n },\n series: [{\n type: 'parallel',\n lineStyle: {\n ...lineStyle,\n color: ASTRO_DATA_VIZ_COLORS.mixed[0], // Zendir Electric\n },\n data: data.map(row => ({ value: row })),\n emphasis: {\n lineStyle: { width: 3, opacity: 1 },\n },\n }],\n }}\n {...props}\n />\n );\n }\n));\n\n// =============================================================================\n// Candlestick Chart (Financial/Orbital Maneuver Windows)\n// =============================================================================\n\nexport interface CandlestickDataPoint {\n time: number | string;\n open: number;\n close: number;\n low: number;\n high: number;\n}\n\nexport interface CandlestickChartProps extends Omit<PresetProps, 'series'> {\n /** OHLC data */\n data: CandlestickDataPoint[];\n /** Show volume bars */\n showVolume?: boolean;\n}\n\nexport const CandlestickChart = memo(forwardRef<AstroChartHandle, CandlestickChartProps>(\n function CandlestickChart({ \n data = [],\n showVolume: _showVolume = false,\n ...props \n }, ref) {\n const { tokens } = useTheme();\n const categoryData = data.map(d => d.time);\n const ohlcData = data.map(d => [d.open, d.close, d.low, d.high]);\n\n return (\n <AstroChart\n ref={ref}\n type=\"candlestick\"\n series={[]}\n // Candlestick uses AstroUXDS status colors for semantic meaning\n // Green (normal) = bullish/up, Red (critical) = bearish/down\n echartsOptions={{\n tooltip: {\n trigger: 'axis',\n axisPointer: { type: 'cross' },\n },\n xAxis: {\n type: 'category',\n data: categoryData,\n axisLine: { lineStyle: { color: 'rgba(100, 116, 139, 0.3)' } },\n axisLabel: { color: tokens.colors.text.secondary },\n },\n yAxis: {\n type: 'value',\n scale: true,\n splitLine: { lineStyle: { color: 'rgba(100, 116, 139, 0.15)' } },\n axisLine: { lineStyle: { color: 'rgba(100, 116, 139, 0.3)' } },\n axisLabel: { color: tokens.colors.text.secondary },\n },\n series: [{\n type: 'candlestick',\n data: ohlcData,\n itemStyle: {\n color: SOFT_STATUS_COLORS.normal, // AstroUXDS green (up/bullish)\n color0: SOFT_STATUS_COLORS.critical, // AstroUXDS red (down/bearish)\n borderColor: SOFT_STATUS_COLORS.normal,\n borderColor0: SOFT_STATUS_COLORS.critical,\n },\n }],\n dataZoom: [\n { type: 'inside', start: 0, end: 100 },\n { show: true, type: 'slider', bottom: 10 },\n ],\n }}\n {...props}\n />\n );\n }\n));\n\n// =============================================================================\n// Graph/Network Chart (Subsystem Dependencies)\n// =============================================================================\n\nexport interface GraphNode {\n id: string;\n name: string;\n value?: number;\n category?: number;\n symbolSize?: number;\n x?: number;\n y?: number;\n itemStyle?: { color?: string };\n}\n\nexport interface GraphLink {\n source: string;\n target: string;\n value?: number;\n lineStyle?: { width?: number; color?: string };\n}\n\nexport interface GraphCategory {\n name: string;\n itemStyle?: { color?: string };\n}\n\nexport interface GraphChartProps extends Omit<PresetProps, 'series'> {\n /** Node definitions */\n nodes: GraphNode[];\n /** Link definitions */\n links: GraphLink[];\n /** Category definitions */\n categories?: GraphCategory[];\n /** Layout type */\n layout?: 'force' | 'circular' | 'none';\n}\n\nexport const GraphChart = memo(forwardRef<AstroChartHandle, GraphChartProps>(\n function GraphChart({ \n nodes = [], \n links = [],\n categories = [],\n layout = 'force',\n ...props \n }, ref) {\n const { tokens } = useTheme();\n\n return (\n <AstroChart\n ref={ref}\n type=\"scatter\"\n series={[]}\n // Zendir-branded network/graph visualization\n echartsOptions={{\n tooltip: {},\n legend: categories.length > 0 ? {\n data: categories.map(c => c.name),\n textStyle: { color: tokens.colors.text.primary },\n } : undefined,\n series: [{\n type: 'graph',\n layout,\n data: nodes.map(n => ({\n ...n,\n symbolSize: n.symbolSize || 30,\n })),\n links,\n categories,\n roam: true,\n label: {\n show: true,\n position: 'right',\n formatter: '{b}',\n color: tokens.colors.text.primary,\n fontSize: 11,\n },\n lineStyle: {\n color: 'source',\n curveness: 0.3,\n opacity: 0.6,\n },\n emphasis: {\n focus: 'adjacency',\n lineStyle: { width: 3 },\n },\n force: layout === 'force' ? {\n repulsion: 200,\n edgeLength: [50, 150],\n gravity: 0.1,\n } : undefined,\n }],\n }}\n {...props}\n />\n );\n }\n));\n\n// =============================================================================\n// Box Plot Chart\n// =============================================================================\n\nexport interface BoxPlotDataPoint {\n /** Category name (x-axis label) */\n name: string;\n /** Raw data values for computing boxplot statistics */\n values: number[];\n}\n\nexport interface BoxPlotChartProps extends Omit<PresetProps, 'series'> {\n /** Box plot data - each item contains a category name and array of values */\n data: BoxPlotDataPoint[];\n /** Show outliers as scatter points */\n showOutliers?: boolean;\n /** Custom colors for each box (uses theme palette if not provided) */\n colors?: string[];\n /** Horizontal orientation (default is vertical) */\n horizontal?: boolean;\n}\n\n/**\n * Calculate boxplot statistics from raw values\n */\nfunction calculateBoxplotStats(values: number[]): [number, number, number, number, number] {\n const sorted = [...values].sort((a, b) => a - b);\n const n = sorted.length;\n \n const min = sorted[0];\n const max = sorted[n - 1];\n const median = n % 2 === 0 \n ? (sorted[n / 2 - 1] + sorted[n / 2]) / 2 \n : sorted[Math.floor(n / 2)];\n \n const q1Index = Math.floor(n * 0.25);\n const q3Index = Math.floor(n * 0.75);\n const q1 = sorted[q1Index];\n const q3 = sorted[q3Index];\n \n // IQR-based whiskers\n const iqr = q3 - q1;\n const lowerWhisker = Math.max(min, q1 - 1.5 * iqr);\n const upperWhisker = Math.min(max, q3 + 1.5 * iqr);\n \n return [lowerWhisker, q1, median, q3, upperWhisker];\n}\n\n/**\n * BoxPlotChart - Statistical distribution visualization\n * \n * Shows distribution of data through quartiles (box) and whiskers (range).\n * Uses theme-aware colors from the data visualization palette.\n * \n * @example\n * ```tsx\n * <BoxPlotChart\n * title=\"Score Distribution\"\n * data={[\n * { name: 'Team A', values: [65, 72, 84, 91, 55, 88, 76] },\n * { name: 'Team B', values: [78, 82, 95, 88, 70, 92, 85] },\n * ]}\n * />\n * ```\n */\nexport const BoxPlotChart = memo(forwardRef<AstroChartHandle, BoxPlotChartProps>(\n function BoxPlotChart({ \n data = [],\n showOutliers = true,\n colors,\n horizontal = false,\n ...props \n }, ref) {\n const { tokens } = useTheme();\n\n // Calculate boxplot statistics for each category\n const categories = data.map(d => d.name);\n const boxplotData = data.map((d, index) => {\n const stats = calculateBoxplotStats(d.values);\n return {\n value: stats,\n itemStyle: colors?.[index] ? { \n color: colors[index],\n borderColor: colors[index],\n } : undefined,\n };\n });\n \n // Find outliers for each category\n const outliers: Array<[number, number]> = [];\n if (showOutliers) {\n data.forEach((d, catIndex) => {\n const sorted = [...d.values].sort((a, b) => a - b);\n const n = sorted.length;\n const q1Index = Math.floor(n * 0.25);\n const q3Index = Math.floor(n * 0.75);\n const q1 = sorted[q1Index];\n const q3 = sorted[q3Index];\n const iqr = q3 - q1;\n const lowerBound = q1 - 1.5 * iqr;\n const upperBound = q3 + 1.5 * iqr;\n \n d.values.forEach(v => {\n if (v < lowerBound || v > upperBound) {\n outliers.push([catIndex, v]);\n }\n });\n });\n }\n\n const categoryAxis = {\n type: 'category' as const,\n data: categories,\n boundaryGap: true,\n axisLine: { lineStyle: { color: 'rgba(100, 116, 139, 0.3)' } },\n axisLabel: { color: tokens.colors.text.secondary, fontSize: 12 },\n splitArea: { show: false },\n };\n \n const valueAxis = {\n type: 'value' as const,\n splitLine: { lineStyle: { color: 'rgba(100, 116, 139, 0.15)' } },\n axisLine: { lineStyle: { color: 'rgba(100, 116, 139, 0.3)' } },\n axisLabel: { color: tokens.colors.text.secondary },\n };\n\n return (\n <AstroChart\n ref={ref}\n type=\"boxplot\"\n series={[]}\n echartsOptions={{\n tooltip: {\n trigger: 'item',\n axisPointer: { type: 'shadow' },\n formatter: (params: any) => {\n if (params.seriesType === 'boxplot') {\n const value = params.value;\n return `\n <div style=\"font-weight: 600; margin-bottom: 4px;\">${params.name}</div>\n <div>Upper: ${value[5]?.toFixed(1) ?? value[4]?.toFixed(1)}</div>\n <div>Q3: ${value[4]?.toFixed(1) ?? value[3]?.toFixed(1)}</div>\n <div>Median: ${value[3]?.toFixed(1) ?? value[2]?.toFixed(1)}</div>\n <div>Q1: ${value[2]?.toFixed(1) ?? value[1]?.toFixed(1)}</div>\n <div>Lower: ${value[1]?.toFixed(1) ?? value[0]?.toFixed(1)}</div>\n `;\n }\n return `Outlier: ${params.value[1]}`;\n },\n },\n grid: {\n left: '10%',\n right: '10%',\n bottom: '15%',\n top: '15%',\n },\n xAxis: horizontal ? valueAxis : categoryAxis,\n yAxis: horizontal ? categoryAxis : valueAxis,\n series: [\n {\n name: 'boxplot',\n type: 'boxplot' as const,\n data: boxplotData,\n itemStyle: {\n borderWidth: 2,\n },\n emphasis: {\n itemStyle: {\n borderWidth: 3,\n },\n },\n },\n ...(showOutliers && outliers.length > 0 ? [{\n name: 'outlier',\n type: 'scatter' as const,\n data: outliers,\n symbolSize: 8,\n itemStyle: {\n color: SOFT_STATUS_COLORS.caution,\n },\n }] : []),\n ],\n }}\n {...props}\n />\n );\n }\n));\n"],"names":["LineChart","AreaChart","BarChart","ScatterChart","PieChart","DonutChart","GaugeChart","RadarChart","HeatmapChart","TimeSeriesChart","DualAxisChart","StackedAreaChart","StackedBarChart","BubbleChart","HistogramChart","SankeyChart","TreemapChart","SunburstChart","ParallelChart","CandlestickChart","GraphChart","BoxPlotChart"],"mappings":"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"}
1
+ {"version":3,"file":"presets.js","names":[],"sources":["../../../../src/react/charts/unified/presets.tsx"],"sourcesContent":["/**\n * @zendir/ui - Chart Presets\n *\n * Pre-configured chart components for common use cases.\n * Each preset wraps AstroChart with sensible defaults.\n */\n\nimport React, { forwardRef, memo } from \"react\";\nimport { AstroChart, AstroChartHandle } from \"./AstroChart\";\nimport type { AstroChartProps, SeriesData, AxisOptions } from \"./types\";\nimport { STATUS_COLORS, ASTRO_DATA_VIZ_COLORS } from \"./theme\";\nimport { useTheme } from \"../../theme\";\n\n// Medium-soft status colors (readable, not too pale)\nconst SOFT_STATUS_COLORS = {\n normal: \"#6ed86e\",\n caution: \"#ffd54f\",\n serious: \"#ffa726\",\n critical: \"#e57373\",\n off: \"#90a4ae\",\n standby: \"#4fc3f7\",\n};\n\n// =============================================================================\n// Shared Types\n// =============================================================================\n\ntype PresetProps = Omit<AstroChartProps, \"type\">;\n\n// =============================================================================\n// Line Chart\n// =============================================================================\n\nexport interface LineChartProps extends PresetProps {\n /** Enable smooth curves */\n smooth?: boolean;\n /** Show data points */\n showPoints?: boolean;\n /** Enable area fill */\n showArea?: boolean;\n}\n\nexport const LineChart = memo(\n forwardRef<AstroChartHandle, LineChartProps>(function LineChart(\n {\n smooth = true,\n showPoints = false,\n showArea = false,\n series = [],\n ...props\n },\n ref,\n ) {\n const transformedSeries: SeriesData[] = series.map((s) => ({\n ...s,\n type: showArea ? \"area\" : \"line\",\n smooth,\n symbol: showPoints ? { type: \"circle\", size: 6 } : { type: \"none\" },\n }));\n\n return (\n <AstroChart\n ref={ref}\n type={showArea ? \"area\" : \"line\"}\n series={transformedSeries}\n tooltip={{ trigger: \"axis\", crosshair: \"x\" }}\n {...props}\n />\n );\n }),\n);\n\n// =============================================================================\n// Area Chart\n// =============================================================================\n\nexport interface AreaChartProps extends PresetProps {\n /** Stack areas */\n stacked?: boolean;\n /** Smooth curves */\n smooth?: boolean;\n}\n\nexport const AreaChart = memo(\n forwardRef<AstroChartHandle, AreaChartProps>(function AreaChart(\n { stacked = false, smooth = true, series = [], ...props },\n ref,\n ) {\n const transformedSeries: SeriesData[] = series.map((s, _i) => ({\n ...s,\n type: \"area\",\n smooth,\n stack: stacked ? \"total\" : undefined,\n areaStyle: { opacity: stacked ? 0.8 : 0.3 },\n }));\n\n return (\n <AstroChart\n ref={ref}\n type=\"area\"\n series={transformedSeries}\n tooltip={{ trigger: \"axis\", crosshair: \"x\" }}\n {...props}\n />\n );\n }),\n);\n\n// =============================================================================\n// Bar Chart\n// =============================================================================\n\nexport interface BarChartProps extends PresetProps {\n /** Stack bars */\n stacked?: boolean;\n /** Horizontal orientation */\n horizontal?: boolean;\n /** Bar category gap */\n categoryGap?: string;\n}\n\nexport const BarChart = memo(\n forwardRef<AstroChartHandle, BarChartProps>(function BarChart(\n {\n stacked = false,\n horizontal = false,\n series = [],\n xAxis,\n yAxis,\n ...props\n },\n ref,\n ) {\n const transformedSeries: SeriesData[] = series.map((s) => ({\n ...s,\n type: \"bar\",\n stack: stacked ? \"total\" : undefined,\n }));\n\n // Swap axes for horizontal\n const finalXAxis: AxisOptions = horizontal\n ? { type: \"value\", ...(yAxis as AxisOptions) }\n : { type: \"category\", ...xAxis };\n\n const finalYAxis: AxisOptions = horizontal\n ? { type: \"category\", ...xAxis }\n : { type: \"value\", ...(yAxis as AxisOptions) };\n\n return (\n <AstroChart\n ref={ref}\n type=\"bar\"\n series={transformedSeries}\n xAxis={finalXAxis}\n yAxis={finalYAxis}\n tooltip={{ trigger: \"axis\" }}\n {...props}\n />\n );\n }),\n);\n\n// =============================================================================\n// Scatter Chart\n// =============================================================================\n\nexport interface ScatterChartProps extends PresetProps {\n /** Symbol size */\n symbolSize?: number | ((value: number[]) => number);\n /** Show regression line */\n showRegression?: boolean;\n}\n\nexport const ScatterChart = memo(\n forwardRef<AstroChartHandle, ScatterChartProps>(function ScatterChart(\n { symbolSize = 10, series = [], ...props },\n ref,\n ) {\n const transformedSeries: SeriesData[] = series.map((s) => ({\n ...s,\n type: \"scatter\",\n symbol: {\n type: \"circle\",\n size: typeof symbolSize === \"number\" ? symbolSize : 10,\n },\n }));\n\n return (\n <AstroChart\n ref={ref}\n type=\"scatter\"\n series={transformedSeries}\n tooltip={{ trigger: \"item\" }}\n xAxis={{ type: \"value\" }}\n yAxis={{ type: \"value\" }}\n {...props}\n />\n );\n }),\n);\n\n// =============================================================================\n// Pie Chart\n// =============================================================================\n\nexport interface PieChartProps extends Omit<\n PresetProps,\n \"xAxis\" | \"yAxis\" | \"zoom\"\n> {\n /** Show as donut */\n donut?: boolean;\n /** Inner radius for donut (percentage) */\n innerRadius?: string;\n /** Outer radius (percentage) */\n outerRadius?: string;\n /** Show labels */\n showLabels?: boolean;\n /** Center content (for donut) */\n centerContent?: React.ReactNode;\n}\n\nexport const PieChart = memo(\n forwardRef<AstroChartHandle, PieChartProps>(function PieChart(\n {\n donut = false,\n innerRadius = \"40%\",\n outerRadius = \"70%\",\n showLabels = true,\n series = [],\n ...props\n },\n ref,\n ) {\n const transformedSeries: SeriesData[] = series.map((s) => ({\n ...s,\n type: donut ? \"donut\" : \"pie\",\n }));\n\n return (\n <AstroChart\n ref={ref}\n type={donut ? \"donut\" : \"pie\"}\n series={transformedSeries}\n tooltip={{ trigger: \"item\" }}\n echartsOptions={{\n series: [\n {\n radius: donut ? [innerRadius, outerRadius] : outerRadius,\n label: {\n show: showLabels,\n formatter: \"{b}: {d}%\",\n },\n },\n ],\n }}\n {...props}\n />\n );\n }),\n);\n\n// =============================================================================\n// Donut Chart\n// =============================================================================\n\nexport const DonutChart = memo(\n forwardRef<AstroChartHandle, PieChartProps>(function DonutChart(props, ref) {\n return <PieChart ref={ref} donut {...props} />;\n }),\n);\n\n// =============================================================================\n// Gauge Chart\n// =============================================================================\n\nexport interface GaugeChartProps extends Omit<\n PresetProps,\n \"xAxis\" | \"yAxis\" | \"zoom\" | \"series\"\n> {\n /** Current value */\n value: number;\n /** Minimum value */\n min?: number;\n /** Maximum value */\n max?: number;\n /** Unit label */\n unit?: string;\n /** Title label */\n label?: string;\n /** Threshold colors */\n thresholds?: {\n value: number;\n color: string;\n }[];\n /** Show progress arc */\n progress?: boolean;\n /** Show clock-style pointer (needle). Set false for arc + value only. */\n showPointer?: boolean;\n}\n\nexport const GaugeChart = memo(\n forwardRef<AstroChartHandle, GaugeChartProps>(function GaugeChart(\n {\n value,\n min = 0,\n max = 100,\n unit = \"%\",\n label,\n thresholds,\n progress = true,\n showPointer = true,\n width = 220,\n height = 220,\n ...props\n },\n ref,\n ) {\n const { tokens } = useTheme();\n const range = max - min;\n const safeRange = range === 0 ? 1 : range;\n const clampedValue = Math.max(min, Math.min(max, value));\n const widthPx =\n typeof width === \"number\"\n ? width\n : typeof height === \"number\"\n ? height\n : 220;\n const heightPx = typeof height === \"number\" ? height : 220;\n const gaugeSize = Math.max(120, Math.min(widthPx, heightPx));\n const compactGauge = gaugeSize < 170;\n const arcWidth = Math.max(8, Math.round(gaugeSize * 0.07));\n const valueFontSize = Math.max(16, Math.round(gaugeSize * 0.15));\n const labelFontSize = Math.max(10, Math.round(gaugeSize * 0.07));\n const unitSuffix = unit?.trim() ?? \"\";\n const longUnit = unitSuffix.length > 4;\n\n const series: SeriesData[] = [\n {\n id: \"gauge\",\n name: label || \"Value\",\n type: \"gauge\",\n data: [{ x: 0, y: clampedValue }],\n },\n ];\n\n // Build color stops from thresholds\n const normalizedThresholds = [...(thresholds ?? [])]\n .filter((t) => Number.isFinite(t.value))\n .sort((a, b) => a.value - b.value);\n\n const colorStops = normalizedThresholds.map(\n (t) =>\n [Math.max(0, Math.min(1, (t.value - min) / safeRange)), t.color] as [\n number,\n string,\n ],\n );\n\n if (colorStops.length === 0) {\n colorStops.push(\n [0.3, SOFT_STATUS_COLORS.normal],\n [0.7, SOFT_STATUS_COLORS.caution],\n [1, SOFT_STATUS_COLORS.critical],\n );\n } else if (colorStops[colorStops.length - 1][0] < 1) {\n colorStops.push([1, colorStops[colorStops.length - 1][1]]);\n }\n\n const activeColor =\n [...colorStops]\n .reverse()\n .find(([stop]) => stop <= (clampedValue - min) / safeRange)?.[1] ??\n SOFT_STATUS_COLORS.normal;\n\n return (\n <AstroChart\n ref={ref}\n type=\"gauge\"\n series={series}\n width={width}\n height={height}\n echartsOptions={{\n series: [\n {\n type: \"gauge\",\n min,\n max,\n progress: {\n show: progress,\n width: arcWidth,\n roundCap: true,\n },\n axisLine: {\n lineStyle: {\n width: arcWidth,\n color: colorStops,\n },\n },\n axisTick: { show: false },\n splitLine: { show: false },\n axisLabel: { show: false },\n pointer: {\n show: showPointer,\n length: compactGauge ? \"56%\" : \"60%\",\n width: Math.max(3, Math.round(arcWidth * 0.38)),\n },\n title: {\n show: !!label,\n offsetCenter: [0, compactGauge ? \"73%\" : \"78%\"],\n fontSize: labelFontSize,\n color: tokens.colors.text.secondary,\n },\n detail: {\n valueAnimation: true,\n formatter: (currentValue: number) => {\n const rounded = Math.round(currentValue);\n if (!unitSuffix) return `${rounded}`;\n if (longUnit) return `${rounded}\\n{unit|${unitSuffix}}`;\n return `${rounded}${unitSuffix}`;\n },\n rich: {\n unit: {\n color: tokens.colors.text.secondary,\n fontSize: Math.max(10, Math.round(valueFontSize * 0.48)),\n fontWeight: 500,\n lineHeight: Math.round(valueFontSize * 0.78),\n },\n },\n lineHeight: Math.round(valueFontSize * 1.05),\n fontSize: valueFontSize,\n fontWeight: 700,\n offsetCenter: [0, compactGauge ? \"10%\" : \"14%\"],\n color: activeColor,\n },\n data: [{ value: clampedValue, name: label }],\n },\n ],\n }}\n {...props}\n />\n );\n }),\n);\n\n// =============================================================================\n// Radar Chart\n// =============================================================================\n\nexport interface RadarChartProps extends Omit<\n PresetProps,\n \"xAxis\" | \"yAxis\" | \"zoom\"\n> {\n /** Indicator definitions */\n indicators: {\n name: string;\n max: number;\n min?: number;\n }[];\n /** Fill area */\n areaStyle?: boolean;\n}\n\nexport const RadarChart = memo(\n forwardRef<AstroChartHandle, RadarChartProps>(function RadarChart(\n { indicators, areaStyle = true, series = [], ...props },\n ref,\n ) {\n // Extract values from data - support both [{x,y}] and [number] formats\n const extractValues = (data: unknown[]): number[] => {\n if (!data || data.length === 0) return [];\n const first = data[0];\n if (typeof first === \"number\") return data as number[];\n if (typeof first === \"object\" && first !== null && \"y\" in first) {\n return (data as Array<{ y: number }>).map((d) => d.y);\n }\n return [];\n };\n\n return (\n <AstroChart\n ref={ref}\n type=\"radar\"\n series={[]} // Empty - we provide series via echartsOptions\n tooltip={{ trigger: \"item\" }}\n echartsOptions={{\n radar: {\n indicator: indicators,\n shape: \"polygon\",\n },\n series: series.map((s) => ({\n type: \"radar\",\n name: s.name,\n data: [\n {\n value: extractValues(s.data as unknown[]),\n name: s.name,\n },\n ],\n areaStyle: areaStyle ? { opacity: 0.3 } : undefined,\n })),\n }}\n {...props}\n />\n );\n }),\n);\n\n// =============================================================================\n// Heatmap Chart\n// =============================================================================\n\nexport interface HeatmapChartProps extends PresetProps {\n /** X-axis categories */\n xCategories: string[];\n /** Y-axis categories */\n yCategories: string[];\n /** Value range */\n valueRange?: [number, number];\n /** Show value labels */\n showLabels?: boolean;\n}\n\nexport const HeatmapChart = memo(\n forwardRef<AstroChartHandle, HeatmapChartProps>(function HeatmapChart(\n {\n xCategories,\n yCategories,\n valueRange = [0, 100],\n showLabels = true,\n series = [],\n ...props\n },\n ref,\n ) {\n // Transform data to heatmap format if needed\n const heatmapData = series[0]?.data as unknown[];\n\n return (\n <AstroChart\n ref={ref}\n type=\"heatmap\"\n series={series}\n xAxis={{ type: \"category\" }}\n yAxis={{ type: \"category\" }}\n tooltip={{ trigger: \"item\" }}\n echartsOptions={{\n xAxis: { data: xCategories },\n yAxis: { data: yCategories },\n visualMap: {\n min: valueRange[0],\n max: valueRange[1],\n calculable: true,\n orient: \"horizontal\",\n left: \"center\",\n bottom: \"5%\",\n },\n series: [\n {\n type: \"heatmap\",\n data: heatmapData as [number, number, number][],\n label: {\n show: showLabels,\n },\n emphasis: {\n itemStyle: {\n shadowBlur: 10,\n shadowColor: \"rgba(0, 0, 0, 0.5)\",\n },\n },\n },\n ],\n }}\n {...props}\n />\n );\n }),\n);\n\n// =============================================================================\n// Time Series Chart (optimized for streaming data)\n// =============================================================================\n\nexport interface TimeSeriesChartProps extends PresetProps {\n /** Time window in milliseconds */\n timeWindow?: number;\n /** Maximum data points */\n maxPoints?: number;\n /** Auto-scroll to latest data */\n autoScroll?: boolean;\n /** Show current values */\n showCurrentValues?: boolean;\n}\n\nexport const TimeSeriesChart = memo(\n forwardRef<AstroChartHandle, TimeSeriesChartProps>(function TimeSeriesChart(\n {\n timeWindow,\n maxPoints = 1000,\n autoScroll = true,\n showCurrentValues: _showCurrentValues = true,\n series = [],\n ...props\n },\n ref,\n ) {\n const xAxis: AxisOptions = {\n type: \"time\",\n ...(timeWindow\n ? {\n min: \"dataMin\",\n max: \"dataMax\",\n }\n : {}),\n };\n\n return (\n <AstroChart\n ref={ref}\n type=\"line\"\n series={series.map((s) => ({\n ...s,\n smooth: true,\n symbol: { type: \"none\" },\n }))}\n xAxis={xAxis}\n tooltip={{\n trigger: \"axis\",\n crosshair: \"x\",\n }}\n zoom={\n autoScroll\n ? undefined\n : {\n enabled: true,\n type: \"both\",\n axis: \"x\",\n }\n }\n realTime={{\n enabled: true,\n maxPoints,\n timeWindow,\n shift: autoScroll,\n }}\n {...props}\n />\n );\n }),\n);\n\n// =============================================================================\n// Dual Axis Chart\n// =============================================================================\n\nexport interface DualAxisChartProps extends PresetProps {\n /** Left Y-axis options */\n leftAxis?: AxisOptions;\n /** Right Y-axis options */\n rightAxis?: AxisOptions;\n}\n\nexport const DualAxisChart = memo(\n forwardRef<AstroChartHandle, DualAxisChartProps>(function DualAxisChart(\n { leftAxis, rightAxis, series = [], ...props },\n ref,\n ) {\n // Assign series to axes based on yAxisIndex\n const transformedSeries: SeriesData[] = series.map((s, i) => ({\n ...s,\n yAxisIndex: s.yAxisIndex ?? i % 2, // Alternate by default\n }));\n\n return (\n <AstroChart\n ref={ref}\n type=\"line\"\n series={transformedSeries}\n yAxis={[\n { position: \"left\", ...leftAxis },\n { position: \"right\", ...rightAxis },\n ]}\n tooltip={{ trigger: \"axis\", crosshair: \"x\" }}\n {...props}\n />\n );\n }),\n);\n\n// =============================================================================\n// Stacked Area Chart\n// =============================================================================\n\nexport const StackedAreaChart = memo(\n forwardRef<AstroChartHandle, AreaChartProps>(\n function StackedAreaChart(props, ref) {\n return <AreaChart ref={ref} stacked {...props} />;\n },\n ),\n);\n\n// =============================================================================\n// Stacked Bar Chart\n// =============================================================================\n\nexport const StackedBarChart = memo(\n forwardRef<AstroChartHandle, BarChartProps>(\n function StackedBarChart(props, ref) {\n return <BarChart ref={ref} stacked {...props} />;\n },\n ),\n);\n\n// =============================================================================\n// Bubble Chart (AstroUXD compliant)\n// =============================================================================\n\nexport interface BubbleChartProps extends PresetProps {\n /** Min bubble size (px) */\n minSize?: number;\n /** Max bubble size (px) */\n maxSize?: number;\n /** Show size legend */\n showSizeLegend?: boolean;\n}\n\nexport const BubbleChart = memo(\n forwardRef<AstroChartHandle, BubbleChartProps>(function BubbleChart(\n {\n minSize = 10,\n maxSize = 60,\n showSizeLegend = true,\n series = [],\n ...props\n },\n ref,\n ) {\n // Transform series for bubble (scatter with symbolSize)\n const transformedSeries: SeriesData[] = series.map((s) => ({\n ...s,\n type: \"scatter\" as const,\n }));\n\n return (\n <AstroChart\n ref={ref}\n type=\"scatter\"\n series={transformedSeries}\n tooltip={{ trigger: \"item\" }}\n echartsOptions={{\n series: series.map((s, _idx) => {\n const data = s.data as Array<\n | { x: number; y: number; size?: number; label?: string }\n | [number, number, number]\n >;\n return {\n type: \"scatter\",\n name: s.name,\n data: data.map((d) => {\n if (Array.isArray(d)) return d;\n return [d.x, d.y, (d as { size?: number }).size ?? 10];\n }),\n symbolSize: (val: number[]) => {\n const size = val[2] ?? minSize;\n return Math.max(minSize, Math.min(maxSize, size));\n },\n };\n }),\n visualMap: showSizeLegend\n ? {\n show: true,\n dimension: 2,\n min: 0,\n max: 100,\n inRange: { symbolSize: [minSize, maxSize] },\n right: 10,\n top: \"center\",\n }\n : undefined,\n }}\n {...props}\n />\n );\n }),\n);\n\n// =============================================================================\n// Histogram Chart (AstroUXD compliant)\n// =============================================================================\n\nexport interface HistogramChartProps extends PresetProps {\n /** Number of bins (auto if not specified) */\n bins?: number;\n /** Show distribution curve overlay */\n showCurve?: boolean;\n}\n\nexport const HistogramChart = memo(\n forwardRef<AstroChartHandle, HistogramChartProps>(function HistogramChart(\n {\n bins: _bins = 20,\n showCurve: _showCurve = false,\n series = [],\n xAxis,\n ...props\n },\n ref,\n ) {\n // Transform data into histogram bins\n const transformedSeries: SeriesData[] = series.map((s) => ({\n ...s,\n type: \"bar\" as const,\n }));\n\n return (\n <AstroChart\n ref={ref}\n type=\"bar\"\n series={transformedSeries}\n xAxis={{ type: \"category\", ...xAxis }}\n yAxis={{ type: \"value\", name: \"Frequency\" }}\n tooltip={{ trigger: \"axis\" }}\n echartsOptions={{\n series: series.map((s) => ({\n type: \"bar\",\n name: s.name,\n data: s.data,\n barWidth: \"90%\",\n itemStyle: { borderRadius: [2, 2, 0, 0] },\n })) as import(\"echarts\").SeriesOption[],\n }}\n {...props}\n />\n );\n }),\n);\n\n// =============================================================================\n// Sankey Diagram (Power/Data Flow)\n// =============================================================================\n\nexport interface SankeyChartProps extends Omit<PresetProps, \"series\"> {\n /** Node definitions */\n nodes: { name: string; itemStyle?: { color?: string } }[];\n /** Link definitions */\n links: { source: string; target: string; value: number }[];\n /** Orient vertical or horizontal */\n orient?: \"horizontal\" | \"vertical\";\n}\n\nexport const SankeyChart = memo(\n forwardRef<AstroChartHandle, SankeyChartProps>(function SankeyChart(\n { nodes = [], links = [], orient = \"horizontal\", ...props },\n ref,\n ) {\n const { tokens } = useTheme();\n\n return (\n <AstroChart\n ref={ref}\n type=\"sankey\"\n series={[]}\n echartsOptions={{\n tooltip: {\n trigger: \"item\",\n triggerOn: \"mousemove\",\n },\n series: [\n {\n type: \"sankey\",\n orient,\n layoutIterations: 32,\n emphasis: { focus: \"adjacency\" },\n nodeAlign: \"justify\",\n lineStyle: { color: \"gradient\", curveness: 0.5 },\n data: nodes,\n links,\n label: {\n color: tokens.colors.text.primary,\n fontSize: 12,\n },\n },\n ],\n }}\n {...props}\n />\n );\n }),\n);\n\n// =============================================================================\n// Treemap (Storage/Allocation Visualization)\n// AstroUXDS compliant hierarchical visualization\n// =============================================================================\n\nexport interface TreemapDataNode {\n name: string;\n value?: number;\n children?: TreemapDataNode[];\n itemStyle?: { color?: string };\n}\n\nexport interface TreemapChartProps extends Omit<PresetProps, \"series\"> {\n /** Hierarchical data */\n data: TreemapDataNode[];\n /** Show breadcrumb navigation */\n showBreadcrumb?: boolean;\n /** Leaf depth to show */\n leafDepth?: number;\n}\n\nexport const TreemapChart = memo(\n forwardRef<AstroChartHandle, TreemapChartProps>(function TreemapChart(\n { data = [], showBreadcrumb = true, leafDepth = 2, ...props },\n ref,\n ) {\n const { tokens } = useTheme();\n\n return (\n <AstroChart\n ref={ref}\n type=\"treemap\"\n series={[]}\n echartsOptions={{\n tooltip: {\n formatter: ((info: any) => {\n const value = info.value;\n const name = info.name;\n return `${name}: ${typeof value === \"number\" ? value.toLocaleString() : value}`;\n }) as unknown as string,\n },\n series: [\n {\n type: \"treemap\",\n data,\n leafDepth,\n roam: false,\n // AstroUXDS compliant breadcrumb navigation\n breadcrumb: {\n show: showBreadcrumb,\n bottom: 10,\n itemStyle: { color: \"rgba(100, 116, 139, 0.6)\" }, // Subtle grey\n },\n label: {\n show: true,\n formatter: \"{b}\",\n color: tokens.colors.text.primary,\n fontSize: 12,\n },\n upperLabel: {\n show: true,\n height: 30,\n color: tokens.colors.text.secondary,\n },\n // AstroUXDS compliant borders - subtle grey\n itemStyle: {\n borderColor: \"rgba(100, 116, 139, 0.2)\",\n borderWidth: 2,\n gapWidth: 2,\n },\n levels: [\n {\n itemStyle: {\n borderColor: \"rgba(100, 116, 139, 0.3)\",\n borderWidth: 4,\n gapWidth: 4,\n },\n upperLabel: { show: false },\n },\n {\n itemStyle: {\n borderColor: \"rgba(100, 116, 139, 0.25)\",\n borderWidth: 2,\n gapWidth: 2,\n },\n emphasis: {\n itemStyle: { borderColor: ASTRO_DATA_VIZ_COLORS.mixed[0] },\n }, // Zendir Electric on hover\n },\n {\n colorSaturation: [0.35, 0.5],\n itemStyle: {\n borderColor: \"rgba(62, 60, 255, 0.3)\",\n borderWidth: 1,\n }, // Zendir Electric subtle\n },\n ],\n },\n ],\n }}\n {...props}\n />\n );\n }),\n);\n\n// =============================================================================\n// Sunburst Chart (Hierarchical Status)\n// =============================================================================\n\nexport interface SunburstDataNode {\n name: string;\n value?: number;\n children?: SunburstDataNode[];\n itemStyle?: { color?: string };\n}\n\nexport interface SunburstChartProps extends Omit<PresetProps, \"series\"> {\n /** Hierarchical data */\n data: SunburstDataNode[];\n /** Inner radius (percentage or pixels) */\n innerRadius?: string | number;\n /** Outer radius (percentage or pixels) */\n outerRadius?: string | number;\n}\n\nexport const SunburstChart = memo(\n forwardRef<AstroChartHandle, SunburstChartProps>(function SunburstChart(\n { data = [], innerRadius = \"15%\", outerRadius = \"80%\", ...props },\n ref,\n ) {\n const { tokens } = useTheme();\n\n return (\n <AstroChart\n ref={ref}\n type=\"sunburst\"\n series={[]}\n echartsOptions={{\n tooltip: {\n trigger: \"item\",\n },\n // Zendir-branded sunburst visualization\n series: [\n {\n type: \"sunburst\",\n data,\n radius: [innerRadius, outerRadius],\n emphasis: { focus: \"ancestor\" },\n label: {\n rotate: \"radial\",\n color: tokens.colors.text.secondary,\n fontSize: 11,\n },\n itemStyle: {\n borderRadius: 4,\n borderWidth: 2,\n borderColor: \"rgba(62, 60, 255, 0.25)\", // Zendir Electric subtle border\n },\n levels: [\n {},\n { r0: \"15%\", r: \"40%\", label: { rotate: \"tangential\" } },\n { r0: \"40%\", r: \"65%\" },\n {\n r0: \"65%\",\n r: \"80%\",\n label: { position: \"outside\", fontSize: 10 },\n },\n ],\n },\n ],\n }}\n {...props}\n />\n );\n }),\n);\n\n// =============================================================================\n// Parallel Coordinates (Multi-Parameter Analysis)\n// =============================================================================\n\nexport interface ParallelAxisDef {\n dim: number;\n name: string;\n min?: number;\n max?: number;\n type?: \"value\" | \"category\";\n data?: string[];\n}\n\nexport interface ParallelChartProps extends Omit<PresetProps, \"series\"> {\n /** Axis definitions */\n axes: ParallelAxisDef[];\n /** Data rows (each row is values for each axis) */\n data: (number | string)[][];\n /** Line style */\n lineStyle?: { opacity?: number; width?: number };\n}\n\nexport const ParallelChart = memo(\n forwardRef<AstroChartHandle, ParallelChartProps>(function ParallelChart(\n {\n axes = [],\n data = [],\n lineStyle = { opacity: 0.5, width: 1.5 },\n ...props\n },\n ref,\n ) {\n const { tokens } = useTheme();\n\n return (\n <AstroChart\n ref={ref}\n type=\"line\"\n series={[]}\n // AstroUXDS compliant parallel coordinates\n echartsOptions={{\n parallelAxis: axes.map((axis) => ({\n dim: axis.dim,\n name: axis.name,\n min: axis.min,\n max: axis.max,\n type: axis.type || \"value\",\n data: axis.data,\n nameTextStyle: { color: tokens.colors.text.secondary },\n axisLine: { lineStyle: { color: \"rgba(100, 116, 139, 0.3)\" } },\n axisTick: { lineStyle: { color: \"rgba(100, 116, 139, 0.3)\" } },\n axisLabel: { color: tokens.colors.text.tertiary },\n })),\n parallel: {\n left: 60,\n right: 60,\n bottom: 60,\n top: 60,\n parallelAxisDefault: {\n type: \"value\",\n nameLocation: \"end\",\n nameGap: 20,\n axisLine: { lineStyle: { color: \"rgba(100, 116, 139, 0.3)\" } },\n axisTick: { lineStyle: { color: \"rgba(100, 116, 139, 0.3)\" } },\n splitLine: { show: false },\n axisLabel: { color: tokens.colors.text.tertiary },\n },\n },\n series: [\n {\n type: \"parallel\",\n lineStyle: {\n ...lineStyle,\n color: ASTRO_DATA_VIZ_COLORS.mixed[0], // Zendir Electric\n },\n data: data.map((row) => ({ value: row })),\n emphasis: {\n lineStyle: { width: 3, opacity: 1 },\n },\n },\n ],\n }}\n {...props}\n />\n );\n }),\n);\n\n// =============================================================================\n// Candlestick Chart (Financial/Orbital Maneuver Windows)\n// =============================================================================\n\nexport interface CandlestickDataPoint {\n time: number | string;\n open: number;\n close: number;\n low: number;\n high: number;\n}\n\nexport interface CandlestickChartProps extends Omit<PresetProps, \"series\"> {\n /** OHLC data */\n data: CandlestickDataPoint[];\n /** Show volume bars */\n showVolume?: boolean;\n}\n\nexport const CandlestickChart = memo(\n forwardRef<AstroChartHandle, CandlestickChartProps>(function CandlestickChart(\n { data = [], showVolume: _showVolume = false, ...props },\n ref,\n ) {\n const { tokens } = useTheme();\n const categoryData = data.map((d) => d.time);\n const ohlcData = data.map((d) => [d.open, d.close, d.low, d.high]);\n\n return (\n <AstroChart\n ref={ref}\n type=\"candlestick\"\n series={[]}\n // Candlestick uses AstroUXDS status colors for semantic meaning\n // Green (normal) = bullish/up, Red (critical) = bearish/down\n echartsOptions={{\n tooltip: {\n trigger: \"axis\",\n axisPointer: { type: \"cross\" },\n },\n xAxis: {\n type: \"category\",\n data: categoryData,\n axisLine: { lineStyle: { color: \"rgba(100, 116, 139, 0.3)\" } },\n axisLabel: { color: tokens.colors.text.secondary },\n },\n yAxis: {\n type: \"value\",\n scale: true,\n splitLine: { lineStyle: { color: \"rgba(100, 116, 139, 0.15)\" } },\n axisLine: { lineStyle: { color: \"rgba(100, 116, 139, 0.3)\" } },\n axisLabel: { color: tokens.colors.text.secondary },\n },\n series: [\n {\n type: \"candlestick\",\n data: ohlcData,\n itemStyle: {\n color: SOFT_STATUS_COLORS.normal, // AstroUXDS green (up/bullish)\n color0: SOFT_STATUS_COLORS.critical, // AstroUXDS red (down/bearish)\n borderColor: SOFT_STATUS_COLORS.normal,\n borderColor0: SOFT_STATUS_COLORS.critical,\n },\n },\n ],\n dataZoom: [\n { type: \"inside\", start: 0, end: 100 },\n { show: true, type: \"slider\", bottom: 10 },\n ],\n }}\n {...props}\n />\n );\n }),\n);\n\n// =============================================================================\n// Graph/Network Chart (Subsystem Dependencies)\n// =============================================================================\n\nexport interface GraphNode {\n id: string;\n name: string;\n value?: number;\n category?: number;\n symbolSize?: number;\n x?: number;\n y?: number;\n itemStyle?: { color?: string };\n}\n\nexport interface GraphLink {\n source: string;\n target: string;\n value?: number;\n lineStyle?: { width?: number; color?: string };\n}\n\nexport interface GraphCategory {\n name: string;\n itemStyle?: { color?: string };\n}\n\nexport interface GraphChartProps extends Omit<PresetProps, \"series\"> {\n /** Node definitions */\n nodes: GraphNode[];\n /** Link definitions */\n links: GraphLink[];\n /** Category definitions */\n categories?: GraphCategory[];\n /** Layout type */\n layout?: \"force\" | \"circular\" | \"none\";\n}\n\nexport const GraphChart = memo(\n forwardRef<AstroChartHandle, GraphChartProps>(function GraphChart(\n { nodes = [], links = [], categories = [], layout = \"force\", ...props },\n ref,\n ) {\n const { tokens } = useTheme();\n\n return (\n <AstroChart\n ref={ref}\n type=\"scatter\"\n series={[]}\n // Zendir-branded network/graph visualization\n echartsOptions={{\n tooltip: {},\n legend:\n categories.length > 0\n ? {\n data: categories.map((c) => c.name),\n textStyle: { color: tokens.colors.text.primary },\n }\n : undefined,\n series: [\n {\n type: \"graph\",\n layout,\n data: nodes.map((n) => ({\n ...n,\n symbolSize: n.symbolSize || 30,\n })),\n links,\n categories,\n roam: true,\n label: {\n show: true,\n position: \"right\",\n formatter: \"{b}\",\n color: tokens.colors.text.primary,\n fontSize: 11,\n },\n lineStyle: {\n color: \"source\",\n curveness: 0.3,\n opacity: 0.6,\n },\n emphasis: {\n focus: \"adjacency\",\n lineStyle: { width: 3 },\n },\n force:\n layout === \"force\"\n ? {\n repulsion: 200,\n edgeLength: [50, 150],\n gravity: 0.1,\n }\n : undefined,\n },\n ],\n }}\n {...props}\n />\n );\n }),\n);\n\n// =============================================================================\n// Box Plot Chart\n// =============================================================================\n\nexport interface BoxPlotDataPoint {\n /** Category name (x-axis label) */\n name: string;\n /** Raw data values for computing boxplot statistics */\n values: number[];\n}\n\nexport interface BoxPlotChartProps extends Omit<PresetProps, \"series\"> {\n /** Box plot data - each item contains a category name and array of values */\n data: BoxPlotDataPoint[];\n /** Show outliers as scatter points */\n showOutliers?: boolean;\n /** Custom colors for each box (uses theme palette if not provided) */\n colors?: string[];\n /** Horizontal orientation (default is vertical) */\n horizontal?: boolean;\n}\n\n/**\n * Calculate boxplot statistics from raw values\n */\nfunction calculateBoxplotStats(\n values: number[],\n): [number, number, number, number, number] {\n const sorted = [...values].sort((a, b) => a - b);\n const n = sorted.length;\n\n const min = sorted[0];\n const max = sorted[n - 1];\n const median =\n n % 2 === 0\n ? (sorted[n / 2 - 1] + sorted[n / 2]) / 2\n : sorted[Math.floor(n / 2)];\n\n const q1Index = Math.floor(n * 0.25);\n const q3Index = Math.floor(n * 0.75);\n const q1 = sorted[q1Index];\n const q3 = sorted[q3Index];\n\n // IQR-based whiskers\n const iqr = q3 - q1;\n const lowerWhisker = Math.max(min, q1 - 1.5 * iqr);\n const upperWhisker = Math.min(max, q3 + 1.5 * iqr);\n\n return [lowerWhisker, q1, median, q3, upperWhisker];\n}\n\n/**\n * BoxPlotChart - Statistical distribution visualization\n *\n * Shows distribution of data through quartiles (box) and whiskers (range).\n * Uses theme-aware colors from the data visualization palette.\n *\n * @example\n * ```tsx\n * <BoxPlotChart\n * title=\"Score Distribution\"\n * data={[\n * { name: 'Team A', values: [65, 72, 84, 91, 55, 88, 76] },\n * { name: 'Team B', values: [78, 82, 95, 88, 70, 92, 85] },\n * ]}\n * />\n * ```\n */\nexport const BoxPlotChart = memo(\n forwardRef<AstroChartHandle, BoxPlotChartProps>(function BoxPlotChart(\n { data = [], showOutliers = true, colors, horizontal = false, ...props },\n ref,\n ) {\n const { tokens } = useTheme();\n\n // Calculate boxplot statistics for each category\n const categories = data.map((d) => d.name);\n const boxplotData = data.map((d, index) => {\n const stats = calculateBoxplotStats(d.values);\n return {\n value: stats,\n itemStyle: colors?.[index]\n ? {\n color: colors[index],\n borderColor: colors[index],\n }\n : undefined,\n };\n });\n\n // Find outliers for each category\n const outliers: Array<[number, number]> = [];\n if (showOutliers) {\n data.forEach((d, catIndex) => {\n const sorted = [...d.values].sort((a, b) => a - b);\n const n = sorted.length;\n const q1Index = Math.floor(n * 0.25);\n const q3Index = Math.floor(n * 0.75);\n const q1 = sorted[q1Index];\n const q3 = sorted[q3Index];\n const iqr = q3 - q1;\n const lowerBound = q1 - 1.5 * iqr;\n const upperBound = q3 + 1.5 * iqr;\n\n d.values.forEach((v) => {\n if (v < lowerBound || v > upperBound) {\n outliers.push([catIndex, v]);\n }\n });\n });\n }\n\n const categoryAxis = {\n type: \"category\" as const,\n data: categories,\n boundaryGap: true,\n axisLine: { lineStyle: { color: \"rgba(100, 116, 139, 0.3)\" } },\n axisLabel: { color: tokens.colors.text.secondary, fontSize: 12 },\n splitArea: { show: false },\n };\n\n const valueAxis = {\n type: \"value\" as const,\n splitLine: { lineStyle: { color: \"rgba(100, 116, 139, 0.15)\" } },\n axisLine: { lineStyle: { color: \"rgba(100, 116, 139, 0.3)\" } },\n axisLabel: { color: tokens.colors.text.secondary },\n };\n\n return (\n <AstroChart\n ref={ref}\n type=\"boxplot\"\n series={[]}\n echartsOptions={{\n tooltip: {\n trigger: \"item\",\n axisPointer: { type: \"shadow\" },\n formatter: (params: any) => {\n if (params.seriesType === \"boxplot\") {\n const value = params.value;\n return `\n <div style=\"font-weight: 600; margin-bottom: 4px;\">${params.name}</div>\n <div>Upper: ${value[5]?.toFixed(1) ?? value[4]?.toFixed(1)}</div>\n <div>Q3: ${value[4]?.toFixed(1) ?? value[3]?.toFixed(1)}</div>\n <div>Median: ${value[3]?.toFixed(1) ?? value[2]?.toFixed(1)}</div>\n <div>Q1: ${value[2]?.toFixed(1) ?? value[1]?.toFixed(1)}</div>\n <div>Lower: ${value[1]?.toFixed(1) ?? value[0]?.toFixed(1)}</div>\n `;\n }\n return `Outlier: ${params.value[1]}`;\n },\n },\n grid: {\n left: \"10%\",\n right: \"10%\",\n bottom: \"15%\",\n top: \"15%\",\n },\n xAxis: horizontal ? valueAxis : categoryAxis,\n yAxis: horizontal ? categoryAxis : valueAxis,\n series: [\n {\n name: \"boxplot\",\n type: \"boxplot\" as const,\n data: boxplotData,\n itemStyle: {\n borderWidth: 2,\n },\n emphasis: {\n itemStyle: {\n borderWidth: 3,\n },\n },\n },\n ...(showOutliers && outliers.length > 0\n ? [\n {\n name: \"outlier\",\n type: \"scatter\" as const,\n data: outliers,\n symbolSize: 8,\n itemStyle: {\n color: SOFT_STATUS_COLORS.caution,\n },\n },\n ]\n : []),\n ],\n }}\n {...props}\n />\n );\n }),\n);\n"],"mappings":"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"}
@@ -1,6 +1,5 @@
1
1
  import { ECharts } from 'echarts';
2
2
  import { AstroChartHandle } from './AstroChart';
3
-
4
3
  interface SyncGroupOptions {
5
4
  /** Sync tooltip position */
6
5
  tooltip?: boolean;
@@ -30,7 +29,7 @@ export declare function useChartSync(chartRef: React.RefObject<AstroChartHandle>
30
29
  /**
31
30
  * Dispatch action to all charts in a group
32
31
  */
33
- export declare function dispatchToGroup(groupId: string, action: Parameters<ECharts['dispatchAction']>[0]): void;
32
+ export declare function dispatchToGroup(groupId: string, action: Parameters<ECharts["dispatchAction"]>[0]): void;
34
33
  /**
35
34
  * Sync zoom range across all charts in a group
36
35
  */
@@ -55,7 +54,7 @@ export declare function getGroupCharts(groupId: string): ECharts[];
55
54
  * Export all charts in a group as images
56
55
  */
57
56
  export declare function exportGroupAsImages(groupId: string, options?: {
58
- type?: 'png' | 'svg';
57
+ type?: "png" | "svg";
59
58
  pixelRatio?: number;
60
59
  fileName?: string;
61
60
  }): string[];