@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,305 +1,322 @@
|
|
|
1
|
-
import { ChildLayout, DeviceDisplayOverride, RoleDisplayDefault, SourceInfo } from '@camstack/types';
|
|
2
|
-
import { LucideIcon } from 'lucide-react';
|
|
3
|
-
import { ReactNode } from 'react';
|
|
4
|
-
import { UseDeviceProxyTrpc } from '../../hooks/use-device-proxy';
|
|
5
1
|
/**
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
2
|
+
* Shared types + helpers for the DeviceItem composite. Lives outside
|
|
3
|
+
* the orchestrator file so every sub-component can import without
|
|
4
|
+
* cycles.
|
|
5
|
+
*
|
|
6
|
+
* - `DeviceItemDevice` / `DeviceItemParent` / `DeviceItemKind` —
|
|
7
|
+
* wire-shape mirrors of the `DeviceInfo` row.
|
|
8
|
+
* - `DeviceItemVariant` + `VariantDefaults` + `DEFAULTS` +
|
|
9
|
+
* `resolveFlags` — the variant→flags resolution pipeline.
|
|
10
|
+
* - `deviceLeadIcon` — icon resolution for the row's lead icon
|
|
11
|
+
* (delegated to the exhaustive `device-meta` maps).
|
|
12
|
+
* - `FEATURE_ICON_MAP` / `FEATURE_LABEL_MAP` — for the features
|
|
13
|
+
* popover (NEW in Phase 1).
|
|
14
|
+
* - Capability gates: `maySupportSwitch`, `isAccessoryChild`,
|
|
15
|
+
* `hasMotionTriggerFeature`.
|
|
16
|
+
* - `shortStableId` — display-token for stableId tail.
|
|
17
|
+
*/
|
|
18
|
+
import { type ChildLayout, type DeviceDisplayOverride, type RoleDisplayDefault, type SourceInfo } from "@camstack/types";
|
|
19
|
+
import type { LucideIcon } from "lucide-react";
|
|
20
|
+
import type { ReactNode } from "react";
|
|
21
|
+
import type { UseDeviceProxyTrpc } from "../../hooks/use-device-proxy";
|
|
22
|
+
/**
|
|
23
|
+
* Mirror of the canonical `DeviceInfo` wire shape (see
|
|
24
|
+
* `packages/types/src/capabilities/device-manager.cap.ts`). Every
|
|
25
|
+
* `deviceManager.listAll` / `getDevice` / `getChildren` row is
|
|
26
|
+
* already this exact shape — call sites pass the raw row through
|
|
27
|
+
* without remapping. Lives here as a structural type (not an
|
|
28
|
+
* import) so this composite stays decoupled from `@camstack/types`.
|
|
29
|
+
*/
|
|
13
30
|
export interface DeviceItemDevice {
|
|
14
|
-
|
|
15
|
-
|
|
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
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
31
|
+
readonly id: number;
|
|
32
|
+
readonly stableId: string;
|
|
33
|
+
readonly addonId: string;
|
|
34
|
+
readonly type: string;
|
|
35
|
+
readonly name: string;
|
|
36
|
+
readonly online: boolean;
|
|
37
|
+
/** Soft-disable flag — `true` dims the row + skips live fetches.
|
|
38
|
+
* Matches `DeviceInfo.disabled` so the wire row passes through. */
|
|
39
|
+
readonly disabled: boolean;
|
|
40
|
+
readonly parentDeviceId: number | null;
|
|
41
|
+
/** The integration that CREATED this device — may differ from `addonId`,
|
|
42
|
+
* the addon that owns and SERVES it (e.g. a composed device is created
|
|
43
|
+
* under the "Blocks" integration but served by the `composer` addon).
|
|
44
|
+
* Mirrors `DeviceInfo.integrationId` so the wire row passes through. */
|
|
45
|
+
readonly integrationId?: string | null;
|
|
46
|
+
/** Optional `DeviceRole` string. Present ⇒ this is an accessory. */
|
|
47
|
+
readonly role?: string | null;
|
|
48
|
+
/** DeviceFeature strings — gates BatteryBadge etc. */
|
|
49
|
+
readonly features?: readonly string[];
|
|
50
|
+
/** True for ICameraDevice instances — gates snapshot popover. */
|
|
51
|
+
readonly isCamera?: boolean;
|
|
52
|
+
/** Upstream-system identity (dispatch key + system tag + optional uniqueId).
|
|
53
|
+
* Flows from `DeviceInfo.sourceInfo` via structural cast / parse;
|
|
54
|
+
* optional so rows from providers that pre-date SourceInfo still work.
|
|
55
|
+
* Live rendering hints (unit, precision) come from the cap STATUS SLICE for
|
|
56
|
+
* generic numeric-sensor, or canonical constants in ROLE_DESCRIPTOR for typed
|
|
57
|
+
* roles; an operator's per-device customization rides `display` (below). */
|
|
58
|
+
readonly sourceInfo?: SourceInfo;
|
|
59
|
+
/** Operator-authored per-device display override (icon/label/unit/precision/
|
|
60
|
+
* hidden). Mirrors `DeviceInfo.display` so the wire row passes through. The
|
|
61
|
+
* renderers resolve it via `resolveSensorDisplay` (unit/precision, render-time
|
|
62
|
+
* conversion) + `displayRoleLabel` / `deviceLeadIcon` (label/icon); `hidden`
|
|
63
|
+
* filters the row out of list surfaces. Absent ⇒ role/slice defaults. */
|
|
64
|
+
readonly display?: DeviceDisplayOverride;
|
|
65
|
+
/** Soft-link to another device id. For a CONTAINER device this is the
|
|
66
|
+
* LEGACY picker-chosen primary child (numeric id); the row/hero resolve the
|
|
67
|
+
* primary child via `resolveContainerPrimary(children, linkDeviceId)`.
|
|
68
|
+
* Nullable: an explicit null means "no override → priority default".
|
|
69
|
+
* Mirrors `DeviceInfo.linkDeviceId` so the wire row passes through. */
|
|
70
|
+
readonly linkDeviceId?: number | null;
|
|
71
|
+
/** Durable primary-child override for a CONTAINER device, keyed on the
|
|
72
|
+
* chosen child's re-sync/rename-stable `entityId`. Preferred over the
|
|
73
|
+
* numeric `linkDeviceId` in `resolveContainerPrimary` (survives a re-sync
|
|
74
|
+
* that reallocates the child's numeric id). Mirrors
|
|
75
|
+
* `DeviceInfo.primaryChildEntityId`. */
|
|
76
|
+
readonly primaryChildEntityId?: string | null;
|
|
77
|
+
/** Container-level layout hint: assigns specific accessory children to named
|
|
78
|
+
* accordion sections (with optional intra-section order). Each entry's
|
|
79
|
+
* `childKey` is the child's re-sync-stable accessory `stableIdSuffix`; a child
|
|
80
|
+
* matches when `child.stableId === ${this.stableId}-${childKey}`. Mirrors
|
|
81
|
+
* `DeviceInfo.childLayout` so the wire row passes through. Absent ⇒ no layout
|
|
82
|
+
* declared (all children render in the plain list). Consumed by
|
|
83
|
+
* `groupChildrenByLayout` for the device-detail list + the table row
|
|
84
|
+
* expansion. */
|
|
85
|
+
readonly childLayout?: ChildLayout;
|
|
86
|
+
/** Hardware + identity blob (manufacturer / model / firmware / sn / uid /
|
|
87
|
+
* mac / …). Driver-populated; keys are free-form and values arbitrary, so
|
|
88
|
+
* consumers MUST treat them defensively (string-coerce for display, skip
|
|
89
|
+
* non-string/empty). Mirrors `DeviceInfo.metadata` so the wire row passes
|
|
90
|
+
* through unchanged. Absent/null ⇒ no identity info advertised. */
|
|
91
|
+
readonly metadata?: Readonly<Record<string, unknown>> | null;
|
|
75
92
|
}
|
|
76
93
|
export interface DeviceItemParent {
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
94
|
+
readonly id: number;
|
|
95
|
+
readonly name: string;
|
|
96
|
+
/**
|
|
97
|
+
* Type of the parent device. Optional — when provided, callers can
|
|
98
|
+
* distinguish "adopted under a hub/nvr" (renders with extra indent in
|
|
99
|
+
* the table view) from a generic accessory parent.
|
|
100
|
+
*/
|
|
101
|
+
readonly type?: string;
|
|
85
102
|
}
|
|
86
|
-
export type DeviceItemKind =
|
|
87
|
-
export declare function deriveDeviceKind(device: Pick<DeviceItemDevice,
|
|
88
|
-
export type DeviceItemVariant =
|
|
89
|
-
export type DeviceItemView =
|
|
103
|
+
export type DeviceItemKind = "top-level" | "adopted" | "accessory";
|
|
104
|
+
export declare function deriveDeviceKind(device: Pick<DeviceItemDevice, "parentDeviceId" | "role">): DeviceItemKind;
|
|
105
|
+
export type DeviceItemVariant = "minimal" | "compact" | "expanded";
|
|
106
|
+
export type DeviceItemView = "card" | "table";
|
|
90
107
|
export interface DeviceItemProps {
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
108
|
+
readonly trpc: UseDeviceProxyTrpc;
|
|
109
|
+
readonly device: DeviceItemDevice;
|
|
110
|
+
readonly variant?: DeviceItemVariant;
|
|
111
|
+
/**
|
|
112
|
+
* Render mode. `'card'` (default) = flex row + optional accordion
|
|
113
|
+
* below. `'table'` = `<tr>` with one `<td>` per logical column.
|
|
114
|
+
* Phase 2's `<DeviceList>` wrapper drives this prop; Phase 1
|
|
115
|
+
* scaffolds both branches with no current consumer using table.
|
|
116
|
+
*/
|
|
117
|
+
readonly view?: DeviceItemView;
|
|
118
|
+
/**
|
|
119
|
+
* When true, the row is rendered as an accessory of a parent (Phase 2
|
|
120
|
+
* nested-only mode). Adds a subtle background tint + indent on the
|
|
121
|
+
* first cell. Has no effect on `view='card'`. Caller provides `true`
|
|
122
|
+
* only for the accessory passes inside <DeviceList>.
|
|
123
|
+
*/
|
|
124
|
+
readonly isAccessoryRow?: boolean;
|
|
125
|
+
/**
|
|
126
|
+
* Indent level for the `<td>` first cell in `view='table'`. Controls
|
|
127
|
+
* `pl-N` on the name cell so adopted-under-hub rows can be visually
|
|
128
|
+
* nested below their parent without forcing the accessory tint.
|
|
129
|
+
*
|
|
130
|
+
* 0 → `pl-2` (top-level, no parent)
|
|
131
|
+
* 1 → `pl-6` (adopted under a hub/nvr — visual hierarchy hint)
|
|
132
|
+
* 2 → `pl-8` (accessory under any parent — strongest indent)
|
|
133
|
+
*
|
|
134
|
+
* When omitted, the orchestrator derives `2` from `isAccessoryRow` and
|
|
135
|
+
* otherwise defaults to `0`. Caller may override (e.g. <DeviceList>
|
|
136
|
+
* promoting "adopted-under-hub" rows from 0 → 1).
|
|
137
|
+
*/
|
|
138
|
+
readonly indentLevel?: 0 | 1 | 2;
|
|
139
|
+
/**
|
|
140
|
+
* Controlled expand state for the children-accordion chevron. When
|
|
141
|
+
* BOTH `expanded` and `onToggleExpand` are passed, DeviceItem becomes
|
|
142
|
+
* fully controlled; otherwise it falls back to internal state. Used
|
|
143
|
+
* by `<TableRowGroup>` to lift expand state to the parent so the
|
|
144
|
+
* accessory `<tr>` rows can render based on the same flag the chevron
|
|
145
|
+
* flips.
|
|
146
|
+
*/
|
|
147
|
+
readonly expanded?: boolean;
|
|
148
|
+
readonly onToggleExpand?: () => void;
|
|
149
|
+
readonly integrationIcon?: ReactNode;
|
|
150
|
+
readonly parent?: DeviceItemParent | null;
|
|
151
|
+
readonly showIntegrationIcon?: boolean;
|
|
152
|
+
readonly showParentBadge?: boolean;
|
|
153
|
+
readonly showSnapshot?: boolean;
|
|
154
|
+
readonly showBattery?: boolean;
|
|
155
|
+
readonly showStableId?: boolean;
|
|
156
|
+
readonly showId?: boolean;
|
|
157
|
+
readonly showSwitchToggle?: boolean;
|
|
158
|
+
readonly showChildrenAccordion?: boolean;
|
|
159
|
+
readonly children?: readonly DeviceItemDevice[];
|
|
160
|
+
readonly onNavigate?: (deviceId: number) => void;
|
|
161
|
+
readonly className?: string;
|
|
162
|
+
/**
|
|
163
|
+
* Optional trailing per-row control rendered alongside the built-in
|
|
164
|
+
* `<DeviceItemActions>` (both card + table views). Lets a caller
|
|
165
|
+
* inject a context-specific affordance — e.g. the device-export
|
|
166
|
+
* panel's per-row Expose/Exposed toggle — without the composite
|
|
167
|
+
* knowing anything about that domain. Omitted ⇒ no extra control,
|
|
168
|
+
* so every existing call site renders unchanged.
|
|
169
|
+
*/
|
|
170
|
+
readonly renderRowAction?: (device: DeviceItemDevice) => ReactNode;
|
|
171
|
+
/**
|
|
172
|
+
* Built-in confirmed delete (TABLE feature). When provided, the merged
|
|
173
|
+
* previewActions cell renders a red trash button that opens the shared
|
|
174
|
+
* centered confirm dialog and calls `onDelete(device)` only on confirm.
|
|
175
|
+
* Cap/feature-agnostic — delete is generic. Context gating is "consumer
|
|
176
|
+
* passes the handler or not": omitted ⇒ no trash, zero layout change.
|
|
177
|
+
* No effect on `view='card'` (card delete is a deliberate follow-up).
|
|
178
|
+
*/
|
|
179
|
+
readonly onDelete?: (device: DeviceItemDevice) => void;
|
|
180
|
+
/**
|
|
181
|
+
* When provided, renders a leading checkbox for row selection.
|
|
182
|
+
* Only passed to top-level rows (accessory sub-rows omit it).
|
|
183
|
+
* Omitted ⇒ no checkbox, zero layout change for existing callers.
|
|
184
|
+
*/
|
|
185
|
+
readonly selection?: {
|
|
186
|
+
readonly selected: boolean;
|
|
187
|
+
readonly onToggle: () => void;
|
|
188
|
+
};
|
|
189
|
+
/**
|
|
190
|
+
* When `true` (and `selection` is provided), a click anywhere on the
|
|
191
|
+
* row's primary body toggles selection instead of navigating — the
|
|
192
|
+
* batch-mode interaction (spec §6). The row also gains an accessible
|
|
193
|
+
* pressed affordance (`role="button"` + `aria-pressed`). When omitted
|
|
194
|
+
* or `false`, the row navigates on click as usual; the leading
|
|
195
|
+
* checkbox remains the only selection surface. The checkbox always
|
|
196
|
+
* toggles regardless of this flag (and never bubbles to navigate).
|
|
197
|
+
*/
|
|
198
|
+
readonly rowClickSelects?: boolean;
|
|
199
|
+
/**
|
|
200
|
+
* Table-view column gates (context-configured). Default `true` so every
|
|
201
|
+
* existing call site renders all cells. When `false`, the corresponding
|
|
202
|
+
* `<td>` is omitted entirely (the matching `<th>` is gated in the parent
|
|
203
|
+
* `TableLayout`, so header + cells stay in lock-step). No effect on
|
|
204
|
+
* `view='card'`.
|
|
205
|
+
*/
|
|
206
|
+
readonly showTypeCell?: boolean;
|
|
207
|
+
/** Render the Hardware (manufacturer/model) `<td>` (context-gated). Default
|
|
208
|
+
* `true` so existing call sites render it; the parent `TableLayout` gates the
|
|
209
|
+
* matching `<th>` so header + cell stay in lock-step. No effect on `'card'`. */
|
|
210
|
+
readonly showManufacturerCell?: boolean;
|
|
211
|
+
readonly showFeaturesCell?: boolean;
|
|
195
212
|
}
|
|
196
213
|
export interface VariantDefaults {
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
214
|
+
readonly showIntegrationIcon: boolean;
|
|
215
|
+
readonly showParentBadge: boolean;
|
|
216
|
+
readonly showSnapshot: boolean;
|
|
217
|
+
readonly showBattery: boolean;
|
|
218
|
+
readonly showStableId: boolean;
|
|
219
|
+
readonly showId: boolean;
|
|
220
|
+
readonly showSwitchToggle: boolean;
|
|
221
|
+
readonly showChildrenAccordion: boolean;
|
|
205
222
|
}
|
|
206
223
|
export declare function resolveFlags(props: DeviceItemProps): VariantDefaults;
|
|
207
224
|
/**
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
225
|
+
* The row's lead icon — the ONE resolution order, the same one
|
|
226
|
+
* `resolveSensorDisplay` applies to unit and precision:
|
|
227
|
+
*
|
|
228
|
+
* device override → operator role default → built-in role glyph → type glyph
|
|
229
|
+
*
|
|
230
|
+
* `roleDefaults` is what the nearest `RoleDisplayDefaultsProvider` publishes;
|
|
231
|
+
* callers outside a provider pass nothing and the second level is skipped.
|
|
232
|
+
* Each level FALLS THROUGH when it names a glyph the registry cannot draw —
|
|
233
|
+
* an unknown key at any level must never leave the row without an icon, and
|
|
234
|
+
* must never shadow a lower level that would have drawn one.
|
|
235
|
+
*
|
|
236
|
+
* "Set as default for all X sensors" writes the second level. It was written
|
|
237
|
+
* for a year and read by nothing: this function went straight from the device
|
|
238
|
+
* override to `DEVICE_ROLE_META`.
|
|
239
|
+
*/
|
|
223
240
|
export declare function deviceLeadIcon(device: DeviceItemDevice, roleDefaults?: Readonly<Record<string, RoleDisplayDefault>>): LucideIcon;
|
|
224
241
|
/**
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
242
|
+
* Role label for a device row, honouring an operator's per-device `display.label`
|
|
243
|
+
* override (falls back to the `DEVICE_ROLE_META` label). NOT the device name —
|
|
244
|
+
* this is the small secondary role caption on accessory/sensor rows.
|
|
245
|
+
*/
|
|
229
246
|
export declare function displayRoleLabel(device: DeviceItemDevice): string;
|
|
230
247
|
export declare function stripParentNamePrefix(name: string, parentName: string): string;
|
|
231
248
|
/**
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
export declare function childListName(child: Pick<DeviceItemDevice,
|
|
249
|
+
* Display name for a child device rendered UNDER its container/parent row.
|
|
250
|
+
* Precedence: an operator's explicit per-device `display.label` wins over the
|
|
251
|
+
* auto-strip (mirrors {@link displayRoleLabel}); otherwise the parent-name
|
|
252
|
+
* prefix is stripped via {@link stripParentNamePrefix}. Shared by the
|
|
253
|
+
* device-detail children list AND the devices list-table so both surfaces
|
|
254
|
+
* render the bare child label identically.
|
|
255
|
+
*/
|
|
256
|
+
export declare function childListName(child: Pick<DeviceItemDevice, "name" | "display">, parentName: string): string;
|
|
240
257
|
/**
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
258
|
+
* Icon for each `DeviceFeature` advertised on a device row. Used by
|
|
259
|
+
* the features popover (`<DeviceItemFeatures>`) to render compact
|
|
260
|
+
* feature chips. Keys mirror `DeviceFeature` enum string values from
|
|
261
|
+
* `@camstack/types/device/device-type.ts`.
|
|
262
|
+
*/
|
|
246
263
|
export declare const FEATURE_ICON_MAP: Readonly<Record<string, LucideIcon>>;
|
|
247
264
|
export declare const FEATURE_LABEL_MAP: Readonly<Record<string, string>>;
|
|
248
265
|
/**
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
266
|
+
* Maps a wire-level `DeviceFeature` string to the cap name registered
|
|
267
|
+
* in `deviceManager.getBindings` entries. A feature with NO entry here
|
|
268
|
+
* is a pure informational marker (no cap to interrogate) — render but
|
|
269
|
+
* without a native/enhanced label.
|
|
270
|
+
*
|
|
271
|
+
* Source of truth: live `getBindings` capNames observed against a
|
|
272
|
+
* Reolink camera (snapshot, reboot, ptz, ptz-autotrack, intercom,
|
|
273
|
+
* motion-trigger). Cap-name strings cross-checked against the
|
|
274
|
+
* `name:` fields in `packages/types/src/capabilities/*.cap.ts`. When
|
|
275
|
+
* a new feature ↔ cap pairing goes live, add the row here so the
|
|
276
|
+
* popover picks it up.
|
|
277
|
+
*
|
|
278
|
+
* Pure markers (no cap to bind, intentionally absent):
|
|
279
|
+
* - `battery-operated` — exposed as a plain `device.features` flag;
|
|
280
|
+
* the runtime-state slice lives under the `battery` cap which has
|
|
281
|
+
* its own dedicated reactive surface (`useDeviceBattery`).
|
|
282
|
+
* - `doorbell-button` — UI marker only; the actual press events
|
|
283
|
+
* flow through the `doorbell` cap which is already exercised by
|
|
284
|
+
* `useDoorbellEvents`. Distinct from the marker.
|
|
285
|
+
*/
|
|
269
286
|
export declare const FEATURE_TO_CAP_NAME: Readonly<Record<string, string>>;
|
|
270
287
|
export declare function maySupportSwitch(device: DeviceItemDevice): boolean;
|
|
271
288
|
export declare function isAccessoryChild(device: DeviceItemDevice): boolean;
|
|
272
289
|
export declare function hasMotionTriggerFeature(device: DeviceItemDevice): boolean;
|
|
273
290
|
/**
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
291
|
+
* Effective online state for a device row's status dot.
|
|
292
|
+
*
|
|
293
|
+
* A CONTAINER device renders AS its PRIMARY child (same row control via
|
|
294
|
+
* `ContainerPrimaryInline`, same hero via `ContainerPrimaryHero`). Its
|
|
295
|
+
* reachability dot should therefore follow that primary child's `online`,
|
|
296
|
+
* NOT "any child online" — so the dot and the control gate agree (the
|
|
297
|
+
* control is bound to the same primary child via `resolveContainerPrimary`).
|
|
298
|
+
*
|
|
299
|
+
* Resolution reuses the SAME `resolveContainerPrimary(children, linkDeviceId)`
|
|
300
|
+
* helper the row control uses, then reads the resolved child row's `online`.
|
|
301
|
+
* Degrades gracefully: a non-container, a container with no children, or a
|
|
302
|
+
* container with no resolvable primary child falls back to `device.online`
|
|
303
|
+
* (never crashes, never forces offline).
|
|
304
|
+
*/
|
|
288
305
|
export declare function effectiveOnline(device: DeviceItemDevice, containerChildren: readonly DeviceItemDevice[] | undefined): boolean;
|
|
289
306
|
/**
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
307
|
+
* The type a CONTAINER should DISPLAY as (and be FILTERED by): its primary
|
|
308
|
+
* child's type, since a container renders as that child (a vacuum container
|
|
309
|
+
* should read + filter as `vacuum`, not the structural `container`). Mirrors
|
|
310
|
+
* {@link effectiveOnline} — same primary-child resolution. Non-containers, and
|
|
311
|
+
* containers with no resolvable primary child, fall back to `device.type`.
|
|
312
|
+
*/
|
|
296
313
|
export declare function effectiveType(device: DeviceItemDevice, containerChildren: readonly DeviceItemDevice[] | undefined): string;
|
|
297
314
|
/**
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
315
|
+
* The device whose lead ICON a row should display: a Container shows its
|
|
316
|
+
* primary CHILD's icon (the child's type + role drive the glyph, e.g. a vacuum
|
|
317
|
+
* rather than the generic container box). Mirrors {@link effectiveType}, but
|
|
318
|
+
* returns the resolved device so {@link deviceLeadIcon} also picks up the
|
|
319
|
+
* child's role. Falls back to the device itself for non-containers / no primary.
|
|
320
|
+
*/
|
|
304
321
|
export declare function effectiveIconDevice(device: DeviceItemDevice, containerChildren: readonly DeviceItemDevice[] | undefined): DeviceItemDevice;
|
|
305
322
|
export declare function shortStableId(stableId: string): string;
|
|
@@ -1,10 +1,19 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
/**
|
|
2
|
+
* <DeviceItem> — orchestrator that composes Header / Preview /
|
|
3
|
+
* Features / Actions / StatusDot in a flex row (`view='card'`) or a
|
|
4
|
+
* `<tr>` with one `<td>` per logical column (`view='table'`).
|
|
5
|
+
*
|
|
6
|
+
* Public API contract: identical to the predecessor `device-item.tsx`
|
|
7
|
+
* file so the 5 existing call sites compile unchanged. The new
|
|
8
|
+
* `view` prop defaults to `'card'`.
|
|
9
|
+
*/
|
|
10
|
+
import { type ReactNode } from "react";
|
|
11
|
+
import { type DeviceItemProps } from "./helpers";
|
|
12
|
+
export type { ChildLayoutSection, GroupedChildren } from "./child-layout";
|
|
13
|
+
export { groupChildrenByLayout } from "./child-layout";
|
|
14
|
+
export { ChildSectionAccordion } from "./child-section-accordion";
|
|
15
|
+
export { ContainerChildrenProvider, useContainerChildren } from "./container-children-context";
|
|
16
|
+
export { RoleDisplayDefaultsFromServer, RoleDisplayDefaultsProvider, useRoleDisplayDefaults, type RoleDisplayDefaults } from "./role-display-defaults-context";
|
|
17
|
+
export type { DeviceItemDevice, DeviceItemKind, DeviceItemParent, DeviceItemProps, DeviceItemVariant, DeviceItemView } from "./helpers";
|
|
18
|
+
export { childListName, deriveDeviceKind, stripParentNamePrefix } from "./helpers";
|
|
10
19
|
export declare function DeviceItem(props: DeviceItemProps): ReactNode;
|