@zendir/ui 0.1.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 (359) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/LICENSE +21 -0
  3. package/README.md +589 -0
  4. package/dist/index.d.ts +8 -0
  5. package/dist/index.js +421 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/react/3d/EarthViewer.d.ts +46 -0
  8. package/dist/react/3d/EarthViewer.js +836 -0
  9. package/dist/react/3d/EarthViewer.js.map +1 -0
  10. package/dist/react/3d/SolarSystemViewer.d.ts +43 -0
  11. package/dist/react/3d/SolarSystemViewer.js +372 -0
  12. package/dist/react/3d/SolarSystemViewer.js.map +1 -0
  13. package/dist/react/3d/ZenSpace3D.d.ts +16 -0
  14. package/dist/react/3d/ZenSpace3D.js +1253 -0
  15. package/dist/react/3d/ZenSpace3D.js.map +1 -0
  16. package/dist/react/3d/ZenSpace3DCesium.d.ts +9 -0
  17. package/dist/react/3d/ZenSpace3DCesium.js +186 -0
  18. package/dist/react/3d/ZenSpace3DCesium.js.map +1 -0
  19. package/dist/react/3d/ZenSpace3DShaders.d.ts +78 -0
  20. package/dist/react/3d/ZenSpace3DShaders.js +94 -0
  21. package/dist/react/3d/ZenSpace3DShaders.js.map +1 -0
  22. package/dist/react/3d/ZenSpace3DTypes.d.ts +614 -0
  23. package/dist/react/3d/ZenSpace3DUtils.d.ts +183 -0
  24. package/dist/react/3d/ZenSpace3DUtils.js +213 -0
  25. package/dist/react/3d/ZenSpace3DUtils.js.map +1 -0
  26. package/dist/react/3d/index.d.ts +23 -0
  27. package/dist/react/3d/threeLoader.d.ts +22 -0
  28. package/dist/react/3d/threeLoader.js +18 -0
  29. package/dist/react/3d/threeLoader.js.map +1 -0
  30. package/dist/react/astro/ClassificationBanner.d.ts +25 -0
  31. package/dist/react/astro/ClassificationBanner.js +83 -0
  32. package/dist/react/astro/ClassificationBanner.js.map +1 -0
  33. package/dist/react/astro/GlobalStatusBar.d.ts +42 -0
  34. package/dist/react/astro/GlobalStatusBar.js +165 -0
  35. package/dist/react/astro/GlobalStatusBar.js.map +1 -0
  36. package/dist/react/astro/MissionClock.d.ts +169 -0
  37. package/dist/react/astro/MissionClock.js +411 -0
  38. package/dist/react/astro/MissionClock.js.map +1 -0
  39. package/dist/react/astro/MonitoringIcon.d.ts +60 -0
  40. package/dist/react/astro/MonitoringIcon.js +369 -0
  41. package/dist/react/astro/MonitoringIcon.js.map +1 -0
  42. package/dist/react/astro/Notification.d.ts +42 -0
  43. package/dist/react/astro/Notification.js +156 -0
  44. package/dist/react/astro/Notification.js.map +1 -0
  45. package/dist/react/astro/Progress.d.ts +39 -0
  46. package/dist/react/astro/Progress.js +149 -0
  47. package/dist/react/astro/Progress.js.map +1 -0
  48. package/dist/react/astro/SimulationControls.d.ts +136 -0
  49. package/dist/react/astro/SimulationControls.js +668 -0
  50. package/dist/react/astro/SimulationControls.js.map +1 -0
  51. package/dist/react/astro/StatusIndicator.d.ts +34 -0
  52. package/dist/react/astro/StatusIndicator.js +189 -0
  53. package/dist/react/astro/StatusIndicator.js.map +1 -0
  54. package/dist/react/astro/UnifiedTimeline.d.ts +106 -0
  55. package/dist/react/astro/UnifiedTimeline.js +1768 -0
  56. package/dist/react/astro/UnifiedTimeline.js.map +1 -0
  57. package/dist/react/astro/index.d.ts +63 -0
  58. package/dist/react/cards/AccessCard.d.ts +37 -0
  59. package/dist/react/cards/AccessCard.js +410 -0
  60. package/dist/react/cards/AccessCard.js.map +1 -0
  61. package/dist/react/cards/OrbitCard.d.ts +31 -0
  62. package/dist/react/cards/OrbitCard.js +372 -0
  63. package/dist/react/cards/OrbitCard.js.map +1 -0
  64. package/dist/react/cards/SpacecraftCard.d.ts +54 -0
  65. package/dist/react/cards/SpacecraftCard.js +941 -0
  66. package/dist/react/cards/SpacecraftCard.js.map +1 -0
  67. package/dist/react/cards/TelemetryCard.d.ts +40 -0
  68. package/dist/react/cards/TelemetryCard.js +742 -0
  69. package/dist/react/cards/TelemetryCard.js.map +1 -0
  70. package/dist/react/cards/TelemetryStreamCard.d.ts +59 -0
  71. package/dist/react/cards/TelemetryStreamCard.js +309 -0
  72. package/dist/react/cards/TelemetryStreamCard.js.map +1 -0
  73. package/dist/react/cards/index.d.ts +13 -0
  74. package/dist/react/charts/GroundTrackMap.d.ts +112 -0
  75. package/dist/react/charts/GroundTrackMap.js +1123 -0
  76. package/dist/react/charts/GroundTrackMap.js.map +1 -0
  77. package/dist/react/charts/GroundTrackMapLeaflet.d.ts +26 -0
  78. package/dist/react/charts/GroundTrackMapLeaflet.js +571 -0
  79. package/dist/react/charts/GroundTrackMapLeaflet.js.map +1 -0
  80. package/dist/react/charts/groundTrackMapLeafletTiles.d.ts +22 -0
  81. package/dist/react/charts/groundTrackMapLeafletTiles.js +11 -0
  82. package/dist/react/charts/groundTrackMapLeafletTiles.js.map +1 -0
  83. package/dist/react/charts/groundTrackMapLeafletUtils.d.ts +24 -0
  84. package/dist/react/charts/groundTrackMapLeafletUtils.js +109 -0
  85. package/dist/react/charts/groundTrackMapLeafletUtils.js.map +1 -0
  86. package/dist/react/charts/index.d.ts +10 -0
  87. package/dist/react/charts/unified/AstroChart.d.ts +24 -0
  88. package/dist/react/charts/unified/AstroChart.js +1405 -0
  89. package/dist/react/charts/unified/AstroChart.js.map +1 -0
  90. package/dist/react/charts/unified/PowerOverviewChart.d.ts +73 -0
  91. package/dist/react/charts/unified/PowerOverviewChart.js +488 -0
  92. package/dist/react/charts/unified/PowerOverviewChart.js.map +1 -0
  93. package/dist/react/charts/unified/domain.d.ts +845 -0
  94. package/dist/react/charts/unified/domain.js +3168 -0
  95. package/dist/react/charts/unified/domain.js.map +1 -0
  96. package/dist/react/charts/unified/generators.d.ts +276 -0
  97. package/dist/react/charts/unified/generators.js +518 -0
  98. package/dist/react/charts/unified/generators.js.map +1 -0
  99. package/dist/react/charts/unified/index.d.ts +55 -0
  100. package/dist/react/charts/unified/presets.d.ts +290 -0
  101. package/dist/react/charts/unified/presets.js +999 -0
  102. package/dist/react/charts/unified/presets.js.map +1 -0
  103. package/dist/react/charts/unified/sync.d.ts +69 -0
  104. package/dist/react/charts/unified/sync.js +219 -0
  105. package/dist/react/charts/unified/sync.js.map +1 -0
  106. package/dist/react/charts/unified/theme.d.ts +447 -0
  107. package/dist/react/charts/unified/theme.js +562 -0
  108. package/dist/react/charts/unified/theme.js.map +1 -0
  109. package/dist/react/charts/unified/types.d.ts +826 -0
  110. package/dist/react/charts/unified/useChartStream.d.ts +58 -0
  111. package/dist/react/charts/unified/useChartStream.js +226 -0
  112. package/dist/react/charts/unified/useChartStream.js.map +1 -0
  113. package/dist/react/chatgpt/AppCard.d.ts +59 -0
  114. package/dist/react/chatgpt/AppCard.js +306 -0
  115. package/dist/react/chatgpt/AppCard.js.map +1 -0
  116. package/dist/react/chatgpt/ChatGPTCard.d.ts +6 -0
  117. package/dist/react/chatgpt/index.d.ts +167 -0
  118. package/dist/react/chatgpt/index.js +166 -0
  119. package/dist/react/chatgpt/index.js.map +1 -0
  120. package/dist/react/context/DisplaySettingsContext.d.ts +107 -0
  121. package/dist/react/context/DisplaySettingsContext.js +169 -0
  122. package/dist/react/context/DisplaySettingsContext.js.map +1 -0
  123. package/dist/react/context/index.d.ts +5 -0
  124. package/dist/react/core/ActivityPlanner.d.ts +45 -0
  125. package/dist/react/core/ActivityPlanner.js +532 -0
  126. package/dist/react/core/ActivityPlanner.js.map +1 -0
  127. package/dist/react/core/AppBar.d.ts +71 -0
  128. package/dist/react/core/AppBar.js +817 -0
  129. package/dist/react/core/AppBar.js.map +1 -0
  130. package/dist/react/core/AstroIcon.d.ts +84 -0
  131. package/dist/react/core/AstroIcon.js +1243 -0
  132. package/dist/react/core/AstroIcon.js.map +1 -0
  133. package/dist/react/core/Badge.d.ts +27 -0
  134. package/dist/react/core/Badge.js +134 -0
  135. package/dist/react/core/Badge.js.map +1 -0
  136. package/dist/react/core/Button.d.ts +26 -0
  137. package/dist/react/core/Button.js +306 -0
  138. package/dist/react/core/Button.js.map +1 -0
  139. package/dist/react/core/CardHeader.d.ts +34 -0
  140. package/dist/react/core/CardHeader.js +316 -0
  141. package/dist/react/core/CardHeader.js.map +1 -0
  142. package/dist/react/core/ChatPanel.d.ts +627 -0
  143. package/dist/react/core/ChatPanel.js +1144 -0
  144. package/dist/react/core/ChatPanel.js.map +1 -0
  145. package/dist/react/core/Checkbox.d.ts +26 -0
  146. package/dist/react/core/Checkbox.js +130 -0
  147. package/dist/react/core/Checkbox.js.map +1 -0
  148. package/dist/react/core/ColorPickerPanel.d.ts +25 -0
  149. package/dist/react/core/ColorPickerPanel.js +293 -0
  150. package/dist/react/core/ColorPickerPanel.js.map +1 -0
  151. package/dist/react/core/CommandBuilder.d.ts +74 -0
  152. package/dist/react/core/CommandBuilder.js +518 -0
  153. package/dist/react/core/CommandBuilder.js.map +1 -0
  154. package/dist/react/core/ConfirmDialog.d.ts +45 -0
  155. package/dist/react/core/ConfirmDialog.js +315 -0
  156. package/dist/react/core/ConfirmDialog.js.map +1 -0
  157. package/dist/react/core/ConnectionForm.d.ts +57 -0
  158. package/dist/react/core/ConnectionForm.js +496 -0
  159. package/dist/react/core/ConnectionForm.js.map +1 -0
  160. package/dist/react/core/Container.d.ts +51 -0
  161. package/dist/react/core/Container.js +670 -0
  162. package/dist/react/core/Container.js.map +1 -0
  163. package/dist/react/core/CopyButton.d.ts +39 -0
  164. package/dist/react/core/CopyButton.js +105 -0
  165. package/dist/react/core/CopyButton.js.map +1 -0
  166. package/dist/react/core/DataTable.d.ts +113 -0
  167. package/dist/react/core/DataTable.js +446 -0
  168. package/dist/react/core/DataTable.js.map +1 -0
  169. package/dist/react/core/DataValue.d.ts +64 -0
  170. package/dist/react/core/DataValue.js +545 -0
  171. package/dist/react/core/DataValue.js.map +1 -0
  172. package/dist/react/core/Dialog.d.ts +32 -0
  173. package/dist/react/core/Dialog.js +201 -0
  174. package/dist/react/core/Dialog.js.map +1 -0
  175. package/dist/react/core/FileExplorer.d.ts +65 -0
  176. package/dist/react/core/FileExplorer.js +520 -0
  177. package/dist/react/core/FileExplorer.js.map +1 -0
  178. package/dist/react/core/GlassCard.d.ts +129 -0
  179. package/dist/react/core/GlassCard.js +375 -0
  180. package/dist/react/core/GlassCard.js.map +1 -0
  181. package/dist/react/core/HeaderIconWithStatus.d.ts +39 -0
  182. package/dist/react/core/HeaderIconWithStatus.js +157 -0
  183. package/dist/react/core/HeaderIconWithStatus.js.map +1 -0
  184. package/dist/react/core/HexViewer.d.ts +143 -0
  185. package/dist/react/core/HexViewer.js +1106 -0
  186. package/dist/react/core/HexViewer.js.map +1 -0
  187. package/dist/react/core/Icon.d.ts +32 -0
  188. package/dist/react/core/Icon.js +142 -0
  189. package/dist/react/core/Icon.js.map +1 -0
  190. package/dist/react/core/ImageGallery.d.ts +41 -0
  191. package/dist/react/core/ImageGallery.js +320 -0
  192. package/dist/react/core/ImageGallery.js.map +1 -0
  193. package/dist/react/core/Input.d.ts +38 -0
  194. package/dist/react/core/Input.js +288 -0
  195. package/dist/react/core/Input.js.map +1 -0
  196. package/dist/react/core/LimitsBar.d.ts +51 -0
  197. package/dist/react/core/LimitsBar.js +200 -0
  198. package/dist/react/core/LimitsBar.js.map +1 -0
  199. package/dist/react/core/LogViewer.d.ts +61 -0
  200. package/dist/react/core/LogViewer.js +599 -0
  201. package/dist/react/core/LogViewer.js.map +1 -0
  202. package/dist/react/core/MessageStream.d.ts +58 -0
  203. package/dist/react/core/MessageStream.js +455 -0
  204. package/dist/react/core/MessageStream.js.map +1 -0
  205. package/dist/react/core/MissionCalendar.d.ts +81 -0
  206. package/dist/react/core/MissionCalendar.js +1049 -0
  207. package/dist/react/core/MissionCalendar.js.map +1 -0
  208. package/dist/react/core/NumberInput.d.ts +85 -0
  209. package/dist/react/core/NumberInput.js +507 -0
  210. package/dist/react/core/NumberInput.js.map +1 -0
  211. package/dist/react/core/PacketViewer.d.ts +73 -0
  212. package/dist/react/core/PacketViewer.js +431 -0
  213. package/dist/react/core/PacketViewer.js.map +1 -0
  214. package/dist/react/core/Pagination.d.ts +30 -0
  215. package/dist/react/core/Pagination.js +190 -0
  216. package/dist/react/core/Pagination.js.map +1 -0
  217. package/dist/react/core/PinInput.d.ts +41 -0
  218. package/dist/react/core/PinInput.js +210 -0
  219. package/dist/react/core/PinInput.js.map +1 -0
  220. package/dist/react/core/Popover.d.ts +55 -0
  221. package/dist/react/core/Popover.js +288 -0
  222. package/dist/react/core/Popover.js.map +1 -0
  223. package/dist/react/core/Select.d.ts +42 -0
  224. package/dist/react/core/Select.js +303 -0
  225. package/dist/react/core/Select.js.map +1 -0
  226. package/dist/react/core/SideNav.d.ts +103 -0
  227. package/dist/react/core/SideNav.js +551 -0
  228. package/dist/react/core/SideNav.js.map +1 -0
  229. package/dist/react/core/SidePanel.d.ts +33 -0
  230. package/dist/react/core/SidePanel.js +199 -0
  231. package/dist/react/core/SidePanel.js.map +1 -0
  232. package/dist/react/core/Tabs.d.ts +47 -0
  233. package/dist/react/core/Tabs.js +129 -0
  234. package/dist/react/core/Tabs.js.map +1 -0
  235. package/dist/react/core/Toast.d.ts +56 -0
  236. package/dist/react/core/Toast.js +229 -0
  237. package/dist/react/core/Toast.js.map +1 -0
  238. package/dist/react/core/Toggle.d.ts +22 -0
  239. package/dist/react/core/Toggle.js +151 -0
  240. package/dist/react/core/Toggle.js.map +1 -0
  241. package/dist/react/core/Tooltip.d.ts +19 -0
  242. package/dist/react/core/Tooltip.js +179 -0
  243. package/dist/react/core/Tooltip.js.map +1 -0
  244. package/dist/react/core/Typography.d.ts +127 -0
  245. package/dist/react/core/Typography.js +187 -0
  246. package/dist/react/core/Typography.js.map +1 -0
  247. package/dist/react/core/index.d.ts +108 -0
  248. package/dist/react/core/layout/Box.d.ts +77 -0
  249. package/dist/react/core/layout/Box.js +126 -0
  250. package/dist/react/core/layout/Box.js.map +1 -0
  251. package/dist/react/core/layout/Center.d.ts +20 -0
  252. package/dist/react/core/layout/Center.js +34 -0
  253. package/dist/react/core/layout/Center.js.map +1 -0
  254. package/dist/react/core/layout/Divider.d.ts +16 -0
  255. package/dist/react/core/layout/Divider.js +108 -0
  256. package/dist/react/core/layout/Divider.js.map +1 -0
  257. package/dist/react/core/layout/Flex.d.ts +30 -0
  258. package/dist/react/core/layout/Flex.js +128 -0
  259. package/dist/react/core/layout/Flex.js.map +1 -0
  260. package/dist/react/core/layout/Grid.d.ts +36 -0
  261. package/dist/react/core/layout/Grid.js +142 -0
  262. package/dist/react/core/layout/Grid.js.map +1 -0
  263. package/dist/react/core/layout/Spacer.d.ts +8 -0
  264. package/dist/react/core/layout/Spacer.js +31 -0
  265. package/dist/react/core/layout/Spacer.js.map +1 -0
  266. package/dist/react/core/layout/Stack.d.ts +54 -0
  267. package/dist/react/core/layout/Stack.js +74 -0
  268. package/dist/react/core/layout/Stack.js.map +1 -0
  269. package/dist/react/core/layout/index.d.ts +38 -0
  270. package/dist/react/core/layout/responsive.d.ts +23 -0
  271. package/dist/react/core/layout/responsive.js +26 -0
  272. package/dist/react/core/layout/responsive.js.map +1 -0
  273. package/dist/react/core/layout/useBreakpoint.d.ts +77 -0
  274. package/dist/react/core/layout/useBreakpoint.js +73 -0
  275. package/dist/react/core/layout/useBreakpoint.js.map +1 -0
  276. package/dist/react/core/propertyConfig.d.ts +443 -0
  277. package/dist/react/core/propertyConfig.js +399 -0
  278. package/dist/react/core/propertyConfig.js.map +1 -0
  279. package/dist/react/hooks/index.d.ts +21 -0
  280. package/dist/react/hooks/useAccessWindows.d.ts +66 -0
  281. package/dist/react/hooks/useCompactMode.d.ts +82 -0
  282. package/dist/react/hooks/useCompactMode.js +62 -0
  283. package/dist/react/hooks/useCompactMode.js.map +1 -0
  284. package/dist/react/hooks/useLiveSelection.d.ts +57 -0
  285. package/dist/react/hooks/useSimulationPlayback.d.ts +97 -0
  286. package/dist/react/hooks/useSimulationTime.d.ts +61 -0
  287. package/dist/react/hooks/useSpacecraftPosition.d.ts +50 -0
  288. package/dist/react/hooks/useSpacecraftPosition.js +89 -0
  289. package/dist/react/hooks/useSpacecraftPosition.js.map +1 -0
  290. package/dist/react/hooks/useTelemetry.d.ts +55 -0
  291. package/dist/react/hooks/useTelemetry.js +73 -0
  292. package/dist/react/hooks/useTelemetry.js.map +1 -0
  293. package/dist/react/hooks/useZendirSession.d.ts +109 -0
  294. package/dist/react/hooks/useZendirSession.js +148 -0
  295. package/dist/react/hooks/useZendirSession.js.map +1 -0
  296. package/dist/react/index.d.ts +74 -0
  297. package/dist/react/shared/ErrorBoundary.d.ts +63 -0
  298. package/dist/react/shared/ErrorBoundary.js +142 -0
  299. package/dist/react/shared/ErrorBoundary.js.map +1 -0
  300. package/dist/react/shared/Skeleton.d.ts +110 -0
  301. package/dist/react/shared/Skeleton.js +324 -0
  302. package/dist/react/shared/Skeleton.js.map +1 -0
  303. package/dist/react/shared/index.d.ts +12 -0
  304. package/dist/react/theme/ThemeProvider.d.ts +385 -0
  305. package/dist/react/theme/ThemeProvider.js +1096 -0
  306. package/dist/react/theme/ThemeProvider.js.map +1 -0
  307. package/dist/react/theme/astro-tokens.d.ts +153 -0
  308. package/dist/react/theme/cardAccent.d.ts +75 -0
  309. package/dist/react/theme/cardAccent.js +137 -0
  310. package/dist/react/theme/cardAccent.js.map +1 -0
  311. package/dist/react/theme/config.d.ts +39 -0
  312. package/dist/react/theme/index.d.ts +9 -0
  313. package/dist/react/types.d.ts +360 -0
  314. package/dist/react/types.js +58 -0
  315. package/dist/react/types.js.map +1 -0
  316. package/dist/react/utils/index.d.ts +247 -0
  317. package/dist/react/utils/index.js +423 -0
  318. package/dist/react/utils/index.js.map +1 -0
  319. package/dist/react/visualizations/EclipseTimerCard.d.ts +17 -0
  320. package/dist/react/visualizations/EclipseTimerCard.js +250 -0
  321. package/dist/react/visualizations/EclipseTimerCard.js.map +1 -0
  322. package/dist/react/visualizations/LinkBudgetCard.d.ts +50 -0
  323. package/dist/react/visualizations/LinkBudgetCard.js +444 -0
  324. package/dist/react/visualizations/LinkBudgetCard.js.map +1 -0
  325. package/dist/react/visualizations/NavBallCard.d.ts +17 -0
  326. package/dist/react/visualizations/NavBallCard.js +243 -0
  327. package/dist/react/visualizations/NavBallCard.js.map +1 -0
  328. package/dist/react/visualizations/PropulsionCard.d.ts +37 -0
  329. package/dist/react/visualizations/PropulsionCard.js +298 -0
  330. package/dist/react/visualizations/PropulsionCard.js.map +1 -0
  331. package/dist/react/visualizations/SensorFootprintCard.d.ts +33 -0
  332. package/dist/react/visualizations/SensorFootprintCard.js +326 -0
  333. package/dist/react/visualizations/SensorFootprintCard.js.map +1 -0
  334. package/dist/react/visualizations/ThermalHeatmapCard.d.ts +38 -0
  335. package/dist/react/visualizations/ThermalHeatmapCard.js +372 -0
  336. package/dist/react/visualizations/ThermalHeatmapCard.js.map +1 -0
  337. package/dist/react/visualizations/index.d.ts +17 -0
  338. package/dist/react.d.ts +1 -0
  339. package/dist/react.js +421 -0
  340. package/dist/react.js.map +1 -0
  341. package/dist/shaders/atmosphere.frag.js +5 -0
  342. package/dist/shaders/atmosphere.frag.js.map +1 -0
  343. package/dist/shaders/atmosphere.vert.js +5 -0
  344. package/dist/shaders/atmosphere.vert.js.map +1 -0
  345. package/dist/shaders/stars.frag.js +5 -0
  346. package/dist/shaders/stars.frag.js.map +1 -0
  347. package/dist/shaders/stars.vert.js +5 -0
  348. package/dist/shaders/stars.vert.js.map +1 -0
  349. package/dist/style.css +143 -0
  350. package/dist/tokens/index.d.ts +296 -0
  351. package/dist/tokens/index.js +263 -0
  352. package/dist/tokens/index.js.map +1 -0
  353. package/dist/tokens/tokens.css +155 -0
  354. package/dist/types/index.d.ts +23 -0
  355. package/dist/types.d.ts +1 -0
  356. package/dist/types.js +2 -0
  357. package/dist/types.js.map +1 -0
  358. package/package.json +220 -0
  359. package/sdk-stub.js +22 -0
