@zendir/ui 0.5.0 → 0.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (391) hide show
  1. package/CHANGELOG.md +419 -386
  2. package/README.md +640 -631
  3. package/dist/_virtual/_rolldown/runtime.js +13 -0
  4. package/dist/index.js +17 -221
  5. package/dist/react/3d/CesiumCaptureSource.d.ts +0 -1
  6. package/dist/react/3d/CesiumCaptureSource.js +364 -283
  7. package/dist/react/3d/CesiumCaptureSource.js.map +1 -1
  8. package/dist/react/3d/ZenSpace3D.d.ts +2 -3
  9. package/dist/react/3d/ZenSpace3D.js +1681 -1237
  10. package/dist/react/3d/ZenSpace3D.js.map +1 -1
  11. package/dist/react/3d/ZenSpace3DCesium.d.ts +0 -1
  12. package/dist/react/3d/ZenSpace3DCesium.js +513 -560
  13. package/dist/react/3d/ZenSpace3DCesium.js.map +1 -1
  14. package/dist/react/3d/ZenSpace3DShaders.js +61 -66
  15. package/dist/react/3d/ZenSpace3DShaders.js.map +1 -1
  16. package/dist/react/3d/ZenSpace3DTypes.d.ts +19 -20
  17. package/dist/react/3d/ZenSpace3DUtils.d.ts +0 -1
  18. package/dist/react/3d/ZenSpace3DUtils.js +37 -24
  19. package/dist/react/3d/ZenSpace3DUtils.js.map +1 -1
  20. package/dist/react/3d/capturePngAnalysis.js +42 -36
  21. package/dist/react/3d/capturePngAnalysis.js.map +1 -1
  22. package/dist/react/3d/index.d.ts +3 -3
  23. package/dist/react/3d/index.js +5 -53
  24. package/dist/react/3d/threeLoader.d.ts +1 -1
  25. package/dist/react/3d/threeLoader.js +23 -18
  26. package/dist/react/3d/threeLoader.js.map +1 -1
  27. package/dist/react/astro/ClassificationBanner.d.ts +2 -3
  28. package/dist/react/astro/ClassificationBanner.js +95 -79
  29. package/dist/react/astro/ClassificationBanner.js.map +1 -1
  30. package/dist/react/astro/GlobalStatusBar.d.ts +0 -1
  31. package/dist/react/astro/GlobalStatusBar.js +157 -163
  32. package/dist/react/astro/GlobalStatusBar.js.map +1 -1
  33. package/dist/react/astro/MissionClock.d.ts +7 -8
  34. package/dist/react/astro/MissionClock.js +377 -400
  35. package/dist/react/astro/MissionClock.js.map +1 -1
  36. package/dist/react/astro/MonitoringIcon.d.ts +1 -2
  37. package/dist/react/astro/MonitoringIcon.js +422 -358
  38. package/dist/react/astro/MonitoringIcon.js.map +1 -1
  39. package/dist/react/astro/Notification.d.ts +1 -2
  40. package/dist/react/astro/Notification.js +229 -126
  41. package/dist/react/astro/Notification.js.map +1 -1
  42. package/dist/react/astro/Progress.d.ts +0 -1
  43. package/dist/react/astro/Progress.js +199 -141
  44. package/dist/react/astro/Progress.js.map +1 -1
  45. package/dist/react/astro/SimulationControls.d.ts +3 -4
  46. package/dist/react/astro/SimulationControls.js +596 -650
  47. package/dist/react/astro/SimulationControls.js.map +1 -1
  48. package/dist/react/astro/StatusIndicator.d.ts +0 -1
  49. package/dist/react/astro/StatusIndicator.js +236 -170
  50. package/dist/react/astro/StatusIndicator.js.map +1 -1
  51. package/dist/react/astro/UnifiedTimeline.d.ts +9 -10
  52. package/dist/react/astro/UnifiedTimeline.js +2345 -2392
  53. package/dist/react/astro/UnifiedTimeline.js.map +1 -1
  54. package/dist/react/astro/index.d.ts +5 -5
  55. package/dist/react/astro/index.js +1 -25
  56. package/dist/react/cards/AccessCard.d.ts +0 -1
  57. package/dist/react/cards/AccessCard.js +471 -405
  58. package/dist/react/cards/AccessCard.js.map +1 -1
  59. package/dist/react/cards/OrbitCard.d.ts +0 -1
  60. package/dist/react/cards/OrbitCard.js +487 -364
  61. package/dist/react/cards/OrbitCard.js.map +1 -1
  62. package/dist/react/cards/SpacecraftCard.d.ts +0 -1
  63. package/dist/react/cards/SpacecraftCard.js +813 -925
  64. package/dist/react/cards/SpacecraftCard.js.map +1 -1
  65. package/dist/react/cards/TelemetryCard.d.ts +0 -1
  66. package/dist/react/cards/TelemetryCard.js +1055 -732
  67. package/dist/react/cards/TelemetryCard.js.map +1 -1
  68. package/dist/react/cards/TelemetryStreamCard.d.ts +0 -1
  69. package/dist/react/cards/TelemetryStreamCard.js +323 -297
  70. package/dist/react/cards/TelemetryStreamCard.js.map +1 -1
  71. package/dist/react/cards/index.d.ts +1 -1
  72. package/dist/react/cards/index.js +1 -8
  73. package/dist/react/charts/GroundTrackMap.d.ts +6 -7
  74. package/dist/react/charts/GroundTrackMap.js +1377 -1256
  75. package/dist/react/charts/GroundTrackMap.js.map +1 -1
  76. package/dist/react/charts/GroundTrackMapLeaflet.d.ts +1 -2
  77. package/dist/react/charts/GroundTrackMapLeaflet.js +1065 -987
  78. package/dist/react/charts/GroundTrackMapLeaflet.js.map +1 -1
  79. package/dist/react/charts/groundTrackMapLeafletTiles.js +34 -25
  80. package/dist/react/charts/groundTrackMapLeafletTiles.js.map +1 -1
  81. package/dist/react/charts/groundTrackMapLeafletUtils.js +70 -61
  82. package/dist/react/charts/groundTrackMapLeafletUtils.js.map +1 -1
  83. package/dist/react/charts/index.d.ts +1 -1
  84. package/dist/react/charts/index.js +7 -100
  85. package/dist/react/charts/unified/AstroChart.d.ts +1 -2
  86. package/dist/react/charts/unified/AstroChart.js +1331 -1411
  87. package/dist/react/charts/unified/AstroChart.js.map +1 -1
  88. package/dist/react/charts/unified/PowerOverviewChart.d.ts +3 -3
  89. package/dist/react/charts/unified/PowerOverviewChart.js +495 -478
  90. package/dist/react/charts/unified/PowerOverviewChart.js.map +1 -1
  91. package/dist/react/charts/unified/domain.d.ts +12 -13
  92. package/dist/react/charts/unified/domain.js +3999 -3145
  93. package/dist/react/charts/unified/domain.js.map +1 -1
  94. package/dist/react/charts/unified/generators.d.ts +3 -4
  95. package/dist/react/charts/unified/generators.js +561 -498
  96. package/dist/react/charts/unified/generators.js.map +1 -1
  97. package/dist/react/charts/unified/index.d.ts +1 -1
  98. package/dist/react/charts/unified/presets.d.ts +14 -15
  99. package/dist/react/charts/unified/presets.js +857 -994
  100. package/dist/react/charts/unified/presets.js.map +1 -1
  101. package/dist/react/charts/unified/sync.d.ts +2 -3
  102. package/dist/react/charts/unified/sync.js +229 -195
  103. package/dist/react/charts/unified/sync.js.map +1 -1
  104. package/dist/react/charts/unified/theme.d.ts +11 -12
  105. package/dist/react/charts/unified/theme.js +606 -642
  106. package/dist/react/charts/unified/theme.js.map +1 -1
  107. package/dist/react/charts/unified/types.d.ts +32 -33
  108. package/dist/react/charts/unified/useChartStream.d.ts +1 -2
  109. package/dist/react/charts/unified/useChartStream.js +203 -216
  110. package/dist/react/charts/unified/useChartStream.js.map +1 -1
  111. package/dist/react/chatgpt/AppCard.d.ts +1 -2
  112. package/dist/react/chatgpt/index.d.ts +7 -7
  113. package/dist/react/chatgpt/index.js +160 -139
  114. package/dist/react/chatgpt/index.js.map +1 -1
  115. package/dist/react/context/CategoryContext.d.ts +0 -1
  116. package/dist/react/context/CategoryContext.js +78 -29
  117. package/dist/react/context/CategoryContext.js.map +1 -1
  118. package/dist/react/context/DisplaySettingsContext.d.ts +1 -2
  119. package/dist/react/context/DisplaySettingsContext.js +205 -156
  120. package/dist/react/context/DisplaySettingsContext.js.map +1 -1
  121. package/dist/react/context/SpatialSelectionContext.d.ts +0 -1
  122. package/dist/react/context/SpatialSelectionContext.js +36 -7
  123. package/dist/react/context/SpatialSelectionContext.js.map +1 -1
  124. package/dist/react/core/data/DataTable.d.ts +3 -4
  125. package/dist/react/core/data/DataTable.js +473 -440
  126. package/dist/react/core/data/DataTable.js.map +1 -1
  127. package/dist/react/core/data/DataValue.d.ts +4 -5
  128. package/dist/react/core/data/DataValue.js +605 -571
  129. package/dist/react/core/data/DataValue.js.map +1 -1
  130. package/dist/react/core/data/propertyConfig.d.ts +1 -2
  131. package/dist/react/core/data/propertyConfig.js +446 -382
  132. package/dist/react/core/data/propertyConfig.js.map +1 -1
  133. package/dist/react/core/display/AstroIcon.d.ts +4 -5
  134. package/dist/react/core/display/AstroIcon.js +339 -429
  135. package/dist/react/core/display/AstroIcon.js.map +1 -1
  136. package/dist/react/core/display/Badge.d.ts +2 -3
  137. package/dist/react/core/display/Badge.js +131 -131
  138. package/dist/react/core/display/Badge.js.map +1 -1
  139. package/dist/react/core/display/CardHeader.d.ts +0 -1
  140. package/dist/react/core/display/CardHeader.js +398 -311
  141. package/dist/react/core/display/CardHeader.js.map +1 -1
  142. package/dist/react/core/display/Container.d.ts +2 -3
  143. package/dist/react/core/display/Container.js +640 -668
  144. package/dist/react/core/display/Container.js.map +1 -1
  145. package/dist/react/core/display/CopyButton.d.ts +1 -2
  146. package/dist/react/core/display/CopyButton.js +158 -101
  147. package/dist/react/core/display/CopyButton.js.map +1 -1
  148. package/dist/react/core/display/GlassCard.d.ts +3 -4
  149. package/dist/react/core/display/GlassCard.js +416 -369
  150. package/dist/react/core/display/GlassCard.js.map +1 -1
  151. package/dist/react/core/display/HeaderIconWithStatus.d.ts +0 -1
  152. package/dist/react/core/display/HeaderIconWithStatus.js +152 -152
  153. package/dist/react/core/display/HeaderIconWithStatus.js.map +1 -1
  154. package/dist/react/core/display/Icon.d.ts +2 -3
  155. package/dist/react/core/display/Icon.js +172 -143
  156. package/dist/react/core/display/Icon.js.map +1 -1
  157. package/dist/react/core/display/Typography.d.ts +24 -25
  158. package/dist/react/core/display/Typography.js +360 -178
  159. package/dist/react/core/display/Typography.js.map +1 -1
  160. package/dist/react/core/feedback/ConfirmDialog.d.ts +1 -2
  161. package/dist/react/core/feedback/ConfirmDialog.js +343 -304
  162. package/dist/react/core/feedback/ConfirmDialog.js.map +1 -1
  163. package/dist/react/core/feedback/Dialog.d.ts +2 -3
  164. package/dist/react/core/feedback/Dialog.js +189 -197
  165. package/dist/react/core/feedback/Dialog.js.map +1 -1
  166. package/dist/react/core/feedback/Toast.d.ts +2 -3
  167. package/dist/react/core/feedback/Toast.js +346 -207
  168. package/dist/react/core/feedback/Toast.js.map +1 -1
  169. package/dist/react/core/index.d.ts +26 -26
  170. package/dist/react/core/index.js +7 -119
  171. package/dist/react/core/inputs/Button.d.ts +2 -3
  172. package/dist/react/core/inputs/Button.js +281 -304
  173. package/dist/react/core/inputs/Button.js.map +1 -1
  174. package/dist/react/core/inputs/Checkbox.d.ts +2 -3
  175. package/dist/react/core/inputs/Checkbox.js +139 -127
  176. package/dist/react/core/inputs/Checkbox.js.map +1 -1
  177. package/dist/react/core/inputs/Input.d.ts +3 -4
  178. package/dist/react/core/inputs/Input.js +277 -285
  179. package/dist/react/core/inputs/Input.js.map +1 -1
  180. package/dist/react/core/inputs/LimitsBar.d.ts +1 -2
  181. package/dist/react/core/inputs/LimitsBar.js +271 -196
  182. package/dist/react/core/inputs/LimitsBar.js.map +1 -1
  183. package/dist/react/core/inputs/NumberInput.d.ts +2 -3
  184. package/dist/react/core/inputs/NumberInput.js +531 -503
  185. package/dist/react/core/inputs/NumberInput.js.map +1 -1
  186. package/dist/react/core/inputs/PinInput.d.ts +2 -3
  187. package/dist/react/core/inputs/PinInput.js +224 -207
  188. package/dist/react/core/inputs/PinInput.js.map +1 -1
  189. package/dist/react/core/inputs/Select.d.ts +1 -2
  190. package/dist/react/core/inputs/Select.js +298 -299
  191. package/dist/react/core/inputs/Select.js.map +1 -1
  192. package/dist/react/core/inputs/Toggle.d.ts +2 -3
  193. package/dist/react/core/inputs/Toggle.js +142 -148
  194. package/dist/react/core/inputs/Toggle.js.map +1 -1
  195. package/dist/react/core/layout/Box.d.ts +3 -4
  196. package/dist/react/core/layout/Box.js +118 -122
  197. package/dist/react/core/layout/Box.js.map +1 -1
  198. package/dist/react/core/layout/Center.d.ts +0 -1
  199. package/dist/react/core/layout/Center.js +45 -32
  200. package/dist/react/core/layout/Center.js.map +1 -1
  201. package/dist/react/core/layout/Divider.d.ts +1 -2
  202. package/dist/react/core/layout/Divider.js +112 -106
  203. package/dist/react/core/layout/Divider.js.map +1 -1
  204. package/dist/react/core/layout/Flex.d.ts +4 -5
  205. package/dist/react/core/layout/Flex.js +120 -124
  206. package/dist/react/core/layout/Flex.js.map +1 -1
  207. package/dist/react/core/layout/Grid.d.ts +5 -6
  208. package/dist/react/core/layout/Grid.js +131 -138
  209. package/dist/react/core/layout/Grid.js.map +1 -1
  210. package/dist/react/core/layout/Spacer.d.ts +0 -1
  211. package/dist/react/core/layout/Spacer.js +36 -29
  212. package/dist/react/core/layout/Spacer.js.map +1 -1
  213. package/dist/react/core/layout/Stack.d.ts +4 -5
  214. package/dist/react/core/layout/Stack.js +127 -70
  215. package/dist/react/core/layout/Stack.js.map +1 -1
  216. package/dist/react/core/layout/responsive.d.ts +1 -2
  217. package/dist/react/core/layout/responsive.js +25 -19
  218. package/dist/react/core/layout/responsive.js.map +1 -1
  219. package/dist/react/core/layout/useBreakpoint.d.ts +1 -1
  220. package/dist/react/core/layout/useBreakpoint.js +119 -66
  221. package/dist/react/core/layout/useBreakpoint.js.map +1 -1
  222. package/dist/react/core/navigation/AppBar.d.ts +1 -2
  223. package/dist/react/core/navigation/AppBar.js +827 -805
  224. package/dist/react/core/navigation/AppBar.js.map +1 -1
  225. package/dist/react/core/navigation/Pagination.d.ts +2 -3
  226. package/dist/react/core/navigation/Pagination.js +207 -187
  227. package/dist/react/core/navigation/Pagination.js.map +1 -1
  228. package/dist/react/core/navigation/SideNav.d.ts +5 -6
  229. package/dist/react/core/navigation/SideNav.js +855 -629
  230. package/dist/react/core/navigation/SideNav.js.map +1 -1
  231. package/dist/react/core/navigation/Tabs.d.ts +0 -1
  232. package/dist/react/core/navigation/Tabs.js +113 -119
  233. package/dist/react/core/navigation/Tabs.js.map +1 -1
  234. package/dist/react/core/overlays/Popover.d.ts +2 -3
  235. package/dist/react/core/overlays/Popover.js +303 -282
  236. package/dist/react/core/overlays/Popover.js.map +1 -1
  237. package/dist/react/core/overlays/SidePanel.d.ts +1 -2
  238. package/dist/react/core/overlays/SidePanel.js +217 -212
  239. package/dist/react/core/overlays/SidePanel.js.map +1 -1
  240. package/dist/react/core/overlays/Tooltip.d.ts +1 -2
  241. package/dist/react/core/overlays/Tooltip.js +170 -176
  242. package/dist/react/core/overlays/Tooltip.js.map +1 -1
  243. package/dist/react/core/widgets/ActivityPlanner.d.ts +0 -1
  244. package/dist/react/core/widgets/ActivityPlanner.js +855 -517
  245. package/dist/react/core/widgets/ActivityPlanner.js.map +1 -1
  246. package/dist/react/core/widgets/Capture.d.ts +2 -3
  247. package/dist/react/core/widgets/Capture.js +965 -779
  248. package/dist/react/core/widgets/Capture.js.map +1 -1
  249. package/dist/react/core/widgets/ChatPanel.d.ts +16 -17
  250. package/dist/react/core/widgets/ChatPanel.js +1734 -1034
  251. package/dist/react/core/widgets/ChatPanel.js.map +1 -1
  252. package/dist/react/core/widgets/ColorPickerPanel.d.ts +0 -1
  253. package/dist/react/core/widgets/ColorPickerPanel.js +298 -287
  254. package/dist/react/core/widgets/ColorPickerPanel.js.map +1 -1
  255. package/dist/react/core/widgets/CommandBuilder.d.ts +2 -3
  256. package/dist/react/core/widgets/CommandBuilder.js +624 -516
  257. package/dist/react/core/widgets/CommandBuilder.js.map +1 -1
  258. package/dist/react/core/widgets/ConnectionForm.d.ts +2 -3
  259. package/dist/react/core/widgets/ConnectionForm.js +528 -492
  260. package/dist/react/core/widgets/ConnectionForm.js.map +1 -1
  261. package/dist/react/core/widgets/FileExplorer.d.ts +3 -4
  262. package/dist/react/core/widgets/FileExplorer.js +617 -505
  263. package/dist/react/core/widgets/FileExplorer.js.map +1 -1
  264. package/dist/react/core/widgets/HexViewer.d.ts +2 -3
  265. package/dist/react/core/widgets/HexViewer.js +1353 -1091
  266. package/dist/react/core/widgets/HexViewer.js.map +1 -1
  267. package/dist/react/core/widgets/ImageFrame.d.ts +1 -2
  268. package/dist/react/core/widgets/ImageFrame.js +230 -193
  269. package/dist/react/core/widgets/ImageFrame.js.map +1 -1
  270. package/dist/react/core/widgets/ImageGallery.d.ts +2 -1
  271. package/dist/react/core/widgets/ImageGallery.js +380 -314
  272. package/dist/react/core/widgets/ImageGallery.js.map +1 -1
  273. package/dist/react/core/widgets/ImagePanel.d.ts +0 -1
  274. package/dist/react/core/widgets/ImagePanel.js +110 -101
  275. package/dist/react/core/widgets/ImagePanel.js.map +1 -1
  276. package/dist/react/core/widgets/LogViewer.d.ts +2 -3
  277. package/dist/react/core/widgets/LogViewer.js +711 -607
  278. package/dist/react/core/widgets/LogViewer.js.map +1 -1
  279. package/dist/react/core/widgets/MessageStream.d.ts +3 -4
  280. package/dist/react/core/widgets/MessageStream.js +514 -444
  281. package/dist/react/core/widgets/MessageStream.js.map +1 -1
  282. package/dist/react/core/widgets/MissionCalendar.d.ts +3 -4
  283. package/dist/react/core/widgets/MissionCalendar.js +1488 -1020
  284. package/dist/react/core/widgets/MissionCalendar.js.map +1 -1
  285. package/dist/react/core/widgets/PacketViewer.d.ts +2 -3
  286. package/dist/react/core/widgets/PacketViewer.js +550 -421
  287. package/dist/react/core/widgets/PacketViewer.js.map +1 -1
  288. package/dist/react/core/widgets/capture-placeholder.png.js +6 -5
  289. package/dist/react/core/widgets/capture-placeholder.png.js.map +1 -1
  290. package/dist/react/hooks/index.d.ts +5 -5
  291. package/dist/react/hooks/useAccessWindows.d.ts +0 -1
  292. package/dist/react/hooks/useCompactMode.d.ts +1 -1
  293. package/dist/react/hooks/useCompactMode.js +104 -58
  294. package/dist/react/hooks/useCompactMode.js.map +1 -1
  295. package/dist/react/hooks/useGroundTrackHistory.d.ts +0 -1
  296. package/dist/react/hooks/useSimulationScene.d.ts +1 -2
  297. package/dist/react/hooks/useSimulationScene.js +481 -374
  298. package/dist/react/hooks/useSimulationScene.js.map +1 -1
  299. package/dist/react/index.d.ts +3 -3
  300. package/dist/react/panels/LayerControlPanel.d.ts +1 -2
  301. package/dist/react/panels/LayerControlPanel.js +223 -180
  302. package/dist/react/panels/LayerControlPanel.js.map +1 -1
  303. package/dist/react/panels/ObjectInventoryPanel.d.ts +2 -3
  304. package/dist/react/panels/ObjectInventoryPanel.js +315 -250
  305. package/dist/react/panels/ObjectInventoryPanel.js.map +1 -1
  306. package/dist/react/panels/index.d.ts +1 -1
  307. package/dist/react/panels/index.js +1 -6
  308. package/dist/react/shared/ErrorBoundary.d.ts +1 -2
  309. package/dist/react/shared/ErrorBoundary.js +170 -139
  310. package/dist/react/shared/ErrorBoundary.js.map +1 -1
  311. package/dist/react/shared/Skeleton.d.ts +1 -2
  312. package/dist/react/shared/Skeleton.js +300 -301
  313. package/dist/react/shared/Skeleton.js.map +1 -1
  314. package/dist/react/theme/ThemeProvider.d.ts +2 -321
  315. package/dist/react/theme/ThemeProvider.js +313 -939
  316. package/dist/react/theme/ThemeProvider.js.map +1 -1
  317. package/dist/react/theme/cardAccent.d.ts +1 -2
  318. package/dist/react/theme/cardAccent.js +196 -126
  319. package/dist/react/theme/cardAccent.js.map +1 -1
  320. package/dist/react/theme/config.d.ts +0 -1
  321. package/dist/react/theme/config.js +47 -25
  322. package/dist/react/theme/config.js.map +1 -1
  323. package/dist/react/theme/index.d.ts +2 -2
  324. package/dist/react/theme/index.js +1 -16
  325. package/dist/react/theme/types.d.ts +332 -0
  326. package/dist/react/theme/types.js +39 -0
  327. package/dist/react/theme/types.js.map +1 -0
  328. package/dist/react/types.d.ts +8 -8
  329. package/dist/react/types.js +147 -47
  330. package/dist/react/types.js.map +1 -1
  331. package/dist/react/utils/categoryPalette.d.ts +0 -1
  332. package/dist/react/utils/categoryPalette.js +91 -102
  333. package/dist/react/utils/categoryPalette.js.map +1 -1
  334. package/dist/react/utils/index.d.ts +5 -5
  335. package/dist/react/utils/index.js +457 -371
  336. package/dist/react/utils/index.js.map +1 -1
  337. package/dist/react/visualizations/EclipseTimerCard.d.ts +0 -1
  338. package/dist/react/visualizations/LinkBudgetCard.d.ts +0 -1
  339. package/dist/react/visualizations/NavBallCard.d.ts +0 -1
  340. package/dist/react/visualizations/PropulsionCard.d.ts +1 -2
  341. package/dist/react/visualizations/SensorFootprintCard.d.ts +1 -2
  342. package/dist/react/visualizations/ThermalHeatmapCard.d.ts +0 -1
  343. package/dist/react/visualizations/index.d.ts +3 -3
  344. package/dist/react.d.ts +2 -1
  345. package/dist/react.js +17 -221
  346. package/dist/shaders/atmosphere.frag.js +6 -5
  347. package/dist/shaders/atmosphere.frag.js.map +1 -1
  348. package/dist/shaders/atmosphere.vert.js +6 -5
  349. package/dist/shaders/atmosphere.vert.js.map +1 -1
  350. package/dist/shaders/stars.frag.js +6 -5
  351. package/dist/shaders/stars.frag.js.map +1 -1
  352. package/dist/shaders/stars.vert.js +6 -5
  353. package/dist/shaders/stars.vert.js.map +1 -1
  354. package/dist/style.css +26 -3
  355. package/dist/tokens/core.d.ts +159 -0
  356. package/dist/tokens/core.js +144 -0
  357. package/dist/tokens/core.js.map +1 -0
  358. package/dist/tokens/css-vars.d.ts +213 -2
  359. package/dist/tokens/css-vars.js +590 -227
  360. package/dist/tokens/css-vars.js.map +1 -1
  361. package/dist/tokens/index.d.ts +31 -228
  362. package/dist/tokens/index.js +281 -366
  363. package/dist/tokens/index.js.map +1 -1
  364. package/dist/tokens/palettes/astro.d.ts +129 -0
  365. package/dist/tokens/palettes/astro.js +112 -0
  366. package/dist/tokens/palettes/astro.js.map +1 -0
  367. package/dist/tokens/palettes/index.d.ts +288 -0
  368. package/dist/tokens/palettes/index.js +35 -0
  369. package/dist/tokens/palettes/index.js.map +1 -0
  370. package/dist/tokens/palettes/tailwind.d.ts +324 -0
  371. package/dist/tokens/palettes/tailwind.js +201 -0
  372. package/dist/tokens/palettes/tailwind.js.map +1 -0
  373. package/dist/tokens/palettes/zendir.d.ts +126 -0
  374. package/dist/tokens/palettes/zendir.js +92 -0
  375. package/dist/tokens/palettes/zendir.js.map +1 -0
  376. package/dist/tokens/themes.d.ts +30 -0
  377. package/dist/tokens/themes.js +704 -0
  378. package/dist/tokens/themes.js.map +1 -0
  379. package/dist/tokens/tokens.css +533 -155
  380. package/dist/types/index.d.ts +2 -2
  381. package/package.json +310 -313
  382. package/dist/index.js.map +0 -1
  383. package/dist/react/3d/index.js.map +0 -1
  384. package/dist/react/astro/index.js.map +0 -1
  385. package/dist/react/cards/index.js.map +0 -1
  386. package/dist/react/charts/index.js.map +0 -1
  387. package/dist/react/core/index.js.map +0 -1
  388. package/dist/react/panels/index.js.map +0 -1
  389. package/dist/react/theme/astro-tokens.d.ts +0 -153
  390. package/dist/react/theme/index.js.map +0 -1
  391. package/dist/react.js.map +0 -1
