@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,316 +1,403 @@
1
- import { jsxs, jsx } from "react/jsx-runtime";
2
- import { memo, useMemo } from "react";
3
1
  import { useTheme } from "../../theme/ThemeProvider.js";
4
- import { HeaderIconWithStatus } from "./HeaderIconWithStatus.js";
5
- import { AstroIcon } from "./AstroIcon.js";
6
2
  import { Icon } from "./Icon.js";
7
- import { safeAccentText, getStatusColor } from "../../utils/index.js";
8
- const STATUS_COLORS = {
9
- off: "#a4abb6",
10
- standby: "#2dccff",
11
- normal: "#56f000",
12
- caution: "#fce83a",
13
- serious: "#ffb302",
14
- critical: "#ff3838"
15
- };
3
+ import { getStatusColor, safeAccentText } from "../../utils/index.js";
4
+ import { AstroIcon } from "./AstroIcon.js";
5
+ import { HeaderIconWithStatus } from "./HeaderIconWithStatus.js";
6
+ import { memo, useMemo } from "react";
7
+ import { jsx, jsxs } from "react/jsx-runtime";
8
+ //#region src/react/core/display/CardHeader.tsx
9
+ /**
10
+ * @zendir/ui - CardHeader Component
11
+ *
12
+ * Unified card header component for consistent styling across all cards.
13
+ * Uses HeaderIconWithStatus for status-aware icon display.
14
+ *
15
+ * Features:
16
+ * - Consistent header styling across all theme variants (Regular, Bold, Minimal)
17
+ * - Integrated HeaderIconWithStatus for status indicator
18
+ * - Theme-aware accent colors and styling
19
+ * - Optional badge/tag display
20
+ * - Optional subtitle
21
+ * - Accessibility compliant
22
+ *
23
+ * @example
24
+ * ```tsx
25
+ * <CardHeader
26
+ * icon="satellite-transmit"
27
+ * title="ISS"
28
+ * subtitle="SC-001"
29
+ * status="normal"
30
+ * badge="LEO"
31
+ * badgeColor="#3E3CFF"
32
+ * />
33
+ * ```
34
+ */
16
35
  function StatusBadge({ status, size = "bold" }) {
17
- const color = STATUS_COLORS[status];
18
- const label = status.charAt(0).toUpperCase() + status.slice(1);
19
- const isBold = size === "bold";
20
- const renderShape = () => {
21
- const s = isBold ? 6 : 5;
22
- switch (status) {
23
- case "critical":
24
- return /* @__PURE__ */ jsx("svg", { viewBox: "0 0 12 12", width: s, height: s, children: /* @__PURE__ */ jsx("polygon", { points: "6,11 1,2 11,2", fill: color }) });
25
- case "serious":
26
- return /* @__PURE__ */ jsx("svg", { viewBox: "0 0 12 12", width: s, height: s, children: /* @__PURE__ */ jsx("polygon", { points: "6,1 11,6 6,11 1,6", fill: color }) });
27
- case "caution":
28
- return /* @__PURE__ */ jsx("svg", { viewBox: "0 0 12 12", width: s, height: s, children: /* @__PURE__ */ jsx("rect", { x: "1", y: "1", width: "10", height: "10", fill: color }) });
29
- case "standby":
30
- return /* @__PURE__ */ jsx("svg", { viewBox: "0 0 12 12", width: s, height: s, children: /* @__PURE__ */ jsx("circle", { cx: "6", cy: "6", r: "3.5", fill: "none", stroke: color, strokeWidth: "2" }) });
31
- case "off":
32
- return /* @__PURE__ */ jsx("svg", { viewBox: "0 0 12 12", width: s, height: s, children: /* @__PURE__ */ jsx("circle", { cx: "6", cy: "6", r: "3", fill: color }) });
33
- case "normal":
34
- default:
35
- return /* @__PURE__ */ jsx("svg", { viewBox: "0 0 12 12", width: s, height: s, children: /* @__PURE__ */ jsx("circle", { cx: "6", cy: "6", r: "5", fill: color }) });
36
- }
37
- };
38
- return /* @__PURE__ */ jsxs("span", { style: {
39
- display: "inline-flex",
40
- alignItems: "center",
41
- gap: isBold ? "6px" : "4px",
42
- padding: isBold ? "3px 10px" : "2px 8px",
43
- borderRadius: "12px",
44
- fontSize: isBold ? "0.6875rem" : "0.625rem",
45
- // 11px / 10px in rem (AstroUXDS compliant)
46
- fontWeight: 500,
47
- // AstroUXDS: medium weight
48
- backgroundColor: `${color}20`,
49
- color,
50
- flexShrink: 0,
51
- textTransform: "uppercase",
52
- letterSpacing: "0.3px"
53
- }, children: [
54
- renderShape(),
55
- label
56
- ] });
36
+ const { tokens } = useTheme();
37
+ const color = tokens.colors.status[status];
38
+ const label = status.charAt(0).toUpperCase() + status.slice(1);
39
+ const isBold = size === "bold";
40
+ const renderShape = () => {
41
+ const s = isBold ? 6 : 5;
42
+ switch (status) {
43
+ case "critical": return /* @__PURE__ */ jsx("svg", {
44
+ viewBox: "0 0 12 12",
45
+ width: s,
46
+ height: s,
47
+ children: /* @__PURE__ */ jsx("polygon", {
48
+ points: "6,11 1,2 11,2",
49
+ fill: color
50
+ })
51
+ });
52
+ case "serious": return /* @__PURE__ */ jsx("svg", {
53
+ viewBox: "0 0 12 12",
54
+ width: s,
55
+ height: s,
56
+ children: /* @__PURE__ */ jsx("polygon", {
57
+ points: "6,1 11,6 6,11 1,6",
58
+ fill: color
59
+ })
60
+ });
61
+ case "caution": return /* @__PURE__ */ jsx("svg", {
62
+ viewBox: "0 0 12 12",
63
+ width: s,
64
+ height: s,
65
+ children: /* @__PURE__ */ jsx("rect", {
66
+ x: "1",
67
+ y: "1",
68
+ width: "10",
69
+ height: "10",
70
+ fill: color
71
+ })
72
+ });
73
+ case "standby": return /* @__PURE__ */ jsx("svg", {
74
+ viewBox: "0 0 12 12",
75
+ width: s,
76
+ height: s,
77
+ children: /* @__PURE__ */ jsx("circle", {
78
+ cx: "6",
79
+ cy: "6",
80
+ r: "3.5",
81
+ fill: "none",
82
+ stroke: color,
83
+ strokeWidth: "2"
84
+ })
85
+ });
86
+ case "off": return /* @__PURE__ */ jsx("svg", {
87
+ viewBox: "0 0 12 12",
88
+ width: s,
89
+ height: s,
90
+ children: /* @__PURE__ */ jsx("circle", {
91
+ cx: "6",
92
+ cy: "6",
93
+ r: "3",
94
+ fill: color
95
+ })
96
+ });
97
+ default: return /* @__PURE__ */ jsx("svg", {
98
+ viewBox: "0 0 12 12",
99
+ width: s,
100
+ height: s,
101
+ children: /* @__PURE__ */ jsx("circle", {
102
+ cx: "6",
103
+ cy: "6",
104
+ r: "5",
105
+ fill: color
106
+ })
107
+ });
108
+ }
109
+ };
110
+ return /* @__PURE__ */ jsxs("span", {
111
+ style: {
112
+ display: "inline-flex",
113
+ alignItems: "center",
114
+ gap: isBold ? "6px" : "4px",
115
+ padding: isBold ? "3px 10px" : "2px 8px",
116
+ borderRadius: "12px",
117
+ fontSize: isBold ? "0.6875rem" : "0.625rem",
118
+ fontWeight: 500,
119
+ backgroundColor: `${color}20`,
120
+ color,
121
+ flexShrink: 0,
122
+ textTransform: "uppercase",
123
+ letterSpacing: "0.3px"
124
+ },
125
+ children: [renderShape(), label]
126
+ });
57
127
  }
