@zendir/ui 0.2.20 → 0.3.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 (260) hide show
  1. package/CHANGELOG.md +192 -1
  2. package/README.md +70 -28
  3. package/dist/index.d.ts +1 -1
  4. package/dist/index.js +57 -41
  5. package/dist/index.js.map +1 -1
  6. package/dist/react/3d/CesiumCaptureSource.d.ts +119 -0
  7. package/dist/react/3d/CesiumCaptureSource.js +307 -0
  8. package/dist/react/3d/CesiumCaptureSource.js.map +1 -0
  9. package/dist/react/3d/ZenSpace3D.js +1253 -0
  10. package/dist/react/3d/ZenSpace3D.js.map +1 -0
  11. package/dist/react/3d/ZenSpace3DCesium.js +579 -0
  12. package/dist/react/3d/ZenSpace3DCesium.js.map +1 -0
  13. package/dist/react/3d/ZenSpace3DTypes.d.ts +28 -1
  14. package/dist/react/3d/ZenSpace3DUtils.d.ts +17 -173
  15. package/dist/react/3d/ZenSpace3DUtils.js +28 -0
  16. package/dist/react/3d/ZenSpace3DUtils.js.map +1 -0
  17. package/dist/react/3d/capturePngAnalysis.d.ts +16 -0
  18. package/dist/react/3d/index.d.ts +10 -12
  19. package/dist/react/3d/threeLoader.js +18 -0
  20. package/dist/react/3d/threeLoader.js.map +1 -0
  21. package/dist/react/astro/MonitoringIcon.js +1 -1
  22. package/dist/react/astro/MonitoringIcon.js.map +1 -1
  23. package/dist/react/astro/SimulationControls.js +2 -2
  24. package/dist/react/astro/SimulationControls.js.map +1 -1
  25. package/dist/react/astro/UnifiedTimeline.js +4 -4
  26. package/dist/react/astro/UnifiedTimeline.js.map +1 -1
  27. package/dist/react/charts/GroundTrackMap.d.ts +2 -15
  28. package/dist/react/charts/GroundTrackMap.js +1 -1
  29. package/dist/react/charts/GroundTrackMap.js.map +1 -1
  30. package/dist/react/charts/unified/AstroChart.js +34 -13
  31. package/dist/react/charts/unified/AstroChart.js.map +1 -1
  32. package/dist/react/chatgpt/AppCard.d.ts +0 -4
  33. package/dist/react/chatgpt/index.d.ts +0 -19
  34. package/dist/react/context/SpatialSelectionContext.d.ts +40 -0
  35. package/dist/react/context/SpatialSelectionContext.js +10 -0
  36. package/dist/react/context/SpatialSelectionContext.js.map +1 -0
  37. package/dist/react/context/index.d.ts +2 -0
  38. package/dist/react/core/{DataTable.d.ts → data/DataTable.d.ts} +1 -1
  39. package/dist/react/core/{DataTable.js → data/DataTable.js} +4 -4
  40. package/dist/react/core/data/DataTable.js.map +1 -0
  41. package/dist/react/core/{DataValue.d.ts → data/DataValue.d.ts} +2 -2
  42. package/dist/react/core/{DataValue.js → data/DataValue.js} +2 -2
  43. package/dist/react/core/data/DataValue.js.map +1 -0
  44. package/dist/react/core/{propertyConfig.d.ts → data/propertyConfig.d.ts} +2 -2
  45. package/dist/react/core/data/propertyConfig.js.map +1 -0
  46. package/dist/react/core/{AstroIcon.js → display/AstroIcon.js} +1 -1
  47. package/dist/react/core/display/AstroIcon.js.map +1 -0
  48. package/dist/react/core/{Badge.d.ts → display/Badge.d.ts} +1 -1
  49. package/dist/react/core/{Badge.js → display/Badge.js} +2 -2
  50. package/dist/react/core/display/Badge.js.map +1 -0
  51. package/dist/react/core/{CardHeader.d.ts → display/CardHeader.d.ts} +1 -1
  52. package/dist/react/core/{CardHeader.js → display/CardHeader.js} +2 -2
  53. package/dist/react/core/display/CardHeader.js.map +1 -0
  54. package/dist/react/core/{Container.d.ts → display/Container.d.ts} +1 -1
  55. package/dist/react/core/{Container.js → display/Container.js} +3 -3
  56. package/dist/react/core/display/Container.js.map +1 -0
  57. package/dist/react/core/{CopyButton.js → display/CopyButton.js} +1 -1
  58. package/dist/react/core/display/CopyButton.js.map +1 -0
  59. package/dist/react/core/{GlassCard.d.ts → display/GlassCard.d.ts} +1 -1
  60. package/dist/react/core/{GlassCard.js → display/GlassCard.js} +2 -2
  61. package/dist/react/core/display/GlassCard.js.map +1 -0
  62. package/dist/react/core/{HeaderIconWithStatus.d.ts → display/HeaderIconWithStatus.d.ts} +1 -1
  63. package/dist/react/core/{HeaderIconWithStatus.js → display/HeaderIconWithStatus.js} +1 -1
  64. package/dist/react/core/display/HeaderIconWithStatus.js.map +1 -0
  65. package/dist/react/core/{Icon.d.ts → display/Icon.d.ts} +1 -1
  66. package/dist/react/core/{Icon.js → display/Icon.js} +1 -1
  67. package/dist/react/core/display/Icon.js.map +1 -0
  68. package/dist/react/core/{Typography.d.ts → display/Typography.d.ts} +13 -4
  69. package/dist/react/core/{Typography.js → display/Typography.js} +1 -1
  70. package/dist/react/core/display/Typography.js.map +1 -0
  71. package/dist/react/core/{ConfirmDialog.js → feedback/ConfirmDialog.js} +1 -1
  72. package/dist/react/core/feedback/ConfirmDialog.js.map +1 -0
  73. package/dist/react/core/{Dialog.js → feedback/Dialog.js} +2 -2
  74. package/dist/react/core/feedback/Dialog.js.map +1 -0
  75. package/dist/react/core/{Toast.js → feedback/Toast.js} +3 -3
  76. package/dist/react/core/feedback/Toast.js.map +1 -0
  77. package/dist/react/core/index.d.ts +85 -83
  78. package/dist/react/core/{Button.js → inputs/Button.js} +2 -2
  79. package/dist/react/core/inputs/Button.js.map +1 -0
  80. package/dist/react/core/{Checkbox.js → inputs/Checkbox.js} +2 -2
  81. package/dist/react/core/inputs/Checkbox.js.map +1 -0
  82. package/dist/react/core/{Input.d.ts → inputs/Input.d.ts} +1 -1
  83. package/dist/react/core/{Input.js → inputs/Input.js} +3 -3
  84. package/dist/react/core/inputs/Input.js.map +1 -0
  85. package/dist/react/core/{LimitsBar.js → inputs/LimitsBar.js} +1 -1
  86. package/dist/react/core/inputs/LimitsBar.js.map +1 -0
  87. package/dist/react/core/{NumberInput.d.ts → inputs/NumberInput.d.ts} +2 -2
  88. package/dist/react/core/{NumberInput.js → inputs/NumberInput.js} +3 -3
  89. package/dist/react/core/inputs/NumberInput.js.map +1 -0
  90. package/dist/react/core/{PinInput.js → inputs/PinInput.js} +2 -2
  91. package/dist/react/core/inputs/PinInput.js.map +1 -0
  92. package/dist/react/core/{Select.js → inputs/Select.js} +3 -3
  93. package/dist/react/core/inputs/Select.js.map +1 -0
  94. package/dist/react/core/{Toggle.js → inputs/Toggle.js} +2 -2
  95. package/dist/react/core/inputs/Toggle.js.map +1 -0
  96. package/dist/react/core/{AppBar.d.ts → navigation/AppBar.d.ts} +1 -1
  97. package/dist/react/core/{AppBar.js → navigation/AppBar.js} +7 -7
  98. package/dist/react/core/navigation/AppBar.js.map +1 -0
  99. package/dist/react/core/{Pagination.js → navigation/Pagination.js} +2 -2
  100. package/dist/react/core/navigation/Pagination.js.map +1 -0
  101. package/dist/react/core/{SideNav.d.ts → navigation/SideNav.d.ts} +1 -1
  102. package/dist/react/core/{SideNav.js → navigation/SideNav.js} +8 -9
  103. package/dist/react/core/navigation/SideNav.js.map +1 -0
  104. package/dist/react/core/{Tabs.js → navigation/Tabs.js} +2 -2
  105. package/dist/react/core/navigation/Tabs.js.map +1 -0
  106. package/dist/react/core/{Popover.js → overlays/Popover.js} +1 -1
  107. package/dist/react/core/overlays/Popover.js.map +1 -0
  108. package/dist/react/core/{SidePanel.js → overlays/SidePanel.js} +7 -7
  109. package/dist/react/core/overlays/SidePanel.js.map +1 -0
  110. package/dist/react/core/{Tooltip.js → overlays/Tooltip.js} +2 -2
  111. package/dist/react/core/overlays/Tooltip.js.map +1 -0
  112. package/dist/react/core/{ActivityPlanner.js → widgets/ActivityPlanner.js} +1 -1
  113. package/dist/react/core/widgets/ActivityPlanner.js.map +1 -0
  114. package/dist/react/core/widgets/Capture.d.ts +140 -0
  115. package/dist/react/core/widgets/Capture.js +804 -0
  116. package/dist/react/core/widgets/Capture.js.map +1 -0
  117. package/dist/react/core/{ChatPanel.d.ts → widgets/ChatPanel.d.ts} +1 -1
  118. package/dist/react/core/{ChatPanel.js → widgets/ChatPanel.js} +5 -4
  119. package/dist/react/core/widgets/ChatPanel.js.map +1 -0
  120. package/dist/react/core/{ColorPickerPanel.d.ts → widgets/ColorPickerPanel.d.ts} +1 -1
  121. package/dist/react/core/{ColorPickerPanel.js → widgets/ColorPickerPanel.js} +3 -3
  122. package/dist/react/core/widgets/ColorPickerPanel.js.map +1 -0
  123. package/dist/react/core/{CommandBuilder.js → widgets/CommandBuilder.js} +1 -1
  124. package/dist/react/core/widgets/CommandBuilder.js.map +1 -0
  125. package/dist/react/core/{ConnectionForm.d.ts → widgets/ConnectionForm.d.ts} +1 -1
  126. package/dist/react/core/{ConnectionForm.js → widgets/ConnectionForm.js} +2 -2
  127. package/dist/react/core/widgets/ConnectionForm.js.map +1 -0
  128. package/dist/react/core/{FileExplorer.js → widgets/FileExplorer.js} +2 -2
  129. package/dist/react/core/widgets/FileExplorer.js.map +1 -0
  130. package/dist/react/core/{HexViewer.js → widgets/HexViewer.js} +1 -1
  131. package/dist/react/core/widgets/HexViewer.js.map +1 -0
  132. package/dist/react/core/{ImageGallery.d.ts → widgets/ImageGallery.d.ts} +1 -1
  133. package/dist/react/core/{ImageGallery.js → widgets/ImageGallery.js} +3 -3
  134. package/dist/react/core/widgets/ImageGallery.js.map +1 -0
  135. package/dist/react/core/{LogViewer.d.ts → widgets/LogViewer.d.ts} +13 -3
  136. package/dist/react/core/{LogViewer.js → widgets/LogViewer.js} +28 -8
  137. package/dist/react/core/widgets/LogViewer.js.map +1 -0
  138. package/dist/react/core/{MessageStream.d.ts → widgets/MessageStream.d.ts} +2 -2
  139. package/dist/react/core/{MessageStream.js → widgets/MessageStream.js} +4 -4
  140. package/dist/react/core/widgets/MessageStream.js.map +1 -0
  141. package/dist/react/core/{MissionCalendar.js → widgets/MissionCalendar.js} +2 -2
  142. package/dist/react/core/widgets/MissionCalendar.js.map +1 -0
  143. package/dist/react/core/{PacketViewer.js → widgets/PacketViewer.js} +1 -1
  144. package/dist/react/core/widgets/PacketViewer.js.map +1 -0
  145. package/dist/react/core/widgets/capture-placeholder.png.js +5 -0
  146. package/dist/react/core/widgets/capture-placeholder.png.js.map +1 -0
  147. package/dist/react/hooks/index.d.ts +9 -11
  148. package/dist/react/hooks/useAccessWindows.d.ts +15 -19
  149. package/dist/react/hooks/useGroundTrackHistory.d.ts +34 -0
  150. package/dist/react/hooks/useSimulationScene.d.ts +141 -0
  151. package/dist/react/hooks/useSimulationScene.js +401 -0
  152. package/dist/react/hooks/useSimulationScene.js.map +1 -0
  153. package/dist/react/hooks/useZendirSession.d.ts +44 -69
  154. package/dist/react/index.d.ts +10 -5
  155. package/dist/react/panels/LayerControlPanel.d.ts +54 -0
  156. package/dist/react/panels/LayerControlPanel.js +184 -0
  157. package/dist/react/panels/LayerControlPanel.js.map +1 -0
  158. package/dist/react/panels/ObjectInventoryPanel.d.ts +57 -0
  159. package/dist/react/panels/ObjectInventoryPanel.js +261 -0
  160. package/dist/react/panels/ObjectInventoryPanel.js.map +1 -0
  161. package/dist/react/panels/index.d.ts +15 -0
  162. package/dist/react/theme/ThemeProvider.d.ts +2 -0
  163. package/dist/react/theme/ThemeProvider.js +50 -72
  164. package/dist/react/theme/ThemeProvider.js.map +1 -1
  165. package/dist/react/types.d.ts +32 -3
  166. package/dist/react/types.js.map +1 -1
  167. package/dist/react.js +57 -41
  168. package/dist/react.js.map +1 -1
  169. package/dist/shaders/atmosphere.frag.js +5 -0
  170. package/dist/shaders/atmosphere.frag.js.map +1 -0
  171. package/dist/shaders/atmosphere.vert.js +5 -0
  172. package/dist/shaders/atmosphere.vert.js.map +1 -0
  173. package/dist/shaders/stars.frag.js +5 -0
  174. package/dist/shaders/stars.frag.js.map +1 -0
  175. package/dist/shaders/stars.vert.js +5 -0
  176. package/dist/shaders/stars.vert.js.map +1 -0
  177. package/dist/style.css +6 -4
  178. package/dist/tokens/css-vars.d.ts +91 -0
  179. package/dist/tokens/css-vars.js +228 -0
  180. package/dist/tokens/css-vars.js.map +1 -0
  181. package/dist/tokens/index.d.ts +71 -18
  182. package/dist/tokens/index.js +206 -97
  183. package/dist/tokens/index.js.map +1 -1
  184. package/dist/tokens/tokens.css +50 -50
  185. package/package.json +27 -22
  186. package/sdk-stub.js +10 -5
  187. package/dist/react/3d/EarthViewer.d.ts +0 -46
  188. package/dist/react/3d/SolarSystemViewer.d.ts +0 -43
  189. package/dist/react/chatgpt/ChatGPTCard.d.ts +0 -6
  190. package/dist/react/core/ActivityPlanner.js.map +0 -1
  191. package/dist/react/core/AppBar.js.map +0 -1
  192. package/dist/react/core/AstroIcon.js.map +0 -1
  193. package/dist/react/core/Badge.js.map +0 -1
  194. package/dist/react/core/Button.js.map +0 -1
  195. package/dist/react/core/CardHeader.js.map +0 -1
  196. package/dist/react/core/ChatPanel.js.map +0 -1
  197. package/dist/react/core/Checkbox.js.map +0 -1
  198. package/dist/react/core/ColorPickerPanel.js.map +0 -1
  199. package/dist/react/core/CommandBuilder.js.map +0 -1
  200. package/dist/react/core/ConfirmDialog.js.map +0 -1
  201. package/dist/react/core/ConnectionForm.js.map +0 -1
  202. package/dist/react/core/Container.js.map +0 -1
  203. package/dist/react/core/CopyButton.js.map +0 -1
  204. package/dist/react/core/DataTable.js.map +0 -1
  205. package/dist/react/core/DataValue.js.map +0 -1
  206. package/dist/react/core/Dialog.js.map +0 -1
  207. package/dist/react/core/FileExplorer.js.map +0 -1
  208. package/dist/react/core/GlassCard.js.map +0 -1
  209. package/dist/react/core/HeaderIconWithStatus.js.map +0 -1
  210. package/dist/react/core/HexViewer.js.map +0 -1
  211. package/dist/react/core/Icon.js.map +0 -1
  212. package/dist/react/core/ImageGallery.js.map +0 -1
  213. package/dist/react/core/Input.js.map +0 -1
  214. package/dist/react/core/LimitsBar.js.map +0 -1
  215. package/dist/react/core/LogViewer.js.map +0 -1
  216. package/dist/react/core/MessageStream.js.map +0 -1
  217. package/dist/react/core/MissionCalendar.js.map +0 -1
  218. package/dist/react/core/NumberInput.js.map +0 -1
  219. package/dist/react/core/PacketViewer.js.map +0 -1
  220. package/dist/react/core/Pagination.js.map +0 -1
  221. package/dist/react/core/PinInput.js.map +0 -1
  222. package/dist/react/core/Popover.js.map +0 -1
  223. package/dist/react/core/Select.js.map +0 -1
  224. package/dist/react/core/SideNav.js.map +0 -1
  225. package/dist/react/core/SidePanel.js.map +0 -1
  226. package/dist/react/core/Tabs.js.map +0 -1
  227. package/dist/react/core/Toast.js.map +0 -1
  228. package/dist/react/core/Toggle.js.map +0 -1
  229. package/dist/react/core/Tooltip.js.map +0 -1
  230. package/dist/react/core/Typography.js.map +0 -1
  231. package/dist/react/core/propertyConfig.js.map +0 -1
  232. package/dist/react/hooks/useSimulationTime.d.ts +0 -61
  233. package/dist/react/hooks/useSpacecraftPosition.d.ts +0 -50
  234. package/dist/react/hooks/useTelemetry.d.ts +0 -55
  235. package/dist/types.d.ts +0 -1
  236. package/dist/types.js +0 -2
  237. package/dist/types.js.map +0 -1
  238. /package/dist/react/core/{propertyConfig.js → data/propertyConfig.js} +0 -0
  239. /package/dist/react/core/{AstroIcon.d.ts → display/AstroIcon.d.ts} +0 -0
  240. /package/dist/react/core/{CopyButton.d.ts → display/CopyButton.d.ts} +0 -0
  241. /package/dist/react/core/{ConfirmDialog.d.ts → feedback/ConfirmDialog.d.ts} +0 -0
  242. /package/dist/react/core/{Dialog.d.ts → feedback/Dialog.d.ts} +0 -0
  243. /package/dist/react/core/{Toast.d.ts → feedback/Toast.d.ts} +0 -0
  244. /package/dist/react/core/{Button.d.ts → inputs/Button.d.ts} +0 -0
  245. /package/dist/react/core/{Checkbox.d.ts → inputs/Checkbox.d.ts} +0 -0
  246. /package/dist/react/core/{LimitsBar.d.ts → inputs/LimitsBar.d.ts} +0 -0
  247. /package/dist/react/core/{PinInput.d.ts → inputs/PinInput.d.ts} +0 -0
  248. /package/dist/react/core/{Select.d.ts → inputs/Select.d.ts} +0 -0
  249. /package/dist/react/core/{Toggle.d.ts → inputs/Toggle.d.ts} +0 -0
  250. /package/dist/react/core/{Pagination.d.ts → navigation/Pagination.d.ts} +0 -0
  251. /package/dist/react/core/{Tabs.d.ts → navigation/Tabs.d.ts} +0 -0
  252. /package/dist/react/core/{Popover.d.ts → overlays/Popover.d.ts} +0 -0
  253. /package/dist/react/core/{SidePanel.d.ts → overlays/SidePanel.d.ts} +0 -0
  254. /package/dist/react/core/{Tooltip.d.ts → overlays/Tooltip.d.ts} +0 -0
  255. /package/dist/react/core/{ActivityPlanner.d.ts → widgets/ActivityPlanner.d.ts} +0 -0
  256. /package/dist/react/core/{CommandBuilder.d.ts → widgets/CommandBuilder.d.ts} +0 -0
  257. /package/dist/react/core/{FileExplorer.d.ts → widgets/FileExplorer.d.ts} +0 -0
  258. /package/dist/react/core/{HexViewer.d.ts → widgets/HexViewer.d.ts} +0 -0
  259. /package/dist/react/core/{MissionCalendar.d.ts → widgets/MissionCalendar.d.ts} +0 -0
  260. /package/dist/react/core/{PacketViewer.d.ts → widgets/PacketViewer.d.ts} +0 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,196 @@
