@camstack/ui-library 1.2.257 → 1.2.259
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/dist/composites/accelerator-label.d.ts +9 -9
- package/dist/composites/adaptive-downlink.d.ts +141 -143
- package/dist/composites/addon-global-settings-form.d.ts +73 -60
- package/dist/composites/addon-page-props.d.ts +34 -10
- package/dist/composites/agent-step-editor.d.ts +48 -47
- package/dist/composites/app-shell/app-shell.d.ts +17 -17
- package/dist/composites/app-shell/index.d.ts +3 -3
- package/dist/composites/app-shell/sidebar-item.d.ts +9 -8
- package/dist/composites/app-shell/sidebar.d.ts +10 -10
- package/dist/composites/audio-classification-list.d.ts +16 -15
- package/dist/composites/audio-level-waveform.d.ts +31 -30
- package/dist/composites/audio-waveform.d.ts +18 -17
- package/dist/composites/battery-badge.d.ts +27 -13
- package/dist/composites/breadcrumb.d.ts +21 -21
- package/dist/composites/camera-stream-player.d.ts +309 -309
- package/dist/composites/cap-settings/AutotrackSection.d.ts +19 -2
- package/dist/composites/cap-settings/CameraGridLayoutEditor.d.ts +24 -2
- package/dist/composites/cap-settings/ConsumablesPanel.d.ts +21 -2
- package/dist/composites/cap-settings/CoverageTrack.d.ts +21 -20
- package/dist/composites/cap-settings/EventBucketStrip.d.ts +21 -20
- package/dist/composites/cap-settings/EventHeatmap.d.ts +8 -7
- package/dist/composites/cap-settings/HomePresetPicker.d.ts +2 -2
- package/dist/composites/cap-settings/MaskShapeCanvas.d.ts +143 -41
- package/dist/composites/cap-settings/MotionZonesSettings.d.ts +41 -2
- package/dist/composites/cap-settings/NavigationPanel.d.ts +14 -2
- package/dist/composites/cap-settings/PrivacyMaskSettings.d.ts +3 -2
- package/dist/composites/cap-settings/PtzPanel.d.ts +15 -2
- package/dist/composites/cap-settings/RecordingBandsEditor.d.ts +33 -32
- package/dist/composites/cap-settings/RecordingPanel.d.ts +3 -2
- package/dist/composites/cap-settings/RecordingSettings.d.ts +11 -10
- package/dist/composites/cap-settings/RecordingTimeline.d.ts +3 -2
- package/dist/composites/cap-settings/SceneMonitorEditor.d.ts +3 -51
- package/dist/composites/cap-settings/SceneReferenceGallery.d.ts +62 -23
- package/dist/composites/cap-settings/SceneSettingsForm.d.ts +52 -16
- package/dist/composites/cap-settings/TimelineControls.d.ts +21 -20
- package/dist/composites/cap-settings/camera-grid-layout.d.ts +95 -95
- package/dist/composites/cap-settings/event-thumb.d.ts +9 -8
- package/dist/composites/cap-settings/index.d.ts +20 -20
- package/dist/composites/cap-settings/privacy-mask-audio.d.ts +47 -47
- package/dist/composites/cap-settings/recording-config-form.d.ts +25 -25
- package/dist/composites/cap-settings/recording-spans.d.ts +14 -14
- package/dist/composites/cap-settings/recording-timeline-model.d.ts +57 -57
- package/dist/composites/cap-settings/scene-monitor-copy.d.ts +58 -49
- package/dist/composites/client-network-sample.d.ts +41 -41
- package/dist/composites/clips/ClipBandBar.d.ts +44 -14
- package/dist/composites/clips/ClipPanel.d.ts +30 -6
- package/dist/composites/clips/ClipTile.d.ts +26 -5
- package/dist/composites/clips/ClipsSection.d.ts +107 -2
- package/dist/composites/clips/clip-band.d.ts +72 -38
- package/dist/composites/clips/clip-day-window.d.ts +7 -30
- package/dist/composites/clips/clip-source-state.d.ts +55 -26
- package/dist/composites/clips/clip-still-retry.d.ts +39 -39
- package/dist/composites/clips/clip-thumbnail-fetch.d.ts +9 -9
- package/dist/composites/clips/clip-tile-media.d.ts +64 -32
- package/dist/composites/clips/clip-view-state.d.ts +76 -46
- package/dist/composites/code-block.d.ts +5 -4
- package/dist/composites/config-form-builder.d.ts +14 -13
- package/dist/composites/config-form-field.d.ts +63 -62
- package/dist/composites/config-icon-field.d.ts +10 -9
- package/dist/composites/config-secret-field.d.ts +51 -27
- package/dist/composites/confirm-action-button.d.ts +52 -39
- package/dist/composites/confirm-dialog.d.ts +110 -48
- package/dist/composites/copy-button.d.ts +25 -19
- package/dist/composites/data-table/data-table-header.d.ts +8 -7
- package/dist/composites/data-table/data-table-pagination.d.ts +7 -6
- package/dist/composites/data-table/data-table-row.d.ts +8 -7
- package/dist/composites/data-table/data-table.d.ts +3 -2
- package/dist/composites/data-table/index.d.ts +2 -2
- package/dist/composites/data-table/types.d.ts +29 -29
- package/dist/composites/data-table-filter-bar.d.ts +30 -29
- package/dist/composites/data-table-filter.d.ts +34 -34
- package/dist/composites/data-table-layout.d.ts +24 -24
- package/dist/composites/data-table-pager.d.ts +5 -5
- package/dist/composites/data-table-pagination.d.ts +23 -23
- package/dist/composites/data-table-selection.d.ts +10 -10
- package/dist/composites/data-table.d.ts +167 -118
- package/dist/composites/detection-canvas.d.ts +34 -25
- package/dist/composites/detection-colors.d.ts +9 -9
- package/dist/composites/detection-overlay.d.ts +33 -32
- package/dist/composites/detection-result-tree.d.ts +22 -9
- package/dist/composites/dev-shell.d.ts +15 -14
- package/dist/composites/device-activity-panel.d.ts +37 -31
- package/dist/composites/device-card.d.ts +32 -32
- package/dist/composites/device-controls/ac-panel.d.ts +2 -2
- package/dist/composites/device-controls/alarm-hero-card.d.ts +42 -42
- package/dist/composites/device-controls/atoms.d.ts +50 -50
- package/dist/composites/device-controls/brightness-panel.d.ts +3 -3
- package/dist/composites/device-controls/button-control.d.ts +14 -14
- package/dist/composites/device-controls/climate-panel.d.ts +12 -12
- package/dist/composites/device-controls/container-primary-hero.d.ts +33 -16
- package/dist/composites/device-controls/container-primary.d.ts +68 -39
- package/dist/composites/device-controls/control-panel.d.ts +4 -4
- package/dist/composites/device-controls/control-registry.d.ts +81 -70
- package/dist/composites/device-controls/cover-hero-card.d.ts +26 -26
- package/dist/composites/device-controls/cover-inline.d.ts +20 -20
- package/dist/composites/device-controls/cover-panel.d.ts +2 -2
- package/dist/composites/device-controls/dummy-hero-card.d.ts +2 -2
- package/dist/composites/device-controls/fan-hero-card.d.ts +20 -20
- package/dist/composites/device-controls/fan-panel.d.ts +3 -3
- package/dist/composites/device-controls/humidifier-control.d.ts +46 -29
- package/dist/composites/device-controls/image-control.d.ts +41 -27
- package/dist/composites/device-controls/index.d.ts +34 -34
- package/dist/composites/device-controls/lawn-mower-control.d.ts +30 -16
- package/dist/composites/device-controls/light-hero-card.d.ts +15 -15
- package/dist/composites/device-controls/lock-hero-card.d.ts +14 -14
- package/dist/composites/device-controls/lock-panel.d.ts +3 -3
- package/dist/composites/device-controls/media-player-hero-card.d.ts +16 -16
- package/dist/composites/device-controls/media-player-panel.d.ts +7 -7
- package/dist/composites/device-controls/offline-badge.d.ts +23 -8
- package/dist/composites/device-controls/panel-controls.d.ts +39 -20
- package/dist/composites/device-controls/pet-feeder-panel.d.ts +27 -9
- package/dist/composites/device-controls/popover-row-action.d.ts +18 -6
- package/dist/composites/device-controls/primary-child-picker.d.ts +31 -15
- package/dist/composites/device-controls/primary-child.d.ts +14 -25
- package/dist/composites/device-controls/radial-gauge.d.ts +17 -17
- package/dist/composites/device-controls/script-automation-controls.d.ts +9 -9
- package/dist/composites/device-controls/sensor-hero-card.d.ts +26 -8
- package/dist/composites/device-controls/sensor-inline-control.d.ts +21 -9
- package/dist/composites/device-controls/sensor-value-atom.d.ts +97 -76
- package/dist/composites/device-controls/switch-hero-card.d.ts +11 -11
- package/dist/composites/device-controls/switch-panel.d.ts +2 -2
- package/dist/composites/device-controls/tap-toggle.d.ts +13 -13
- package/dist/composites/device-controls/thermostat-hero-card.d.ts +16 -16
- package/dist/composites/device-controls/types.d.ts +11 -11
- package/dist/composites/device-controls/update-control.d.ts +20 -7
- package/dist/composites/device-controls/vacuum-control.d.ts +41 -25
- package/dist/composites/device-controls/valve-control.d.ts +51 -35
- package/dist/composites/device-controls/water-heater-control.d.ts +48 -31
- package/dist/composites/device-controls/weather-control.d.ts +46 -28
- package/dist/composites/device-export-panel.d.ts +34 -34
- package/dist/composites/device-grid.d.ts +10 -10
- package/dist/composites/device-item/actions.d.ts +40 -18
- package/dist/composites/device-item/admin-link-quick-action.d.ts +66 -26
- package/dist/composites/device-item/child-layout.d.ts +43 -26
- package/dist/composites/device-item/child-section-accordion.d.ts +20 -6
- package/dist/composites/device-item/children-accordion.d.ts +11 -11
- package/dist/composites/device-item/container-children-context.d.ts +28 -11
- package/dist/composites/device-item/device-delete-action.d.ts +23 -5
- package/dist/composites/device-item/features.d.ts +33 -15
- package/dist/composites/device-item/header.d.ts +53 -31
- package/dist/composites/device-item/helpers.d.ts +291 -274
- package/dist/composites/device-item/index.d.ts +18 -9
- package/dist/composites/device-item/preview.d.ts +41 -21
- package/dist/composites/device-item/quick-detail-action.d.ts +4 -4
- package/dist/composites/device-item/reboot-quick-action.d.ts +28 -7
- package/dist/composites/device-item/role-display-defaults-context.d.ts +28 -12
- package/dist/composites/device-item/status-dot.d.ts +24 -6
- package/dist/composites/device-list/batch-actions-bar.d.ts +23 -12
- package/dist/composites/device-list/batch-toolbar.d.ts +13 -13
- package/dist/composites/device-list/columns.d.ts +108 -108
- package/dist/composites/device-list/device-integration.d.ts +48 -58
- package/dist/composites/device-list/device-mode.d.ts +121 -121
- package/dist/composites/device-list/empty-state.d.ts +14 -3
- package/dist/composites/device-list/filter-chips.d.ts +42 -29
- package/dist/composites/device-list/fuzzy-match.d.ts +22 -22
- package/dist/composites/device-list/generic-mode.d.ts +88 -88
- package/dist/composites/device-list/group.d.ts +62 -35
- package/dist/composites/device-list/hardware-cell.d.ts +14 -3
- package/dist/composites/device-list/hardware.d.ts +29 -11
- package/dist/composites/device-list/icon-action.d.ts +27 -15
- package/dist/composites/device-list/index.d.ts +46 -23
- package/dist/composites/device-list/multi-select.d.ts +17 -17
- package/dist/composites/device-list/page-size-select.d.ts +13 -7
- package/dist/composites/device-list/pagination.d.ts +19 -12
- package/dist/composites/device-list/sort.d.ts +28 -15
- package/dist/composites/device-list/sortable-header.d.ts +20 -7
- package/dist/composites/device-list/table-layout.d.ts +44 -44
- package/dist/composites/device-list/type-filter.d.ts +16 -16
- package/dist/composites/device-list/url-state.d.ts +35 -35
- package/dist/composites/device-meta.d.ts +43 -43
- package/dist/composites/device-picker/DevicePicker.d.ts +72 -33
- package/dist/composites/device-picker/SelectedChip.d.ts +10 -9
- package/dist/composites/device-picker/device-filter-bar.d.ts +19 -18
- package/dist/composites/device-picker/device-fleet-view.d.ts +11 -3
- package/dist/composites/device-picker/device-parent.d.ts +27 -27
- package/dist/composites/device-picker/device-picker-grouping.d.ts +3 -3
- package/dist/composites/device-picker/device-picker-model.d.ts +140 -140
- package/dist/composites/device-picker/device-selection-rows.d.ts +31 -24
- package/dist/composites/device-picker/device-selection.d.ts +43 -43
- package/dist/composites/device-picker/index.d.ts +9 -9
- package/dist/composites/device-select-field.d.ts +17 -16
- package/dist/composites/device-select-filter.d.ts +78 -78
- package/dist/composites/device-selector-picker.d.ts +25 -25
- package/dist/composites/device-step-matrix.d.ts +54 -28
- package/dist/composites/discovery-panel.d.ts +22 -22
- package/dist/composites/doorbell-recent-panel.d.ts +9 -8
- package/dist/composites/empty-state.d.ts +8 -8
- package/dist/composites/error-box.d.ts +32 -17
- package/dist/composites/event-kind-visuals.d.ts +29 -18
- package/dist/composites/event-stream.d.ts +59 -42
- package/dist/composites/extensions/AssociationSlotCard.d.ts +45 -24
- package/dist/composites/extensions/ExtensionsPanel.d.ts +41 -18
- package/dist/composites/extensions/extensions-view-state.d.ts +71 -53
- package/dist/composites/filter-bar.d.ts +22 -21
- package/dist/composites/form-field.d.ts +9 -9
- package/dist/composites/format-state-value.d.ts +23 -51
- package/dist/composites/grouped-model-selector.d.ts +7 -6
- package/dist/composites/hls-quality.d.ts +26 -26
- package/dist/composites/hls-video.d.ts +62 -39
- package/dist/composites/hover-zoom-image.d.ts +35 -16
- package/dist/composites/icon-picker.d.ts +86 -50
- package/dist/composites/image-selector.d.ts +21 -20
- package/dist/composites/index.d.ts +204 -204
- package/dist/composites/inference-config-selector.d.ts +36 -35
- package/dist/composites/kebab-menu.d.ts +53 -35
- package/dist/composites/key-value-list.d.ts +14 -14
- package/dist/composites/log-stream-scroll.d.ts +24 -24
- package/dist/composites/log-stream.d.ts +81 -70
- package/dist/composites/login-form.d.ts +7 -6
- package/dist/composites/model-bound-slider.d.ts +46 -26
- package/dist/composites/model-picker.d.ts +20 -19
- package/dist/composites/mount-addon-page.d.ts +12 -12
- package/dist/composites/network-link-badge.d.ts +7 -6
- package/dist/composites/node-picker.d.ts +14 -13
- package/dist/composites/notification-targets-field.d.ts +76 -58
- package/dist/composites/notification-targets-options.d.ts +9 -6
- package/dist/composites/option-select/OptionSelect.d.ts +23 -22
- package/dist/composites/option-select/index.d.ts +4 -4
- package/dist/composites/option-select/option-select-model.d.ts +35 -35
- package/dist/composites/page-header.d.ts +6 -6
- package/dist/composites/peer-connection-config.d.ts +9 -9
- package/dist/composites/phase-icon.d.ts +10 -3
- package/dist/composites/pipeline-builder.d.ts +21 -13
- package/dist/composites/pipeline-matrix-shared.d.ts +159 -150
- package/dist/composites/pipeline-runtime-selector.d.ts +12 -11
- package/dist/composites/pipeline-step.d.ts +39 -31
- package/dist/composites/placeholder-field/PlaceholderChipField.d.ts +23 -22
- package/dist/composites/placeholder-field/index.d.ts +1 -1
- package/dist/composites/provider-badge.d.ts +6 -5
- package/dist/composites/ptz-overlay.d.ts +38 -18
- package/dist/composites/qr-code.d.ts +24 -10
- package/dist/composites/reconnect-schedule.d.ts +22 -22
- package/dist/composites/resolve-step-default-model.d.ts +94 -94
- package/dist/composites/response-log.d.ts +7 -6
- package/dist/composites/root-model-source.d.ts +21 -10
- package/dist/composites/scope-picker.d.ts +49 -25
- package/dist/composites/section-card.d.ts +19 -11
- package/dist/composites/setting-row.d.ts +39 -21
- package/dist/composites/snapshot-button.d.ts +23 -19
- package/dist/composites/sort-header-button.d.ts +25 -8
- package/dist/composites/stat-card.d.ts +20 -8
- package/dist/composites/state-values-stream.d.ts +49 -24
- package/dist/composites/status-badge.d.ts +10 -8
- package/dist/composites/step-inspector/gate-control.d.ts +13 -12
- package/dist/composites/step-inspector/index.d.ts +8 -8
- package/dist/composites/step-inspector/layered-settings-form.d.ts +41 -30
- package/dist/composites/step-inspector/segmented-choice.d.ts +8 -7
- package/dist/composites/step-inspector/setting-values.d.ts +13 -8
- package/dist/composites/step-inspector/step-detail-dock.d.ts +39 -23
- package/dist/composites/step-inspector/step-inspector-panel.d.ts +34 -28
- package/dist/composites/step-inspector/step-model-row.d.ts +29 -24
- package/dist/composites/step-inspector/step-search.d.ts +11 -11
- package/dist/composites/step-timings.d.ts +7 -6
- package/dist/composites/step-tree.d.ts +17 -12
- package/dist/composites/stream-broker-selector.d.ts +29 -8
- package/dist/composites/stream-debug/stream-debug-overlay.d.ts +40 -40
- package/dist/composites/stream-debug/webrtc-debug-stats.d.ts +144 -129
- package/dist/composites/stream-panel.d.ts +212 -201
- package/dist/composites/table-sort.d.ts +61 -61
- package/dist/composites/timezone-selector.d.ts +15 -13
- package/dist/composites/training/send-frame-to-training.d.ts +5 -4
- package/dist/composites/training/training-collection-picker.d.ts +4 -3
- package/dist/composites/training/training-refusal-text.d.ts +6 -6
- package/dist/composites/unit-picker/UnitPicker.d.ts +19 -14
- package/dist/composites/unit-picker/index.d.ts +1 -1
- package/dist/composites/use-data-table-filter.d.ts +19 -19
- package/dist/composites/version-badge.d.ts +19 -18
- package/dist/composites/webrtc-diagnostics/EndpointTestCard.d.ts +7 -7
- package/dist/composites/webrtc-diagnostics/HubSessionTestCard.d.ts +14 -14
- package/dist/composites/webrtc-diagnostics/RunReport.d.ts +10 -5
- package/dist/composites/webrtc-diagnostics/endpoint-probe.d.ts +41 -21
- package/dist/composites/webrtc-diagnostics/endpoint-test.d.ts +37 -32
- package/dist/composites/webrtc-diagnostics/format.d.ts +3 -3
- package/dist/composites/webrtc-diagnostics/ice-candidates.d.ts +49 -49
- package/dist/composites/webrtc-diagnostics/nat-mapping.d.ts +36 -36
- package/dist/composites/webrtc-diagnostics/session-run.d.ts +108 -95
- package/dist/composites/webrtc-diagnostics/session-verdict.d.ts +29 -20
- package/dist/composites/widget-panel.d.ts +23 -23
- package/dist/composites/widget-slot.d.ts +35 -17
- package/dist/contexts/custom-field-renderers.d.ts +53 -17
- package/dist/contexts/device-context.d.ts +32 -12
- package/dist/contexts/device-quick-detail.d.ts +13 -4
- package/dist/contexts/player-overlays.d.ts +82 -42
- package/dist/contexts/recorded-playback.d.ts +40 -18
- package/dist/contexts/system-context.d.ts +28 -13
- package/dist/contexts/vod-playback.d.ts +39 -22
- package/dist/contexts/widget-registry.d.ts +139 -102
- package/dist/contexts/zone-editing.d.ts +69 -46
- package/dist/generated/system-hooks.d.ts +17 -1
- package/dist/hooks/index.d.ts +43 -43
- package/dist/hooks/turn-server-cache.d.ts +69 -69
- package/dist/hooks/use-capability-presence.d.ts +65 -28
- package/dist/hooks/use-cluster-nodes.d.ts +54 -27
- package/dist/hooks/use-device-autotrack.d.ts +7 -7
- package/dist/hooks/use-device-battery.d.ts +24 -11
- package/dist/hooks/use-device-cap-slice.d.ts +15 -15
- package/dist/hooks/use-device-capability.d.ts +61 -27
- package/dist/hooks/use-device-detections.d.ts +32 -32
- package/dist/hooks/use-device-features.d.ts +18 -18
- package/dist/hooks/use-device-list-page-size.d.ts +19 -6
- package/dist/hooks/use-device-network-link.d.ts +15 -7
- package/dist/hooks/use-device-proxy.d.ts +98 -92
- package/dist/hooks/use-device-snapshot.d.ts +23 -23
- package/dist/hooks/use-device-webrtc.d.ts +211 -205
- package/dist/hooks/use-devices.d.ts +9 -9
- package/dist/hooks/use-doorbell-events.d.ts +13 -13
- package/dist/hooks/use-event-stream.d.ts +6 -3
- package/dist/hooks/use-is-mobile.d.ts +5 -5
- package/dist/hooks/use-live-buffer.d.ts +5 -5
- package/dist/hooks/use-live-event.d.ts +1 -1
- package/dist/hooks/use-navigation.d.ts +20 -20
- package/dist/hooks/use-optimistic-slice.d.ts +13 -13
- package/dist/hooks/use-persisted-page-size.d.ts +10 -10
- package/dist/hooks/use-ptz.d.ts +108 -108
- package/dist/hooks/use-stationary-overlay.d.ts +37 -37
- package/dist/hooks/use-system-query.d.ts +33 -10
- package/dist/hooks/use-url-query.d.ts +3 -3
- package/dist/icons/index.d.ts +2 -2
- package/dist/icons/provider-icons.d.ts +2 -2
- package/dist/icons/status-icons.d.ts +2 -2
- package/dist/index.cjs +124 -69
- package/dist/index.d.ts +31 -27
- package/dist/index.js +124 -69
- package/dist/lib/cap-error.d.ts +18 -39
- package/dist/lib/cn.d.ts +1 -1
- package/dist/lib/fleet-query-defaults.d.ts +68 -34
- package/dist/lib/format-control-datetime.d.ts +16 -16
- package/dist/lib/format-duration.d.ts +12 -12
- package/dist/lib/format-last-seen.d.ts +5 -18
- package/dist/lib/format-numeric.d.ts +7 -7
- package/dist/lib/hub-mount.d.ts +8 -42
- package/dist/lib/index.d.ts +21 -21
- package/dist/lib/phase-config.d.ts +24 -11
- package/dist/lib/pipeline-mirror.d.ts +16 -16
- package/dist/lib/recorded-control-protocol.d.ts +41 -43
- package/dist/lib/resolve-sensor-display.d.ts +36 -20
- package/dist/lib/responsive.d.ts +54 -54
- package/dist/lib/scrub-controller.d.ts +75 -78
- package/dist/lib/shared-context.d.ts +27 -2
- package/dist/lib/tailwind-variants.d.ts +20 -20
- package/dist/primitives/badge.d.ts +5 -10
- package/dist/primitives/bottom-sheet.d.ts +7 -7
- package/dist/primitives/button.d.ts +5 -9
- package/dist/primitives/card.d.ts +4 -8
- package/dist/primitives/checkbox.d.ts +3 -4
- package/dist/primitives/collapsible-card.d.ts +23 -13
- package/dist/primitives/dialog.d.ts +33 -59
- package/dist/primitives/dropdown.d.ts +13 -13
- package/dist/primitives/floating-panel.d.ts +41 -20
- package/dist/primitives/icon-button.d.ts +8 -12
- package/dist/primitives/index.d.ts +22 -22
- package/dist/primitives/input.d.ts +6 -16
- package/dist/primitives/label.d.ts +3 -4
- package/dist/primitives/mobile-drawer.d.ts +8 -8
- package/dist/primitives/password-input.d.ts +18 -18
- package/dist/primitives/popover.d.ts +7 -7
- package/dist/primitives/scroll-area.d.ts +3 -4
- package/dist/primitives/select.d.ts +20 -20
- package/dist/primitives/separator.d.ts +4 -8
- package/dist/primitives/skeleton.d.ts +3 -4
- package/dist/primitives/switch.d.ts +6 -6
- package/dist/primitives/tabs.d.ts +26 -26
- package/dist/primitives/tooltip.d.ts +12 -12
- package/dist/theme/create-theme.d.ts +1 -1
- package/dist/theme/defaults.d.ts +1 -1
- package/dist/theme/index.d.ts +6 -6
- package/dist/theme/theme-provider.d.ts +8 -7
- package/dist/theme/theme-to-css.d.ts +1 -1
- package/dist/theme/types.d.ts +98 -100
- package/dist/theme/use-theme-mode.d.ts +1 -1
- package/dist/trpc-react.d.ts +23 -3
- package/dist/widgets/host-widgets.d.ts +4 -4
- package/package.json +8 -4
- package/src/tailwind/camstack-theme.css +11 -0
- package/dist/composites/unit-picker/UnitPicker.spec.d.ts +0 -1
|
@@ -1,52 +1,69 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* EventStream — universal event viewer for ui-library.
|
|
3
|
+
*
|
|
4
|
+
* Hierarchical scope: agentId → addonId → deviceId (same as LogStream).
|
|
5
|
+
* Two filtering layers:
|
|
6
|
+
* 1. `defaultCategories` (or legacy `categories`) — initial active
|
|
7
|
+
* whitelist. The user can mutate this through the toolbar's
|
|
8
|
+
* multiselect popover; Reset restores the prop's set.
|
|
9
|
+
* 2. Free-text search — case-insensitive substring match across
|
|
10
|
+
* category, source, data, and the rendered summary line.
|
|
11
|
+
*
|
|
12
|
+
* The backend subscription is mounted only while this component is
|
|
13
|
+
* rendered, so callers can mount/unmount it on tab switches and the
|
|
14
|
+
* tRPC subscription cleans up automatically. The historical query
|
|
15
|
+
* input refreshes when the active category set changes.
|
|
16
|
+
*/
|
|
17
|
+
import { type JSX } from "react";
|
|
18
|
+
import { type LiveBuffer } from "../hooks/use-live-buffer";
|
|
2
19
|
interface EventEntry {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
20
|
+
readonly id: string;
|
|
21
|
+
readonly timestamp: string;
|
|
22
|
+
readonly source: {
|
|
23
|
+
readonly type: string;
|
|
24
|
+
readonly id: string | number;
|
|
25
|
+
readonly nodeId?: string;
|
|
26
|
+
readonly addonId?: string;
|
|
27
|
+
readonly deviceId?: number;
|
|
28
|
+
};
|
|
29
|
+
readonly category: string;
|
|
30
|
+
readonly data: Record<string, unknown>;
|
|
14
31
|
}
|
|
15
32
|
export interface EventStreamProps {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
33
|
+
readonly agentId?: string;
|
|
34
|
+
readonly addonId?: string;
|
|
35
|
+
readonly deviceId?: number;
|
|
36
|
+
/** Initial whitelist — the user can mutate through the multiselect popover.
|
|
37
|
+
* Defaults to ALL EventCategory values when both this and `categories`
|
|
38
|
+
* are omitted. */
|
|
39
|
+
readonly defaultCategories?: readonly string[];
|
|
40
|
+
/** Legacy alias for `defaultCategories`. Kept for back-compat. */
|
|
41
|
+
readonly categories?: readonly string[];
|
|
42
|
+
/** Category glob/pattern passed to the backend subscription (e.g. 'addon.*'). */
|
|
43
|
+
readonly category?: string;
|
|
44
|
+
readonly maxHeight?: string;
|
|
45
|
+
readonly limit?: number;
|
|
46
|
+
/** Show the multiselect filter button in the toolbar (default true). */
|
|
47
|
+
readonly showCategoryFilter?: boolean;
|
|
48
|
+
readonly showFilters?: boolean;
|
|
49
|
+
/**
|
|
50
|
+
* Optional controlled live buffer. When provided, the stream reads
|
|
51
|
+
* + appends to this external store rather than its own `useState`,
|
|
52
|
+
* so the visible list survives an unmount/remount of the component
|
|
53
|
+
* (used by `DeviceActivityPanel` to keep tab content alive across
|
|
54
|
+
* tab switches without keeping subscriptions open in inactive tabs).
|
|
55
|
+
*/
|
|
56
|
+
readonly liveBuffer?: LiveBuffer<EventEntry>;
|
|
57
|
+
readonly onClose?: () => void;
|
|
58
|
+
readonly className?: string;
|
|
42
59
|
}
|
|
43
60
|
/** Categories visible in the events tab by default. The "All" badge
|
|
44
|
-
|
|
61
|
+
* reflects this set, not the raw enum. */
|
|
45
62
|
export declare const DEFAULT_EVENT_CATEGORIES: readonly string[];
|
|
46
63
|
export declare function summarizeEvent(category: string, data: Record<string, unknown>): string | null;
|
|
47
|
-
export declare function EventStream({ agentId, addonId, deviceId, defaultCategories, categories: legacyCategories, category: propsCategory, maxHeight, limit, showCategoryFilter, showFilters: _showFilters, liveBuffer: externalBuffer, onClose, className
|
|
64
|
+
export declare function EventStream({ agentId, addonId, deviceId, defaultCategories, categories: legacyCategories, category: propsCategory, maxHeight, limit, showCategoryFilter, showFilters: _showFilters, liveBuffer: externalBuffer, onClose, className }: EventStreamProps): JSX.Element | null;
|
|
48
65
|
export interface FloatingEventStreamProps extends EventStreamProps {
|
|
49
|
-
|
|
66
|
+
readonly position?: "bottom" | "overlay";
|
|
50
67
|
}
|
|
51
|
-
export declare function FloatingEventStream({ position, className, ...props }: FloatingEventStreamProps):
|
|
68
|
+
export declare function FloatingEventStream({ position, className, ...props }: FloatingEventStreamProps): JSX.Element | null;
|
|
52
69
|
export {};
|
|
@@ -1,35 +1,56 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* One ASSOCIATION slot (D648): the devices a host lists, edited as a device
|
|
3
|
+
* multiselect.
|
|
4
|
+
*
|
|
5
|
+
* - The saved value is the owner's store, read by `listSlots`. The draft is
|
|
6
|
+
* local until Save, and Save is `setSlot` — the owner validates and writes
|
|
7
|
+
* through its existing path, so a refusal comes back BY NAME and is shown.
|
|
8
|
+
* - Candidates (`listCandidates`) are fetched only while editing. Suggestions
|
|
9
|
+
* are chips the operator must click to add; nothing is picked on its own
|
|
10
|
+
* (D356).
|
|
11
|
+
* - Every saved source shows its health; a missing or unavailable one is
|
|
12
|
+
* shown with its reason and never silently dropped from the draft.
|
|
13
|
+
* - A gate owned by ANOTHER authority (e.g. a wrapper's binding; no slot
|
|
14
|
+
* reports one today) is shown read-only, naming that authority (D62).
|
|
15
|
+
* - A slot whose value carries a tracked-event opt-in (`linked-devices`,
|
|
16
|
+
* D655) gets one toggle per LINKED device — the picks, what the owner links
|
|
17
|
+
* by structure (`impliedSources`: tree children, never a container, D356)
|
|
18
|
+
* and any stored opt-in no longer linked, so each can be removed — saved
|
|
19
|
+
* with the picks, whole.
|
|
20
|
+
*/
|
|
21
|
+
import { type JSX } from "react";
|
|
22
|
+
import { type ExtensionSlotSource, type ExtensionSlotState } from "@camstack/types";
|
|
23
|
+
import { type TrackedOption } from "./extensions-view-state.js";
|
|
3
24
|
export interface SlotSourceListProps {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
25
|
+
readonly sources: readonly ExtensionSlotSource[];
|
|
26
|
+
/** The tracked-event opt-in, when the slot carries one. */
|
|
27
|
+
readonly tracked?: readonly number[] | undefined;
|
|
7
28
|
}
|
|
8
29
|
/** The saved sources, each with its health — a bad one is shown, never hidden. */
|
|
9
|
-
export declare function SlotSourceList({ sources, tracked }: SlotSourceListProps):
|
|
30
|
+
export declare function SlotSourceList({ sources, tracked }: SlotSourceListProps): JSX.Element | null;
|
|
10
31
|
export interface AssociationSlotCardProps {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
32
|
+
readonly deviceId: number;
|
|
33
|
+
readonly row: ExtensionSlotState;
|
|
34
|
+
readonly onSaved: () => void;
|
|
35
|
+
/**
|
|
36
|
+
* No Edit affordance — for a caller whose viewer cannot write `setSlot`
|
|
37
|
+
* (`auth: 'admin'`), never a client-side echo of a server refusal. The
|
|
38
|
+
* saved picks are still shown in full (D356: a link is only what the
|
|
39
|
+
* operator picked, and hiding it from a non-admin would read as gone).
|
|
40
|
+
*/
|
|
41
|
+
readonly readOnly?: boolean;
|
|
21
42
|
}
|
|
22
43
|
export interface ActivationLineProps {
|
|
23
|
-
|
|
44
|
+
readonly row: ExtensionSlotState;
|
|
24
45
|
}
|
|
25
46
|
export interface ImpliedSourceListProps {
|
|
26
|
-
|
|
27
|
-
|
|
47
|
+
readonly sources: readonly ExtensionSlotSource[];
|
|
48
|
+
readonly tracked?: readonly number[] | undefined;
|
|
28
49
|
}
|
|
29
50
|
export interface TrackedTogglesProps {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
51
|
+
readonly options: readonly TrackedOption[];
|
|
52
|
+
readonly tracked: readonly number[];
|
|
53
|
+
readonly nameOf: (id: number) => string;
|
|
54
|
+
readonly onToggle: (id: number) => void;
|
|
34
55
|
}
|
|
35
|
-
export declare function AssociationSlotCard({ deviceId, row, onSaved, readOnly
|
|
56
|
+
export declare function AssociationSlotCard({ deviceId, row, onSaved, readOnly }: AssociationSlotCardProps): JSX.Element | null;
|
|
@@ -1,20 +1,43 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* `host/extensions-panel` — what a device is extended with by OTHER devices,
|
|
3
|
+
* in one place (D648).
|
|
4
|
+
*
|
|
5
|
+
* Mounted by the framework: `device-extension.cap.ts` declares
|
|
6
|
+
* `deviceConfig.ui = { kind:'widget', widgetId:'host/extensions-panel',
|
|
7
|
+
* tab:'general', order:72 }` and `deriveDeviceConfigContribution` emits the
|
|
8
|
+
* section (D14). The panel STORES NOTHING: every card is one row of
|
|
9
|
+
* `device-extension.listSlots`, read by the slot's owner from the store it
|
|
10
|
+
* already has, and every save is `setSlot`, written by that owner through its
|
|
11
|
+
* existing path. It is the only editor of what it shows: the hand-written
|
|
12
|
+
* "Linked devices" and "Virtual doorbell" sections it replaced were retired
|
|
13
|
+
* once the live read matched them on every measured camera (D655).
|
|
14
|
+
*
|
|
15
|
+
* Every slot is an ASSOCIATION, so every card is a device multiselect. A
|
|
16
|
+
* device that GAINS a capability from other devices is a composition, not a
|
|
17
|
+
* slot, and is authored there (D663, amends D648).
|
|
18
|
+
*
|
|
19
|
+
* Absence is claimed only from an answer (D315): pending, failed and empty
|
|
20
|
+
* are three different sentences, and an owner that could not answer is shown
|
|
21
|
+
* with its reason, verbatim — never dropped.
|
|
22
|
+
*/
|
|
23
|
+
import type { ExtensionSlotId } from "@camstack/types";
|
|
24
|
+
import { type JSX } from "react";
|
|
2
25
|
export interface ExtensionsPanelProps {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
26
|
+
readonly deviceId: number;
|
|
27
|
+
/**
|
|
28
|
+
* Only these slots are rendered; absent = every slot (the host widget's
|
|
29
|
+
* behaviour, unchanged). An owner that could not answer is shown either way:
|
|
30
|
+
* its row cannot say which slot it owns, and hiding it would read as
|
|
31
|
+
* "nothing configured" (D315). Used by the Customize tab (D676).
|
|
32
|
+
*/
|
|
33
|
+
readonly slots?: readonly ExtensionSlotId[];
|
|
34
|
+
/** Panel title; absent = "Extensions". */
|
|
35
|
+
readonly title?: string;
|
|
36
|
+
/**
|
|
37
|
+
* No Edit affordance on any card (`setSlot` is `auth: 'admin'`). Used by a
|
|
38
|
+
* viewer who can read `listSlots` (`protected`) but not write — never a
|
|
39
|
+
* reason to hide the saved picks themselves.
|
|
40
|
+
*/
|
|
41
|
+
readonly readOnly?: boolean;
|
|
19
42
|
}
|
|
20
|
-
export declare function ExtensionsPanel({ deviceId, slots, title, readOnly
|
|
43
|
+
export declare function ExtensionsPanel({ deviceId, slots, title, readOnly }: ExtensionsPanelProps): JSX.Element;
|
|
@@ -1,51 +1,69 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* What the Extensions section may CLAIM, from what `listSlots` answered
|
|
3
|
+
* (D648, D315).
|
|
4
|
+
*
|
|
5
|
+
* Four states, and the two a boolean would collapse are kept apart on purpose:
|
|
6
|
+
*
|
|
7
|
+
* - `pending` — nobody has answered yet. Never "no extensions".
|
|
8
|
+
* - `unknown` — the query FAILED. It is not an answer, so it is not absence
|
|
9
|
+
* either; the reason is shown verbatim.
|
|
10
|
+
* - `none` — the query answered with nothing. The only state that may say
|
|
11
|
+
* "no extensions".
|
|
12
|
+
* - `rows` — cards, in the generated table's order, and every owner that
|
|
13
|
+
* could not answer as its own row with its reason (D554.4). A device whose
|
|
14
|
+
* ONLY owner failed is `rows` with no slots, not `none`.
|
|
15
|
+
*
|
|
16
|
+
* Also here, pure: the editor's draft rules, so the component holds no logic
|
|
17
|
+
* a spec cannot reach.
|
|
18
|
+
*/
|
|
19
|
+
import { type ExtensionCandidate, type ExtensionSlotCardinality, type ExtensionSlotRow, type ExtensionSlotState, type ExtensionSlotUnreachable, type ExtensionSlotValue } from "@camstack/types";
|
|
2
20
|
/** The one field of a query error this module reads. */
|
|
3
21
|
export interface ExtensionsQueryError {
|
|
4
|
-
|
|
22
|
+
readonly message: string;
|
|
5
23
|
}
|
|
6
24
|
/** The fields of a query result this module reads — nothing else. */
|
|
7
25
|
export interface ExtensionsQueryView {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
26
|
+
readonly status: "pending" | "error" | "success";
|
|
27
|
+
readonly data?: readonly ExtensionSlotRow[] | undefined;
|
|
28
|
+
readonly error?: ExtensionsQueryError | null;
|
|
11
29
|
}
|
|
12
30
|
/** Nobody has answered yet. */
|
|
13
31
|
export interface ExtensionsPendingView {
|
|
14
|
-
|
|
32
|
+
readonly kind: "pending";
|
|
15
33
|
}
|
|
16
34
|
/** The read FAILED — not an answer, so not absence either. */
|
|
17
35
|
export interface ExtensionsUnknownView {
|
|
18
|
-
|
|
19
|
-
|
|
36
|
+
readonly kind: "unknown";
|
|
37
|
+
readonly reason: string;
|
|
20
38
|
}
|
|
21
39
|
/** Answered with nothing — the only state that may say "no extensions". */
|
|
22
40
|
export interface ExtensionsNoneView {
|
|
23
|
-
|
|
41
|
+
readonly kind: "none";
|
|
24
42
|
}
|
|
25
43
|
/**
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
44
|
+
* A row of a slot this build does NOT declare — an older or newer server than
|
|
45
|
+
* this admin UI (a rollback after slice 6 still answers `doorbell-source`).
|
|
46
|
+
* It cannot be a card (no descriptor), so it is said by name instead: never
|
|
47
|
+
* dropped, never crashing the panel (D315, task 17 re-review R1).
|
|
48
|
+
*/
|
|
31
49
|
export interface ExtensionsUnknownSlotRow {
|
|
32
|
-
|
|
33
|
-
|
|
50
|
+
readonly slot: string;
|
|
51
|
+
readonly slotRef: string;
|
|
34
52
|
}
|
|
35
53
|
/** Cards in table order, every slot this build does not know, and every owner that could not answer. */
|
|
36
54
|
export interface ExtensionsRowsView {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
55
|
+
readonly kind: "rows";
|
|
56
|
+
readonly slots: readonly ExtensionSlotState[];
|
|
57
|
+
readonly unknownSlots: readonly ExtensionsUnknownSlotRow[];
|
|
58
|
+
readonly unreachable: readonly ExtensionSlotUnreachable[];
|
|
41
59
|
}
|
|
42
60
|
export type ExtensionsView = ExtensionsPendingView | ExtensionsUnknownView | ExtensionsNoneView | ExtensionsRowsView;
|
|
43
61
|
/** The order cards are shown in: the generated slot table's. */
|
|
44
62
|
export type ExtensionSlotTableOrder = readonly string[];
|
|
45
63
|
/**
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
64
|
+
* `order` is the generated table (`EXTENSION_SLOT_IDS`); a parameter only so a
|
|
65
|
+
* spec can pin the comparator while the table holds a single slot.
|
|
66
|
+
*/
|
|
49
67
|
export declare function resolveExtensionsView(query: ExtensionsQueryView, order?: ExtensionSlotTableOrder): ExtensionsView;
|
|
50
68
|
/** Add or remove one pick. `one` replaces; `many` toggles. */
|
|
51
69
|
export declare function togglePick(draft: readonly number[], deviceId: number, cardinality: ExtensionSlotCardinality): readonly number[];
|
|
@@ -56,51 +74,51 @@ export declare function searchCandidates(candidates: readonly ExtensionCandidate
|
|
|
56
74
|
/** Whether the draft differs from what the owner's store holds. */
|
|
57
75
|
export declare function isDirty(saved: readonly number[], draft: readonly number[]): boolean;
|
|
58
76
|
/**
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
77
|
+
* The tracked-event opt-in a slot's value carries, or `undefined` when it
|
|
78
|
+
* carries none — every slot but `linked-devices`, and a `linked-devices` row
|
|
79
|
+
* from a server older than D655. `undefined` is "this owner offers no
|
|
80
|
+
* opt-in", never "nothing is opted in": the card then shows no toggle rather
|
|
81
|
+
* than a row of unticked ones it could not save.
|
|
82
|
+
*/
|
|
65
83
|
export declare function trackedOptInOf(value: ExtensionSlotValue): readonly number[] | undefined;
|
|
66
84
|
/** Flip one device's tracked-event opt-in. */
|
|
67
85
|
export declare function toggleTracked(tracked: readonly number[], deviceId: number): readonly number[];
|
|
68
86
|
/** Whether two opt-ins differ as SETS — the order carries no meaning. */
|
|
69
87
|
export declare function isTrackedDirty(saved: readonly number[], draft: readonly number[]): boolean;
|
|
70
88
|
/** Where a tracked-event toggle comes from — said next to it. */
|
|
71
|
-
export type TrackedOptionOrigin =
|
|
89
|
+
export type TrackedOptionOrigin = "pick" | "implied" | "not-linked";
|
|
72
90
|
/** One device the editor offers a tracked-event toggle for. */
|
|
73
91
|
export interface TrackedOption {
|
|
74
|
-
|
|
75
|
-
|
|
92
|
+
readonly deviceId: number;
|
|
93
|
+
readonly origin: TrackedOptionOrigin;
|
|
76
94
|
}
|
|
77
95
|
/** What `trackedOptions` builds the toggle list from. */
|
|
78
96
|
export interface TrackedOptionsInput {
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
97
|
+
/** The draft picks. */
|
|
98
|
+
readonly picks: readonly number[];
|
|
99
|
+
/** Saved picks that are not a valid source (a container, D356) — no toggle. */
|
|
100
|
+
readonly invalidPicks: readonly number[];
|
|
101
|
+
/** Linked by the owner's own structure (`impliedSources`). */
|
|
102
|
+
readonly implied: readonly number[];
|
|
103
|
+
/** The draft opt-in. */
|
|
104
|
+
readonly tracked: readonly number[];
|
|
87
105
|
}
|
|
88
106
|
/**
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
107
|
+
* One toggle per device the camera links — the old section's set (D655):
|
|
108
|
+
* the valid picks, then what the owner links by structure (tree children, a
|
|
109
|
+
* picked container's child — never the container itself, D356), then every
|
|
110
|
+
* opted-in device that is linked no more, so a stored opt-in is always
|
|
111
|
+
* visible and can always be removed.
|
|
112
|
+
*/
|
|
95
113
|
export declare function trackedOptions(input: TrackedOptionsInput): readonly TrackedOption[];
|
|
96
114
|
/**
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
115
|
+
* The opt-in after one device is removed from the draft picks: its toggle
|
|
116
|
+
* goes with it, unless the camera still links it by structure.
|
|
117
|
+
*/
|
|
100
118
|
export declare function untrackUnpicked(tracked: readonly number[], deviceId: number, implied: readonly number[]): readonly number[];
|
|
101
119
|
/**
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
120
|
+
* The value a Save sends. The opt-in travels only when the owner offered one,
|
|
121
|
+
* and then WHOLE: it replaces the stored one, and the owner accepts any id it
|
|
122
|
+
* already stored, so what was read can be sent back unchanged (D655).
|
|
123
|
+
*/
|
|
106
124
|
export declare function slotWriteValue(saved: ExtensionSlotValue, deviceIds: readonly number[], tracked: readonly number[] | undefined): ExtensionSlotValue;
|
|
@@ -1,28 +1,29 @@
|
|
|
1
|
+
import { type JSX } from "react";
|
|
1
2
|
type FilterDef = {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
type: "search";
|
|
4
|
+
key: string;
|
|
5
|
+
placeholder?: string;
|
|
5
6
|
} | {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
7
|
+
type: "select";
|
|
8
|
+
key: string;
|
|
9
|
+
label: string;
|
|
10
|
+
options: {
|
|
11
|
+
value: string;
|
|
12
|
+
label: string;
|
|
13
|
+
}[];
|
|
13
14
|
} | {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
15
|
+
type: "badge-toggle";
|
|
16
|
+
key: string;
|
|
17
|
+
options: {
|
|
18
|
+
value: string;
|
|
19
|
+
label: string;
|
|
20
|
+
}[];
|
|
20
21
|
};
|
|
21
22
|
export type { FilterDef };
|
|
22
23
|
export interface FilterBarProps {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
24
|
+
filters: FilterDef[];
|
|
25
|
+
values: Record<string, unknown>;
|
|
26
|
+
onChange: (values: Record<string, unknown>) => void;
|
|
27
|
+
className?: string;
|
|
27
28
|
}
|
|
28
|
-
export declare function FilterBar({ filters, values, onChange, className }: FilterBarProps):
|
|
29
|
+
export declare function FilterBar({ filters, values, onChange, className }: FilterBarProps): JSX.Element | null;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { ReactNode } from
|
|
1
|
+
import { type ReactNode, type JSX } from "react";
|
|
2
2
|
export interface FormFieldProps {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
3
|
+
label: string;
|
|
4
|
+
description?: string;
|
|
5
|
+
error?: string;
|
|
6
|
+
required?: boolean;
|
|
7
|
+
children: ReactNode;
|
|
8
|
+
orientation?: "vertical" | "horizontal";
|
|
9
|
+
className?: string;
|
|
10
10
|
}
|
|
11
|
-
export declare function FormField({ label, description, error, required, children, orientation, className
|
|
11
|
+
export declare function FormField({ label, description, error, required, children, orientation, className }: FormFieldProps): JSX.Element;
|
|
@@ -1,62 +1,34 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Leaf formatting for the device State panel — in particular, turning epoch
|
|
3
|
-
* timestamps into readable local dates.
|
|
4
|
-
*
|
|
5
|
-
* ## Why this needs a rule rather than a `typeof`
|
|
6
|
-
*
|
|
7
|
-
* `lastFetchedAt: 1785060000000` is unreadable, and every `runtimeState` slice is
|
|
8
|
-
* required to carry one. But "large number" is not "timestamp": `bitrate`,
|
|
9
|
-
* `memoryRss`, `diskFree` and `retentionDays` are all numbers, and rendering a
|
|
10
|
-
* bitrate as a date in 1970 is worse than leaving it raw.
|
|
11
|
-
*
|
|
12
|
-
* So a value is treated as a time point only when BOTH hold:
|
|
13
|
-
*
|
|
14
|
-
* 1. the KEY names a time point — `…At`, `…AtMs`, `timestamp`, `…Since`,
|
|
15
|
-
* `lastSeen`, `expires…`; and
|
|
16
|
-
* 2. the NUMBER falls in a plausible epoch range.
|
|
17
|
-
*
|
|
18
|
-
* Requiring both is what keeps `uptimeSeconds` (a duration whose name contains
|
|
19
|
-
* "time"), `timeoutMs` and `batchIntervalMs` (durations ending in "Ms") out of it.
|
|
20
|
-
* Durations are deliberately NOT converted — this formats instants, not spans.
|
|
21
|
-
*
|
|
22
|
-
* ## The raw value is never lost
|
|
23
|
-
*
|
|
24
|
-
* This is a debugging panel, so the exact number still matters. The formatted text
|
|
25
|
-
* is what is shown; `raw` is returned alongside for a `title` tooltip, and search
|
|
26
|
-
* matches against both. Replacing the value outright would trade one kind of
|
|
27
|
-
* unreadability for another.
|
|
28
|
-
*/
|
|
29
1
|
export declare function isTimeKey(key: string): boolean;
|
|
30
2
|
/** Epoch milliseconds for a numeric value under a time-shaped key, else null. */
|
|
31
3
|
export declare function epochMsOf(value: number): number | null;
|
|
32
4
|
/**
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
5
|
+
* Locale-formatted instant. `undefined` locale means the viewer's own locale,
|
|
6
|
+
* which is the point — an operator in Rome should not read UTC.
|
|
7
|
+
*/
|
|
36
8
|
export declare function formatLocalDate(epochMs: number): string;
|
|
37
9
|
export interface FormattedLeaf {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
10
|
+
/** What is displayed. */
|
|
11
|
+
readonly text: string;
|
|
12
|
+
/**
|
|
13
|
+
* The untouched original, present ONLY when `text` differs from it — so a
|
|
14
|
+
* caller can show a tooltip without one on every unremarkable value.
|
|
15
|
+
*/
|
|
16
|
+
readonly raw: string | null;
|
|
45
17
|
}
|
|
46
18
|
/**
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
19
|
+
* Format one leaf of the state tree, given the key it sits under.
|
|
20
|
+
*
|
|
21
|
+
* Handles two timestamp shapes:
|
|
22
|
+
* - a NUMBER under a time-shaped key → local date, raw kept
|
|
23
|
+
* - an ISO-8601 STRING → local date, raw kept. No key check needed: an ISO
|
|
24
|
+
* string is unambiguous, and a Moleculer round-trip turns every `Date` into
|
|
25
|
+
* one, so these appear whether or not the key looks temporal.
|
|
26
|
+
*/
|
|
55
27
|
export declare function formatLeafValue(key: string, value: unknown): FormattedLeaf;
|
|
56
28
|
/**
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
29
|
+
* Strict ISO-8601 with a time part. Requires the `T` and at least
|
|
30
|
+
* `hh:mm` — a bare `2026-07-26` is far more often a version, an id fragment or a
|
|
31
|
+
* label than a date, and `Date.parse` would silently read it as UTC midnight and
|
|
32
|
+
* shift it a day in a negative-offset locale.
|
|
33
|
+
*/
|
|
62
34
|
export declare function isIsoDateString(value: string): boolean;
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { JSX } from "react";
|
|
2
|
+
import { type ModelVariantSource } from "@camstack/types";
|
|
2
3
|
export interface GroupedModelSelectorProps {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
readonly catalog: readonly ModelVariantSource[];
|
|
5
|
+
readonly value: string;
|
|
6
|
+
readonly onChange: (id: string) => void;
|
|
7
|
+
readonly disabled?: boolean;
|
|
7
8
|
}
|
|
8
|
-
export declare function GroupedModelSelector({ catalog, value, onChange, disabled
|
|
9
|
+
export declare function GroupedModelSelector({ catalog, value, onChange, disabled }: GroupedModelSelectorProps): JSX.Element | null;
|