58
- const CardHeader = memo(function CardHeader2({
59
- icon,
60
- title,
61
- subtitle,
62
- status = "off",
63
- badge,
64
- badgeColor,
65
- isPinned,
66
- iconSize,
67
- iconColor,
68
- hideStatusIndicator = false,
69
- className,
70
- style,
71
- rightSlot
72
- }) {
73
- var _a, _b;
74
- const { tokens, theme } = useTheme();
75
- const isBoldVariant = theme === "transparent-bold";
76
- const isMinimalVariant = theme === "transparent-minimal";
77
- const glassAccentColor = useMemo(() => safeAccentText(tokens.colors.accent.primary), [tokens.colors.accent.primary]);
78
- const glassAccentRaw = tokens.colors.accent.primary;
79
- const glassAccentMuted = `${glassAccentRaw}66`;
80
- const statusColor = iconColor ?? (status ? getStatusColor(status) : tokens.colors.text.secondary);
81
- const headingConfig = ((_b = (_a = tokens.layout) == null ? void 0 : _a.card) == null ? void 0 : _b.heading) ?? {
82
- iconSize: 20,
83
- iconSizeCompact: 16,
84
- titleFontSize: "1.125rem",
85
- titleFontWeight: 500,
86
- gap: 8
87
- };
88
- const defaultIconSize = isMinimalVariant ? headingConfig.iconSizeCompact : headingConfig.iconSize;
89
- const finalIconSize = iconSize ?? defaultIconSize;
90
- const titleFontSize = headingConfig.titleFontSize;
91
- const titleFontWeight = headingConfig.titleFontWeight;
92
- const iconTitleGap = headingConfig.gap;
93
- const safeBadgeColor = useMemo(() => badgeColor ? safeAccentText(badgeColor) : safeAccentText(tokens.colors.accent.primary), [badgeColor, tokens.colors.accent.primary]);
94
- const finalBadgeColor = safeBadgeColor;
95
- if (isBoldVariant) {
96
- return /* @__PURE__ */ jsxs(
97
- "header",
98
- {
99
- className,
100
- style: {
101
- position: "relative",
102
- zIndex: 1,
103
- marginBottom: tokens.spacing.sm,
104
- ...style
105
- },
106
- children: [
107
- /* @__PURE__ */ jsxs("div", { style: {
108
- display: "flex",
109
- alignItems: "center",
110
- justifyContent: "space-between"
111
- }, children: [
112
- /* @__PURE__ */ jsxs("div", { style: { display: "flex", alignItems: "center", gap: iconTitleGap }, children: [
113
- icon && (hideStatusIndicator ? /* @__PURE__ */ jsx(AstroIcon, { name: icon, size: finalIconSize, color: statusColor }) : /* @__PURE__ */ jsx(
114
- HeaderIconWithStatus,
115
- {
116
- icon,
117
- size: finalIconSize,
118
- status
119
- }
120
- )),
121
- /* @__PURE__ */ jsx("h3", { style: {
122
- margin: 0,
123
- fontSize: titleFontSize,
124
- fontWeight: titleFontWeight,
125
- color: glassAccentColor,
126
- letterSpacing: "0.5px",
127
- textShadow: `0 0 20px ${glassAccentMuted}`
128
- }, children: title }),
129
- isPinned && /* @__PURE__ */ jsx(Icon, { name: "lock", size: 12, color: tokens.colors.accent.primary })
130
- ] }),
131
- /* @__PURE__ */ jsxs("div", { style: { display: "flex", alignItems: "center", gap: tokens.spacing.sm }, children: [
132
- badge && /* @__PURE__ */ jsx("span", { style: {
133
- backgroundColor: `${finalBadgeColor}20`,
134
- color: finalBadgeColor,
135
- padding: `${tokens.spacing.xs} ${tokens.spacing.sm}`,
136
- borderRadius: tokens.borderRadius.sm,
137
- flexShrink: 0,
138
- fontSize: tokens.typography.fontSize.xs,
139
- fontWeight: tokens.typography.fontWeight.medium
140
- }, children: badge }),
141
- rightSlot
142
- ] })
143
- ] }),
144
- subtitle && /* @__PURE__ */ jsx("span", { style: {
145
- fontSize: tokens.typography.fontSize.xs,
146
- color: tokens.colors.text.tertiary,
147
- marginLeft: finalIconSize + parseInt(tokens.spacing.sm)
148
- }, children: subtitle }),
149
- /* @__PURE__ */ jsxs("div", { style: {
150
- display: "flex",
151
- alignItems: "center",
152
- gap: tokens.spacing.sm,
153
- marginTop: tokens.spacing.sm,
154
- marginBottom: tokens.spacing.xs
155
- }, children: [
156
- /* @__PURE__ */ jsx("div", { style: {
157
- flex: 1,
158
- height: "2px",
159
- background: `linear-gradient(90deg, ${glassAccentRaw} 0%, ${glassAccentMuted} 70%, ${glassAccentMuted}20 100%)`,
160
- boxShadow: `0 0 8px ${glassAccentMuted}`
161
- } }),
162
- status && status !== "off" && !hideStatusIndicator && /* @__PURE__ */ jsx(StatusBadge, { status, size: "bold" })
163
- ] })
164
- ]
165
- }
166
- );
167
- }
168
- if (isMinimalVariant) {
169
- return /* @__PURE__ */ jsxs(
170
- "header",
171
- {
172
- className,
173
- style: {
174
- display: "flex",
175
- alignItems: "center",
176
- marginBottom: tokens.spacing.sm,
177
- position: "relative",
178
- zIndex: 1,
179
- ...style
180
- },
181
- children: [
182
- icon && (hideStatusIndicator ? /* @__PURE__ */ jsx(
183
- AstroIcon,
184
- {
185
- name: icon,
186
- size: finalIconSize,
187
- color: statusColor,
188
- style: { marginRight: tokens.spacing.sm }
189
- }
190
- ) : /* @__PURE__ */ jsx(
191
- HeaderIconWithStatus,
192
- {
193
- icon,
194
- size: finalIconSize,
195
- status,
196
- style: { marginRight: tokens.spacing.sm }
197
- }
198
- )),
199
- /* @__PURE__ */ jsx("h3", { style: {
200
- margin: 0,
201
- fontSize: titleFontSize,
202
- fontWeight: titleFontWeight,
203
- color: glassAccentColor,
204
- textShadow: `0 0 16px ${glassAccentMuted}`,
205
- letterSpacing: "0.02em",
206
- whiteSpace: "nowrap",
207
- marginRight: "12px"
208
- }, children: title }),
209
- isPinned && /* @__PURE__ */ jsx(Icon, { name: "lock", size: 10, color: tokens.colors.accent.primary, style: { marginRight: "8px" } }),
210
- /* @__PURE__ */ jsxs("div", { style: {
211
- flex: 1,
212
- display: "flex",
213
- alignItems: "center",
214
- gap: tokens.spacing.sm,
215
- minWidth: 40
216
- }, children: [
217
- /* @__PURE__ */ jsx("div", { style: {
218
- flex: 1,
219
- height: "1px",
220
- background: `linear-gradient(90deg, ${glassAccentRaw} 0%, ${glassAccentMuted} 70%, ${glassAccentMuted}20 100%)`
221
- } }),
222
- status && status !== "off" && !hideStatusIndicator && !badge && /* @__PURE__ */ jsx(StatusBadge, { status, size: "minimal" })
223
- ] }),
224
- badge && /* @__PURE__ */ jsx("span", { style: {
225
- backgroundColor: `${finalBadgeColor}20`,
226
- color: finalBadgeColor,
227
- padding: "2px 6px",
228
- borderRadius: tokens.borderRadius.sm,
229
- flexShrink: 0,
230
- fontSize: tokens.typography.fontSize.xxs,
231
- // 0.625rem / 10px (AstroUXDS compact)
232
- fontWeight: tokens.typography.fontWeight.medium,
233
- marginLeft: "8px"
234
- }, children: badge }),
235
- rightSlot
236
- ]
237
- }
238
- );
239
- }
240
- return /* @__PURE__ */ jsxs(
241
- "header",
242
- {
243
- className,
244
- style: {
245
- display: "flex",
246
- justifyContent: "space-between",
247
- alignItems: "center",
248
- marginBottom: tokens.spacing.md,
249
- ...style
250
- },
251
- children: [
252
- /* @__PURE__ */ jsxs("div", { style: { display: "flex", alignItems: "center", gap: iconTitleGap }, children: [
253
- icon && (hideStatusIndicator ? /* @__PURE__ */ jsx(AstroIcon, { name: icon, size: finalIconSize, color: statusColor }) : /* @__PURE__ */ jsx(
254
- HeaderIconWithStatus,
255
- {
256
- icon,
257
- size: finalIconSize,
258
- status
259
- }
260
- )),
261
- /* @__PURE__ */ jsxs("div", { style: { minWidth: 0 }, children: [
262
- /* @__PURE__ */ jsxs("div", { style: { display: "flex", alignItems: "center", gap: 6 }, children: [
263
- /* @__PURE__ */ jsx(
264
- "h3",
265
- {
266
- style: {
267
- margin: 0,
268
- fontSize: titleFontSize,
269
- fontWeight: titleFontWeight,
270
- lineHeight: 1.2,
271
- color: tokens.colors.text.primary
272
- },
273
- children: title
274
- }
275
- ),
276
- isPinned && /* @__PURE__ */ jsx(Icon, { name: "lock", size: 12, color: tokens.colors.accent.primary })
277
- ] }),
278
- subtitle && /* @__PURE__ */ jsx(
279
- "span",
280
- {
281
- style: {
282
- fontSize: tokens.typography.fontSize.xs,
283
- color: tokens.colors.text.tertiary
284
- },
285
- children: subtitle
286
- }
287
- )
288
- ] })
289
- ] }),
290
- /* @__PURE__ */ jsxs("div", { style: { display: "flex", alignItems: "center", gap: tokens.spacing.sm }, children: [
291
- status && status !== "off" && !hideStatusIndicator && !rightSlot && /* @__PURE__ */ jsx(StatusBadge, { status, size: "bold" }),
292
- badge && /* @__PURE__ */ jsx(
293
- "span",
294
- {
295
- style: {
296
- backgroundColor: `${finalBadgeColor}20`,
297
- color: finalBadgeColor,
298
- padding: `${tokens.spacing.xs} ${tokens.spacing.sm}`,
299
- borderRadius: tokens.borderRadius.sm,
300
- flexShrink: 0,
301
- fontSize: tokens.typography.fontSize.xs,
302
- fontWeight: tokens.typography.fontWeight.medium
303
- },
304
- children: badge
305
- }
306
- ),
307
- rightSlot
308
- ] })
309
- ]
310
- }
311
- );
128
+ var CardHeader = memo(function CardHeader({ icon, title, subtitle, status = "off", badge, badgeColor, isPinned, iconSize, iconColor, hideStatusIndicator = false, className, style, rightSlot }) {
129
+ const { tokens, theme } = useTheme();
130
+ const isBoldVariant = theme === "transparent-bold";
131
+ const isMinimalVariant = theme === "transparent-minimal";
132
+ const glassAccentColor = useMemo(() => safeAccentText(tokens.colors.accent.primary), [tokens.colors.accent.primary]);
133
+ const glassAccentRaw = tokens.colors.accent.primary;
134
+ const glassAccentMuted = `${glassAccentRaw}66`;
135
+ const statusColor = iconColor ?? (status ? getStatusColor(status) : tokens.colors.text.secondary);
136
+ const headingConfig = tokens.layout?.card?.heading ?? {
137
+ iconSize: 20,
138
+ iconSizeCompact: 16,
139
+ titleFontSize: "1.125rem",
140
+ titleFontWeight: 500,
141
+ gap: 8
142
+ };
143
+ const defaultIconSize = isMinimalVariant ? headingConfig.iconSizeCompact : headingConfig.iconSize;
144
+ const finalIconSize = iconSize ?? defaultIconSize;
145
+ const titleFontSize = headingConfig.titleFontSize;
146
+ const titleFontWeight = headingConfig.titleFontWeight;
147
+ const iconTitleGap = headingConfig.gap;
148
+ const finalBadgeColor = useMemo(() => badgeColor ? safeAccentText(badgeColor) : safeAccentText(tokens.colors.accent.primary), [badgeColor, tokens.colors.accent.primary]);
149
+ if (isBoldVariant) return /* @__PURE__ */ jsxs("header", {
150
+ className,
151
+ style: {
152
+ position: "relative",
153
+ zIndex: 1,
154
+ marginBottom: tokens.spacing.sm,
155
+ ...style
156
+ },
157
+ children: [
158
+ /* @__PURE__ */ jsxs("div", {
159
+ style: {
160
+ display: "flex",
161
+ alignItems: "center",
162
+ justifyContent: "space-between"
163
+ },
164
+ children: [/* @__PURE__ */ jsxs("div", {
165
+ style: {
166
+ display: "flex",
167
+ alignItems: "center",
168
+ gap: iconTitleGap
169
+ },
170
+ children: [
171
+ icon && (hideStatusIndicator ? /* @__PURE__ */ jsx(AstroIcon, {
172
+ name: icon,
173
+ size: finalIconSize,
174
+ color: statusColor
175
+ }) : /* @__PURE__ */ jsx(HeaderIconWithStatus, {
176
+ icon,
177
+ size: finalIconSize,
178
+ status
179
+ })),
180
+ /* @__PURE__ */ jsx("h3", {
181
+ style: {
182
+ margin: 0,
183
+ fontSize: titleFontSize,
184
+ fontWeight: titleFontWeight,
185
+ color: glassAccentColor,
186
+ letterSpacing: "0.5px",
187
+ textShadow: `0 0 20px ${glassAccentMuted}`
188
+ },
189
+ children: title
190
+ }),
191
+ isPinned && /* @__PURE__ */ jsx(Icon, {
192
+ name: "lock",
193
+ size: 12,
194
+ color: tokens.colors.accent.primary
195
+ })
196
+ ]
197
+ }), /* @__PURE__ */ jsxs("div", {
198
+ style: {
199
+ display: "flex",
200
+ alignItems: "center",
201
+ gap: tokens.spacing.sm
202
+ },
203
+ children: [badge && /* @__PURE__ */ jsx("span", {
204
+ style: {
205
+ backgroundColor: `${finalBadgeColor}20`,
206
+ color: finalBadgeColor,
207
+ padding: `${tokens.spacing.xs} ${tokens.spacing.sm}`,
208
+ borderRadius: tokens.borderRadius.sm,
209
+ flexShrink: 0,
210
+ fontSize: tokens.typography.fontSize.xs,
211
+ fontWeight: tokens.typography.fontWeight.medium
212
+ },
213
+ children: badge
214
+ }), rightSlot]
215
+ })]
216
+ }),
217
+ subtitle && /* @__PURE__ */ jsx("span", {
218
+ style: {
219
+ fontSize: tokens.typography.fontSize.xs,
220
+ color: tokens.colors.text.tertiary,
221
+ marginLeft: finalIconSize + parseInt(tokens.spacing.sm)
222
+ },
223
+ children: subtitle
224
+ }),
225
+ /* @__PURE__ */ jsxs("div", {
226
+ style: {
227
+ display: "flex",
228
+ alignItems: "center",
229
+ gap: tokens.spacing.sm,
230
+ marginTop: tokens.spacing.sm,
231
+ marginBottom: tokens.spacing.xs
232
+ },
233
+ children: [/* @__PURE__ */ jsx("div", { style: {
234
+ flex: 1,
235
+ height: "2px",
236
+ background: `linear-gradient(90deg, ${glassAccentRaw} 0%, ${glassAccentMuted} 70%, ${glassAccentMuted}20 100%)`,
237
+ boxShadow: `0 0 8px ${glassAccentMuted}`
238
+ } }), status && status !== "off" && !hideStatusIndicator && /* @__PURE__ */ jsx(StatusBadge, {
239
+ status,
240
+ size: "bold"
241
+ })]
242
+ })
243
+ ]
244
+ });
245
+ if (isMinimalVariant) return /* @__PURE__ */ jsxs("header", {
246
+ className,
247
+ style: {
248
+ display: "flex",
249
+ alignItems: "center",
250
+ marginBottom: tokens.spacing.sm,
251
+ position: "relative",
252
+ zIndex: 1,
253
+ ...style
254
+ },
255
+ children: [
256
+ icon && (hideStatusIndicator ? /* @__PURE__ */ jsx(AstroIcon, {
257
+ name: icon,
258
+ size: finalIconSize,
259
+ color: statusColor,
260
+ style: { marginRight: tokens.spacing.sm }
261
+ }) : /* @__PURE__ */ jsx(HeaderIconWithStatus, {
262
+ icon,
263
+ size: finalIconSize,
264
+ status,
265
+ style: { marginRight: tokens.spacing.sm }
266
+ })),
267
+ /* @__PURE__ */ jsx("h3", {
268
+ style: {
269
+ margin: 0,
270
+ fontSize: titleFontSize,
271
+ fontWeight: titleFontWeight,
272
+ color: glassAccentColor,
273
+ textShadow: `0 0 16px ${glassAccentMuted}`,
274
+ letterSpacing: "0.02em",
275
+ whiteSpace: "nowrap",
276
+ marginRight: "12px"
277
+ },
278
+ children: title
279
+ }),
280
+ isPinned && /* @__PURE__ */ jsx(Icon, {
281
+ name: "lock",
282
+ size: 10,
283
+ color: tokens.colors.accent.primary,
284
+ style: { marginRight: "8px" }
285
+ }),
286
+ /* @__PURE__ */ jsxs("div", {
287
+ style: {
288
+ flex: 1,
289
+ display: "flex",
290
+ alignItems: "center",
291
+ gap: tokens.spacing.sm,
292
+ minWidth: 40
293
+ },
294
+ children: [/* @__PURE__ */ jsx("div", { style: {
295
+ flex: 1,
296
+ height: "1px",
297
+ background: `linear-gradient(90deg, ${glassAccentRaw} 0%, ${glassAccentMuted} 70%, ${glassAccentMuted}20 100%)`
298
+ } }), status && status !== "off" && !hideStatusIndicator && !badge && /* @__PURE__ */ jsx(StatusBadge, {
299
+ status,
300
+ size: "minimal"
301
+ })]
302
+ }),
303
+ badge && /* @__PURE__ */ jsx("span", {
304
+ style: {
305
+ backgroundColor: `${finalBadgeColor}20`,
306
+ color: finalBadgeColor,
307
+ padding: "2px 6px",
308
+ borderRadius: tokens.borderRadius.sm,
309
+ flexShrink: 0,
310
+ fontSize: tokens.typography.fontSize.xxs,
311
+ fontWeight: tokens.typography.fontWeight.medium,
312
+ marginLeft: "8px"
313
+ },
314
+ children: badge
315
+ }),
316
+ rightSlot
317
+ ]
318
+ });
319
+ return /* @__PURE__ */ jsxs("header", {
320
+ className,
321
+ style: {
322
+ display: "flex",
323
+ justifyContent: "space-between",
324
+ alignItems: "center",
325
+ marginBottom: tokens.spacing.md,
326
+ ...style
327
+ },
328
+ children: [/* @__PURE__ */ jsxs("div", {
329
+ style: {
330
+ display: "flex",
331
+ alignItems: "center",
332
+ gap: iconTitleGap
333
+ },
334
+ children: [icon && (hideStatusIndicator ? /* @__PURE__ */ jsx(AstroIcon, {
335
+ name: icon,
336
+ size: finalIconSize,
337
+ color: statusColor
338
+ }) : /* @__PURE__ */ jsx(HeaderIconWithStatus, {
339
+ icon,
340
+ size: finalIconSize,
341
+ status
342
+ })), /* @__PURE__ */ jsxs("div", {
343
+ style: { minWidth: 0 },
344
+ children: [/* @__PURE__ */ jsxs("div", {
345
+ style: {
346
+ display: "flex",
347
+ alignItems: "center",
348
+ gap: 6
349
+ },
350
+ children: [/* @__PURE__ */ jsx("h3", {
351
+ style: {
352
+ margin: 0,
353
+ fontSize: titleFontSize,
354
+ fontWeight: titleFontWeight,
355
+ lineHeight: 1.2,
356
+ color: tokens.colors.text.primary
357
+ },
358
+ children: title
359
+ }), isPinned && /* @__PURE__ */ jsx(Icon, {
360
+ name: "lock",
361
+ size: 12,
362
+ color: tokens.colors.accent.primary
363
+ })]
364
+ }), subtitle && /* @__PURE__ */ jsx("span", {
365
+ style: {
366
+ fontSize: tokens.typography.fontSize.xs,
367
+ color: tokens.colors.text.tertiary
368
+ },
369
+ children: subtitle
370
+ })]
371
+ })]
372
+ }), /* @__PURE__ */ jsxs("div", {
373
+ style: {
374
+ display: "flex",
375
+ alignItems: "center",
376
+ gap: tokens.spacing.sm
377
+ },
378
+ children: [
379
+ status && status !== "off" && !hideStatusIndicator && !rightSlot && /* @__PURE__ */ jsx(StatusBadge, {
380
+ status,
381
+ size: "bold"
382
+ }),
383
+ badge && /* @__PURE__ */ jsx("span", {
384
+ style: {
385
+ backgroundColor: `${finalBadgeColor}20`,
386
+ color: finalBadgeColor,
387
+ padding: `${tokens.spacing.xs} ${tokens.spacing.sm}`,
388
+ borderRadius: tokens.borderRadius.sm,
389
+ flexShrink: 0,
390
+ fontSize: tokens.typography.fontSize.xs,
391
+ fontWeight: tokens.typography.fontWeight.medium
392
+ },
393
+ children: badge
394
+ }),
395
+ rightSlot
396
+ ]
397
+ })]
398
+ });
312
399
  });
313
- export {
314
- CardHeader
315
- };
316
- //# sourceMappingURL=CardHeader.js.map
400
+ //#endregion
401
+ export { CardHeader, CardHeader as default };
402
+
403
+ //# sourceMappingURL=CardHeader.js.map