@zendir/ui 0.1.7 → 0.1.9

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 (79) hide show
  1. package/dist/index.js +0 -137
  2. package/dist/index.js.map +1 -1
  3. package/dist/react/context/DisplaySettingsContext.js +0 -12
  4. package/dist/react/context/DisplaySettingsContext.js.map +1 -1
  5. package/dist/react/index.d.ts +0 -30
  6. package/dist/react/utils/index.js +0 -8
  7. package/dist/react/utils/index.js.map +1 -1
  8. package/dist/react.js +0 -137
  9. package/dist/react.js.map +1 -1
  10. package/package.json +2 -2
  11. package/dist/react/3d/EarthViewer.js +0 -836
  12. package/dist/react/3d/EarthViewer.js.map +0 -1
  13. package/dist/react/3d/SolarSystemViewer.js +0 -372
  14. package/dist/react/3d/SolarSystemViewer.js.map +0 -1
  15. package/dist/react/3d/ZenSpace3D.js +0 -1253
  16. package/dist/react/3d/ZenSpace3D.js.map +0 -1
  17. package/dist/react/3d/ZenSpace3DCesium.js +0 -186
  18. package/dist/react/3d/ZenSpace3DCesium.js.map +0 -1
  19. package/dist/react/3d/ZenSpace3DShaders.js +0 -94
  20. package/dist/react/3d/ZenSpace3DShaders.js.map +0 -1
  21. package/dist/react/3d/ZenSpace3DUtils.js +0 -213
  22. package/dist/react/3d/ZenSpace3DUtils.js.map +0 -1
  23. package/dist/react/3d/threeLoader.js +0 -18
  24. package/dist/react/3d/threeLoader.js.map +0 -1
  25. package/dist/react/cards/AccessCard.js +0 -410
  26. package/dist/react/cards/AccessCard.js.map +0 -1
  27. package/dist/react/cards/OrbitCard.js +0 -372
  28. package/dist/react/cards/OrbitCard.js.map +0 -1
  29. package/dist/react/cards/SpacecraftCard.js +0 -941
  30. package/dist/react/cards/SpacecraftCard.js.map +0 -1
  31. package/dist/react/cards/TelemetryCard.js +0 -742
  32. package/dist/react/cards/TelemetryCard.js.map +0 -1
  33. package/dist/react/cards/TelemetryStreamCard.js +0 -309
  34. package/dist/react/cards/TelemetryStreamCard.js.map +0 -1
  35. package/dist/react/charts/GroundTrackMap.js +0 -1123
  36. package/dist/react/charts/GroundTrackMap.js.map +0 -1
  37. package/dist/react/charts/GroundTrackMapLeaflet.js +0 -571
  38. package/dist/react/charts/GroundTrackMapLeaflet.js.map +0 -1
  39. package/dist/react/charts/groundTrackMapLeafletTiles.js +0 -11
  40. package/dist/react/charts/groundTrackMapLeafletTiles.js.map +0 -1
  41. package/dist/react/charts/groundTrackMapLeafletUtils.js +0 -109
  42. package/dist/react/charts/groundTrackMapLeafletUtils.js.map +0 -1
  43. package/dist/react/charts/unified/AstroChart.js +0 -1405
  44. package/dist/react/charts/unified/AstroChart.js.map +0 -1
  45. package/dist/react/charts/unified/PowerOverviewChart.js +0 -488
  46. package/dist/react/charts/unified/PowerOverviewChart.js.map +0 -1
  47. package/dist/react/charts/unified/domain.js +0 -3168
  48. package/dist/react/charts/unified/domain.js.map +0 -1
  49. package/dist/react/charts/unified/generators.js +0 -518
  50. package/dist/react/charts/unified/generators.js.map +0 -1
  51. package/dist/react/charts/unified/presets.js +0 -999
  52. package/dist/react/charts/unified/presets.js.map +0 -1
  53. package/dist/react/charts/unified/sync.js +0 -219
  54. package/dist/react/charts/unified/sync.js.map +0 -1
  55. package/dist/react/charts/unified/theme.js +0 -562
  56. package/dist/react/charts/unified/theme.js.map +0 -1
  57. package/dist/react/charts/unified/useChartStream.js +0 -226
  58. package/dist/react/charts/unified/useChartStream.js.map +0 -1
  59. package/dist/react/visualizations/EclipseTimerCard.js +0 -250
  60. package/dist/react/visualizations/EclipseTimerCard.js.map +0 -1
  61. package/dist/react/visualizations/LinkBudgetCard.js +0 -444
  62. package/dist/react/visualizations/LinkBudgetCard.js.map +0 -1
  63. package/dist/react/visualizations/NavBallCard.js +0 -243
  64. package/dist/react/visualizations/NavBallCard.js.map +0 -1
  65. package/dist/react/visualizations/PropulsionCard.js +0 -298
  66. package/dist/react/visualizations/PropulsionCard.js.map +0 -1
  67. package/dist/react/visualizations/SensorFootprintCard.js +0 -326
  68. package/dist/react/visualizations/SensorFootprintCard.js.map +0 -1
  69. package/dist/react/visualizations/ThermalHeatmapCard.js +0 -372
  70. package/dist/react/visualizations/ThermalHeatmapCard.js.map +0 -1
  71. package/dist/shaders/atmosphere.frag.js +0 -5
  72. package/dist/shaders/atmosphere.frag.js.map +0 -1
  73. package/dist/shaders/atmosphere.vert.js +0 -5
  74. package/dist/shaders/atmosphere.vert.js.map +0 -1
  75. package/dist/shaders/stars.frag.js +0 -5
  76. package/dist/shaders/stars.frag.js.map +0 -1
  77. package/dist/shaders/stars.vert.js +0 -5
  78. package/dist/shaders/stars.vert.js.map +0 -1
  79. package/dist/style.css +0 -143
package/dist/index.js CHANGED
@@ -1,19 +1,6 @@
1
1
  import { ErrorBoundary, withErrorBoundary } from "./react/shared/ErrorBoundary.js";
2
2
  import { Skeleton3D, SkeletonBox, SkeletonCard, SkeletonChart, SkeletonCircle, SkeletonText } from "./react/shared/Skeleton.js";
3
3
  import { STATUS_COLORS, addAlpha, clamp, classNames, focusRingStyle, formatAltitude, formatCoordinate, formatCountdown, formatDataRate, formatDecibels, formatDegrees, formatDistance, formatDuration, formatFrequency, formatLatLon, formatNumber, formatPercentage, formatPower, formatTabular, formatTemperature, formatTime, formatUTC, formatVelocity, getStatusColor, getStatusFromValue, getStatusSeverity, getWorstStatus, isStatusLevel, isValidNumber, lerp, mapRange, normalizeStatus, safeAccentText, safeNumber, tabularNumsStyle, transitions, withNullSafety } from "./react/utils/index.js";
