@zendir/ui 0.1.8 → 0.1.10

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 (92) hide show
  1. package/dist/index.js +0 -169
  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/core/AstroIcon.js +1 -816
  6. package/dist/react/core/AstroIcon.js.map +1 -1
  7. package/dist/react/core/index.d.ts +0 -1
  8. package/dist/react/index.d.ts +2 -42
  9. package/dist/react/utils/index.js +0 -8
  10. package/dist/react/utils/index.js.map +1 -1
  11. package/dist/react.js +0 -169
  12. package/dist/react.js.map +1 -1
  13. package/package.json +1 -1
  14. package/dist/react/3d/EarthViewer.js +0 -836
  15. package/dist/react/3d/EarthViewer.js.map +0 -1
  16. package/dist/react/3d/SolarSystemViewer.js +0 -372
  17. package/dist/react/3d/SolarSystemViewer.js.map +0 -1
  18. package/dist/react/3d/ZenSpace3D.js +0 -1253
  19. package/dist/react/3d/ZenSpace3D.js.map +0 -1
  20. package/dist/react/3d/ZenSpace3DCesium.js +0 -186
  21. package/dist/react/3d/ZenSpace3DCesium.js.map +0 -1
  22. package/dist/react/3d/ZenSpace3DShaders.js +0 -94
  23. package/dist/react/3d/ZenSpace3DShaders.js.map +0 -1
  24. package/dist/react/3d/ZenSpace3DUtils.js +0 -213
  25. package/dist/react/3d/ZenSpace3DUtils.js.map +0 -1
  26. package/dist/react/3d/threeLoader.js +0 -18
  27. package/dist/react/3d/threeLoader.js.map +0 -1
  28. package/dist/react/cards/AccessCard.js +0 -410
  29. package/dist/react/cards/AccessCard.js.map +0 -1
  30. package/dist/react/cards/OrbitCard.js +0 -372
  31. package/dist/react/cards/OrbitCard.js.map +0 -1
  32. package/dist/react/cards/SpacecraftCard.js +0 -941
  33. package/dist/react/cards/SpacecraftCard.js.map +0 -1
  34. package/dist/react/cards/TelemetryCard.js +0 -742
  35. package/dist/react/cards/TelemetryCard.js.map +0 -1
  36. package/dist/react/cards/TelemetryStreamCard.js +0 -309
  37. package/dist/react/cards/TelemetryStreamCard.js.map +0 -1
  38. package/dist/react/charts/GroundTrackMap.js +0 -1123
  39. package/dist/react/charts/GroundTrackMap.js.map +0 -1
  40. package/dist/react/charts/GroundTrackMapLeaflet.js +0 -571
  41. package/dist/react/charts/GroundTrackMapLeaflet.js.map +0 -1
  42. package/dist/react/charts/groundTrackMapLeafletTiles.js +0 -11
  43. package/dist/react/charts/groundTrackMapLeafletTiles.js.map +0 -1
  44. package/dist/react/charts/groundTrackMapLeafletUtils.js +0 -109
  45. package/dist/react/charts/groundTrackMapLeafletUtils.js.map +0 -1
  46. package/dist/react/charts/unified/AstroChart.js +0 -1405
  47. package/dist/react/charts/unified/AstroChart.js.map +0 -1
  48. package/dist/react/charts/unified/PowerOverviewChart.js +0 -488
  49. package/dist/react/charts/unified/PowerOverviewChart.js.map +0 -1
  50. package/dist/react/charts/unified/domain.js +0 -3168
  51. package/dist/react/charts/unified/domain.js.map +0 -1
  52. package/dist/react/charts/unified/generators.js +0 -518
  53. package/dist/react/charts/unified/generators.js.map +0 -1
  54. package/dist/react/charts/unified/presets.js +0 -999
  55. package/dist/react/charts/unified/presets.js.map +0 -1
  56. package/dist/react/charts/unified/sync.js +0 -219
  57. package/dist/react/charts/unified/sync.js.map +0 -1
  58. package/dist/react/charts/unified/theme.js +0 -562
  59. package/dist/react/charts/unified/theme.js.map +0 -1
  60. package/dist/react/charts/unified/useChartStream.js +0 -226
  61. package/dist/react/charts/unified/useChartStream.js.map +0 -1
  62. package/dist/react/chatgpt/AppCard.js +0 -306
  63. package/dist/react/chatgpt/AppCard.js.map +0 -1
  64. package/dist/react/chatgpt/index.js +0 -166
  65. package/dist/react/chatgpt/index.js.map +0 -1
  66. package/dist/react/hooks/useSpacecraftPosition.js +0 -89
  67. package/dist/react/hooks/useSpacecraftPosition.js.map +0 -1
  68. package/dist/react/hooks/useTelemetry.js +0 -73
  69. package/dist/react/hooks/useTelemetry.js.map +0 -1
  70. package/dist/react/hooks/useZendirSession.js +0 -148
  71. package/dist/react/hooks/useZendirSession.js.map +0 -1
  72. package/dist/react/visualizations/EclipseTimerCard.js +0 -250
  73. package/dist/react/visualizations/EclipseTimerCard.js.map +0 -1
  74. package/dist/react/visualizations/LinkBudgetCard.js +0 -444
  75. package/dist/react/visualizations/LinkBudgetCard.js.map +0 -1
  76. package/dist/react/visualizations/NavBallCard.js +0 -243
  77. package/dist/react/visualizations/NavBallCard.js.map +0 -1
  78. package/dist/react/visualizations/PropulsionCard.js +0 -298
  79. package/dist/react/visualizations/PropulsionCard.js.map +0 -1
  80. package/dist/react/visualizations/SensorFootprintCard.js +0 -326
  81. package/dist/react/visualizations/SensorFootprintCard.js.map +0 -1
  82. package/dist/react/visualizations/ThermalHeatmapCard.js +0 -372
  83. package/dist/react/visualizations/ThermalHeatmapCard.js.map +0 -1
  84. package/dist/shaders/atmosphere.frag.js +0 -5
  85. package/dist/shaders/atmosphere.frag.js.map +0 -1
  86. package/dist/shaders/atmosphere.vert.js +0 -5
  87. package/dist/shaders/atmosphere.vert.js.map +0 -1
  88. package/dist/shaders/stars.frag.js +0 -5
  89. package/dist/shaders/stars.frag.js.map +0 -1
  90. package/dist/shaders/stars.vert.js +0 -5
  91. package/dist/shaders/stars.vert.js.map +0 -1
  92. package/dist/style.css +0 -143
