@zendir/ui 0.5.0 → 0.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (391) hide show
  1. package/CHANGELOG.md +419 -386
  2. package/README.md +640 -631
  3. package/dist/_virtual/_rolldown/runtime.js +13 -0
  4. package/dist/index.js +17 -221
  5. package/dist/react/3d/CesiumCaptureSource.d.ts +0 -1
  6. package/dist/react/3d/CesiumCaptureSource.js +364 -283
  7. package/dist/react/3d/CesiumCaptureSource.js.map +1 -1
  8. package/dist/react/3d/ZenSpace3D.d.ts +2 -3
  9. package/dist/react/3d/ZenSpace3D.js +1681 -1237
  10. package/dist/react/3d/ZenSpace3D.js.map +1 -1
  11. package/dist/react/3d/ZenSpace3DCesium.d.ts +0 -1
  12. package/dist/react/3d/ZenSpace3DCesium.js +513 -560
  13. package/dist/react/3d/ZenSpace3DCesium.js.map +1 -1
  14. package/dist/react/3d/ZenSpace3DShaders.js +61 -66
  15. package/dist/react/3d/ZenSpace3DShaders.js.map +1 -1
  16. package/dist/react/3d/ZenSpace3DTypes.d.ts +19 -20
  17. package/dist/react/3d/ZenSpace3DUtils.d.ts +0 -1
  18. package/dist/react/3d/ZenSpace3DUtils.js +37 -24
  19. package/dist/react/3d/ZenSpace3DUtils.js.map +1 -1
  20. package/dist/react/3d/capturePngAnalysis.js +42 -36
  21. package/dist/react/3d/capturePngAnalysis.js.map +1 -1
  22. package/dist/react/3d/index.d.ts +3 -3
  23. package/dist/react/3d/index.js +5 -53
  24. package/dist/react/3d/threeLoader.d.ts +1 -1
  25. package/dist/react/3d/threeLoader.js +23 -18
  26. package/dist/react/3d/threeLoader.js.map +1 -1
  27. package/dist/react/astro/ClassificationBanner.d.ts +2 -3
  28. package/dist/react/astro/ClassificationBanner.js +95 -79
  29. package/dist/react/astro/ClassificationBanner.js.map +1 -1
  30. package/dist/react/astro/GlobalStatusBar.d.ts +0 -1
  31. package/dist/react/astro/GlobalStatusBar.js +157 -163
  32. package/dist/react/astro/GlobalStatusBar.js.map +1 -1
  33. package/dist/react/astro/MissionClock.d.ts +7 -8
  34. package/dist/react/astro/MissionClock.js +377 -400
  35. package/dist/react/astro/MissionClock.js.map +1 -1
  36. package/dist/react/astro/MonitoringIcon.d.ts +1 -2
  37. package/dist/react/astro/MonitoringIcon.js +422 -358
  38. package/dist/react/astro/MonitoringIcon.js.map +1 -1
  39. package/dist/react/astro/Notification.d.ts +1 -2
  40. package/dist/react/astro/Notification.js +229 -126
  41. package/dist/react/astro/Notification.js.map +1 -1
  42. package/dist/react/astro/Progress.d.ts +0 -1
  43. package/dist/react/astro/Progress.js +199 -141
  44. package/dist/react/astro/Progress.js.map +1 -1
  45. package/dist/react/astro/SimulationControls.d.ts +3 -4
  46. package/dist/react/astro/SimulationControls.js +596 -650
  47. package/dist/react/astro/SimulationControls.js.map +1 -1
  48. package/dist/react/astro/StatusIndicator.d.ts +0 -1
  49. package/dist/react/astro/StatusIndicator.js +236 -170
  50. package/dist/react/astro/StatusIndicator.js.map +1 -1
  51. package/dist/react/astro/UnifiedTimeline.d.ts +9 -10
  52. package/dist/react/astro/UnifiedTimeline.js +2345 -2392
  53. package/dist/react/astro/UnifiedTimeline.js.map +1 -1
  54. package/dist/react/astro/index.d.ts +5 -5
  55. package/dist/react/astro/index.js +1 -25
  56. package/dist/react/cards/AccessCard.d.ts +0 -1
  57. package/dist/react/cards/AccessCard.js +471 -405
  58. package/dist/react/cards/AccessCard.js.map +1 -1
  59. package/dist/react/cards/OrbitCard.d.ts +0 -1
  60. package/dist/react/cards/OrbitCard.js +487 -364
  61. package/dist/react/cards/OrbitCard.js.map +1 -1
  62. package/dist/react/cards/SpacecraftCard.d.ts +0 -1
  63. package/dist/react/cards/SpacecraftCard.js +813 -925
  64. package/dist/react/cards/SpacecraftCard.js.map +1 -1
  65. package/dist/react/cards/TelemetryCard.d.ts +0 -1
  66. package/dist/react/cards/TelemetryCard.js +1055 -732
  67. package/dist/react/cards/TelemetryCard.js.map +1 -1
  68. package/dist/react/cards/TelemetryStreamCard.d.ts +0 -1
  69. package/dist/react/cards/TelemetryStreamCard.js +323 -297
  70. package/dist/react/cards/TelemetryStreamCard.js.map +1 -1
  71. package/dist/react/cards/index.d.ts +1 -1
  72. package/dist/react/cards/index.js +1 -8
  73. package/dist/react/charts/GroundTrackMap.d.ts +6 -7
  74. package/dist/react/charts/GroundTrackMap.js +1377 -1256
  75. package/dist/react/charts/GroundTrackMap.js.map +1 -1
  76. package/dist/react/charts/GroundTrackMapLeaflet.d.ts +1 -2
  77. package/dist/react/charts/GroundTrackMapLeaflet.js +1065 -987
  78. package/dist/react/charts/GroundTrackMapLeaflet.js.map +1 -1
  79. package/dist/react/charts/groundTrackMapLeafletTiles.js +34 -25
  80. package/dist/react/charts/groundTrackMapLeafletTiles.js.map +1 -1
  81. package/dist/react/charts/groundTrackMapLeafletUtils.js +70 -61
  82. package/dist/react/charts/groundTrackMapLeafletUtils.js.map +1 -1
  83. package/dist/react/charts/index.d.ts +1 -1
  84. package/dist/react/charts/index.js +7 -100
  85. package/dist/react/charts/unified/AstroChart.d.ts +1 -2
  86. package/dist/react/charts/unified/AstroChart.js +1331 -1411
  87. package/dist/react/charts/unified/AstroChart.js.map +1 -1
  88. package/dist/react/charts/unified/PowerOverviewChart.d.ts +3 -3
  89. package/dist/react/charts/unified/PowerOverviewChart.js +495 -478
  90. package/dist/react/charts/unified/PowerOverviewChart.js.map +1 -1
  91. package/dist/react/charts/unified/domain.d.ts +12 -13
  92. package/dist/react/charts/unified/domain.js +3999 -3145
  93. package/dist/react/charts/unified/domain.js.map +1 -1
  94. package/dist/react/charts/unified/generators.d.ts +3 -4
  95. package/dist/react/charts/unified/generators.js +561 -498
  96. package/dist/react/charts/unified/generators.js.map +1 -1
  97. package/dist/react/charts/unified/index.d.ts +1 -1
  98. package/dist/react/charts/unified/presets.d.ts +14 -15
  99. package/dist/react/charts/unified/presets.js +857 -994
  100. package/dist/react/charts/unified/presets.js.map +1 -1
  101. package/dist/react/charts/unified/sync.d.ts +2 -3
  102. package/dist/react/charts/unified/sync.js +229 -195
  103. package/dist/react/charts/unified/sync.js.map +1 -1
  104. package/dist/react/charts/unified/theme.d.ts +11 -12
  105. package/dist/react/charts/unified/theme.js +606 -642
  106. package/dist/react/charts/unified/theme.js.map +1 -1
  107. package/dist/react/charts/unified/types.d.ts +32 -33
  108. package/dist/react/charts/unified/useChartStream.d.ts +1 -2
  109. package/dist/react/charts/unified/useChartStream.js +203 -216
  110. package/dist/react/charts/unified/useChartStream.js.map +1 -1
  111. package/dist/react/chatgpt/AppCard.d.ts +1 -2
  112. package/dist/react/chatgpt/index.d.ts +7 -7
  113. package/dist/react/chatgpt/index.js +160 -139
  114. package/dist/react/chatgpt/index.js.map +1 -1
  115. package/dist/react/context/CategoryContext.d.ts +0 -1
  116. package/dist/react/context/CategoryContext.js +78 -29
  117. package/dist/react/context/CategoryContext.js.map +1 -1
  118. package/dist/react/context/DisplaySettingsContext.d.ts +1 -2
  119. package/dist/react/context/DisplaySettingsContext.js +205 -156
  120. package/dist/react/context/DisplaySettingsContext.js.map +1 -1
  121. package/dist/react/context/SpatialSelectionContext.d.ts +0 -1
  122. package/dist/react/context/SpatialSelectionContext.js +36 -7
  123. package/dist/react/context/SpatialSelectionContext.js.map +1 -1
  124. package/dist/react/core/data/DataTable.d.ts +3 -4
  125. package/dist/react/core/data/DataTable.js +473 -440
  126. package/dist/react/core/data/DataTable.js.map +1 -1
  127. package/dist/react/core/data/DataValue.d.ts +4 -5
  128. package/dist/react/core/data/DataValue.js +605 -571
  129. package/dist/react/core/data/DataValue.js.map +1 -1
  130. package/dist/react/core/data/propertyConfig.d.ts +1 -2
  131. package/dist/react/core/data/propertyConfig.js +446 -382
  132. package/dist/react/core/data/propertyConfig.js.map +1 -1
  133. package/dist/react/core/display/AstroIcon.d.ts +4 -5
  134. package/dist/react/core/display/AstroIcon.js +339 -429
  135. package/dist/react/core/display/AstroIcon.js.map +1 -1
  136. package/dist/react/core/display/Badge.d.ts +2 -3
  137. package/dist/react/core/display/Badge.js +131 -131
  138. package/dist/react/core/display/Badge.js.map +1 -1
  139. package/dist/react/core/display/CardHeader.d.ts +0 -1
  140. package/dist/react/core/display/CardHeader.js +398 -311
  141. package/dist/react/core/display/CardHeader.js.map +1 -1
  142. package/dist/react/core/display/Container.d.ts +2 -3
  143. package/dist/react/core/display/Container.js +640 -668
  144. package/dist/react/core/display/Container.js.map +1 -1
  145. package/dist/react/core/display/CopyButton.d.ts +1 -2
  146. package/dist/react/core/display/CopyButton.js +158 -101
  147. package/dist/react/core/display/CopyButton.js.map +1 -1
  148. package/dist/react/core/display/GlassCard.d.ts +3 -4
  149. package/dist/react/core/display/GlassCard.js +416 -369
  150. package/dist/react/core/display/GlassCard.js.map +1 -1
  151. package/dist/react/core/display/HeaderIconWithStatus.d.ts +0 -1
  152. package/dist/react/core/display/HeaderIconWithStatus.js +152 -152
  153. package/dist/react/core/display/HeaderIconWithStatus.js.map +1 -1
  154. package/dist/react/core/display/Icon.d.ts +2 -3
  155. package/dist/react/core/display/Icon.js +172 -143
  156. package/dist/react/core/display/Icon.js.map +1 -1
  157. package/dist/react/core/display/Typography.d.ts +24 -25
  158. package/dist/react/core/display/Typography.js +360 -178
  159. package/dist/react/core/display/Typography.js.map +1 -1
  160. package/dist/react/core/feedback/ConfirmDialog.d.ts +1 -2
  161. package/dist/react/core/feedback/ConfirmDialog.js +343 -304
  162. package/dist/react/core/feedback/ConfirmDialog.js.map +1 -1
  163. package/dist/react/core/feedback/Dialog.d.ts +2 -3
  164. package/dist/react/core/feedback/Dialog.js +189 -197
  165. package/dist/react/core/feedback/Dialog.js.map +1 -1
  166. package/dist/react/core/feedback/Toast.d.ts +2 -3
  167. package/dist/react/core/feedback/Toast.js +346 -207
  168. package/dist/react/core/feedback/Toast.js.map +1 -1
  169. package/dist/react/core/index.d.ts +26 -26
  170. package/dist/react/core/index.js +7 -119
  171. package/dist/react/core/inputs/Button.d.ts +2 -3
  172. package/dist/react/core/inputs/Button.js +281 -304
  173. package/dist/react/core/inputs/Button.js.map +1 -1
  174. package/dist/react/core/inputs/Checkbox.d.ts +2 -3
  175. package/dist/react/core/inputs/Checkbox.js +139 -127
  176. package/dist/react/core/inputs/Checkbox.js.map +1 -1
  177. package/dist/react/core/inputs/Input.d.ts +3 -4
  178. package/dist/react/core/inputs/Input.js +277 -285
  179. package/dist/react/core/inputs/Input.js.map +1 -1
  180. package/dist/react/core/inputs/LimitsBar.d.ts +1 -2
  181. package/dist/react/core/inputs/LimitsBar.js +271 -196
  182. package/dist/react/core/inputs/LimitsBar.js.map +1 -1
  183. package/dist/react/core/inputs/NumberInput.d.ts +2 -3
  184. package/dist/react/core/inputs/NumberInput.js +531 -503
  185. package/dist/react/core/inputs/NumberInput.js.map +1 -1
  186. package/dist/react/core/inputs/PinInput.d.ts +2 -3
  187. package/dist/react/core/inputs/PinInput.js +224 -207
  188. package/dist/react/core/inputs/PinInput.js.map +1 -1
  189. package/dist/react/core/inputs/Select.d.ts +1 -2
  190. package/dist/react/core/inputs/Select.js +298 -299
  191. package/dist/react/core/inputs/Select.js.map +1 -1
  192. package/dist/react/core/inputs/Toggle.d.ts +2 -3
  193. package/dist/react/core/inputs/Toggle.js +142 -148
  194. package/dist/react/core/inputs/Toggle.js.map +1 -1
  195. package/dist/react/core/layout/Box.d.ts +3 -4
  196. package/dist/react/core/layout/Box.js +118 -122
  197. package/dist/react/core/layout/Box.js.map +1 -1
  198. package/dist/react/core/layout/Center.d.ts +0 -1
  199. package/dist/react/core/layout/Center.js +45 -32
  200. package/dist/react/core/layout/Center.js.map +1 -1
  201. package/dist/react/core/layout/Divider.d.ts +1 -2
  202. package/dist/react/core/layout/Divider.js +112 -106
  203. package/dist/react/core/layout/Divider.js.map +1 -1
  204. package/dist/react/core/layout/Flex.d.ts +4 -5
  205. package/dist/react/core/layout/Flex.js +120 -124
  206. package/dist/react/core/layout/Flex.js.map +1 -1
  207. package/dist/react/core/layout/Grid.d.ts +5 -6
  208. package/dist/react/core/layout/Grid.js +131 -138
  209. package/dist/react/core/layout/Grid.js.map +1 -1
  210. package/dist/react/core/layout/Spacer.d.ts +0 -1
  211. package/dist/react/core/layout/Spacer.js +36 -29
  212. package/dist/react/core/layout/Spacer.js.map +1 -1
  213. package/dist/react/core/layout/Stack.d.ts +4 -5
  214. package/dist/react/core/layout/Stack.js +127 -70
  215. package/dist/react/core/layout/Stack.js.map +1 -1
  216. package/dist/react/core/layout/responsive.d.ts +1 -2
  217. package/dist/react/core/layout/responsive.js +25 -19
  218. package/dist/react/core/layout/responsive.js.map +1 -1
  219. package/dist/react/core/layout/useBreakpoint.d.ts +1 -1
  220. package/dist/react/core/layout/useBreakpoint.js +119 -66
  221. package/dist/react/core/layout/useBreakpoint.js.map +1 -1
  222. package/dist/react/core/navigation/AppBar.d.ts +1 -2
  223. package/dist/react/core/navigation/AppBar.js +827 -805
  224. package/dist/react/core/navigation/AppBar.js.map +1 -1
  225. package/dist/react/core/navigation/Pagination.d.ts +2 -3
  226. package/dist/react/core/navigation/Pagination.js +207 -187
  227. package/dist/react/core/navigation/Pagination.js.map +1 -1
  228. package/dist/react/core/navigation/SideNav.d.ts +5 -6
  229. package/dist/react/core/navigation/SideNav.js +855 -629
  230. package/dist/react/core/navigation/SideNav.js.map +1 -1
  231. package/dist/react/core/navigation/Tabs.d.ts +0 -1
  232. package/dist/react/core/navigation/Tabs.js +113 -119
  233. package/dist/react/core/navigation/Tabs.js.map +1 -1
  234. package/dist/react/core/overlays/Popover.d.ts +2 -3
  235. package/dist/react/core/overlays/Popover.js +303 -282
  236. package/dist/react/core/overlays/Popover.js.map +1 -1
  237. package/dist/react/core/overlays/SidePanel.d.ts +1 -2
  238. package/dist/react/core/overlays/SidePanel.js +217 -212
  239. package/dist/react/core/overlays/SidePanel.js.map +1 -1
  240. package/dist/react/core/overlays/Tooltip.d.ts +1 -2
  241. package/dist/react/core/overlays/Tooltip.js +170 -176
  242. package/dist/react/core/overlays/Tooltip.js.map +1 -1
  243. package/dist/react/core/widgets/ActivityPlanner.d.ts +0 -1
  244. package/dist/react/core/widgets/ActivityPlanner.js +855 -517
  245. package/dist/react/core/widgets/ActivityPlanner.js.map +1 -1
  246. package/dist/react/core/widgets/Capture.d.ts +2 -3
  247. package/dist/react/core/widgets/Capture.js +965 -779
  248. package/dist/react/core/widgets/Capture.js.map +1 -1
  249. package/dist/react/core/widgets/ChatPanel.d.ts +16 -17
  250. package/dist/react/core/widgets/ChatPanel.js +1734 -1034
  251. package/dist/react/core/widgets/ChatPanel.js.map +1 -1
  252. package/dist/react/core/widgets/ColorPickerPanel.d.ts +0 -1
  253. package/dist/react/core/widgets/ColorPickerPanel.js +298 -287
  254. package/dist/react/core/widgets/ColorPickerPanel.js.map +1 -1
  255. package/dist/react/core/widgets/CommandBuilder.d.ts +2 -3
  256. package/dist/react/core/widgets/CommandBuilder.js +624 -516
  257. package/dist/react/core/widgets/CommandBuilder.js.map +1 -1
  258. package/dist/react/core/widgets/ConnectionForm.d.ts +2 -3
  259. package/dist/react/core/widgets/ConnectionForm.js +528 -492
  260. package/dist/react/core/widgets/ConnectionForm.js.map +1 -1
  261. package/dist/react/core/widgets/FileExplorer.d.ts +3 -4
  262. package/dist/react/core/widgets/FileExplorer.js +617 -505
  263. package/dist/react/core/widgets/FileExplorer.js.map +1 -1
  264. package/dist/react/core/widgets/HexViewer.d.ts +2 -3
  265. package/dist/react/core/widgets/HexViewer.js +1353 -1091
  266. package/dist/react/core/widgets/HexViewer.js.map +1 -1
  267. package/dist/react/core/widgets/ImageFrame.d.ts +1 -2
  268. package/dist/react/core/widgets/ImageFrame.js +230 -193
  269. package/dist/react/core/widgets/ImageFrame.js.map +1 -1
  270. package/dist/react/core/widgets/ImageGallery.d.ts +2 -1
  271. package/dist/react/core/widgets/ImageGallery.js +380 -314
  272. package/dist/react/core/widgets/ImageGallery.js.map +1 -1
  273. package/dist/react/core/widgets/ImagePanel.d.ts +0 -1
  274. package/dist/react/core/widgets/ImagePanel.js +110 -101
  275. package/dist/react/core/widgets/ImagePanel.js.map +1 -1
  276. package/dist/react/core/widgets/LogViewer.d.ts +2 -3
  277. package/dist/react/core/widgets/LogViewer.js +711 -607
  278. package/dist/react/core/widgets/LogViewer.js.map +1 -1
  279. package/dist/react/core/widgets/MessageStream.d.ts +3 -4
  280. package/dist/react/core/widgets/MessageStream.js +514 -444
  281. package/dist/react/core/widgets/MessageStream.js.map +1 -1
  282. package/dist/react/core/widgets/MissionCalendar.d.ts +3 -4
  283. package/dist/react/core/widgets/MissionCalendar.js +1488 -1020
  284. package/dist/react/core/widgets/MissionCalendar.js.map +1 -1
  285. package/dist/react/core/widgets/PacketViewer.d.ts +2 -3
  286. package/dist/react/core/widgets/PacketViewer.js +550 -421
  287. package/dist/react/core/widgets/PacketViewer.js.map +1 -1
  288. package/dist/react/core/widgets/capture-placeholder.png.js +6 -5
  289. package/dist/react/core/widgets/capture-placeholder.png.js.map +1 -1
  290. package/dist/react/hooks/index.d.ts +5 -5
  291. package/dist/react/hooks/useAccessWindows.d.ts +0 -1
  292. package/dist/react/hooks/useCompactMode.d.ts +1 -1
  293. package/dist/react/hooks/useCompactMode.js +104 -58
  294. package/dist/react/hooks/useCompactMode.js.map +1 -1
  295. package/dist/react/hooks/useGroundTrackHistory.d.ts +0 -1
  296. package/dist/react/hooks/useSimulationScene.d.ts +1 -2
  297. package/dist/react/hooks/useSimulationScene.js +481 -374
  298. package/dist/react/hooks/useSimulationScene.js.map +1 -1
  299. package/dist/react/index.d.ts +3 -3
  300. package/dist/react/panels/LayerControlPanel.d.ts +1 -2
  301. package/dist/react/panels/LayerControlPanel.js +223 -180
  302. package/dist/react/panels/LayerControlPanel.js.map +1 -1
  303. package/dist/react/panels/ObjectInventoryPanel.d.ts +2 -3
  304. package/dist/react/panels/ObjectInventoryPanel.js +315 -250
  305. package/dist/react/panels/ObjectInventoryPanel.js.map +1 -1
  306. package/dist/react/panels/index.d.ts +1 -1
  307. package/dist/react/panels/index.js +1 -6
  308. package/dist/react/shared/ErrorBoundary.d.ts +1 -2
  309. package/dist/react/shared/ErrorBoundary.js +170 -139
  310. package/dist/react/shared/ErrorBoundary.js.map +1 -1
  311. package/dist/react/shared/Skeleton.d.ts +1 -2
  312. package/dist/react/shared/Skeleton.js +300 -301
  313. package/dist/react/shared/Skeleton.js.map +1 -1
  314. package/dist/react/theme/ThemeProvider.d.ts +2 -321
  315. package/dist/react/theme/ThemeProvider.js +313 -939
  316. package/dist/react/theme/ThemeProvider.js.map +1 -1
  317. package/dist/react/theme/cardAccent.d.ts +1 -2
  318. package/dist/react/theme/cardAccent.js +196 -126
  319. package/dist/react/theme/cardAccent.js.map +1 -1
  320. package/dist/react/theme/config.d.ts +0 -1
  321. package/dist/react/theme/config.js +47 -25
  322. package/dist/react/theme/config.js.map +1 -1
  323. package/dist/react/theme/index.d.ts +2 -2
  324. package/dist/react/theme/index.js +1 -16
  325. package/dist/react/theme/types.d.ts +332 -0
  326. package/dist/react/theme/types.js +39 -0
  327. package/dist/react/theme/types.js.map +1 -0
  328. package/dist/react/types.d.ts +8 -8
  329. package/dist/react/types.js +147 -47
  330. package/dist/react/types.js.map +1 -1
  331. package/dist/react/utils/categoryPalette.d.ts +0 -1
  332. package/dist/react/utils/categoryPalette.js +91 -102
  333. package/dist/react/utils/categoryPalette.js.map +1 -1
  334. package/dist/react/utils/index.d.ts +5 -5
  335. package/dist/react/utils/index.js +457 -371
  336. package/dist/react/utils/index.js.map +1 -1
  337. package/dist/react/visualizations/EclipseTimerCard.d.ts +0 -1
  338. package/dist/react/visualizations/LinkBudgetCard.d.ts +0 -1
  339. package/dist/react/visualizations/NavBallCard.d.ts +0 -1
  340. package/dist/react/visualizations/PropulsionCard.d.ts +1 -2
  341. package/dist/react/visualizations/SensorFootprintCard.d.ts +1 -2
  342. package/dist/react/visualizations/ThermalHeatmapCard.d.ts +0 -1
  343. package/dist/react/visualizations/index.d.ts +3 -3
  344. package/dist/react.d.ts +2 -1
  345. package/dist/react.js +17 -221
  346. package/dist/shaders/atmosphere.frag.js +6 -5
  347. package/dist/shaders/atmosphere.frag.js.map +1 -1
  348. package/dist/shaders/atmosphere.vert.js +6 -5
  349. package/dist/shaders/atmosphere.vert.js.map +1 -1
  350. package/dist/shaders/stars.frag.js +6 -5
  351. package/dist/shaders/stars.frag.js.map +1 -1
  352. package/dist/shaders/stars.vert.js +6 -5
  353. package/dist/shaders/stars.vert.js.map +1 -1
  354. package/dist/style.css +26 -3
  355. package/dist/tokens/core.d.ts +159 -0
  356. package/dist/tokens/core.js +144 -0
  357. package/dist/tokens/core.js.map +1 -0
  358. package/dist/tokens/css-vars.d.ts +213 -2
  359. package/dist/tokens/css-vars.js +590 -227
  360. package/dist/tokens/css-vars.js.map +1 -1
  361. package/dist/tokens/index.d.ts +31 -228
  362. package/dist/tokens/index.js +281 -366
  363. package/dist/tokens/index.js.map +1 -1
  364. package/dist/tokens/palettes/astro.d.ts +129 -0
  365. package/dist/tokens/palettes/astro.js +112 -0
  366. package/dist/tokens/palettes/astro.js.map +1 -0
  367. package/dist/tokens/palettes/index.d.ts +288 -0
  368. package/dist/tokens/palettes/index.js +35 -0
  369. package/dist/tokens/palettes/index.js.map +1 -0
  370. package/dist/tokens/palettes/tailwind.d.ts +324 -0
  371. package/dist/tokens/palettes/tailwind.js +201 -0
  372. package/dist/tokens/palettes/tailwind.js.map +1 -0
  373. package/dist/tokens/palettes/zendir.d.ts +126 -0
  374. package/dist/tokens/palettes/zendir.js +92 -0
  375. package/dist/tokens/palettes/zendir.js.map +1 -0
  376. package/dist/tokens/themes.d.ts +30 -0
  377. package/dist/tokens/themes.js +704 -0
  378. package/dist/tokens/themes.js.map +1 -0
  379. package/dist/tokens/tokens.css +533 -155
  380. package/dist/types/index.d.ts +2 -2
  381. package/package.json +310 -313
  382. package/dist/index.js.map +0 -1
  383. package/dist/react/3d/index.js.map +0 -1
  384. package/dist/react/astro/index.js.map +0 -1
  385. package/dist/react/cards/index.js.map +0 -1
  386. package/dist/react/charts/index.js.map +0 -1
  387. package/dist/react/core/index.js.map +0 -1
  388. package/dist/react/panels/index.js.map +0 -1
  389. package/dist/react/theme/astro-tokens.d.ts +0 -153
  390. package/dist/react/theme/index.js.map +0 -1
  391. package/dist/react.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"propertyConfig.js","sources":["../../../../src/react/core/data/propertyConfig.ts"],"sourcesContent":["/**\n * @zendir/ui - Property Configuration System\n * \n * Enterprise-grade property-to-icon/status/unit mapping system.\n * Provides automatic icon, status, and formatting for common telemetry properties.\n * \n * AstroUXDS Compliance:\n * - Uses official Astro icon names\n * - Status colors per AstroUXDS status system\n * - Dual-coding (color + shape) for accessibility\n * \n * Features:\n * - Auto-derive status from value + thresholds\n * - Contextual icons for space operations properties\n * - Unit formatting with SI prefixes\n * - Extensible configuration\n * \n * @example\n * ```tsx\n * import { getPropertyConfig, deriveStatus, PROPERTY_PRESETS } from '@zendir/ui';\n * \n * // Get config for a known property\n * const tempConfig = getPropertyConfig('temperature');\n * // { icon: 'thermal', unit: '°C', thresholds: { caution: 60, critical: 80 }, ... }\n * \n * // Derive status from value\n * const status = deriveStatus(75, tempConfig.thresholds);\n * // 'caution'\n * ```\n */\n\nimport type { StatusLevel } from '../../utils';\nimport type { AstroIconName } from '../display/AstroIcon';\n\n// =============================================================================\n// Types\n// =============================================================================\n\n/**\n * Threshold configuration for automatic status derivation\n * Values are compared: value >= threshold triggers that status (high thresholds)\n * or value <= threshold triggers that status (low thresholds)\n */\nexport interface StatusThresholds {\n /** Value at or above which status becomes 'critical' (high is bad) */\n critical?: number;\n /** Value at or above which status becomes 'serious' (high is bad) */\n serious?: number;\n /** Value at or above which status becomes 'caution' (high is bad) */\n caution?: number;\n /** Value at or below which status becomes 'caution' (low is bad) */\n cautionLow?: number;\n /** Value at or below which status becomes 'serious' (low is bad) */\n seriousLow?: number;\n /** Value at or below which status becomes 'critical' (low is bad) */\n criticalLow?: number;\n}\n\n/**\n * Complete property configuration\n */\nexport interface PropertyConfig {\n /** Display name (sentence case per AstroUXDS) */\n label: string;\n /** Astro icon name */\n icon: AstroIconName;\n /** Unit of measurement */\n unit?: string;\n /** Precision for number formatting */\n precision?: number;\n /** Status thresholds for auto-derivation */\n thresholds?: StatusThresholds;\n /** Category for grouping */\n category?: PropertyCategory;\n /** Description for tooltips */\n description?: string;\n /** Format function override */\n format?: (value: number) => string;\n}\n\n/**\n * Property categories for organization\n */\nexport type PropertyCategory = \n | 'power'\n | 'thermal'\n | 'attitude'\n | 'communications'\n | 'propulsion'\n | 'navigation'\n | 'payload'\n | 'health'\n | 'orbital'\n | 'general';\n\n/**\n * Property key - either a preset name or custom string\n */\nexport type PropertyKey = keyof typeof PROPERTY_PRESETS | (string & {});\n\n// =============================================================================\n// Property Presets\n// =============================================================================\n\n/**\n * Predefined property configurations for common space operations telemetry\n * \n * These provide sensible defaults that can be overridden per-use.\n */\nexport const PROPERTY_PRESETS = {\n // === Power System ===\n battery: {\n label: 'Battery',\n icon: 'battery-full' as AstroIconName,\n unit: '%',\n precision: 1,\n category: 'power' as PropertyCategory,\n // Low values are bad for battery (use *Low thresholds)\n thresholds: { criticalLow: 10, seriousLow: 20, cautionLow: 30 },\n description: 'Battery state of charge',\n },\n voltage: {\n label: 'Voltage',\n icon: 'propulsion-power' as AstroIconName,\n unit: 'V',\n precision: 2,\n category: 'power' as PropertyCategory,\n thresholds: { criticalLow: 24, cautionLow: 26 },\n description: 'Bus voltage',\n },\n current: {\n label: 'Current',\n icon: 'propulsion-power' as AstroIconName,\n unit: 'A',\n precision: 2,\n category: 'power' as PropertyCategory,\n description: 'Current draw',\n },\n power: {\n label: 'Power',\n icon: 'propulsion-power' as AstroIconName,\n unit: 'W',\n precision: 1,\n category: 'power' as PropertyCategory,\n description: 'Power consumption or generation',\n },\n solarPower: {\n label: 'Solar',\n icon: 'solar' as AstroIconName,\n unit: 'W',\n precision: 1,\n category: 'power' as PropertyCategory,\n description: 'Solar array output',\n },\n load: {\n label: 'Load',\n icon: 'propulsion-power' as AstroIconName,\n unit: 'W',\n precision: 1,\n category: 'power' as PropertyCategory,\n description: 'Power load',\n },\n\n // === Thermal ===\n temperature: {\n label: 'Temperature',\n icon: 'thermal' as AstroIconName,\n unit: '°C',\n precision: 1,\n category: 'thermal' as PropertyCategory,\n thresholds: { critical: 80, serious: 70, caution: 60, cautionLow: -20, criticalLow: -40 },\n description: 'Component temperature',\n },\n heater: {\n label: 'Heater',\n icon: 'thermal' as AstroIconName,\n unit: '',\n category: 'thermal' as PropertyCategory,\n description: 'Heater status',\n },\n\n // === Attitude ===\n roll: {\n label: 'Roll',\n icon: 'explore' as AstroIconName,\n unit: '°',\n precision: 2,\n category: 'attitude' as PropertyCategory,\n thresholds: { critical: 45, caution: 30 },\n description: 'Roll angle',\n },\n pitch: {\n label: 'Pitch',\n icon: 'explore' as AstroIconName,\n unit: '°',\n precision: 2,\n category: 'attitude' as PropertyCategory,\n thresholds: { critical: 45, caution: 30 },\n description: 'Pitch angle',\n },\n yaw: {\n label: 'Yaw',\n icon: 'explore' as AstroIconName,\n unit: '°',\n precision: 2,\n category: 'attitude' as PropertyCategory,\n thresholds: { critical: 45, caution: 30 },\n description: 'Yaw angle',\n },\n pointingError: {\n label: 'Pointing error',\n icon: 'explore' as AstroIconName,\n unit: '°',\n precision: 3,\n category: 'attitude' as PropertyCategory,\n thresholds: { critical: 1.0, serious: 0.5, caution: 0.1 },\n description: 'Attitude pointing error',\n },\n angularVelocity: {\n label: 'Angular velocity',\n icon: 'explore' as AstroIconName,\n unit: '°/s',\n precision: 3,\n category: 'attitude' as PropertyCategory,\n thresholds: { critical: 5.0, caution: 2.0 },\n description: 'Rotation rate',\n },\n\n // === Communications ===\n signalStrength: {\n label: 'Signal',\n icon: 'antenna-receive' as AstroIconName,\n unit: 'dBm',\n precision: 1,\n category: 'communications' as PropertyCategory,\n thresholds: { criticalLow: -100, cautionLow: -85 },\n description: 'Received signal strength',\n },\n dataRate: {\n label: 'Data rate',\n icon: 'antenna-transmit' as AstroIconName,\n unit: 'Mbps',\n precision: 2,\n category: 'communications' as PropertyCategory,\n description: 'Communication data rate',\n },\n packetLoss: {\n label: 'Packet loss',\n icon: 'netcom' as AstroIconName,\n unit: '%',\n precision: 2,\n category: 'communications' as PropertyCategory,\n thresholds: { critical: 10, serious: 5, caution: 1 },\n description: 'Communication packet loss rate',\n },\n snr: {\n label: 'SNR',\n icon: 'antenna' as AstroIconName,\n unit: 'dB',\n precision: 1,\n category: 'communications' as PropertyCategory,\n thresholds: { criticalLow: 5, cautionLow: 10 },\n description: 'Signal-to-noise ratio',\n },\n queue: {\n label: 'Queue',\n icon: 'netcom' as AstroIconName,\n unit: 'pkts',\n precision: 0,\n category: 'communications' as PropertyCategory,\n thresholds: { critical: 1000, caution: 500 },\n description: 'Packet queue depth',\n },\n\n // === Propulsion ===\n fuelLevel: {\n label: 'Fuel',\n icon: 'propulsion-power' as AstroIconName,\n unit: '%',\n precision: 1,\n category: 'propulsion' as PropertyCategory,\n thresholds: { critical: 5, serious: 10, caution: 20 },\n description: 'Propellant remaining',\n },\n deltaV: {\n label: 'Delta-V',\n icon: 'propulsion-power' as AstroIconName,\n unit: 'm/s',\n precision: 1,\n category: 'propulsion' as PropertyCategory,\n description: 'Available delta-V budget',\n },\n thrustLevel: {\n label: 'Thrust',\n icon: 'propulsion-power' as AstroIconName,\n unit: 'N',\n precision: 2,\n category: 'propulsion' as PropertyCategory,\n description: 'Current thrust output',\n },\n\n // === Navigation ===\n altitude: {\n label: 'Altitude',\n icon: 'altitude' as AstroIconName,\n unit: 'km',\n precision: 1,\n category: 'orbital' as PropertyCategory,\n thresholds: { criticalLow: 200, cautionLow: 250 },\n description: 'Orbital altitude',\n },\n velocity: {\n label: 'Velocity',\n icon: 'altitude' as AstroIconName,\n unit: 'km/s',\n precision: 3,\n category: 'orbital' as PropertyCategory,\n description: 'Orbital velocity',\n },\n inclination: {\n label: 'Inclination',\n icon: 'altitude' as AstroIconName,\n unit: '°',\n precision: 2,\n category: 'orbital' as PropertyCategory,\n description: 'Orbital inclination',\n },\n eccentricity: {\n label: 'Eccentricity',\n icon: 'altitude' as AstroIconName,\n unit: '',\n precision: 6,\n category: 'orbital' as PropertyCategory,\n description: 'Orbital eccentricity',\n },\n\n // === Payload ===\n payloadStatus: {\n label: 'Payload',\n icon: 'payload' as AstroIconName,\n unit: '',\n category: 'payload' as PropertyCategory,\n description: 'Payload operational status',\n },\n storageUsed: {\n label: 'Storage',\n icon: 'hardware' as AstroIconName,\n unit: '%',\n precision: 1,\n category: 'payload' as PropertyCategory,\n thresholds: { critical: 95, serious: 90, caution: 80 },\n description: 'Onboard storage usage',\n },\n\n // === Health ===\n cpuUsage: {\n label: 'CPU',\n icon: 'processor' as AstroIconName,\n unit: '%',\n precision: 1,\n category: 'health' as PropertyCategory,\n thresholds: { critical: 95, serious: 85, caution: 75 },\n description: 'Processor utilization',\n },\n memoryUsage: {\n label: 'Memory',\n icon: 'processor' as AstroIconName,\n unit: '%',\n precision: 1,\n category: 'health' as PropertyCategory,\n thresholds: { critical: 95, serious: 85, caution: 75 },\n description: 'Memory utilization',\n },\n uptime: {\n label: 'Uptime',\n icon: 'mission' as AstroIconName,\n unit: 's',\n precision: 0,\n category: 'health' as PropertyCategory,\n description: 'System uptime',\n },\n\n // === General ===\n count: {\n label: 'Count',\n icon: 'list' as AstroIconName,\n unit: '',\n precision: 0,\n category: 'general' as PropertyCategory,\n description: 'Item count',\n },\n percentage: {\n label: 'Percentage',\n icon: 'info' as AstroIconName,\n unit: '%',\n precision: 1,\n category: 'general' as PropertyCategory,\n description: 'Percentage value',\n },\n duration: {\n label: 'Duration',\n icon: 'schedule' as AstroIconName,\n unit: 's',\n precision: 0,\n category: 'general' as PropertyCategory,\n description: 'Time duration',\n },\n} as const satisfies Record<string, PropertyConfig>;\n\n// =============================================================================\n// Category Icons (for section headers)\n// =============================================================================\n\nexport const CATEGORY_ICONS: Record<PropertyCategory, AstroIconName> = {\n power: 'propulsion-power',\n thermal: 'thermal',\n attitude: 'explore',\n communications: 'antenna',\n propulsion: 'propulsion-power',\n navigation: 'gps-fixed',\n payload: 'payload',\n health: 'favorite',\n orbital: 'altitude',\n general: 'info',\n};\n\nexport const CATEGORY_LABELS: Record<PropertyCategory, string> = {\n power: 'Power',\n thermal: 'Thermal',\n attitude: 'Attitude',\n communications: 'Communications',\n propulsion: 'Propulsion',\n navigation: 'Navigation',\n payload: 'Payload',\n health: 'Health',\n orbital: 'Orbital',\n general: 'General',\n};\n\n// =============================================================================\n// Utility Functions\n// =============================================================================\n\n/**\n * Get property configuration by key\n * Returns preset config or a default config for unknown properties\n */\nexport function getPropertyConfig(key: PropertyKey): PropertyConfig {\n const preset = PROPERTY_PRESETS[key as keyof typeof PROPERTY_PRESETS];\n if (preset) {\n return preset;\n }\n\n // Return default config for unknown properties\n return {\n label: formatPropertyLabel(key),\n icon: 'info',\n unit: '',\n precision: 2,\n category: 'general',\n description: key,\n };\n}\n\n/**\n * Format a property key into a display label (sentence case)\n */\nexport function formatPropertyLabel(key: string): string {\n // Handle camelCase → Sentence case\n const words = key\n .replace(/([A-Z])/g, ' $1')\n .replace(/[_-]/g, ' ')\n .trim()\n .toLowerCase();\n return words.charAt(0).toUpperCase() + words.slice(1);\n}\n\n/**\n * Derive status level from a value and thresholds\n * \n * @param value - Current value\n * @param thresholds - Status thresholds\n * @returns StatusLevel\n * \n * @example\n * ```tsx\n * deriveStatus(75, { caution: 60, critical: 80 }) // 'caution'\n * deriveStatus(25, { criticalLow: 10, cautionLow: 30 }) // 'caution'\n * deriveStatus(50, { caution: 60, critical: 80 }) // 'normal'\n * ```\n */\nexport function deriveStatus(\n value: number | undefined | null,\n thresholds?: StatusThresholds\n): StatusLevel {\n if (value === undefined || value === null || !Number.isFinite(value)) {\n return 'off';\n }\n\n if (!thresholds) {\n return 'normal';\n }\n\n // Check high thresholds (value >= threshold is bad)\n if (thresholds.critical !== undefined && value >= thresholds.critical) {\n return 'critical';\n }\n if (thresholds.serious !== undefined && value >= thresholds.serious) {\n return 'serious';\n }\n if (thresholds.caution !== undefined && value >= thresholds.caution) {\n return 'caution';\n }\n\n // Check low thresholds (value <= threshold is bad)\n if (thresholds.criticalLow !== undefined && value <= thresholds.criticalLow) {\n return 'critical';\n }\n if (thresholds.seriousLow !== undefined && value <= thresholds.seriousLow) {\n return 'serious';\n }\n if (thresholds.cautionLow !== undefined && value <= thresholds.cautionLow) {\n return 'caution';\n }\n\n return 'normal';\n}\n\n/**\n * Derive status for battery specifically (low is bad)\n */\nexport function deriveBatteryStatus(level: number | undefined): StatusLevel {\n if (level === undefined || level === null) return 'off';\n if (level <= 10) return 'critical';\n if (level <= 20) return 'serious';\n if (level <= 30) return 'caution';\n return 'normal';\n}\n\n/**\n * Format a value with its property config\n */\nexport function formatPropertyValue(\n value: number | undefined | null,\n config: PropertyConfig\n): string {\n if (value === undefined || value === null || !Number.isFinite(value)) {\n return '--';\n }\n\n if (config.format) {\n return config.format(value);\n }\n\n const precision = config.precision ?? 2;\n const formatted = value.toFixed(precision);\n const unit = config.unit ?? '';\n \n return unit ? `${formatted}${unit.startsWith('°') || unit.startsWith('%') ? '' : ' '}${unit}` : formatted;\n}\n\n/**\n * Create a custom property config by merging with a preset\n */\nexport function createPropertyConfig(\n baseKey: PropertyKey,\n overrides: Partial<PropertyConfig>\n): PropertyConfig {\n const base = getPropertyConfig(baseKey);\n return { ...base, ...overrides };\n}\n\n/**\n * Get all properties in a category\n */\nexport function getPropertiesByCategory(category: PropertyCategory): Array<{ key: string; config: PropertyConfig }> {\n return Object.entries(PROPERTY_PRESETS)\n .filter(([_, config]) => config.category === category)\n .map(([key, config]) => ({ key, config }));\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"propertyConfig.js","names":[],"sources":["../../../../src/react/core/data/propertyConfig.ts"],"sourcesContent":["/**\r\n * @zendir/ui - Property Configuration System\r\n *\r\n * Enterprise-grade property-to-icon/status/unit mapping system.\r\n * Provides automatic icon, status, and formatting for common telemetry properties.\r\n *\r\n * AstroUXDS Compliance:\r\n * - Uses official Astro icon names\r\n * - Status colors per AstroUXDS status system\r\n * - Dual-coding (color + shape) for accessibility\r\n *\r\n * Features:\r\n * - Auto-derive status from value + thresholds\r\n * - Contextual icons for space operations properties\r\n * - Unit formatting with SI prefixes\r\n * - Extensible configuration\r\n *\r\n * @example\r\n * ```tsx\r\n * import { getPropertyConfig, deriveStatus, PROPERTY_PRESETS } from '@zendir/ui';\r\n *\r\n * // Get config for a known property\r\n * const tempConfig = getPropertyConfig('temperature');\r\n * // { icon: 'thermal', unit: '°C', thresholds: { caution: 60, critical: 80 }, ... }\r\n *\r\n * // Derive status from value\r\n * const status = deriveStatus(75, tempConfig.thresholds);\r\n * // 'caution'\r\n * ```\r\n */\r\n\r\nimport type { StatusLevel } from \"../../utils\";\r\nimport type { AstroIconName } from \"../display/AstroIcon\";\r\n\r\n// =============================================================================\r\n// Types\r\n// =============================================================================\r\n\r\n/**\r\n * Threshold configuration for automatic status derivation\r\n * Values are compared: value >= threshold triggers that status (high thresholds)\r\n * or value <= threshold triggers that status (low thresholds)\r\n */\r\nexport interface StatusThresholds {\r\n /** Value at or above which status becomes 'critical' (high is bad) */\r\n critical?: number;\r\n /** Value at or above which status becomes 'serious' (high is bad) */\r\n serious?: number;\r\n /** Value at or above which status becomes 'caution' (high is bad) */\r\n caution?: number;\r\n /** Value at or below which status becomes 'caution' (low is bad) */\r\n cautionLow?: number;\r\n /** Value at or below which status becomes 'serious' (low is bad) */\r\n seriousLow?: number;\r\n /** Value at or below which status becomes 'critical' (low is bad) */\r\n criticalLow?: number;\r\n}\r\n\r\n/**\r\n * Complete property configuration\r\n */\r\nexport interface PropertyConfig {\r\n /** Display name (sentence case per AstroUXDS) */\r\n label: string;\r\n /** Astro icon name */\r\n icon: AstroIconName;\r\n /** Unit of measurement */\r\n unit?: string;\r\n /** Precision for number formatting */\r\n precision?: number;\r\n /** Status thresholds for auto-derivation */\r\n thresholds?: StatusThresholds;\r\n /** Category for grouping */\r\n category?: PropertyCategory;\r\n /** Description for tooltips */\r\n description?: string;\r\n /** Format function override */\r\n format?: (value: number) => string;\r\n}\r\n\r\n/**\r\n * Property categories for organization\r\n */\r\nexport type PropertyCategory =\r\n | \"power\"\r\n | \"thermal\"\r\n | \"attitude\"\r\n | \"communications\"\r\n | \"propulsion\"\r\n | \"navigation\"\r\n | \"payload\"\r\n | \"health\"\r\n | \"orbital\"\r\n | \"general\";\r\n\r\n/**\r\n * Property key - either a preset name or custom string\r\n */\r\nexport type PropertyKey = keyof typeof PROPERTY_PRESETS | (string & {});\r\n\r\n// =============================================================================\r\n// Property Presets\r\n// =============================================================================\r\n\r\n/**\r\n * Predefined property configurations for common space operations telemetry\r\n *\r\n * These provide sensible defaults that can be overridden per-use.\r\n */\r\nexport const PROPERTY_PRESETS = {\r\n // === Power System ===\r\n battery: {\r\n label: \"Battery\",\r\n icon: \"battery-full\" as AstroIconName,\r\n unit: \"%\",\r\n precision: 1,\r\n category: \"power\" as PropertyCategory,\r\n // Low values are bad for battery (use *Low thresholds)\r\n thresholds: { criticalLow: 10, seriousLow: 20, cautionLow: 30 },\r\n description: \"Battery state of charge\",\r\n },\r\n voltage: {\r\n label: \"Voltage\",\r\n icon: \"propulsion-power\" as AstroIconName,\r\n unit: \"V\",\r\n precision: 2,\r\n category: \"power\" as PropertyCategory,\r\n thresholds: { criticalLow: 24, cautionLow: 26 },\r\n description: \"Bus voltage\",\r\n },\r\n current: {\r\n label: \"Current\",\r\n icon: \"propulsion-power\" as AstroIconName,\r\n unit: \"A\",\r\n precision: 2,\r\n category: \"power\" as PropertyCategory,\r\n description: \"Current draw\",\r\n },\r\n power: {\r\n label: \"Power\",\r\n icon: \"propulsion-power\" as AstroIconName,\r\n unit: \"W\",\r\n precision: 1,\r\n category: \"power\" as PropertyCategory,\r\n description: \"Power consumption or generation\",\r\n },\r\n solarPower: {\r\n label: \"Solar\",\r\n icon: \"solar\" as AstroIconName,\r\n unit: \"W\",\r\n precision: 1,\r\n category: \"power\" as PropertyCategory,\r\n description: \"Solar array output\",\r\n },\r\n load: {\r\n label: \"Load\",\r\n icon: \"propulsion-power\" as AstroIconName,\r\n unit: \"W\",\r\n precision: 1,\r\n category: \"power\" as PropertyCategory,\r\n description: \"Power load\",\r\n },\r\n\r\n // === Thermal ===\r\n temperature: {\r\n label: \"Temperature\",\r\n icon: \"thermal\" as AstroIconName,\r\n unit: \"°C\",\r\n precision: 1,\r\n category: \"thermal\" as PropertyCategory,\r\n thresholds: {\r\n critical: 80,\r\n serious: 70,\r\n caution: 60,\r\n cautionLow: -20,\r\n criticalLow: -40,\r\n },\r\n description: \"Component temperature\",\r\n },\r\n heater: {\r\n label: \"Heater\",\r\n icon: \"thermal\" as AstroIconName,\r\n unit: \"\",\r\n category: \"thermal\" as PropertyCategory,\r\n description: \"Heater status\",\r\n },\r\n\r\n // === Attitude ===\r\n roll: {\r\n label: \"Roll\",\r\n icon: \"explore\" as AstroIconName,\r\n unit: \"°\",\r\n precision: 2,\r\n category: \"attitude\" as PropertyCategory,\r\n thresholds: { critical: 45, caution: 30 },\r\n description: \"Roll angle\",\r\n },\r\n pitch: {\r\n label: \"Pitch\",\r\n icon: \"explore\" as AstroIconName,\r\n unit: \"°\",\r\n precision: 2,\r\n category: \"attitude\" as PropertyCategory,\r\n thresholds: { critical: 45, caution: 30 },\r\n description: \"Pitch angle\",\r\n },\r\n yaw: {\r\n label: \"Yaw\",\r\n icon: \"explore\" as AstroIconName,\r\n unit: \"°\",\r\n precision: 2,\r\n category: \"attitude\" as PropertyCategory,\r\n thresholds: { critical: 45, caution: 30 },\r\n description: \"Yaw angle\",\r\n },\r\n pointingError: {\r\n label: \"Pointing error\",\r\n icon: \"explore\" as AstroIconName,\r\n unit: \"°\",\r\n precision: 3,\r\n category: \"attitude\" as PropertyCategory,\r\n thresholds: { critical: 1.0, serious: 0.5, caution: 0.1 },\r\n description: \"Attitude pointing error\",\r\n },\r\n angularVelocity: {\r\n label: \"Angular velocity\",\r\n icon: \"explore\" as AstroIconName,\r\n unit: \"°/s\",\r\n precision: 3,\r\n category: \"attitude\" as PropertyCategory,\r\n thresholds: { critical: 5.0, caution: 2.0 },\r\n description: \"Rotation rate\",\r\n },\r\n\r\n // === Communications ===\r\n signalStrength: {\r\n label: \"Signal\",\r\n icon: \"antenna-receive\" as AstroIconName,\r\n unit: \"dBm\",\r\n precision: 1,\r\n category: \"communications\" as PropertyCategory,\r\n thresholds: { criticalLow: -100, cautionLow: -85 },\r\n description: \"Received signal strength\",\r\n },\r\n dataRate: {\r\n label: \"Data rate\",\r\n icon: \"antenna-transmit\" as AstroIconName,\r\n unit: \"Mbps\",\r\n precision: 2,\r\n category: \"communications\" as PropertyCategory,\r\n description: \"Communication data rate\",\r\n },\r\n packetLoss: {\r\n label: \"Packet loss\",\r\n icon: \"netcom\" as AstroIconName,\r\n unit: \"%\",\r\n precision: 2,\r\n category: \"communications\" as PropertyCategory,\r\n thresholds: { critical: 10, serious: 5, caution: 1 },\r\n description: \"Communication packet loss rate\",\r\n },\r\n snr: {\r\n label: \"SNR\",\r\n icon: \"antenna\" as AstroIconName,\r\n unit: \"dB\",\r\n precision: 1,\r\n category: \"communications\" as PropertyCategory,\r\n thresholds: { criticalLow: 5, cautionLow: 10 },\r\n description: \"Signal-to-noise ratio\",\r\n },\r\n queue: {\r\n label: \"Queue\",\r\n icon: \"netcom\" as AstroIconName,\r\n unit: \"pkts\",\r\n precision: 0,\r\n category: \"communications\" as PropertyCategory,\r\n thresholds: { critical: 1000, caution: 500 },\r\n description: \"Packet queue depth\",\r\n },\r\n\r\n // === Propulsion ===\r\n fuelLevel: {\r\n label: \"Fuel\",\r\n icon: \"propulsion-power\" as AstroIconName,\r\n unit: \"%\",\r\n precision: 1,\r\n category: \"propulsion\" as PropertyCategory,\r\n thresholds: { critical: 5, serious: 10, caution: 20 },\r\n description: \"Propellant remaining\",\r\n },\r\n deltaV: {\r\n label: \"Delta-V\",\r\n icon: \"propulsion-power\" as AstroIconName,\r\n unit: \"m/s\",\r\n precision: 1,\r\n category: \"propulsion\" as PropertyCategory,\r\n description: \"Available delta-V budget\",\r\n },\r\n thrustLevel: {\r\n label: \"Thrust\",\r\n icon: \"propulsion-power\" as AstroIconName,\r\n unit: \"N\",\r\n precision: 2,\r\n category: \"propulsion\" as PropertyCategory,\r\n description: \"Current thrust output\",\r\n },\r\n\r\n // === Navigation ===\r\n altitude: {\r\n label: \"Altitude\",\r\n icon: \"altitude\" as AstroIconName,\r\n unit: \"km\",\r\n precision: 1,\r\n category: \"orbital\" as PropertyCategory,\r\n thresholds: { criticalLow: 200, cautionLow: 250 },\r\n description: \"Orbital altitude\",\r\n },\r\n velocity: {\r\n label: \"Velocity\",\r\n icon: \"altitude\" as AstroIconName,\r\n unit: \"km/s\",\r\n precision: 3,\r\n category: \"orbital\" as PropertyCategory,\r\n description: \"Orbital velocity\",\r\n },\r\n inclination: {\r\n label: \"Inclination\",\r\n icon: \"altitude\" as AstroIconName,\r\n unit: \"°\",\r\n precision: 2,\r\n category: \"orbital\" as PropertyCategory,\r\n description: \"Orbital inclination\",\r\n },\r\n eccentricity: {\r\n label: \"Eccentricity\",\r\n icon: \"altitude\" as AstroIconName,\r\n unit: \"\",\r\n precision: 6,\r\n category: \"orbital\" as PropertyCategory,\r\n description: \"Orbital eccentricity\",\r\n },\r\n\r\n // === Payload ===\r\n payloadStatus: {\r\n label: \"Payload\",\r\n icon: \"payload\" as AstroIconName,\r\n unit: \"\",\r\n category: \"payload\" as PropertyCategory,\r\n description: \"Payload operational status\",\r\n },\r\n storageUsed: {\r\n label: \"Storage\",\r\n icon: \"hardware\" as AstroIconName,\r\n unit: \"%\",\r\n precision: 1,\r\n category: \"payload\" as PropertyCategory,\r\n thresholds: { critical: 95, serious: 90, caution: 80 },\r\n description: \"Onboard storage usage\",\r\n },\r\n\r\n // === Health ===\r\n cpuUsage: {\r\n label: \"CPU\",\r\n icon: \"processor\" as AstroIconName,\r\n unit: \"%\",\r\n precision: 1,\r\n category: \"health\" as PropertyCategory,\r\n thresholds: { critical: 95, serious: 85, caution: 75 },\r\n description: \"Processor utilization\",\r\n },\r\n memoryUsage: {\r\n label: \"Memory\",\r\n icon: \"processor\" as AstroIconName,\r\n unit: \"%\",\r\n precision: 1,\r\n category: \"health\" as PropertyCategory,\r\n thresholds: { critical: 95, serious: 85, caution: 75 },\r\n description: \"Memory utilization\",\r\n },\r\n uptime: {\r\n label: \"Uptime\",\r\n icon: \"mission\" as AstroIconName,\r\n unit: \"s\",\r\n precision: 0,\r\n category: \"health\" as PropertyCategory,\r\n description: \"System uptime\",\r\n },\r\n\r\n // === General ===\r\n count: {\r\n label: \"Count\",\r\n icon: \"list\" as AstroIconName,\r\n unit: \"\",\r\n precision: 0,\r\n category: \"general\" as PropertyCategory,\r\n description: \"Item count\",\r\n },\r\n percentage: {\r\n label: \"Percentage\",\r\n icon: \"info\" as AstroIconName,\r\n unit: \"%\",\r\n precision: 1,\r\n category: \"general\" as PropertyCategory,\r\n description: \"Percentage value\",\r\n },\r\n duration: {\r\n label: \"Duration\",\r\n icon: \"schedule\" as AstroIconName,\r\n unit: \"s\",\r\n precision: 0,\r\n category: \"general\" as PropertyCategory,\r\n description: \"Time duration\",\r\n },\r\n} as const satisfies Record<string, PropertyConfig>;\r\n\r\n// =============================================================================\r\n// Category Icons (for section headers)\r\n// =============================================================================\r\n\r\nexport const CATEGORY_ICONS: Record<PropertyCategory, AstroIconName> = {\r\n power: \"propulsion-power\",\r\n thermal: \"thermal\",\r\n attitude: \"explore\",\r\n communications: \"antenna\",\r\n propulsion: \"propulsion-power\",\r\n navigation: \"gps-fixed\",\r\n payload: \"payload\",\r\n health: \"favorite\",\r\n orbital: \"altitude\",\r\n general: \"info\",\r\n};\r\n\r\nexport const CATEGORY_LABELS: Record<PropertyCategory, string> = {\r\n power: \"Power\",\r\n thermal: \"Thermal\",\r\n attitude: \"Attitude\",\r\n communications: \"Communications\",\r\n propulsion: \"Propulsion\",\r\n navigation: \"Navigation\",\r\n payload: \"Payload\",\r\n health: \"Health\",\r\n orbital: \"Orbital\",\r\n general: \"General\",\r\n};\r\n\r\n// =============================================================================\r\n// Utility Functions\r\n// =============================================================================\r\n\r\n/**\r\n * Get property configuration by key\r\n * Returns preset config or a default config for unknown properties\r\n */\r\nexport function getPropertyConfig(key: PropertyKey): PropertyConfig {\r\n const preset = PROPERTY_PRESETS[key as keyof typeof PROPERTY_PRESETS];\r\n if (preset) {\r\n return preset;\r\n }\r\n\r\n // Return default config for unknown properties\r\n return {\r\n label: formatPropertyLabel(key),\r\n icon: \"info\",\r\n unit: \"\",\r\n precision: 2,\r\n category: \"general\",\r\n description: key,\r\n };\r\n}\r\n\r\n/**\r\n * Format a property key into a display label (sentence case)\r\n */\r\nexport function formatPropertyLabel(key: string): string {\r\n // Handle camelCase → Sentence case\r\n const words = key\r\n .replace(/([A-Z])/g, \" $1\")\r\n .replace(/[_-]/g, \" \")\r\n .trim()\r\n .toLowerCase();\r\n return words.charAt(0).toUpperCase() + words.slice(1);\r\n}\r\n\r\n/**\r\n * Derive status level from a value and thresholds\r\n *\r\n * @param value - Current value\r\n * @param thresholds - Status thresholds\r\n * @returns StatusLevel\r\n *\r\n * @example\r\n * ```tsx\r\n * deriveStatus(75, { caution: 60, critical: 80 }) // 'caution'\r\n * deriveStatus(25, { criticalLow: 10, cautionLow: 30 }) // 'caution'\r\n * deriveStatus(50, { caution: 60, critical: 80 }) // 'normal'\r\n * ```\r\n */\r\nexport function deriveStatus(\r\n value: number | undefined | null,\r\n thresholds?: StatusThresholds,\r\n): StatusLevel {\r\n if (value === undefined || value === null || !Number.isFinite(value)) {\r\n return \"off\";\r\n }\r\n\r\n if (!thresholds) {\r\n return \"normal\";\r\n }\r\n\r\n // Check high thresholds (value >= threshold is bad)\r\n if (thresholds.critical !== undefined && value >= thresholds.critical) {\r\n return \"critical\";\r\n }\r\n if (thresholds.serious !== undefined && value >= thresholds.serious) {\r\n return \"serious\";\r\n }\r\n if (thresholds.caution !== undefined && value >= thresholds.caution) {\r\n return \"caution\";\r\n }\r\n\r\n // Check low thresholds (value <= threshold is bad)\r\n if (thresholds.criticalLow !== undefined && value <= thresholds.criticalLow) {\r\n return \"critical\";\r\n }\r\n if (thresholds.seriousLow !== undefined && value <= thresholds.seriousLow) {\r\n return \"serious\";\r\n }\r\n if (thresholds.cautionLow !== undefined && value <= thresholds.cautionLow) {\r\n return \"caution\";\r\n }\r\n\r\n return \"normal\";\r\n}\r\n\r\n/**\r\n * Derive status for battery specifically (low is bad)\r\n */\r\nexport function deriveBatteryStatus(level: number | undefined): StatusLevel {\r\n if (level === undefined || level === null) return \"off\";\r\n if (level <= 10) return \"critical\";\r\n if (level <= 20) return \"serious\";\r\n if (level <= 30) return \"caution\";\r\n return \"normal\";\r\n}\r\n\r\n/**\r\n * Format a value with its property config\r\n */\r\nexport function formatPropertyValue(\r\n value: number | undefined | null,\r\n config: PropertyConfig,\r\n): string {\r\n if (value === undefined || value === null || !Number.isFinite(value)) {\r\n return \"--\";\r\n }\r\n\r\n if (config.format) {\r\n return config.format(value);\r\n }\r\n\r\n const precision = config.precision ?? 2;\r\n const formatted = value.toFixed(precision);\r\n const unit = config.unit ?? \"\";\r\n\r\n return unit\r\n ? `${formatted}${unit.startsWith(\"°\") || unit.startsWith(\"%\") ? \"\" : \" \"}${unit}`\r\n : formatted;\r\n}\r\n\r\n/**\r\n * Create a custom property config by merging with a preset\r\n */\r\nexport function createPropertyConfig(\r\n baseKey: PropertyKey,\r\n overrides: Partial<PropertyConfig>,\r\n): PropertyConfig {\r\n const base = getPropertyConfig(baseKey);\r\n return { ...base, ...overrides };\r\n}\r\n\r\n/**\r\n * Get all properties in a category\r\n */\r\nexport function getPropertiesByCategory(\r\n category: PropertyCategory,\r\n): Array<{ key: string; config: PropertyConfig }> {\r\n return Object.entries(PROPERTY_PRESETS)\r\n .filter(([_, config]) => config.category === category)\r\n .map(([key, config]) => ({ key, config }));\r\n}\r\n"],"mappings":"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"}