@@ -0,0 +1,614 @@
1
+ import { OrbitalElements, GroundStation } from '../types';
2
+
3
+ export type ViewMode = 'solar-system' | 'earth-orbit' | 'moon' | 'mars' | 'custom';
4
+ export type CameraMode = 'free' | 'follow' | 'orbit' | 'cinematic';
5
+ export type ObjectCategory = 'planet' | 'moon' | 'satellite' | 'debris' | 'station' | 'asteroid' | 'comet' | 'groundStation' | 'constellation';
6
+ export interface SpaceObject {
7
+ /** Unique identifier */
8
+ id: string;
9
+ /** Display name */
10
+ name: string;
11
+ /** Object category */
12
+ category: ObjectCategory;
13
+ /** NORAD catalog ID (for tracked objects) */
14
+ noradId?: number;
15
+ /** International designator */
16
+ intlDesignator?: string;
17
+ /** Position in ECI coordinates (km) */
18
+ position: Vector3D;
19
+ /** Velocity in ECI coordinates (km/s) */
20
+ velocity?: Vector3D;
21
+ /** Visual radius for rendering (km) */
22
+ visualRadius: number;
23
+ /** Color override */
24
+ color?: string;
25
+ /** Additional metadata */
26
+ metadata?: Record<string, unknown>;
27
+ }
28
+ export interface Satellite extends SpaceObject {
29
+ category: 'satellite';
30
+ /** Two-Line Element set */
31
+ tle?: TLEData;
32
+ /** Orbital elements */
33
+ orbitalElements?: OrbitalElements;
34
+ /** Operator/owner */
35
+ operator?: string;
36
+ /** Launch date */
37
+ launchDate?: string;
38
+ /** Operational status */
39
+ status?: 'operational' | 'inactive' | 'decaying' | 'unknown';
40
+ /** Constellation membership */
41
+ constellation?: string;
42
+ }
43
+ export interface Debris extends SpaceObject {
44
+ category: 'debris';
45
+ /** Radar cross-section (m²) */
46
+ rcs?: number;
47
+ /** Source event (fragmentation, collision, etc.) */
48
+ sourceEvent?: string;
49
+ /** Estimated size category */
50
+ sizeCategory?: 'small' | 'medium' | 'large';
51
+ }
52
+ export interface SpaceStation extends SpaceObject {
53
+ category: 'station';
54
+ /** Station type */
55
+ stationType?: 'iss' | 'tiangong' | 'commercial' | 'other';
56
+ /** Current crew count */
57
+ crewCount?: number;
58
+ /** Docked vehicles */
59
+ dockedVehicles?: string[];
60
+ }
61
+ export interface Asteroid extends SpaceObject {
62
+ category: 'asteroid';
63
+ /** Spectral type */
64
+ spectralType?: string;
65
+ /** Absolute magnitude */
66
+ absoluteMagnitude?: number;
67
+ /** Estimated diameter (km) */
68
+ diameter?: number;
69
+ /** Is potentially hazardous */
70
+ isPHA?: boolean;
71
+ /** Close approach data */
72
+ closeApproach?: CloseApproachData;
73
+ }
74
+ export interface TLEData {
75
+ line1: string;
76
+ line2: string;
77
+ epoch: Date;
78
+ /** Mean motion (revolutions/day) */
79
+ meanMotion: number;
80
+ /** Eccentricity */
81
+ eccentricity: number;
82
+ /** Inclination (degrees) */
83
+ inclination: number;
84
+ /** RAAN (degrees) */
85
+ raan: number;
86
+ /** Argument of perigee (degrees) */
87
+ argOfPerigee: number;
88
+ /** Mean anomaly (degrees) */
89
+ meanAnomaly: number;
90
+ /** B* drag term */
91
+ bstar: number;
92
+ }
93
+ /**
94
+ * Legacy visibility cone (ground-station based)
95
+ * @deprecated Use SatelliteCoverage for realistic satellite-to-ground cones
96
+ */
97
+ export interface VisibilityCone {
98
+ /** Ground station or region ID */
99
+ id: string;
100
+ /** Center position (lat, lon) */
101
+ center: {
102
+ latitude: number;
103
+ longitude: number;
104
+ };
105
+ /** Minimum elevation angle (degrees) */
106
+ minElevation: number;
107
+ /** Cone color */
108
+ color?: string;
109
+ /** Cone opacity */
110
+ opacity?: number;
111
+ /** Label text */
112
+ label?: string;
113
+ }
114
+ /**
115
+ * Satellite coverage/sensor visualization
116
+ *
117
+ * This is a VISUALIZATION type - all geometry data comes from Zendir SDK.
118
+ * The SDK computes the actual coverage; this component just renders it.
119
+ *
120
+ * ## SDK Compatibility
121
+ *
122
+ * The `footprintPolygon` should come from Zendir SDK's sensor/coverage calculations.
123
+ * You can provide just the corner vertices (e.g., 4 points for a rectangular FOV)
124
+ * and the component will automatically interpolate along great circles to create
125
+ * a properly curved footprint that follows the Earth's spherical surface.
126
+ *
127
+ * Example SDK integration:
128
+ * ```typescript
129
+ * const coverage = await zendirClient.getSensorCoverage(satelliteId, sensorId);
130
+ * // coverage.footprintPolygon contains the boundary vertices
131
+ * ```
132
+ *
133
+ * ## Rendering Approach
134
+ *
135
+ * Uses spherical linear interpolation (SLERP) to subdivide polygon edges,
136
+ * ensuring the rendered coverage follows the sphere's curvature rather than
137
+ * cutting through it as a flat plane would.
138
+ */
139
+ export interface SatelliteCoverage {
140
+ /** Unique coverage ID */
141
+ id: string;
142
+ /** Satellite ID this coverage belongs to */
143
+ satelliteId: string;
144
+ /** Sensor/instrument name */
145
+ sensorName?: string;
146
+ /**
147
+ * Satellite position in scene coordinates (x, y, z)
148
+ * If not provided, will look up from satelliteId in scene
149
+ */
150
+ satellitePosition?: {
151
+ x: number;
152
+ y: number;
153
+ z: number;
154
+ };
155
+ /**
156
+ * Nadir/boresight point on Earth surface (lat, lon)
157
+ * This is where the sensor center points (from SDK)
158
+ */
159
+ nadirPoint?: {
160
+ latitude: number;
161
+ longitude: number;
162
+ };
163
+ /**
164
+ * Footprint polygon corner vertices (lat, lon) - the coverage boundary on Earth
165
+ *
166
+ * Computed by Zendir SDK based on sensor FOV, pointing, and satellite position.
167
+ * Only corner points are needed (e.g., 4 points for rectangular coverage).
168
+ * The UI automatically interpolates along great circles for spherical accuracy.
169
+ *
170
+ * For best results, provide vertices in clockwise or counter-clockwise order.
171
+ */
172
+ footprintPolygon?: Array<{
173
+ latitude: number;
174
+ longitude: number;
175
+ }>;
176
+ /**
177
+ * Cone geometry (alternative to footprint polygon)
178
+ * Half-angle of sensor field of view in degrees
179
+ * Used to render a simple circular cone if no footprint polygon provided
180
+ */
181
+ halfAngle?: number;
182
+ /** Cone/footprint color */
183
+ color?: string;
184
+ /** Opacity (0-1) */
185
+ opacity?: number;
186
+ /** Show nadir line from satellite to ground */
187
+ showNadirLine?: boolean;
188
+ /** Show filled footprint area */
189
+ showFootprint?: boolean;
190
+ /** Show cone beam from satellite */
191
+ showCone?: boolean;
192
+ /** Coverage target/region name (for tooltip) */
193
+ targetName?: string;
194
+ /** Overpass time string (from SDK, e.g., "0.01:06") */
195
+ overpassTime?: string;
196
+ /** Is currently active/in view */
197
+ isActive?: boolean;
198
+ }
199
+ export interface CoverageRegion {
200
+ /** Region identifier */
201
+ id: string;
202
+ /** Region name */
203
+ name: string;
204
+ /** Polygon vertices (lat, lon pairs) */
205
+ polygon?: Array<{
206
+ latitude: number;
207
+ longitude: number;
208
+ }>;
209
+ /** Or circular region */
210
+ center?: {
211
+ latitude: number;
212
+ longitude: number;
213
+ };
214
+ radius?: number;
215
+ /** Coverage quality/value */
216
+ value?: number;
217
+ /** Color */
218
+ color?: string;
219
+ }
220
+ export interface OverpassInfo {
221
+ /** Region/station ID */
222
+ targetId: string;
223
+ /** Target name */
224
+ targetName: string;
225
+ /** Time until next overpass (seconds) */
226
+ timeToOverpass: number;
227
+ /** Overpass duration (seconds) */
228
+ duration: number;
229
+ /** Maximum elevation during pass */
230
+ maxElevation?: number;
231
+ }
232
+ export interface CoverageHexGrid {
233
+ /** Grid resolution (H3 resolution 0-15) */
234
+ resolution: number;
235
+ /** Hexagon data */
236
+ hexagons: Array<{
237
+ /** H3 index or center coordinates */
238
+ id: string;
239
+ /** Coverage value (0-1) */
240
+ value: number;
241
+ /** Center lat/lon */
242
+ center: {
243
+ latitude: number;
244
+ longitude: number;
245
+ };
246
+ }>;
247
+ /** Color scale */
248
+ colorScale?: {
249
+ min: string;
250
+ max: string;
251
+ };
252
+ }
253
+ export interface CoverageCell {
254
+ /** Cell identifier */
255
+ id: string;
256
+ /** Center latitude */
257
+ latitude: number;
258
+ /** Center longitude */
259
+ longitude: number;
260
+ /** Coverage value (0-1, used for heatmap color) */
261
+ value: number;
262
+ /** Custom color override */
263
+ color?: string;
264
+ }
265
+ export interface OrbitDesignArc {
266
+ /** Arc identifier */
267
+ id: string;
268
+ /** Orbital altitude (km) */
269
+ radius: number;
270
+ /** Start angle (radians) */
271
+ startAngle: number;
272
+ /** End angle (radians) */
273
+ endAngle: number;
274
+ /** Inclination (degrees) */
275
+ inclination?: number;
276
+ /** Arc color */
277
+ color?: string;
278
+ /** Number of segments */
279
+ segments?: number;
280
+ /** Arc label */
281
+ label?: string;
282
+ }
283
+ export interface OrbitPath {
284
+ /** Object ID */
285
+ objectId: string;
286
+ /** Array of position points */
287
+ points: Vector3D[];
288
+ /** Time span (seconds) */
289
+ timeSpan: number;
290
+ /** Is future prediction */
291
+ isFuture?: boolean;
292
+ /** Orbit color */
293
+ color?: string;
294
+ }
295
+ export interface ManeuverNode {
296
+ /** Maneuver ID */
297
+ id: string;
298
+ /** Execution time */
299
+ time: Date;
300
+ /** Delta-V vector (km/s) */
301
+ deltaV: Vector3D;
302
+ /** Maneuver type */
303
+ type?: 'prograde' | 'retrograde' | 'normal' | 'antinormal' | 'radial' | 'antiradial';
304
+ /** Planned/executed */
305
+ status?: 'planned' | 'executed';
306
+ }
307
+ export interface CloseApproachData {
308
+ /** Time of closest approach */
309
+ time: Date;
310
+ /** Distance (km) */
311
+ distance: number;
312
+ /** Relative velocity (km/s) */
313
+ relativeVelocity: number;
314
+ /** Target body */
315
+ body?: string;
316
+ }
317
+ export interface TimeState {
318
+ /** Current simulation time */
319
+ currentTime: Date;
320
+ /** Time scale (1 = realtime, 60 = 1min/sec, etc.) */
321
+ timeScale: number;
322
+ /** Is playing */
323
+ isPlaying: boolean;
324
+ /** Reference epoch */
325
+ epoch?: Date;
326
+ }
327
+ export type ToolType = 'select' | 'measure' | 'orbit-designer' | 'coverage-analysis' | 'conjunction-warning';
328
+ export interface ToolState {
329
+ activeTool: ToolType;
330
+ measurementPoints?: Vector3D[];
331
+ orbitDesignerState?: {
332
+ inclination: number;
333
+ altitude: number;
334
+ eccentricity: number;
335
+ };
336
+ }
337
+ export interface LayerVisibility {
338
+ planets: boolean;
339
+ moons: boolean;
340
+ satellites: boolean;
341
+ debris: boolean;
342
+ stations: boolean;
343
+ asteroids: boolean;
344
+ groundStations: boolean;
345
+ orbits: boolean;
346
+ labels: boolean;
347
+ constellations: boolean;
348
+ coverage: boolean;
349
+ atmosphere: boolean;
350
+ stars: boolean;
351
+ grid: boolean;
352
+ terminator: boolean;
353
+ }
354
+ export interface SelectionState {
355
+ /** Selected object ID */
356
+ selectedId: string | null;
357
+ /** Selected object data */
358
+ selectedObject: SpaceObject | null;
359
+ /** Hovered object ID */
360
+ hoveredId: string | null;
361
+ /** Multi-selection IDs */
362
+ multiSelect?: string[];
363
+ }
364
+ export interface CameraState {
365
+ /** Camera position (km from origin) */
366
+ position: Vector3D;
367
+ /** Look-at target (km from origin) */
368
+ target: Vector3D;
369
+ /** Up vector */
370
+ up: Vector3D;
371
+ /** Field of view (degrees) */
372
+ fov: number;
373
+ /** Near clipping plane */
374
+ near: number;
375
+ /** Far clipping plane */
376
+ far: number;
377
+ }
378
+ export interface SceneConfig {
379
+ /** Earth radius in scene units */
380
+ earthRadius: number;
381
+ /** Scale factor (km to scene units) */
382
+ scaleFactor: number;
383
+ /** Maximum render distance */
384
+ maxDistance: number;
385
+ /** LOD thresholds */
386
+ lodThresholds: {
387
+ high: number;
388
+ medium: number;
389
+ low: number;
390
+ };
391
+ }
392
+ export interface ZenSpace3DCallbacks {
393
+ /** Object selection changed */
394
+ onSelect?: (object: SpaceObject | null) => void;
395
+ /** Object hovered */
396
+ onHover?: (object: SpaceObject | null) => void;
397
+ /** Object double-clicked */
398
+ onDoubleClick?: (object: SpaceObject) => void;
399
+ /** Camera focused on object (flyTo completed) */
400
+ onFocus?: (object: SpaceObject | {
401
+ id: string;
402
+ }) => void;
403
+ /** Time changed */
404
+ onTimeChange?: (time: Date) => void;
405
+ /** View/camera changed */
406
+ onViewChange?: (state: CameraState) => void;
407
+ /** Measurement completed */
408
+ onMeasure?: (distance: number, from: Vector3D, to: Vector3D) => void;
409
+ /** Tool action */
410
+ onToolAction?: (tool: ToolType, data: unknown) => void;
411
+ }
412
+ export interface ZenSpace3DProps {
413
+ /** Satellite objects */
414
+ satellites?: Satellite[];
415
+ /** Debris objects */
416
+ debris?: Debris[];
417
+ /** Space stations */
418
+ stations?: SpaceStation[];
419
+ /** Ground stations */
420
+ groundStations?: GroundStation[];
421
+ /** Asteroids (for Solar System view) */
422
+ asteroids?: Asteroid[];
423
+ /** Custom space objects */
424
+ customObjects?: SpaceObject[];
425
+ /** Initial view mode */
426
+ view?: ViewMode;
427
+ /** Camera mode */
428
+ cameraMode?: CameraMode;
429
+ /** Focused object ID */
430
+ focusedObjectId?: string;
431
+ /** Initial camera state override */
432
+ initialCamera?: Partial<CameraState>;
433
+ /** Initial simulation time */
434
+ initialTime?: Date;
435
+ /** Time scale (1 = realtime) */
436
+ timeScale?: number;
437
+ /** Auto-play on mount */
438
+ autoPlay?: boolean;
439
+ /**
440
+ * Sun direction vector for lighting and atmosphere effects
441
+ * Typically from Zendir SDK sun position calculation
442
+ * @example { x: 1, y: 0.3, z: 0.5 } // normalized direction to sun
443
+ */
444
+ sunDirection?: {
445
+ x: number;
446
+ y: number;
447
+ z: number;
448
+ };
449
+ /**
450
+ * Planet positions for solar system view (from Zendir SDK)
451
+ * Keys are planet IDs, values are positions
452
+ */
453
+ planetPositions?: Record<string, {
454
+ x: number;
455
+ y: number;
456
+ z: number;
457
+ }>;
458
+ /** Legacy visibility cones (region-based) */
459
+ visibilityCones?: VisibilityCone[];
460
+ /** Satellite coverage cones (realistic satellite-to-ground) - Zendir SDK compatible */
461
+ satelliteCoverages?: SatelliteCoverage[];
462
+ /** Coverage regions */
463
+ coverageRegions?: CoverageRegion[];
464
+ /** Coverage hex grid */
465
+ coverageHexGrid?: CoverageHexGrid;
466
+ /** Overpass information */
467
+ overpasses?: OverpassInfo[];
468
+ /** Orbit paths to display */
469
+ orbitPaths?: OrbitPath[];
470
+ /** Orbit design arcs (colored arc segments) */
471
+ orbitDesignArcs?: OrbitDesignArc[];
472
+ /** Communication links between objects */
473
+ communicationLinks?: Array<{
474
+ id: string;
475
+ fromId: string;
476
+ toId: string;
477
+ type: 'uplink' | 'downlink' | 'crosslink' | 'relay';
478
+ status: 'active' | 'idle' | 'blocked';
479
+ color?: string;
480
+ bandwidth?: number;
481
+ latency?: number;
482
+ signalStrength?: number;
483
+ }>;
484
+ /** Show XYZ axis helper */
485
+ showAxisHelper?: boolean;
486
+ /** Maneuver nodes */
487
+ maneuverNodes?: ManeuverNode[];
488
+ /** Layer visibility overrides */
489
+ layers?: Partial<LayerVisibility>;
490
+ /** Show controls panel */
491
+ showControls?: boolean;
492
+ /** Show timeline */
493
+ showTimeline?: boolean;
494
+ /** Show tools panel */
495
+ showTools?: boolean;
496
+ /** Show info panel on selection */
497
+ showInfoPanel?: boolean;
498
+ /** Show legend */
499
+ showLegend?: boolean;
500
+ /** Show stats (FPS, object count) */
501
+ showStats?: boolean;
502
+ /** Available tools */
503
+ tools?: ToolType[];
504
+ /** Canvas width */
505
+ width?: number | string;
506
+ /** Canvas height */
507
+ height?: number | string;
508
+ /** Theme override */
509
+ theme?: 'dark' | 'light' | 'purple-hue';
510
+ /** Event callbacks */
511
+ callbacks?: ZenSpace3DCallbacks;
512
+ /** Maximum objects to render (for performance) */
513
+ maxObjects?: number;
514
+ /** Enable post-processing effects */
515
+ enablePostProcessing?: boolean;
516
+ /** Pixel ratio limit */
517
+ maxPixelRatio?: number;
518
+ /** MCP context for tool integration */
519
+ mcpContext?: unknown;
520
+ /** Custom scene configuration */
521
+ sceneConfig?: Partial<SceneConfig>;
522
+ /** Custom CSS class */
523
+ className?: string;
524
+ /** Custom inline styles */
525
+ style?: React.CSSProperties;
526
+ }
527
+ export interface ZenSpace3DHandle {
528
+ /** Focus camera on object (legacy alias for flyTo) */
529
+ focusOn: (objectId: string, options?: {
530
+ zoom?: number;
531
+ animate?: boolean;
532
+ }) => void;
533
+ /**
534
+ * Fly camera to an object with smooth animation
535
+ * @param objectId - ID of target object (satellite, station, planet, etc.)
536
+ * @param options.animate - Whether to animate the transition (default: true)
537
+ * @param options.distance - Override viewing distance
538
+ * @param options.offset - Custom camera offset from target
539
+ */
540
+ flyTo: (objectId: string, options?: {
541
+ animate?: boolean;
542
+ distance?: number;
543
+ offset?: {
544
+ x: number;
545
+ y: number;
546
+ z: number;
547
+ };
548
+ }) => void;
549
+ /** Set view mode */
550
+ setView: (mode: ViewMode) => void;
551
+ /** Set time */
552
+ setTime: (time: Date) => void;
553
+ /** Set time scale */
554
+ setTimeScale: (scale: number) => void;
555
+ /** Play/pause */
556
+ togglePlay: () => void;
557
+ /** Set layer visibility */
558
+ setLayerVisibility: (layer: keyof LayerVisibility, visible: boolean) => void;
559
+ /** Get current camera state */
560
+ getCameraState: () => CameraState;
561
+ /** Set camera state */
562
+ setCameraState: (state: Partial<CameraState>) => void;
563
+ /** Export screenshot */
564
+ exportImage: (format?: 'png' | 'jpeg') => string;
565
+ /** Export 3D scene */
566
+ exportScene: (format?: 'glb' | 'gltf') => Blob;
567
+ /** Get visible objects */
568
+ getVisibleObjects: () => SpaceObject[];
569
+ /** Find objects by query */
570
+ findObjects: (query: string) => SpaceObject[];
571
+ /** Add object dynamically */
572
+ addObject: (object: SpaceObject) => void;
573
+ /** Remove object dynamically */
574
+ removeObject: (objectId: string) => void;
575
+ /** Update object */
576
+ updateObject: (objectId: string, updates: Partial<SpaceObject>) => void;
577
+ /** Measure distance between two points/objects */
578
+ measureDistance: (from: string | Vector3D, to: string | Vector3D) => number;
579
+ }
580
+ export interface Vector3D {
581
+ x: number;
582
+ y: number;
583
+ z: number;
584
+ }
585
+ export interface LatLonAlt {
586
+ latitude: number;
587
+ longitude: number;
588
+ altitude: number;
589
+ }
590
+ export interface SphericalCoords {
591
+ radius: number;
592
+ theta: number;
593
+ phi: number;
594
+ }
595
+ export interface SceneObject {
596
+ id: string;
597
+ mesh: unknown;
598
+ data: SpaceObject;
599
+ lod: 'high' | 'medium' | 'low' | 'point';
600
+ visible: boolean;
601
+ lastUpdate: number;
602
+ }
603
+ export interface OrbitLineObject {
604
+ id: string;
605
+ line: unknown;
606
+ objectId: string;
607
+ points: Vector3D[];
608
+ }
609
+ export interface LabelObject {
610
+ id: string;
611
+ sprite: unknown;
612
+ text: string;
613
+ objectId: string;
614
+ }