package/dist/index.js CHANGED
@@ -1,33 +1,10 @@
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
- import { useZendirSession } from "./react/hooks/useZendirSession.js";
18
- import { useTelemetry } from "./react/hooks/useTelemetry.js";
19
- import { useSpacecraftPosition } from "./react/hooks/useSpacecraftPosition.js";
20
4
  import { useCompactMode } from "./react/hooks/useCompactMode.js";
21
- import { isInChatGPT, useCallTool, useChatGPTTheme, useDisplayMode, useIntrinsicHeight, useLocale, useMaxHeight, useOpenAiGlobal, useOpenExternal, useSendMessage, useToolInput, useToolOutput, useWidgetState } from "./react/chatgpt/index.js";
22
- import { AppCard, ChatGPTCard } from "./react/chatgpt/AppCard.js";
23
5
  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
- import { ASTRO_ICON_NAMES, AstroIcon, getAllIconNames, getAstroIconNames, getIconAliases, isAstroIconsAvailable, isIconAlias, preloadAstroIcons } from "./react/core/AstroIcon.js";
26
6
  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
7
  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
8
  import { BREAKPOINTS, useBreakpoint } from "./react/core/layout/useBreakpoint.js";
32
9
  import { Badge } from "./react/core/Badge.js";
33
10
  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 +28,11 @@ import { DataValue, DataValueGroup } from "./react/core/DataValue.js";