@@ -1,11 +1,10 @@
1
1
  import { default as React } from 'react';
2
-
3
2
  /**
4
3
  * All official Astro UXD icon names
5
4
  * @see https://www.astrouxds.com/components/icon-library/
6
5
  */
7
- export type AstroIconName = 'altitude' | 'antenna' | 'antenna-off' | 'antenna-receive' | 'antenna-transmit' | 'equipment' | 'hardware' | 'mission' | 'netcom' | 'payload' | 'processor' | 'processor-alt' | 'propulsion-power' | 'satellite-off' | 'satellite-receive' | 'satellite-transmit' | 'solar' | 'thermal' | 'settings' | 'search' | 'home' | 'info' | 'help' | 'delete' | 'edit' | 'lock' | 'lock-open' | 'visibility' | 'visibility-off' | 'refresh' | 'sync' | 'download' | 'upload' | 'fullscreen' | 'fullscreen-exit' | 'zoom-in' | 'zoom-out' | 'schedule' | 'timeline' | 'today' | 'event' | 'bookmark' | 'favorite' | 'star' | 'check-circle' | 'done' | 'done-all' | 'print' | 'open-in-new' | 'launch' | 'power-settings-new' | 'history' | 'cached' | 'build' | 'code' | 'dns' | 'language' | 'input' | 'label' | 'list' | 'track-changes' | 'verified-user' | 'work' | 'add-alert' | 'error' | 'error-outline' | 'notification-important' | 'warning' | 'play-arrow' | 'pause' | 'stop' | 'skip-next' | 'skip-previous' | 'fast-forward' | 'fast-rewind' | 'replay' | 'loop' | 'shuffle' | 'volume-up' | 'volume-down' | 'volume-off' | 'volume-mute' | 'mic' | 'mic-off' | 'videocam' | 'videocam-off' | 'movie' | 'music-note' | 'equalizer' | 'library-music' | 'queue-music' | 'subscriptions' | 'fiber-new' | 'fiber-manual-record' | 'fiber-smart-record' | 'call' | 'call-end' | 'call-made' | 'call-received' | 'call-missed' | 'call-split' | 'chat' | 'chat-bubble' | 'comment' | 'contacts' | 'dialer-sip' | 'email' | 'forum' | 'import-export' | 'live-help' | 'location-off' | 'location-on' | 'message' | 'phone' | 'phonelink-erase' | 'phonelink-lock' | 'phonelink-ring' | 'portable-wifi-off' | 'present-to-all' | 'ring-volume' | 'screen-share' | 'speaker-phone' | 'stay-primary-landscape' | 'stay-primary-portrait' | 'stop-screen-share' | 'swap-calls' | 'textsms' | 'voicemail' | 'vpn-key' | 'add' | 'add-box' | 'add-circle' | 'add-circle-outline' | 'archive' | 'backspace' | 'block' | 'clear' | 'content-copy' | 'content-cut' | 'content-paste' | 'create' | 'drafts' | 'filter-list' | 'flag' | 'forward' | 'gesture' | 'inbox' | 'link' | 'link-off' | 'low-priority' | 'mail' | 'markunread' | 'move-to-inbox' | 'next-week' | 'redo' | 'remove' | 'remove-circle' | 'remove-circle-outline' | 'reply' | 'reply-all' | 'report' | 'save' | 'select-all' | 'send' | 'sort' | 'text-format' | 'unarchive' | 'undo' | 'weekend' | 'access-alarm' | 'access-alarms' | 'access-time' | 'add-alarm' | 'airplanemode-active' | 'airplanemode-inactive' | 'battery-20' | 'battery-30' | 'battery-50' | 'battery-60' | 'battery-80' | 'battery-90' | 'battery-alert' | 'battery-charging-20' | 'battery-charging-30' | 'battery-charging-50' | 'battery-charging-60' | 'battery-charging-80' | 'battery-charging-90' | 'battery-charging-full' | 'battery-full' | 'battery-std' | 'battery-unknown' | 'bluetooth' | 'bluetooth-connected' | 'bluetooth-disabled' | 'bluetooth-searching' | 'brightness-auto' | 'brightness-high' | 'brightness-low' | 'brightness-medium' | 'data-usage' | 'developer-mode' | 'devices' | 'dvr' | 'gps-fixed' | 'gps-not-fixed' | 'gps-off' | 'graphic-eq' | 'location-disabled' | 'location-searching' | 'network-cell' | 'network-wifi' | 'nfc' | 'screen-lock-landscape' | 'screen-lock-portrait' | 'screen-lock-rotation' | 'screen-rotation' | 'sd-storage' | 'settings-system-daydream' | 'signal-cellular-0-bar' | 'signal-cellular-1-bar' | 'signal-cellular-2-bar' | 'signal-cellular-3-bar' | 'signal-cellular-4-bar' | 'signal-cellular-connected-no-internet-0-bar' | 'signal-cellular-connected-no-internet-1-bar' | 'signal-cellular-connected-no-internet-2-bar' | 'signal-cellular-connected-no-internet-3-bar' | 'signal-cellular-connected-no-internet-4-bar' | 'signal-cellular-no-sim' | 'signal-cellular-null' | 'signal-cellular-off' | 'signal-wifi-0-bar' | 'signal-wifi-1-bar' | 'signal-wifi-1-bar-lock' | 'signal-wifi-2-bar' | 'signal-wifi-2-bar-lock' | 'signal-wifi-3-bar' | 'signal-wifi-3-bar-lock' | 'signal-wifi-4-bar' | 'signal-wifi-4-bar-lock' | 'signal-wifi-off' | 'storage' | 'usb' | 'wallpaper' | 'widgets' | 'wifi-lock' | 'wifi-tethering' | 'attach-file' | 'attach-money' | 'border-all' | 'border-bottom' | 'border-clear' | 'border-color' | 'border-horizontal' | 'border-inner' | 'border-left' | 'border-outer' | 'border-right' | 'border-style' | 'border-top' | 'border-vertical' | 'bubble-chart' | 'drag-handle' | 'format-align-center' | 'format-align-justify' | 'format-align-left' | 'format-align-right' | 'format-bold' | 'format-clear' | 'format-color-fill' | 'format-color-reset' | 'format-color-text' | 'format-indent-decrease' | 'format-indent-increase' | 'format-italic' | 'format-line-spacing' | 'format-list-bulleted' | 'format-list-numbered' | 'format-paint' | 'format-quote' | 'format-shapes' | 'format-size' | 'format-strikethrough' | 'format-textdirection-l-to-r' | 'format-textdirection-r-to-l' | 'format-underlined' | 'functions' | 'highlight' | 'insert-chart' | 'insert-comment' | 'insert-drive-file' | 'insert-emoticon' | 'insert-invitation' | 'insert-link' | 'insert-photo' | 'linear-scale' | 'merge-type' | 'mode-comment' | 'mode-edit' | 'monetization-on' | 'money-off' | 'multiline-chart' | 'pie-chart' | 'pie-chart-outlined' | 'publish' | 'short-text' | 'show-chart' | 'space-bar' | 'strikethrough-s' | 'table-chart' | 'text-fields' | 'title' | 'vertical-align-bottom' | 'vertical-align-center' | 'vertical-align-top' | 'wrap-text' | 'attachment' | 'cloud' | 'cloud-circle' | 'cloud-done' | 'cloud-download' | 'cloud-off' | 'cloud-queue' | 'cloud-upload' | 'create-new-folder' | 'file-download' | 'file-upload' | 'folder' | 'folder-open' | 'folder-shared' | 'cast' | 'cast-connected' | 'computer' | 'desktop-mac' | 'desktop-windows' | 'developer-board' | 'device-hub' | 'devices-other' | 'dock' | 'gamepad' | 'headset' | 'headset-mic' | 'keyboard' | 'keyboard-arrow-down' | 'keyboard-arrow-left' | 'keyboard-arrow-right' | 'keyboard-arrow-up' | 'keyboard-backspace' | 'keyboard-capslock' | 'keyboard-hide' | 'keyboard-return' | 'keyboard-tab' | 'keyboard-voice' | 'laptop' | 'laptop-chromebook' | 'laptop-mac' | 'laptop-windows' | 'memory' | 'mouse' | 'phone-android' | 'phone-iphone' | 'phonelink' | 'phonelink-off' | 'power-input' | 'router' | 'scanner' | 'security' | 'sim-card' | 'smartphone' | 'speaker' | 'speaker-group' | 'tablet' | 'tablet-android' | 'tablet-mac' | 'toys' | 'tv' | 'videogame-asset' | 'watch' | 'add-a-photo' | 'add-to-photos' | 'adjust' | 'assistant' | 'assistant-photo' | 'audiotrack' | 'blur-circular' | 'blur-linear' | 'blur-off' | 'blur-on' | 'brightness-1' | 'brightness-2' | 'brightness-3' | 'brightness-4' | 'brightness-5' | 'brightness-6' | 'brightness-7' | 'broken-image' | 'brush' | 'burst-mode' | 'camera' | 'camera-alt' | 'camera-front' | 'camera-rear' | 'camera-roll' | 'center-focus-strong' | 'center-focus-weak' | 'collections' | 'collections-bookmark' | 'color-lens' | 'colorize' | 'compare' | 'control-point' | 'control-point-duplicate' | 'crop' | 'crop-16-9' | 'crop-3-2' | 'crop-5-4' | 'crop-7-5' | 'crop-din' | 'crop-free' | 'crop-landscape' | 'crop-original' | 'crop-portrait' | 'crop-rotate' | 'crop-square' | 'dehaze' | 'details' | 'edit' | 'exposure' | 'exposure-neg-1' | 'exposure-neg-2' | 'exposure-plus-1' | 'exposure-plus-2' | 'exposure-zero' | 'filter' | 'filter-1' | 'filter-2' | 'filter-3' | 'filter-4' | 'filter-5' | 'filter-6' | 'filter-7' | 'filter-8' | 'filter-9' | 'filter-9-plus' | 'filter-b-and-w' | 'filter-center-focus' | 'filter-drama' | 'filter-frames' | 'filter-hdr' | 'filter-none' | 'filter-tilt-shift' | 'filter-vintage' | 'flare' | 'flash-auto' | 'flash-off' | 'flash-on' | 'flip' | 'gradient' | 'grain' | 'grid-off' | 'grid-on' | 'hdr-off' | 'hdr-on' | 'hdr-strong' | 'hdr-weak' | 'healing' | 'image' | 'image-aspect-ratio' | 'iso' | 'landscape' | 'leak-add' | 'leak-remove' | 'lens' | 'linked-camera' | 'looks' | 'looks-3' | 'looks-4' | 'looks-5' | 'looks-6' | 'looks-one' | 'looks-two' | 'loupe' | 'monochrome-photos' | 'movie-creation' | 'movie-filter' | 'music-note' | 'nature' | 'nature-people' | 'navigate-before' | 'navigate-next' | 'palette' | 'panorama' | 'panorama-fish-eye' | 'panorama-horizontal' | 'panorama-vertical' | 'panorama-wide-angle' | 'photo' | 'photo-album' | 'photo-camera' | 'photo-filter' | 'photo-library' | 'photo-size-select-actual' | 'photo-size-select-large' | 'photo-size-select-small' | 'picture-as-pdf' | 'portrait' | 'remove-red-eye' | 'rotate-90-degrees-ccw' | 'rotate-left' | 'rotate-right' | 'slideshow' | 'straighten' | 'style' | 'switch-camera' | 'switch-video' | 'tag-faces' | 'texture' | 'timelapse' | 'timer' | 'timer-10' | 'timer-3' | 'timer-off' | 'tonality' | 'transform' | 'tune' | 'view-comfy' | 'view-compact' | 'vignette' | 'wb-auto' | 'wb-cloudy' | 'wb-incandescent' | 'wb-iridescent' | 'wb-sunny' | 'add-location' | 'beenhere' | 'directions' | 'directions-bike' | 'directions-boat' | 'directions-bus' | 'directions-car' | 'directions-railway' | 'directions-run' | 'directions-subway' | 'directions-transit' | 'directions-walk' | 'edit-location' | 'ev-station' | 'explore' | 'flight' | 'hotel' | 'layers' | 'layers-clear' | 'local-activity' | 'local-airport' | 'local-atm' | 'local-bar' | 'local-cafe' | 'local-car-wash' | 'local-convenience-store' | 'local-dining' | 'local-drink' | 'local-florist' | 'local-gas-station' | 'local-grocery-store' | 'local-hospital' | 'local-hotel' | 'local-laundry-service' | 'local-library' | 'local-mall' | 'local-movies' | 'local-offer' | 'local-parking' | 'local-pharmacy' | 'local-phone' | 'local-pizza' | 'local-play' | 'local-post-office' | 'local-printshop' | 'local-see' | 'local-shipping' | 'local-taxi' | 'map' | 'my-location' | 'navigation' | 'near-me' | 'person-pin' | 'person-pin-circle' | 'pin-drop' | 'place' | 'rate-review' | 'restaurant' | 'restaurant-menu' | 'satellite' | 'store-mall-directory' | 'streetview' | 'subway' | 'terrain' | 'traffic' | 'train' | 'tram' | 'transfer-within-a-station' | 'zoom-out-map' | 'apps' | 'arrow-back' | 'arrow-downward' | 'arrow-drop-down' | 'arrow-drop-down-circle' | 'arrow-drop-up' | 'arrow-forward' | 'arrow-upward' | 'cancel' | 'check' | 'chevron-left' | 'chevron-right' | 'close' | 'expand-less' | 'expand-more' | 'first-page' | 'fullscreen' | 'fullscreen-exit' | 'last-page' | 'menu' | 'more-horiz' | 'more-vert' | 'refresh' | 'subdirectory-arrow-left' | 'subdirectory-arrow-right' | 'unfold-less' | 'unfold-more' | 'adb' | 'airline-seat-flat' | 'airline-seat-flat-angled' | 'airline-seat-individual-suite' | 'airline-seat-legroom-extra' | 'airline-seat-legroom-normal' | 'airline-seat-legroom-reduced' | 'airline-seat-recline-extra' | 'airline-seat-recline-normal' | 'bluetooth-audio' | 'confirmation-number' | 'disc-full' | 'do-not-disturb' | 'do-not-disturb-alt' | 'do-not-disturb-off' | 'do-not-disturb-on' | 'drive-eta' | 'enhanced-encryption' | 'event-available' | 'event-busy' | 'event-note' | 'folder-special' | 'live-tv' | 'mms' | 'more' | 'network-check' | 'network-locked' | 'no-encryption' | 'ondemand-video' | 'personal-video' | 'phone-bluetooth-speaker' | 'phone-forwarded' | 'phone-in-talk' | 'phone-locked' | 'phone-missed' | 'phone-paused' | 'power' | 'power-off' | 'priority-high' | 'sd-card' | 'sim-card-alert' | 'sms' | 'sms-failed' | 'sync' | 'sync-disabled' | 'sync-problem' | 'system-update' | 'tap-and-play' | 'time-to-leave' | 'vibration' | 'voice-chat' | 'vpn-lock' | 'wc' | 'wifi' | 'wifi-off' | 'ac-unit' | 'airport-shuttle' | 'all-inclusive' | 'beach-access' | 'business-center' | 'casino' | 'child-care' | 'child-friendly' | 'fitness-center' | 'free-breakfast' | 'golf-course' | 'hot-tub' | 'kitchen' | 'pool' | 'room-service' | 'rv-hookup' | 'smoke-free' | 'smoking-rooms' | 'spa' | 'cake' | 'domain' | 'group' | 'group-add' | 'location-city' | 'mood' | 'mood-bad' | 'notifications' | 'notifications-active' | 'notifications-none' | 'notifications-off' | 'notifications-paused' | 'pages' | 'party-mode' | 'people' | 'people-outline' | 'person' | 'person-add' | 'person-outline' | 'plus-one' | 'poll' | 'public' | 'school' | 'sentiment-dissatisfied' | 'sentiment-neutral' | 'sentiment-satisfied' | 'sentiment-very-dissatisfied' | 'sentiment-very-satisfied' | 'share' | 'whatshot' | 'check-box' | 'check-box-outline-blank' | 'indeterminate-check-box' | 'radio-button-checked' | 'radio-button-unchecked' | 'star' | 'star-border' | 'star-half' | 'orbit' | 'trajectory' | 'orbital' | 'ground-station' | 'ground-control' | 'dish' | 'tracking-station' | 'uplink' | 'downlink' | 'command' | 'telemetry' | 'comms' | 'rf' | 'link' | 'signal' | 'data-link' | 'satellite' | 'spacecraft' | 'vehicle' | 'sat' | 'sc' | 'power' | 'battery' | 'energy' | 'solar-array' | 'solar-panel' | 'photovoltaic' | 'thruster' | 'engine' | 'burn' | 'maneuver' | 'delta-v' | 'rcs' | 'temperature' | 'heat' | 'cooling' | 'heater' | 'attitude' | 'pointing' | 'orientation' | 'adcs' | 'gyro' | 'gyroscope' | 'gps' | 'gnss' | 'position' | 'location' | 'ephemeris' | 'health' | 'status' | 'nominal' | 'anomaly' | 'fault' | 'safe-mode' | 'emergency' | 'critical' | 'caution' | 'pass' | 'contact' | 'access' | 'window' | 'aos' | 'los' | 'eclipse' | 'sunlight' | 'shadow' | 'subsystem' | 'computer' | 'obc' | 'cdh' | 'flight-computer' | 'sensor' | 'instrument' | 'launch' | 'rocket' | 'liftoff' | 'deployment' | 'deploy' | 'separation' | 'ops' | 'operations' | 'control' | 'automation' | 'sequence' | 'procedure' | 'storage' | 'memory' | 'recorder' | 'playback' | 'record' | 'monitor' | 'dashboard' | 'console' | 'display' | 'astronaut' | 'crew' | 'eva' | (string & {});
8
- export type AstroIconSize = 'extra-small' | 'small' | 'normal' | 'large';
6
+ export type AstroIconName = "altitude" | "antenna" | "antenna-off" | "antenna-receive" | "antenna-transmit" | "equipment" | "hardware" | "mission" | "netcom" | "payload" | "processor" | "processor-alt" | "propulsion-power" | "satellite-off" | "satellite-receive" | "satellite-transmit" | "solar" | "thermal" | "settings" | "search" | "home" | "info" | "help" | "delete" | "edit" | "lock" | "lock-open" | "visibility" | "visibility-off" | "refresh" | "sync" | "download" | "upload" | "fullscreen" | "fullscreen-exit" | "zoom-in" | "zoom-out" | "schedule" | "timeline" | "today" | "event" | "bookmark" | "favorite" | "star" | "check-circle" | "done" | "done-all" | "print" | "open-in-new" | "launch" | "power-settings-new" | "history" | "cached" | "build" | "code" | "dns" | "language" | "input" | "label" | "list" | "track-changes" | "verified-user" | "work" | "add-alert" | "error" | "error-outline" | "notification-important" | "warning" | "play-arrow" | "pause" | "stop" | "skip-next" | "skip-previous" | "fast-forward" | "fast-rewind" | "replay" | "loop" | "shuffle" | "volume-up" | "volume-down" | "volume-off" | "volume-mute" | "mic" | "mic-off" | "videocam" | "videocam-off" | "movie" | "music-note" | "equalizer" | "library-music" | "queue-music" | "subscriptions" | "fiber-new" | "fiber-manual-record" | "fiber-smart-record" | "call" | "call-end" | "call-made" | "call-received" | "call-missed" | "call-split" | "chat" | "chat-bubble" | "comment" | "contacts" | "dialer-sip" | "email" | "forum" | "import-export" | "live-help" | "location-off" | "location-on" | "message" | "phone" | "phonelink-erase" | "phonelink-lock" | "phonelink-ring" | "portable-wifi-off" | "present-to-all" | "ring-volume" | "screen-share" | "speaker-phone" | "stay-primary-landscape" | "stay-primary-portrait" | "stop-screen-share" | "swap-calls" | "textsms" | "voicemail" | "vpn-key" | "add" | "add-box" | "add-circle" | "add-circle-outline" | "archive" | "backspace" | "block" | "clear" | "content-copy" | "content-cut" | "content-paste" | "create" | "drafts" | "filter-list" | "flag" | "forward" | "gesture" | "inbox" | "link" | "link-off" | "low-priority" | "mail" | "markunread" | "move-to-inbox" | "next-week" | "redo" | "remove" | "remove-circle" | "remove-circle-outline" | "reply" | "reply-all" | "report" | "save" | "select-all" | "send" | "sort" | "text-format" | "unarchive" | "undo" | "weekend" | "access-alarm" | "access-alarms" | "access-time" | "add-alarm" | "airplanemode-active" | "airplanemode-inactive" | "battery-20" | "battery-30" | "battery-50" | "battery-60" | "battery-80" | "battery-90" | "battery-alert" | "battery-charging-20" | "battery-charging-30" | "battery-charging-50" | "battery-charging-60" | "battery-charging-80" | "battery-charging-90" | "battery-charging-full" | "battery-full" | "battery-std" | "battery-unknown" | "bluetooth" | "bluetooth-connected" | "bluetooth-disabled" | "bluetooth-searching" | "brightness-auto" | "brightness-high" | "brightness-low" | "brightness-medium" | "data-usage" | "developer-mode" | "devices" | "dvr" | "gps-fixed" | "gps-not-fixed" | "gps-off" | "graphic-eq" | "location-disabled" | "location-searching" | "network-cell" | "network-wifi" | "nfc" | "screen-lock-landscape" | "screen-lock-portrait" | "screen-lock-rotation" | "screen-rotation" | "sd-storage" | "settings-system-daydream" | "signal-cellular-0-bar" | "signal-cellular-1-bar" | "signal-cellular-2-bar" | "signal-cellular-3-bar" | "signal-cellular-4-bar" | "signal-cellular-connected-no-internet-0-bar" | "signal-cellular-connected-no-internet-1-bar" | "signal-cellular-connected-no-internet-2-bar" | "signal-cellular-connected-no-internet-3-bar" | "signal-cellular-connected-no-internet-4-bar" | "signal-cellular-no-sim" | "signal-cellular-null" | "signal-cellular-off" | "signal-wifi-0-bar" | "signal-wifi-1-bar" | "signal-wifi-1-bar-lock" | "signal-wifi-2-bar" | "signal-wifi-2-bar-lock" | "signal-wifi-3-bar" | "signal-wifi-3-bar-lock" | "signal-wifi-4-bar" | "signal-wifi-4-bar-lock" | "signal-wifi-off" | "storage" | "usb" | "wallpaper" | "widgets" | "wifi-lock" | "wifi-tethering" | "attach-file" | "attach-money" | "border-all" | "border-bottom" | "border-clear" | "border-color" | "border-horizontal" | "border-inner" | "border-left" | "border-outer" | "border-right" | "border-style" | "border-top" | "border-vertical" | "bubble-chart" | "drag-handle" | "format-align-center" | "format-align-justify" | "format-align-left" | "format-align-right" | "format-bold" | "format-clear" | "format-color-fill" | "format-color-reset" | "format-color-text" | "format-indent-decrease" | "format-indent-increase" | "format-italic" | "format-line-spacing" | "format-list-bulleted" | "format-list-numbered" | "format-paint" | "format-quote" | "format-shapes" | "format-size" | "format-strikethrough" | "format-textdirection-l-to-r" | "format-textdirection-r-to-l" | "format-underlined" | "functions" | "highlight" | "insert-chart" | "insert-comment" | "insert-drive-file" | "insert-emoticon" | "insert-invitation" | "insert-link" | "insert-photo" | "linear-scale" | "merge-type" | "mode-comment" | "mode-edit" | "monetization-on" | "money-off" | "multiline-chart" | "pie-chart" | "pie-chart-outlined" | "publish" | "short-text" | "show-chart" | "space-bar" | "strikethrough-s" | "table-chart" | "text-fields" | "title" | "vertical-align-bottom" | "vertical-align-center" | "vertical-align-top" | "wrap-text" | "attachment" | "cloud" | "cloud-circle" | "cloud-done" | "cloud-download" | "cloud-off" | "cloud-queue" | "cloud-upload" | "create-new-folder" | "file-download" | "file-upload" | "folder" | "folder-open" | "folder-shared" | "cast" | "cast-connected" | "computer" | "desktop-mac" | "desktop-windows" | "developer-board" | "device-hub" | "devices-other" | "dock" | "gamepad" | "headset" | "headset-mic" | "keyboard" | "keyboard-arrow-down" | "keyboard-arrow-left" | "keyboard-arrow-right" | "keyboard-arrow-up" | "keyboard-backspace" | "keyboard-capslock" | "keyboard-hide" | "keyboard-return" | "keyboard-tab" | "keyboard-voice" | "laptop" | "laptop-chromebook" | "laptop-mac" | "laptop-windows" | "memory" | "mouse" | "phone-android" | "phone-iphone" | "phonelink" | "phonelink-off" | "power-input" | "router" | "scanner" | "security" | "sim-card" | "smartphone" | "speaker" | "speaker-group" | "tablet" | "tablet-android" | "tablet-mac" | "toys" | "tv" | "videogame-asset" | "watch" | "add-a-photo" | "add-to-photos" | "adjust" | "assistant" | "assistant-photo" | "audiotrack" | "blur-circular" | "blur-linear" | "blur-off" | "blur-on" | "brightness-1" | "brightness-2" | "brightness-3" | "brightness-4" | "brightness-5" | "brightness-6" | "brightness-7" | "broken-image" | "brush" | "burst-mode" | "camera" | "camera-alt" | "camera-front" | "camera-rear" | "camera-roll" | "center-focus-strong" | "center-focus-weak" | "collections" | "collections-bookmark" | "color-lens" | "colorize" | "compare" | "control-point" | "control-point-duplicate" | "crop" | "crop-16-9" | "crop-3-2" | "crop-5-4" | "crop-7-5" | "crop-din" | "crop-free" | "crop-landscape" | "crop-original" | "crop-portrait" | "crop-rotate" | "crop-square" | "dehaze" | "details" | "edit" | "exposure" | "exposure-neg-1" | "exposure-neg-2" | "exposure-plus-1" | "exposure-plus-2" | "exposure-zero" | "filter" | "filter-1" | "filter-2" | "filter-3" | "filter-4" | "filter-5" | "filter-6" | "filter-7" | "filter-8" | "filter-9" | "filter-9-plus" | "filter-b-and-w" | "filter-center-focus" | "filter-drama" | "filter-frames" | "filter-hdr" | "filter-none" | "filter-tilt-shift" | "filter-vintage" | "flare" | "flash-auto" | "flash-off" | "flash-on" | "flip" | "gradient" | "grain" | "grid-off" | "grid-on" | "hdr-off" | "hdr-on" | "hdr-strong" | "hdr-weak" | "healing" | "image" | "image-aspect-ratio" | "iso" | "landscape" | "leak-add" | "leak-remove" | "lens" | "linked-camera" | "looks" | "looks-3" | "looks-4" | "looks-5" | "looks-6" | "looks-one" | "looks-two" | "loupe" | "monochrome-photos" | "movie-creation" | "movie-filter" | "music-note" | "nature" | "nature-people" | "navigate-before" | "navigate-next" | "palette" | "panorama" | "panorama-fish-eye" | "panorama-horizontal" | "panorama-vertical" | "panorama-wide-angle" | "photo" | "photo-album" | "photo-camera" | "photo-filter" | "photo-library" | "photo-size-select-actual" | "photo-size-select-large" | "photo-size-select-small" | "picture-as-pdf" | "portrait" | "remove-red-eye" | "rotate-90-degrees-ccw" | "rotate-left" | "rotate-right" | "slideshow" | "straighten" | "style" | "switch-camera" | "switch-video" | "tag-faces" | "texture" | "timelapse" | "timer" | "timer-10" | "timer-3" | "timer-off" | "tonality" | "transform" | "tune" | "view-comfy" | "view-compact" | "vignette" | "wb-auto" | "wb-cloudy" | "wb-incandescent" | "wb-iridescent" | "wb-sunny" | "add-location" | "beenhere" | "directions" | "directions-bike" | "directions-boat" | "directions-bus" | "directions-car" | "directions-railway" | "directions-run" | "directions-subway" | "directions-transit" | "directions-walk" | "edit-location" | "ev-station" | "explore" | "flight" | "hotel" | "layers" | "layers-clear" | "local-activity" | "local-airport" | "local-atm" | "local-bar" | "local-cafe" | "local-car-wash" | "local-convenience-store" | "local-dining" | "local-drink" | "local-florist" | "local-gas-station" | "local-grocery-store" | "local-hospital" | "local-hotel" | "local-laundry-service" | "local-library" | "local-mall" | "local-movies" | "local-offer" | "local-parking" | "local-pharmacy" | "local-phone" | "local-pizza" | "local-play" | "local-post-office" | "local-printshop" | "local-see" | "local-shipping" | "local-taxi" | "map" | "my-location" | "navigation" | "near-me" | "person-pin" | "person-pin-circle" | "pin-drop" | "place" | "rate-review" | "restaurant" | "restaurant-menu" | "satellite" | "store-mall-directory" | "streetview" | "subway" | "terrain" | "traffic" | "train" | "tram" | "transfer-within-a-station" | "zoom-out-map" | "apps" | "arrow-back" | "arrow-downward" | "arrow-drop-down" | "arrow-drop-down-circle" | "arrow-drop-up" | "arrow-forward" | "arrow-upward" | "cancel" | "check" | "chevron-left" | "chevron-right" | "close" | "expand-less" | "expand-more" | "first-page" | "fullscreen" | "fullscreen-exit" | "last-page" | "menu" | "more-horiz" | "more-vert" | "refresh" | "subdirectory-arrow-left" | "subdirectory-arrow-right" | "unfold-less" | "unfold-more" | "adb" | "airline-seat-flat" | "airline-seat-flat-angled" | "airline-seat-individual-suite" | "airline-seat-legroom-extra" | "airline-seat-legroom-normal" | "airline-seat-legroom-reduced" | "airline-seat-recline-extra" | "airline-seat-recline-normal" | "bluetooth-audio" | "confirmation-number" | "disc-full" | "do-not-disturb" | "do-not-disturb-alt" | "do-not-disturb-off" | "do-not-disturb-on" | "drive-eta" | "enhanced-encryption" | "event-available" | "event-busy" | "event-note" | "folder-special" | "live-tv" | "mms" | "more" | "network-check" | "network-locked" | "no-encryption" | "ondemand-video" | "personal-video" | "phone-bluetooth-speaker" | "phone-forwarded" | "phone-in-talk" | "phone-locked" | "phone-missed" | "phone-paused" | "power" | "power-off" | "priority-high" | "sd-card" | "sim-card-alert" | "sms" | "sms-failed" | "sync" | "sync-disabled" | "sync-problem" | "system-update" | "tap-and-play" | "time-to-leave" | "vibration" | "voice-chat" | "vpn-lock" | "wc" | "wifi" | "wifi-off" | "ac-unit" | "airport-shuttle" | "all-inclusive" | "beach-access" | "business-center" | "casino" | "child-care" | "child-friendly" | "fitness-center" | "free-breakfast" | "golf-course" | "hot-tub" | "kitchen" | "pool" | "room-service" | "rv-hookup" | "smoke-free" | "smoking-rooms" | "spa" | "cake" | "domain" | "group" | "group-add" | "location-city" | "mood" | "mood-bad" | "notifications" | "notifications-active" | "notifications-none" | "notifications-off" | "notifications-paused" | "pages" | "party-mode" | "people" | "people-outline" | "person" | "person-add" | "person-outline" | "plus-one" | "poll" | "public" | "school" | "sentiment-dissatisfied" | "sentiment-neutral" | "sentiment-satisfied" | "sentiment-very-dissatisfied" | "sentiment-very-satisfied" | "share" | "whatshot" | "check-box" | "check-box-outline-blank" | "indeterminate-check-box" | "radio-button-checked" | "radio-button-unchecked" | "star" | "star-border" | "star-half" | "orbit" | "trajectory" | "orbital" | "ground-station" | "ground-control" | "dish" | "tracking-station" | "uplink" | "downlink" | "command" | "telemetry" | "comms" | "rf" | "link" | "signal" | "data-link" | "satellite" | "spacecraft" | "vehicle" | "sat" | "sc" | "power" | "battery" | "energy" | "solar-array" | "solar-panel" | "photovoltaic" | "thruster" | "engine" | "burn" | "maneuver" | "delta-v" | "rcs" | "temperature" | "heat" | "cooling" | "heater" | "attitude" | "pointing" | "orientation" | "adcs" | "gyro" | "gyroscope" | "gps" | "gnss" | "position" | "location" | "ephemeris" | "health" | "status" | "nominal" | "anomaly" | "fault" | "safe-mode" | "emergency" | "critical" | "caution" | "pass" | "contact" | "access" | "window" | "aos" | "los" | "eclipse" | "sunlight" | "shadow" | "subsystem" | "computer" | "obc" | "cdh" | "flight-computer" | "sensor" | "instrument" | "launch" | "rocket" | "liftoff" | "deployment" | "deploy" | "separation" | "ops" | "operations" | "control" | "automation" | "sequence" | "procedure" | "storage" | "memory" | "recorder" | "playback" | "record" | "monitor" | "dashboard" | "console" | "display" | "astronaut" | "crew" | "eva" | (string & {});
7
+ export type AstroIconSize = "extra-small" | "small" | "normal" | "large";
9
8
  export interface AstroIconProps {
10
9
  /** Icon name from Astro UXD library */
11
10
  name: AstroIconName;
@@ -22,7 +21,7 @@ export interface AstroIconProps {
22
21
  /** Click handler */
23
22
  onClick?: () => void;
24
23
  /** Test ID for testing */
25
- 'data-testid'?: string;
24
+ "data-testid"?: string;
26
25
  }
27
26
  /**
28
27
  * Get all available icon aliases
@@ -64,7 +63,7 @@ export declare function getAllIconNames(): {
64
63
  * <AstroIcon name="thermal" size={48} />
65
64
  *
66
65
  * // With color
67
- * <AstroIcon name="warning" color="var(--color-status-caution)" />
66
+ * <AstroIcon name="warning" color="var(--zendir-status-caution)" />
68
67
  *
69
68
  * // With click handler
70
69
  * <AstroIcon name="settings" onClick={() => openSettings()} />