@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,10 +1,10 @@
|
|
|
1
|
-
import { ReactNode } from
|
|
2
|
-
import { ControlPanelProps } from
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
|
+
import type { ControlPanelProps } from "./types.js";
|
|
3
3
|
/** Trim an HA date value to the `<input type=date>` shape ('YYYY-MM-DD'). */
|
|
4
4
|
export declare function toDateInput(value: string): string;
|
|
5
5
|
/** Trim an HA time value ('HH:MM:SS') to the `<input type=time>` shape ('HH:MM'). */
|
|
6
6
|
export declare function toTimeInput(value: string): string;
|
|
7
7
|
/** Trim an HA datetime value to the `<input type=datetime-local>` shape
|
|
8
|
-
|
|
8
|
+
* ('YYYY-MM-DDTHH:MM'). Accepts both 'T'- and space-separated forms. */
|
|
9
9
|
export declare function toDateTimeInput(value: string): string;
|
|
10
|
-
export declare function ControlPanel({ trpc, deviceId, features: _features, layout, optimistic
|
|
10
|
+
export declare function ControlPanel({ trpc, deviceId, features: _features, layout, optimistic }: ControlPanelProps): ReactNode;
|
|
@@ -1,83 +1,94 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Per-DeviceType control registry.
|
|
3
|
+
*
|
|
4
|
+
* Single source of truth for which InlineControl (row) and HeroCard
|
|
5
|
+
* (device-detail hero area) to render for each DeviceType. Both the
|
|
6
|
+
* device-list row and the device-detail hero card pull from this
|
|
7
|
+
* registry, so they can never diverge.
|
|
8
|
+
*
|
|
9
|
+
* The mapping is EXHAUSTIVE — `Record<DeviceType, DeviceTypeControl>`
|
|
10
|
+
* means omitting a new enum member fails the build.
|
|
11
|
+
*/
|
|
12
|
+
import type { ReactNode } from "react";
|
|
13
|
+
import { DeviceType } from "@camstack/types";
|
|
14
|
+
import type { UseDeviceProxyTrpc } from "../../hooks/use-device-proxy";
|
|
15
|
+
import { type ControlAlign } from "./atoms";
|
|
16
|
+
export { coverHighlight } from "./cover-inline";
|
|
6
17
|
export interface DeviceControlProps {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
18
|
+
readonly trpc: UseDeviceProxyTrpc;
|
|
19
|
+
readonly deviceId: number;
|
|
20
|
+
readonly features: readonly string[] | undefined;
|
|
21
|
+
/** Enable optimistic UI mode (default: true). Set to false to disable. */
|
|
22
|
+
readonly optimistic?: boolean;
|
|
12
23
|
}
|
|
13
24
|
export interface DeviceTypeControl {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
25
|
+
/** Compact, state-aware controls rendered directly in a device-list row. */
|
|
26
|
+
readonly InlineControl: (p: DeviceControlProps) => ReactNode;
|
|
27
|
+
/** Full control surface rendered as a card in the device-detail hero area. */
|
|
28
|
+
readonly HeroCard: (p: DeviceControlProps) => ReactNode;
|
|
18
29
|
}
|
|
19
30
|
/**
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
+
* Exhaustive record over DeviceType, DERIVED from the shared decision
|
|
32
|
+
* (`DEVICE_TYPE_CONTROL_KIND`) composed with the web `CONTROL_KIND_COMPONENTS`
|
|
33
|
+
* binding — so the type→control mapping can never diverge from the single
|
|
34
|
+
* source in `@camstack/types`. Preserved as a public export for consumers/tests
|
|
35
|
+
* that index it by `DeviceType`.
|
|
36
|
+
*
|
|
37
|
+
* The `Object.fromEntries` result is a `{ [k: string]: DeviceTypeControl }`;
|
|
38
|
+
* `Object.values(DeviceType)` (a string enum) yields exactly the enum's members,
|
|
39
|
+
* so the record is fully populated — the assertion narrows that documented
|
|
40
|
+
* enum-record projection boundary.
|
|
41
|
+
*/
|
|
31
42
|
export declare const DEVICE_TYPE_CONTROL: Record<DeviceType, DeviceTypeControl>;
|
|
32
43
|
/**
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
44
|
+
* Per-type FILL flag.
|
|
45
|
+
*
|
|
46
|
+
* true — range / choice / button controls (cover ▲■▼ triad, thermostat
|
|
47
|
+
* setpoint stepper, media/control/button action buttons, alarm
|
|
48
|
+
* segmented control). The child STRETCHES to the full column width.
|
|
49
|
+
* false — readouts, tap-toggles, icon controls (lock), and dummy/placeholder
|
|
50
|
+
* types. The child keeps its NATURAL width; where it sits in the
|
|
51
|
+
* column (flush right vs centered) is decided by the caller via a
|
|
52
|
+
* `ControlPlacement` — see `resolveControlAlign`.
|
|
53
|
+
*
|
|
54
|
+
* Dummy types (Camera, Hub, Generic, Weather, Vacuum, Container, and placeholder
|
|
55
|
+
* types Notifier/Script/Automation whose InlineControl renders "—") are `false` —
|
|
56
|
+
* the dash placeholder must not be stretched to the full column width. (AlarmPanel
|
|
57
|
+
* has a real segmented inline control and is `true`.) When a later task gives a
|
|
58
|
+
* remaining placeholder type a real stretchy inline control, flip its flag to true.
|
|
59
|
+
*
|
|
60
|
+
* Exhaustive over DeviceType — a missing member is a TypeScript build error.
|
|
61
|
+
*/
|
|
51
62
|
export declare const CONTROL_FILLS: Record<DeviceType, boolean>;
|
|
52
63
|
/**
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
export type ControlPlacement =
|
|
64
|
+
* Where a control sits, and whether the column carries the fixed `w-[140px]` box.
|
|
65
|
+
* 'right' — natural-width content flush to the fixed column's right edge (card / minimal views).
|
|
66
|
+
* 'center' — natural-width content centered in the fixed column.
|
|
67
|
+
* 'table' — the column DROPS its fixed width and sizes to its content (table view). Every type
|
|
68
|
+
* resolves to FIT so the control takes its natural width and lays out in sequence with
|
|
69
|
+
* the trailing trash + status dot, never overflowing a fixed box and colliding.
|
|
70
|
+
* FILL controls ignore 'right'/'center' (they always stretch to the fixed width); under 'table'
|
|
71
|
+
* a FILL control simply takes its natural width in the content-sized wrapper.
|
|
72
|
+
*/
|
|
73
|
+
export type ControlPlacement = "right" | "center" | "table";
|
|
63
74
|
/**
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
75
|
+
* Runtime-string-safe lookup: a device row's `type` crosses the wire as a plain
|
|
76
|
+
* string. The type→control-kind DECISION is single-sourced in `@camstack/types`
|
|
77
|
+
* (`resolveDeviceControlKind`, null for an unrecognised type); this maps the
|
|
78
|
+
* resolved kind onto the web components.
|
|
79
|
+
*/
|
|
69
80
|
export declare function resolveDeviceControl(type: string): DeviceTypeControl | null;
|
|
70
81
|
/**
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
82
|
+
* Runtime-string-safe alignment lookup for the fixed-width control column.
|
|
83
|
+
*
|
|
84
|
+
* A device's `type` crosses the wire as a plain string;
|
|
85
|
+
* `DEVICE_TYPE_VALUES.has(type)` narrows it to `DeviceType` before indexing
|
|
86
|
+
* `CONTROL_FILLS`, making the cast sound. The `'table'` placement is
|
|
87
|
+
* content-width for EVERY type (returns `FIT`), so a wide control never
|
|
88
|
+
* overflows a fixed box — the FILL flag is irrelevant there. For the fixed-box
|
|
89
|
+
* placements a FILL type always stretches (`FILL`) and a natural-width type is
|
|
90
|
+
* placed by the caller's `placement` — `'center'` → `CENTER`, `'right'` →
|
|
91
|
+
* `RIGHT` (card / minimal view). An unrecognised type falls back to
|
|
92
|
+
* natural-width placement.
|
|
93
|
+
*/
|
|
83
94
|
export declare function resolveControlAlign(type: string, placement: ControlPlacement): ControlAlign;
|
|
@@ -1,27 +1,27 @@
|
|
|
1
|
-
import { ReactNode } from
|
|
2
|
-
import { DeviceControlProps } from
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
|
+
import type { DeviceControlProps } from "./control-registry";
|
|
3
3
|
/**
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
export declare function CoverHeroCard({ trpc, deviceId, features, optimistic
|
|
4
|
+
* CoverHeroCard — full control surface for the device-detail hero area.
|
|
5
|
+
*
|
|
6
|
+
* TWO VARIANTS based on whether the cover reports a position:
|
|
7
|
+
*
|
|
8
|
+
* With position (position !== null):
|
|
9
|
+
* - Window graphic with slats descending from top to (100-position)%
|
|
10
|
+
* - Visual (display-only) lever at the slat boundary with % label
|
|
11
|
+
* - Open / Stop / Close buttons with state-aware highlight
|
|
12
|
+
* - Interactive position range input (gated on CoverPositionable)
|
|
13
|
+
* - Tilt range input (gated on CoverTilt)
|
|
14
|
+
*
|
|
15
|
+
* Without position (open/close-only, position === null):
|
|
16
|
+
* - Window graphic showing state via clear pane (open) or full slats (closed)
|
|
17
|
+
* - NO lever, NO % label; the value slot shows the cover STATE text (no %)
|
|
18
|
+
* - Open / Stop / Close buttons with state-aware highlight
|
|
19
|
+
*
|
|
20
|
+
* Position support is detected via `CoverStatus.position !== null`.
|
|
21
|
+
* The interactive setPosition slider is gated on `DeviceFeature.CoverPositionable`.
|
|
22
|
+
*
|
|
23
|
+
* Follows the same `useDeviceCapability` pattern as CoverPanel / CoverInlineControl.
|
|
24
|
+
* Only hides when the device truly has no cover cap — a transient undefined slice
|
|
25
|
+
* renders a neutral "unknown" state with all buttons still mounted.
|
|
26
|
+
*/
|
|
27
|
+
export declare function CoverHeroCard({ trpc, deviceId, features, optimistic }: DeviceControlProps): ReactNode;
|
|
@@ -1,27 +1,27 @@
|
|
|
1
|
-
import { ReactNode } from
|
|
2
|
-
import { CoverState } from
|
|
3
|
-
import { DeviceControlProps } from
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
import type { CoverState } from "@camstack/types";
|
|
3
|
+
import type { DeviceControlProps } from "./control-registry";
|
|
4
4
|
/** Button highlight variant for cover state-aware colouring. */
|
|
5
|
-
export type CoverHighlightVariant =
|
|
5
|
+
export type CoverHighlightVariant = "accent" | "filled" | "neutral";
|
|
6
6
|
export interface CoverButtonHighlight {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
readonly up: CoverHighlightVariant;
|
|
8
|
+
readonly stop: CoverHighlightVariant;
|
|
9
|
+
readonly down: CoverHighlightVariant;
|
|
10
10
|
}
|
|
11
11
|
/**
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
12
|
+
* Pure helper — maps a live CoverState (or undefined when no slice yet)
|
|
13
|
+
* to per-button highlight variants.
|
|
14
|
+
*
|
|
15
|
+
* opening → up:accent (transient/active upward motion)
|
|
16
|
+
* closing → down:accent (transient/active downward motion)
|
|
17
|
+
* open → up:filled (stable fully-open state)
|
|
18
|
+
* closed → down:filled (stable fully-closed state)
|
|
19
|
+
* stopped / undefined → neutral (no active state)
|
|
20
|
+
*/
|
|
21
21
|
export declare function coverHighlight(state: CoverState | undefined): CoverButtonHighlight;
|
|
22
22
|
/**
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
23
|
+
* CoverInlineControl — compact, state-aware cover controls for a
|
|
24
|
+
* device-list row. Renders ↑ ■ ↓ buttons + optional % open badge.
|
|
25
|
+
* Reuses `useDeviceCapability` exactly as `CoverPanel` does.
|
|
26
|
+
*/
|
|
27
27
|
export declare function CoverInlineControl({ trpc, deviceId, optimistic }: DeviceControlProps): ReactNode;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { ReactNode } from
|
|
2
|
-
import { ControlPanelProps } from
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
import type { ControlPanelProps } from "./types";
|
|
3
3
|
export declare function CoverPanel({ trpc, deviceId, features, layout }: ControlPanelProps): ReactNode;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ReactNode } from
|
|
2
|
-
import { DeviceControlProps } from
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
import type { DeviceControlProps } from "./control-registry";
|
|
3
3
|
/** Inline placeholder: renders nothing (no-op row atom for types with no inline control). */
|
|
4
4
|
export declare function DummyInline(_p: DeviceControlProps): ReactNode;
|
|
5
5
|
/** Hero card placeholder: shows a muted "Controls coming soon" card for unimplemented types. */
|
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
import { ReactNode } from
|
|
2
|
-
import { DeviceControlProps } from
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
import type { DeviceControlProps } from "./control-registry";
|
|
3
3
|
/**
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
export declare function FanHeroCard({ trpc, deviceId, features, optimistic
|
|
4
|
+
* FanHeroCard — radial speed-dial hero for Fan devices.
|
|
5
|
+
*
|
|
6
|
+
* Renders:
|
|
7
|
+
* - RadialGauge: draggable speed ArcKnob riding a 270° ring at the speed
|
|
8
|
+
* fraction (drag snaps to the device's percentageStep), centered fan glyph +
|
|
9
|
+
* percentage readout. The gauge is the sole speed control — no slider.
|
|
10
|
+
* - Preset selector (centered) — ONLY when the device advertises
|
|
11
|
+
* DeviceFeature.FanPreset AND the slice exposes a non-empty
|
|
12
|
+
* `availablePresets`.
|
|
13
|
+
* - TAP TOGGLE for on/off (Spec §3 — NOT a SlideToggle; slide is safety-only).
|
|
14
|
+
* - Oscillate toggle button — ONLY when the device advertises
|
|
15
|
+
* DeviceFeature.FanOscillating AND the slice exposes a non-null
|
|
16
|
+
* `oscillating` value.
|
|
17
|
+
*
|
|
18
|
+
* Composes two caps: `switch` (on/off) + `fan-control` (speed / oscillate).
|
|
19
|
+
* Cap-gated on `switch` (always present on a Fan) — returns null without it.
|
|
20
|
+
*/
|
|
21
|
+
export declare function FanHeroCard({ trpc, deviceId, features, optimistic }: DeviceControlProps): ReactNode;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { ReactNode } from
|
|
2
|
-
import { ControlPanelProps } from
|
|
3
|
-
export declare function FanPanel({ trpc, deviceId, features, layout, optimistic
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
import type { ControlPanelProps } from "./types";
|
|
3
|
+
export declare function FanPanel({ trpc, deviceId, features, layout, optimistic }: ControlPanelProps): ReactNode;
|
|
@@ -1,37 +1,54 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Humidifier controls for a `DeviceType.Humidifier` device.
|
|
3
|
+
*
|
|
4
|
+
* Reads the `humidifier` cap status slice (on / current / target /
|
|
5
|
+
* mode / action / bounds) and renders:
|
|
6
|
+
* - HumidifierInlineControl (device-list row): a compact on/off
|
|
7
|
+
* tap-toggle + a small `current%→target%` readout. Row-narrow.
|
|
8
|
+
* - HumidifierHeroCard (device-detail hero): a bespoke state-tinted
|
|
9
|
+
* droplet + rising-mist SVG in the framed-box language, an on/off
|
|
10
|
+
* toggle, a target-humidity range slider with a `%` readout, a
|
|
11
|
+
* current-humidity readout, and a mode `<select>` (only when modes
|
|
12
|
+
* are available).
|
|
13
|
+
*
|
|
14
|
+
* Mirrors the climate / valve controls' `useDeviceCapability` +
|
|
15
|
+
* `useOptimisticSlice` pattern so the row and hero never diverge.
|
|
16
|
+
* Controls are gated on `available`. The decorative SVG is aria-hidden.
|
|
17
|
+
*/
|
|
18
|
+
import { type ReactNode } from "react";
|
|
19
|
+
import type { DeviceControlProps } from "./control-registry";
|
|
3
20
|
/** The `action` HA attribute drives the droplet / mist tint. */
|
|
4
|
-
export type HumidifierAction =
|
|
21
|
+
export type HumidifierAction = "humidifying" | "drying" | "idle" | "off";
|
|
5
22
|
export interface HumidifierTint {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
23
|
+
/** Tailwind class for the wash behind the droplet. */
|
|
24
|
+
readonly glow: string;
|
|
25
|
+
/** Tailwind text token driving the droplet via currentColor. */
|
|
26
|
+
readonly accent: string;
|
|
27
|
+
/** Whether to render the upward mist dashes (actively humidifying). */
|
|
28
|
+
readonly misting: boolean;
|
|
12
29
|
}
|
|
13
30
|
/**
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
31
|
+
* Pure helper — maps the device's on-state + HA `action` to a tint.
|
|
32
|
+
* Exhaustive over the known action strings; an unknown / null action
|
|
33
|
+
* falls back to on/off heuristics.
|
|
34
|
+
*
|
|
35
|
+
* humidifying → primary (blue)
|
|
36
|
+
* drying → warning
|
|
37
|
+
* idle / off → muted
|
|
38
|
+
*/
|
|
22
39
|
export declare function humidifierTint(on: boolean, action: string | null): HumidifierTint;
|
|
23
40
|
/**
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
export declare function HumidifierInlineControl({ trpc, deviceId, optimistic
|
|
41
|
+
* HumidifierInlineControl — compact on/off toggle + current→target readout
|
|
42
|
+
* for a device-list row. Must NOT blow out the row width.
|
|
43
|
+
*/
|
|
44
|
+
export declare function HumidifierInlineControl({ trpc, deviceId, optimistic }: DeviceControlProps): ReactNode;
|
|
28
45
|
/**
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
46
|
+
* HumidifierHeroCard — full control surface for the device-detail hero.
|
|
47
|
+
*
|
|
48
|
+
* Bespoke droplet + mist graphic + a large target-humidity readout +
|
|
49
|
+
* an on/off toggle + a target-humidity range slider (bounds from
|
|
50
|
+
* min/maxHumidity ?? 0..100) + a current-humidity readout + a mode
|
|
51
|
+
* `<select>` (only when modes are available). Gated on `available`.
|
|
52
|
+
* Only hides when the device truly has no humidifier cap.
|
|
53
|
+
*/
|
|
37
54
|
export declare function HumidifierHeroCard({ trpc, deviceId, optimistic }: DeviceControlProps): ReactNode;
|
|
@@ -1,35 +1,49 @@
|
|
|
1
|
-
import { ReactNode } from 'react';
|
|
2
|
-
import { DeviceControlProps } from './control-registry';
|
|
3
1
|
/**
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
2
|
+
* Image controls for a `DeviceType.Image` device.
|
|
3
|
+
*
|
|
4
|
+
* Read-only: the `image` cap has no setters. Reads the `image` cap status
|
|
5
|
+
* slice (an absolute signed `url` the browser loads directly) and renders:
|
|
6
|
+
* - ImageInlineControl (device-list row): a small thumbnail when a url
|
|
7
|
+
* is present; a muted `ImageOff` placeholder when null. Row-narrow.
|
|
8
|
+
* - ImageHeroCard (device-detail hero): a framed image in the
|
|
9
|
+
* cover-style framed box (object-contain) when a url is present; a
|
|
10
|
+
* centered placeholder when null.
|
|
11
|
+
*
|
|
12
|
+
* Mirrors the read pattern of the other controls' `useDeviceCapability`
|
|
13
|
+
* usage so the row and hero never diverge.
|
|
14
|
+
*/
|
|
15
|
+
import { type ReactNode } from "react";
|
|
16
|
+
import type { DeviceControlProps } from "./control-registry";
|
|
17
|
+
/**
|
|
18
|
+
* ImageDetailModal — a full-view image dialog with zoom in/out/reset and pan
|
|
19
|
+
* (scroll when zoomed). Generous padding frames the image. Opened by clicking
|
|
20
|
+
* the inline thumbnail or the hero image. Controlled via `open`/`onOpenChange`.
|
|
21
|
+
*/
|
|
22
|
+
export declare function ImageDetailModal({ url, alt, open, onOpenChange }: {
|
|
23
|
+
readonly url: string;
|
|
24
|
+
readonly alt: string;
|
|
25
|
+
readonly open: boolean;
|
|
26
|
+
readonly onOpenChange: (open: boolean) => void;
|
|
13
27
|
}): ReactNode;
|
|
14
28
|
/**
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
29
|
+
* ImageInlineControl — compact thumbnail for a device-list row that expands
|
|
30
|
+
* into a floating preview on hover/focus (shared `HoverZoomImage`). Shows a
|
|
31
|
+
* muted ImageOff placeholder box when no url is available. Row-narrow.
|
|
32
|
+
*
|
|
33
|
+
* `DeviceControlProps` carries no device name, so the alt/caption is the
|
|
34
|
+
* generic 'Image'; the framed hero (ImageHeroCard) carries the real name.
|
|
35
|
+
*/
|
|
22
36
|
export declare function ImageInlineControl({ trpc, deviceId }: DeviceControlProps): ReactNode;
|
|
23
37
|
export interface ImageHeroCardProps extends DeviceControlProps {
|
|
24
|
-
|
|
25
|
-
|
|
38
|
+
/** Optional device name for the image alt text. */
|
|
39
|
+
readonly deviceName?: string;
|
|
26
40
|
}
|
|
27
41
|
/**
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
42
|
+
* ImageHeroCard — read-only framed image for the device-detail hero.
|
|
43
|
+
*
|
|
44
|
+
* A still image in the cover-style framed box (rounded border,
|
|
45
|
+
* object-contain) when a url is present; a centered ImageOff + "No image"
|
|
46
|
+
* placeholder when null. Keeps the framed-box chrome for visual
|
|
47
|
+
* consistency with the other heroes.
|
|
48
|
+
*/
|
|
35
49
|
export declare function ImageHeroCard({ trpc, deviceId, deviceName }: ImageHeroCardProps): ReactNode;
|
|
@@ -1,34 +1,34 @@
|
|
|
1
|
-
export { ControlColumn, ValueReadout, FILL, RIGHT, CENTER, type ControlAlign, Stepper, SlideToggle, ArcKnob, GripTrack
|
|
2
|
-
export { RadialGauge, type RadialGaugeProps } from
|
|
3
|
-
export { TapToggle, type TapToggleProps } from
|
|
4
|
-
export { ButtonControl, ButtonHeroCard } from
|
|
5
|
-
export { CoverPanel } from
|
|
6
|
-
export { LockPanel } from
|
|
7
|
-
export { SwitchPanel } from
|
|
8
|
-
export { BrightnessPanel } from
|
|
9
|
-
export { FanPanel } from
|
|
10
|
-
export { ClimatePanel, MODE_COLOR } from
|
|
11
|
-
export { MediaPlayerPanel, STATE_COLOR } from
|
|
12
|
-
export { ControlPanel } from
|
|
13
|
-
export { CONTROL_CAP_NAMES, type ControlCapName, type ControlPanelProps } from
|
|
14
|
-
export { PopoverRowAction } from
|
|
15
|
-
export { SensorValueAtom, ROLE_DESCRIPTOR, type SensorDescriptor, type SensorValueAtomProps
|
|
16
|
-
export { DEVICE_TYPE_CONTROL, CONTROL_FILLS, resolveDeviceControl, resolveControlAlign, coverHighlight, type DeviceTypeControl, type DeviceControlProps, type ControlPlacement
|
|
17
|
-
export { OfflineBadge, type OfflineBadgeProps } from
|
|
18
|
-
export { CoverInlineControl, type CoverHighlightVariant, type CoverButtonHighlight
|
|
19
|
-
export { CoverHeroCard } from
|
|
20
|
-
export { VacuumInlineControl, VacuumHeroCard, vacuumStateMeta, tankAlert, type VacuumStateMeta, type TankKind, type TankAlert
|
|
21
|
-
export { LawnMowerInlineControl, LawnMowerHeroCard, lawnMowerActivityMeta, type LawnMowerActivityMeta
|
|
22
|
-
export { ValveInlineControl, ValveHeroCard, valveStateMeta, type ValveStateMeta
|
|
23
|
-
export { HumidifierInlineControl, HumidifierHeroCard, humidifierTint, type HumidifierTint, type HumidifierAction
|
|
24
|
-
export { WaterHeaterInlineControl, WaterHeaterHeroCard, waterHeaterTint, waterHeaterPhase, type WaterHeaterTint, type WaterHeaterPhase
|
|
25
|
-
export { WeatherInlineControl, WeatherHeroCard, weatherTint, weatherConditionMeta, type WeatherTint, type WeatherConditionMeta, type WeatherGlyph
|
|
26
|
-
export { ImageInlineControl, ImageHeroCard, type ImageHeroCardProps
|
|
27
|
-
export { DummyInline, DummyHeroCard } from
|
|
28
|
-
export { SensorInlineControl } from
|
|
29
|
-
export { SensorHeroCard } from
|
|
30
|
-
export { SwitchInlineControl, SwitchHeroCard, LockInlineControl, LockHeroCard, LightInlineControl, LightHeroCard, FanInlineControl, FanHeroCard, ThermostatInlineControl, ThermostatHeroCard, MediaPlayerInlineControl, MediaPlayerHeroCard, AlarmPanelInlineControl, AlarmHeroCard, ScriptInlineControl, ScriptHeroCard, AutomationInlineControl, AutomationHeroCard, ControlInlineControl, ControlHeroCard
|
|
31
|
-
export { resolvePrimaryChild, PRIORITY, type ChildRef } from
|
|
32
|
-
export { resolveContainerPrimary, overrideEntityIdFromLink, containerChildToRef, childEntityId, type ContainerChild
|
|
33
|
-
export { ContainerPrimaryHero, type ContainerPrimaryHeroProps, type ContainerHeroChild
|
|
34
|
-
export { PrimaryChildPicker, type PrimaryChildPickerProps, type PrimaryChildOption
|
|
1
|
+
export { ControlColumn, ValueReadout, FILL, RIGHT, CENTER, type ControlAlign, Stepper, SlideToggle, ArcKnob, GripTrack } from "./atoms";
|
|
2
|
+
export { RadialGauge, type RadialGaugeProps } from "./radial-gauge";
|
|
3
|
+
export { TapToggle, type TapToggleProps } from "./tap-toggle";
|
|
4
|
+
export { ButtonControl, ButtonHeroCard } from "./button-control";
|
|
5
|
+
export { CoverPanel } from "./cover-panel";
|
|
6
|
+
export { LockPanel } from "./lock-panel";
|
|
7
|
+
export { SwitchPanel } from "./switch-panel";
|
|
8
|
+
export { BrightnessPanel } from "./brightness-panel";
|
|
9
|
+
export { FanPanel } from "./fan-panel";
|
|
10
|
+
export { ClimatePanel, MODE_COLOR } from "./climate-panel";
|
|
11
|
+
export { MediaPlayerPanel, STATE_COLOR } from "./media-player-panel";
|
|
12
|
+
export { ControlPanel } from "./control-panel";
|
|
13
|
+
export { CONTROL_CAP_NAMES, type ControlCapName, type ControlPanelProps } from "./types";
|
|
14
|
+
export { PopoverRowAction } from "./popover-row-action";
|
|
15
|
+
export { SensorValueAtom, ROLE_DESCRIPTOR, type SensorDescriptor, type SensorValueAtomProps } from "./sensor-value-atom";
|
|
16
|
+
export { DEVICE_TYPE_CONTROL, CONTROL_FILLS, resolveDeviceControl, resolveControlAlign, coverHighlight, type DeviceTypeControl, type DeviceControlProps, type ControlPlacement } from "./control-registry";
|
|
17
|
+
export { OfflineBadge, type OfflineBadgeProps } from "./offline-badge";
|
|
18
|
+
export { CoverInlineControl, type CoverHighlightVariant, type CoverButtonHighlight } from "./cover-inline";
|
|
19
|
+
export { CoverHeroCard } from "./cover-hero-card";
|
|
20
|
+
export { VacuumInlineControl, VacuumHeroCard, vacuumStateMeta, tankAlert, type VacuumStateMeta, type TankKind, type TankAlert } from "./vacuum-control";
|
|
21
|
+
export { LawnMowerInlineControl, LawnMowerHeroCard, lawnMowerActivityMeta, type LawnMowerActivityMeta } from "./lawn-mower-control";
|
|
22
|
+
export { ValveInlineControl, ValveHeroCard, valveStateMeta, type ValveStateMeta } from "./valve-control";
|
|
23
|
+
export { HumidifierInlineControl, HumidifierHeroCard, humidifierTint, type HumidifierTint, type HumidifierAction } from "./humidifier-control";
|
|
24
|
+
export { WaterHeaterInlineControl, WaterHeaterHeroCard, waterHeaterTint, waterHeaterPhase, type WaterHeaterTint, type WaterHeaterPhase } from "./water-heater-control";
|
|
25
|
+
export { WeatherInlineControl, WeatherHeroCard, weatherTint, weatherConditionMeta, type WeatherTint, type WeatherConditionMeta, type WeatherGlyph } from "./weather-control";
|
|
26
|
+
export { ImageInlineControl, ImageHeroCard, type ImageHeroCardProps } from "./image-control";
|
|
27
|
+
export { DummyInline, DummyHeroCard } from "./dummy-hero-card";
|
|
28
|
+
export { SensorInlineControl } from "./sensor-inline-control";
|
|
29
|
+
export { SensorHeroCard } from "./sensor-hero-card";
|
|
30
|
+
export { SwitchInlineControl, SwitchHeroCard, LockInlineControl, LockHeroCard, LightInlineControl, LightHeroCard, FanInlineControl, FanHeroCard, ThermostatInlineControl, ThermostatHeroCard, MediaPlayerInlineControl, MediaPlayerHeroCard, AlarmPanelInlineControl, AlarmHeroCard, ScriptInlineControl, ScriptHeroCard, AutomationInlineControl, AutomationHeroCard, ControlInlineControl, ControlHeroCard } from "./panel-controls";
|
|
31
|
+
export { resolvePrimaryChild, PRIORITY, type ChildRef } from "./primary-child";
|
|
32
|
+
export { resolveContainerPrimary, overrideEntityIdFromLink, containerChildToRef, childEntityId, type ContainerChild } from "./container-primary";
|
|
33
|
+
export { ContainerPrimaryHero, type ContainerPrimaryHeroProps, type ContainerHeroChild } from "./container-primary-hero";
|
|
34
|
+
export { PrimaryChildPicker, type PrimaryChildPickerProps, type PrimaryChildOption } from "./primary-child-picker";
|