51
28
  import { Dialog } from "./react/core/Dialog.js";
52
29
  import { DisplaySettingsProvider, GLASS_TINTS, PRESET_COLORS, getEffectiveCompactMode, useDisplaySettings, useDisplaySettingsOptional } from "./react/context/DisplaySettingsContext.js";
53
30
  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
31
  import { FileExplorer } from "./react/core/FileExplorer.js";
56
32
  import { Flex } from "./react/core/layout/Flex.js";
57
33
  import { GLASS_COLOR_OVERLAYS, GlassCard } from "./react/core/GlassCard.js";
58
34
  import { GlobalStatusBar } from "./react/astro/GlobalStatusBar.js";
59
35
  import { Grid } from "./react/core/layout/Grid.js";
60
- import { GroundTrackMap } from "./react/charts/GroundTrackMap.js";
61
36
  import { HStack, Stack, VStack } from "./react/core/layout/Stack.js";
62
37
  import { HeaderIconWithStatus } from "./react/core/HeaderIconWithStatus.js";
63
38
  import { HexViewer, REGION_BORDER_COLORS, REGION_COLORS } from "./react/core/HexViewer.js";
@@ -77,7 +52,6 @@ import { NumberInput } from "./react/core/NumberInput.js";
77
52
  import { PacketViewer } from "./react/core/PacketViewer.js";
78
53
  import { Pagination } from "./react/core/Pagination.js";
79
54
  import { PinInput } from "./react/core/PinInput.js";
80
- import { PowerOverviewChart, generateSamplePowerData } from "./react/charts/unified/PowerOverviewChart.js";
81
55
  import { Progress } from "./react/astro/Progress.js";
82
56
  import { Select } from "./react/core/Select.js";
83
57
  import { SideNav } from "./react/core/SideNav.js";
@@ -90,50 +64,28 @@ import { UnifiedTimeline } from "./react/astro/UnifiedTimeline.js";
90
64
  import { ToastProvider, useToast, useToastManager } from "./react/core/Toast.js";
91
65
  import { Toggle } from "./react/core/Toggle.js";
92
66
  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
67
  import { resolveResponsive, resolveSpacing } from "./react/core/layout/responsive.js";
