@zendir/ui 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (359) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/LICENSE +21 -0
  3. package/README.md +589 -0
  4. package/dist/index.d.ts +8 -0
  5. package/dist/index.js +421 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/react/3d/EarthViewer.d.ts +46 -0
  8. package/dist/react/3d/EarthViewer.js +836 -0
  9. package/dist/react/3d/EarthViewer.js.map +1 -0
  10. package/dist/react/3d/SolarSystemViewer.d.ts +43 -0
  11. package/dist/react/3d/SolarSystemViewer.js +372 -0
  12. package/dist/react/3d/SolarSystemViewer.js.map +1 -0
  13. package/dist/react/3d/ZenSpace3D.d.ts +16 -0
  14. package/dist/react/3d/ZenSpace3D.js +1253 -0
  15. package/dist/react/3d/ZenSpace3D.js.map +1 -0
  16. package/dist/react/3d/ZenSpace3DCesium.d.ts +9 -0
  17. package/dist/react/3d/ZenSpace3DCesium.js +186 -0
  18. package/dist/react/3d/ZenSpace3DCesium.js.map +1 -0
  19. package/dist/react/3d/ZenSpace3DShaders.d.ts +78 -0
  20. package/dist/react/3d/ZenSpace3DShaders.js +94 -0
  21. package/dist/react/3d/ZenSpace3DShaders.js.map +1 -0
  22. package/dist/react/3d/ZenSpace3DTypes.d.ts +614 -0
  23. package/dist/react/3d/ZenSpace3DUtils.d.ts +183 -0
  24. package/dist/react/3d/ZenSpace3DUtils.js +213 -0
  25. package/dist/react/3d/ZenSpace3DUtils.js.map +1 -0
  26. package/dist/react/3d/index.d.ts +23 -0
  27. package/dist/react/3d/threeLoader.d.ts +22 -0
  28. package/dist/react/3d/threeLoader.js +18 -0
  29. package/dist/react/3d/threeLoader.js.map +1 -0
  30. package/dist/react/astro/ClassificationBanner.d.ts +25 -0
  31. package/dist/react/astro/ClassificationBanner.js +83 -0
  32. package/dist/react/astro/ClassificationBanner.js.map +1 -0
  33. package/dist/react/astro/GlobalStatusBar.d.ts +42 -0
  34. package/dist/react/astro/GlobalStatusBar.js +165 -0
  35. package/dist/react/astro/GlobalStatusBar.js.map +1 -0
  36. package/dist/react/astro/MissionClock.d.ts +169 -0
  37. package/dist/react/astro/MissionClock.js +411 -0
  38. package/dist/react/astro/MissionClock.js.map +1 -0
  39. package/dist/react/astro/MonitoringIcon.d.ts +60 -0
  40. package/dist/react/astro/MonitoringIcon.js +369 -0
  41. package/dist/react/astro/MonitoringIcon.js.map +1 -0
  42. package/dist/react/astro/Notification.d.ts +42 -0
  43. package/dist/react/astro/Notification.js +156 -0
  44. package/dist/react/astro/Notification.js.map +1 -0
  45. package/dist/react/astro/Progress.d.ts +39 -0
  46. package/dist/react/astro/Progress.js +149 -0
  47. package/dist/react/astro/Progress.js.map +1 -0
  48. package/dist/react/astro/SimulationControls.d.ts +136 -0
  49. package/dist/react/astro/SimulationControls.js +668 -0
  50. package/dist/react/astro/SimulationControls.js.map +1 -0
  51. package/dist/react/astro/StatusIndicator.d.ts +34 -0
  52. package/dist/react/astro/StatusIndicator.js +189 -0
  53. package/dist/react/astro/StatusIndicator.js.map +1 -0
  54. package/dist/react/astro/UnifiedTimeline.d.ts +106 -0
  55. package/dist/react/astro/UnifiedTimeline.js +1768 -0
  56. package/dist/react/astro/UnifiedTimeline.js.map +1 -0
  57. package/dist/react/astro/index.d.ts +63 -0
  58. package/dist/react/cards/AccessCard.d.ts +37 -0
  59. package/dist/react/cards/AccessCard.js +410 -0
  60. package/dist/react/cards/AccessCard.js.map +1 -0
  61. package/dist/react/cards/OrbitCard.d.ts +31 -0
  62. package/dist/react/cards/OrbitCard.js +372 -0
  63. package/dist/react/cards/OrbitCard.js.map +1 -0
  64. package/dist/react/cards/SpacecraftCard.d.ts +54 -0
  65. package/dist/react/cards/SpacecraftCard.js +941 -0
  66. package/dist/react/cards/SpacecraftCard.js.map +1 -0
  67. package/dist/react/cards/TelemetryCard.d.ts +40 -0
  68. package/dist/react/cards/TelemetryCard.js +742 -0
  69. package/dist/react/cards/TelemetryCard.js.map +1 -0
  70. package/dist/react/cards/TelemetryStreamCard.d.ts +59 -0
  71. package/dist/react/cards/TelemetryStreamCard.js +309 -0
  72. package/dist/react/cards/TelemetryStreamCard.js.map +1 -0
  73. package/dist/react/cards/index.d.ts +13 -0
  74. package/dist/react/charts/GroundTrackMap.d.ts +112 -0
  75. package/dist/react/charts/GroundTrackMap.js +1123 -0
  76. package/dist/react/charts/GroundTrackMap.js.map +1 -0
  77. package/dist/react/charts/GroundTrackMapLeaflet.d.ts +26 -0
  78. package/dist/react/charts/GroundTrackMapLeaflet.js +571 -0
  79. package/dist/react/charts/GroundTrackMapLeaflet.js.map +1 -0
  80. package/dist/react/charts/groundTrackMapLeafletTiles.d.ts +22 -0
  81. package/dist/react/charts/groundTrackMapLeafletTiles.js +11 -0
  82. package/dist/react/charts/groundTrackMapLeafletTiles.js.map +1 -0
  83. package/dist/react/charts/groundTrackMapLeafletUtils.d.ts +24 -0
  84. package/dist/react/charts/groundTrackMapLeafletUtils.js +109 -0
  85. package/dist/react/charts/groundTrackMapLeafletUtils.js.map +1 -0
  86. package/dist/react/charts/index.d.ts +10 -0
  87. package/dist/react/charts/unified/AstroChart.d.ts +24 -0
  88. package/dist/react/charts/unified/AstroChart.js +1405 -0
  89. package/dist/react/charts/unified/AstroChart.js.map +1 -0
  90. package/dist/react/charts/unified/PowerOverviewChart.d.ts +73 -0
  91. package/dist/react/charts/unified/PowerOverviewChart.js +488 -0
  92. package/dist/react/charts/unified/PowerOverviewChart.js.map +1 -0
  93. package/dist/react/charts/unified/domain.d.ts +845 -0
  94. package/dist/react/charts/unified/domain.js +3168 -0
  95. package/dist/react/charts/unified/domain.js.map +1 -0
  96. package/dist/react/charts/unified/generators.d.ts +276 -0
  97. package/dist/react/charts/unified/generators.js +518 -0
  98. package/dist/react/charts/unified/generators.js.map +1 -0
  99. package/dist/react/charts/unified/index.d.ts +55 -0
  100. package/dist/react/charts/unified/presets.d.ts +290 -0
  101. package/dist/react/charts/unified/presets.js +999 -0
  102. package/dist/react/charts/unified/presets.js.map +1 -0
  103. package/dist/react/charts/unified/sync.d.ts +69 -0
  104. package/dist/react/charts/unified/sync.js +219 -0
  105. package/dist/react/charts/unified/sync.js.map +1 -0
  106. package/dist/react/charts/unified/theme.d.ts +447 -0
  107. package/dist/react/charts/unified/theme.js +562 -0
  108. package/dist/react/charts/unified/theme.js.map +1 -0
  109. package/dist/react/charts/unified/types.d.ts +826 -0
  110. package/dist/react/charts/unified/useChartStream.d.ts +58 -0
  111. package/dist/react/charts/unified/useChartStream.js +226 -0
  112. package/dist/react/charts/unified/useChartStream.js.map +1 -0
  113. package/dist/react/chatgpt/AppCard.d.ts +59 -0
  114. package/dist/react/chatgpt/AppCard.js +306 -0
  115. package/dist/react/chatgpt/AppCard.js.map +1 -0
  116. package/dist/react/chatgpt/ChatGPTCard.d.ts +6 -0
  117. package/dist/react/chatgpt/index.d.ts +167 -0
  118. package/dist/react/chatgpt/index.js +166 -0
  119. package/dist/react/chatgpt/index.js.map +1 -0
  120. package/dist/react/context/DisplaySettingsContext.d.ts +107 -0
  121. package/dist/react/context/DisplaySettingsContext.js +169 -0
  122. package/dist/react/context/DisplaySettingsContext.js.map +1 -0
  123. package/dist/react/context/index.d.ts +5 -0
  124. package/dist/react/core/ActivityPlanner.d.ts +45 -0
  125. package/dist/react/core/ActivityPlanner.js +532 -0
  126. package/dist/react/core/ActivityPlanner.js.map +1 -0
  127. package/dist/react/core/AppBar.d.ts +71 -0
  128. package/dist/react/core/AppBar.js +817 -0
  129. package/dist/react/core/AppBar.js.map +1 -0
  130. package/dist/react/core/AstroIcon.d.ts +84 -0
  131. package/dist/react/core/AstroIcon.js +1243 -0
  132. package/dist/react/core/AstroIcon.js.map +1 -0
  133. package/dist/react/core/Badge.d.ts +27 -0
  134. package/dist/react/core/Badge.js +134 -0
  135. package/dist/react/core/Badge.js.map +1 -0
  136. package/dist/react/core/Button.d.ts +26 -0
  137. package/dist/react/core/Button.js +306 -0
  138. package/dist/react/core/Button.js.map +1 -0
  139. package/dist/react/core/CardHeader.d.ts +34 -0
  140. package/dist/react/core/CardHeader.js +316 -0
  141. package/dist/react/core/CardHeader.js.map +1 -0
  142. package/dist/react/core/ChatPanel.d.ts +627 -0
  143. package/dist/react/core/ChatPanel.js +1144 -0
  144. package/dist/react/core/ChatPanel.js.map +1 -0
  145. package/dist/react/core/Checkbox.d.ts +26 -0
  146. package/dist/react/core/Checkbox.js +130 -0
  147. package/dist/react/core/Checkbox.js.map +1 -0
  148. package/dist/react/core/ColorPickerPanel.d.ts +25 -0
  149. package/dist/react/core/ColorPickerPanel.js +293 -0
  150. package/dist/react/core/ColorPickerPanel.js.map +1 -0
  151. package/dist/react/core/CommandBuilder.d.ts +74 -0
  152. package/dist/react/core/CommandBuilder.js +518 -0
  153. package/dist/react/core/CommandBuilder.js.map +1 -0
  154. package/dist/react/core/ConfirmDialog.d.ts +45 -0
  155. package/dist/react/core/ConfirmDialog.js +315 -0
  156. package/dist/react/core/ConfirmDialog.js.map +1 -0
  157. package/dist/react/core/ConnectionForm.d.ts +57 -0
  158. package/dist/react/core/ConnectionForm.js +496 -0
  159. package/dist/react/core/ConnectionForm.js.map +1 -0
  160. package/dist/react/core/Container.d.ts +51 -0
  161. package/dist/react/core/Container.js +670 -0
  162. package/dist/react/core/Container.js.map +1 -0
  163. package/dist/react/core/CopyButton.d.ts +39 -0
  164. package/dist/react/core/CopyButton.js +105 -0
  165. package/dist/react/core/CopyButton.js.map +1 -0
  166. package/dist/react/core/DataTable.d.ts +113 -0
  167. package/dist/react/core/DataTable.js +446 -0
  168. package/dist/react/core/DataTable.js.map +1 -0
  169. package/dist/react/core/DataValue.d.ts +64 -0
  170. package/dist/react/core/DataValue.js +545 -0
  171. package/dist/react/core/DataValue.js.map +1 -0
  172. package/dist/react/core/Dialog.d.ts +32 -0
  173. package/dist/react/core/Dialog.js +201 -0
  174. package/dist/react/core/Dialog.js.map +1 -0
  175. package/dist/react/core/FileExplorer.d.ts +65 -0
  176. package/dist/react/core/FileExplorer.js +520 -0
  177. package/dist/react/core/FileExplorer.js.map +1 -0
  178. package/dist/react/core/GlassCard.d.ts +129 -0
  179. package/dist/react/core/GlassCard.js +375 -0
  180. package/dist/react/core/GlassCard.js.map +1 -0
  181. package/dist/react/core/HeaderIconWithStatus.d.ts +39 -0
  182. package/dist/react/core/HeaderIconWithStatus.js +157 -0
  183. package/dist/react/core/HeaderIconWithStatus.js.map +1 -0
  184. package/dist/react/core/HexViewer.d.ts +143 -0
  185. package/dist/react/core/HexViewer.js +1106 -0
  186. package/dist/react/core/HexViewer.js.map +1 -0
  187. package/dist/react/core/Icon.d.ts +32 -0
  188. package/dist/react/core/Icon.js +142 -0
  189. package/dist/react/core/Icon.js.map +1 -0
  190. package/dist/react/core/ImageGallery.d.ts +41 -0
  191. package/dist/react/core/ImageGallery.js +320 -0
  192. package/dist/react/core/ImageGallery.js.map +1 -0
  193. package/dist/react/core/Input.d.ts +38 -0
  194. package/dist/react/core/Input.js +288 -0
  195. package/dist/react/core/Input.js.map +1 -0
  196. package/dist/react/core/LimitsBar.d.ts +51 -0
  197. package/dist/react/core/LimitsBar.js +200 -0
  198. package/dist/react/core/LimitsBar.js.map +1 -0
  199. package/dist/react/core/LogViewer.d.ts +61 -0
  200. package/dist/react/core/LogViewer.js +599 -0
  201. package/dist/react/core/LogViewer.js.map +1 -0
  202. package/dist/react/core/MessageStream.d.ts +58 -0
  203. package/dist/react/core/MessageStream.js +455 -0
  204. package/dist/react/core/MessageStream.js.map +1 -0
  205. package/dist/react/core/MissionCalendar.d.ts +81 -0
  206. package/dist/react/core/MissionCalendar.js +1049 -0
  207. package/dist/react/core/MissionCalendar.js.map +1 -0
  208. package/dist/react/core/NumberInput.d.ts +85 -0
  209. package/dist/react/core/NumberInput.js +507 -0
  210. package/dist/react/core/NumberInput.js.map +1 -0
  211. package/dist/react/core/PacketViewer.d.ts +73 -0
  212. package/dist/react/core/PacketViewer.js +431 -0
  213. package/dist/react/core/PacketViewer.js.map +1 -0
  214. package/dist/react/core/Pagination.d.ts +30 -0
  215. package/dist/react/core/Pagination.js +190 -0
  216. package/dist/react/core/Pagination.js.map +1 -0
  217. package/dist/react/core/PinInput.d.ts +41 -0
  218. package/dist/react/core/PinInput.js +210 -0
  219. package/dist/react/core/PinInput.js.map +1 -0
  220. package/dist/react/core/Popover.d.ts +55 -0
  221. package/dist/react/core/Popover.js +288 -0
  222. package/dist/react/core/Popover.js.map +1 -0
  223. package/dist/react/core/Select.d.ts +42 -0
  224. package/dist/react/core/Select.js +303 -0
  225. package/dist/react/core/Select.js.map +1 -0
  226. package/dist/react/core/SideNav.d.ts +103 -0
  227. package/dist/react/core/SideNav.js +551 -0
  228. package/dist/react/core/SideNav.js.map +1 -0
  229. package/dist/react/core/SidePanel.d.ts +33 -0
  230. package/dist/react/core/SidePanel.js +199 -0
  231. package/dist/react/core/SidePanel.js.map +1 -0
  232. package/dist/react/core/Tabs.d.ts +47 -0
  233. package/dist/react/core/Tabs.js +129 -0
  234. package/dist/react/core/Tabs.js.map +1 -0
  235. package/dist/react/core/Toast.d.ts +56 -0
  236. package/dist/react/core/Toast.js +229 -0
  237. package/dist/react/core/Toast.js.map +1 -0
  238. package/dist/react/core/Toggle.d.ts +22 -0
  239. package/dist/react/core/Toggle.js +151 -0
  240. package/dist/react/core/Toggle.js.map +1 -0
  241. package/dist/react/core/Tooltip.d.ts +19 -0
  242. package/dist/react/core/Tooltip.js +179 -0
  243. package/dist/react/core/Tooltip.js.map +1 -0
  244. package/dist/react/core/Typography.d.ts +127 -0
  245. package/dist/react/core/Typography.js +187 -0
  246. package/dist/react/core/Typography.js.map +1 -0
  247. package/dist/react/core/index.d.ts +108 -0
  248. package/dist/react/core/layout/Box.d.ts +77 -0
  249. package/dist/react/core/layout/Box.js +126 -0
  250. package/dist/react/core/layout/Box.js.map +1 -0
  251. package/dist/react/core/layout/Center.d.ts +20 -0
  252. package/dist/react/core/layout/Center.js +34 -0
  253. package/dist/react/core/layout/Center.js.map +1 -0
  254. package/dist/react/core/layout/Divider.d.ts +16 -0
  255. package/dist/react/core/layout/Divider.js +108 -0
  256. package/dist/react/core/layout/Divider.js.map +1 -0
  257. package/dist/react/core/layout/Flex.d.ts +30 -0
  258. package/dist/react/core/layout/Flex.js +128 -0
  259. package/dist/react/core/layout/Flex.js.map +1 -0
  260. package/dist/react/core/layout/Grid.d.ts +36 -0
  261. package/dist/react/core/layout/Grid.js +142 -0
  262. package/dist/react/core/layout/Grid.js.map +1 -0
  263. package/dist/react/core/layout/Spacer.d.ts +8 -0
  264. package/dist/react/core/layout/Spacer.js +31 -0
  265. package/dist/react/core/layout/Spacer.js.map +1 -0
  266. package/dist/react/core/layout/Stack.d.ts +54 -0
  267. package/dist/react/core/layout/Stack.js +74 -0
  268. package/dist/react/core/layout/Stack.js.map +1 -0
  269. package/dist/react/core/layout/index.d.ts +38 -0
  270. package/dist/react/core/layout/responsive.d.ts +23 -0
  271. package/dist/react/core/layout/responsive.js +26 -0
  272. package/dist/react/core/layout/responsive.js.map +1 -0
  273. package/dist/react/core/layout/useBreakpoint.d.ts +77 -0
  274. package/dist/react/core/layout/useBreakpoint.js +73 -0
  275. package/dist/react/core/layout/useBreakpoint.js.map +1 -0
  276. package/dist/react/core/propertyConfig.d.ts +443 -0
  277. package/dist/react/core/propertyConfig.js +399 -0
  278. package/dist/react/core/propertyConfig.js.map +1 -0
  279. package/dist/react/hooks/index.d.ts +21 -0
  280. package/dist/react/hooks/useAccessWindows.d.ts +66 -0
  281. package/dist/react/hooks/useCompactMode.d.ts +82 -0
  282. package/dist/react/hooks/useCompactMode.js +62 -0
  283. package/dist/react/hooks/useCompactMode.js.map +1 -0
  284. package/dist/react/hooks/useLiveSelection.d.ts +57 -0
  285. package/dist/react/hooks/useSimulationPlayback.d.ts +97 -0
  286. package/dist/react/hooks/useSimulationTime.d.ts +61 -0
  287. package/dist/react/hooks/useSpacecraftPosition.d.ts +50 -0
  288. package/dist/react/hooks/useSpacecraftPosition.js +89 -0
  289. package/dist/react/hooks/useSpacecraftPosition.js.map +1 -0
  290. package/dist/react/hooks/useTelemetry.d.ts +55 -0
  291. package/dist/react/hooks/useTelemetry.js +73 -0
  292. package/dist/react/hooks/useTelemetry.js.map +1 -0
  293. package/dist/react/hooks/useZendirSession.d.ts +109 -0
  294. package/dist/react/hooks/useZendirSession.js +148 -0
  295. package/dist/react/hooks/useZendirSession.js.map +1 -0
  296. package/dist/react/index.d.ts +74 -0
  297. package/dist/react/shared/ErrorBoundary.d.ts +63 -0
  298. package/dist/react/shared/ErrorBoundary.js +142 -0
  299. package/dist/react/shared/ErrorBoundary.js.map +1 -0
  300. package/dist/react/shared/Skeleton.d.ts +110 -0
  301. package/dist/react/shared/Skeleton.js +324 -0
  302. package/dist/react/shared/Skeleton.js.map +1 -0
  303. package/dist/react/shared/index.d.ts +12 -0
  304. package/dist/react/theme/ThemeProvider.d.ts +385 -0
  305. package/dist/react/theme/ThemeProvider.js +1096 -0
  306. package/dist/react/theme/ThemeProvider.js.map +1 -0
  307. package/dist/react/theme/astro-tokens.d.ts +153 -0
  308. package/dist/react/theme/cardAccent.d.ts +75 -0
  309. package/dist/react/theme/cardAccent.js +137 -0
  310. package/dist/react/theme/cardAccent.js.map +1 -0
  311. package/dist/react/theme/config.d.ts +39 -0
  312. package/dist/react/theme/index.d.ts +9 -0
  313. package/dist/react/types.d.ts +360 -0
  314. package/dist/react/types.js +58 -0
  315. package/dist/react/types.js.map +1 -0
  316. package/dist/react/utils/index.d.ts +247 -0
  317. package/dist/react/utils/index.js +423 -0
  318. package/dist/react/utils/index.js.map +1 -0
  319. package/dist/react/visualizations/EclipseTimerCard.d.ts +17 -0
  320. package/dist/react/visualizations/EclipseTimerCard.js +250 -0
  321. package/dist/react/visualizations/EclipseTimerCard.js.map +1 -0
  322. package/dist/react/visualizations/LinkBudgetCard.d.ts +50 -0
  323. package/dist/react/visualizations/LinkBudgetCard.js +444 -0
  324. package/dist/react/visualizations/LinkBudgetCard.js.map +1 -0
  325. package/dist/react/visualizations/NavBallCard.d.ts +17 -0
  326. package/dist/react/visualizations/NavBallCard.js +243 -0
  327. package/dist/react/visualizations/NavBallCard.js.map +1 -0
  328. package/dist/react/visualizations/PropulsionCard.d.ts +37 -0
  329. package/dist/react/visualizations/PropulsionCard.js +298 -0
  330. package/dist/react/visualizations/PropulsionCard.js.map +1 -0
  331. package/dist/react/visualizations/SensorFootprintCard.d.ts +33 -0
  332. package/dist/react/visualizations/SensorFootprintCard.js +326 -0
  333. package/dist/react/visualizations/SensorFootprintCard.js.map +1 -0
  334. package/dist/react/visualizations/ThermalHeatmapCard.d.ts +38 -0
  335. package/dist/react/visualizations/ThermalHeatmapCard.js +372 -0
  336. package/dist/react/visualizations/ThermalHeatmapCard.js.map +1 -0
  337. package/dist/react/visualizations/index.d.ts +17 -0
  338. package/dist/react.d.ts +1 -0
  339. package/dist/react.js +421 -0
  340. package/dist/react.js.map +1 -0
  341. package/dist/shaders/atmosphere.frag.js +5 -0
  342. package/dist/shaders/atmosphere.frag.js.map +1 -0
  343. package/dist/shaders/atmosphere.vert.js +5 -0
  344. package/dist/shaders/atmosphere.vert.js.map +1 -0
  345. package/dist/shaders/stars.frag.js +5 -0
  346. package/dist/shaders/stars.frag.js.map +1 -0
  347. package/dist/shaders/stars.vert.js +5 -0
  348. package/dist/shaders/stars.vert.js.map +1 -0
  349. package/dist/style.css +143 -0
  350. package/dist/tokens/index.d.ts +296 -0
  351. package/dist/tokens/index.js +263 -0
  352. package/dist/tokens/index.js.map +1 -0
  353. package/dist/tokens/tokens.css +155 -0
  354. package/dist/types/index.d.ts +23 -0
  355. package/dist/types.d.ts +1 -0
  356. package/dist/types.js +2 -0
  357. package/dist/types.js.map +1 -0
  358. package/package.json +220 -0
  359. package/sdk-stub.js +22 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MessageStream.js","sources":["../../../src/react/core/MessageStream.tsx"],"sourcesContent":["/**\n * @zendir/ui - MessageStream Component\n * \n * Stream/notification window for displaying messages, events, or status updates.\n * Each message card has integrated status system with dual-coding (color + shape).\n * \n * AstroUXDS Compliance:\n * - Status colors per AstroUXDS status system\n * - Dual-coding (color + shape) for accessibility\n * - Clear visual hierarchy\n * - Proper contrast ratios\n * \n * @example\n * ```tsx\n * import { MessageStream } from '@zendir/ui';\n * \n * <MessageStream\n * title=\"Response Status\"\n * messages={[\n * { id: '1', text: 'Message Received', status: 'standby' },\n * { id: '2', text: 'Confirmation Receipt', status: 'normal' },\n * { id: '3', text: 'Failed', status: 'critical' },\n * ]}\n * />\n * ```\n */\n\nimport React, { memo, useMemo } from 'react';\nimport { useTheme } from '../theme';\nimport { classNames, type StatusLevel } from '../utils';\nimport { type AstroIconName } from './AstroIcon';\nimport { Icon } from './Icon';\nimport { useCompactMode } from '../hooks';\n\n// =============================================================================\n// Types\n// =============================================================================\n\nexport interface StreamMessage {\n /** Unique identifier */\n id: string;\n /** Message text/label */\n text: string;\n /** Status level for color and shape */\n status?: StatusLevel;\n /** Optional timestamp */\n timestamp?: Date | string;\n /** Optional icon override */\n icon?: AstroIconName;\n /** Optional metadata/details */\n details?: string;\n /** Child messages (for hierarchical display) */\n children?: StreamMessage[];\n /** Whether this message is highlighted/active */\n active?: boolean;\n}\n\nexport interface MessageStreamProps {\n /** Stream title */\n title?: string;\n /** Subtitle or description */\n subtitle?: string;\n /** Array of messages to display */\n messages: StreamMessage[];\n /** Maximum height before scrolling */\n maxHeight?: number | string;\n /** Show timestamps */\n showTimestamps?: boolean;\n /** Time format for timestamps */\n timeFormat?: 'relative' | 'absolute' | 'time-only';\n /** Variant: 'list' for vertical, 'tree' for hierarchical */\n variant?: 'list' | 'tree' | 'compact';\n /** Custom className */\n className?: string;\n /** Card size */\n size?: 'sm' | 'md' | 'lg';\n /** On message click */\n onMessageClick?: (message: StreamMessage) => void;\n /** Loading state */\n loading?: boolean;\n /** Empty state message */\n emptyMessage?: string;\n /** Show connection lines (tree variant) */\n showConnectors?: boolean;\n /** Enable collapsible compact mode - shows condensed view that expands on hover/click */\n collapsible?: boolean;\n /** Start expanded when in collapsible mode (pinned state) */\n defaultExpanded?: boolean;\n /** Callback when pin state changes in collapsible mode */\n onPinChange?: (isPinned: boolean) => void;\n}\n\n// =============================================================================\n// Status Shapes (same as DataValue for consistency)\n// =============================================================================\n\nconst STATUS_SHAPES: Record<StatusLevel, (size: number, color: string) => React.ReactNode> = {\n off: (size, color) => (\n <svg viewBox=\"0 0 12 12\" width={size} height={size} aria-hidden=\"true\">\n <circle cx=\"6\" cy=\"6\" r=\"5\" fill={color} />\n </svg>\n ),\n standby: (size, color) => (\n <svg viewBox=\"0 0 12 12\" width={size} height={size} aria-hidden=\"true\">\n <circle cx=\"6\" cy=\"6\" r=\"5\" fill=\"none\" stroke={color} strokeWidth=\"2\" />\n </svg>\n ),\n normal: (size, color) => (\n <svg viewBox=\"0 0 12 12\" width={size} height={size} aria-hidden=\"true\">\n <circle cx=\"6\" cy=\"6\" r=\"5\" fill={color} />\n </svg>\n ),\n caution: (size, color) => (\n <svg viewBox=\"0 0 12 12\" width={size} height={size} aria-hidden=\"true\">\n <rect x=\"1\" y=\"1\" width=\"10\" height=\"10\" fill={color} />\n </svg>\n ),\n serious: (size, color) => (\n <svg viewBox=\"0 0 12 12\" width={size} height={size} aria-hidden=\"true\">\n <polygon points=\"6,1 11,6 6,11 1,6\" fill={color} />\n </svg>\n ),\n critical: (size, color) => (\n <svg viewBox=\"0 0 12 12\" width={size} height={size} aria-hidden=\"true\">\n <polygon points=\"6,11 1,2 11,2\" fill={color} />\n </svg>\n ),\n};\n\n// =============================================================================\n// Helper Functions\n// =============================================================================\n\nfunction getStatusColor(status: StatusLevel | undefined, tokens: any): string {\n switch (status) {\n case 'normal': return tokens.colors.status.normal;\n case 'standby': return tokens.colors.status.standby;\n case 'caution': return tokens.colors.status.caution;\n case 'serious': return tokens.colors.status.serious;\n case 'critical': return tokens.colors.status.critical;\n case 'off': return tokens.colors.status.off;\n default: return tokens.colors.status.standby;\n }\n}\n\nfunction formatTimestamp(\n timestamp: Date | string | undefined,\n format: 'relative' | 'absolute' | 'time-only'\n): string {\n if (!timestamp) return '';\n \n const date = typeof timestamp === 'string' ? new Date(timestamp) : timestamp;\n \n if (format === 'relative') {\n const now = new Date();\n const diff = now.getTime() - date.getTime();\n const seconds = Math.floor(diff / 1000);\n const minutes = Math.floor(seconds / 60);\n const hours = Math.floor(minutes / 60);\n \n if (seconds < 60) return 'Just now';\n if (minutes < 60) return `${minutes}m ago`;\n if (hours < 24) return `${hours}h ago`;\n return date.toLocaleDateString();\n }\n \n if (format === 'time-only') {\n return date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit', second: '2-digit' });\n }\n \n return date.toLocaleString();\n}\n\n// =============================================================================\n// Message Card Component\n// =============================================================================\n\ninterface MessageCardProps {\n message: StreamMessage;\n tokens: any;\n size: 'sm' | 'md' | 'lg';\n showTimestamp: boolean;\n timeFormat: 'relative' | 'absolute' | 'time-only';\n onClick?: (message: StreamMessage) => void;\n variant: 'list' | 'tree' | 'compact';\n}\n\nconst MessageCard = memo(function MessageCard({\n message,\n tokens,\n size,\n showTimestamp,\n timeFormat,\n onClick,\n variant,\n}: MessageCardProps) {\n const status = message.status || 'standby';\n const statusColor = getStatusColor(status, tokens);\n \n const sizeConfig = {\n sm: { padding: 8, fontSize: '0.75rem', fontSizeSmall: '0.625rem', iconSize: 10, gap: 6 }, // 12px / 10px in rem\n md: { padding: 12, fontSize: '0.875rem', fontSizeSmall: '0.75rem', iconSize: 12, gap: 8 }, // 14px / 12px in rem\n lg: { padding: 16, fontSize: '1rem', fontSizeSmall: '0.875rem', iconSize: 14, gap: 10 }, // 16px / 14px in rem\n }[size];\n \n const isCompact = variant === 'compact';\n \n return (\n <div\n role=\"listitem\"\n aria-label={`${message.text} - ${status}`}\n onClick={() => onClick?.(message)}\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: sizeConfig.gap,\n padding: isCompact ? `${sizeConfig.padding / 2}px ${sizeConfig.padding}px` : sizeConfig.padding,\n backgroundColor: tokens.colors.background.elevated,\n border: `1.5px solid ${statusColor}`,\n borderRadius: tokens.borderRadius.md,\n cursor: onClick ? 'pointer' : 'default',\n transition: 'all 0.15s ease',\n ...(message.active && {\n boxShadow: `0 0 0 2px ${statusColor}40`,\n }),\n }}\n onMouseEnter={(e) => {\n if (onClick) {\n e.currentTarget.style.backgroundColor = tokens.colors.background.surface;\n e.currentTarget.style.transform = 'translateY(-1px)';\n }\n }}\n onMouseLeave={(e) => {\n if (onClick) {\n e.currentTarget.style.backgroundColor = tokens.colors.background.elevated;\n e.currentTarget.style.transform = 'translateY(0)';\n }\n }}\n >\n {/* Status Shape */}\n <span style={{ flexShrink: 0, display: 'flex', alignItems: 'center' }}>\n {STATUS_SHAPES[status](sizeConfig.iconSize, statusColor)}\n </span>\n \n {/* Message Text */}\n <span\n style={{\n flex: 1,\n fontSize: sizeConfig.fontSize,\n fontWeight: 500,\n color: tokens.colors.text.primary,\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n }}\n >\n {message.text}\n </span>\n \n {/* Details (if any) */}\n {message.details && !isCompact && (\n <span\n style={{\n fontSize: sizeConfig.fontSizeSmall,\n color: tokens.colors.text.tertiary,\n }}\n >\n {message.details}\n </span>\n )}\n \n {/* Timestamp */}\n {showTimestamp && message.timestamp && (\n <span\n style={{\n fontSize: sizeConfig.fontSizeSmall,\n color: tokens.colors.text.tertiary,\n fontFamily: tokens.typography.fontFamily.mono,\n whiteSpace: 'nowrap',\n }}\n >\n {formatTimestamp(message.timestamp, timeFormat)}\n </span>\n )}\n </div>\n );\n});\n\n// =============================================================================\n// Tree Node Component (for hierarchical display)\n// =============================================================================\n\ninterface TreeNodeProps {\n message: StreamMessage;\n tokens: any;\n size: 'sm' | 'md' | 'lg';\n showTimestamp: boolean;\n timeFormat: 'relative' | 'absolute' | 'time-only';\n onClick?: (message: StreamMessage) => void;\n depth: number;\n showConnectors: boolean;\n isLast: boolean;\n}\n\nconst TreeNode = memo(function TreeNode({\n message,\n tokens,\n size,\n showTimestamp,\n timeFormat,\n onClick,\n depth,\n showConnectors,\n isLast,\n}: TreeNodeProps) {\n const hasChildren = message.children && message.children.length > 0;\n const indentSize = 32;\n \n return (\n <div style={{ position: 'relative' }}>\n {/* Connector Lines */}\n {showConnectors && depth > 0 && (\n <>\n {/* Vertical line from parent */}\n <div\n style={{\n position: 'absolute',\n left: (depth - 1) * indentSize + 16,\n top: 0,\n width: 2,\n height: isLast ? '50%' : '100%',\n backgroundColor: tokens.colors.border.muted,\n }}\n />\n {/* Horizontal line to node */}\n <div\n style={{\n position: 'absolute',\n left: (depth - 1) * indentSize + 16,\n top: '50%',\n width: indentSize - 8,\n height: 2,\n backgroundColor: tokens.colors.border.muted,\n }}\n />\n </>\n )}\n \n {/* Message Card */}\n <div style={{ marginLeft: depth * indentSize }}>\n <MessageCard\n message={message}\n tokens={tokens}\n size={size}\n showTimestamp={showTimestamp}\n timeFormat={timeFormat}\n onClick={onClick}\n variant=\"tree\"\n />\n </div>\n \n {/* Render children */}\n {hasChildren && (\n <div style={{ marginTop: 8 }}>\n {message.children!.map((child, index) => (\n <div key={child.id} style={{ marginTop: index > 0 ? 8 : 0 }}>\n <TreeNode\n message={child}\n tokens={tokens}\n size={size}\n showTimestamp={showTimestamp}\n timeFormat={timeFormat}\n onClick={onClick}\n depth={depth + 1}\n showConnectors={showConnectors}\n isLast={index === message.children!.length - 1}\n />\n </div>\n ))}\n </div>\n )}\n </div>\n );\n});\n\n// =============================================================================\n// MessageStream Component\n// =============================================================================\n\nexport const MessageStream = memo(function MessageStream({\n title,\n subtitle,\n messages,\n maxHeight,\n showTimestamps = false,\n timeFormat = 'relative',\n variant = 'list',\n className = '',\n size = 'md',\n onMessageClick,\n loading = false,\n emptyMessage = 'No messages',\n showConnectors = true,\n collapsible = false,\n defaultExpanded = false,\n onPinChange,\n}: MessageStreamProps): React.ReactElement {\n const { tokens, theme, prefersReducedMotion } = useTheme();\n const isTransparentTheme = theme === 'transparent' || theme === 'transparent-bold' || theme === 'transparent-minimal';\n\n // Collapsible compact mode state management\n const { expanded, isPinned, handlers, transitionDuration } = useCompactMode({\n compact: collapsible,\n defaultExpanded,\n onPinChange,\n });\n \n // Card container styles - Use transparent background with blur for transparent themes (matching Timeline)\n const containerStyle = useMemo(() => ({\n backgroundColor: isTransparentTheme ? 'transparent' : tokens.colors.background.surface,\n ...(isTransparentTheme && { \n backdropFilter: 'blur(12px)' as const, \n WebkitBackdropFilter: 'blur(12px)' as const,\n }),\n ...(tokens.colors.border.cardStyle ?? { border: `1px solid ${tokens.colors.border.muted}` }),\n borderRadius: tokens.borderRadius.lg,\n padding: tokens.spacing.md,\n display: 'flex',\n flexDirection: 'column' as const,\n }), [tokens, isTransparentTheme]);\n\n // Count messages by status for compact view summary (must be before any conditional return for rules-of-hooks)\n const statusCounts = useMemo(() => {\n const counts = { normal: 0, caution: 0, critical: 0, other: 0 };\n messages.forEach(m => {\n if (m.status === 'normal') counts.normal++;\n else if (m.status === 'caution') counts.caution++;\n else if (m.status === 'critical' || m.status === 'serious') counts.critical++;\n else counts.other++;\n });\n return counts;\n }, [messages]);\n \n // Loading skeleton\n if (loading) {\n return (\n <article\n className={classNames('zendir-message-stream', className)}\n style={containerStyle}\n aria-busy=\"true\"\n aria-label=\"Loading messages\"\n >\n {title && (\n <div style={{ marginBottom: 16 }}>\n <div style={{\n height: 18,\n width: 120,\n backgroundColor: tokens.colors.background.elevated,\n borderRadius: 4,\n marginBottom: 8,\n }} />\n {subtitle && (\n <div style={{\n height: 14,\n width: 200,\n backgroundColor: tokens.colors.background.elevated,\n borderRadius: 4,\n }} />\n )}\n </div>\n )}\n <div style={{ display: 'flex', flexDirection: 'column', gap: 8 }}>\n {[1, 2, 3].map((i) => (\n <div\n key={i}\n style={{\n height: 44,\n backgroundColor: tokens.colors.background.elevated,\n borderRadius: tokens.borderRadius.md,\n border: `2px solid ${tokens.colors.border.muted}`,\n }}\n />\n ))}\n </div>\n </article>\n );\n }\n\n // Collapsed view - shows summary of messages\n if (collapsible && !expanded) {\n return (\n <article\n className={classNames('zendir-message-stream', 'collapsed', className)}\n {...handlers}\n style={{\n ...containerStyle,\n padding: `${tokens.spacing.sm} ${tokens.spacing.md}`,\n cursor: 'pointer',\n transition: `all ${transitionDuration} ease-out`,\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 ${tokens.colors.accent.primary}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 aria-label={`${title || 'Messages'} (collapsed)`}\n >\n <div style={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between', gap: tokens.spacing.md }}>\n <div style={{ display: 'flex', alignItems: 'center', gap: tokens.spacing.sm }}>\n <Icon name=\"message\" size={14} color={tokens.colors.accent.primary} />\n <span style={{ fontWeight: tokens.typography.fontWeight.medium }}>\n {title ? title.split(' ')[0] : 'Messages'}\n </span>\n <span style={{ color: tokens.colors.text.tertiary, fontSize: tokens.typography.fontSize.xs }}>\n ({messages.length})\n </span>\n </div>\n \n <div style={{ display: 'flex', alignItems: 'center', gap: tokens.spacing.sm }}>\n {statusCounts.critical > 0 && (\n <span style={{ \n color: tokens.colors.status.critical,\n fontSize: tokens.typography.fontSize.xs,\n fontWeight: tokens.typography.fontWeight.medium,\n }}>\n {statusCounts.critical} critical\n </span>\n )}\n {statusCounts.caution > 0 && (\n <span style={{ \n color: tokens.colors.status.caution,\n fontSize: tokens.typography.fontSize.xs,\n fontWeight: tokens.typography.fontWeight.medium,\n }}>\n {statusCounts.caution} warn\n </span>\n )}\n {isPinned && (\n <Icon name=\"lock\" size={12} color={tokens.colors.accent.primary} />\n )}\n </div>\n </div>\n </article>\n );\n }\n \n return (\n <div\n className={classNames('zendir-message-stream', collapsible ? 'expanded' : '', className)}\n {...(collapsible ? handlers : {})}\n role={collapsible ? handlers.role : 'log'}\n tabIndex={collapsible ? handlers.tabIndex : undefined}\n aria-expanded={collapsible ? handlers['aria-expanded'] : undefined}\n style={{\n ...containerStyle,\n cursor: collapsible ? 'pointer' : undefined,\n transition: collapsible ? `all ${transitionDuration} ease-out` : undefined,\n }}\n aria-label={title || 'Message stream'}\n aria-live=\"polite\"\n >\n {/* Header */}\n {(title || subtitle) && (\n <header style={{ marginBottom: 16 }}>\n {title && (\n <h3 style={{\n fontSize: tokens.typography.fontSize.lg,\n fontWeight: 500, // AstroUXDS medium for headers\n color: tokens.colors.text.primary,\n margin: 0,\n }}>\n {title}\n </h3>\n )}\n {subtitle && (\n <p style={{\n fontSize: tokens.typography.fontSize.sm,\n color: tokens.colors.text.tertiary,\n margin: '4px 0 0 0',\n }}>\n {subtitle}\n </p>\n )}\n </header>\n )}\n \n {/* Messages Container — tabIndex for keyboard scroll access (WCAG 2.1.1) */}\n <div\n role=\"list\"\n tabIndex={maxHeight ? 0 : undefined}\n aria-label={maxHeight ? `${title || 'Messages'} scrollable list` : undefined}\n style={{\n display: 'flex',\n flexDirection: 'column',\n gap: variant === 'compact' ? 4 : 8,\n ...(maxHeight && {\n maxHeight,\n overflowY: 'auto',\n paddingRight: 8,\n }),\n }}\n >\n {messages.length === 0 ? (\n <div\n style={{\n textAlign: 'center',\n padding: 32,\n color: tokens.colors.text.tertiary,\n fontSize: tokens.typography.fontSize.sm,\n }}\n >\n {emptyMessage}\n </div>\n ) : variant === 'tree' ? (\n messages.map((message, index) => (\n <TreeNode\n key={message.id}\n message={message}\n tokens={tokens}\n size={size}\n showTimestamp={showTimestamps}\n timeFormat={timeFormat}\n onClick={onMessageClick}\n depth={0}\n showConnectors={showConnectors}\n isLast={index === messages.length - 1}\n />\n ))\n ) : (\n messages.map((message) => (\n <MessageCard\n key={message.id}\n message={message}\n tokens={tokens}\n size={size}\n showTimestamp={showTimestamps}\n timeFormat={timeFormat}\n onClick={onMessageClick}\n variant={variant}\n />\n ))\n )}\n </div>\n </div>\n );\n});\n\nexport default MessageStream;\n"],"names":["MessageCard","TreeNode","MessageStream"],"mappings":"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"}