4
- import { SpacecraftCard } from "./react/cards/SpacecraftCard.js";
5
- import { TelemetryCard } from "./react/cards/TelemetryCard.js";
6
- import { AccessCard } from "./react/cards/AccessCard.js";
7
- import { OrbitCard } from "./react/cards/OrbitCard.js";
8
- import { TelemetryStreamCard } from "./react/cards/TelemetryStreamCard.js";
9
- import { EclipseTimerCard } from "./react/visualizations/EclipseTimerCard.js";
10
- import { NavBallCard } from "./react/visualizations/NavBallCard.js";
11
- import { LinkBudgetCard } from "./react/visualizations/LinkBudgetCard.js";
12
- import { ThermalHeatmapCard } from "./react/visualizations/ThermalHeatmapCard.js";
13
- import { PropulsionCard } from "./react/visualizations/PropulsionCard.js";
14
- import { SensorFootprintCard } from "./react/visualizations/SensorFootprintCard.js";
15
- import { EarthViewer } from "./react/3d/EarthViewer.js";
16
- import { SolarSystemViewer } from "./react/3d/SolarSystemViewer.js";
17
4
  import { useZendirSession } from "./react/hooks/useZendirSession.js";
18
5
  import { useTelemetry } from "./react/hooks/useTelemetry.js";
19
6
  import { useSpacecraftPosition } from "./react/hooks/useSpacecraftPosition.js";
@@ -21,13 +8,9 @@ import { useCompactMode } from "./react/hooks/useCompactMode.js";
21
8
  import { isInChatGPT, useCallTool, useChatGPTTheme, useDisplayMode, useIntrinsicHeight, useLocale, useMaxHeight, useOpenAiGlobal, useOpenExternal, useSendMessage, useToolInput, useToolOutput, useWidgetState } from "./react/chatgpt/index.js";
22
9
  import { AppCard, ChatGPTCard } from "./react/chatgpt/AppCard.js";
23
10
  import { PLANETS, auToKm, estimateOrbitalPeriod, estimateOrbitalVelocity, getPlanet, normalizePlanetName } from "./react/types.js";
24
- import { ASTRO_DATA_VIZ_COLORS, STATUS_COLORS as STATUS_COLORS2, calculateAxisBounds, createAreaGradient, createAstroEChartsTheme, formatTimeLabel, formatValueWithUnit, getSeriesColor } from "./react/charts/unified/theme.js";
25
11
  import { ASTRO_ICON_NAMES, AstroIcon, getAllIconNames, getAstroIconNames, getIconAliases, isAstroIconsAvailable, isIconAlias, preloadAstroIcons } from "./react/core/AstroIcon.js";
26
12
  import { ActivityPlanner } from "./react/core/ActivityPlanner.js";
27
- import { AntennaPattern3DChart, AttitudeChart, AttitudeHistory3DChart, Bar3DChart, ConjunctionAssessment3DChart, ConjunctionChart, ConstellationCoverageChart, ContactWindowChart, DopplerTrackChart, EclipseTimelineChart, HeliocentricOrbitPlot, LaunchCorridor3DChart, Lines3DChart, LinkBudgetChart, LinkMarginChart, ManeuverBudgetChart, OrbitChart, PowerChart, RoseDiagram, Scatter3DChart, SpectrumChart, SphericalRadar3DChart, SubsystemGauge, Surface3DChart, ThermalHeatmapChart, TransferOrbit3DChart, WaterfallChart } from "./react/charts/unified/domain.js";
28
13
  import { AppBar } from "./react/core/AppBar.js";
29
- import { AreaChart, BarChart, BubbleChart, CandlestickChart, DonutChart, DualAxisChart, GaugeChart, GraphChart, HeatmapChart, HistogramChart, LineChart, ParallelChart, PieChart, RadarChart, SankeyChart, ScatterChart, StackedAreaChart, StackedBarChart, SunburstChart, TimeSeriesChart, TreemapChart } from "./react/charts/unified/presets.js";
30
- import { AstroChart } from "./react/charts/unified/AstroChart.js";
31
14
  import { BREAKPOINTS, useBreakpoint } from "./react/core/layout/useBreakpoint.js";
32
15
  import { Badge } from "./react/core/Badge.js";
33
16
  import { Body1, Body2, Body3, Compact, DataText, Display1, Display2, FONT_FAMILY_MONO, FONT_FAMILY_PRIMARY, FONT_WEIGHTS, H1, H2, H3, H4, H5, H6, Label, Micro, Mono, Typography } from "./react/core/Typography.js";
@@ -51,13 +34,11 @@ import { DataValue, DataValueGroup } from "./react/core/DataValue.js";
51
34
  import { Dialog } from "./react/core/Dialog.js";
52
35
  import { DisplaySettingsProvider, GLASS_TINTS, PRESET_COLORS, getEffectiveCompactMode, useDisplaySettings, useDisplaySettingsOptional } from "./react/context/DisplaySettingsContext.js";
53
36
  import { Divider } from "./react/core/layout/Divider.js";
54
- import { EARTH_RADIUS_KM, KM_TO_SCENE, SCENE_EARTH_RADIUS, calculateVisibilityConeGeometry, cartesianToLatLonAlt, generateHexGrid, generateOrbitPath, latLonAltToCartesian, parseTLE, propagateSGP4Simple, propagateSatellite } from "./react/3d/ZenSpace3DUtils.js";
55
37
  import { FileExplorer } from "./react/core/FileExplorer.js";
56
38
  import { Flex } from "./react/core/layout/Flex.js";
57
39
  import { GLASS_COLOR_OVERLAYS, GlassCard } from "./react/core/GlassCard.js";
58
40
  import { GlobalStatusBar } from "./react/astro/GlobalStatusBar.js";
59
41
  import { Grid } from "./react/core/layout/Grid.js";
60
- import { GroundTrackMap } from "./react/charts/GroundTrackMap.js";
61
42
  import { HStack, Stack, VStack } from "./react/core/layout/Stack.js";
62
43
  import { HeaderIconWithStatus } from "./react/core/HeaderIconWithStatus.js";
63
44
  import { HexViewer, REGION_BORDER_COLORS, REGION_COLORS } from "./react/core/HexViewer.js";
@@ -77,7 +58,6 @@ import { NumberInput } from "./react/core/NumberInput.js";
77
58
  import { PacketViewer } from "./react/core/PacketViewer.js";
78
59
  import { Pagination } from "./react/core/Pagination.js";
79
60
  import { PinInput } from "./react/core/PinInput.js";
80
- import { PowerOverviewChart, generateSamplePowerData } from "./react/charts/unified/PowerOverviewChart.js";
81
61
  import { Progress } from "./react/astro/Progress.js";
82
62
  import { Select } from "./react/core/Select.js";
83
63
  import { SideNav } from "./react/core/SideNav.js";
@@ -90,46 +70,28 @@ import { UnifiedTimeline } from "./react/astro/UnifiedTimeline.js";
90
70
  import { ToastProvider, useToast, useToastManager } from "./react/core/Toast.js";
91
71
  import { Toggle } from "./react/core/Toggle.js";
92
72
  import { Tooltip } from "./react/core/Tooltip.js";
93
- import { ZenSpace3D } from "./react/3d/ZenSpace3D.js";
94
- import { ZenSpace3DCesium } from "./react/3d/ZenSpace3DCesium.js";
95
- import { atmosphereFragmentShader, atmosphereVertexShader, starsFragmentShader, starsVertexShader } from "./react/3d/ZenSpace3DShaders.js";
96
- import { dispatchToGroup, exportGroupAsCSV, exportGroupAsImages, getGroupCharts, hideGroupTooltip, resetGroupZoom, showGroupTooltip, syncZoomRange, useChartSync } from "./react/charts/unified/sync.js";
97
- import { generateAttitudeData, generateConjunctionEvents, generateConstellationCoverage, generateContactWindows, generateDopplerData, generateEclipseTimeline, generateHeliocentricOrbits, generatePowerData, generateSpectrum, generateWaterfallData } from "./react/charts/unified/generators.js";
98
73
  import { resolveResponsive, resolveSpacing } from "./react/core/layout/responsive.js";
