@camstack/ui-library 1.2.256 → 1.2.258
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 +123 -69
- package/dist/index.d.ts +31 -27
- package/dist/index.js +123 -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,30 +1,54 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
/**
|
|
2
|
+
* <ScopePicker> — operator-facing editor for a `TokenScope[]` value.
|
|
3
|
+
*
|
|
4
|
+
* Two consumers: the user-scope editor on `/system/users` (admin grants
|
|
5
|
+
* a baseline scope set to a non-admin user) and the scoped-token create
|
|
6
|
+
* modal on `/system/api-keys` (a caller carves out a subset of THEIR
|
|
7
|
+
* scopes for a `cst_*` token).
|
|
8
|
+
*
|
|
9
|
+
* Row shapes per scope `type`:
|
|
10
|
+
* - category → target: 'device' | 'system'
|
|
11
|
+
* - capability → target: cap name from `KNOWN_CAP_NAMES`
|
|
12
|
+
* - addon → target: addon id from `useAddonsList`
|
|
13
|
+
* - device → a v3 `DeviceSelector` (all / ids / types / locations)
|
|
14
|
+
* plus `includeLinked`, edited by `<DeviceSelectorPicker>`
|
|
15
|
+
*
|
|
16
|
+
* `access` is always 3 independent checkboxes (view / create / delete).
|
|
17
|
+
*
|
|
18
|
+
* `clampToParent` narrows the target dropdown + access checkboxes to
|
|
19
|
+
* what the CALLER possesses. Admins pass `null` to allow everything.
|
|
20
|
+
*
|
|
21
|
+
* This is the RAW editor. The simple, two-question Access panel on
|
|
22
|
+
* `/system/users` composes the same wire shape through `ACCESS_ROLES`; this
|
|
23
|
+
* one is what an operator drops into when a grant set is not a plain role.
|
|
24
|
+
*/
|
|
25
|
+
import { type ReactNode } from "react";
|
|
26
|
+
import { type TokenScope } from "@camstack/types";
|
|
27
|
+
export type ScopeAccess = "view" | "create" | "delete";
|
|
4
28
|
interface ScopePickerProps {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
29
|
+
readonly value: readonly TokenScope[];
|
|
30
|
+
readonly onChange: (next: TokenScope[]) => void;
|
|
31
|
+
/**
|
|
32
|
+
* When set, the caller's own scope set. Each row's target dropdown
|
|
33
|
+
* is narrowed to entries the caller already grants, and access
|
|
34
|
+
* checkboxes are disabled for flavours the caller lacks. Admins
|
|
35
|
+
* (unscoped) should pass `null` to allow everything.
|
|
36
|
+
*/
|
|
37
|
+
readonly clampToParent?: readonly TokenScope[] | null;
|
|
38
|
+
/** Optional empty-state CTA when `value.length === 0`. */
|
|
39
|
+
readonly emptyHint?: ReactNode;
|
|
16
40
|
}
|
|
17
|
-
export declare function ScopePicker({ value, onChange, clampToParent, emptyHint
|
|
41
|
+
export declare function ScopePicker({ value, onChange, clampToParent, emptyHint }: ScopePickerProps): React.ReactElement;
|
|
18
42
|
/**
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
43
|
+
* Validation helper. The wire schema (`TokenScopeSchema`) requires every
|
|
44
|
+
* scope to carry a usable target and `access.length >= 1`; a v3 device
|
|
45
|
+
* selector additionally requires a non-empty list for every kind except
|
|
46
|
+
* `all`. Use this before passing the picker output to a mutate call so the
|
|
47
|
+
* user sees a clean inline error instead of a tRPC ZodError.
|
|
48
|
+
*
|
|
49
|
+
* An EMPTY selector list is rejected rather than silently treated as "all":
|
|
50
|
+
* the schema's `.min(1)` would reject it server-side anyway, and the failure
|
|
51
|
+
* mode of guessing wrong here is granting the whole fleet.
|
|
52
|
+
*/
|
|
29
53
|
export declare function validateScopes(scopes: readonly TokenScope[]): string | null;
|
|
30
54
|
export {};
|
|
@@ -1,13 +1,21 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* SectionCard — the app's section card: `SECTION_CARD` chrome, a
|
|
3
|
+
* `SECTION_HEADER` strip with an uppercase `TEXT_SECTION_LABEL` heading, an
|
|
4
|
+
* optional icon and right-aligned header actions. The body is the caller's
|
|
5
|
+
* (pad it with `SECTION_BODY` or render a divided list / table edge to edge).
|
|
6
|
+
* One card component for every settings-style page (device Customize, Pipeline
|
|
7
|
+
* Load balancing) instead of a per-page copy. Owns no data.
|
|
8
|
+
*/
|
|
9
|
+
import type { LucideIcon } from "lucide-react";
|
|
10
|
+
import type { ReactNode } from "react";
|
|
3
11
|
export interface SectionCardProps {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
+
/** The heading's DOM id; the section is labelled by it. */
|
|
13
|
+
readonly headingId: string;
|
|
14
|
+
readonly title: string;
|
|
15
|
+
readonly icon?: LucideIcon;
|
|
16
|
+
/** Controls at the right of the header (a switch, "+ Add"). */
|
|
17
|
+
readonly actions?: ReactNode;
|
|
18
|
+
readonly testId?: string;
|
|
19
|
+
readonly children: ReactNode;
|
|
12
20
|
}
|
|
13
|
-
export declare function SectionCard({ headingId, title, icon: Icon, actions, testId, children
|
|
21
|
+
export declare function SectionCard({ headingId, title, icon: Icon, actions, testId, children }: SectionCardProps): ReactNode;
|
|
@@ -1,24 +1,42 @@
|
|
|
1
|
-
import { ReactNode } from 'react';
|
|
2
1
|
/**
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
2
|
+
* SettingRow — the shared label/value row used by every settings surface.
|
|
3
|
+
*
|
|
4
|
+
* The row is TWO columns (label left, value right) only from
|
|
5
|
+
* `SETTING_ROW_STACK_BREAKPOINT` up. Below it the row stacks: label on its own
|
|
6
|
+
* line, value on the next at the full row width, wrapping rather than
|
|
7
|
+
* truncating.
|
|
8
|
+
*
|
|
9
|
+
* That stacking is the whole point. The previous hand-rolled rows kept two
|
|
10
|
+
* columns at every width, so on a phone a long label wrapped to two lines on
|
|
11
|
+
* the left while its value was cut mid-word on the right — with the copy
|
|
12
|
+
* button squeezed between them. The value is what an operator opens a setup
|
|
13
|
+
* page to read, and it was the only part that could not be read.
|
|
14
|
+
*
|
|
15
|
+
* Trailing affordances (copy, reveal, a small action) go in `actions`; they
|
|
16
|
+
* live inside the value lane so they stay beside the value instead of becoming
|
|
17
|
+
* a third stacked line.
|
|
18
|
+
*/
|
|
19
|
+
import type { ReactNode } from "react";
|
|
20
|
+
/**
|
|
21
|
+
* Which elements the row emits.
|
|
22
|
+
*
|
|
23
|
+
* - `plain` (default) — `div` / `span`; valid anywhere.
|
|
24
|
+
* - `description` — `dt` / `dd` inside a wrapper `div`, so the row is a
|
|
25
|
+
* valid child of a `<dl>` (`KeyValueList`).
|
|
26
|
+
*/
|
|
27
|
+
export type SettingRowElements = "plain" | "description";
|
|
10
28
|
export interface SettingRowProps {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
29
|
+
/** Left-hand label. Free to wrap — it is never given a fixed width at L1. */
|
|
30
|
+
readonly label: ReactNode;
|
|
31
|
+
/** The value. Wraps at L1, truncates from the stack breakpoint up. */
|
|
32
|
+
readonly children: ReactNode;
|
|
33
|
+
/** Trailing affordances (copy / reveal), kept beside the value. */
|
|
34
|
+
readonly actions?: ReactNode;
|
|
35
|
+
/** Element flavour — see `SettingRowElements`. Default `plain`. */
|
|
36
|
+
readonly elements?: SettingRowElements;
|
|
37
|
+
/** Extra classes on the outer row. */
|
|
38
|
+
readonly className?: string;
|
|
39
|
+
/** Extra classes on the value text (e.g. `font-mono`). */
|
|
40
|
+
readonly valueClassName?: string;
|
|
23
41
|
}
|
|
24
|
-
export declare function SettingRow({ label, children, actions, elements, className, valueClassName
|
|
42
|
+
export declare function SettingRow({ label, children, actions, elements, className, valueClassName }: SettingRowProps): ReactNode;
|
|
@@ -1,25 +1,29 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { type JSX } from "react";
|
|
2
|
+
interface QueryFn<
|
|
3
|
+
I,
|
|
4
|
+
O
|
|
5
|
+
> {
|
|
6
|
+
query(input: I): Promise<O>;
|
|
3
7
|
}
|
|
4
8
|
export interface SnapshotButtonTrpc {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
9
|
+
readonly snapshot: {
|
|
10
|
+
readonly getSnapshot: QueryFn<{
|
|
11
|
+
deviceId: number;
|
|
12
|
+
streamId?: string;
|
|
13
|
+
force?: boolean;
|
|
14
|
+
}, {
|
|
15
|
+
base64: string;
|
|
16
|
+
contentType: string;
|
|
17
|
+
} | null>;
|
|
18
|
+
};
|
|
15
19
|
}
|
|
16
20
|
export interface SnapshotButtonProps {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
readonly trpc: SnapshotButtonTrpc;
|
|
22
|
+
readonly deviceId: number;
|
|
23
|
+
readonly deviceName: string;
|
|
24
|
+
/** Visual size — `'sm'` for header / tile, `'md'` for prominent CTA. */
|
|
25
|
+
readonly size?: "sm" | "md";
|
|
26
|
+
readonly className?: string;
|
|
23
27
|
}
|
|
24
|
-
export declare function SnapshotButton({ trpc, deviceId, deviceName, size, className
|
|
28
|
+
export declare function SnapshotButton({ trpc, deviceId, deviceName, size, className }: SnapshotButtonProps): JSX.Element;
|
|
25
29
|
export {};
|
|
@@ -1,11 +1,28 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* `<SortHeaderButton>` — the clickable inner control of a sortable column
|
|
3
|
+
* `<th>`, shared by `DataTable` and the device list.
|
|
4
|
+
*
|
|
5
|
+
* Renders the column label plus a sort-direction indicator (`ChevronUp` for
|
|
6
|
+
* asc, `ChevronDown` for desc, a faint placeholder that appears on hover
|
|
7
|
+
* otherwise) and calls `onSort()` on click.
|
|
8
|
+
*
|
|
9
|
+
* The owning `<th>` keeps its own sizing/visibility classes AND carries
|
|
10
|
+
* `aria-sort` — WAI-ARIA scopes `aria-sort` to `<th>`/`<td>`, never to an
|
|
11
|
+
* inner control. This component renders only the interactive label and the
|
|
12
|
+
* visual indicator.
|
|
13
|
+
*
|
|
14
|
+
* Non-sortable columns keep their plain static `<th>` text and never mount
|
|
15
|
+
* this: a header that looks clickable and does nothing is worse than a header
|
|
16
|
+
* that never invited the click.
|
|
17
|
+
*/
|
|
18
|
+
import type { ReactNode } from "react";
|
|
19
|
+
import type { TableSortDirection } from "./table-sort";
|
|
3
20
|
export interface SortHeaderButtonProps {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
21
|
+
readonly label: ReactNode;
|
|
22
|
+
/** True when THIS column is the table's single sorted column. */
|
|
23
|
+
readonly active: boolean;
|
|
24
|
+
/** Direction while `active`; ignored otherwise. */
|
|
25
|
+
readonly dir: TableSortDirection;
|
|
26
|
+
readonly onSort: () => void;
|
|
10
27
|
}
|
|
11
28
|
export declare function SortHeaderButton({ label, active, dir, onSort }: SortHeaderButtonProps): ReactNode;
|
|
@@ -1,10 +1,22 @@
|
|
|
1
|
+
import { type ComponentType, type JSX } from "react";
|
|
1
2
|
export interface StatCardProps {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
3
|
+
value: string | number;
|
|
4
|
+
label: string;
|
|
5
|
+
/** Optional leading icon in the label row. */
|
|
6
|
+
icon?: ComponentType<{
|
|
7
|
+
className?: string;
|
|
8
|
+
}>;
|
|
9
|
+
/** Secondary line under the value (units, targets, …). */
|
|
10
|
+
subtext?: string;
|
|
11
|
+
/**
|
|
12
|
+
* Token utility for the value colour (e.g. `text-success`). Prefer a
|
|
13
|
+
* semantic token — never a palette class or hex.
|
|
14
|
+
*/
|
|
15
|
+
valueClassName?: string;
|
|
16
|
+
trend?: {
|
|
17
|
+
value: number;
|
|
18
|
+
direction: "up" | "down";
|
|
19
|
+
};
|
|
20
|
+
className?: string;
|
|
9
21
|
}
|
|
10
|
-
export declare function StatCard({ value, label, trend, className }: StatCardProps):
|
|
22
|
+
export declare function StatCard({ value, label, icon: Icon, subtext, valueClassName, trend, className }: StatCardProps): JSX.Element;
|
|
@@ -1,26 +1,51 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* StateValuesStream — live current-state tree for ui-library.
|
|
3
|
+
*
|
|
4
|
+
* Renders a single device's CURRENT runtime-state as a scrollable,
|
|
5
|
+
* collapsible hierarchical tree (NOT a chronological change log).
|
|
6
|
+
*
|
|
7
|
+
* - Seed: on mount, `trpc.deviceState.getAllSnapshots` returns the
|
|
8
|
+
* whole-system snapshot; we pick out this device's entry and build
|
|
9
|
+
* a `Map<capName, slice>` of its current state.
|
|
10
|
+
* - Realtime: an `EventCategory.DeviceStateChanged` tRPC subscription
|
|
11
|
+
* scoped to the device patches each cap's slice into the map in
|
|
12
|
+
* place — the matching tree node re-renders, no rows are appended.
|
|
13
|
+
* - Tree: top level = cap names (sorted, expanded by default); each
|
|
14
|
+
* cap node expands to its slice keys; nested objects/arrays expand
|
|
15
|
+
* recursively, deep nesting collapsed by default. A per-cap
|
|
16
|
+
* "updated Ns ago" indicator surfaces realtime activity.
|
|
17
|
+
* - Filter/search: cap-name multiselect popover + free-text search,
|
|
18
|
+
* both applied to the tree (filter which caps show; search matches
|
|
19
|
+
* keys/values anywhere in the slice).
|
|
20
|
+
*
|
|
21
|
+
* The live subscription is mounted only while this component renders,
|
|
22
|
+
* so the parent can mount/unmount it on tab switches and the tRPC
|
|
23
|
+
* subscription is torn down automatically when hidden.
|
|
24
|
+
*/
|
|
25
|
+
import { type JSX } from "react";
|
|
26
|
+
import type { LiveBuffer } from "../hooks/use-live-buffer";
|
|
2
27
|
export interface StateValuesStreamProps {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
28
|
+
/** Device whose runtime-state we want to render. Required. */
|
|
29
|
+
readonly deviceId: number;
|
|
30
|
+
/** Initial cap-name filter — empty = all caps visible. */
|
|
31
|
+
readonly defaultCaps?: readonly string[];
|
|
32
|
+
/** Max height CSS class for the scrollable tree body. */
|
|
33
|
+
readonly maxHeight?: string;
|
|
34
|
+
/**
|
|
35
|
+
* @deprecated The State panel no longer keeps a chronological log,
|
|
36
|
+
* so there is no historical fetch to size. Accepted but ignored;
|
|
37
|
+
* retained so existing callers don't break.
|
|
38
|
+
*/
|
|
39
|
+
readonly limit?: number;
|
|
40
|
+
/**
|
|
41
|
+
* @deprecated The State panel now renders a live current-state tree
|
|
42
|
+
* sourced from `deviceState.getAllSnapshots` + the realtime
|
|
43
|
+
* subscription, so there is no append-buffer to host across
|
|
44
|
+
* tab switches. Accepted but ignored; retained so `DeviceActivityPanel`
|
|
45
|
+
* (which passes a buffer) keeps type-checking without a ripple edit.
|
|
46
|
+
*/
|
|
47
|
+
readonly liveBuffer?: LiveBuffer<unknown>;
|
|
48
|
+
readonly onClose?: () => void;
|
|
49
|
+
readonly className?: string;
|
|
25
50
|
}
|
|
26
|
-
export declare function StateValuesStream({ deviceId, defaultCaps, maxHeight, onClose, className
|
|
51
|
+
export declare function StateValuesStream({ deviceId, defaultCaps, maxHeight, onClose, className }: StateValuesStreamProps): JSX.Element | null;
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
|
|
1
|
+
import { type JSX } from "react";
|
|
2
|
+
export type StatusBadgeStatus = "online" | "offline" | "degraded" | "unknown" | "running" | "stopped" | "error" | "idle" | "enabled" | "disabled";
|
|
2
3
|
export interface StatusBadgeProps {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
4
|
+
status: StatusBadgeStatus;
|
|
5
|
+
/** Overrides the default label of `status` (e.g. a raw process state). */
|
|
6
|
+
label?: string;
|
|
7
|
+
showDot?: boolean;
|
|
8
|
+
showLabel?: boolean;
|
|
9
|
+
size?: "sm" | "md";
|
|
10
|
+
className?: string;
|
|
8
11
|
}
|
|
9
|
-
export declare function StatusBadge({ status, showDot, showLabel, size, className
|
|
10
|
-
export {};
|
|
12
|
+
export declare function StatusBadge({ status, label, showDot, showLabel, size, className }: StatusBadgeProps): JSX.Element;
|
|
@@ -1,20 +1,21 @@
|
|
|
1
|
+
import { type JSX } from "react";
|
|
1
2
|
/** The per-camera gate of a step. */
|
|
2
3
|
export type StepGate = {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
readonly kind: "gate";
|
|
5
|
+
readonly effectiveOn: boolean;
|
|
6
|
+
readonly defaultOn: boolean;
|
|
7
|
+
readonly explicit: boolean;
|
|
7
8
|
} | {
|
|
8
|
-
|
|
9
|
+
readonly kind: "zone-driven";
|
|
9
10
|
};
|
|
10
11
|
export interface GateControlProps {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
readonly gate: StepGate;
|
|
13
|
+
readonly busy?: boolean;
|
|
14
|
+
/** `null` = back to the catalog default. */
|
|
15
|
+
readonly onSet: (next: boolean | null) => void;
|
|
15
16
|
}
|
|
16
|
-
export declare function GateControl({ gate, busy, onSet }: GateControlProps):
|
|
17
|
+
export declare function GateControl({ gate, busy, onSet }: GateControlProps): JSX.Element;
|
|
17
18
|
/** The gate as a short list-row badge. */
|
|
18
19
|
export declare function GateBadge({ gate }: {
|
|
19
|
-
|
|
20
|
-
}):
|
|
20
|
+
readonly gate: StepGate;
|
|
21
|
+
}): JSX.Element;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export { GateBadge, GateControl, type GateControlProps, type StepGate } from
|
|
2
|
-
export { LayeredSettingsForm, type LayeredSettingsFormProps, type LayerLabels, type SettingsTarget, stepFieldDomId
|
|
3
|
-
export { bindsToModel, defaultOfField, formatSettingValue, isValueField, type ValueField
|
|
4
|
-
export { SegmentedChoice, type SegmentedChoiceOption, type SegmentedChoiceProps
|
|
5
|
-
export { BackToStepsButton, dockBox, STEP_DOCK_WIDTH_PX, StepDetailDock, type StepDetailDockProps
|
|
6
|
-
export { type SaveBarState, StepInspectorPanel, type StepInspectorPanelProps
|
|
7
|
-
export { type ModelRowSource, StepModelRow, type StepModelRowProps } from
|
|
8
|
-
export { searchSteps, type StepSearchHit, type StepSearchRow } from
|
|
1
|
+
export { GateBadge, GateControl, type GateControlProps, type StepGate } from "./gate-control";
|
|
2
|
+
export { LayeredSettingsForm, type LayeredSettingsFormProps, type LayerLabels, type SettingsTarget, stepFieldDomId } from "./layered-settings-form";
|
|
3
|
+
export { bindsToModel, defaultOfField, formatSettingValue, isValueField, type ValueField } from "./setting-values";
|
|
4
|
+
export { SegmentedChoice, type SegmentedChoiceOption, type SegmentedChoiceProps } from "./segmented-choice";
|
|
5
|
+
export { BackToStepsButton, dockBox, STEP_DOCK_WIDTH_PX, StepDetailDock, type StepDetailDockProps } from "./step-detail-dock";
|
|
6
|
+
export { type SaveBarState, StepInspectorPanel, type StepInspectorPanelProps } from "./step-inspector-panel";
|
|
7
|
+
export { type ModelRowSource, StepModelRow, type StepModelRowProps } from "./step-model-row";
|
|
8
|
+
export { searchSteps, type StepSearchHit, type StepSearchRow } from "./step-search";
|
|
@@ -1,38 +1,49 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
/**
|
|
2
|
+
* LayeredSettingsForm — a detection step's settings, edited on ONE layer
|
|
3
|
+
* (D754): the node base, the camera (every accelerator) or one accelerator.
|
|
4
|
+
*
|
|
5
|
+
* Every field shows the value that runs on the viewed accelerator, which layer
|
|
6
|
+
* supplies it, the values of the other levels (so "node vs camera" is read, not
|
|
7
|
+
* clicked for), and a reset that removes the field from the edited layer only.
|
|
8
|
+
* A change writes the touched field alone — a model-bound field (D738) as its
|
|
9
|
+
* value + binding pair — so the edited layer stays field-level and never
|
|
10
|
+
* freezes the levels below it.
|
|
11
|
+
*/
|
|
12
|
+
import { type ReactNode, type JSX } from "react";
|
|
13
|
+
import { type ConfigField, type PipelineAddonSchema, type StepSettingSource, type StepSettingsLayers } from "@camstack/types";
|
|
14
|
+
import { type RootModelInfo } from "../root-model-source";
|
|
4
15
|
/** The layer an inspector edits. */
|
|
5
|
-
export type SettingsTarget = Exclude<StepSettingSource,
|
|
16
|
+
export type SettingsTarget = Exclude<StepSettingSource, "default">;
|
|
6
17
|
/** How each stored layer is named on screen. A layer without a label is not shown. */
|
|
7
18
|
export interface LayerLabels {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
19
|
+
readonly accelerator?: string;
|
|
20
|
+
readonly camera?: string;
|
|
21
|
+
readonly node: string;
|
|
11
22
|
}
|
|
12
23
|
export interface LayeredSettingsFormProps {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
24
|
+
readonly addon: PipelineAddonSchema;
|
|
25
|
+
/** The step's node-local fields (cluster-owned knobs already removed). */
|
|
26
|
+
readonly fields: readonly ConfigField[];
|
|
27
|
+
/** The stored layers as they apply on the viewed accelerator. */
|
|
28
|
+
readonly layers: StepSettingsLayers;
|
|
29
|
+
readonly target: SettingsTarget;
|
|
30
|
+
readonly labels: LayerLabels;
|
|
31
|
+
/** The model a model-bound value is judged against and bound to (D738/D741). */
|
|
32
|
+
readonly modelId: string;
|
|
33
|
+
/** The edited layer's next bag. */
|
|
34
|
+
readonly onChangeLayer: (next: Record<string, unknown>) => void;
|
|
35
|
+
/** The root model of the viewed accelerator — offers "Use the root model" (D730). */
|
|
36
|
+
readonly rootModel?: RootModelInfo;
|
|
37
|
+
/** Fields the edited layer stores at exactly the value below it (a legacy full copy). */
|
|
38
|
+
readonly pinnedKeys?: readonly string[];
|
|
39
|
+
/** An extra control under one field ("Apply to all accelerators"). */
|
|
40
|
+
readonly fieldActions?: (key: string, source: StepSettingSource) => ReactNode;
|
|
41
|
+
/** Controls on the section header ("Follow the node", a scope switch). */
|
|
42
|
+
readonly headerActions?: ReactNode;
|
|
43
|
+
/** A field to bring into view and highlight (a search hit). */
|
|
44
|
+
readonly highlightKey?: string | null;
|
|
45
|
+
readonly disabled?: boolean;
|
|
35
46
|
}
|
|
36
47
|
/** DOM id of a field's box — the target of a search hit. */
|
|
37
48
|
export declare function stepFieldDomId(key: string): string;
|
|
38
|
-
export declare function LayeredSettingsForm({ addon, fields, layers, target, labels, modelId, onChangeLayer, rootModel, pinnedKeys, fieldActions, headerActions, highlightKey, disabled
|
|
49
|
+
export declare function LayeredSettingsForm({ addon, fields, layers, target, labels, modelId, onChangeLayer, rootModel, pinnedKeys, fieldActions, headerActions, highlightKey, disabled }: LayeredSettingsFormProps): JSX.Element;
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
+
import { type JSX } from "react";
|
|
1
2
|
export interface SegmentedChoiceOption<T extends string> {
|
|
2
|
-
|
|
3
|
-
|
|
3
|
+
readonly value: T;
|
|
4
|
+
readonly label: string;
|
|
4
5
|
}
|
|
5
6
|
export interface SegmentedChoiceProps<T extends string> {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
readonly label: string;
|
|
8
|
+
readonly options: readonly SegmentedChoiceOption<T>[];
|
|
9
|
+
readonly value: T;
|
|
10
|
+
readonly onChange: (next: T) => void;
|
|
10
11
|
}
|
|
11
|
-
export declare function SegmentedChoice<T extends string>({ label, options, value, onChange
|
|
12
|
+
export declare function SegmentedChoice<T extends string>({ label, options, value, onChange }: SegmentedChoiceProps<T>): JSX.Element;
|
|
@@ -1,19 +1,24 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* How the step inspector names a stored setting value, and what a field falls
|
|
3
|
+
* back to when no layer stores it. Pure, so the provenance line and its tests
|
|
4
|
+
* agree on one spelling.
|
|
5
|
+
*/
|
|
6
|
+
import type { ConfigField } from "@camstack/types";
|
|
2
7
|
/** A field that stores a value (not a separator, an info block or a group). */
|
|
3
8
|
export type ValueField = Exclude<ConfigField, {
|
|
4
|
-
|
|
9
|
+
readonly type: "separator" | "info" | "group";
|
|
5
10
|
}>;
|
|
6
11
|
export declare function isValueField(field: ConfigField): field is ValueField;
|
|
7
12
|
/** True for a D738 field whose value is stored with the model it was made for. */
|
|
8
13
|
export declare function bindsToModel(field: ConfigField): boolean;
|
|
9
14
|
/**
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
15
|
+
* What runs when no layer stores the field: the running model's default for a
|
|
16
|
+
* model-bound field that the model declares one for (D738), else the field's
|
|
17
|
+
* own default. `fromModel` says which.
|
|
18
|
+
*/
|
|
14
19
|
export declare function defaultOfField(field: ValueField, modelId: string): {
|
|
15
|
-
|
|
16
|
-
|
|
20
|
+
readonly value: unknown;
|
|
21
|
+
readonly fromModel: boolean;
|
|
17
22
|
};
|
|
18
23
|
/** One stored value as the operator reads it (`0.65`, `on`, `Person, Vehicle`, `—`). */
|
|
19
24
|
export declare function formatSettingValue(field: ValueField, value: unknown): string;
|