99
- import { useChartStream, useWebSocketStream } from "./react/charts/unified/useChartStream.js";
100
68
  export {
101
- ASTRO_DATA_VIZ_COLORS,
102
- ASTRO_ICON_NAMES,
103
- AccessCard,
104
69
  ActivityPlanner,
105
- AntennaPattern3DChart,
106
70
  AppBar,
107
- AppCard,
108
- AreaChart,
109
- AstroChart,
110
- AstroIcon,
111
- AttitudeChart,
112
- AttitudeHistory3DChart,
113
71
  BREAKPOINTS,
114
72
  Badge,
115
- Bar3DChart,
116
- BarChart,
117
73
  Body1,
118
74
  Body2,
119
75
  Body3,
120
76
  Box,
121
- BubbleChart,
122
77
  Button,
123
78
  CARD_ACCENT_COLORS,
124
79
  CATEGORY_ICONS,
125
80
  CATEGORY_LABELS,
126
- STATUS_COLORS2 as CHART_STATUS_COLORS,
127
81
  CHAT_RESPONSE_JSON_PROMPT,
128
82
  CHAT_RESPONSE_MCP_TOOL,
129
83
  CHAT_RESPONSE_TOOL_SCHEMA,
130
84
  CHAT_RESPONSE_YAML_PROMPT,
131
85
  CHAT_STATUS_RULES_PROMPT,
132
- CandlestickChart,
133
86
  CardAccentProvider,
134
87
  CardHeader,
135
88
  Center,
136
- ChatGPTCard,
137
89
  ChatPanel,
138
90
  Checkbox,
139
91
  ClassificationBanner,
@@ -142,11 +94,7 @@ export {
142
94
  Compact,
143
95
  ConfirmDialog,
144
96
  ConfirmProvider,
145
- ConjunctionAssessment3DChart,
146
- ConjunctionChart,
147
97
  ConnectionForm,
148
- ConstellationCoverageChart,
149
- ContactWindowChart,
150
98
  Container,
151
99
  CopyButton,
152
100
  DataTable,
@@ -159,13 +107,6 @@ export {
159
107
  Display2,
160
108
  DisplaySettingsProvider,
161
109
  Divider,
162
- DonutChart,
163
- DopplerTrackChart,
164
- DualAxisChart,
165
- EARTH_RADIUS_KM,
166
- EarthViewer,
167
- EclipseTimelineChart,
168
- EclipseTimerCard,
169
110
  ErrorBoundary,
170
111
  FONT_FAMILY_MONO,
171
112
  FONT_FAMILY_PRIMARY,
@@ -174,12 +115,9 @@ export {
174
115
  Flex,
175
116
  GLASS_COLOR_OVERLAYS,
176
117
  GLASS_TINTS,
177
- GaugeChart,
178
118
  GlassCard,
179
119
  GlobalStatusBar,
180
- GraphChart,
181
120
  Grid,
182
- GroundTrackMap,
183
121
  H1,
184
122
  H2,
185
123
  H3,
@@ -188,24 +126,13 @@ export {
188
126
  H6,
189
127
  HStack,
190
128
  HeaderIconWithStatus,
191
- HeatmapChart,
192
- HeliocentricOrbitPlot,
193
129
  HexViewer,
194
- HistogramChart,
195
130
  Icon,
196
131
  ImageGallery,
197
132
  Input,
198
- KM_TO_SCENE,
199
133
  Label,
200
- LaunchCorridor3DChart,
201
134
  LimitsBar,
202
- LineChart,
203
- Lines3DChart,
204
- LinkBudgetCard,
205
- LinkBudgetChart,
206
- LinkMarginChart,
207
135
  LogViewer,
208
- ManeuverBudgetChart,
209
136
  Menu,
210
137
  MessageStream,
211
138
  Micro,
@@ -214,36 +141,21 @@ export {
214
141
  MissionClock,
215
142
  MonitoringIcon,
216
143
  Mono,
217
- NavBallCard,
218
144
  Notification,
219
145
  NumberInput,
220
- OrbitCard,
221
- OrbitChart,
222
146
  PLANETS,
223
147
  PRESET_COLORS,
224
148
  PROPERTY_PRESETS,
225
149
  PacketViewer,
226
150
  Pagination,
227
- ParallelChart,
228
- PieChart,
229
151
  PinInput,
230
152
  Popover,
231
- PowerChart,
232
- PowerOverviewChart,
233
153
  Progress,
234
- PropulsionCard,
235
154
  REGION_BORDER_COLORS,
236
155
  REGION_COLORS,
237
- RadarChart,
238
- RoseDiagram,
239
- SCENE_EARTH_RADIUS,
240
156
  SPACE_SYSTEM_COLORS,
241
157
  STATUS_COLORS,
242
- SankeyChart,
243
- Scatter3DChart,
244
- ScatterChart,
245
158
  Select,
246
- SensorFootprintCard,
247
159
  SideNav,
248
160
  SidePanel,
249
161
  SimulationControls,
@@ -254,56 +166,27 @@ export {
254
166
  SkeletonChart,
255
167
  SkeletonCircle,
256
168
  SkeletonText,
257
- SolarSystemViewer,
258
- SpacecraftCard,
259
169
  Spacer,
260
- SpectrumChart,
261
- SphericalRadar3DChart,
262
170
  Stack,
263
- StackedAreaChart,
264
- StackedBarChart,
265
171
  StatusIndicator,
266
- SubsystemGauge,
267
- SunburstChart,
268
- Surface3DChart,
269
172
  Tabs,
270
- TelemetryCard,
271
- TelemetryStreamCard,
272
173
  ThemeProvider,
273
- ThermalHeatmapCard,
274
- ThermalHeatmapChart,
275
- TimeSeriesChart,
276
174
  UnifiedTimeline as Timeline,
277
175
  ToastProvider,
278
176
  Toggle,
279
177
  Tooltip,
280
- TransferOrbit3DChart,
281
- TreemapChart,
282
178
  Typography,
283
179
  VStack,
284
- WaterfallChart,
285
- ZenSpace3D,
286
- ZenSpace3DCesium,
287
180
  addAlpha,
288
- atmosphereFragmentShader,
289
- atmosphereVertexShader,
290
181
  auToKm,
291
- calculateAxisBounds,
292
- calculateVisibilityConeGeometry,
293
- cartesianToLatLonAlt,
294
182
  clamp,
295
183
  classNames,
296
- createAreaGradient,
297
- createAstroEChartsTheme,
298
184
  createChatResponseParser,
299
185
  createPropertyConfig,
300
186
  deriveBatteryStatus,
301
187
  deriveStatus,
302
- dispatchToGroup,
303
188
  estimateOrbitalPeriod,
304
189
  estimateOrbitalVelocity,
305
- exportGroupAsCSV,
306
- exportGroupAsImages,
307
190
  focusRingStyle,
308
191
  formatAltitude,
309
192
  formatCoordinate,
@@ -323,98 +206,46 @@ export {
323
206
  formatTabular,
324
207
  formatTemperature,
325
208
  formatTime,
326
- formatTimeLabel,
327
209
  formatUTC,
328
- formatValueWithUnit,
329
210
  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
211
  getAccentColorOptions,
344
- getAllIconNames,
345
- getAstroIconNames,
346
212
  getEffectiveCompactMode,
347
- getGroupCharts,
348
- getIconAliases,
349
213
  getIconNames,
350
214
  getPlanet,
351
215
  getPropertiesByCategory,
352
216
  getPropertyConfig,
353
- getSeriesColor,
354
217
  getStatusColor,
355
218
  getStatusFromValue,
356
219
  getStatusSeverity,
357
220
  getSystemAccentColor,
358
221
  getWorstStatus,
359
- hideGroupTooltip,
360
- isAstroIconsAvailable,
361
- isIconAlias,
362
- isInChatGPT,
363
222
  isStatusLevel,
364
223
  isValidIconName,
365
224
  isValidNumber,
366
- latLonAltToCartesian,
367
225
  lerp,
368
226
  mapRange,
369
227
  normalizePlanetName,
370
228
  normalizeStatus,
371
229
  parseChatResponse,
372
230
  parseMcpToolResult,
373
- parseTLE,
374
- preloadAstroIcons,
375
- propagateSGP4Simple,
376
- propagateSatellite,
377
- resetGroupZoom,
378
231
  resolveResponsive,
379
232
  resolveSpacing,
380
233
  safeAccentText,
381
234
  safeNumber,
382
- showGroupTooltip,
383
- starsFragmentShader,
384
- starsVertexShader,
385
- syncZoomRange,
386
235
  tabularNumsStyle,
387
236
  transitions,
388
237
  useBreakpoint,
389
- useCallTool,
390
238
  useCardAccent,
391
- useChartStream,
392
- useChartSync,
393
- useChatGPTTheme,
394
239
  useCompactMode,
395
240
  useConfirm,
396
241
  useCopyToClipboard,
397
- useDisplayMode,
398
242
  useDisplaySettings,
399
243
  useDisplaySettingsOptional,
400
- useIntrinsicHeight,
401
- useLocale,
402
- useMaxHeight,
403
- useOpenAiGlobal,
404
- useOpenExternal,
405
244
  useScrollbarStyles,
406
- useSendMessage,
407
- useSpacecraftPosition,
408
- useTelemetry,
409
245
  useTheme,
410
246
  useThemeTokens,
411
247
  useToast,
412
248
  useToastManager,
413
- useToolInput,
414
- useToolOutput,
415
- useWebSocketStream,
416
- useWidgetState,
417
- useZendirSession,
418
249
  withErrorBoundary,
419
250
  withNullSafety
420
251
  };
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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"}