99
- import { useChartStream, useWebSocketStream } from "./react/charts/unified/useChartStream.js";
100
74
  export {
101
- ASTRO_DATA_VIZ_COLORS,
102
75
  ASTRO_ICON_NAMES,
103
- AccessCard,
104
76
  ActivityPlanner,
105
- AntennaPattern3DChart,
106
77
  AppBar,
107
78
  AppCard,
108
- AreaChart,
109
- AstroChart,
110
79
  AstroIcon,
111
- AttitudeChart,
112
- AttitudeHistory3DChart,
113
80
  BREAKPOINTS,
114
81
  Badge,
115
- Bar3DChart,
116
- BarChart,
117
82
  Body1,
118
83
  Body2,
119
84
  Body3,
120
85
  Box,
121
- BubbleChart,
122
86
  Button,
123
87
  CARD_ACCENT_COLORS,
124
88
  CATEGORY_ICONS,
125
89
  CATEGORY_LABELS,
126
- STATUS_COLORS2 as CHART_STATUS_COLORS,
127
90
  CHAT_RESPONSE_JSON_PROMPT,
128
91
  CHAT_RESPONSE_MCP_TOOL,
129
92
  CHAT_RESPONSE_TOOL_SCHEMA,
130
93
  CHAT_RESPONSE_YAML_PROMPT,
131
94
  CHAT_STATUS_RULES_PROMPT,
132
- CandlestickChart,
133
95
  CardAccentProvider,
134
96
  CardHeader,
135
97
  Center,
@@ -142,11 +104,7 @@ export {
142
104
  Compact,
143
105
  ConfirmDialog,
144
106
  ConfirmProvider,
145
- ConjunctionAssessment3DChart,
146
- ConjunctionChart,
147
107
  ConnectionForm,
148
- ConstellationCoverageChart,
149
- ContactWindowChart,
150
108
  Container,
151
109
  CopyButton,
152
110
  DataTable,
@@ -159,13 +117,6 @@ export {
159
117
  Display2,
160
118
  DisplaySettingsProvider,
161
119
  Divider,
162
- DonutChart,
163
- DopplerTrackChart,
164
- DualAxisChart,
165
- EARTH_RADIUS_KM,
166
- EarthViewer,
167
- EclipseTimelineChart,
168
- EclipseTimerCard,
169
120
  ErrorBoundary,
170
121
  FONT_FAMILY_MONO,
171
122
  FONT_FAMILY_PRIMARY,
@@ -174,12 +125,9 @@ export {
174
125
  Flex,
175
126
  GLASS_COLOR_OVERLAYS,
176
127
  GLASS_TINTS,
177
- GaugeChart,
178
128
  GlassCard,
179
129
  GlobalStatusBar,
180
- GraphChart,
181
130
  Grid,
182
- GroundTrackMap,
183
131
  H1,
184
132
  H2,
185
133
  H3,
@@ -188,24 +136,13 @@ export {
188
136
  H6,
189
137
  HStack,
190
138
  HeaderIconWithStatus,
191
- HeatmapChart,
192
- HeliocentricOrbitPlot,
193
139
  HexViewer,
194
- HistogramChart,
195
140
  Icon,
196
141
  ImageGallery,
197
142
  Input,
198
- KM_TO_SCENE,
199
143
  Label,
200
- LaunchCorridor3DChart,
201
144
  LimitsBar,
202
- LineChart,
203
- Lines3DChart,
204
- LinkBudgetCard,
205
- LinkBudgetChart,
206
- LinkMarginChart,
207
145
  LogViewer,
208
- ManeuverBudgetChart,
209
146
  Menu,
210
147
  MessageStream,
211
148
  Micro,
@@ -214,36 +151,21 @@ export {
214
151
  MissionClock,
215
152
  MonitoringIcon,
216
153
  Mono,
217
- NavBallCard,
218
154
  Notification,
219
155
  NumberInput,
220
- OrbitCard,
221
- OrbitChart,
222
156
  PLANETS,
223
157
  PRESET_COLORS,
224
158
  PROPERTY_PRESETS,
225
159
  PacketViewer,
226
160
  Pagination,
227
- ParallelChart,
228
- PieChart,
229
161
  PinInput,
230
162
  Popover,
231
- PowerChart,
232
- PowerOverviewChart,
233
163
  Progress,
234
- PropulsionCard,
235
164
  REGION_BORDER_COLORS,
236
165
  REGION_COLORS,
237
- RadarChart,
238
- RoseDiagram,
239
- SCENE_EARTH_RADIUS,
240
166
  SPACE_SYSTEM_COLORS,
241
167
  STATUS_COLORS,
242
- SankeyChart,
243
- Scatter3DChart,
244
- ScatterChart,
245
168
  Select,
246
- SensorFootprintCard,
247
169
  SideNav,
248
170
  SidePanel,
249
171
  SimulationControls,
@@ -254,56 +176,27 @@ export {
254
176
  SkeletonChart,
255
177
  SkeletonCircle,
256
178
  SkeletonText,
257
- SolarSystemViewer,
258
- SpacecraftCard,
259
179
  Spacer,
260
- SpectrumChart,
261
- SphericalRadar3DChart,
262
180
  Stack,
263
- StackedAreaChart,
264
- StackedBarChart,
265
181
  StatusIndicator,
266
- SubsystemGauge,
267
- SunburstChart,
268
- Surface3DChart,
269
182
  Tabs,
270
- TelemetryCard,
271
- TelemetryStreamCard,
272
183
  ThemeProvider,
273
- ThermalHeatmapCard,
274
- ThermalHeatmapChart,
275
- TimeSeriesChart,
276
184
  UnifiedTimeline as Timeline,
277
185
  ToastProvider,
278
186
  Toggle,
279
187
  Tooltip,
280
- TransferOrbit3DChart,
281
- TreemapChart,
282
188
  Typography,
283
189
  VStack,
284
- WaterfallChart,
285
- ZenSpace3D,
286
- ZenSpace3DCesium,
287
190
  addAlpha,
288
- atmosphereFragmentShader,
289
- atmosphereVertexShader,
290
191
  auToKm,
291
- calculateAxisBounds,
292
- calculateVisibilityConeGeometry,
293
- cartesianToLatLonAlt,
294
192
  clamp,
295
193
  classNames,
296
- createAreaGradient,
297
- createAstroEChartsTheme,
298
194
  createChatResponseParser,
299
195
  createPropertyConfig,
300
196
  deriveBatteryStatus,
301
197
  deriveStatus,
302
- dispatchToGroup,
303
198
  estimateOrbitalPeriod,
304
199
  estimateOrbitalVelocity,
305
- exportGroupAsCSV,
306
- exportGroupAsImages,
307
200
  focusRingStyle,
308
201
  formatAltitude,
309
202
  formatCoordinate,
@@ -323,73 +216,44 @@ export {
323
216
  formatTabular,
324
217
  formatTemperature,
325
218
  formatTime,
326
- formatTimeLabel,
327
219
  formatUTC,
328
- formatValueWithUnit,
329
220
  formatVelocity,
330
- generateAttitudeData,
331
- generateConjunctionEvents,
332
- generateConstellationCoverage,
333
- generateContactWindows,
334
- generateDopplerData,
335
- generateEclipseTimeline,
336
- generateHeliocentricOrbits,
337
- generateHexGrid,
338
- generateOrbitPath,
339
- generatePowerData,
340
- generateSamplePowerData,
341
- generateSpectrum,
342
- generateWaterfallData,
343
221
  getAccentColorOptions,
344
222
  getAllIconNames,
345
223
  getAstroIconNames,
346
224
  getEffectiveCompactMode,
347
- getGroupCharts,
348
225
  getIconAliases,
349
226
  getIconNames,
350
227
  getPlanet,
351
228
  getPropertiesByCategory,
352
229
  getPropertyConfig,
353
- getSeriesColor,
354
230
  getStatusColor,
355
231
  getStatusFromValue,
356
232
  getStatusSeverity,
357
233
  getSystemAccentColor,
358
234
  getWorstStatus,
359
- hideGroupTooltip,
360
235
  isAstroIconsAvailable,
361
236
  isIconAlias,
362
237
  isInChatGPT,
363
238
  isStatusLevel,
364
239
  isValidIconName,
365
240
  isValidNumber,
366
- latLonAltToCartesian,
367
241
  lerp,
368
242
  mapRange,
369
243
  normalizePlanetName,
370
244
  normalizeStatus,
371
245
  parseChatResponse,
372
246
  parseMcpToolResult,
373
- parseTLE,
374
247
  preloadAstroIcons,
375
- propagateSGP4Simple,
376
- propagateSatellite,
377
- resetGroupZoom,
378
248
  resolveResponsive,
379
249
  resolveSpacing,
380
250
  safeAccentText,
381
251
  safeNumber,
382
- showGroupTooltip,
383
- starsFragmentShader,
384
- starsVertexShader,
385
- syncZoomRange,
386
252
  tabularNumsStyle,
387
253
  transitions,
388
254
  useBreakpoint,
389
255
  useCallTool,
390
256
  useCardAccent,
391
- useChartStream,
392
- useChartSync,
393
257
  useChatGPTTheme,
394
258
  useCompactMode,
395
259
  useConfirm,
@@ -412,7 +276,6 @@ export {
412
276
  useToastManager,
413
277
  useToolInput,
414
278
  useToolOutput,
415
- useWebSocketStream,
416
279
  useWidgetState,
417
280
  useZendirSession,
418
281
  withErrorBoundary,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -146,23 +146,11 @@ function getEffectiveCompactMode(propValue, contextValue) {
146
146
  if (contextValue !== void 0) return contextValue;
147
147
  return false;
148
148
  }
149
- function useCardBorderStyle(tokens, isTransparentTheme) {
150
- const displaySettings = useDisplaySettingsOptional();
151
- const accentBorders = (displaySettings == null ? void 0 : displaySettings.accentBorders) ?? true;
152
- if (!isTransparentTheme) {
153
- return tokens.colors.border.cardStyle ?? { border: `1px solid ${tokens.colors.border.muted}` };
154
- }
155
- if (accentBorders) {
156
- return tokens.colors.border.cardStyle ?? {};
157
- }
158
- return { border: "1px solid rgba(255, 255, 255, 0.08)" };
159
- }
160
149
  export {
161
150
  DisplaySettingsProvider,
162
151
  GLASS_TINTS,
163
152
  PRESET_COLORS,
164
153
  getEffectiveCompactMode,
165
- useCardBorderStyle,
166
154
  useDisplaySettings,
167
155
  useDisplaySettingsOptional
168
156
  };
@@ -1 +1 @@
1
- {"version":3,"file":"DisplaySettingsContext.js","sources":["../../../src/react/context/DisplaySettingsContext.tsx"],"sourcesContent":["/**\n * @zendir/ui - DisplaySettingsContext\n * \n * Centralized context for app-wide display preferences.\n * Controls compact mode, accent colors, glass tint, and other display settings.\n * \n * Features:\n * - Compact mode toggle (affects all cards globally)\n * - Accent color selection (for card accents)\n * - Glass tint selection (for transparent themes)\n * - Color target control (both, accent-only, glass-only)\n * - LocalStorage persistence\n * \n * @example\n * ```tsx\n * import { DisplaySettingsProvider, useDisplaySettings } from '@zendir/ui';\n * \n * // Wrap your app\n * <DisplaySettingsProvider>\n * <App />\n * </DisplaySettingsProvider>\n * \n * // Use in components\n * function MyCard() {\n * const { compactMode, accentColor } = useDisplaySettings();\n * return <Card compact={compactMode} />;\n * }\n * ```\n */\n\nimport React, { createContext, useContext, useState, useCallback, useMemo, useEffect, type ReactNode } from 'react';\n\n// =============================================================================\n// Types\n// =============================================================================\n\nexport type ColorTarget = 'both' | 'accent' | 'glass';\n\nexport interface DisplaySettings {\n /** Global compact mode - affects all cards */\n compactMode: boolean;\n \n /** Accent color for cards and UI elements */\n accentColor: string;\n \n /** Glass tint color for transparent themes */\n glassTint: string;\n \n /** Which color setting to apply: both, accent-only, or glass-only */\n colorTarget: ColorTarget;\n \n /** Enable accent-colored borders on cards (for transparent themes) */\n accentBorders: boolean;\n}\n\nexport interface DisplaySettingsContextValue extends DisplaySettings {\n /** Set compact mode on/off */\n setCompactMode: (value: boolean) => void;\n \n /** Toggle compact mode */\n toggleCompactMode: () => void;\n \n /** Set accent color */\n setAccentColor: (color: string) => void;\n \n /** Set glass tint color */\n setGlassTint: (color: string) => void;\n \n /** Set which color setting to apply */\n setColorTarget: (target: ColorTarget) => void;\n \n /** Set a color that applies based on current target */\n setColor: (color: string) => void;\n \n /** Set accent borders on/off */\n setAccentBorders: (value: boolean) => void;\n \n /** Toggle accent borders */\n toggleAccentBorders: () => void;\n \n /** Reset all settings to defaults */\n resetSettings: () => void;\n}\n\n// =============================================================================\n// Preset Colors\n// =============================================================================\n\nexport const PRESET_COLORS = {\n purple: '#8b5cf6',\n blue: '#3b82f6',\n cyan: '#06b6d4',\n teal: '#14b8a6',\n green: '#10b981',\n lime: '#84cc16',\n amber: '#f59e0b',\n orange: '#f97316',\n pink: '#ec4899',\n red: '#ef4444',\n slate: '#64748b',\n} as const;\n\nexport const GLASS_TINTS = {\n ...PRESET_COLORS,\n clear: 'rgba(255,255,255,0.05)',\n dark: 'rgba(0,0,0,0.3)',\n} as const;\n\nexport type PresetColorKey = keyof typeof PRESET_COLORS;\nexport type GlassTintKey = keyof typeof GLASS_TINTS;\n\n// =============================================================================\n// Default Values\n// =============================================================================\n\nconst DEFAULT_SETTINGS: DisplaySettings = {\n compactMode: false,\n accentColor: PRESET_COLORS.purple,\n glassTint: PRESET_COLORS.purple,\n colorTarget: 'both',\n accentBorders: true,\n};\n\nconst STORAGE_KEY = 'zendir-display-settings';\n\n// =============================================================================\n// Context\n// =============================================================================\n\nconst DisplaySettingsContext = createContext<DisplaySettingsContextValue | null>(null);\n\n// =============================================================================\n// Provider Props\n// =============================================================================\n\nexport interface DisplaySettingsProviderProps {\n children: ReactNode;\n \n /** Initial compact mode state */\n defaultCompactMode?: boolean;\n \n /** Initial accent color */\n defaultAccentColor?: string;\n \n /** Initial glass tint color */\n defaultGlassTint?: string;\n \n /** Initial color target */\n defaultColorTarget?: ColorTarget;\n \n /** Initial accent borders state */\n defaultAccentBorders?: boolean;\n \n /** Enable localStorage persistence (default: true) */\n persist?: boolean;\n}\n\n// =============================================================================\n// Provider Component\n// =============================================================================\n\nexport function DisplaySettingsProvider({\n children,\n defaultCompactMode,\n defaultAccentColor,\n defaultGlassTint,\n defaultColorTarget,\n defaultAccentBorders,\n persist = true,\n}: DisplaySettingsProviderProps): React.ReactElement {\n // Initialize state from localStorage or defaults\n const [settings, setSettings] = useState<DisplaySettings>(() => {\n if (persist && typeof window !== 'undefined') {\n try {\n const stored = localStorage.getItem(STORAGE_KEY);\n if (stored) {\n const parsed = JSON.parse(stored);\n return {\n compactMode: parsed.compactMode ?? defaultCompactMode ?? DEFAULT_SETTINGS.compactMode,\n accentColor: parsed.accentColor ?? defaultAccentColor ?? DEFAULT_SETTINGS.accentColor,\n glassTint: parsed.glassTint ?? defaultGlassTint ?? DEFAULT_SETTINGS.glassTint,\n colorTarget: parsed.colorTarget ?? defaultColorTarget ?? DEFAULT_SETTINGS.colorTarget,\n accentBorders: parsed.accentBorders ?? defaultAccentBorders ?? DEFAULT_SETTINGS.accentBorders,\n };\n }\n } catch {\n // Ignore parse errors\n }\n }\n \n return {\n compactMode: defaultCompactMode ?? DEFAULT_SETTINGS.compactMode,\n accentColor: defaultAccentColor ?? DEFAULT_SETTINGS.accentColor,\n glassTint: defaultGlassTint ?? DEFAULT_SETTINGS.glassTint,\n colorTarget: defaultColorTarget ?? DEFAULT_SETTINGS.colorTarget,\n accentBorders: defaultAccentBorders ?? DEFAULT_SETTINGS.accentBorders,\n };\n });\n \n // Persist to localStorage when settings change\n useEffect(() => {\n if (persist && typeof window !== 'undefined') {\n try {\n localStorage.setItem(STORAGE_KEY, JSON.stringify(settings));\n } catch {\n // Ignore storage errors\n }\n }\n }, [settings, persist]);\n \n // Setters\n const setCompactMode = useCallback((value: boolean) => {\n setSettings(prev => ({ ...prev, compactMode: value }));\n }, []);\n \n const toggleCompactMode = useCallback(() => {\n setSettings(prev => ({ ...prev, compactMode: !prev.compactMode }));\n }, []);\n \n const setAccentColor = useCallback((color: string) => {\n setSettings(prev => ({ ...prev, accentColor: color }));\n }, []);\n \n const setGlassTint = useCallback((color: string) => {\n setSettings(prev => ({ ...prev, glassTint: color }));\n }, []);\n \n const setColorTarget = useCallback((target: ColorTarget) => {\n setSettings(prev => ({ ...prev, colorTarget: target }));\n }, []);\n \n // Set color based on current target\n const setColor = useCallback((color: string) => {\n setSettings(prev => {\n switch (prev.colorTarget) {\n case 'accent':\n return { ...prev, accentColor: color };\n case 'glass':\n return { ...prev, glassTint: color };\n case 'both':\n default:\n return { ...prev, accentColor: color, glassTint: color };\n }\n });\n }, []);\n \n const setAccentBorders = useCallback((value: boolean) => {\n setSettings(prev => ({ ...prev, accentBorders: value }));\n }, []);\n \n const toggleAccentBorders = useCallback(() => {\n setSettings(prev => ({ ...prev, accentBorders: !prev.accentBorders }));\n }, []);\n \n const resetSettings = useCallback(() => {\n setSettings(DEFAULT_SETTINGS);\n }, []);\n \n // Memoized context value\n const value = useMemo<DisplaySettingsContextValue>(() => ({\n ...settings,\n setCompactMode,\n toggleCompactMode,\n setAccentColor,\n setGlassTint,\n setColorTarget,\n setColor,\n setAccentBorders,\n toggleAccentBorders,\n resetSettings,\n }), [\n settings,\n setCompactMode,\n toggleCompactMode,\n setAccentColor,\n setGlassTint,\n setColorTarget,\n setColor,\n setAccentBorders,\n toggleAccentBorders,\n resetSettings,\n ]);\n \n return (\n <DisplaySettingsContext.Provider value={value}>\n {children}\n </DisplaySettingsContext.Provider>\n );\n}\n\n// =============================================================================\n// Hook\n// =============================================================================\n\n/**\n * Access display settings context\n * Must be used within a DisplaySettingsProvider\n */\nexport function useDisplaySettings(): DisplaySettingsContextValue {\n const context = useContext(DisplaySettingsContext);\n \n if (!context) {\n throw new Error('useDisplaySettings must be used within a DisplaySettingsProvider');\n }\n \n return context;\n}\n\n/**\n * Optional hook that returns null if not within provider\n * Useful for components that should work with or without the provider\n */\nexport function useDisplaySettingsOptional(): DisplaySettingsContextValue | null {\n return useContext(DisplaySettingsContext);\n}\n\n// =============================================================================\n// Utility Functions\n// =============================================================================\n\n/**\n * Get effective compact mode value\n * Priority: explicit prop > context value > default (false)\n */\nexport function getEffectiveCompactMode(\n propValue: boolean | undefined,\n contextValue: boolean | undefined\n): boolean {\n if (propValue !== undefined) return propValue;\n if (contextValue !== undefined) return contextValue;\n return false;\n}\n\n/**\n * Get effective accent borders value\n * Priority: explicit prop > context value > default (true)\n */\nexport function getEffectiveAccentBorders(\n propValue: boolean | undefined,\n contextValue: boolean | undefined\n): boolean {\n if (propValue !== undefined) return propValue;\n if (contextValue !== undefined) return contextValue;\n return true;\n}\n\n/**\n * Hook to get card border style based on accentBorders setting\n * Returns the appropriate border style for transparent themes\n */\nexport function useCardBorderStyle(\n tokens: any,\n isTransparentTheme: boolean\n): React.CSSProperties {\n const displaySettings = useDisplaySettingsOptional();\n const accentBorders = displaySettings?.accentBorders ?? true;\n \n if (!isTransparentTheme) {\n return tokens.colors.border.cardStyle ?? { border: `1px solid ${tokens.colors.border.muted}` };\n }\n \n if (accentBorders) {\n return tokens.colors.border.cardStyle ?? {};\n }\n \n // Fallback to subtle neutral border when accent borders disabled\n return { border: '1px solid rgba(255, 255, 255, 0.08)' };\n}\n\nexport default DisplaySettingsProvider;\n"],"names":["value"],"mappings":"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"}
1
+ {"version":3,"file":"DisplaySettingsContext.js","sources":["../../../src/react/context/DisplaySettingsContext.tsx"],"sourcesContent":["/**\n * @zendir/ui - DisplaySettingsContext\n * \n * Centralized context for app-wide display preferences.\n * Controls compact mode, accent colors, glass tint, and other display settings.\n * \n * Features:\n * - Compact mode toggle (affects all cards globally)\n * - Accent color selection (for card accents)\n * - Glass tint selection (for transparent themes)\n * - Color target control (both, accent-only, glass-only)\n * - LocalStorage persistence\n * \n * @example\n * ```tsx\n * import { DisplaySettingsProvider, useDisplaySettings } from '@zendir/ui';\n * \n * // Wrap your app\n * <DisplaySettingsProvider>\n * <App />\n * </DisplaySettingsProvider>\n * \n * // Use in components\n * function MyCard() {\n * const { compactMode, accentColor } = useDisplaySettings();\n * return <Card compact={compactMode} />;\n * }\n * ```\n */\n\nimport React, { createContext, useContext, useState, useCallback, useMemo, useEffect, type ReactNode } from 'react';\n\n// =============================================================================\n// Types\n// =============================================================================\n\nexport type ColorTarget = 'both' | 'accent' | 'glass';\n\nexport interface DisplaySettings {\n /** Global compact mode - affects all cards */\n compactMode: boolean;\n \n /** Accent color for cards and UI elements */\n accentColor: string;\n \n /** Glass tint color for transparent themes */\n glassTint: string;\n \n /** Which color setting to apply: both, accent-only, or glass-only */\n colorTarget: ColorTarget;\n \n /** Enable accent-colored borders on cards (for transparent themes) */\n accentBorders: boolean;\n}\n\nexport interface DisplaySettingsContextValue extends DisplaySettings {\n /** Set compact mode on/off */\n setCompactMode: (value: boolean) => void;\n \n /** Toggle compact mode */\n toggleCompactMode: () => void;\n \n /** Set accent color */\n setAccentColor: (color: string) => void;\n \n /** Set glass tint color */\n setGlassTint: (color: string) => void;\n \n /** Set which color setting to apply */\n setColorTarget: (target: ColorTarget) => void;\n \n /** Set a color that applies based on current target */\n setColor: (color: string) => void;\n \n /** Set accent borders on/off */\n setAccentBorders: (value: boolean) => void;\n \n /** Toggle accent borders */\n toggleAccentBorders: () => void;\n \n /** Reset all settings to defaults */\n resetSettings: () => void;\n}\n\n// =============================================================================\n// Preset Colors\n// =============================================================================\n\nexport const PRESET_COLORS = {\n purple: '#8b5cf6',\n blue: '#3b82f6',\n cyan: '#06b6d4',\n teal: '#14b8a6',\n green: '#10b981',\n lime: '#84cc16',\n amber: '#f59e0b',\n orange: '#f97316',\n pink: '#ec4899',\n red: '#ef4444',\n slate: '#64748b',\n} as const;\n\nexport const GLASS_TINTS = {\n ...PRESET_COLORS,\n clear: 'rgba(255,255,255,0.05)',\n dark: 'rgba(0,0,0,0.3)',\n} as const;\n\nexport type PresetColorKey = keyof typeof PRESET_COLORS;\nexport type GlassTintKey = keyof typeof GLASS_TINTS;\n\n// =============================================================================\n// Default Values\n// =============================================================================\n\nconst DEFAULT_SETTINGS: DisplaySettings = {\n compactMode: false,\n accentColor: PRESET_COLORS.purple,\n glassTint: PRESET_COLORS.purple,\n colorTarget: 'both',\n accentBorders: true,\n};\n\nconst STORAGE_KEY = 'zendir-display-settings';\n\n// =============================================================================\n// Context\n// =============================================================================\n\nconst DisplaySettingsContext = createContext<DisplaySettingsContextValue | null>(null);\n\n// =============================================================================\n// Provider Props\n// =============================================================================\n\nexport interface DisplaySettingsProviderProps {\n children: ReactNode;\n \n /** Initial compact mode state */\n defaultCompactMode?: boolean;\n \n /** Initial accent color */\n defaultAccentColor?: string;\n \n /** Initial glass tint color */\n defaultGlassTint?: string;\n \n /** Initial color target */\n defaultColorTarget?: ColorTarget;\n \n /** Initial accent borders state */\n defaultAccentBorders?: boolean;\n \n /** Enable localStorage persistence (default: true) */\n persist?: boolean;\n}\n\n// =============================================================================\n// Provider Component\n// =============================================================================\n\nexport function DisplaySettingsProvider({\n children,\n defaultCompactMode,\n defaultAccentColor,\n defaultGlassTint,\n defaultColorTarget,\n defaultAccentBorders,\n persist = true,\n}: DisplaySettingsProviderProps): React.ReactElement {\n // Initialize state from localStorage or defaults\n const [settings, setSettings] = useState<DisplaySettings>(() => {\n if (persist && typeof window !== 'undefined') {\n try {\n const stored = localStorage.getItem(STORAGE_KEY);\n if (stored) {\n const parsed = JSON.parse(stored);\n return {\n compactMode: parsed.compactMode ?? defaultCompactMode ?? DEFAULT_SETTINGS.compactMode,\n accentColor: parsed.accentColor ?? defaultAccentColor ?? DEFAULT_SETTINGS.accentColor,\n glassTint: parsed.glassTint ?? defaultGlassTint ?? DEFAULT_SETTINGS.glassTint,\n colorTarget: parsed.colorTarget ?? defaultColorTarget ?? DEFAULT_SETTINGS.colorTarget,\n accentBorders: parsed.accentBorders ?? defaultAccentBorders ?? DEFAULT_SETTINGS.accentBorders,\n };\n }\n } catch {\n // Ignore parse errors\n }\n }\n \n return {\n compactMode: defaultCompactMode ?? DEFAULT_SETTINGS.compactMode,\n accentColor: defaultAccentColor ?? DEFAULT_SETTINGS.accentColor,\n glassTint: defaultGlassTint ?? DEFAULT_SETTINGS.glassTint,\n colorTarget: defaultColorTarget ?? DEFAULT_SETTINGS.colorTarget,\n accentBorders: defaultAccentBorders ?? DEFAULT_SETTINGS.accentBorders,\n };\n });\n \n // Persist to localStorage when settings change\n useEffect(() => {\n if (persist && typeof window !== 'undefined') {\n try {\n localStorage.setItem(STORAGE_KEY, JSON.stringify(settings));\n } catch {\n // Ignore storage errors\n }\n }\n }, [settings, persist]);\n \n // Setters\n const setCompactMode = useCallback((value: boolean) => {\n setSettings(prev => ({ ...prev, compactMode: value }));\n }, []);\n \n const toggleCompactMode = useCallback(() => {\n setSettings(prev => ({ ...prev, compactMode: !prev.compactMode }));\n }, []);\n \n const setAccentColor = useCallback((color: string) => {\n setSettings(prev => ({ ...prev, accentColor: color }));\n }, []);\n \n const setGlassTint = useCallback((color: string) => {\n setSettings(prev => ({ ...prev, glassTint: color }));\n }, []);\n \n const setColorTarget = useCallback((target: ColorTarget) => {\n setSettings(prev => ({ ...prev, colorTarget: target }));\n }, []);\n \n // Set color based on current target\n const setColor = useCallback((color: string) => {\n setSettings(prev => {\n switch (prev.colorTarget) {\n case 'accent':\n return { ...prev, accentColor: color };\n case 'glass':\n return { ...prev, glassTint: color };\n case 'both':\n default:\n return { ...prev, accentColor: color, glassTint: color };\n }\n });\n }, []);\n \n const setAccentBorders = useCallback((value: boolean) => {\n setSettings(prev => ({ ...prev, accentBorders: value }));\n }, []);\n \n const toggleAccentBorders = useCallback(() => {\n setSettings(prev => ({ ...prev, accentBorders: !prev.accentBorders }));\n }, []);\n \n const resetSettings = useCallback(() => {\n setSettings(DEFAULT_SETTINGS);\n }, []);\n \n // Memoized context value\n const value = useMemo<DisplaySettingsContextValue>(() => ({\n ...settings,\n setCompactMode,\n toggleCompactMode,\n setAccentColor,\n setGlassTint,\n setColorTarget,\n setColor,\n setAccentBorders,\n toggleAccentBorders,\n resetSettings,\n }), [\n settings,\n setCompactMode,\n toggleCompactMode,\n setAccentColor,\n setGlassTint,\n setColorTarget,\n setColor,\n setAccentBorders,\n toggleAccentBorders,\n resetSettings,\n ]);\n \n return (\n <DisplaySettingsContext.Provider value={value}>\n {children}\n </DisplaySettingsContext.Provider>\n );\n}\n\n// =============================================================================\n// Hook\n// =============================================================================\n\n/**\n * Access display settings context\n * Must be used within a DisplaySettingsProvider\n */\nexport function useDisplaySettings(): DisplaySettingsContextValue {\n const context = useContext(DisplaySettingsContext);\n \n if (!context) {\n throw new Error('useDisplaySettings must be used within a DisplaySettingsProvider');\n }\n \n return context;\n}\n\n/**\n * Optional hook that returns null if not within provider\n * Useful for components that should work with or without the provider\n */\nexport function useDisplaySettingsOptional(): DisplaySettingsContextValue | null {\n return useContext(DisplaySettingsContext);\n}\n\n// =============================================================================\n// Utility Functions\n// =============================================================================\n\n/**\n * Get effective compact mode value\n * Priority: explicit prop > context value > default (false)\n */\nexport function getEffectiveCompactMode(\n propValue: boolean | undefined,\n contextValue: boolean | undefined\n): boolean {\n if (propValue !== undefined) return propValue;\n if (contextValue !== undefined) return contextValue;\n return false;\n}\n\n/**\n * Get effective accent borders value\n * Priority: explicit prop > context value > default (true)\n */\nexport function getEffectiveAccentBorders(\n propValue: boolean | undefined,\n contextValue: boolean | undefined\n): boolean {\n if (propValue !== undefined) return propValue;\n if (contextValue !== undefined) return contextValue;\n return true;\n}\n\n/**\n * Hook to get card border style based on accentBorders setting\n * Returns the appropriate border style for transparent themes\n */\nexport function useCardBorderStyle(\n tokens: any,\n isTransparentTheme: boolean\n): React.CSSProperties {\n const displaySettings = useDisplaySettingsOptional();\n const accentBorders = displaySettings?.accentBorders ?? true;\n \n if (!isTransparentTheme) {\n return tokens.colors.border.cardStyle ?? { border: `1px solid ${tokens.colors.border.muted}` };\n }\n \n if (accentBorders) {\n return tokens.colors.border.cardStyle ?? {};\n }\n \n // Fallback to subtle neutral border when accent borders disabled\n return { border: '1px solid rgba(255, 255, 255, 0.08)' };\n}\n\nexport default DisplaySettingsProvider;\n"],"names":["value"],"mappings":"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"}
@@ -28,36 +28,6 @@ export { withNullSafety, safeNumber, isValidNumber, formatNumber, formatTabular,
28
28
  export type { StatusLevel, FormatNumberOptions } from './utils';
29
29
  export { StatusIndicator, ClassificationBanner, GlobalStatusBar, MissionClock, MonitoringIcon, Progress, Notification, Timeline, SimulationControls, MiniSimulationControls, SimulationControlsWithClock, } from './astro';
30
30
  export type { StatusIndicatorProps, StatusVariant, ClassificationBannerProps, ClassificationLevel, GlobalStatusBarProps, MissionClockProps, MonitoringIconProps, MonitoringStatus, ProgressProps, NotificationProps, NotificationStatus, TimelineProps, TimelineEvent, TimelineTrackDef, TimelineViewMode, TimeFormat, TimelineFilter, AstroStatus, AstroClassification, SimulationControlsProps, MiniSimulationControlsProps, SimulationControlsWithClockProps, } from './astro';
31
- export { SpacecraftCard } from './cards/SpacecraftCard';
32
- export type { SpacecraftCardProps } from './cards/SpacecraftCard';
33
- export { TelemetryCard } from './cards/TelemetryCard';
34
- export type { TelemetryCardProps } from './cards/TelemetryCard';
35
- export { AccessCard } from './cards/AccessCard';
36
- export type { AccessCardProps } from './cards/AccessCard';
37
- export { OrbitCard } from './cards/OrbitCard';
38
- export type { OrbitCardProps } from './cards/OrbitCard';
39
- export { TelemetryStreamCard } from './cards/TelemetryStreamCard';
40
- export type { TelemetryStreamCardProps, TelemetryMetric } from './cards/TelemetryStreamCard';
41
- export { AstroChart, LineChart, AreaChart, BarChart, ScatterChart, PieChart, DonutChart, GaugeChart, RadarChart, HeatmapChart, TimeSeriesChart, DualAxisChart, StackedAreaChart, StackedBarChart, BubbleChart, HistogramChart, SankeyChart, TreemapChart, SunburstChart, ParallelChart, CandlestickChart, GraphChart, PowerChart, AttitudeChart, ThermalHeatmapChart, LinkBudgetChart, SubsystemGauge, OrbitChart, ContactWindowChart, SpectrumChart, ManeuverBudgetChart, EclipseTimelineChart, RoseDiagram, HeliocentricOrbitPlot, Scatter3DChart, Bar3DChart, Surface3DChart, Lines3DChart, SphericalRadar3DChart, TransferOrbit3DChart, AttitudeHistory3DChart, ConjunctionAssessment3DChart, LaunchCorridor3DChart, AntennaPattern3DChart, WaterfallChart, DopplerTrackChart, LinkMarginChart, ConstellationCoverageChart, ConjunctionChart, generatePowerData, generateAttitudeData, generateDopplerData, generateWaterfallData, generateContactWindows, generateHeliocentricOrbits, generateSpectrum, generateEclipseTimeline, generateConstellationCoverage, generateConjunctionEvents, PowerOverviewChart, generateSamplePowerData, createAstroEChartsTheme, ASTRO_DATA_VIZ_COLORS, STATUS_COLORS as CHART_STATUS_COLORS, getSeriesColor, createAreaGradient, formatTimeLabel, formatValueWithUnit, calculateAxisBounds, useChartStream, useWebSocketStream, useChartSync, dispatchToGroup, syncZoomRange, resetGroupZoom, showGroupTooltip, hideGroupTooltip, getGroupCharts, exportGroupAsImages, exportGroupAsCSV, GroundTrackMap, } from './charts';
42
- export type { AstroChartHandle, AstroChartProps, ChartType, ChartTheme, DataPoint, TimeSeriesPoint, SeriesData, AxisOptions, ZoomOptions, TooltipOptions as ChartTooltipOptions, LegendOptions, AnnotationOptions, RealTimeOptions, ExportOptions, ChartEventParams, ZoomEventParams, PowerChartData, AttitudeChartData, ThermalChartData, LinkBudgetChartData, ContactWindowData, SpectrumDataPoint, ManeuverBudgetData, EclipseTimelineData, BubbleDataPoint, RoseDiagramData, HeliocentricOrbitData, Data3DPoint, Scatter3DData, Bar3DData, Surface3DData, Lines3DData, LineChartProps, AreaChartProps, BarChartProps, ScatterChartProps, PieChartProps, GaugeChartProps, RadarChartProps, HeatmapChartProps, TimeSeriesChartProps, DualAxisChartProps, BubbleChartProps, HistogramChartProps, SankeyChartProps, TreemapChartProps, TreemapDataNode, SunburstChartProps, SunburstDataNode, ParallelChartProps, ParallelAxisDef, CandlestickChartProps, CandlestickDataPoint, GraphChartProps, GraphNode, GraphLink, GraphCategory, PowerChartProps, AttitudeChartProps, ThermalHeatmapChartProps, LinkBudgetChartProps, SubsystemGaugeProps, OrbitChartProps, ContactWindowChartProps, SpectrumChartProps, ManeuverBudgetChartProps, EclipseTimelineChartProps, RoseDiagramProps, HeliocentricOrbitProps, Scatter3DChartProps, Bar3DChartProps, Surface3DChartProps, Lines3DChartProps, SphericalRadar3DChartProps, SphericalRadar3DData, TransferOrbit3DChartProps, TransferOrbitSegment, TransferOrbitWaypoint, AttitudeHistory3DChartProps, AttitudeHistoryPoint, ConjunctionAssessment3DChartProps, ConjunctionEvent, LaunchCorridor3DChartProps, LaunchCorridorData, AntennaPattern3DChartProps, AntennaPattern3DData, WaterfallChartProps, DopplerTrackChartProps, LinkMarginChartProps, WaterfallDataPoint, WaterfallSignalMarker, DopplerTrackPoint, SatellitePassInfo, LinkMarginPoint, CoverageGridData, PowerGeneratorConfig, AttitudeGeneratorConfig, DopplerGeneratorConfig, WaterfallGeneratorConfig, ContactGeneratorConfig, HeliocentricGeneratorConfig, SpectrumGeneratorConfig, EclipseGeneratorConfig, PowerOverviewChartProps, PowerTimelinePoint, PowerEvent, PowerState, OperationalMode, EventType, StreamOptions, StreamController, UseChartSyncOptions, EChartsTheme, GroundTrackMapProps, SatelliteTrack, GroundStationEnhanced, TeamPath, SROGroundStation, } from './charts';
43
- export { EclipseTimerCard } from './visualizations/EclipseTimerCard';
44
- export type { EclipseTimerCardProps } from './visualizations/EclipseTimerCard';
45
- export { NavBallCard } from './visualizations/NavBallCard';
46
- export type { NavBallCardProps } from './visualizations/NavBallCard';
47
- export { LinkBudgetCard } from './visualizations/LinkBudgetCard';
48
- export type { LinkBudgetCardProps, LinkBudgetData } from './visualizations/LinkBudgetCard';
49
- export { ThermalHeatmapCard } from './visualizations/ThermalHeatmapCard';
50
- export type { ThermalHeatmapCardProps, ComponentThermal } from './visualizations/ThermalHeatmapCard';
51
- export { PropulsionCard } from './visualizations/PropulsionCard';
52
- export type { PropulsionCardProps, PropulsionTankData, ManeuverFeasibility } from './visualizations/PropulsionCard';
53
- export { SensorFootprintCard } from './visualizations/SensorFootprintCard';
54
- export type { SensorFootprintCardProps, FootprintSensorConfig } from './visualizations/SensorFootprintCard';
55
- export { ZenSpace3D, ZenSpace3DCesium, latLonAltToCartesian, cartesianToLatLonAlt, parseTLE, propagateSGP4Simple, propagateSatellite, generateOrbitPath, calculateVisibilityConeGeometry, generateHexGrid, atmosphereVertexShader, atmosphereFragmentShader, starsVertexShader, starsFragmentShader, EARTH_RADIUS_KM, SCENE_EARTH_RADIUS, KM_TO_SCENE, } from './3d';
56
- export type { ZenSpace3DProps, ZenSpace3DHandle, ZenSpace3DCesiumProps, ViewMode, CameraMode, ObjectCategory, SpaceObject, Satellite as ZenSatellite, Debris, SpaceStation as ZenSpaceStation, Asteroid, TLEData, OrbitPath, ManeuverNode, VisibilityCone, CoverageRegion, CoverageHexGrid, OverpassInfo, TimeState, SelectionState, CameraState, LayerVisibility, ToolType, Vector3D, LatLonAlt, ZenSpace3DCallbacks, } from './3d';
57
- export { EarthViewer } from './3d/EarthViewer';
58
- export type { EarthViewerProps } from './3d/EarthViewer';
59
- export { SolarSystemViewer } from './3d/SolarSystemViewer';
60
- export type { SolarSystemViewerProps, PlanetPosition } from './3d/SolarSystemViewer';
61
31
  export { useZendirSession } from './hooks/useZendirSession';
62
32
  export type { UseZendirSessionOptions, UseZendirSessionResult } from './hooks/useZendirSession';
63
33
  export { useTelemetry } from './hooks/useTelemetry';
@@ -230,13 +230,6 @@ const STATUS_COLORS = {
230
230
  function getStatusColor(status) {
231
231
  return STATUS_COLORS[status ?? "off"];
232
232
  }
233
- function deriveBatteryStatus(level) {
234
- if (level === void 0 || level === null) return "off";
235
- if (level <= 10) return "critical";
236
- if (level <= 20) return "serious";
237
- if (level <= 30) return "caution";
238
- return "normal";
239
- }
240
233
  function getStatusFromValue(value, thresholds, higherIsBetter = true) {
241
234
  if (value === null || value === void 0 || !Number.isFinite(value)) {
242
235
  return "off";
@@ -385,7 +378,6 @@ export {
385
378
  addAlpha,
386
379
  clamp,
387
380
  classNames,
388
- deriveBatteryStatus,
389
381
  focusRingStyle,
390
382
  formatAltitude,
391
383
  formatCoordinate,