1
1
  # @zendir/ui
2
2
 
3
+ ## 0.3.0
4
+
5
+ **Upgrade from npm:** The latest public release on the registry is
6
+ [0.2.21](https://www.npmjs.com/package/@zendir/ui). This **0.3.0** release
7
+ is the next version on npm and combines the hook / 3D integration work
8
+ with the token / `react/core/` architecture pass below.
9
+
10
+ This release reframes the React hook layer around a single, well-defined
11
+ bridge from `zendir-ts` to the live `<ZenSpace3D />` surface, and
12
+ replaces three legacy SDK-coupled hooks with smaller, REST-aligned
13
+ primitives. The Cesium backend gains proper sub-satellite ground-track
14
+ alignment, and the `ZenSpace3DUtils` helper module is slimmed to only
15
+ what the live backends actually consume. It also eliminates token drift
16
+ hazards by consolidating literals, auto-generating `tokens.css`, and
17
+ reorganising `react/core/` into thematic subfolders.
18
+
19
+ ### Features
20
+
21
+ - **`useSimulationScene`** — primary integration hook
22
+ (`@zendir/ui/react/hooks` and `@zendir/ui/react/3d`). Bridges a
23
+ `zendir-ts` `ZendirClient` to `ZenSpace3D` props: fetches
24
+ `GetSimulationStructure` once, buckets spacecraft / ground stations /
25
+ planets, and polls `Position_BN_N` / `Velocity_BN_N` on a configurable
26
+ interval (default 2 s). Exports `SimulationSceneClient`,
27
+ `SimulationSceneObject`, `StructureDiag`, `PositionTickDiag`, and
28
+ `UseSimulationSceneResult` for typed app integration.
29
+ - **Operator 3D surface** — the hook is intended to drive a full-screen
30
+ `ZenSpace3D` in host apps (e.g. `space-range-operator`
31
+ `/admin/3d/:containerId/:simulationId`). Feed
32
+ `useSimulationScene` with `containerId`, `simulationId`, and the
33
+ session `client`.
34
+ - **`ZenSpace3DProps.referenceTime`** — new `Date` prop used by the
35
+ Cesium backend to convert ECI/J2000 positions into the Earth-Fixed
36
+ (ECEF) frame Cesium renders. Passing the simulation clock (sim epoch
37
+ + sim seconds) lines the sub-satellite point on Earth up with the
38
+ true ground track; omitting it falls back to wall-clock time and the
39
+ ground track will drift.
40
+ - **Top-level re-exports** — `ZenSpace3D`, `useSimulationScene`, and
41
+ their types are now available from the main `@zendir/ui/react`
42
+ entry in addition to the `react/3d` and `react/hooks` subpaths.
43
+
44
+ ### Breaking Changes
45
+
46
+ - **Removed legacy SDK hooks**: `useTelemetry`, `useSpacecraftPosition`,
47
+ and `useSimulationTime` no longer exist. Their
48
+ responsibilities are covered by `useSimulationScene` (live position /
49
+ velocity bucketed onto scene objects) and by the `referenceDate` /
50
+ `positionTickDiag` fields on its result.
51
+ - **`useAccessWindows` is now pure client-side math**. The Zendir REST
52
+ API does not expose a server-side access-prediction endpoint, so the
53
+ hook no longer attempts to load `zendir-ts` or fetch passes. It now
54
+ accepts a `windows: AccessPass[]` input (compute these with your own
55
+ propagator / SGP4 / demo data) and returns `TimerConfig` objects for
56
+ `<MissionClock />`. Removed options: `spacecraftId`, `groundStationId`,
57
+ `passCount`. Removed result fields: `isConnected`, `isSdkAvailable`,
58
+ `error`. The `manualWindows` option is kept as a deprecated alias
59
+ for `windows` for one minor.
60
+ - **Renames in `useAccessWindows`**: the `AccessWindow` type is now
61
+ `AccessPass`, and `createDemoAccessWindows` is now
62
+ `createDemoAccessPasses`. Update imports accordingly.
63
+ - **`ZenSpace3DUtils` pruned to the live surface**. Unused helpers were
64
+ removed: `cartesianToLatLonAlt`, `cartesianToSpherical`,
65
+ `sphericalToCartesian`, `eciToEcef`, `calculateGMST`,
66
+ `dateToJulianDate`, `parseTLE`, `propagateSGP4Simple`,
67
+ `propagateSatellite`, `generateOrbitPath`, `isVisible`,
68
+ `calculateVisibilityConeGeometry`, `calculateFootprint`,
69
+ `generateHexGrid`, `updateHexGridCoverage`, all vector-math helpers
70
+ (`dot`, `cross`, `magnitude`, `normalize`, `subtract`, `add`,
71
+ `scale`, `distance`, `lerp`), `easeInOutCubic`, `smoothstep`,
72
+ `lerpColor`, `hexToRgb`, `getGradientColor`, `formatDuration`,
73
+ `formatDistance`, `formatVelocity`, `formatDateTime`, and the
74
+ constants `EARTH_MU`, `AU_KM`, `J2000_EPOCH`. Retained:
75
+ `EARTH_RADIUS_KM`, `DEG_TO_RAD`, `RAD_TO_DEG`, `SCENE_EARTH_RADIUS`,
76
+ `KM_TO_SCENE`, `latLonAltToCartesian`, `easeOutCubic`. For orbital
77
+ mechanics, use a dedicated library (`satellite.js` for SGP4) or
78
+ Cesium's built-in transforms; the Three.js path already draws
79
+ coverage from the explicit `SatelliteCoverage` props.
80
+
81
+ ### Improvements
82
+
83
+ - **`useZendirSession`** — reworked container + simulation lifecycle
84
+ (provision container, poll until `RUNNING`, then create a simulation),
85
+ with a new `SessionInfo` export and `preloadZendirSdk` /
86
+ `isZendirSdkAvailable` utilities.
87
+ - **`ZenSpace3D` Cesium backend** — substantial rework
88
+ (`ZenSpace3DCesium.tsx`) so positions streamed in J2000/ECI are
89
+ correctly rotated into ECEF each frame using the simulation clock,
90
+ keeping the orbit and its ground track visually consistent.
91
+ - **`ZenSpace3DTypes` docs** — updated SDK-compatibility example to the
92
+ new `useSimulationScene` pattern and clarified that coverage geometry
93
+ is either explicit (`footprintPolygon` / `halfAngle`) or computed
94
+ locally by the viewer.
95
+ - **`types.ts`** — clarified that UI-domain types (`Quaternion`,
96
+ `Vector3D`, `PointingMode`, etc.) ship with `@zendir/ui` and are not
97
+ provided by `zendir-ts` (which is REST-only and intentionally
98
+ minimal). Helpers like `estimateOrbitalPeriod` /
99
+ `estimateOrbitalVelocity` are documented as client-side approximations.
100
+ - **Docs refresh** — `SDKIntegration.mdx`, `ComponentsOverview.mdx`,
101
+ and `Introduction.mdx` updated to reflect the `zendir-ts` rename
102
+ (previously `@zendir/sdk`) and the new hook surface.
103
+
104
+ ### Migration
105
+
106
+ ```tsx
107
+ // Before (0.2.x)
108
+ import { useTelemetry, useSpacecraftPosition, useSimulationTime } from '@zendir/ui/react/hooks';
109
+
110
+ // After (0.3.0)
111
+ import { useSimulationScene } from '@zendir/ui/react/hooks';
112
+
113
+ const scene = useSimulationScene({ client, containerId, simulationId });
114
+ // scene.satellites, scene.groundStations, scene.referenceDate, scene.positionTickDiag
115
+ ```
116
+
117
+ ```tsx
118
+ // Before (0.2.x)
119
+ import { useAccessWindows, createDemoAccessWindows, AccessWindow } from '@zendir/ui/react/hooks';
120
+
121
+ const { aosTimer, losTimer } = useAccessWindows({
122
+ spacecraftId: 'my-sat',
123
+ groundStationId: 'gs-1',
124
+ });
125
+
126
+ // After (0.3.0)
127
+ import { useAccessWindows, createDemoAccessPasses, AccessPass } from '@zendir/ui/react/hooks';
128
+
129
+ const passes: AccessPass[] = computePasses(satellite, groundStation); // your propagator
130
+ const { aosTimer, losTimer } = useAccessWindows({ windows: passes });
131
+ ```
132
+
133
+ ### Notes
134
+
135
+ - Consumer apps that use a published tarball should depend on
136
+ `"@zendir/ui": "^0.3.0"`. Monorepo/local development can keep
137
+ `"@zendir/ui": "file:../zendir-ui"`.
138
+ - After `npm publish` in this package, run `npm install` in consuming
139
+ apps to pick up 0.3.0 (no automatic push; release is manual).
140
+
141
+
142
+ ### Architecture — `core/` reorganised
143
+
144
+ The 42-file flat `react/core/` folder is split into thematic subfolders:
145
+ `inputs/`, `feedback/`, `overlays/`, `navigation/`, `data/`, `display/`,
146
+ `widgets/` (alongside the existing `layout/`).
147
+
148
+ - The `core/index.ts` barrel still exports everything by name. Consumers
149
+ using `import { Button } from '@zendir/ui'` or `from '@zendir/ui/react/core'`
150
+ are unaffected.
151
+ - Deep imports like `from '@zendir/ui/react/core/Button'` now resolve via
152
+ the new path; if you have these, switch to the barrel for stability.
153
+
154
+ ### Theme + a11y
155
+
156
+ - **JS-side `tokens.animation.*` honours `prefers-reduced-motion`.**
157
+ The global CSS @media rule already stripped CSS animations; this
158
+ extends the same behaviour to the JS-side tokens surface so animation
159
+ libraries (Framer Motion etc.) reading `tokens.animation.fast` get
160
+ collapsed values too.
161
+
162
+
163
+ ### Removed
164
+
165
+ - Legacy `EarthViewer` and `SolarSystemViewer` 3D components (~1.6k LOC
166
+ of dead code; superseded by `ZenSpace3D`).
167
+ - Deprecated `ChatGPTCard` alias (use `AppCard`) and `useIntrinsicHeight`
168
+ no-op hook (use `useMaxHeight`).
169
+ - `scripts/build-tokens.js` (had its own duplicate token literal —
170
+ replaced by `build-tokens.ts` that imports from `tokens/index.ts`).
171
+
172
+ ### Internal
173
+
174
+ - `src/react/core/` reorganised — see "Architecture" above.
175
+ - Operator and dashboard verified working with new structure.
176
+ - **Toolchain** — ESLint 9 flat config (`eslint.config.js`), `typescript-eslint` v8,
177
+ Vitest 2.1 + Vite 5.4; `npm audit fix -w @zendir/ui --legacy-peer-deps` at monorepo
178
+ root to clear hoisted dev CVEs without `--force` onto Vite 8. Storybook 8
179
+ `eslint-plugin-storybook` rules removed until Storybook 10+ (plugin v0.8 uses
180
+ APIs dropped in ESLint 9).
181
+ - 284/284 tests pass; typecheck clean; build clean.
182
+
183
+ ---
184
+
185
+ ## 0.2.21
186
+
187
+ ### Improvements
188
+
189
+ - **SidePanel**: Fixed sudden layout shift when opening/closing — width animates from `0px` smoothly during the `opening` phase (previously snapped to full width instantly, causing the flex layout to jump). Closing transition no longer drops width to `0px` instantly while the panel is still sliding out.
190
+ - **SidePanel**: Slowed transitions from `0.5s` to `0.6s` and switched to a calmer `cubic-bezier(0.2, 0.8, 0.2, 1)` ease curve for a smoother, less jarring feel — based on UX research showing 500–600ms with deceleration easing reads as "calm" without feeling sluggish.
191
+
192
+ ---
193
+
3
194
  ## 0.2.20
4
195
 
5
196
  ### Improvements
@@ -155,4 +346,4 @@ Initial public release.
155
346
  - Layout primitives (Box, Flex, Grid, Stack, Container, SideNav, SidePanel)
156
347
  - Accessibility-first (WCAG 2.2 AA oriented)
157
348
  - Design tokens as JS objects and CSS custom properties
158
- - Optional @zendir/sdk integration with graceful fallback
349
+ - Optional `zendir-ts` (Zendir TypeScript SDK) integration with graceful fallback
package/README.md CHANGED
@@ -14,23 +14,22 @@
14
14
  </p>
15
15
 
16
16
  <p align="center">
17
- <a href="#quick-start">Quick Start</a> · <a href="#components">Components</a> · <a href="#ai-integration">AI Integration</a> · <a href="#theme-system">Theming</a> · <a href="#accessibility">Accessibility</a> · <a href="https://storybook.zendir.io">Storybook</a> · <a href="CONTRIBUTING.md">Contributing</a> · <a href="SECURITY.md">Security</a> · <a href="CODE_OF_CONDUCT.md">Code of Conduct</a>
17
+ <a href="#quick-start">Quick Start</a> · <a href="#components">Components</a> · <a href="#ai-integration">AI Integration</a> · <a href="#theme-system">Theming</a> · <a href="#accessibility">Accessibility</a> · <a href="https://storybook.zendir.io">Storybook</a> · <a href="CONTRIBUTING.md">Contributing</a> · <a href="CODE_OF_CONDUCT.md">Code of Conduct</a>
18
18
  </p>
19
19
 
20
20
  ---
21
21
 
22
22
  ## Overview
23
23
 
24
- Zendir UI provides production-ready React components purpose-built for satellite telemetry, orbit visualization, mission control dashboards, and space simulation interfaces. Components follows the [Astro UX Design System](https://www.astrouxds.com/) the industry standard for space operations software.
24
+ React components for satellite telemetry, orbit visualisation, mission control dashboards, and space simulations. Follows the [Astro UX Design System](https://www.astrouxds.com/) used by the U.S. Space Force.
25
25
 
26
- **Why Zendir UI?**
26
+ - **Astro UX-aligned** — dual-coded status indicators, classification banners, mission clocks
27
+ - **TypeScript-first** — full type definitions
28
+ - **Accessible** — [WCAG 2.2 AA](https://www.w3.org/TR/WCAG22/) conformant, keyboard navigable, reduced-motion aware, EAA-aligned
29
+ - **Tree-shakeable** with optional peer dependencies
30
+ - Works standalone or with [`zendir-ts`](https://www.npmjs.com/package/zendir-ts) for live API integration
27
31
 
28
- - **60+ components** from core primitives to 3D orbit viewers
29
- - **Astro UX compliant** — dual-coded status indicators, classification banners, and mission clocks
30
- - **TypeScript-first** — full type safety with 200+ exported interfaces
31
- - **Accessible** — [WCAG 2.2 AA](https://www.w3.org/TR/WCAG22/) conformant, keyboard navigable, reduced motion aware, and aligned with the [European Accessibility Act](https://ec.europa.eu/social/main.jsp?catId=1202)
32
- - **Modular** — tree-shakeable, optional peer dependencies, zero runtime cost for unused features
33
- - **Framework-ready** — works standalone or with `@zendir/sdk` for live API integration
32
+ The full component catalogue with live examples lives in [Storybook](https://storybook.zendir.io).
34
33
 
35
34
  ## Quick Start
36
35
 
@@ -41,12 +40,18 @@ npm install @zendir/ui
41
40
  ```
42
41
 
43
42
  > The SDK is optional. All TypeScript types ship with the UI library.
44
- > Install `@zendir/sdk` only if you need the API client.
43
+ > Install `zendir-ts` only if you need the API client.
45
44
  >
46
- > **Vite / dev server:** If you do not install `@zendir/sdk`, add an alias so the optional peer resolves and the app runs (hooks will report "SDK not installed"):
45
+ > Recent versions of `@zendir/ui` hide the SDK specifier from static
46
+ > import-analysis, so no Vite alias is required — missing `zendir-ts` simply
47
+ > causes hooks like `useZendirSession` to report "SDK not installed" while the
48
+ > rest of the UI keeps working.
49
+ >
50
+ > **Older bundlers / strict resolvers:** if you hit "Failed to resolve import
51
+ > 'zendir-ts'", point the optional peer at the bundled stub:
47
52
  > ```js
48
53
  > // vite.config.js
49
- > resolve: { alias: { '@zendir/sdk': require.resolve('@zendir/ui/sdk-stub') } }
54
+ > resolve: { alias: { 'zendir-ts': require.resolve('@zendir/ui/sdk-stub') } }
50
55
  > ```
51
56
 
52
57
  ### Use
@@ -104,7 +109,7 @@ Foundational primitives that compose into any interface.
104
109
  | `SidePanel` | Slide-out panel with configurable position |
105
110
  | `DataTable` | Sortable, filterable data grid |
106
111
  | `Menu` / `Popover` | Context menus and floating content |
107
- | `ChatPanel` | AI chat interface with structured blocks, status system, and [3 LLM integration strategies](#ai-integration) |
112
+ | `ChatPanel` | AI chat interface with structured blocks, status system, and [4 LLM integration strategies](#ai-integration) |
108
113
 
109
114
  ### Status & Monitoring
110
115
 
@@ -156,7 +161,7 @@ import { DataValue, DataValueGroup } from '@zendir/ui/react';
156
161
  </DataValueGroup>
157
162
  ```
158
163
 
159
- **Presets:** `battery` · `voltage` · `temperature` · `signalStrength` · `altitude` · `velocity` · `fuelLevel` · `cpuUsage` · `memoryUsage` · [and 20+ more](COMPONENTS.md)
164
+ **Presets:** `battery` · `voltage` · `temperature` · `signalStrength` · `altitude` · `velocity` · `fuelLevel` · `cpuUsage` · `memoryUsage` · and 20+ more (see [Storybook](https://storybook.zendir.io) for the full list)
160
165
 
161
166
  ### Visualizations
162
167
 
@@ -187,11 +192,23 @@ import { PowerChart, AttitudeChart, GroundTrackMap } from '@zendir/ui/react';
187
192
 
188
193
  ### 3D Viewers
189
194
 
190
- Interactive Three.js-based viewers with orbital mechanics, TLE parsing, and SGP4 propagation.
195
+ Three viewers covering the operations spectrum from full-Earth to full solar system, with optional WebGL2 (Three.js) and Cesium backends.
191
196
 
192
197
  ```tsx
193
- import { EarthViewer, SolarSystemViewer } from '@zendir/ui/react';
198
+ import { ZenSpace3D, EarthViewer, SolarSystemViewer } from '@zendir/ui/react';
199
+
200
+ // Unified 3D space view — Three.js by default, optional Cesium backend for
201
+ // physically-accurate ECI/ECEF transforms and high-fidelity Earth imagery.
202
+ // Pair with `useSimulationScene` (see SDK Integration) to render a live
203
+ // simulation directly from a `zendir-ts` `ZendirClient`.
204
+ <ZenSpace3D
205
+ satellites={satellites}
206
+ groundStations={groundStations}
207
+ satelliteCoverages={coverages}
208
+ referenceTime={referenceDate}
209
+ />
194
210
 
211
+ // Lightweight Three.js Earth view — good for small dashboards and demos.
195
212
  <EarthViewer
196
213
  spacecraft={[{ id: 'SAT-001', name: 'Explorer-1', latitude: 45.2, longitude: -122.5, altitude: 408 }]}
197
214
  groundStations={[{ id: 'DSN-14', name: 'Goldstone', latitude: 35.4, longitude: -116.9 }]}
@@ -203,6 +220,8 @@ import { EarthViewer, SolarSystemViewer } from '@zendir/ui/react';
203
220
  <SolarSystemViewer focusedPlanet="earth" autoOrbit showLabels />
204
221
  ```
205
222
 
223
+ Coverage geometry (footprint polygons, sensor cones, nadir lines) is rendered from explicit `SatelliteCoverage` records — see `ZenSpace3DTypes` for the full prop surface. Heavy orbital propagation (SGP4 / TLE) is intentionally **not** shipped in this package; bring your own propagator (e.g. [`satellite.js`](https://github.com/shashwatak/satellite-js)) and feed positions in via props, or use `useSimulationScene` to read live `Position_BN_N` from the engine.
224
+
206
225
  ### Astro UX Components
207
226
 
208
227
  Mission operations components following [Astro UX Design System](https://www.astrouxds.com/) specifications.
@@ -271,25 +290,50 @@ import { CardAccentProvider, useCardAccent } from '@zendir/ui/react';
271
290
 
272
291
  ## SDK Integration (Optional)
273
292
 
274
- For live API integration, add `@zendir/sdk`:
293
+ For live API integration, add the Zendir TypeScript SDK (`zendir-ts`):
275
294
 
276
295
  ```bash
277
- npm install @zendir/sdk
296
+ npm install zendir-ts
278
297
  ```
279
298
 
299
+ `useZendirSession` provisions the container + simulation lifecycle.
300
+ `useSimulationScene` is the canonical bridge — it polls `Position_BN_N`,
301
+ buckets the simulation structure, and feeds props straight into `<ZenSpace3D />`.
302
+
280
303
  ```tsx
281
- import { ZendirClient } from '@zendir/sdk';
282
- import { SpacecraftCard, useZendirSession } from '@zendir/ui/react';
304
+ import { useZendirSession, useSimulationScene, ZenSpace3D } from '@zendir/ui/react';
305
+
306
+ function MissionControl() {
307
+ // Lifecycle: createContainer → waitForRunning → createSimulation
308
+ const { client, session, connect, disconnect, isLoading, error } =
309
+ useZendirSession({ apiKey: 'your-key', autoConnect: true });
283
310
 
284
- const client = new ZendirClient({ apiKey: 'your-key' });
311
+ // Live data: structure + position polling, ECI→ECEF on the Cesium backend
312
+ const scene = useSimulationScene({
313
+ client,
314
+ containerId: session?.containerId ?? null,
315
+ simulationId: session?.simulationId ?? null,
316
+ });
285
317
 
286
- function Dashboard() {
287
- const { isConnected } = useZendirSession({ client });
288
- // ...
318
+ if (error) return <div>Error: {error}</div>;
319
+ if (isLoading) return <div>Connecting…</div>;
320
+ if (!session) return <button onClick={connect}>Connect</button>;
321
+
322
+ return (
323
+ <ZenSpace3D
324
+ satellites={scene.satellites}
325
+ groundStations={scene.groundStations}
326
+ referenceTime={scene.referenceDate}
327
+ />
328
+ );
289
329
  }
290
330
  ```
291
331
 
292
- **SDK hooks:** `useZendirSession` · `useTelemetry` · `useSpacecraftPosition` · `useAccessWindows` · `useSimulationTime`
332
+ | Hook | Purpose |
333
+ |---|---|
334
+ | `useZendirSession` | Container + simulation lifecycle (`createContainer` → `waitForRunning` → `createSimulation`); `disconnect` tears down |
335
+ | `useSimulationScene` | Bridges a `ZendirClient` to live `<ZenSpace3D />` props (satellites, ground stations, custom objects, reference time) |
336
+ | `useAccessWindows` | Pure client-side AOS/LOS pass-timing math from a list of `AccessPass` records (no SDK call) |
293
337
 
294
338
  ---
295
339
 
@@ -470,7 +514,7 @@ function SatelliteWidget() {
470
514
  }
471
515
  ```
472
516
 
473
- **Enterprise features:** Error boundary (children never crash host), loading skeleton, error display with retry, Astro UX 6-level status badges with shapes, WCAG 2.1 AA ARIA labels, `maxHeight` auto-constraint, theme sync, fullscreen support. `ChatGPTCard` is still exported as a deprecated alias for backward compatibility.
517
+ **Enterprise features:** Error boundary (children never crash host), loading skeleton, error display with retry, Astro UX 6-level status badges with shapes, WCAG 2.1 AA ARIA labels, `maxHeight` auto-constraint, theme sync, fullscreen support.
474
518
 
475
519
  ### MCP Server → ChatPanel Bridge
476
520
 
@@ -565,8 +609,6 @@ Zendir UI conforms to [**WCAG 2.2 Level AA**](https://www.w3.org/TR/WCAG22/) and
565
609
 
566
610
  Testing: [eslint-plugin-jsx-a11y](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y) in CI, [axe-core](https://storybook.js.org/addons/@storybook/addon-a11y) on all Storybook stories, manual keyboard and screen reader verification (VoiceOver, NVDA, TalkBack).
567
611
 
568
- For the full conformance statement with WCAG success criteria mapping and EN 301 549 clause mapping, see [**ACCESSIBILITY.md**](ACCESSIBILITY.md).
569
-
570
612
  Accessibility issues are treated as **P0 bugs**. [Report an issue](https://github.com/zendir-dev/zendir-ui/issues) with the `accessibility` label.
571
613
 
572
614
  ---
package/dist/index.d.ts CHANGED
@@ -2,7 +2,7 @@
2
2
  * @zendir/ui - UI Components and Widgets for Zendir
3
3
  *
4
4
  * React components, Three.js visualizations, and widgets for Zendir applications.
5
- * All types are provided locally; install @zendir/sdk separately for API client.
5
+ * All types are provided locally; install `zendir-ts` separately for API client.
6
6
  */
7
7
  export * from './react/index.js';
8
8
  export * from './types/index.js';
package/dist/index.js CHANGED
@@ -3,72 +3,78 @@ import { Skeleton3D, SkeletonBox, SkeletonCard, SkeletonChart, SkeletonCircle, S
3
3
  import { STATUS_COLORS, addAlpha, clamp, classNames, focusRingStyle, formatAltitude, formatCoordinate, formatCountdown, formatDataRate, formatDecibels, formatDegrees, formatDistance, formatDuration, formatFrequency, formatLatLon, formatNumber, formatPercentage, formatPower, formatTabular, formatTemperature, formatTime, formatUTC, formatVelocity, getStatusColor, getStatusFromValue, getStatusSeverity, getWorstStatus, isStatusLevel, isValidNumber, lerp, mapRange, normalizeStatus, safeAccentText, safeNumber, tabularNumsStyle, transitions, withNullSafety } from "./react/utils/index.js";
4
4
  import { useCompactMode } from "./react/hooks/useCompactMode.js";
5
5
  import { PLANETS, auToKm, estimateOrbitalPeriod, estimateOrbitalVelocity, getPlanet, normalizePlanetName } from "./react/types.js";
6
- import { ActivityPlanner } from "./react/core/ActivityPlanner.js";
7
- import { AppBar } from "./react/core/AppBar.js";
6
+ import { ActivityPlanner } from "./react/core/widgets/ActivityPlanner.js";
7
+ import { AppBar } from "./react/core/navigation/AppBar.js";
8
8
  import { AstroChart } from "./react/charts/unified/AstroChart.js";
9
9
  import { BREAKPOINTS, useBreakpoint } from "./react/core/layout/useBreakpoint.js";
10
- import { Badge } from "./react/core/Badge.js";
11
- import { Body1, Body2, Body3, Compact, DataText, Display1, Display2, FONT_FAMILY_MONO, FONT_FAMILY_PRIMARY, FONT_WEIGHTS, H1, H2, H3, H4, H5, H6, Label, Micro, Mono, Typography } from "./react/core/Typography.js";
10
+ import { Badge } from "./react/core/display/Badge.js";
11
+ import { Body1, Body2, Body3, Compact, DataText, Display1, Display2, FONT_FAMILY_MONO, FONT_FAMILY_PRIMARY, FONT_WEIGHTS, H1, H2, H3, H4, H5, H6, Label, Micro, Mono, Typography } from "./react/core/display/Typography.js";
12
12
  import { Box } from "./react/core/layout/Box.js";
13
- import { Button } from "./react/core/Button.js";
13
+ import { Button } from "./react/core/inputs/Button.js";
14
14
  import { CARD_ACCENT_COLORS, CardAccentProvider, SPACE_SYSTEM_COLORS, getAccentColorOptions, getSystemAccentColor, useCardAccent } from "./react/theme/cardAccent.js";
15
- import { CATEGORY_ICONS, CATEGORY_LABELS, PROPERTY_PRESETS, createPropertyConfig, deriveBatteryStatus, deriveStatus, formatPropertyLabel, formatPropertyValue, getPropertiesByCategory, getPropertyConfig } from "./react/core/propertyConfig.js";
16
- import { CHAT_RESPONSE_JSON_PROMPT, CHAT_RESPONSE_MCP_TOOL, CHAT_RESPONSE_TOOL_SCHEMA, CHAT_RESPONSE_YAML_PROMPT, CHAT_STATUS_RULES_PROMPT, ChatPanel, createChatResponseParser, parseChatResponse, parseMcpToolResult } from "./react/core/ChatPanel.js";
17
- import { CardHeader } from "./react/core/CardHeader.js";
15
+ import { CATEGORY_ICONS, CATEGORY_LABELS, PROPERTY_PRESETS, createPropertyConfig, deriveBatteryStatus, deriveStatus, formatPropertyLabel, formatPropertyValue, getPropertiesByCategory, getPropertyConfig } from "./react/core/data/propertyConfig.js";
16
+ import { CHAT_RESPONSE_JSON_PROMPT, CHAT_RESPONSE_MCP_TOOL, CHAT_RESPONSE_TOOL_SCHEMA, CHAT_RESPONSE_YAML_PROMPT, CHAT_STATUS_RULES_PROMPT, ChatPanel, createChatResponseParser, parseChatResponse, parseMcpToolResult } from "./react/core/widgets/ChatPanel.js";
17
+ import { Capture, loadCapturePlaceholderImage, useCapture } from "./react/core/widgets/Capture.js";
18
+ import { CardHeader } from "./react/core/display/CardHeader.js";
18
19
  import { CategoryPalette } from "./react/utils/categoryPalette.js";
19
20
  import { CategoryProvider, useCategoryPalette, useCategoryPaletteRequired } from "./react/context/CategoryContext.js";
20
21
  import { Center } from "./react/core/layout/Center.js";
21
- import { Checkbox } from "./react/core/Checkbox.js";
22
+ import { Checkbox } from "./react/core/inputs/Checkbox.js";
22
23
  import { ClassificationBanner } from "./react/astro/ClassificationBanner.js";
23
- import { ColorPickerPanel } from "./react/core/ColorPickerPanel.js";
24
- import { CommandBuilder } from "./react/core/CommandBuilder.js";
25
- import { ConfirmDialog, ConfirmProvider, useConfirm } from "./react/core/ConfirmDialog.js";
26
- import { ConnectionForm } from "./react/core/ConnectionForm.js";
27
- import { Container } from "./react/core/Container.js";
28
- import { CopyButton, useCopyToClipboard } from "./react/core/CopyButton.js";
29
- import { DataTable, DataTableRowDetail } from "./react/core/DataTable.js";
30
- import { DataValue, DataValueGroup } from "./react/core/DataValue.js";
31
- import { Dialog } from "./react/core/Dialog.js";
24
+ import { ColorPickerPanel } from "./react/core/widgets/ColorPickerPanel.js";
25
+ import { CommandBuilder } from "./react/core/widgets/CommandBuilder.js";
26
+ import { ConfirmDialog, ConfirmProvider, useConfirm } from "./react/core/feedback/ConfirmDialog.js";
27
+ import { ConnectionForm } from "./react/core/widgets/ConnectionForm.js";
28
+ import { Container } from "./react/core/display/Container.js";
29
+ import { CopyButton, useCopyToClipboard } from "./react/core/display/CopyButton.js";
30
+ import { DataTable, DataTableRowDetail } from "./react/core/data/DataTable.js";
31
+ import { DataValue, DataValueGroup } from "./react/core/data/DataValue.js";
32
+ import { Dialog } from "./react/core/feedback/Dialog.js";
32
33
  import { DisplaySettingsProvider, GLASS_TINTS, PRESET_COLORS, getEffectiveCompactMode, useDisplaySettings, useDisplaySettingsOptional } from "./react/context/DisplaySettingsContext.js";
33
34
  import { Divider } from "./react/core/layout/Divider.js";
34
- import { FileExplorer } from "./react/core/FileExplorer.js";
35
+ import { FileExplorer } from "./react/core/widgets/FileExplorer.js";
35
36
  import { Flex } from "./react/core/layout/Flex.js";
36
- import { GLASS_COLOR_OVERLAYS, GlassCard } from "./react/core/GlassCard.js";
37
+ import { GLASS_COLOR_OVERLAYS, GlassCard } from "./react/core/display/GlassCard.js";
37
38
  import { GlobalStatusBar } from "./react/astro/GlobalStatusBar.js";
38
39
  import { Grid } from "./react/core/layout/Grid.js";
39
40
  import { GroundTrackMap } from "./react/charts/GroundTrackMap.js";
40
41
  import { HStack, Stack, VStack } from "./react/core/layout/Stack.js";
41
- import { HeaderIconWithStatus } from "./react/core/HeaderIconWithStatus.js";
42
- import { HexViewer, REGION_BORDER_COLORS, REGION_COLORS } from "./react/core/HexViewer.js";
43
- import { Icon, getIconNames, isValidIconName } from "./react/core/Icon.js";
44
- import { ImageGallery } from "./react/core/ImageGallery.js";
45
- import { Input } from "./react/core/Input.js";
46
- import { LimitsBar } from "./react/core/LimitsBar.js";
47
- import { LogViewer } from "./react/core/LogViewer.js";
48
- import { Menu, Popover } from "./react/core/Popover.js";
49
- import { MessageStream } from "./react/core/MessageStream.js";
42
+ import { HeaderIconWithStatus } from "./react/core/display/HeaderIconWithStatus.js";
43
+ import { HexViewer, REGION_BORDER_COLORS, REGION_COLORS } from "./react/core/widgets/HexViewer.js";
44
+ import { Icon, getIconNames, isValidIconName } from "./react/core/display/Icon.js";
45
+ import { ImageGallery } from "./react/core/widgets/ImageGallery.js";
46
+ import { Input } from "./react/core/inputs/Input.js";
47
+ import { LayerControlPanel } from "./react/panels/LayerControlPanel.js";
48
+ import { LimitsBar } from "./react/core/inputs/LimitsBar.js";
49
+ import { LogViewer } from "./react/core/widgets/LogViewer.js";
50
+ import { Menu, Popover } from "./react/core/overlays/Popover.js";
51
+ import { MessageStream } from "./react/core/widgets/MessageStream.js";
50
52
  import { MiniSimulationControls, SimulationControls, SimulationControlsWithClock } from "./react/astro/SimulationControls.js";
51
- import { MissionCalendar } from "./react/core/MissionCalendar.js";
53
+ import { MissionCalendar } from "./react/core/widgets/MissionCalendar.js";
52
54
  import { MissionClock } from "./react/astro/MissionClock.js";
53
55
  import { MonitoringIcon } from "./react/astro/MonitoringIcon.js";
54
56
  import { Notification } from "./react/astro/Notification.js";
55
- import { NumberInput } from "./react/core/NumberInput.js";
56
- import { PacketViewer } from "./react/core/PacketViewer.js";
57
- import { Pagination } from "./react/core/Pagination.js";
58
- import { PinInput } from "./react/core/PinInput.js";
57
+ import { NumberInput } from "./react/core/inputs/NumberInput.js";
58
+ import { ObjectInventoryPanel, recommendedFlyDistance } from "./react/panels/ObjectInventoryPanel.js";
59
+ import { PacketViewer } from "./react/core/widgets/PacketViewer.js";
60
+ import { Pagination } from "./react/core/navigation/Pagination.js";
61
+ import { PinInput } from "./react/core/inputs/PinInput.js";
59
62
  import { Progress } from "./react/astro/Progress.js";
60
- import { SIDENAV_HEADER_LOGO_SLOT_HEIGHT_PX, SideNav } from "./react/core/SideNav.js";
61
- import { Select } from "./react/core/Select.js";
62
- import { SidePanel } from "./react/core/SidePanel.js";
63
+ import { SIDENAV_HEADER_LOGO_SLOT_HEIGHT_PX, SideNav } from "./react/core/navigation/SideNav.js";
64
+ import { Select } from "./react/core/inputs/Select.js";
65
+ import { SidePanel } from "./react/core/overlays/SidePanel.js";
63
66
  import { Spacer } from "./react/core/layout/Spacer.js";
64
67
  import { StatusIndicator } from "./react/astro/StatusIndicator.js";
65
- import { Tabs } from "./react/core/Tabs.js";
68
+ import { Tabs } from "./react/core/navigation/Tabs.js";
66
69
  import { ThemeProvider, useScrollbarStyles, useTheme, useThemeTokens } from "./react/theme/ThemeProvider.js";
67
70
  import { UnifiedTimeline } from "./react/astro/UnifiedTimeline.js";
68
- import { ToastProvider, useToast, useToastManager } from "./react/core/Toast.js";
69
- import { Toggle } from "./react/core/Toggle.js";
70
- import { Tooltip } from "./react/core/Tooltip.js";
71
+ import { ToastProvider, useToast, useToastManager } from "./react/core/feedback/Toast.js";
72
+ import { Toggle } from "./react/core/inputs/Toggle.js";
73
+ import { Tooltip } from "./react/core/overlays/Tooltip.js";
74
+ import { ZenSpace3D } from "./react/3d/ZenSpace3D.js";
75
+ import { ecefEulerXyzToHpr, ecefMetersToSdkPosition } from "./react/3d/CesiumCaptureSource.js";
71
76
  import { resolveResponsive, resolveSpacing } from "./react/core/layout/responsive.js";
77
+ import { useSimulationScene } from "./react/hooks/useSimulationScene.js";
72
78
  export {
73
79
  ActivityPlanner,
74
80
  AppBar,
@@ -88,6 +94,7 @@ export {
88
94
  CHAT_RESPONSE_TOOL_SCHEMA,
89
95
  CHAT_RESPONSE_YAML_PROMPT,
90
96
  CHAT_STATUS_RULES_PROMPT,
97
+ Capture,
91
98
  CardAccentProvider,
92
99
  CardHeader,
93
100
  CategoryPalette,
@@ -139,6 +146,7 @@ export {
139
146
  ImageGallery,
140
147
  Input,
141
148
  Label,
149
+ LayerControlPanel,
142
150
  LimitsBar,
143
151
  LogViewer,
144
152
  Menu,
@@ -151,6 +159,7 @@ export {
151
159
  Mono,
152
160
  Notification,
153
161
  NumberInput,
162
+ ObjectInventoryPanel,
154
163
  PLANETS,
155
164
  PRESET_COLORS,
156
165
  PROPERTY_PRESETS,
@@ -186,6 +195,7 @@ export {
186
195
  Tooltip,
187
196
  Typography,
188
197
  VStack,
198
+ ZenSpace3D,
189
199
  addAlpha,
190
200
  auToKm,
191
201
  clamp,
@@ -194,6 +204,8 @@ export {
194
204
  createPropertyConfig,
195
205
  deriveBatteryStatus,
196
206
  deriveStatus,
207
+ ecefEulerXyzToHpr,
208
+ ecefMetersToSdkPosition,
197
209
  estimateOrbitalPeriod,
198
210
  estimateOrbitalVelocity,
199
211
  focusRingStyle,
@@ -232,11 +244,13 @@ export {
232
244
  isValidIconName,
233
245
  isValidNumber,
234
246
  lerp,
247
+ loadCapturePlaceholderImage,
235
248
  mapRange,
236
249
  normalizePlanetName,
237
250
  normalizeStatus,
238
251
  parseChatResponse,
239
252
  parseMcpToolResult,
253
+ recommendedFlyDistance,
240
254
  resolveResponsive,
241
255
  resolveSpacing,
242
256
  safeAccentText,
@@ -244,6 +258,7 @@ export {
244
258
  tabularNumsStyle,
245
259
  transitions,
246
260
  useBreakpoint,
261
+ useCapture,
247
262
  useCardAccent,
248
263
  useCategoryPalette,
249
264
  useCategoryPaletteRequired,
@@ -253,6 +268,7 @@ export {
253
268
  useDisplaySettings,
254
269
  useDisplaySettingsOptional,
255
270
  useScrollbarStyles,
271
+ useSimulationScene,
256
272
  useTheme,
257
273
  useThemeTokens,
258
274
  useToast,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}