@zendir/ui 0.5.0 → 0.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +419 -386
- package/README.md +640 -631
- package/dist/_virtual/_rolldown/runtime.js +13 -0
- package/dist/index.js +17 -221
- package/dist/react/3d/CesiumCaptureSource.d.ts +0 -1
- package/dist/react/3d/CesiumCaptureSource.js +364 -283
- package/dist/react/3d/CesiumCaptureSource.js.map +1 -1
- package/dist/react/3d/ZenSpace3D.d.ts +2 -3
- package/dist/react/3d/ZenSpace3D.js +1681 -1237
- package/dist/react/3d/ZenSpace3D.js.map +1 -1
- package/dist/react/3d/ZenSpace3DCesium.d.ts +0 -1
- package/dist/react/3d/ZenSpace3DCesium.js +513 -560
- package/dist/react/3d/ZenSpace3DCesium.js.map +1 -1
- package/dist/react/3d/ZenSpace3DShaders.js +61 -66
- package/dist/react/3d/ZenSpace3DShaders.js.map +1 -1
- package/dist/react/3d/ZenSpace3DTypes.d.ts +19 -20
- package/dist/react/3d/ZenSpace3DUtils.d.ts +0 -1
- package/dist/react/3d/ZenSpace3DUtils.js +37 -24
- package/dist/react/3d/ZenSpace3DUtils.js.map +1 -1
- package/dist/react/3d/capturePngAnalysis.js +42 -36
- package/dist/react/3d/capturePngAnalysis.js.map +1 -1
- package/dist/react/3d/index.d.ts +3 -3
- package/dist/react/3d/index.js +5 -53
- package/dist/react/3d/threeLoader.d.ts +1 -1
- package/dist/react/3d/threeLoader.js +23 -18
- package/dist/react/3d/threeLoader.js.map +1 -1
- package/dist/react/astro/ClassificationBanner.d.ts +2 -3
- package/dist/react/astro/ClassificationBanner.js +95 -79
- package/dist/react/astro/ClassificationBanner.js.map +1 -1
- package/dist/react/astro/GlobalStatusBar.d.ts +0 -1
- package/dist/react/astro/GlobalStatusBar.js +157 -163
- package/dist/react/astro/GlobalStatusBar.js.map +1 -1
- package/dist/react/astro/MissionClock.d.ts +7 -8
- package/dist/react/astro/MissionClock.js +377 -400
- package/dist/react/astro/MissionClock.js.map +1 -1
- package/dist/react/astro/MonitoringIcon.d.ts +1 -2
- package/dist/react/astro/MonitoringIcon.js +422 -358
- package/dist/react/astro/MonitoringIcon.js.map +1 -1
- package/dist/react/astro/Notification.d.ts +1 -2
- package/dist/react/astro/Notification.js +229 -126
- package/dist/react/astro/Notification.js.map +1 -1
- package/dist/react/astro/Progress.d.ts +0 -1
- package/dist/react/astro/Progress.js +199 -141
- package/dist/react/astro/Progress.js.map +1 -1
- package/dist/react/astro/SimulationControls.d.ts +3 -4
- package/dist/react/astro/SimulationControls.js +596 -650
- package/dist/react/astro/SimulationControls.js.map +1 -1
- package/dist/react/astro/StatusIndicator.d.ts +0 -1
- package/dist/react/astro/StatusIndicator.js +236 -170
- package/dist/react/astro/StatusIndicator.js.map +1 -1
- package/dist/react/astro/UnifiedTimeline.d.ts +9 -10
- package/dist/react/astro/UnifiedTimeline.js +2345 -2392
- package/dist/react/astro/UnifiedTimeline.js.map +1 -1
- package/dist/react/astro/index.d.ts +5 -5
- package/dist/react/astro/index.js +1 -25
- package/dist/react/cards/AccessCard.d.ts +0 -1
- package/dist/react/cards/AccessCard.js +471 -405
- package/dist/react/cards/AccessCard.js.map +1 -1
- package/dist/react/cards/OrbitCard.d.ts +0 -1
- package/dist/react/cards/OrbitCard.js +487 -364
- package/dist/react/cards/OrbitCard.js.map +1 -1
- package/dist/react/cards/SpacecraftCard.d.ts +0 -1
- package/dist/react/cards/SpacecraftCard.js +813 -925
- package/dist/react/cards/SpacecraftCard.js.map +1 -1
- package/dist/react/cards/TelemetryCard.d.ts +0 -1
- package/dist/react/cards/TelemetryCard.js +1055 -732
- package/dist/react/cards/TelemetryCard.js.map +1 -1
- package/dist/react/cards/TelemetryStreamCard.d.ts +0 -1
- package/dist/react/cards/TelemetryStreamCard.js +323 -297
- package/dist/react/cards/TelemetryStreamCard.js.map +1 -1
- package/dist/react/cards/index.d.ts +1 -1
- package/dist/react/cards/index.js +1 -8
- package/dist/react/charts/GroundTrackMap.d.ts +6 -7
- package/dist/react/charts/GroundTrackMap.js +1377 -1256
- package/dist/react/charts/GroundTrackMap.js.map +1 -1
- package/dist/react/charts/GroundTrackMapLeaflet.d.ts +1 -2
- package/dist/react/charts/GroundTrackMapLeaflet.js +1065 -987
- package/dist/react/charts/GroundTrackMapLeaflet.js.map +1 -1
- package/dist/react/charts/groundTrackMapLeafletTiles.js +34 -25
- package/dist/react/charts/groundTrackMapLeafletTiles.js.map +1 -1
- package/dist/react/charts/groundTrackMapLeafletUtils.js +70 -61
- package/dist/react/charts/groundTrackMapLeafletUtils.js.map +1 -1
- package/dist/react/charts/index.d.ts +1 -1
- package/dist/react/charts/index.js +7 -100
- package/dist/react/charts/unified/AstroChart.d.ts +1 -2
- package/dist/react/charts/unified/AstroChart.js +1331 -1411
- package/dist/react/charts/unified/AstroChart.js.map +1 -1
- package/dist/react/charts/unified/PowerOverviewChart.d.ts +3 -3
- package/dist/react/charts/unified/PowerOverviewChart.js +495 -478
- package/dist/react/charts/unified/PowerOverviewChart.js.map +1 -1
- package/dist/react/charts/unified/domain.d.ts +12 -13
- package/dist/react/charts/unified/domain.js +3999 -3145
- package/dist/react/charts/unified/domain.js.map +1 -1
- package/dist/react/charts/unified/generators.d.ts +3 -4
- package/dist/react/charts/unified/generators.js +561 -498
- package/dist/react/charts/unified/generators.js.map +1 -1
- package/dist/react/charts/unified/index.d.ts +1 -1
- package/dist/react/charts/unified/presets.d.ts +14 -15
- package/dist/react/charts/unified/presets.js +857 -994
- package/dist/react/charts/unified/presets.js.map +1 -1
- package/dist/react/charts/unified/sync.d.ts +2 -3
- package/dist/react/charts/unified/sync.js +229 -195
- package/dist/react/charts/unified/sync.js.map +1 -1
- package/dist/react/charts/unified/theme.d.ts +11 -12
- package/dist/react/charts/unified/theme.js +606 -642
- package/dist/react/charts/unified/theme.js.map +1 -1
- package/dist/react/charts/unified/types.d.ts +32 -33
- package/dist/react/charts/unified/useChartStream.d.ts +1 -2
- package/dist/react/charts/unified/useChartStream.js +203 -216
- package/dist/react/charts/unified/useChartStream.js.map +1 -1
- package/dist/react/chatgpt/AppCard.d.ts +1 -2
- package/dist/react/chatgpt/index.d.ts +7 -7
- package/dist/react/chatgpt/index.js +160 -139
- package/dist/react/chatgpt/index.js.map +1 -1
- package/dist/react/context/CategoryContext.d.ts +0 -1
- package/dist/react/context/CategoryContext.js +78 -29
- package/dist/react/context/CategoryContext.js.map +1 -1
- package/dist/react/context/DisplaySettingsContext.d.ts +1 -2
- package/dist/react/context/DisplaySettingsContext.js +205 -156
- package/dist/react/context/DisplaySettingsContext.js.map +1 -1
- package/dist/react/context/SpatialSelectionContext.d.ts +0 -1
- package/dist/react/context/SpatialSelectionContext.js +36 -7
- package/dist/react/context/SpatialSelectionContext.js.map +1 -1
- package/dist/react/core/data/DataTable.d.ts +3 -4
- package/dist/react/core/data/DataTable.js +473 -440
- package/dist/react/core/data/DataTable.js.map +1 -1
- package/dist/react/core/data/DataValue.d.ts +4 -5
- package/dist/react/core/data/DataValue.js +605 -571
- package/dist/react/core/data/DataValue.js.map +1 -1
- package/dist/react/core/data/propertyConfig.d.ts +1 -2
- package/dist/react/core/data/propertyConfig.js +446 -382
- package/dist/react/core/data/propertyConfig.js.map +1 -1
- package/dist/react/core/display/AstroIcon.d.ts +4 -5
- package/dist/react/core/display/AstroIcon.js +339 -429
- package/dist/react/core/display/AstroIcon.js.map +1 -1
- package/dist/react/core/display/Badge.d.ts +2 -3
- package/dist/react/core/display/Badge.js +131 -131
- package/dist/react/core/display/Badge.js.map +1 -1
- package/dist/react/core/display/CardHeader.d.ts +0 -1
- package/dist/react/core/display/CardHeader.js +398 -311
- package/dist/react/core/display/CardHeader.js.map +1 -1
- package/dist/react/core/display/Container.d.ts +2 -3
- package/dist/react/core/display/Container.js +640 -668
- package/dist/react/core/display/Container.js.map +1 -1
- package/dist/react/core/display/CopyButton.d.ts +1 -2
- package/dist/react/core/display/CopyButton.js +158 -101
- package/dist/react/core/display/CopyButton.js.map +1 -1
- package/dist/react/core/display/GlassCard.d.ts +3 -4
- package/dist/react/core/display/GlassCard.js +416 -369
- package/dist/react/core/display/GlassCard.js.map +1 -1
- package/dist/react/core/display/HeaderIconWithStatus.d.ts +0 -1
- package/dist/react/core/display/HeaderIconWithStatus.js +152 -152
- package/dist/react/core/display/HeaderIconWithStatus.js.map +1 -1
- package/dist/react/core/display/Icon.d.ts +2 -3
- package/dist/react/core/display/Icon.js +172 -143
- package/dist/react/core/display/Icon.js.map +1 -1
- package/dist/react/core/display/Typography.d.ts +24 -25
- package/dist/react/core/display/Typography.js +360 -178
- package/dist/react/core/display/Typography.js.map +1 -1
- package/dist/react/core/feedback/ConfirmDialog.d.ts +1 -2
- package/dist/react/core/feedback/ConfirmDialog.js +343 -304
- package/dist/react/core/feedback/ConfirmDialog.js.map +1 -1
- package/dist/react/core/feedback/Dialog.d.ts +2 -3
- package/dist/react/core/feedback/Dialog.js +189 -197
- package/dist/react/core/feedback/Dialog.js.map +1 -1
- package/dist/react/core/feedback/Toast.d.ts +2 -3
- package/dist/react/core/feedback/Toast.js +346 -207
- package/dist/react/core/feedback/Toast.js.map +1 -1
- package/dist/react/core/index.d.ts +26 -26
- package/dist/react/core/index.js +7 -119
- package/dist/react/core/inputs/Button.d.ts +2 -3
- package/dist/react/core/inputs/Button.js +281 -304
- package/dist/react/core/inputs/Button.js.map +1 -1
- package/dist/react/core/inputs/Checkbox.d.ts +2 -3
- package/dist/react/core/inputs/Checkbox.js +139 -127
- package/dist/react/core/inputs/Checkbox.js.map +1 -1
- package/dist/react/core/inputs/Input.d.ts +3 -4
- package/dist/react/core/inputs/Input.js +277 -285
- package/dist/react/core/inputs/Input.js.map +1 -1
- package/dist/react/core/inputs/LimitsBar.d.ts +1 -2
- package/dist/react/core/inputs/LimitsBar.js +271 -196
- package/dist/react/core/inputs/LimitsBar.js.map +1 -1
- package/dist/react/core/inputs/NumberInput.d.ts +2 -3
- package/dist/react/core/inputs/NumberInput.js +531 -503
- package/dist/react/core/inputs/NumberInput.js.map +1 -1
- package/dist/react/core/inputs/PinInput.d.ts +2 -3
- package/dist/react/core/inputs/PinInput.js +224 -207
- package/dist/react/core/inputs/PinInput.js.map +1 -1
- package/dist/react/core/inputs/Select.d.ts +1 -2
- package/dist/react/core/inputs/Select.js +298 -299
- package/dist/react/core/inputs/Select.js.map +1 -1
- package/dist/react/core/inputs/Toggle.d.ts +2 -3
- package/dist/react/core/inputs/Toggle.js +142 -148
- package/dist/react/core/inputs/Toggle.js.map +1 -1
- package/dist/react/core/layout/Box.d.ts +3 -4
- package/dist/react/core/layout/Box.js +118 -122
- package/dist/react/core/layout/Box.js.map +1 -1
- package/dist/react/core/layout/Center.d.ts +0 -1
- package/dist/react/core/layout/Center.js +45 -32
- package/dist/react/core/layout/Center.js.map +1 -1
- package/dist/react/core/layout/Divider.d.ts +1 -2
- package/dist/react/core/layout/Divider.js +112 -106
- package/dist/react/core/layout/Divider.js.map +1 -1
- package/dist/react/core/layout/Flex.d.ts +4 -5
- package/dist/react/core/layout/Flex.js +120 -124
- package/dist/react/core/layout/Flex.js.map +1 -1
- package/dist/react/core/layout/Grid.d.ts +5 -6
- package/dist/react/core/layout/Grid.js +131 -138
- package/dist/react/core/layout/Grid.js.map +1 -1
- package/dist/react/core/layout/Spacer.d.ts +0 -1
- package/dist/react/core/layout/Spacer.js +36 -29
- package/dist/react/core/layout/Spacer.js.map +1 -1
- package/dist/react/core/layout/Stack.d.ts +4 -5
- package/dist/react/core/layout/Stack.js +127 -70
- package/dist/react/core/layout/Stack.js.map +1 -1
- package/dist/react/core/layout/responsive.d.ts +1 -2
- package/dist/react/core/layout/responsive.js +25 -19
- package/dist/react/core/layout/responsive.js.map +1 -1
- package/dist/react/core/layout/useBreakpoint.d.ts +1 -1
- package/dist/react/core/layout/useBreakpoint.js +119 -66
- package/dist/react/core/layout/useBreakpoint.js.map +1 -1
- package/dist/react/core/navigation/AppBar.d.ts +1 -2
- package/dist/react/core/navigation/AppBar.js +827 -805
- package/dist/react/core/navigation/AppBar.js.map +1 -1
- package/dist/react/core/navigation/Pagination.d.ts +2 -3
- package/dist/react/core/navigation/Pagination.js +207 -187
- package/dist/react/core/navigation/Pagination.js.map +1 -1
- package/dist/react/core/navigation/SideNav.d.ts +5 -6
- package/dist/react/core/navigation/SideNav.js +855 -629
- package/dist/react/core/navigation/SideNav.js.map +1 -1
- package/dist/react/core/navigation/Tabs.d.ts +0 -1
- package/dist/react/core/navigation/Tabs.js +113 -119
- package/dist/react/core/navigation/Tabs.js.map +1 -1
- package/dist/react/core/overlays/Popover.d.ts +2 -3
- package/dist/react/core/overlays/Popover.js +303 -282
- package/dist/react/core/overlays/Popover.js.map +1 -1
- package/dist/react/core/overlays/SidePanel.d.ts +1 -2
- package/dist/react/core/overlays/SidePanel.js +217 -212
- package/dist/react/core/overlays/SidePanel.js.map +1 -1
- package/dist/react/core/overlays/Tooltip.d.ts +1 -2
- package/dist/react/core/overlays/Tooltip.js +170 -176
- package/dist/react/core/overlays/Tooltip.js.map +1 -1
- package/dist/react/core/widgets/ActivityPlanner.d.ts +0 -1
- package/dist/react/core/widgets/ActivityPlanner.js +855 -517
- package/dist/react/core/widgets/ActivityPlanner.js.map +1 -1
- package/dist/react/core/widgets/Capture.d.ts +2 -3
- package/dist/react/core/widgets/Capture.js +965 -779
- package/dist/react/core/widgets/Capture.js.map +1 -1
- package/dist/react/core/widgets/ChatPanel.d.ts +16 -17
- package/dist/react/core/widgets/ChatPanel.js +1734 -1034
- package/dist/react/core/widgets/ChatPanel.js.map +1 -1
- package/dist/react/core/widgets/ColorPickerPanel.d.ts +0 -1
- package/dist/react/core/widgets/ColorPickerPanel.js +298 -287
- package/dist/react/core/widgets/ColorPickerPanel.js.map +1 -1
- package/dist/react/core/widgets/CommandBuilder.d.ts +2 -3
- package/dist/react/core/widgets/CommandBuilder.js +624 -516
- package/dist/react/core/widgets/CommandBuilder.js.map +1 -1
- package/dist/react/core/widgets/ConnectionForm.d.ts +2 -3
- package/dist/react/core/widgets/ConnectionForm.js +528 -492
- package/dist/react/core/widgets/ConnectionForm.js.map +1 -1
- package/dist/react/core/widgets/FileExplorer.d.ts +3 -4
- package/dist/react/core/widgets/FileExplorer.js +617 -505
- package/dist/react/core/widgets/FileExplorer.js.map +1 -1
- package/dist/react/core/widgets/HexViewer.d.ts +2 -3
- package/dist/react/core/widgets/HexViewer.js +1353 -1091
- package/dist/react/core/widgets/HexViewer.js.map +1 -1
- package/dist/react/core/widgets/ImageFrame.d.ts +1 -2
- package/dist/react/core/widgets/ImageFrame.js +230 -193
- package/dist/react/core/widgets/ImageFrame.js.map +1 -1
- package/dist/react/core/widgets/ImageGallery.d.ts +2 -1
- package/dist/react/core/widgets/ImageGallery.js +380 -314
- package/dist/react/core/widgets/ImageGallery.js.map +1 -1
- package/dist/react/core/widgets/ImagePanel.d.ts +0 -1
- package/dist/react/core/widgets/ImagePanel.js +110 -101
- package/dist/react/core/widgets/ImagePanel.js.map +1 -1
- package/dist/react/core/widgets/LogViewer.d.ts +2 -3
- package/dist/react/core/widgets/LogViewer.js +711 -607
- package/dist/react/core/widgets/LogViewer.js.map +1 -1
- package/dist/react/core/widgets/MessageStream.d.ts +3 -4
- package/dist/react/core/widgets/MessageStream.js +514 -444
- package/dist/react/core/widgets/MessageStream.js.map +1 -1
- package/dist/react/core/widgets/MissionCalendar.d.ts +3 -4
- package/dist/react/core/widgets/MissionCalendar.js +1488 -1020
- package/dist/react/core/widgets/MissionCalendar.js.map +1 -1
- package/dist/react/core/widgets/PacketViewer.d.ts +2 -3
- package/dist/react/core/widgets/PacketViewer.js +550 -421
- package/dist/react/core/widgets/PacketViewer.js.map +1 -1
- package/dist/react/core/widgets/capture-placeholder.png.js +6 -5
- package/dist/react/core/widgets/capture-placeholder.png.js.map +1 -1
- package/dist/react/hooks/index.d.ts +5 -5
- package/dist/react/hooks/useAccessWindows.d.ts +0 -1
- package/dist/react/hooks/useCompactMode.d.ts +1 -1
- package/dist/react/hooks/useCompactMode.js +104 -58
- package/dist/react/hooks/useCompactMode.js.map +1 -1
- package/dist/react/hooks/useGroundTrackHistory.d.ts +0 -1
- package/dist/react/hooks/useSimulationScene.d.ts +1 -2
- package/dist/react/hooks/useSimulationScene.js +481 -374
- package/dist/react/hooks/useSimulationScene.js.map +1 -1
- package/dist/react/index.d.ts +3 -3
- package/dist/react/panels/LayerControlPanel.d.ts +1 -2
- package/dist/react/panels/LayerControlPanel.js +223 -180
- package/dist/react/panels/LayerControlPanel.js.map +1 -1
- package/dist/react/panels/ObjectInventoryPanel.d.ts +2 -3
- package/dist/react/panels/ObjectInventoryPanel.js +315 -250
- package/dist/react/panels/ObjectInventoryPanel.js.map +1 -1
- package/dist/react/panels/index.d.ts +1 -1
- package/dist/react/panels/index.js +1 -6
- package/dist/react/shared/ErrorBoundary.d.ts +1 -2
- package/dist/react/shared/ErrorBoundary.js +170 -139
- package/dist/react/shared/ErrorBoundary.js.map +1 -1
- package/dist/react/shared/Skeleton.d.ts +1 -2
- package/dist/react/shared/Skeleton.js +300 -301
- package/dist/react/shared/Skeleton.js.map +1 -1
- package/dist/react/theme/ThemeProvider.d.ts +2 -321
- package/dist/react/theme/ThemeProvider.js +313 -939
- package/dist/react/theme/ThemeProvider.js.map +1 -1
- package/dist/react/theme/cardAccent.d.ts +1 -2
- package/dist/react/theme/cardAccent.js +196 -126
- package/dist/react/theme/cardAccent.js.map +1 -1
- package/dist/react/theme/config.d.ts +0 -1
- package/dist/react/theme/config.js +47 -25
- package/dist/react/theme/config.js.map +1 -1
- package/dist/react/theme/index.d.ts +2 -2
- package/dist/react/theme/index.js +1 -16
- package/dist/react/theme/types.d.ts +332 -0
- package/dist/react/theme/types.js +39 -0
- package/dist/react/theme/types.js.map +1 -0
- package/dist/react/types.d.ts +8 -8
- package/dist/react/types.js +147 -47
- package/dist/react/types.js.map +1 -1
- package/dist/react/utils/categoryPalette.d.ts +0 -1
- package/dist/react/utils/categoryPalette.js +91 -102
- package/dist/react/utils/categoryPalette.js.map +1 -1
- package/dist/react/utils/index.d.ts +5 -5
- package/dist/react/utils/index.js +457 -371
- package/dist/react/utils/index.js.map +1 -1
- package/dist/react/visualizations/EclipseTimerCard.d.ts +0 -1
- package/dist/react/visualizations/LinkBudgetCard.d.ts +0 -1
- package/dist/react/visualizations/NavBallCard.d.ts +0 -1
- package/dist/react/visualizations/PropulsionCard.d.ts +1 -2
- package/dist/react/visualizations/SensorFootprintCard.d.ts +1 -2
- package/dist/react/visualizations/ThermalHeatmapCard.d.ts +0 -1
- package/dist/react/visualizations/index.d.ts +3 -3
- package/dist/react.d.ts +2 -1
- package/dist/react.js +17 -221
- package/dist/shaders/atmosphere.frag.js +6 -5
- package/dist/shaders/atmosphere.frag.js.map +1 -1
- package/dist/shaders/atmosphere.vert.js +6 -5
- package/dist/shaders/atmosphere.vert.js.map +1 -1
- package/dist/shaders/stars.frag.js +6 -5
- package/dist/shaders/stars.frag.js.map +1 -1
- package/dist/shaders/stars.vert.js +6 -5
- package/dist/shaders/stars.vert.js.map +1 -1
- package/dist/style.css +26 -3
- package/dist/tokens/core.d.ts +159 -0
- package/dist/tokens/core.js +144 -0
- package/dist/tokens/core.js.map +1 -0
- package/dist/tokens/css-vars.d.ts +213 -2
- package/dist/tokens/css-vars.js +590 -227
- package/dist/tokens/css-vars.js.map +1 -1
- package/dist/tokens/index.d.ts +31 -228
- package/dist/tokens/index.js +281 -366
- package/dist/tokens/index.js.map +1 -1
- package/dist/tokens/palettes/astro.d.ts +129 -0
- package/dist/tokens/palettes/astro.js +112 -0
- package/dist/tokens/palettes/astro.js.map +1 -0
- package/dist/tokens/palettes/index.d.ts +288 -0
- package/dist/tokens/palettes/index.js +35 -0
- package/dist/tokens/palettes/index.js.map +1 -0
- package/dist/tokens/palettes/tailwind.d.ts +324 -0
- package/dist/tokens/palettes/tailwind.js +201 -0
- package/dist/tokens/palettes/tailwind.js.map +1 -0
- package/dist/tokens/palettes/zendir.d.ts +126 -0
- package/dist/tokens/palettes/zendir.js +92 -0
- package/dist/tokens/palettes/zendir.js.map +1 -0
- package/dist/tokens/themes.d.ts +30 -0
- package/dist/tokens/themes.js +704 -0
- package/dist/tokens/themes.js.map +1 -0
- package/dist/tokens/tokens.css +533 -155
- package/dist/types/index.d.ts +2 -2
- package/package.json +310 -313
- package/dist/index.js.map +0 -1
- package/dist/react/3d/index.js.map +0 -1
- package/dist/react/astro/index.js.map +0 -1
- package/dist/react/cards/index.js.map +0 -1
- package/dist/react/charts/index.js.map +0 -1
- package/dist/react/core/index.js.map +0 -1
- package/dist/react/panels/index.js.map +0 -1
- package/dist/react/theme/astro-tokens.d.ts +0 -153
- package/dist/react/theme/index.js.map +0 -1
- package/dist/react.js.map +0 -1
|
@@ -1,173 +1,240 @@
|
|
|
1
|
-
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
|
-
import { memo } from "react";
|
|
3
1
|
import { useTheme } from "../theme/ThemeProvider.js";
|
|
4
2
|
import { classNames } from "../utils/index.js";
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
3
|
+
import { memo } from "react";
|
|
4
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
5
|
+
//#region src/react/astro/StatusIndicator.tsx
|
|
6
|
+
/**
|
|
7
|
+
* @zendir/ui - StatusIndicator Component (Pure React)
|
|
8
|
+
*
|
|
9
|
+
* Displays status symbols following Astro UX Design System patterns.
|
|
10
|
+
* Uses the same 6-level status system: off, standby, normal, caution, serious, critical.
|
|
11
|
+
*
|
|
12
|
+
* Shapes per Astro UX (https://www.astrouxds.com/patterns/status-system/):
|
|
13
|
+
* - Off: Circle (grey)
|
|
14
|
+
* - Standby: Ring (cyan)
|
|
15
|
+
* - Normal: Circle (green)
|
|
16
|
+
* - Caution: Square (yellow)
|
|
17
|
+
* - Serious: Diamond (orange)
|
|
18
|
+
* - Critical: Triangle pointing down (red)
|
|
19
|
+
*
|
|
20
|
+
* Features:
|
|
21
|
+
* - Dual coding (color + shape) for accessibility (WCAG 2.1 AA)
|
|
22
|
+
* - Animated pulse for active states
|
|
23
|
+
* - Light theme border support
|
|
24
|
+
* - Theme-connected via useTheme()
|
|
25
|
+
* - Keyboard accessible
|
|
26
|
+
* - Screen reader support
|
|
27
|
+
*/
|
|
28
|
+
/**
|
|
29
|
+
* Astro UX Status Colors (Dark Theme)
|
|
30
|
+
* https://www.astrouxds.com/patterns/status-system/
|
|
31
|
+
*/
|
|
32
|
+
var STATUS_COLORS_DARK = {
|
|
33
|
+
off: "#a4abb6",
|
|
34
|
+
standby: "#2dccff",
|
|
35
|
+
normal: "#56f000",
|
|
36
|
+
caution: "#fce83a",
|
|
37
|
+
serious: "#ffb302",
|
|
38
|
+
critical: "#ff3838"
|
|
12
39
|
};
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
40
|
+
/**
|
|
41
|
+
* Astro UX Status Colors (Light Theme - Fill)
|
|
42
|
+
* Requires border for WCAG AA compliance
|
|
43
|
+
*/
|
|
44
|
+
var STATUS_COLORS_LIGHT_FILL = {
|
|
45
|
+
off: "#7b8089",
|
|
46
|
+
standby: "#64d9ff",
|
|
47
|
+
normal: "#00e200",
|
|
48
|
+
caution: "#fad800",
|
|
49
|
+
serious: "#ffaf3d",
|
|
50
|
+
critical: "#ff2a04"
|
|
20
51
|
};
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
52
|
+
/**
|
|
53
|
+
* Astro UX Status Colors (Light Theme - Border)
|
|
54
|
+
* Required for light backgrounds per Astro UX
|
|
55
|
+
*/
|
|
56
|
+
var STATUS_COLORS_LIGHT_BORDER = {
|
|
57
|
+
off: "#3c3e42",
|
|
58
|
+
standby: "#285766",
|
|
59
|
+
normal: "#005a00",
|
|
60
|
+
caution: "#645600",
|
|
61
|
+
serious: "#664618",
|
|
62
|
+
critical: "#661102"
|
|
28
63
|
};
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
64
|
+
var STATUS_ARIA_LABELS = {
|
|
65
|
+
off: "Status: Off",
|
|
66
|
+
standby: "Status: Standby",
|
|
67
|
+
normal: "Status: Normal",
|
|
68
|
+
caution: "Status: Caution",
|
|
69
|
+
serious: "Status: Serious",
|
|
70
|
+
critical: "Status: Critical"
|
|
36
71
|
};
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
72
|
+
/**
|
|
73
|
+
* Render Astro-compliant status shape
|
|
74
|
+
* Shapes per https://www.astrouxds.com/patterns/status-system/
|
|
75
|
+
*/
|
|
76
|
+
var renderStatusShape = (status, size, fillColor, borderColor) => {
|
|
77
|
+
const hasBorder = !!borderColor;
|
|
78
|
+
const strokeWidth = hasBorder ? 1.5 : 0;
|
|
79
|
+
switch (status) {
|
|
80
|
+
case "off": return /* @__PURE__ */ jsx("svg", {
|
|
81
|
+
viewBox: "0 0 12 12",
|
|
82
|
+
width: size,
|
|
83
|
+
height: size,
|
|
84
|
+
children: /* @__PURE__ */ jsx("circle", {
|
|
85
|
+
cx: "6",
|
|
86
|
+
cy: "6",
|
|
87
|
+
r: hasBorder ? 2.5 : 3,
|
|
88
|
+
fill: fillColor,
|
|
89
|
+
stroke: borderColor,
|
|
90
|
+
strokeWidth
|
|
91
|
+
})
|
|
92
|
+
});
|
|
93
|
+
case "standby": return /* @__PURE__ */ jsxs("svg", {
|
|
94
|
+
viewBox: "0 0 12 12",
|
|
95
|
+
width: size,
|
|
96
|
+
height: size,
|
|
97
|
+
children: [/* @__PURE__ */ jsx("circle", {
|
|
98
|
+
cx: "6",
|
|
99
|
+
cy: "6",
|
|
100
|
+
r: "3.5",
|
|
101
|
+
fill: "none",
|
|
102
|
+
stroke: fillColor,
|
|
103
|
+
strokeWidth: "2"
|
|
104
|
+
}), hasBorder && /* @__PURE__ */ jsx("circle", {
|
|
105
|
+
cx: "6",
|
|
106
|
+
cy: "6",
|
|
107
|
+
r: "4.75",
|
|
108
|
+
fill: "none",
|
|
109
|
+
stroke: borderColor,
|
|
110
|
+
strokeWidth
|
|
111
|
+
})]
|
|
112
|
+
});
|
|
113
|
+
case "normal": return /* @__PURE__ */ jsx("svg", {
|
|
114
|
+
viewBox: "0 0 12 12",
|
|
115
|
+
width: size,
|
|
116
|
+
height: size,
|
|
117
|
+
children: /* @__PURE__ */ jsx("circle", {
|
|
118
|
+
cx: "6",
|
|
119
|
+
cy: "6",
|
|
120
|
+
r: hasBorder ? 4.5 : 5,
|
|
121
|
+
fill: fillColor,
|
|
122
|
+
stroke: borderColor,
|
|
123
|
+
strokeWidth
|
|
124
|
+
})
|
|
125
|
+
});
|
|
126
|
+
case "caution": return /* @__PURE__ */ jsx("svg", {
|
|
127
|
+
viewBox: "0 0 12 12",
|
|
128
|
+
width: size,
|
|
129
|
+
height: size,
|
|
130
|
+
children: /* @__PURE__ */ jsx("rect", {
|
|
131
|
+
x: hasBorder ? 1.5 : 1,
|
|
132
|
+
y: hasBorder ? 1.5 : 1,
|
|
133
|
+
width: hasBorder ? 9 : 10,
|
|
134
|
+
height: hasBorder ? 9 : 10,
|
|
135
|
+
fill: fillColor,
|
|
136
|
+
stroke: borderColor,
|
|
137
|
+
strokeWidth
|
|
138
|
+
})
|
|
139
|
+
});
|
|
140
|
+
case "serious": return /* @__PURE__ */ jsx("svg", {
|
|
141
|
+
viewBox: "0 0 12 12",
|
|
142
|
+
width: size,
|
|
143
|
+
height: size,
|
|
144
|
+
children: /* @__PURE__ */ jsx("polygon", {
|
|
145
|
+
points: "6,1 11,6 6,11 1,6",
|
|
146
|
+
fill: fillColor,
|
|
147
|
+
stroke: borderColor,
|
|
148
|
+
strokeWidth
|
|
149
|
+
})
|
|
150
|
+
});
|
|
151
|
+
case "critical": return /* @__PURE__ */ jsx("svg", {
|
|
152
|
+
viewBox: "0 0 12 12",
|
|
153
|
+
width: size,
|
|
154
|
+
height: size,
|
|
155
|
+
children: /* @__PURE__ */ jsx("polygon", {
|
|
156
|
+
points: "6,11 1,2 11,2",
|
|
157
|
+
fill: fillColor,
|
|
158
|
+
stroke: borderColor,
|
|
159
|
+
strokeWidth
|
|
160
|
+
})
|
|
161
|
+
});
|
|
162
|
+
default: return null;
|
|
163
|
+
}
|
|
86
164
|
};
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
style: {
|
|
161
|
-
fontSize: small ? tokens.typography.fontSize.xs : tokens.typography.fontSize.sm,
|
|
162
|
-
fontWeight: tokens.typography.fontWeight.medium,
|
|
163
|
-
color: "inherit",
|
|
164
|
-
whiteSpace: "nowrap",
|
|
165
|
-
letterSpacing: tokens.typography.letterSpacing.normal
|
|
166
|
-
},
|
|
167
|
-
children: label
|
|
168
|
-
}
|
|
169
|
-
),
|
|
170
|
-
/* @__PURE__ */ jsx("style", { children: `
|
|
165
|
+
/**
|
|
166
|
+
* StatusIndicator - Pure React status component
|
|
167
|
+
*
|
|
168
|
+
* Displays standardized status symbols following Astro UX design patterns.
|
|
169
|
+
* Uses dual-coding (color + shape) for WCAG 2.1 AA accessibility compliance.
|
|
170
|
+
*
|
|
171
|
+
* @example
|
|
172
|
+
* ```tsx
|
|
173
|
+
* <StatusIndicator status="normal" label="Power System" />
|
|
174
|
+
* <StatusIndicator status="caution" label="Battery Low" />
|
|
175
|
+
* <StatusIndicator status="critical" label="Comm Loss" pulse />
|
|
176
|
+
* ```
|
|
177
|
+
*/
|
|
178
|
+
var StatusIndicator = memo(function StatusIndicator({ status, label, small = false, pulse = false, bordered, className = "", onClick }) {
|
|
179
|
+
const { tokens, mode } = useTheme();
|
|
180
|
+
const isLightTheme = mode === "light";
|
|
181
|
+
const showBorder = bordered ?? isLightTheme;
|
|
182
|
+
const fillColor = isLightTheme ? STATUS_COLORS_LIGHT_FILL[status] : tokens.colors.status[status] || STATUS_COLORS_DARK[status];
|
|
183
|
+
const borderColor = showBorder ? STATUS_COLORS_LIGHT_BORDER[status] : void 0;
|
|
184
|
+
const size = small ? 10 : 14;
|
|
185
|
+
const shouldPulse = pulse || status === "critical";
|
|
186
|
+
const isCircle = status === "off" || status === "standby" || status === "normal";
|
|
187
|
+
const handleKeyDown = (e) => {
|
|
188
|
+
if (onClick && (e.key === "Enter" || e.key === " ")) {
|
|
189
|
+
e.preventDefault();
|
|
190
|
+
onClick();
|
|
191
|
+
}
|
|
192
|
+
};
|
|
193
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
194
|
+
className: classNames("zendir-status-indicator", className),
|
|
195
|
+
onClick,
|
|
196
|
+
onKeyDown: onClick ? handleKeyDown : void 0,
|
|
197
|
+
tabIndex: onClick ? 0 : void 0,
|
|
198
|
+
role: "status",
|
|
199
|
+
"aria-label": `${STATUS_ARIA_LABELS[status]}${label ? `: ${label}` : ""}`,
|
|
200
|
+
style: {
|
|
201
|
+
display: "inline-flex",
|
|
202
|
+
alignItems: "center",
|
|
203
|
+
gap: small ? 4 : 6,
|
|
204
|
+
cursor: onClick ? "pointer" : "default",
|
|
205
|
+
outline: "none"
|
|
206
|
+
},
|
|
207
|
+
children: [
|
|
208
|
+
/* @__PURE__ */ jsxs("span", {
|
|
209
|
+
style: {
|
|
210
|
+
position: "relative",
|
|
211
|
+
display: "inline-flex",
|
|
212
|
+
alignItems: "center",
|
|
213
|
+
justifyContent: "center",
|
|
214
|
+
width: size,
|
|
215
|
+
height: size,
|
|
216
|
+
flexShrink: 0
|
|
217
|
+
},
|
|
218
|
+
children: [shouldPulse && /* @__PURE__ */ jsx("span", { style: {
|
|
219
|
+
position: "absolute",
|
|
220
|
+
inset: -3,
|
|
221
|
+
borderRadius: isCircle ? "50%" : 0,
|
|
222
|
+
backgroundColor: fillColor,
|
|
223
|
+
opacity: .3,
|
|
224
|
+
animation: "statusPulse 2s ease-out infinite"
|
|
225
|
+
} }), renderStatusShape(status, size, fillColor, borderColor)]
|
|
226
|
+
}),
|
|
227
|
+
label && /* @__PURE__ */ jsx("span", {
|
|
228
|
+
style: {
|
|
229
|
+
fontSize: small ? tokens.typography.fontSize.xs : tokens.typography.fontSize.sm,
|
|
230
|
+
fontWeight: tokens.typography.fontWeight.medium,
|
|
231
|
+
color: "inherit",
|
|
232
|
+
whiteSpace: "nowrap",
|
|
233
|
+
letterSpacing: tokens.typography.letterSpacing.normal
|
|
234
|
+
},
|
|
235
|
+
children: label
|
|
236
|
+
}),
|
|
237
|
+
/* @__PURE__ */ jsx("style", { children: `
|
|
171
238
|
@keyframes statusPulse {
|
|
172
239
|
0% { transform: scale(1); opacity: 0.3; }
|
|
173
240
|
50% { transform: scale(1.5); opacity: 0; }
|
|
@@ -179,11 +246,10 @@ const StatusIndicator = memo(function StatusIndicator2({
|
|
|
179
246
|
}
|
|
180
247
|
}
|
|
181
248
|
` })
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
);
|
|
249
|
+
]
|
|
250
|
+
});
|
|
185
251
|
});
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
//# sourceMappingURL=StatusIndicator.js.map
|
|
252
|
+
//#endregion
|
|
253
|
+
export { StatusIndicator };
|
|
254
|
+
|
|
255
|
+
//# sourceMappingURL=StatusIndicator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StatusIndicator.js","sources":["../../../src/react/astro/StatusIndicator.tsx"],"sourcesContent":["/**\n * @zendir/ui - StatusIndicator Component (Pure React)\n * \n * Displays status symbols following Astro UX Design System patterns.\n * Uses the same 6-level status system: off, standby, normal, caution, serious, critical.\n * \n * Shapes per Astro UX (https://www.astrouxds.com/patterns/status-system/):\n * - Off: Circle (grey)\n * - Standby: Ring (cyan)\n * - Normal: Circle (green)\n * - Caution: Square (yellow)\n * - Serious: Diamond (orange)\n * - Critical: Triangle pointing down (red)\n * \n * Features:\n * - Dual coding (color + shape) for accessibility (WCAG 2.1 AA)\n * - Animated pulse for active states\n * - Light theme border support\n * - Theme-connected via useTheme()\n * - Keyboard accessible\n * - Screen reader support\n */\n\nimport React, { memo } from 'react';\nimport { useTheme } from '../theme';\nimport { classNames, type StatusLevel } from '../utils';\n\nexport type StatusVariant = StatusLevel;\n\nexport interface StatusIndicatorProps {\n /** Status variant - determines color and shape */\n status: StatusVariant;\n /** Status label text */\n label?: string;\n /** Smaller size variant */\n small?: boolean;\n /** Show pulse animation for active states */\n pulse?: boolean;\n /** Show border (required for light theme per Astro UX) */\n bordered?: boolean;\n /** Custom className */\n className?: string;\n /** Click handler */\n onClick?: () => void;\n}\n\n/**\n * Astro UX Status Colors (Dark Theme)\n * https://www.astrouxds.com/patterns/status-system/\n */\nconst STATUS_COLORS_DARK: Record<StatusVariant, string> = {\n off: '#a4abb6',\n standby: '#2dccff',\n normal: '#56f000',\n caution: '#fce83a',\n serious: '#ffb302',\n critical: '#ff3838',\n};\n\n/**\n * Astro UX Status Colors (Light Theme - Fill)\n * Requires border for WCAG AA compliance\n */\nconst STATUS_COLORS_LIGHT_FILL: Record<StatusVariant, string> = {\n off: '#7b8089',\n standby: '#64d9ff',\n normal: '#00e200',\n caution: '#fad800',\n serious: '#ffaf3d',\n critical: '#ff2a04',\n};\n\n/**\n * Astro UX Status Colors (Light Theme - Border)\n * Required for light backgrounds per Astro UX\n */\nconst STATUS_COLORS_LIGHT_BORDER: Record<StatusVariant, string> = {\n off: '#3c3e42',\n standby: '#285766',\n normal: '#005a00',\n caution: '#645600',\n serious: '#664618',\n critical: '#661102',\n};\n\nconst STATUS_ARIA_LABELS: Record<StatusVariant, string> = {\n off: 'Status: Off',\n standby: 'Status: Standby',\n normal: 'Status: Normal',\n caution: 'Status: Caution',\n serious: 'Status: Serious',\n critical: 'Status: Critical',\n};\n\n/**\n * Render Astro-compliant status shape\n * Shapes per https://www.astrouxds.com/patterns/status-system/\n */\nconst renderStatusShape = (\n status: StatusVariant,\n size: number,\n fillColor: string,\n borderColor?: string,\n): React.ReactNode => {\n const hasBorder = !!borderColor;\n const strokeWidth = hasBorder ? 1.5 : 0;\n \n switch (status) {\n // Small filled circle: off\n case 'off':\n return (\n <svg viewBox=\"0 0 12 12\" width={size} height={size}>\n <circle cx=\"6\" cy=\"6\" r={hasBorder ? 2.5 : 3} fill={fillColor} stroke={borderColor} strokeWidth={strokeWidth} />\n </svg>\n );\n \n // Ring (donut): standby\n case 'standby':\n return (\n <svg viewBox=\"0 0 12 12\" width={size} height={size}>\n <circle cx=\"6\" cy=\"6\" r=\"3.5\" fill=\"none\" stroke={fillColor} strokeWidth=\"2\" />\n {hasBorder && <circle cx=\"6\" cy=\"6\" r=\"4.75\" fill=\"none\" stroke={borderColor} strokeWidth={strokeWidth} />}\n </svg>\n );\n \n // Filled circle: normal\n case 'normal':\n return (\n <svg viewBox=\"0 0 12 12\" width={size} height={size}>\n <circle cx=\"6\" cy=\"6\" r={hasBorder ? 4.5 : 5} fill={fillColor} stroke={borderColor} strokeWidth={strokeWidth} />\n </svg>\n );\n \n // Square shape: caution\n case 'caution':\n return (\n <svg viewBox=\"0 0 12 12\" width={size} height={size}>\n <rect\n x={hasBorder ? 1.5 : 1}\n y={hasBorder ? 1.5 : 1}\n width={hasBorder ? 9 : 10}\n height={hasBorder ? 9 : 10}\n fill={fillColor}\n stroke={borderColor}\n strokeWidth={strokeWidth}\n />\n </svg>\n );\n \n // Diamond shape: serious (rotated square)\n case 'serious':\n return (\n <svg viewBox=\"0 0 12 12\" width={size} height={size}>\n <polygon\n points=\"6,1 11,6 6,11 1,6\"\n fill={fillColor}\n stroke={borderColor}\n strokeWidth={strokeWidth}\n />\n </svg>\n );\n \n // Triangle pointing down: critical\n case 'critical':\n return (\n <svg viewBox=\"0 0 12 12\" width={size} height={size}>\n <polygon\n points=\"6,11 1,2 11,2\"\n fill={fillColor}\n stroke={borderColor}\n strokeWidth={strokeWidth}\n />\n </svg>\n );\n \n default:\n return null;\n }\n};\n\n/**\n * StatusIndicator - Pure React status component\n * \n * Displays standardized status symbols following Astro UX design patterns.\n * Uses dual-coding (color + shape) for WCAG 2.1 AA accessibility compliance.\n * \n * @example\n * ```tsx\n * <StatusIndicator status=\"normal\" label=\"Power System\" />\n * <StatusIndicator status=\"caution\" label=\"Battery Low\" />\n * <StatusIndicator status=\"critical\" label=\"Comm Loss\" pulse />\n * ```\n */\nexport const StatusIndicator = memo(function StatusIndicator({\n status,\n label,\n small = false,\n pulse = false,\n bordered,\n className = '',\n onClick,\n}: StatusIndicatorProps): React.ReactElement {\n const { tokens, mode } = useTheme();\n \n // Determine if we need borders (light theme or explicitly requested)\n const isLightTheme = mode === 'light';\n const showBorder = bordered ?? isLightTheme;\n \n // Get colors from theme or use Astro defaults\n const fillColor = isLightTheme \n ? STATUS_COLORS_LIGHT_FILL[status]\n : (tokens.colors.status[status] || STATUS_COLORS_DARK[status]);\n const borderColor = showBorder ? STATUS_COLORS_LIGHT_BORDER[status] : undefined;\n \n const size = small ? 10 : 14;\n const shouldPulse = pulse || status === 'critical';\n const isCircle = status === 'off' || status === 'standby' || status === 'normal';\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (onClick && (e.key === 'Enter' || e.key === ' ')) {\n e.preventDefault();\n onClick();\n }\n };\n\n return (\n <div\n className={classNames('zendir-status-indicator', className)}\n onClick={onClick}\n onKeyDown={onClick ? handleKeyDown : undefined}\n tabIndex={onClick ? 0 : undefined}\n role=\"status\"\n aria-label={`${STATUS_ARIA_LABELS[status]}${label ? `: ${label}` : ''}`}\n style={{\n display: 'inline-flex',\n alignItems: 'center',\n gap: small ? 4 : 6,\n cursor: onClick ? 'pointer' : 'default',\n outline: 'none',\n }}\n >\n {/* Status symbol with dual-coding */}\n <span\n style={{\n position: 'relative',\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: size,\n height: size,\n flexShrink: 0,\n }}\n >\n {/* Pulse animation ring */}\n {shouldPulse && (\n <span\n style={{\n position: 'absolute',\n inset: -3,\n borderRadius: isCircle ? '50%' : 0,\n backgroundColor: fillColor,\n opacity: 0.3,\n animation: 'statusPulse 2s ease-out infinite',\n }}\n />\n )}\n \n {/* Astro-compliant status shape */}\n {renderStatusShape(status, size, fillColor, borderColor)}\n </span>\n\n {/* Label with theme typography */}\n {label && (\n <span\n style={{\n fontSize: small ? tokens.typography.fontSize.xs : tokens.typography.fontSize.sm,\n fontWeight: tokens.typography.fontWeight.medium,\n color: 'inherit',\n whiteSpace: 'nowrap',\n letterSpacing: tokens.typography.letterSpacing.normal,\n }}\n >\n {label}\n </span>\n )}\n\n {/* Keyframe animation — paused when prefers-reduced-motion is active */}\n <style>{`\n @keyframes statusPulse {\n 0% { transform: scale(1); opacity: 0.3; }\n 50% { transform: scale(1.5); opacity: 0; }\n 100% { transform: scale(1); opacity: 0; }\n }\n @media (prefers-reduced-motion: reduce) {\n .zendir-status-indicator span[style*=\"statusPulse\"] {\n animation: none !important;\n }\n }\n `}</style>\n </div>\n );\n});\n"],"names":["StatusIndicator"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"StatusIndicator.js","names":[],"sources":["../../../src/react/astro/StatusIndicator.tsx"],"sourcesContent":["/**\r\n * @zendir/ui - StatusIndicator Component (Pure React)\r\n *\r\n * Displays status symbols following Astro UX Design System patterns.\r\n * Uses the same 6-level status system: off, standby, normal, caution, serious, critical.\r\n *\r\n * Shapes per Astro UX (https://www.astrouxds.com/patterns/status-system/):\r\n * - Off: Circle (grey)\r\n * - Standby: Ring (cyan)\r\n * - Normal: Circle (green)\r\n * - Caution: Square (yellow)\r\n * - Serious: Diamond (orange)\r\n * - Critical: Triangle pointing down (red)\r\n *\r\n * Features:\r\n * - Dual coding (color + shape) for accessibility (WCAG 2.1 AA)\r\n * - Animated pulse for active states\r\n * - Light theme border support\r\n * - Theme-connected via useTheme()\r\n * - Keyboard accessible\r\n * - Screen reader support\r\n */\r\n\r\nimport React, { memo } from \"react\";\r\nimport { useTheme } from \"../theme\";\r\nimport { classNames, type StatusLevel } from \"../utils\";\r\n\r\nexport type StatusVariant = StatusLevel;\r\n\r\nexport interface StatusIndicatorProps {\r\n /** Status variant - determines color and shape */\r\n status: StatusVariant;\r\n /** Status label text */\r\n label?: string;\r\n /** Smaller size variant */\r\n small?: boolean;\r\n /** Show pulse animation for active states */\r\n pulse?: boolean;\r\n /** Show border (required for light theme per Astro UX) */\r\n bordered?: boolean;\r\n /** Custom className */\r\n className?: string;\r\n /** Click handler */\r\n onClick?: () => void;\r\n}\r\n\r\n/**\r\n * Astro UX Status Colors (Dark Theme)\r\n * https://www.astrouxds.com/patterns/status-system/\r\n */\r\nconst STATUS_COLORS_DARK: Record<StatusVariant, string> = {\r\n off: \"#a4abb6\",\r\n standby: \"#2dccff\",\r\n normal: \"#56f000\",\r\n caution: \"#fce83a\",\r\n serious: \"#ffb302\",\r\n critical: \"#ff3838\",\r\n};\r\n\r\n/**\r\n * Astro UX Status Colors (Light Theme - Fill)\r\n * Requires border for WCAG AA compliance\r\n */\r\nconst STATUS_COLORS_LIGHT_FILL: Record<StatusVariant, string> = {\r\n off: \"#7b8089\",\r\n standby: \"#64d9ff\",\r\n normal: \"#00e200\",\r\n caution: \"#fad800\",\r\n serious: \"#ffaf3d\",\r\n critical: \"#ff2a04\",\r\n};\r\n\r\n/**\r\n * Astro UX Status Colors (Light Theme - Border)\r\n * Required for light backgrounds per Astro UX\r\n */\r\nconst STATUS_COLORS_LIGHT_BORDER: Record<StatusVariant, string> = {\r\n off: \"#3c3e42\",\r\n standby: \"#285766\",\r\n normal: \"#005a00\",\r\n caution: \"#645600\",\r\n serious: \"#664618\",\r\n critical: \"#661102\",\r\n};\r\n\r\nconst STATUS_ARIA_LABELS: Record<StatusVariant, string> = {\r\n off: \"Status: Off\",\r\n standby: \"Status: Standby\",\r\n normal: \"Status: Normal\",\r\n caution: \"Status: Caution\",\r\n serious: \"Status: Serious\",\r\n critical: \"Status: Critical\",\r\n};\r\n\r\n/**\r\n * Render Astro-compliant status shape\r\n * Shapes per https://www.astrouxds.com/patterns/status-system/\r\n */\r\nconst renderStatusShape = (\r\n status: StatusVariant,\r\n size: number,\r\n fillColor: string,\r\n borderColor?: string,\r\n): React.ReactNode => {\r\n const hasBorder = !!borderColor;\r\n const strokeWidth = hasBorder ? 1.5 : 0;\r\n\r\n switch (status) {\r\n // Small filled circle: off\r\n case \"off\":\r\n return (\r\n <svg viewBox=\"0 0 12 12\" width={size} height={size}>\r\n <circle\r\n cx=\"6\"\r\n cy=\"6\"\r\n r={hasBorder ? 2.5 : 3}\r\n fill={fillColor}\r\n stroke={borderColor}\r\n strokeWidth={strokeWidth}\r\n />\r\n </svg>\r\n );\r\n\r\n // Ring (donut): standby\r\n case \"standby\":\r\n return (\r\n <svg viewBox=\"0 0 12 12\" width={size} height={size}>\r\n <circle\r\n cx=\"6\"\r\n cy=\"6\"\r\n r=\"3.5\"\r\n fill=\"none\"\r\n stroke={fillColor}\r\n strokeWidth=\"2\"\r\n />\r\n {hasBorder && (\r\n <circle\r\n cx=\"6\"\r\n cy=\"6\"\r\n r=\"4.75\"\r\n fill=\"none\"\r\n stroke={borderColor}\r\n strokeWidth={strokeWidth}\r\n />\r\n )}\r\n </svg>\r\n );\r\n\r\n // Filled circle: normal\r\n case \"normal\":\r\n return (\r\n <svg viewBox=\"0 0 12 12\" width={size} height={size}>\r\n <circle\r\n cx=\"6\"\r\n cy=\"6\"\r\n r={hasBorder ? 4.5 : 5}\r\n fill={fillColor}\r\n stroke={borderColor}\r\n strokeWidth={strokeWidth}\r\n />\r\n </svg>\r\n );\r\n\r\n // Square shape: caution\r\n case \"caution\":\r\n return (\r\n <svg viewBox=\"0 0 12 12\" width={size} height={size}>\r\n <rect\r\n x={hasBorder ? 1.5 : 1}\r\n y={hasBorder ? 1.5 : 1}\r\n width={hasBorder ? 9 : 10}\r\n height={hasBorder ? 9 : 10}\r\n fill={fillColor}\r\n stroke={borderColor}\r\n strokeWidth={strokeWidth}\r\n />\r\n </svg>\r\n );\r\n\r\n // Diamond shape: serious (rotated square)\r\n case \"serious\":\r\n return (\r\n <svg viewBox=\"0 0 12 12\" width={size} height={size}>\r\n <polygon\r\n points=\"6,1 11,6 6,11 1,6\"\r\n fill={fillColor}\r\n stroke={borderColor}\r\n strokeWidth={strokeWidth}\r\n />\r\n </svg>\r\n );\r\n\r\n // Triangle pointing down: critical\r\n case \"critical\":\r\n return (\r\n <svg viewBox=\"0 0 12 12\" width={size} height={size}>\r\n <polygon\r\n points=\"6,11 1,2 11,2\"\r\n fill={fillColor}\r\n stroke={borderColor}\r\n strokeWidth={strokeWidth}\r\n />\r\n </svg>\r\n );\r\n\r\n default:\r\n return null;\r\n }\r\n};\r\n\r\n/**\r\n * StatusIndicator - Pure React status component\r\n *\r\n * Displays standardized status symbols following Astro UX design patterns.\r\n * Uses dual-coding (color + shape) for WCAG 2.1 AA accessibility compliance.\r\n *\r\n * @example\r\n * ```tsx\r\n * <StatusIndicator status=\"normal\" label=\"Power System\" />\r\n * <StatusIndicator status=\"caution\" label=\"Battery Low\" />\r\n * <StatusIndicator status=\"critical\" label=\"Comm Loss\" pulse />\r\n * ```\r\n */\r\nexport const StatusIndicator = memo(function StatusIndicator({\r\n status,\r\n label,\r\n small = false,\r\n pulse = false,\r\n bordered,\r\n className = \"\",\r\n onClick,\r\n}: StatusIndicatorProps): React.ReactElement {\r\n const { tokens, mode } = useTheme();\r\n\r\n // Determine if we need borders (light theme or explicitly requested)\r\n const isLightTheme = mode === \"light\";\r\n const showBorder = bordered ?? isLightTheme;\r\n\r\n // Get colors from theme or use Astro defaults\r\n const fillColor = isLightTheme\r\n ? STATUS_COLORS_LIGHT_FILL[status]\r\n : tokens.colors.status[status] || STATUS_COLORS_DARK[status];\r\n const borderColor = showBorder\r\n ? STATUS_COLORS_LIGHT_BORDER[status]\r\n : undefined;\r\n\r\n const size = small ? 10 : 14;\r\n const shouldPulse = pulse || status === \"critical\";\r\n const isCircle =\r\n status === \"off\" || status === \"standby\" || status === \"normal\";\r\n\r\n const handleKeyDown = (e: React.KeyboardEvent) => {\r\n if (onClick && (e.key === \"Enter\" || e.key === \" \")) {\r\n e.preventDefault();\r\n onClick();\r\n }\r\n };\r\n\r\n return (\r\n <div\r\n className={classNames(\"zendir-status-indicator\", className)}\r\n onClick={onClick}\r\n onKeyDown={onClick ? handleKeyDown : undefined}\r\n tabIndex={onClick ? 0 : undefined}\r\n role=\"status\"\r\n aria-label={`${STATUS_ARIA_LABELS[status]}${label ? `: ${label}` : \"\"}`}\r\n style={{\r\n display: \"inline-flex\",\r\n alignItems: \"center\",\r\n gap: small ? 4 : 6,\r\n cursor: onClick ? \"pointer\" : \"default\",\r\n outline: \"none\",\r\n }}\r\n >\r\n {/* Status symbol with dual-coding */}\r\n <span\r\n style={{\r\n position: \"relative\",\r\n display: \"inline-flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n width: size,\r\n height: size,\r\n flexShrink: 0,\r\n }}\r\n >\r\n {/* Pulse animation ring */}\r\n {shouldPulse && (\r\n <span\r\n style={{\r\n position: \"absolute\",\r\n inset: -3,\r\n borderRadius: isCircle ? \"50%\" : 0,\r\n backgroundColor: fillColor,\r\n opacity: 0.3,\r\n animation: \"statusPulse 2s ease-out infinite\",\r\n }}\r\n />\r\n )}\r\n\r\n {/* Astro-compliant status shape */}\r\n {renderStatusShape(status, size, fillColor, borderColor)}\r\n </span>\r\n\r\n {/* Label with theme typography */}\r\n {label && (\r\n <span\r\n style={{\r\n fontSize: small\r\n ? tokens.typography.fontSize.xs\r\n : tokens.typography.fontSize.sm,\r\n fontWeight: tokens.typography.fontWeight.medium,\r\n color: \"inherit\",\r\n whiteSpace: \"nowrap\",\r\n letterSpacing: tokens.typography.letterSpacing.normal,\r\n }}\r\n >\r\n {label}\r\n </span>\r\n )}\r\n\r\n {/* Keyframe animation — paused when prefers-reduced-motion is active */}\r\n <style>{`\r\n @keyframes statusPulse {\r\n 0% { transform: scale(1); opacity: 0.3; }\r\n 50% { transform: scale(1.5); opacity: 0; }\r\n 100% { transform: scale(1); opacity: 0; }\r\n }\r\n @media (prefers-reduced-motion: reduce) {\r\n .zendir-status-indicator span[style*=\"statusPulse\"] {\r\n animation: none !important;\r\n }\r\n }\r\n `}</style>\r\n </div>\r\n );\r\n});\r\n"],"mappings":"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"}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { default as React } from 'react';
|
|
2
2
|
import { CategoryDef } from '../types';
|
|
3
|
-
|
|
4
3
|
/** Filter key for events with no team accent (use with `TimelineFilter.teams`). */
|
|
5
4
|
export declare const TIMELINE_FILTER_TEAM_NONE = "__zendir_team_none__";
|
|
6
5
|
/** Filter key for legacy accent color only (no structured `team.id`). */
|
|
7
6
|
export declare const TIMELINE_FILTER_TEAM_LEGACY = "__zendir_team_legacy__";
|
|
8
|
-
export type TimelineViewMode =
|
|
7
|
+
export type TimelineViewMode = "list" | "chart" | "scatter";
|
|
9
8
|
/**
|
|
10
9
|
* Team / category identity on the timeline.
|
|
11
10
|
*
|
|
@@ -16,7 +15,7 @@ export type TimelineViewMode = 'list' | 'chart' | 'scatter';
|
|
|
16
15
|
* Because it extends `CategoryDef`, a `TimelineTeam` value can be used
|
|
17
16
|
* anywhere a `CategoryDef` is expected (e.g. `CategoryPalette` constructor).
|
|
18
17
|
*/
|
|
19
|
-
export interface TimelineTeam extends Omit<CategoryDef,
|
|
18
|
+
export interface TimelineTeam extends Omit<CategoryDef, "label"> {
|
|
20
19
|
/** Human-readable name (tooltips, search, filter pills). Optional for backward compat. */
|
|
21
20
|
label?: string;
|
|
22
21
|
}
|
|
@@ -32,18 +31,18 @@ export interface TimelineEvent {
|
|
|
32
31
|
/** Track/category this event belongs to */
|
|
33
32
|
track?: string;
|
|
34
33
|
/** Status for coloring */
|
|
35
|
-
status?:
|
|
34
|
+
status?: "off" | "standby" | "normal" | "caution" | "serious" | "critical";
|
|
36
35
|
/** Badge text */
|
|
37
36
|
badge?: string;
|
|
38
37
|
/** Badge variant - uses AstroUXDS status terms */
|
|
39
|
-
badgeVariant?:
|
|
38
|
+
badgeVariant?: "default" | "primary" | "normal" | "caution" | "serious" | "critical";
|
|
40
39
|
/** Subtitle/description */
|
|
41
40
|
subtitle?: string;
|
|
42
41
|
/** Additional timestamps to display in list view */
|
|
43
42
|
timestamps?: {
|
|
44
43
|
label: string;
|
|
45
44
|
value: string;
|
|
46
|
-
status?:
|
|
45
|
+
status?: "normal" | "standby" | "caution" | "serious" | "critical" | "off";
|
|
47
46
|
}[];
|
|
48
47
|
/** Arguments/metadata */
|
|
49
48
|
arguments?: Record<string, string | number | boolean>;
|
|
@@ -78,16 +77,16 @@ export interface TimelineTrackDef {
|
|
|
78
77
|
/** Track height in pixels */
|
|
79
78
|
height?: number;
|
|
80
79
|
}
|
|
81
|
-
export type TimeFormat =
|
|
80
|
+
export type TimeFormat = "relative" | "absolute" | "utc";
|
|
82
81
|
export interface TimelineFilter {
|
|
83
82
|
/** Filter by track IDs (empty / omitted = all tracks) */
|
|
84
83
|
tracks?: string[];
|
|
85
84
|
/** Filter by display status (multi-select; empty / omitted = all) */
|
|
86
|
-
status?: TimelineEvent[
|
|
85
|
+
status?: TimelineEvent["status"][];
|
|
87
86
|
/** Case-insensitive match on title, subtitle, badge, track, argument values */
|
|
88
87
|
search?: string;
|
|
89
88
|
/** Duration shape: point (no end or zero length), range (has end after start), all */
|
|
90
|
-
eventShape?:
|
|
89
|
+
eventShape?: "all" | "point" | "range";
|
|
91
90
|
/**
|
|
92
91
|
* Filter by team keys from `getTimelineTeamFilterKey` (e.g. `"42"`, `"alpha"`).
|
|
93
92
|
* Include `TIMELINE_FILTER_TEAM_NONE` / `TIMELINE_FILTER_TEAM_LEGACY` when those buckets exist in data.
|
|
@@ -99,7 +98,7 @@ export interface TimelineFilter {
|
|
|
99
98
|
teamColoredOnly?: boolean;
|
|
100
99
|
}
|
|
101
100
|
/** Display status used for filtering and markers (badgeVariant overrides raw status when set). */
|
|
102
|
-
export declare function getTimelineEventDisplayStatus(event: TimelineEvent): TimelineEvent[
|
|
101
|
+
export declare function getTimelineEventDisplayStatus(event: TimelineEvent): TimelineEvent["status"];
|
|
103
102
|
export declare function isTimelineFilterActive(filter: TimelineFilter): boolean;
|
|
104
103
|
export declare function matchesTimelineFilter(event: TimelineEvent, filter: TimelineFilter): boolean;
|
|
105
104
|
export interface UnifiedTimelineProps {
|