@zendir/ui 0.5.0 → 0.6.1

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 +419 -386
  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 -571
  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 +5 -6
  229. package/dist/react/core/navigation/SideNav.js +855 -629
  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 +313 -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 +26 -3
  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 +533 -155
  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":"OrbitCard.js","sources":["../../../src/react/cards/OrbitCard.tsx"],"sourcesContent":["/**\n * @zendir/ui - OrbitCard Component\n * \n * Enterprise-grade orbital parameters display card.\n * \n * AstroUXDS Compliance:\n * - Orbit type colors use Zendir-Astro data viz palette (categorical, not status)\n * - Tabular numbers for orbital data display\n * - Sentence-case labels per Tier 3 compliance\n * \n * Features:\n * - Full null-safety with graceful fallbacks\n * - WCAG 2.1 AA accessibility\n * - Computed orbital parameters (period, velocity)\n * - Orbit type classification with Zendir-branded color coding\n * - Loading and empty states\n */\n\nimport React, { memo, useMemo } from 'react';\nimport type { SpacecraftPosition } from '../types';\nimport { estimateOrbitalPeriod, estimateOrbitalVelocity } from '../types';\nimport { useTheme } from '../theme';\nimport { Icon } from '../core/display/Icon';\nimport { AstroIcon } from '../core/display/AstroIcon';\nimport { CardHeader } from '../core/display/CardHeader';\nimport { useCompactMode } from '../hooks';\nimport {\n formatAltitude,\n formatVelocity,\n formatDuration,\n formatCoordinate,\n formatDegrees,\n formatTime,\n classNames,\n safeAccentText,\n} from '../utils';\n\nexport interface OrbitCardProps {\n /** Spacecraft position data */\n spacecraft?: SpacecraftPosition;\n /** Show computed orbital parameters (period, velocity) */\n showComputed?: boolean;\n /** Loading state */\n loading?: boolean;\n /** Custom className */\n className?: string;\n /** Enable compact mode - shows condensed view that expands on hover/click */\n compact?: boolean;\n /** Start expanded when in compact mode (pinned state) */\n defaultExpanded?: boolean;\n /** Callback when pin state changes in compact mode */\n onPinChange?: (isPinned: boolean) => void;\n}\n\n/**\n * Orbit type information with color and description\n */\ninterface OrbitTypeInfo {\n color: string;\n description: string;\n}\n\n/**\n * Get orbit type info with Zendir-branded colors\n * Uses AstroUXDS data visualization palette for orbit classification\n */\nfunction getOrbitTypeInfo(orbitType: string | undefined): OrbitTypeInfo {\n // Orbit type colors using Zendir-Astro palette\n // Non-status colors since orbit type is categorical, not status\n const types: Record<string, OrbitTypeInfo> = {\n LEO: { color: '#3E3CFF', description: 'Low Earth Orbit (200-2,000 km)' }, // Zendir Electric\n MEO: { color: '#3548C0', description: 'Medium Earth Orbit (2,000-35,786 km)' }, // Zendir Prussian Blue Light\n GEO: { color: '#9D70FF', description: 'Geostationary Orbit (~35,786 km)' }, // Zendir Purple\n HEO: { color: '#1B2DA0', description: 'Highly Elliptical Orbit' }, // Zendir Prussian Blue\n SSO: { color: '#B48DFF', description: 'Sun-Synchronous Orbit' }, // Zendir Purple Light\n POLAR: { color: '#6B69FF', description: 'Polar Orbit' }, // Zendir Electric Light\n MOLNIYA: { color: '#C9A8FF', description: 'Molniya Orbit (12h period)' }, // Zendir Purple Lighter\n };\n\n return types[orbitType?.toUpperCase() ?? ''] ?? { color: '#a4abb6', description: 'Unknown orbit type' };\n}\n\n/**\n * OrbitCard - Displays spacecraft orbital parameters\n * \n * @example\n * ```tsx\n * <OrbitCard\n * spacecraft={spacecraftData}\n * showComputed\n * />\n * ```\n */\nexport const OrbitCard = memo(function OrbitCard({\n spacecraft,\n showComputed = true,\n loading = false,\n className = '',\n compact = false,\n defaultExpanded = false,\n onPinChange,\n}: OrbitCardProps): React.ReactElement {\n const { tokens, theme, prefersReducedMotion } = useTheme();\n const isTransparentTheme = theme === 'transparent' || theme === 'transparent-bold' || theme === 'transparent-minimal';\n const isBoldVariant = theme === 'transparent-bold';\n const isMinimalVariant = theme === 'transparent-minimal';\n const useGlassMode = isBoldVariant || isMinimalVariant;\n \n // Glass accent colors for bold/minimal themes (matching Container/AstroChart)\n const glassAccentColor = tokens.colors.accent.primary;\n const glassAccentMuted = `${glassAccentColor}66`;\n \n // Use transparent background with blur for transparent themes (matching Timeline)\n const cardBg = isTransparentTheme ? 'transparent' : tokens.colors.background.surface;\n const cardGlass = isTransparentTheme ? { \n backdropFilter: 'blur(12px)' as const, \n WebkitBackdropFilter: 'blur(12px)' as const,\n } : {};\n \n // Glass mode container style (matching Container/AstroChart for bold/minimal)\n const glassContainerStyle: React.CSSProperties = useGlassMode ? {\n backgroundColor: 'rgba(10, 15, 25, 0.35)',\n backdropFilter: 'blur(12px)',\n WebkitBackdropFilter: 'blur(12px)',\n border: `1px solid ${glassAccentMuted}`,\n borderTop: isBoldVariant ? `2px solid ${glassAccentColor}` : `1px solid ${glassAccentColor}`,\n } : {};\n\n // Compact mode state management\n const { expanded, isPinned, handlers, transitionDuration } = useCompactMode({\n compact,\n defaultExpanded,\n onPinChange,\n });\n\n // Computed orbital parameters\n const orbitInfo = useMemo(() => getOrbitTypeInfo(spacecraft?.orbitType), [spacecraft?.orbitType]);\n\n const computedPeriod = useMemo(() => {\n if (!spacecraft?.altitude) return null;\n try {\n return estimateOrbitalPeriod(spacecraft.altitude);\n } catch {\n return null;\n }\n }, [spacecraft?.altitude]);\n\n const computedVelocity = useMemo(() => {\n if (!spacecraft?.altitude) return null;\n try {\n return estimateOrbitalVelocity(spacecraft.altitude);\n } catch {\n return null;\n }\n }, [spacecraft?.altitude]);\n\n // Loading state\n if (loading) {\n return (\n <div\n className={classNames('zendir-orbit-card', 'loading', className)}\n role=\"article\"\n aria-busy=\"true\"\n aria-label=\"Loading orbit data\"\n style={{\n backgroundColor: cardBg,\n ...cardGlass,\n ...(tokens.colors.border.cardStyle ?? {}),\n borderRadius: tokens.borderRadius.lg,\n padding: tokens.spacing.md,\n minHeight: 200,\n }}\n >\n <div style={{ display: 'flex', alignItems: 'center', gap: 12, marginBottom: 20 }}>\n <div style={{ width: 40, height: 40, borderRadius: 8, backgroundColor: 'rgba(255,255,255,0.1)' }} />\n <div style={{ flex: 1 }}>\n <div style={{ height: 18, width: '50%', backgroundColor: 'rgba(255,255,255,0.1)', borderRadius: 4 }} />\n <div style={{ height: 12, width: '70%', backgroundColor: 'rgba(255,255,255,0.06)', borderRadius: 4, marginTop: 6 }} />\n </div>\n </div>\n <div style={{ display: 'grid', gridTemplateColumns: 'repeat(2, 1fr)', gap: 16 }}>\n {[1, 2, 3, 4].map((i) => (\n <div key={i}>\n <div style={{ height: 10, width: '40%', backgroundColor: 'rgba(255,255,255,0.06)', borderRadius: 2 }} />\n <div style={{ height: 20, width: '60%', backgroundColor: 'rgba(255,255,255,0.1)', borderRadius: 4, marginTop: 4 }} />\n </div>\n ))}\n </div>\n </div>\n );\n }\n\n // Empty state\n if (!spacecraft) {\n return (\n <div\n className={classNames('zendir-orbit-card', 'empty', className)}\n role=\"article\"\n aria-label=\"No orbit data\"\n style={{\n backgroundColor: cardBg,\n ...cardGlass,\n ...(tokens.colors.border.cardStyleDashed ?? {}),\n borderRadius: tokens.borderRadius.lg,\n padding: tokens.spacing.lg,\n textAlign: 'center',\n color: tokens.colors.text.tertiary,\n }}\n >\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 24 24\" fill=\"currentColor\" style={{ opacity: 0.5, marginBottom: 8 }}>\n <path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z\" />\n <ellipse cx=\"12\" cy=\"12\" rx=\"10\" ry=\"4\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1\" strokeDasharray=\"3,3\" />\n </svg>\n <p style={{ margin: 0, fontSize: tokens.typography.body[2].fontSize }}>No orbit data available</p>\n </div>\n );\n }\n\n // Compact view - shows key orbit info in a single row\n if (compact && !expanded) {\n return (\n <article\n className={classNames('zendir-orbit-card', 'compact', className)}\n {...handlers}\n aria-label={`Orbit: ${spacecraft.orbitType ?? 'Unknown'} (compact)`}\n style={{\n position: 'relative',\n overflow: 'hidden',\n ...(useGlassMode ? glassContainerStyle : {\n backgroundColor: cardBg,\n ...cardGlass,\n ...(tokens.colors.border.cardStyle ?? {}),\n }),\n borderRadius: tokens.borderRadius.lg,\n padding: `${tokens.spacing.sm} ${tokens.spacing.md}`,\n fontFamily: tokens.typography.fontFamily.primary,\n color: tokens.colors.text.primary,\n fontSize: tokens.typography.fontSize.sm,\n cursor: 'pointer',\n transition: `all ${transitionDuration} ease-out`,\n transform: 'scale(1)',\n }}\n onMouseEnter={(e) => {\n handlers.onMouseEnter();\n if (!prefersReducedMotion) {\n (e.currentTarget as HTMLElement).style.transform = 'scale(1.01)';\n (e.currentTarget as HTMLElement).style.boxShadow = `0 4px 12px ${orbitInfo.color}20`;\n }\n }}\n onMouseLeave={(e) => {\n handlers.onMouseLeave();\n (e.currentTarget as HTMLElement).style.transform = 'scale(1)';\n (e.currentTarget as HTMLElement).style.boxShadow = '';\n }}\n >\n {/* Glass gradient overlay for bold/minimal themes */}\n {useGlassMode && (\n <div\n style={{\n position: 'absolute',\n inset: 0,\n background: 'linear-gradient(135deg, rgba(255,255,255,0.03) 0%, transparent 50%, rgba(0,0,0,0.1) 100%)',\n pointerEvents: 'none',\n zIndex: 0,\n }}\n />\n )}\n <div style={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between', gap: tokens.spacing.md, position: 'relative', zIndex: 1 }}>\n {/* Left side: Icon + Title + Accent line */}\n <div style={{ display: 'flex', alignItems: 'center', gap: tokens.spacing.sm, flex: 1, minWidth: 0 }}>\n <AstroIcon name=\"360\" size={16} color={orbitInfo.color} />\n <span style={{ \n fontWeight: tokens.typography.fontWeight.medium,\n color: useGlassMode ? glassAccentColor : undefined,\n textShadow: useGlassMode ? `0 0 16px ${glassAccentMuted}` : undefined,\n }}>\n Orbit\n </span>\n {useGlassMode && (\n <div style={{\n flex: 1,\n height: isBoldVariant ? '2px' : '1px',\n minWidth: 20,\n background: `linear-gradient(90deg, ${glassAccentColor} 0%, ${glassAccentMuted} 60%, transparent 100%)`,\n boxShadow: isBoldVariant ? `0 0 8px ${glassAccentMuted}` : undefined,\n }} />\n )}\n </div>\n \n {/* Right side: Orbit badge + Altitude + Pin */}\n <div style={{ display: 'flex', alignItems: 'center', gap: tokens.spacing.sm, flexShrink: 0 }}>\n <span\n style={{\n backgroundColor: `${orbitInfo.color}20`,\n color: orbitInfo.color,\n padding: `2px 6px`,\n borderRadius: tokens.borderRadius.sm,\n fontSize: tokens.typography.fontSize.xs,\n fontWeight: tokens.typography.fontWeight.medium,\n }}\n >\n {spacecraft.orbitType ?? '—'}\n </span>\n <span style={{ \n fontVariantNumeric: 'tabular-nums', \n fontFamily: tokens.typography.fontFamily.mono,\n fontSize: tokens.typography.fontSize.xs,\n }}>\n {formatAltitude(spacecraft.altitude)}\n </span>\n {isPinned && (\n <Icon name=\"lock\" size={12} color={tokens.colors.accent.primary} />\n )}\n </div>\n </div>\n </article>\n );\n }\n\n const labelStyle: React.CSSProperties = {\n color: tokens.colors.text.secondary, // WCAG AA compliant - 4.5:1 contrast\n fontSize: tokens.typography.fontSize.xs,\n fontWeight: tokens.typography.fontWeight.medium,\n };\n\n const valueStyle: React.CSSProperties = {\n color: tokens.colors.text.primary,\n fontWeight: tokens.typography.fontWeight.medium,\n fontFamily: tokens.typography.fontFamily.mono,\n fontVariantNumeric: 'tabular-nums',\n fontSize: tokens.typography.fontSize.md,\n marginTop: 2,\n };\n\n return (\n <article\n className={classNames('zendir-orbit-card', compact ? 'expanded' : '', className)}\n {...(compact ? handlers : {})}\n role={compact ? handlers.role : 'article'}\n tabIndex={compact ? handlers.tabIndex : undefined}\n aria-expanded={compact ? handlers['aria-expanded'] : undefined}\n aria-label={`Orbit data for ${spacecraft.name ?? spacecraft.id}`}\n style={{\n position: 'relative',\n overflow: 'hidden',\n ...(useGlassMode ? glassContainerStyle : {\n backgroundColor: cardBg,\n ...cardGlass,\n ...(tokens.colors.border.cardStyle ?? {}),\n }),\n borderRadius: tokens.borderRadius.lg,\n padding: tokens.spacing.md,\n fontFamily: tokens.typography.fontFamily.primary,\n cursor: compact ? 'pointer' : undefined,\n transition: compact ? `all ${transitionDuration} ease-out` : undefined,\n color: tokens.colors.text.primary,\n fontSize: tokens.typography.fontSize.sm,\n }}\n >\n {/* Glass gradient overlay for bold/minimal themes */}\n {useGlassMode && (\n <div\n style={{\n position: 'absolute',\n inset: 0,\n background: 'linear-gradient(135deg, rgba(255,255,255,0.03) 0%, transparent 50%, rgba(0,0,0,0.1) 100%)',\n pointerEvents: 'none',\n zIndex: 0,\n }}\n />\n )}\n \n {/* Unified Card Header - handles all theme variants */}\n {/* OrbitCard uses categorical colors (orbit type), not status colors */}\n <CardHeader\n icon=\"360\"\n title={spacecraft.name ?? spacecraft.id ?? 'Unknown'}\n subtitle={orbitInfo.description}\n badge={spacecraft.orbitType ?? 'ORBIT'}\n badgeColor={orbitInfo.color}\n iconColor={orbitInfo.color}\n hideStatusIndicator\n />\n\n {/* Orbital Parameters */}\n <section aria-label=\"Orbital parameters\">\n <div style={{ display: 'grid', gridTemplateColumns: 'repeat(2, 1fr)', gap: tokens.spacing.md }}>\n <div>\n <span style={labelStyle}>Altitude</span>\n <div style={{ ...valueStyle, color: safeAccentText(tokens.colors.accent.primary) }}>\n {formatAltitude(spacecraft.altitude)}\n </div>\n </div>\n <div>\n <span style={labelStyle}>Velocity</span>\n <div style={valueStyle}>\n {spacecraft.velocity\n ? formatVelocity(spacecraft.velocity)\n : computedVelocity\n ? formatVelocity(computedVelocity)\n : '-- km/s'}\n </div>\n </div>\n {spacecraft.inclination !== undefined && (\n <div>\n <span style={labelStyle}>Inclination</span>\n <div style={valueStyle}>{formatDegrees(spacecraft.inclination)}</div>\n </div>\n )}\n {showComputed && computedPeriod !== null && (\n <div>\n <span style={labelStyle}>Period</span>\n <div style={valueStyle}>{formatDuration(computedPeriod)}</div>\n </div>\n )}\n </div>\n </section>\n\n {/* Current Position */}\n <section\n style={{\n marginTop: tokens.spacing.lg,\n paddingTop: tokens.spacing.lg,\n borderTop: `1px solid ${tokens.colors.border.muted}`,\n }}\n aria-label=\"Current position\"\n >\n <h4\n style={{\n margin: `0 0 ${tokens.spacing.sm} 0`,\n ...labelStyle,\n display: 'flex',\n alignItems: 'center',\n gap: 4,\n }}\n >\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M12 2C8.13 2 5 5.13 5 9c0 5.25 7 13 7 13s7-7.75 7-13c0-3.87-3.13-7-7-7zm0 9.5c-1.38 0-2.5-1.12-2.5-2.5s1.12-2.5 2.5-2.5 2.5 1.12 2.5 2.5-1.12 2.5-2.5 2.5z\" />\n </svg>\n Current Position\n </h4>\n <div style={{ display: 'grid', gridTemplateColumns: 'repeat(2, 1fr)', gap: tokens.spacing.md }}>\n <div>\n <span style={labelStyle}>Latitude</span>\n <div style={valueStyle}>{formatCoordinate(spacecraft.latitude, 'lat')}</div>\n </div>\n <div>\n <span style={labelStyle}>Longitude</span>\n <div style={valueStyle}>{formatCoordinate(spacecraft.longitude, 'lon')}</div>\n </div>\n </div>\n </section>\n\n {/* Timestamp */}\n {spacecraft.timestamp && (\n <footer\n style={{\n marginTop: tokens.spacing.md,\n fontSize: tokens.typography.fontSize.xs,\n color: tokens.colors.text.tertiary,\n textAlign: 'right',\n }}\n >\n <time dateTime={spacecraft.timestamp}>{formatTime(spacecraft.timestamp)} UTC</time>\n </footer>\n )}\n </article>\n );\n});\n"],"names":["OrbitCard"],"mappings":"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"}
1
+ {"version":3,"file":"OrbitCard.js","names":[],"sources":["../../../src/react/cards/OrbitCard.tsx"],"sourcesContent":["/**\r\n * @zendir/ui - OrbitCard Component\r\n *\r\n * Enterprise-grade orbital parameters display card.\r\n *\r\n * AstroUXDS Compliance:\r\n * - Orbit type colors use Zendir-Astro data viz palette (categorical, not status)\r\n * - Tabular numbers for orbital data display\r\n * - Sentence-case labels per Tier 3 compliance\r\n *\r\n * Features:\r\n * - Full null-safety with graceful fallbacks\r\n * - WCAG 2.1 AA accessibility\r\n * - Computed orbital parameters (period, velocity)\r\n * - Orbit type classification with Zendir-branded color coding\r\n * - Loading and empty states\r\n */\r\n\r\nimport React, { memo, useMemo } from \"react\";\r\nimport type { SpacecraftPosition } from \"../types\";\r\nimport { estimateOrbitalPeriod, estimateOrbitalVelocity } from \"../types\";\r\nimport { useTheme } from \"../theme\";\r\nimport { Icon } from \"../core/display/Icon\";\r\nimport { AstroIcon } from \"../core/display/AstroIcon\";\r\nimport { CardHeader } from \"../core/display/CardHeader\";\r\nimport { useCompactMode } from \"../hooks\";\r\nimport {\r\n formatAltitude,\r\n formatVelocity,\r\n formatDuration,\r\n formatCoordinate,\r\n formatDegrees,\r\n formatTime,\r\n classNames,\r\n safeAccentText,\r\n} from \"../utils\";\r\n\r\nexport interface OrbitCardProps {\r\n /** Spacecraft position data */\r\n spacecraft?: SpacecraftPosition;\r\n /** Show computed orbital parameters (period, velocity) */\r\n showComputed?: boolean;\r\n /** Loading state */\r\n loading?: boolean;\r\n /** Custom className */\r\n className?: string;\r\n /** Enable compact mode - shows condensed view that expands on hover/click */\r\n compact?: boolean;\r\n /** Start expanded when in compact mode (pinned state) */\r\n defaultExpanded?: boolean;\r\n /** Callback when pin state changes in compact mode */\r\n onPinChange?: (isPinned: boolean) => void;\r\n}\r\n\r\n/**\r\n * Orbit type information with color and description\r\n */\r\ninterface OrbitTypeInfo {\r\n color: string;\r\n description: string;\r\n}\r\n\r\n/**\r\n * Get orbit type info with Zendir-branded colors\r\n * Uses AstroUXDS data visualization palette for orbit classification\r\n */\r\nfunction getOrbitTypeInfo(orbitType: string | undefined): OrbitTypeInfo {\r\n // Orbit type colors using Zendir-Astro palette\r\n // Non-status colors since orbit type is categorical, not status\r\n const types: Record<string, OrbitTypeInfo> = {\r\n LEO: { color: \"#3E3CFF\", description: \"Low Earth Orbit (200-2,000 km)\" }, // Zendir Electric\r\n MEO: {\r\n color: \"#3548C0\",\r\n description: \"Medium Earth Orbit (2,000-35,786 km)\",\r\n }, // Zendir Prussian Blue Light\r\n GEO: { color: \"#9D70FF\", description: \"Geostationary Orbit (~35,786 km)\" }, // Zendir Purple\r\n HEO: { color: \"#1B2DA0\", description: \"Highly Elliptical Orbit\" }, // Zendir Prussian Blue\r\n SSO: { color: \"#B48DFF\", description: \"Sun-Synchronous Orbit\" }, // Zendir Purple Light\r\n POLAR: { color: \"#6B69FF\", description: \"Polar Orbit\" }, // Zendir Electric Light\r\n MOLNIYA: { color: \"#C9A8FF\", description: \"Molniya Orbit (12h period)\" }, // Zendir Purple Lighter\r\n };\r\n\r\n return (\r\n types[orbitType?.toUpperCase() ?? \"\"] ?? {\r\n color: \"#a4abb6\",\r\n description: \"Unknown orbit type\",\r\n }\r\n );\r\n}\r\n\r\n/**\r\n * OrbitCard - Displays spacecraft orbital parameters\r\n *\r\n * @example\r\n * ```tsx\r\n * <OrbitCard\r\n * spacecraft={spacecraftData}\r\n * showComputed\r\n * />\r\n * ```\r\n */\r\nexport const OrbitCard = memo(function OrbitCard({\r\n spacecraft,\r\n showComputed = true,\r\n loading = false,\r\n className = \"\",\r\n compact = false,\r\n defaultExpanded = false,\r\n onPinChange,\r\n}: OrbitCardProps): React.ReactElement {\r\n const { tokens, theme, prefersReducedMotion } = useTheme();\r\n const isTransparentTheme =\r\n theme === \"transparent\" ||\r\n theme === \"transparent-bold\" ||\r\n theme === \"transparent-minimal\";\r\n const isBoldVariant = theme === \"transparent-bold\";\r\n const isMinimalVariant = theme === \"transparent-minimal\";\r\n const useGlassMode = isBoldVariant || isMinimalVariant;\r\n\r\n // Glass accent colors for bold/minimal themes (matching Container/AstroChart)\r\n const glassAccentColor = tokens.colors.accent.primary;\r\n const glassAccentMuted = `${glassAccentColor}66`;\r\n\r\n // Use transparent background with blur for transparent themes (matching Timeline)\r\n const cardBg = isTransparentTheme\r\n ? \"transparent\"\r\n : tokens.colors.background.surface;\r\n const cardGlass = isTransparentTheme\r\n ? {\r\n backdropFilter: \"blur(12px)\" as const,\r\n WebkitBackdropFilter: \"blur(12px)\" as const,\r\n }\r\n : {};\r\n\r\n // Glass mode container style (matching Container/AstroChart for bold/minimal)\r\n const glassContainerStyle: React.CSSProperties = useGlassMode\r\n ? {\r\n backgroundColor: \"rgba(10, 15, 25, 0.35)\",\r\n backdropFilter: \"blur(12px)\",\r\n WebkitBackdropFilter: \"blur(12px)\",\r\n border: `1px solid ${glassAccentMuted}`,\r\n borderTop: isBoldVariant\r\n ? `2px solid ${glassAccentColor}`\r\n : `1px solid ${glassAccentColor}`,\r\n }\r\n : {};\r\n\r\n // Compact mode state management\r\n const { expanded, isPinned, handlers, transitionDuration } = useCompactMode({\r\n compact,\r\n defaultExpanded,\r\n onPinChange,\r\n });\r\n\r\n // Computed orbital parameters\r\n const orbitInfo = useMemo(\r\n () => getOrbitTypeInfo(spacecraft?.orbitType),\r\n [spacecraft?.orbitType],\r\n );\r\n\r\n const computedPeriod = useMemo(() => {\r\n if (!spacecraft?.altitude) return null;\r\n try {\r\n return estimateOrbitalPeriod(spacecraft.altitude);\r\n } catch {\r\n return null;\r\n }\r\n }, [spacecraft?.altitude]);\r\n\r\n const computedVelocity = useMemo(() => {\r\n if (!spacecraft?.altitude) return null;\r\n try {\r\n return estimateOrbitalVelocity(spacecraft.altitude);\r\n } catch {\r\n return null;\r\n }\r\n }, [spacecraft?.altitude]);\r\n\r\n // Loading state\r\n if (loading) {\r\n return (\r\n <div\r\n className={classNames(\"zendir-orbit-card\", \"loading\", className)}\r\n role=\"article\"\r\n aria-busy=\"true\"\r\n aria-label=\"Loading orbit data\"\r\n style={{\r\n backgroundColor: cardBg,\r\n ...cardGlass,\r\n ...(tokens.colors.border.cardStyle ?? {}),\r\n borderRadius: tokens.borderRadius.lg,\r\n padding: tokens.spacing.md,\r\n minHeight: 200,\r\n }}\r\n >\r\n <div\r\n style={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: 12,\r\n marginBottom: 20,\r\n }}\r\n >\r\n <div\r\n style={{\r\n width: 40,\r\n height: 40,\r\n borderRadius: 8,\r\n backgroundColor: \"rgba(255,255,255,0.1)\",\r\n }}\r\n />\r\n <div style={{ flex: 1 }}>\r\n <div\r\n style={{\r\n height: 18,\r\n width: \"50%\",\r\n backgroundColor: \"rgba(255,255,255,0.1)\",\r\n borderRadius: 4,\r\n }}\r\n />\r\n <div\r\n style={{\r\n height: 12,\r\n width: \"70%\",\r\n backgroundColor: \"rgba(255,255,255,0.06)\",\r\n borderRadius: 4,\r\n marginTop: 6,\r\n }}\r\n />\r\n </div>\r\n </div>\r\n <div\r\n style={{\r\n display: \"grid\",\r\n gridTemplateColumns: \"repeat(2, 1fr)\",\r\n gap: 16,\r\n }}\r\n >\r\n {[1, 2, 3, 4].map((i) => (\r\n <div key={i}>\r\n <div\r\n style={{\r\n height: 10,\r\n width: \"40%\",\r\n backgroundColor: \"rgba(255,255,255,0.06)\",\r\n borderRadius: 2,\r\n }}\r\n />\r\n <div\r\n style={{\r\n height: 20,\r\n width: \"60%\",\r\n backgroundColor: \"rgba(255,255,255,0.1)\",\r\n borderRadius: 4,\r\n marginTop: 4,\r\n }}\r\n />\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n );\r\n }\r\n\r\n // Empty state\r\n if (!spacecraft) {\r\n return (\r\n <div\r\n className={classNames(\"zendir-orbit-card\", \"empty\", className)}\r\n role=\"article\"\r\n aria-label=\"No orbit data\"\r\n style={{\r\n backgroundColor: cardBg,\r\n ...cardGlass,\r\n ...(tokens.colors.border.cardStyleDashed ?? {}),\r\n borderRadius: tokens.borderRadius.lg,\r\n padding: tokens.spacing.lg,\r\n textAlign: \"center\",\r\n color: tokens.colors.text.tertiary,\r\n }}\r\n >\r\n <svg\r\n width=\"32\"\r\n height=\"32\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n style={{ opacity: 0.5, marginBottom: 8 }}\r\n >\r\n <path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z\" />\r\n <ellipse\r\n cx=\"12\"\r\n cy=\"12\"\r\n rx=\"10\"\r\n ry=\"4\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1\"\r\n strokeDasharray=\"3,3\"\r\n />\r\n </svg>\r\n <p style={{ margin: 0, fontSize: tokens.typography.body[2].fontSize }}>\r\n No orbit data available\r\n </p>\r\n </div>\r\n );\r\n }\r\n\r\n // Compact view - shows key orbit info in a single row\r\n if (compact && !expanded) {\r\n return (\r\n <article\r\n className={classNames(\"zendir-orbit-card\", \"compact\", className)}\r\n {...handlers}\r\n aria-label={`Orbit: ${spacecraft.orbitType ?? \"Unknown\"} (compact)`}\r\n style={{\r\n position: \"relative\",\r\n overflow: \"hidden\",\r\n ...(useGlassMode\r\n ? glassContainerStyle\r\n : {\r\n backgroundColor: cardBg,\r\n ...cardGlass,\r\n ...(tokens.colors.border.cardStyle ?? {}),\r\n }),\r\n borderRadius: tokens.borderRadius.lg,\r\n padding: `${tokens.spacing.sm} ${tokens.spacing.md}`,\r\n fontFamily: tokens.typography.fontFamily.primary,\r\n color: tokens.colors.text.primary,\r\n fontSize: tokens.typography.fontSize.sm,\r\n cursor: \"pointer\",\r\n transition: `all ${transitionDuration} ease-out`,\r\n transform: \"scale(1)\",\r\n }}\r\n onMouseEnter={(e) => {\r\n handlers.onMouseEnter();\r\n if (!prefersReducedMotion) {\r\n (e.currentTarget as HTMLElement).style.transform = \"scale(1.01)\";\r\n (e.currentTarget as HTMLElement).style.boxShadow =\r\n `0 4px 12px ${orbitInfo.color}20`;\r\n }\r\n }}\r\n onMouseLeave={(e) => {\r\n handlers.onMouseLeave();\r\n (e.currentTarget as HTMLElement).style.transform = \"scale(1)\";\r\n (e.currentTarget as HTMLElement).style.boxShadow = \"\";\r\n }}\r\n >\r\n {/* Glass gradient overlay for bold/minimal themes */}\r\n {useGlassMode && (\r\n <div\r\n style={{\r\n position: \"absolute\",\r\n inset: 0,\r\n background:\r\n \"linear-gradient(135deg, rgba(255,255,255,0.03) 0%, transparent 50%, rgba(0,0,0,0.1) 100%)\",\r\n pointerEvents: \"none\",\r\n zIndex: 0,\r\n }}\r\n />\r\n )}\r\n <div\r\n style={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"space-between\",\r\n gap: tokens.spacing.md,\r\n position: \"relative\",\r\n zIndex: 1,\r\n }}\r\n >\r\n {/* Left side: Icon + Title + Accent line */}\r\n <div\r\n style={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: tokens.spacing.sm,\r\n flex: 1,\r\n minWidth: 0,\r\n }}\r\n >\r\n <AstroIcon name=\"360\" size={16} color={orbitInfo.color} />\r\n <span\r\n style={{\r\n fontWeight: tokens.typography.fontWeight.medium,\r\n color: useGlassMode ? glassAccentColor : undefined,\r\n textShadow: useGlassMode\r\n ? `0 0 16px ${glassAccentMuted}`\r\n : undefined,\r\n }}\r\n >\r\n Orbit\r\n </span>\r\n {useGlassMode && (\r\n <div\r\n style={{\r\n flex: 1,\r\n height: isBoldVariant ? \"2px\" : \"1px\",\r\n minWidth: 20,\r\n background: `linear-gradient(90deg, ${glassAccentColor} 0%, ${glassAccentMuted} 60%, transparent 100%)`,\r\n boxShadow: isBoldVariant\r\n ? `0 0 8px ${glassAccentMuted}`\r\n : undefined,\r\n }}\r\n />\r\n )}\r\n </div>\r\n\r\n {/* Right side: Orbit badge + Altitude + Pin */}\r\n <div\r\n style={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: tokens.spacing.sm,\r\n flexShrink: 0,\r\n }}\r\n >\r\n <span\r\n style={{\r\n backgroundColor: `${orbitInfo.color}20`,\r\n color: orbitInfo.color,\r\n padding: `2px 6px`,\r\n borderRadius: tokens.borderRadius.sm,\r\n fontSize: tokens.typography.fontSize.xs,\r\n fontWeight: tokens.typography.fontWeight.medium,\r\n }}\r\n >\r\n {spacecraft.orbitType ?? \"—\"}\r\n </span>\r\n <span\r\n style={{\r\n fontVariantNumeric: \"tabular-nums\",\r\n fontFamily: tokens.typography.fontFamily.mono,\r\n fontSize: tokens.typography.fontSize.xs,\r\n }}\r\n >\r\n {formatAltitude(spacecraft.altitude)}\r\n </span>\r\n {isPinned && (\r\n <Icon\r\n name=\"lock\"\r\n size={12}\r\n color={tokens.colors.accent.primary}\r\n />\r\n )}\r\n </div>\r\n </div>\r\n </article>\r\n );\r\n }\r\n\r\n const labelStyle: React.CSSProperties = {\r\n color: tokens.colors.text.secondary, // WCAG AA compliant - 4.5:1 contrast\r\n fontSize: tokens.typography.fontSize.xs,\r\n fontWeight: tokens.typography.fontWeight.medium,\r\n };\r\n\r\n const valueStyle: React.CSSProperties = {\r\n color: tokens.colors.text.primary,\r\n fontWeight: tokens.typography.fontWeight.medium,\r\n fontFamily: tokens.typography.fontFamily.mono,\r\n fontVariantNumeric: \"tabular-nums\",\r\n fontSize: tokens.typography.fontSize.md,\r\n marginTop: 2,\r\n };\r\n\r\n return (\r\n <article\r\n className={classNames(\r\n \"zendir-orbit-card\",\r\n compact ? \"expanded\" : \"\",\r\n className,\r\n )}\r\n {...(compact ? handlers : {})}\r\n role={compact ? handlers.role : \"article\"}\r\n tabIndex={compact ? handlers.tabIndex : undefined}\r\n aria-expanded={compact ? handlers[\"aria-expanded\"] : undefined}\r\n aria-label={`Orbit data for ${spacecraft.name ?? spacecraft.id}`}\r\n style={{\r\n position: \"relative\",\r\n overflow: \"hidden\",\r\n ...(useGlassMode\r\n ? glassContainerStyle\r\n : {\r\n backgroundColor: cardBg,\r\n ...cardGlass,\r\n ...(tokens.colors.border.cardStyle ?? {}),\r\n }),\r\n borderRadius: tokens.borderRadius.lg,\r\n padding: tokens.spacing.md,\r\n fontFamily: tokens.typography.fontFamily.primary,\r\n cursor: compact ? \"pointer\" : undefined,\r\n transition: compact ? `all ${transitionDuration} ease-out` : undefined,\r\n color: tokens.colors.text.primary,\r\n fontSize: tokens.typography.fontSize.sm,\r\n }}\r\n >\r\n {/* Glass gradient overlay for bold/minimal themes */}\r\n {useGlassMode && (\r\n <div\r\n style={{\r\n position: \"absolute\",\r\n inset: 0,\r\n background:\r\n \"linear-gradient(135deg, rgba(255,255,255,0.03) 0%, transparent 50%, rgba(0,0,0,0.1) 100%)\",\r\n pointerEvents: \"none\",\r\n zIndex: 0,\r\n }}\r\n />\r\n )}\r\n\r\n {/* Unified Card Header - handles all theme variants */}\r\n {/* OrbitCard uses categorical colors (orbit type), not status colors */}\r\n <CardHeader\r\n icon=\"360\"\r\n title={spacecraft.name ?? spacecraft.id ?? \"Unknown\"}\r\n subtitle={orbitInfo.description}\r\n badge={spacecraft.orbitType ?? \"ORBIT\"}\r\n badgeColor={orbitInfo.color}\r\n iconColor={orbitInfo.color}\r\n hideStatusIndicator\r\n />\r\n\r\n {/* Orbital Parameters */}\r\n <section aria-label=\"Orbital parameters\">\r\n <div\r\n style={{\r\n display: \"grid\",\r\n gridTemplateColumns: \"repeat(2, 1fr)\",\r\n gap: tokens.spacing.md,\r\n }}\r\n >\r\n <div>\r\n <span style={labelStyle}>Altitude</span>\r\n <div\r\n style={{\r\n ...valueStyle,\r\n color: safeAccentText(tokens.colors.accent.primary),\r\n }}\r\n >\r\n {formatAltitude(spacecraft.altitude)}\r\n </div>\r\n </div>\r\n <div>\r\n <span style={labelStyle}>Velocity</span>\r\n <div style={valueStyle}>\r\n {spacecraft.velocity\r\n ? formatVelocity(spacecraft.velocity)\r\n : computedVelocity\r\n ? formatVelocity(computedVelocity)\r\n : \"-- km/s\"}\r\n </div>\r\n </div>\r\n {spacecraft.inclination !== undefined && (\r\n <div>\r\n <span style={labelStyle}>Inclination</span>\r\n <div style={valueStyle}>\r\n {formatDegrees(spacecraft.inclination)}\r\n </div>\r\n </div>\r\n )}\r\n {showComputed && computedPeriod !== null && (\r\n <div>\r\n <span style={labelStyle}>Period</span>\r\n <div style={valueStyle}>{formatDuration(computedPeriod)}</div>\r\n </div>\r\n )}\r\n </div>\r\n </section>\r\n\r\n {/* Current Position */}\r\n <section\r\n style={{\r\n marginTop: tokens.spacing.lg,\r\n paddingTop: tokens.spacing.lg,\r\n borderTop: `1px solid ${tokens.colors.border.muted}`,\r\n }}\r\n aria-label=\"Current position\"\r\n >\r\n <h4\r\n style={{\r\n margin: `0 0 ${tokens.spacing.sm} 0`,\r\n ...labelStyle,\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: 4,\r\n }}\r\n >\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\r\n <path d=\"M12 2C8.13 2 5 5.13 5 9c0 5.25 7 13 7 13s7-7.75 7-13c0-3.87-3.13-7-7-7zm0 9.5c-1.38 0-2.5-1.12-2.5-2.5s1.12-2.5 2.5-2.5 2.5 1.12 2.5 2.5-1.12 2.5-2.5 2.5z\" />\r\n </svg>\r\n Current Position\r\n </h4>\r\n <div\r\n style={{\r\n display: \"grid\",\r\n gridTemplateColumns: \"repeat(2, 1fr)\",\r\n gap: tokens.spacing.md,\r\n }}\r\n >\r\n <div>\r\n <span style={labelStyle}>Latitude</span>\r\n <div style={valueStyle}>\r\n {formatCoordinate(spacecraft.latitude, \"lat\")}\r\n </div>\r\n </div>\r\n <div>\r\n <span style={labelStyle}>Longitude</span>\r\n <div style={valueStyle}>\r\n {formatCoordinate(spacecraft.longitude, \"lon\")}\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n {/* Timestamp */}\r\n {spacecraft.timestamp && (\r\n <footer\r\n style={{\r\n marginTop: tokens.spacing.md,\r\n fontSize: tokens.typography.fontSize.xs,\r\n color: tokens.colors.text.tertiary,\r\n textAlign: \"right\",\r\n }}\r\n >\r\n <time dateTime={spacecraft.timestamp}>\r\n {formatTime(spacecraft.timestamp)} UTC\r\n </time>\r\n </footer>\r\n )}\r\n </article>\r\n );\r\n});\r\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkEA,SAAS,iBAAiB,WAA8C;CAgBtE,OACE;EAbA,KAAK;GAAE,OAAO;GAAW,aAAa;EAAiC;EACvE,KAAK;GACH,OAAO;GACP,aAAa;EACf;EACA,KAAK;GAAE,OAAO;GAAW,aAAa;EAAmC;EACzE,KAAK;GAAE,OAAO;GAAW,aAAa;EAA0B;EAChE,KAAK;GAAE,OAAO;GAAW,aAAa;EAAwB;EAC9D,OAAO;GAAE,OAAO;GAAW,aAAa;EAAc;EACtD,SAAS;GAAE,OAAO;GAAW,aAAa;EAA6B;CAIvE,EAAM,WAAW,YAAY,KAAK,OAAO;EACvC,OAAO;EACP,aAAa;CACf;AAEJ;;;;;;;;;;;;AAaA,IAAa,YAAY,KAAK,SAAS,UAAU,EAC/C,YACA,eAAe,MACf,UAAU,OACV,YAAY,IACZ,UAAU,OACV,kBAAkB,OAClB,eACqC;CACrC,MAAM,EAAE,QAAQ,OAAO,yBAAyB,SAAS;CACzD,MAAM,qBACJ,UAAU,iBACV,UAAU,sBACV,UAAU;CACZ,MAAM,gBAAgB,UAAU;CAEhC,MAAM,eAAe,iBADI,UAAU;CAInC,MAAM,mBAAmB,OAAO,OAAO,OAAO;CAC9C,MAAM,mBAAmB,GAAG,iBAAiB;CAG7C,MAAM,SAAS,qBACX,gBACA,OAAO,OAAO,WAAW;CAC7B,MAAM,YAAY,qBACd;EACE,gBAAgB;EAChB,sBAAsB;CACxB,IACA,CAAC;CAGL,MAAM,sBAA2C,eAC7C;EACE,iBAAiB;EACjB,gBAAgB;EAChB,sBAAsB;EACtB,QAAQ,aAAa;EACrB,WAAW,gBACP,aAAa,qBACb,aAAa;CACnB,IACA,CAAC;CAGL,MAAM,EAAE,UAAU,UAAU,UAAU,uBAAuB,eAAe;EAC1E;EACA;EACA;CACF,CAAC;CAGD,MAAM,YAAY,cACV,iBAAiB,YAAY,SAAS,GAC5C,CAAC,YAAY,SAAS,CACxB;CAEA,MAAM,iBAAiB,cAAc;EACnC,IAAI,CAAC,YAAY,UAAU,OAAO;EAClC,IAAI;GACF,OAAO,sBAAsB,WAAW,QAAQ;EAClD,QAAQ;GACN,OAAO;EACT;CACF,GAAG,CAAC,YAAY,QAAQ,CAAC;CAEzB,MAAM,mBAAmB,cAAc;EACrC,IAAI,CAAC,YAAY,UAAU,OAAO;EAClC,IAAI;GACF,OAAO,wBAAwB,WAAW,QAAQ;EACpD,QAAQ;GACN,OAAO;EACT;CACF,GAAG,CAAC,YAAY,QAAQ,CAAC;CAGzB,IAAI,SACF,OACE,qBAAC,OAAD;EACE,WAAW,WAAW,qBAAqB,WAAW,SAAS;EAC/D,MAAK;EACL,aAAU;EACV,cAAW;EACX,OAAO;GACL,iBAAiB;GACjB,GAAG;GACH,GAAI,OAAO,OAAO,OAAO,aAAa,CAAC;GACvC,cAAc,OAAO,aAAa;GAClC,SAAS,OAAO,QAAQ;GACxB,WAAW;EACb;YAZF,CAcE,qBAAC,OAAD;GACE,OAAO;IACL,SAAS;IACT,YAAY;IACZ,KAAK;IACL,cAAc;GAChB;aANF,CAQE,oBAAC,OAAD,EACE,OAAO;IACL,OAAO;IACP,QAAQ;IACR,cAAc;IACd,iBAAiB;GACnB,EACD,CAAA,GACD,qBAAC,OAAD;IAAK,OAAO,EAAE,MAAM,EAAE;cAAtB,CACE,oBAAC,OAAD,EACE,OAAO;KACL,QAAQ;KACR,OAAO;KACP,iBAAiB;KACjB,cAAc;IAChB,EACD,CAAA,GACD,oBAAC,OAAD,EACE,OAAO;KACL,QAAQ;KACR,OAAO;KACP,iBAAiB;KACjB,cAAc;KACd,WAAW;IACb,EACD,CAAA,CACE;KACF;MACL,oBAAC,OAAD;GACE,OAAO;IACL,SAAS;IACT,qBAAqB;IACrB,KAAK;GACP;aAEC;IAAC;IAAG;IAAG;IAAG;GAAC,CAAC,CAAC,KAAK,MACjB,qBAAC,OAAD,EAAA,UAAA,CACE,oBAAC,OAAD,EACE,OAAO;IACL,QAAQ;IACR,OAAO;IACP,iBAAiB;IACjB,cAAc;GAChB,EACD,CAAA,GACD,oBAAC,OAAD,EACE,OAAO;IACL,QAAQ;IACR,OAAO;IACP,iBAAiB;IACjB,cAAc;IACd,WAAW;GACb,EACD,CAAA,CACE,EAAA,GAlBK,CAkBL,CACN;EACE,CAAA,CACF;;CAKT,IAAI,CAAC,YACH,OACE,qBAAC,OAAD;EACE,WAAW,WAAW,qBAAqB,SAAS,SAAS;EAC7D,MAAK;EACL,cAAW;EACX,OAAO;GACL,iBAAiB;GACjB,GAAG;GACH,GAAI,OAAO,OAAO,OAAO,mBAAmB,CAAC;GAC7C,cAAc,OAAO,aAAa;GAClC,SAAS,OAAO,QAAQ;GACxB,WAAW;GACX,OAAO,OAAO,OAAO,KAAK;EAC5B;YAZF,CAcE,qBAAC,OAAD;GACE,OAAM;GACN,QAAO;GACP,SAAQ;GACR,MAAK;GACL,OAAO;IAAE,SAAS;IAAK,cAAc;GAAE;aALzC,CAOE,oBAAC,QAAD,EAAM,GAAE,+HAAgI,CAAA,GACxI,oBAAC,WAAD;IACE,IAAG;IACH,IAAG;IACH,IAAG;IACH,IAAG;IACH,MAAK;IACL,QAAO;IACP,aAAY;IACZ,iBAAgB;GACjB,CAAA,CACE;MACL,oBAAC,KAAD;GAAG,OAAO;IAAE,QAAQ;IAAG,UAAU,OAAO,WAAW,KAAK,EAAE,CAAC;GAAS;aAAG;EAEpE,CAAA,CACA;;CAKT,IAAI,WAAW,CAAC,UACd,OACE,qBAAC,WAAD;EACE,WAAW,WAAW,qBAAqB,WAAW,SAAS;EAC/D,GAAI;EACJ,cAAY,UAAU,WAAW,aAAa,UAAU;EACxD,OAAO;GACL,UAAU;GACV,UAAU;GACV,GAAI,eACA,sBACA;IACE,iBAAiB;IACjB,GAAG;IACH,GAAI,OAAO,OAAO,OAAO,aAAa,CAAC;GACzC;GACJ,cAAc,OAAO,aAAa;GAClC,SAAS,GAAG,OAAO,QAAQ,GAAG,GAAG,OAAO,QAAQ;GAChD,YAAY,OAAO,WAAW,WAAW;GACzC,OAAO,OAAO,OAAO,KAAK;GAC1B,UAAU,OAAO,WAAW,SAAS;GACrC,QAAQ;GACR,YAAY,OAAO,mBAAmB;GACtC,WAAW;EACb;EACA,eAAe,MAAM;GACnB,SAAS,aAAa;GACtB,IAAI,CAAC,sBAAsB;IACzB,EAAG,cAA8B,MAAM,YAAY;IACnD,EAAG,cAA8B,MAAM,YACrC,cAAc,UAAU,MAAM;GAClC;EACF;EACA,eAAe,MAAM;GACnB,SAAS,aAAa;GACtB,EAAG,cAA8B,MAAM,YAAY;GACnD,EAAG,cAA8B,MAAM,YAAY;EACrD;YAnCF,CAsCG,gBACC,oBAAC,OAAD,EACE,OAAO;GACL,UAAU;GACV,OAAO;GACP,YACE;GACF,eAAe;GACf,QAAQ;EACV,EACD,CAAA,GAEH,qBAAC,OAAD;GACE,OAAO;IACL,SAAS;IACT,YAAY;IACZ,gBAAgB;IAChB,KAAK,OAAO,QAAQ;IACpB,UAAU;IACV,QAAQ;GACV;aARF,CAWE,qBAAC,OAAD;IACE,OAAO;KACL,SAAS;KACT,YAAY;KACZ,KAAK,OAAO,QAAQ;KACpB,MAAM;KACN,UAAU;IACZ;cAPF;KASE,oBAAC,WAAD;MAAW,MAAK;MAAM,MAAM;MAAI,OAAO,UAAU;KAAQ,CAAA;KACzD,oBAAC,QAAD;MACE,OAAO;OACL,YAAY,OAAO,WAAW,WAAW;OACzC,OAAO,eAAe,mBAAmB,KAAA;OACzC,YAAY,eACR,YAAY,qBACZ,KAAA;MACN;gBACD;KAEK,CAAA;KACL,gBACC,oBAAC,OAAD,EACE,OAAO;MACL,MAAM;MACN,QAAQ,gBAAgB,QAAQ;MAChC,UAAU;MACV,YAAY,0BAA0B,iBAAiB,OAAO,iBAAiB;MAC/E,WAAW,gBACP,WAAW,qBACX,KAAA;KACN,EACD,CAAA;IAEA;OAGL,qBAAC,OAAD;IACE,OAAO;KACL,SAAS;KACT,YAAY;KACZ,KAAK,OAAO,QAAQ;KACpB,YAAY;IACd;cANF;KAQE,oBAAC,QAAD;MACE,OAAO;OACL,iBAAiB,GAAG,UAAU,MAAM;OACpC,OAAO,UAAU;OACjB,SAAS;OACT,cAAc,OAAO,aAAa;OAClC,UAAU,OAAO,WAAW,SAAS;OACrC,YAAY,OAAO,WAAW,WAAW;MAC3C;gBAEC,WAAW,aAAa;KACrB,CAAA;KACN,oBAAC,QAAD;MACE,OAAO;OACL,oBAAoB;OACpB,YAAY,OAAO,WAAW,WAAW;OACzC,UAAU,OAAO,WAAW,SAAS;MACvC;gBAEC,eAAe,WAAW,QAAQ;KAC/B,CAAA;KACL,YACC,oBAAC,MAAD;MACE,MAAK;MACL,MAAM;MACN,OAAO,OAAO,OAAO,OAAO;KAC7B,CAAA;IAEA;KACF;IACE;;CAIb,MAAM,aAAkC;EACtC,OAAO,OAAO,OAAO,KAAK;EAC1B,UAAU,OAAO,WAAW,SAAS;EACrC,YAAY,OAAO,WAAW,WAAW;CAC3C;CAEA,MAAM,aAAkC;EACtC,OAAO,OAAO,OAAO,KAAK;EAC1B,YAAY,OAAO,WAAW,WAAW;EACzC,YAAY,OAAO,WAAW,WAAW;EACzC,oBAAoB;EACpB,UAAU,OAAO,WAAW,SAAS;EACrC,WAAW;CACb;CAEA,OACE,qBAAC,WAAD;EACE,WAAW,WACT,qBACA,UAAU,aAAa,IACvB,SACF;EACA,GAAK,UAAU,WAAW,CAAC;EAC3B,MAAM,UAAU,SAAS,OAAO;EAChC,UAAU,UAAU,SAAS,WAAW,KAAA;EACxC,iBAAe,UAAU,SAAS,mBAAmB,KAAA;EACrD,cAAY,kBAAkB,WAAW,QAAQ,WAAW;EAC5D,OAAO;GACL,UAAU;GACV,UAAU;GACV,GAAI,eACA,sBACA;IACE,iBAAiB;IACjB,GAAG;IACH,GAAI,OAAO,OAAO,OAAO,aAAa,CAAC;GACzC;GACJ,cAAc,OAAO,aAAa;GAClC,SAAS,OAAO,QAAQ;GACxB,YAAY,OAAO,WAAW,WAAW;GACzC,QAAQ,UAAU,YAAY,KAAA;GAC9B,YAAY,UAAU,OAAO,mBAAmB,aAAa,KAAA;GAC7D,OAAO,OAAO,OAAO,KAAK;GAC1B,UAAU,OAAO,WAAW,SAAS;EACvC;YA5BF;GA+BG,gBACC,oBAAC,OAAD,EACE,OAAO;IACL,UAAU;IACV,OAAO;IACP,YACE;IACF,eAAe;IACf,QAAQ;GACV,EACD,CAAA;GAKH,oBAAC,YAAD;IACE,MAAK;IACL,OAAO,WAAW,QAAQ,WAAW,MAAM;IAC3C,UAAU,UAAU;IACpB,OAAO,WAAW,aAAa;IAC/B,YAAY,UAAU;IACtB,WAAW,UAAU;IACrB,qBAAA;GACD,CAAA;GAGD,oBAAC,WAAD;IAAS,cAAW;cAClB,qBAAC,OAAD;KACE,OAAO;MACL,SAAS;MACT,qBAAqB;MACrB,KAAK,OAAO,QAAQ;KACtB;eALF;MAOE,qBAAC,OAAD,EAAA,UAAA,CACE,oBAAC,QAAD;OAAM,OAAO;iBAAY;MAAc,CAAA,GACvC,oBAAC,OAAD;OACE,OAAO;QACL,GAAG;QACH,OAAO,eAAe,OAAO,OAAO,OAAO,OAAO;OACpD;iBAEC,eAAe,WAAW,QAAQ;MAChC,CAAA,CACF,EAAA,CAAA;MACL,qBAAC,OAAD,EAAA,UAAA,CACE,oBAAC,QAAD;OAAM,OAAO;iBAAY;MAAc,CAAA,GACvC,oBAAC,OAAD;OAAK,OAAO;iBACT,WAAW,WACR,eAAe,WAAW,QAAQ,IAClC,mBACE,eAAe,gBAAgB,IAC/B;MACH,CAAA,CACF,EAAA,CAAA;MACJ,WAAW,gBAAgB,KAAA,KAC1B,qBAAC,OAAD,EAAA,UAAA,CACE,oBAAC,QAAD;OAAM,OAAO;iBAAY;MAAiB,CAAA,GAC1C,oBAAC,OAAD;OAAK,OAAO;iBACT,cAAc,WAAW,WAAW;MAClC,CAAA,CACF,EAAA,CAAA;MAEN,gBAAgB,mBAAmB,QAClC,qBAAC,OAAD,EAAA,UAAA,CACE,oBAAC,QAAD;OAAM,OAAO;iBAAY;MAAY,CAAA,GACrC,oBAAC,OAAD;OAAK,OAAO;iBAAa,eAAe,cAAc;MAAO,CAAA,CAC1D,EAAA,CAAA;KAEJ;;GACE,CAAA;GAGT,qBAAC,WAAD;IACE,OAAO;KACL,WAAW,OAAO,QAAQ;KAC1B,YAAY,OAAO,QAAQ;KAC3B,WAAW,aAAa,OAAO,OAAO,OAAO;IAC/C;IACA,cAAW;cANb,CAQE,qBAAC,MAAD;KACE,OAAO;MACL,QAAQ,OAAO,OAAO,QAAQ,GAAG;MACjC,GAAG;MACH,SAAS;MACT,YAAY;MACZ,KAAK;KACP;eAPF,CASE,oBAAC,OAAD;MAAK,OAAM;MAAK,QAAO;MAAK,SAAQ;MAAY,MAAK;gBACnD,oBAAC,QAAD,EAAM,GAAE,6JAA8J,CAAA;KACnK,CAAA,GAAC,kBAEJ;QACJ,qBAAC,OAAD;KACE,OAAO;MACL,SAAS;MACT,qBAAqB;MACrB,KAAK,OAAO,QAAQ;KACtB;eALF,CAOE,qBAAC,OAAD,EAAA,UAAA,CACE,oBAAC,QAAD;MAAM,OAAO;gBAAY;KAAc,CAAA,GACvC,oBAAC,OAAD;MAAK,OAAO;gBACT,iBAAiB,WAAW,UAAU,KAAK;KACzC,CAAA,CACF,EAAA,CAAA,GACL,qBAAC,OAAD,EAAA,UAAA,CACE,oBAAC,QAAD;MAAM,OAAO;gBAAY;KAAe,CAAA,GACxC,oBAAC,OAAD;MAAK,OAAO;gBACT,iBAAiB,WAAW,WAAW,KAAK;KAC1C,CAAA,CACF,EAAA,CAAA,CACF;MACE;;GAGR,WAAW,aACV,oBAAC,UAAD;IACE,OAAO;KACL,WAAW,OAAO,QAAQ;KAC1B,UAAU,OAAO,WAAW,SAAS;KACrC,OAAO,OAAO,OAAO,KAAK;KAC1B,WAAW;IACb;cAEA,qBAAC,QAAD;KAAM,UAAU,WAAW;eAA3B,CACG,WAAW,WAAW,SAAS,GAAE,MAC9B;;GACA,CAAA;EAEH;;AAEb,CAAC"}
@@ -1,6 +1,5 @@
1
1
  import { default as React } from 'react';
2
2
  import { SpacecraftPosition, TelemetryData } from '../types';
3
-
4
3
  type ZendirClient = any;
5
4
  export interface SpacecraftCardProps {
6
5
  /** Spacecraft position data (for direct data mode) */