@@ -1,8 +1,7 @@
1
1
  import { OrbitalElements, GroundStation } from '../types';
2
-
3
- export type ViewMode = 'solar-system' | 'earth-orbit' | 'moon' | 'mars' | 'custom';
4
- export type CameraMode = 'free' | 'follow' | 'orbit' | 'cinematic';
5
- export type ObjectCategory = 'planet' | 'moon' | 'satellite' | 'debris' | 'station' | 'asteroid' | 'comet' | 'groundStation' | 'constellation';
2
+ export type ViewMode = "solar-system" | "earth-orbit" | "moon" | "mars" | "custom";
3
+ export type CameraMode = "free" | "follow" | "orbit" | "cinematic";
4
+ export type ObjectCategory = "planet" | "moon" | "satellite" | "debris" | "station" | "asteroid" | "comet" | "groundStation" | "constellation";
6
5
  export interface SpaceObject {
7
6
  /** Unique identifier */
8
7
  id: string;
@@ -26,7 +25,7 @@ export interface SpaceObject {
26
25
  metadata?: Record<string, unknown>;
27
26
  }
28
27
  export interface Satellite extends SpaceObject {
29
- category: 'satellite';
28
+ category: "satellite";
30
29
  /** Two-Line Element set */
31
30
  tle?: TLEData;
32
31
  /** Orbital elements */
@@ -36,30 +35,30 @@ export interface Satellite extends SpaceObject {
36
35
  /** Launch date */
37
36
  launchDate?: string;
38
37
  /** Operational status */
39
- status?: 'operational' | 'inactive' | 'decaying' | 'unknown';
38
+ status?: "operational" | "inactive" | "decaying" | "unknown";
40
39
  /** Constellation membership */
41
40
  constellation?: string;
42
41
  }
43
42
  export interface Debris extends SpaceObject {
44
- category: 'debris';
43
+ category: "debris";
45
44
  /** Radar cross-section (m²) */
46
45
  rcs?: number;
47
46
  /** Source event (fragmentation, collision, etc.) */
48
47
  sourceEvent?: string;
49
48
  /** Estimated size category */
50
- sizeCategory?: 'small' | 'medium' | 'large';
49
+ sizeCategory?: "small" | "medium" | "large";
51
50
  }
52
51
  export interface SpaceStation extends SpaceObject {
53
- category: 'station';
52
+ category: "station";
54
53
  /** Station type */
55
- stationType?: 'iss' | 'tiangong' | 'commercial' | 'other';
54
+ stationType?: "iss" | "tiangong" | "commercial" | "other";
56
55
  /** Current crew count */
57
56
  crewCount?: number;
58
57
  /** Docked vehicles */
59
58
  dockedVehicles?: string[];
60
59
  }
61
60
  export interface Asteroid extends SpaceObject {
62
- category: 'asteroid';
61
+ category: "asteroid";
63
62
  /** Spectral type */
64
63
  spectralType?: string;
65
64
  /** Absolute magnitude */
@@ -300,9 +299,9 @@ export interface ManeuverNode {
300
299
  /** Delta-V vector (km/s) */
301
300
  deltaV: Vector3D;
302
301
  /** Maneuver type */
303
- type?: 'prograde' | 'retrograde' | 'normal' | 'antinormal' | 'radial' | 'antiradial';
302
+ type?: "prograde" | "retrograde" | "normal" | "antinormal" | "radial" | "antiradial";
304
303
  /** Planned/executed */
305
- status?: 'planned' | 'executed';
304
+ status?: "planned" | "executed";
306
305
  }
307
306
  export interface CloseApproachData {
308
307
  /** Time of closest approach */
@@ -324,7 +323,7 @@ export interface TimeState {
324
323
  /** Reference epoch */
325
324
  epoch?: Date;
326
325
  }
327
- export type ToolType = 'select' | 'measure' | 'orbit-designer' | 'coverage-analysis' | 'conjunction-warning';
326
+ export type ToolType = "select" | "measure" | "orbit-designer" | "coverage-analysis" | "conjunction-warning";
328
327
  export interface ToolState {
329
328
  activeTool: ToolType;
330
329
  measurementPoints?: Vector3D[];
@@ -485,8 +484,8 @@ export interface ZenSpace3DProps {
485
484
  id: string;
486
485
  fromId: string;
487
486
  toId: string;
488
- type: 'uplink' | 'downlink' | 'crosslink' | 'relay';
489
- status: 'active' | 'idle' | 'blocked';
487
+ type: "uplink" | "downlink" | "crosslink" | "relay";
488
+ status: "active" | "idle" | "blocked";
490
489
  color?: string;
491
490
  bandwidth?: number;
492
491
  latency?: number;
@@ -533,7 +532,7 @@ export interface ZenSpace3DProps {
533
532
  /** Canvas height */
534
533
  height?: number | string;
535
534
  /** Theme override */
536
- theme?: 'dark' | 'light' | 'purple-hue';
535
+ theme?: "dark" | "light" | "purple-hue";
537
536
  /** Event callbacks */
538
537
  callbacks?: ZenSpace3DCallbacks;
539
538
  /** Maximum objects to render (for performance) */
@@ -588,9 +587,9 @@ export interface ZenSpace3DHandle {
588
587
  /** Set camera state */
589
588
  setCameraState: (state: Partial<CameraState>) => void;
590
589
  /** Export screenshot */
591
- exportImage: (format?: 'png' | 'jpeg') => string;
590
+ exportImage: (format?: "png" | "jpeg") => string;
592
591
  /** Export 3D scene */
593
- exportScene: (format?: 'glb' | 'gltf') => Blob;
592
+ exportScene: (format?: "glb" | "gltf") => Blob;
594
593
  /** Get visible objects */
595
594
  getVisibleObjects: () => SpaceObject[];
596
595
  /** Find objects by query */
@@ -623,7 +622,7 @@ export interface SceneObject {
623
622
  id: string;
624
623
  mesh: unknown;
625
624
  data: SpaceObject;
626
- lod: 'high' | 'medium' | 'low' | 'point';
625
+ lod: "high" | "medium" | "low" | "point";
627
626
  visible: boolean;
628
627
  lastUpdate: number;
629
628
  }
@@ -1,5 +1,4 @@
1
1
  import { Vector3D } from './ZenSpace3DTypes';
2
-
3
2
  /** Earth's mean radius in km. */
4
3
  export declare const EARTH_RADIUS_KM = 6371;
5
4
  /** Degrees → radians. */
@@ -1,28 +1,41 @@
1
- const EARTH_RADIUS_KM = 6371;
2
- const DEG_TO_RAD = Math.PI / 180;
3
- const RAD_TO_DEG = 180 / Math.PI;
4
- const SCENE_EARTH_RADIUS = 3e3;
5
- const KM_TO_SCENE = SCENE_EARTH_RADIUS / EARTH_RADIUS_KM;
1
+ //#region src/react/3d/ZenSpace3DUtils.ts
2
+ /** Earth's mean radius in km. */
3
+ var EARTH_RADIUS_KM = 6371;
4
+ /** Degrees radians. */
5
+ var DEG_TO_RAD = Math.PI / 180;
6
+ /** Radians → degrees. */
7
+ var RAD_TO_DEG = 180 / Math.PI;
8
+ /** Earth radius in scene units (Three.js render space). */
9
+ var SCENE_EARTH_RADIUS = 3e3;
10
+ /** Conversion factor: 1 km → scene units. */
11
+ var KM_TO_SCENE = SCENE_EARTH_RADIUS / EARTH_RADIUS_KM;
12
+ /**
13
+ * Convert lat/lon/alt to a Cartesian point in scene space.
14
+ *
15
+ * Result is in *render units* (scaled by `KM_TO_SCENE`), suitable for
16
+ * direct use in the Three.js scene graph. For ECI→ECEF on the Cesium
17
+ * backend, use `Cesium.Transforms.computeTemeToPseudoFixedMatrix`.
18
+ *
19
+ * @param lat Latitude in degrees.
20
+ * @param lon Longitude in degrees.
21
+ * @param altKm Altitude above Earth surface in km (default 0).
22
+ * @param earthRadius Scene radius for Earth (default `SCENE_EARTH_RADIUS`).
23
+ */
6
24
  function latLonAltToCartesian(lat, lon, altKm = 0, earthRadius = SCENE_EARTH_RADIUS) {
7
- const r = earthRadius + altKm * KM_TO_SCENE;
8
- const phi = (90 - lat) * DEG_TO_RAD;
9
- const theta = (lon + 180) * DEG_TO_RAD;
10
- return {
11
- x: -r * Math.sin(phi) * Math.cos(theta),
12
- y: r * Math.cos(phi),
13
- z: r * Math.sin(phi) * Math.sin(theta)
14
- };
25
+ const r = earthRadius + altKm * KM_TO_SCENE;
26
+ const phi = (90 - lat) * DEG_TO_RAD;
27
+ const theta = (lon + 180) * DEG_TO_RAD;
28
+ return {
29
+ x: -r * Math.sin(phi) * Math.cos(theta),
30
+ y: r * Math.cos(phi),
31
+ z: r * Math.sin(phi) * Math.sin(theta)
32
+ };
15
33
  }
34
+ /** Cubic ease-out curve, used by camera fly-to animations. */
16
35
  function easeOutCubic(t) {
17
- return 1 - Math.pow(1 - t, 3);
36
+ return 1 - Math.pow(1 - t, 3);
18
37
  }
19
- export {
20
- DEG_TO_RAD,
21
- EARTH_RADIUS_KM,
22
- KM_TO_SCENE,
23
- RAD_TO_DEG,
24
- SCENE_EARTH_RADIUS,
25
- easeOutCubic,
26
- latLonAltToCartesian
27
- };
28
- //# sourceMappingURL=ZenSpace3DUtils.js.map
38
+ //#endregion
39
+ export { DEG_TO_RAD, EARTH_RADIUS_KM, KM_TO_SCENE, RAD_TO_DEG, SCENE_EARTH_RADIUS, easeOutCubic, latLonAltToCartesian };
40
+
41
+ //# sourceMappingURL=ZenSpace3DUtils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ZenSpace3DUtils.js","sources":["../../../src/react/3d/ZenSpace3DUtils.ts"],"sourcesContent":["/**\n * @zendir/ui - ZenSpace3D rendering math\n *\n * The minimal helper set needed by the live 3D backends:\n * • Earth + scene scaling constants used by the Three.js path\n * (`ZenSpace3D.tsx`) and the Cesium capture source\n * (`CesiumCaptureSource.ts`)\n * • `latLonAltToCartesian` — lat/lon/alt → render-space Cartesian\n * • `easeOutCubic` — camera-fly-to easing\n *\n * Higher-level orbital math (TLE/SGP4 propagation, GMST, visibility cones,\n * hex-grid coverage) was removed — those weren't consumed by either\n * backend. The Cesium backend uses Cesium's own `Transforms` for\n * ECI→ECEF, and the Three.js backend draws coverage from explicit\n * `SatelliteCoverage` props rather than computing it locally.\n */\n\nimport type { Vector3D } from './ZenSpace3DTypes';\n\n// ── Constants ─────────────────────────────────────────────────────────────────\n\n/** Earth's mean radius in km. */\nexport const EARTH_RADIUS_KM = 6371;\n\n/** Degrees → radians. */\nexport const DEG_TO_RAD = Math.PI / 180;\n\n/** Radians → degrees. */\nexport const RAD_TO_DEG = 180 / Math.PI;\n\n/** Earth radius in scene units (Three.js render space). */\nexport const SCENE_EARTH_RADIUS = 3000;\n\n/** Conversion factor: 1 km → scene units. */\nexport const KM_TO_SCENE = SCENE_EARTH_RADIUS / EARTH_RADIUS_KM;\n\n// ── Coordinate conversion ─────────────────────────────────────────────────────\n\n/**\n * Convert lat/lon/alt to a Cartesian point in scene space.\n *\n * Result is in *render units* (scaled by `KM_TO_SCENE`), suitable for\n * direct use in the Three.js scene graph. For ECI→ECEF on the Cesium\n * backend, use `Cesium.Transforms.computeTemeToPseudoFixedMatrix`.\n *\n * @param lat Latitude in degrees.\n * @param lon Longitude in degrees.\n * @param altKm Altitude above Earth surface in km (default 0).\n * @param earthRadius Scene radius for Earth (default `SCENE_EARTH_RADIUS`).\n */\nexport function latLonAltToCartesian(\n lat: number,\n lon: number,\n altKm: number = 0,\n earthRadius: number = SCENE_EARTH_RADIUS,\n): Vector3D {\n const r = earthRadius + altKm * KM_TO_SCENE;\n const phi = (90 - lat) * DEG_TO_RAD;\n const theta = (lon + 180) * DEG_TO_RAD;\n return {\n x: -r * Math.sin(phi) * Math.cos(theta),\n y: r * Math.cos(phi),\n z: r * Math.sin(phi) * Math.sin(theta),\n };\n}\n\n// ── Easing ────────────────────────────────────────────────────────────────────\n\n/** Cubic ease-out curve, used by camera fly-to animations. */\nexport function easeOutCubic(t: number): number {\n return 1 - Math.pow(1 - t, 3);\n}\n"],"names":[],"mappings":"AAsBO,MAAM,kBAAkB;AAGxB,MAAM,aAAa,KAAK,KAAK;AAG7B,MAAM,aAAa,MAAM,KAAK;AAG9B,MAAM,qBAAqB;AAG3B,MAAM,cAAc,qBAAqB;AAgBzC,SAAS,qBACd,KACA,KACA,QAAgB,GAChB,cAAsB,oBACZ;AACV,QAAM,IAAI,cAAc,QAAQ;AAChC,QAAM,OAAO,KAAK,OAAO;AACzB,QAAM,SAAS,MAAM,OAAO;AAC5B,SAAO;AAAA,IACL,GAAG,CAAC,IAAI,KAAK,IAAI,GAAG,IAAI,KAAK,IAAI,KAAK;AAAA,IACtC,GAAG,IAAI,KAAK,IAAI,GAAG;AAAA,IACnB,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,KAAK,IAAI,KAAK;AAAA,EAAA;AAEzC;AAKO,SAAS,aAAa,GAAmB;AAC9C,SAAO,IAAI,KAAK,IAAI,IAAI,GAAG,CAAC;AAC9B;"}
1
+ {"version":3,"file":"ZenSpace3DUtils.js","names":[],"sources":["../../../src/react/3d/ZenSpace3DUtils.ts"],"sourcesContent":["/**\r\n * @zendir/ui - ZenSpace3D rendering math\r\n *\r\n * The minimal helper set needed by the live 3D backends:\r\n * • Earth + scene scaling constants used by the Three.js path\r\n * (`ZenSpace3D.tsx`) and the Cesium capture source\r\n * (`CesiumCaptureSource.ts`)\r\n * • `latLonAltToCartesian` — lat/lon/alt → render-space Cartesian\r\n * • `easeOutCubic` — camera-fly-to easing\r\n *\r\n * Higher-level orbital math (TLE/SGP4 propagation, GMST, visibility cones,\r\n * hex-grid coverage) was removed — those weren't consumed by either\r\n * backend. The Cesium backend uses Cesium's own `Transforms` for\r\n * ECI→ECEF, and the Three.js backend draws coverage from explicit\r\n * `SatelliteCoverage` props rather than computing it locally.\r\n */\r\n\r\nimport type { Vector3D } from \"./ZenSpace3DTypes\";\r\n\r\n// ── Constants ─────────────────────────────────────────────────────────────────\r\n\r\n/** Earth's mean radius in km. */\r\nexport const EARTH_RADIUS_KM = 6371;\r\n\r\n/** Degrees → radians. */\r\nexport const DEG_TO_RAD = Math.PI / 180;\r\n\r\n/** Radians → degrees. */\r\nexport const RAD_TO_DEG = 180 / Math.PI;\r\n\r\n/** Earth radius in scene units (Three.js render space). */\r\nexport const SCENE_EARTH_RADIUS = 3000;\r\n\r\n/** Conversion factor: 1 km → scene units. */\r\nexport const KM_TO_SCENE = SCENE_EARTH_RADIUS / EARTH_RADIUS_KM;\r\n\r\n// ── Coordinate conversion ─────────────────────────────────────────────────────\r\n\r\n/**\r\n * Convert lat/lon/alt to a Cartesian point in scene space.\r\n *\r\n * Result is in *render units* (scaled by `KM_TO_SCENE`), suitable for\r\n * direct use in the Three.js scene graph. For ECI→ECEF on the Cesium\r\n * backend, use `Cesium.Transforms.computeTemeToPseudoFixedMatrix`.\r\n *\r\n * @param lat Latitude in degrees.\r\n * @param lon Longitude in degrees.\r\n * @param altKm Altitude above Earth surface in km (default 0).\r\n * @param earthRadius Scene radius for Earth (default `SCENE_EARTH_RADIUS`).\r\n */\r\nexport function latLonAltToCartesian(\r\n lat: number,\r\n lon: number,\r\n altKm: number = 0,\r\n earthRadius: number = SCENE_EARTH_RADIUS,\r\n): Vector3D {\r\n const r = earthRadius + altKm * KM_TO_SCENE;\r\n const phi = (90 - lat) * DEG_TO_RAD;\r\n const theta = (lon + 180) * DEG_TO_RAD;\r\n return {\r\n x: -r * Math.sin(phi) * Math.cos(theta),\r\n y: r * Math.cos(phi),\r\n z: r * Math.sin(phi) * Math.sin(theta),\r\n };\r\n}\r\n\r\n// ── Easing ────────────────────────────────────────────────────────────────────\r\n\r\n/** Cubic ease-out curve, used by camera fly-to animations. */\r\nexport function easeOutCubic(t: number): number {\r\n return 1 - Math.pow(1 - t, 3);\r\n}\r\n"],"mappings":";;AAsBA,IAAa,kBAAkB;;AAG/B,IAAa,aAAa,KAAK,KAAK;;AAGpC,IAAa,aAAa,MAAM,KAAK;;AAGrC,IAAa,qBAAqB;;AAGlC,IAAa,cAAc,qBAAqB;;;;;;;;;;;;;AAgBhD,SAAgB,qBACd,KACA,KACA,QAAgB,GAChB,cAAsB,oBACZ;CACV,MAAM,IAAI,cAAc,QAAQ;CAChC,MAAM,OAAO,KAAK,OAAO;CACzB,MAAM,SAAS,MAAM,OAAO;CAC5B,OAAO;EACL,GAAG,CAAC,IAAI,KAAK,IAAI,GAAG,IAAI,KAAK,IAAI,KAAK;EACtC,GAAG,IAAI,KAAK,IAAI,GAAG;EACnB,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,KAAK,IAAI,KAAK;CACvC;AACF;;AAKA,SAAgB,aAAa,GAAmB;CAC9C,OAAO,IAAI,KAAK,IAAI,IAAI,GAAG,CAAC;AAC9B"}
@@ -1,42 +1,48 @@
1
+ //#region src/react/3d/capturePngAnalysis.ts
2
+ /**
3
+ * Lightweight PNG analysis for capture QA (brightness / "all black" detection).
4
+ * Used by tests and optional runtime checks — keep dependency-free (no pngjs).
5
+ */
6
+ /** ITU-R BT.709 luma from RGB */
1
7
  function rgbToLuma(r, g, b) {
2
- return 0.2126 * r + 0.7152 * g + 0.0722 * b;
8
+ return .2126 * r + .7152 * g + .0722 * b;
3
9
  }
10
+ /**
11
+ * Sample mean luma of PNG bytes by drawing to a small canvas (browser / happy-dom).
12
+ * Returns 0 if decode fails. For very large images, samples a grid (max ~4096 samples).
13
+ */
4
14
  async function meanLuminanceFromPngBytes(png) {
5
- var _a;
6
- if (typeof createImageBitmap !== "function" || typeof document === "undefined") {
7
- return 0;
8
- }
9
- try {
10
- const blob = new Blob([png], { type: "image/png" });
11
- const bmp = await createImageBitmap(blob);
12
- const w = bmp.width;
13
- const h = bmp.height;
14
- const canvas = document.createElement("canvas");
15
- const step = Math.max(1, Math.floor(Math.sqrt(w * h / 4096)));
16
- canvas.width = Math.ceil(w / step);
17
- canvas.height = Math.ceil(h / step);
18
- const ctx = canvas.getContext("2d");
19
- if (!ctx) return 0;
20
- ctx.drawImage(bmp, 0, 0, w, h, 0, 0, canvas.width, canvas.height);
21
- const { data } = ctx.getImageData(0, 0, canvas.width, canvas.height);
22
- let sum = 0;
23
- const n = data.length / 4;
24
- for (let i = 0; i < data.length; i += 4) {
25
- sum += rgbToLuma(data[i], data[i + 1], data[i + 2]);
26
- }
27
- (_a = bmp.close) == null ? void 0 : _a.call(bmp);
28
- return n > 0 ? sum / n : 0;
29
- } catch {
30
- return 0;
31
- }
15
+ if (typeof createImageBitmap !== "function" || typeof document === "undefined") return 0;
16
+ try {
17
+ const blob = new Blob([png], { type: "image/png" });
18
+ const bmp = await createImageBitmap(blob);
19
+ const w = bmp.width;
20
+ const h = bmp.height;
21
+ const canvas = document.createElement("canvas");
22
+ const step = Math.max(1, Math.floor(Math.sqrt(w * h / 4096)));
23
+ canvas.width = Math.ceil(w / step);
24
+ canvas.height = Math.ceil(h / step);
25
+ const ctx = canvas.getContext("2d");
26
+ if (!ctx) return 0;
27
+ ctx.drawImage(bmp, 0, 0, w, h, 0, 0, canvas.width, canvas.height);
28
+ const { data } = ctx.getImageData(0, 0, canvas.width, canvas.height);
29
+ let sum = 0;
30
+ const n = data.length / 4;
31
+ for (let i = 0; i < data.length; i += 4) sum += rgbToLuma(data[i], data[i + 1], data[i + 2]);
32
+ bmp.close?.();
33
+ return n > 0 ? sum / n : 0;
34
+ } catch {
35
+ return 0;
36
+ }
32
37
  }
38
+ /**
39
+ * True if the image is uniformly dark (likely failed render / empty GL buffer).
40
+ * Threshold is mean luma on 0–255 scale (default 5 ≈ pure black).
41
+ */
33
42
  async function isPngMostlyBlack(png, threshold = 5) {
34
- const m = await meanLuminanceFromPngBytes(png);
35
- return m < threshold;
43
+ return await meanLuminanceFromPngBytes(png) < threshold;
36
44
  }
37
- export {
38
- isPngMostlyBlack,
39
- meanLuminanceFromPngBytes,
40
- rgbToLuma
41
- };
42
- //# sourceMappingURL=capturePngAnalysis.js.map
45
+ //#endregion
46
+ export { isPngMostlyBlack, meanLuminanceFromPngBytes, rgbToLuma };
47
+
48
+ //# sourceMappingURL=capturePngAnalysis.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"capturePngAnalysis.js","sources":["../../../src/react/3d/capturePngAnalysis.ts"],"sourcesContent":["/**\r\n * Lightweight PNG analysis for capture QA (brightness / \"all black\" detection).\r\n * Used by tests and optional runtime checks — keep dependency-free (no pngjs).\r\n */\r\n\r\n/** ITU-R BT.709 luma from RGB */\r\nexport function rgbToLuma(r: number, g: number, b: number): number {\r\n return 0.2126 * r + 0.7152 * g + 0.0722 * b;\r\n}\r\n\r\n/**\r\n * Sample mean luma of PNG bytes by drawing to a small canvas (browser / happy-dom).\r\n * Returns 0 if decode fails. For very large images, samples a grid (max ~4096 samples).\r\n */\r\nexport async function meanLuminanceFromPngBytes(png: Uint8Array): Promise<number> {\r\n if (typeof createImageBitmap !== 'function' || typeof document === 'undefined') {\r\n return 0;\r\n }\r\n try {\r\n const blob = new Blob([png as unknown as BlobPart], { type: 'image/png' });\r\n const bmp = await createImageBitmap(blob);\r\n const w = bmp.width;\r\n const h = bmp.height;\r\n const canvas = document.createElement('canvas');\r\n const step = Math.max(1, Math.floor(Math.sqrt((w * h) / 4096)));\r\n canvas.width = Math.ceil(w / step);\r\n canvas.height = Math.ceil(h / step);\r\n const ctx = canvas.getContext('2d');\r\n if (!ctx) return 0;\r\n ctx.drawImage(bmp, 0, 0, w, h, 0, 0, canvas.width, canvas.height);\r\n const { data } = ctx.getImageData(0, 0, canvas.width, canvas.height);\r\n let sum = 0;\r\n const n = data.length / 4;\r\n for (let i = 0; i < data.length; i += 4) {\r\n sum += rgbToLuma(data[i], data[i + 1], data[i + 2]);\r\n }\r\n bmp.close?.();\r\n return n > 0 ? sum / n : 0;\r\n } catch {\r\n return 0;\r\n }\r\n}\r\n\r\n/**\r\n * True if the image is uniformly dark (likely failed render / empty GL buffer).\r\n * Threshold is mean luma on 0–255 scale (default 5 ≈ pure black).\r\n */\r\nexport async function isPngMostlyBlack(png: Uint8Array, threshold = 5): Promise<boolean> {\r\n const m = await meanLuminanceFromPngBytes(png);\r\n return m < threshold;\r\n}\r\n"],"names":[],"mappings":"AAMO,SAAS,UAAU,GAAW,GAAW,GAAmB;AACjE,SAAO,SAAS,IAAI,SAAS,IAAI,SAAS;AAC5C;AAMA,eAAsB,0BAA0B,KAAkC;AAR3E;AASL,MAAI,OAAO,sBAAsB,cAAc,OAAO,aAAa,aAAa;AAC9E,WAAO;AAAA,EACT;AACA,MAAI;AACF,UAAM,OAAO,IAAI,KAAK,CAAC,GAA0B,GAAG,EAAE,MAAM,aAAa;AACzE,UAAM,MAAM,MAAM,kBAAkB,IAAI;AACxC,UAAM,IAAI,IAAI;AACd,UAAM,IAAI,IAAI;AACd,UAAM,SAAS,SAAS,cAAc,QAAQ;AAC9C,UAAM,OAAO,KAAK,IAAI,GAAG,KAAK,MAAM,KAAK,KAAM,IAAI,IAAK,IAAI,CAAC,CAAC;AAC9D,WAAO,QAAQ,KAAK,KAAK,IAAI,IAAI;AACjC,WAAO,SAAS,KAAK,KAAK,IAAI,IAAI;AAClC,UAAM,MAAM,OAAO,WAAW,IAAI;AAClC,QAAI,CAAC,IAAK,QAAO;AACjB,QAAI,UAAU,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,OAAO,OAAO,OAAO,MAAM;AAChE,UAAM,EAAE,KAAA,IAAS,IAAI,aAAa,GAAG,GAAG,OAAO,OAAO,OAAO,MAAM;AACnE,QAAI,MAAM;AACV,UAAM,IAAI,KAAK,SAAS;AACxB,aAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK,GAAG;AACvC,aAAO,UAAU,KAAK,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC;AAAA,IACpD;AACA,cAAI,UAAJ;AACA,WAAO,IAAI,IAAI,MAAM,IAAI;AAAA,EAC3B,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAMA,eAAsB,iBAAiB,KAAiB,YAAY,GAAqB;AACvF,QAAM,IAAI,MAAM,0BAA0B,GAAG;AAC7C,SAAO,IAAI;AACb;"}
1
+ {"version":3,"file":"capturePngAnalysis.js","names":[],"sources":["../../../src/react/3d/capturePngAnalysis.ts"],"sourcesContent":["/**\r\n * Lightweight PNG analysis for capture QA (brightness / \"all black\" detection).\r\n * Used by tests and optional runtime checks — keep dependency-free (no pngjs).\r\n */\r\n\r\n/** ITU-R BT.709 luma from RGB */\r\nexport function rgbToLuma(r: number, g: number, b: number): number {\r\n return 0.2126 * r + 0.7152 * g + 0.0722 * b;\r\n}\r\n\r\n/**\r\n * Sample mean luma of PNG bytes by drawing to a small canvas (browser / happy-dom).\r\n * Returns 0 if decode fails. For very large images, samples a grid (max ~4096 samples).\r\n */\r\nexport async function meanLuminanceFromPngBytes(\r\n png: Uint8Array,\r\n): Promise<number> {\r\n if (\r\n typeof createImageBitmap !== \"function\" ||\r\n typeof document === \"undefined\"\r\n ) {\r\n return 0;\r\n }\r\n try {\r\n const blob = new Blob([png as unknown as BlobPart], { type: \"image/png\" });\r\n const bmp = await createImageBitmap(blob);\r\n const w = bmp.width;\r\n const h = bmp.height;\r\n const canvas = document.createElement(\"canvas\");\r\n const step = Math.max(1, Math.floor(Math.sqrt((w * h) / 4096)));\r\n canvas.width = Math.ceil(w / step);\r\n canvas.height = Math.ceil(h / step);\r\n const ctx = canvas.getContext(\"2d\");\r\n if (!ctx) return 0;\r\n ctx.drawImage(bmp, 0, 0, w, h, 0, 0, canvas.width, canvas.height);\r\n const { data } = ctx.getImageData(0, 0, canvas.width, canvas.height);\r\n let sum = 0;\r\n const n = data.length / 4;\r\n for (let i = 0; i < data.length; i += 4) {\r\n sum += rgbToLuma(data[i], data[i + 1], data[i + 2]);\r\n }\r\n bmp.close?.();\r\n return n > 0 ? sum / n : 0;\r\n } catch {\r\n return 0;\r\n }\r\n}\r\n\r\n/**\r\n * True if the image is uniformly dark (likely failed render / empty GL buffer).\r\n * Threshold is mean luma on 0–255 scale (default 5 ≈ pure black).\r\n */\r\nexport async function isPngMostlyBlack(\r\n png: Uint8Array,\r\n threshold = 5,\r\n): Promise<boolean> {\r\n const m = await meanLuminanceFromPngBytes(png);\r\n return m < threshold;\r\n}\r\n"],"mappings":";;;;;;AAMA,SAAgB,UAAU,GAAW,GAAW,GAAmB;CACjE,OAAO,QAAS,IAAI,QAAS,IAAI,QAAS;AAC5C;;;;;AAMA,eAAsB,0BACpB,KACiB;CACjB,IACE,OAAO,sBAAsB,cAC7B,OAAO,aAAa,aAEpB,OAAO;CAET,IAAI;EACF,MAAM,OAAO,IAAI,KAAK,CAAC,GAA0B,GAAG,EAAE,MAAM,YAAY,CAAC;EACzE,MAAM,MAAM,MAAM,kBAAkB,IAAI;EACxC,MAAM,IAAI,IAAI;EACd,MAAM,IAAI,IAAI;EACd,MAAM,SAAS,SAAS,cAAc,QAAQ;EAC9C,MAAM,OAAO,KAAK,IAAI,GAAG,KAAK,MAAM,KAAK,KAAM,IAAI,IAAK,IAAI,CAAC,CAAC;EAC9D,OAAO,QAAQ,KAAK,KAAK,IAAI,IAAI;EACjC,OAAO,SAAS,KAAK,KAAK,IAAI,IAAI;EAClC,MAAM,MAAM,OAAO,WAAW,IAAI;EAClC,IAAI,CAAC,KAAK,OAAO;EACjB,IAAI,UAAU,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,OAAO,OAAO,OAAO,MAAM;EAChE,MAAM,EAAE,SAAS,IAAI,aAAa,GAAG,GAAG,OAAO,OAAO,OAAO,MAAM;EACnE,IAAI,MAAM;EACV,MAAM,IAAI,KAAK,SAAS;EACxB,KAAK,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK,GACpC,OAAO,UAAU,KAAK,IAAI,KAAK,IAAI,IAAI,KAAK,IAAI,EAAE;EAEpD,IAAI,QAAQ;EACZ,OAAO,IAAI,IAAI,MAAM,IAAI;CAC3B,QAAQ;EACN,OAAO;CACT;AACF;;;;;AAMA,eAAsB,iBACpB,KACA,YAAY,GACM;CAElB,OAAO,MADS,0BAA0B,GAAG,IAClC;AACb"}
@@ -11,10 +11,10 @@ export type { ZenSpace3DCesiumProps } from './ZenSpace3DCesium';
11
11
  export type { ZenSpace3DProps, ZenSpace3DHandle, ViewMode, CameraMode, ObjectCategory, SpaceObject, Satellite, Debris, SpaceStation, Asteroid, TLEData, OrbitPath, ManeuverNode, VisibilityCone, SatelliteCoverage, CoverageRegion, CoverageHexGrid, OverpassInfo, OrbitDesignArc, CoverageCell, TimeState, SelectionState, CameraState, LayerVisibility, ToolType, ToolState, Vector3D, LatLonAlt, SphericalCoords, SceneConfig, SceneObject, ZenSpace3DCallbacks, } from './ZenSpace3DTypes';
12
12
  export { latLonAltToCartesian, easeOutCubic, EARTH_RADIUS_KM, DEG_TO_RAD, RAD_TO_DEG, SCENE_EARTH_RADIUS, KM_TO_SCENE, } from './ZenSpace3DUtils';
13
13
  export { atmosphereVertexShader, atmosphereFragmentShader, starsVertexShader, starsFragmentShader, coverageVertexShader, coverageFragmentShader, visibilityConeVertexShader, visibilityConeFragmentShader, orbitLineVertexShader, orbitLineFragmentShader, objectGlowVertexShader, objectGlowFragmentShader, selectionRingVertexShader, selectionRingFragmentShader, terminatorVertexShader, terminatorFragmentShader, gridVertexShader, gridFragmentShader, planetRingVertexShader, planetRingFragmentShader, debrisVertexShader, debrisFragmentShader, createAtmosphereUniforms, createStarsUniforms, createVisibilityConeUniforms, } from './ZenSpace3DShaders';
14
- export { createCesiumCaptureSource, ecefMetersToSdkPosition, eulerXyzToHpr, ecefEulerXyzToHpr, computeDofBlurPx } from './CesiumCaptureSource';
15
- export type { CesiumCaptureSourceOptions, CesiumCaptureSourceHandle } from './CesiumCaptureSource';
14
+ export { createCesiumCaptureSource, ecefMetersToSdkPosition, eulerXyzToHpr, ecefEulerXyzToHpr, computeDofBlurPx, } from './CesiumCaptureSource';
15
+ export type { CesiumCaptureSourceOptions, CesiumCaptureSourceHandle, } from './CesiumCaptureSource';
16
16
  /** PNG brightness helpers for capture QA (e.g. detect all-black frames) */
17
- export { rgbToLuma, meanLuminanceFromPngBytes, isPngMostlyBlack } from './capturePngAnalysis';
17
+ export { rgbToLuma, meanLuminanceFromPngBytes, isPngMostlyBlack, } from './capturePngAnalysis';
18
18
  export { loadThree, isThreeLoaded } from './threeLoader';
19
19
  export type { ThreeModule, OrbitControlsType } from './threeLoader';
20
20
  export { useSimulationScene } from '../hooks/useSimulationScene';
@@ -1,57 +1,9 @@
1
- import { ZenSpace3D, ZenSpace3D as ZenSpace3D2 } from "./ZenSpace3D.js";
2
- import { ZenSpace3DCesium } from "./ZenSpace3DCesium.js";
1
+ import useSimulationScene from "../hooks/useSimulationScene.js";
3
2
  import { DEG_TO_RAD, EARTH_RADIUS_KM, KM_TO_SCENE, RAD_TO_DEG, SCENE_EARTH_RADIUS, easeOutCubic, latLonAltToCartesian } from "./ZenSpace3DUtils.js";
3
+ import { isThreeLoaded, loadThree } from "./threeLoader.js";
4
+ import { ZenSpace3DCesium } from "./ZenSpace3DCesium.js";
5
+ import { ZenSpace3D } from "./ZenSpace3D.js";
4
6
  import { atmosphereFragmentShader, atmosphereVertexShader, coverageFragmentShader, coverageVertexShader, createAtmosphereUniforms, createStarsUniforms, createVisibilityConeUniforms, debrisFragmentShader, debrisVertexShader, gridFragmentShader, gridVertexShader, objectGlowFragmentShader, objectGlowVertexShader, orbitLineFragmentShader, orbitLineVertexShader, planetRingFragmentShader, planetRingVertexShader, selectionRingFragmentShader, selectionRingVertexShader, starsFragmentShader, starsVertexShader, terminatorFragmentShader, terminatorVertexShader, visibilityConeFragmentShader, visibilityConeVertexShader } from "./ZenSpace3DShaders.js";
5
7
  import { computeDofBlurPx, createCesiumCaptureSource, ecefEulerXyzToHpr, ecefMetersToSdkPosition, eulerXyzToHpr } from "./CesiumCaptureSource.js";
6
8
  import { isPngMostlyBlack, meanLuminanceFromPngBytes, rgbToLuma } from "./capturePngAnalysis.js";
7
- import { isThreeLoaded, loadThree } from "./threeLoader.js";
8
- import { useSimulationScene } from "../hooks/useSimulationScene.js";
9
- export {
10
- DEG_TO_RAD,
11
- EARTH_RADIUS_KM,
12
- KM_TO_SCENE,
13
- RAD_TO_DEG,
14
- SCENE_EARTH_RADIUS,
15
- ZenSpace3D,
16
- ZenSpace3DCesium,
17
- ZenSpace3D2 as ZenSpace3DDefault,
18
- atmosphereFragmentShader,
19
- atmosphereVertexShader,
20
- computeDofBlurPx,
21
- coverageFragmentShader,
22
- coverageVertexShader,
23
- createAtmosphereUniforms,
24
- createCesiumCaptureSource,
25
- createStarsUniforms,
26
- createVisibilityConeUniforms,
27
- debrisFragmentShader,
28
- debrisVertexShader,
29
- easeOutCubic,
30
- ecefEulerXyzToHpr,
31
- ecefMetersToSdkPosition,
32
- eulerXyzToHpr,
33
- gridFragmentShader,
34
- gridVertexShader,
35
- isPngMostlyBlack,
36
- isThreeLoaded,
37
- latLonAltToCartesian,
38
- loadThree,
39
- meanLuminanceFromPngBytes,
40
- objectGlowFragmentShader,
41
- objectGlowVertexShader,
42
- orbitLineFragmentShader,
43
- orbitLineVertexShader,
44
- planetRingFragmentShader,
45
- planetRingVertexShader,
46
- rgbToLuma,
47
- selectionRingFragmentShader,
48
- selectionRingVertexShader,
49
- starsFragmentShader,
50
- starsVertexShader,
51
- terminatorFragmentShader,
52
- terminatorVertexShader,
53
- useSimulationScene,
54
- visibilityConeFragmentShader,
55
- visibilityConeVertexShader
56
- };
57
- //# sourceMappingURL=index.js.map
9
+ export { DEG_TO_RAD, EARTH_RADIUS_KM, KM_TO_SCENE, RAD_TO_DEG, SCENE_EARTH_RADIUS, ZenSpace3D, ZenSpace3DCesium, ZenSpace3D as ZenSpace3DDefault, atmosphereFragmentShader, atmosphereVertexShader, computeDofBlurPx, coverageFragmentShader, coverageVertexShader, createAtmosphereUniforms, createCesiumCaptureSource, createStarsUniforms, createVisibilityConeUniforms, debrisFragmentShader, debrisVertexShader, easeOutCubic, ecefEulerXyzToHpr, ecefMetersToSdkPosition, eulerXyzToHpr, gridFragmentShader, gridVertexShader, isPngMostlyBlack, isThreeLoaded, latLonAltToCartesian, loadThree, meanLuminanceFromPngBytes, objectGlowFragmentShader, objectGlowVertexShader, orbitLineFragmentShader, orbitLineVertexShader, planetRingFragmentShader, planetRingVertexShader, rgbToLuma, selectionRingFragmentShader, selectionRingVertexShader, starsFragmentShader, starsVertexShader, terminatorFragmentShader, terminatorVertexShader, useSimulationScene, visibilityConeFragmentShader, visibilityConeVertexShader };
@@ -4,7 +4,7 @@
4
4
  * Ensures only one instance of Three.js is loaded across all 3D components.
5
5
  * This prevents the "Multiple instances of Three.js being imported" warning.
6
6
  */
7
- export type ThreeModule = typeof import('three');
7
+ export type ThreeModule = typeof import("three");
8
8
  export type OrbitControlsType = typeof import('three/examples/jsm/controls/OrbitControls.js').OrbitControls;
9
9
  interface ThreeLoaderResult {
10
10
  THREE: ThreeModule;
@@ -1,22 +1,27 @@
1
- let loadPromise = null;
1
+ //#region src/react/3d/threeLoader.ts
2
+ var loadPromise = null;
3
+ /**
4
+ * Load Three.js and OrbitControls
5
+ * Returns cached instance if already loaded
6
+ */
2
7
  async function loadThree() {
3
- if (loadPromise) {
4
- return loadPromise;
5
- }
6
- loadPromise = (async () => {
7
- const [THREE, { OrbitControls }] = await Promise.all([
8
- import("three"),
9
- import("three/examples/jsm/controls/OrbitControls.js")
10
- ]);
11
- return { THREE, OrbitControls };
12
- })();
13
- return loadPromise;
8
+ if (loadPromise) return loadPromise;
9
+ loadPromise = (async () => {
10
+ const [THREE, { OrbitControls }] = await Promise.all([import("three"), import("three/examples/jsm/controls/OrbitControls.js")]);
11
+ return {
12
+ THREE,
13
+ OrbitControls
14
+ };
15
+ })();
16
+ return loadPromise;
14
17
  }
18
+ /**
19
+ * Check if Three.js is already loaded
20
+ */
15
21
  function isThreeLoaded() {
16
- return loadPromise !== null;
22
+ return loadPromise !== null;
17
23
  }
18
- export {
19
- isThreeLoaded,
20
- loadThree
21
- };
22
- //# sourceMappingURL=threeLoader.js.map
24
+ //#endregion
25
+ export { isThreeLoaded, loadThree };
26
+
27
+ //# sourceMappingURL=threeLoader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"threeLoader.js","sources":["../../../src/react/3d/threeLoader.ts"],"sourcesContent":["/**\r\n * Shared Three.js loader\r\n * \r\n * Ensures only one instance of Three.js is loaded across all 3D components.\r\n * This prevents the \"Multiple instances of Three.js being imported\" warning.\r\n */\r\n\r\nexport type ThreeModule = typeof import('three');\r\nexport type OrbitControlsType = typeof import('three/examples/jsm/controls/OrbitControls.js').OrbitControls;\r\n\r\ninterface ThreeLoaderResult {\r\n THREE: ThreeModule;\r\n OrbitControls: OrbitControlsType;\r\n}\r\n\r\n// Cached promise to ensure single load\r\nlet loadPromise: Promise<ThreeLoaderResult> | null = null;\r\n\r\n/**\r\n * Load Three.js and OrbitControls\r\n * Returns cached instance if already loaded\r\n */\r\nexport async function loadThree(): Promise<ThreeLoaderResult> {\r\n if (loadPromise) {\r\n return loadPromise;\r\n }\r\n\r\n loadPromise = (async () => {\r\n const [THREE, { OrbitControls }] = await Promise.all([\r\n import('three'),\r\n import('three/examples/jsm/controls/OrbitControls.js'),\r\n ]);\r\n \r\n return { THREE, OrbitControls };\r\n })();\r\n\r\n return loadPromise;\r\n}\r\n\r\n/**\r\n * Check if Three.js is already loaded\r\n */\r\nexport function isThreeLoaded(): boolean {\r\n return loadPromise !== null;\r\n}\r\n"],"names":[],"mappings":"AAgBA,IAAI,cAAiD;AAMrD,eAAsB,YAAwC;AAC5D,MAAI,aAAa;AACf,WAAO;AAAA,EACT;AAEA,iBAAe,YAAY;AACzB,UAAM,CAAC,OAAO,EAAE,cAAA,CAAe,IAAI,MAAM,QAAQ,IAAI;AAAA,MACnD,OAAO,OAAO;AAAA,MACd,OAAO,8CAA8C;AAAA,IAAA,CACtD;AAED,WAAO,EAAE,OAAO,cAAA;AAAA,EAClB,GAAA;AAEA,SAAO;AACT;AAKO,SAAS,gBAAyB;AACvC,SAAO,gBAAgB;AACzB;"}
1
+ {"version":3,"file":"threeLoader.js","names":[],"sources":["../../../src/react/3d/threeLoader.ts"],"sourcesContent":["/**\r\n * Shared Three.js loader\r\n *\r\n * Ensures only one instance of Three.js is loaded across all 3D components.\r\n * This prevents the \"Multiple instances of Three.js being imported\" warning.\r\n */\r\n\r\nexport type ThreeModule = typeof import(\"three\");\r\nexport type OrbitControlsType =\r\n typeof import(\"three/examples/jsm/controls/OrbitControls.js\").OrbitControls;\r\n\r\ninterface ThreeLoaderResult {\r\n THREE: ThreeModule;\r\n OrbitControls: OrbitControlsType;\r\n}\r\n\r\n// Cached promise to ensure single load\r\nlet loadPromise: Promise<ThreeLoaderResult> | null = null;\r\n\r\n/**\r\n * Load Three.js and OrbitControls\r\n * Returns cached instance if already loaded\r\n */\r\nexport async function loadThree(): Promise<ThreeLoaderResult> {\r\n if (loadPromise) {\r\n return loadPromise;\r\n }\r\n\r\n loadPromise = (async () => {\r\n const [THREE, { OrbitControls }] = await Promise.all([\r\n import(\"three\"),\r\n import(\"three/examples/jsm/controls/OrbitControls.js\"),\r\n ]);\r\n\r\n return { THREE, OrbitControls };\r\n })();\r\n\r\n return loadPromise;\r\n}\r\n\r\n/**\r\n * Check if Three.js is already loaded\r\n */\r\nexport function isThreeLoaded(): boolean {\r\n return loadPromise !== null;\r\n}\r\n"],"mappings":";AAiBA,IAAI,cAAiD;;;;;AAMrD,eAAsB,YAAwC;CAC5D,IAAI,aACF,OAAO;CAGT,eAAe,YAAY;EACzB,MAAM,CAAC,OAAO,EAAE,mBAAmB,MAAM,QAAQ,IAAI,CACnD,OAAO,UACP,OAAO,+CACT,CAAC;EAED,OAAO;GAAE;GAAO;EAAc;CAChC,EAAA,CAAG;CAEH,OAAO;AACT;;;;AAKA,SAAgB,gBAAyB;CACvC,OAAO,gBAAgB;AACzB"}
@@ -1,13 +1,12 @@
1
1
  import { default as React } from 'react';
2
-
3
- export type ClassificationLevel = 'unclassified' | 'cui' | 'controlled' | 'confidential' | 'secret' | 'top-secret' | 'top-secret-sci';
2
+ export type ClassificationLevel = "unclassified" | "cui" | "controlled" | "confidential" | "secret" | "top-secret" | "top-secret-sci";
4
3
  export interface ClassificationBannerProps {
5
4
  /** Classification level */
6
5
  classification: ClassificationLevel;
7
6
  /** Custom label (overrides default text) */
8
7
  label?: string;
9
8
  /** Position of the banner */
10
- position?: 'top' | 'bottom';
9
+ position?: "top" | "bottom";
11
10
  /** Custom className */
12
11
  className?: string;
13
12
  }