@@ -0,0 +1,81 @@
1
+ import { default as React } from 'react';
2
+
3
+ export type CalendarViewMode = 'month' | 'week' | 'day' | 'gantt' | 'list';
4
+ export type ActivityStatus = 'created' | 'scheduled' | 'started' | 'completed' | 'paused' | 'stopped' | 'disabled' | 'error' | 'failed' | 'crashed';
5
+ export type ActivityType = 'command' | 'script' | 'reserve' | 'metadata' | 'note' | 'contact' | 'eclipse' | 'pass';
6
+ export interface CalendarEvent {
7
+ /** Unique identifier */
8
+ id: string;
9
+ /** Event title */
10
+ title: string;
11
+ /** Start time */
12
+ start: Date;
13
+ /** End time (optional for metadata/point events) */
14
+ end?: Date;
15
+ /** Activity type */
16
+ type: ActivityType;
17
+ /** Execution status */
18
+ status?: ActivityStatus;
19
+ /** Timeline this event belongs to */
20
+ timeline?: string;
21
+ /** Description / notes */
22
+ description?: string;
23
+ /** Command string (for command type) */
24
+ command?: string;
25
+ /** Script path (for script type) */
26
+ script?: string;
27
+ /** Metadata key-value pairs */
28
+ metadata?: Record<string, string | number | boolean>;
29
+ /** Whether this event is recurring */
30
+ recurring?: boolean;
31
+ /** Recurrence pattern */
32
+ recurrenceRule?: string;
33
+ /** Color override */
34
+ color?: string;
35
+ /** Whether the event is editable */
36
+ editable?: boolean;
37
+ }
38
+ export interface CalendarTimeline {
39
+ /** Unique timeline ID */
40
+ id: string;
41
+ /** Display name */
42
+ name: string;
43
+ /** Color for this timeline */
44
+ color?: string;
45
+ /** Whether the timeline is active */
46
+ active?: boolean;
47
+ }
48
+ export interface MissionCalendarProps {
49
+ /** Calendar events */
50
+ events: CalendarEvent[];
51
+ /** Available timelines */
52
+ timelines?: CalendarTimeline[];
53
+ /** Initial view mode (default: 'month') */
54
+ defaultView?: CalendarViewMode;
55
+ /** Initial date to display */
56
+ initialDate?: Date;
57
+ /** Height (default: 600) */
58
+ height?: number | string;
59
+ /** Title */
60
+ title?: string;
61
+ /** Show mini calendar sidebar (default: true) */
62
+ showSidebar?: boolean;
63
+ /** Show timeline selector (default: true) */
64
+ showTimelines?: boolean;
65
+ /** Show event type filter (default: true) */
66
+ showFilters?: boolean;
67
+ /** Show create button (default: true) */
68
+ showCreate?: boolean;
69
+ /** Week starts on Monday (default: true for ops) */
70
+ weekStartsMonday?: boolean;
71
+ /** Called when an event is clicked */
72
+ onEventClick?: (event: CalendarEvent) => void;
73
+ /** Called when creating a new event */
74
+ onEventCreate?: (event: Partial<CalendarEvent>) => void;
75
+ /** Called when navigating to a day (e.g., to open Timeline Gantt view) */
76
+ onDayDrillDown?: (date: Date, events: CalendarEvent[]) => void;
77
+ /** CSS class */
78
+ className?: string;
79
+ }
80
+ export declare const MissionCalendar: React.NamedExoticComponent<MissionCalendarProps>;
81
+ export default MissionCalendar;