@camstack/ui-library 1.2.256 → 1.2.258
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/composites/accelerator-label.d.ts +9 -9
- package/dist/composites/adaptive-downlink.d.ts +141 -143
- package/dist/composites/addon-global-settings-form.d.ts +73 -60
- package/dist/composites/addon-page-props.d.ts +34 -10
- package/dist/composites/agent-step-editor.d.ts +48 -47
- package/dist/composites/app-shell/app-shell.d.ts +17 -17
- package/dist/composites/app-shell/index.d.ts +3 -3
- package/dist/composites/app-shell/sidebar-item.d.ts +9 -8
- package/dist/composites/app-shell/sidebar.d.ts +10 -10
- package/dist/composites/audio-classification-list.d.ts +16 -15
- package/dist/composites/audio-level-waveform.d.ts +31 -30
- package/dist/composites/audio-waveform.d.ts +18 -17
- package/dist/composites/battery-badge.d.ts +27 -13
- package/dist/composites/breadcrumb.d.ts +21 -21
- package/dist/composites/camera-stream-player.d.ts +309 -309
- package/dist/composites/cap-settings/AutotrackSection.d.ts +19 -2
- package/dist/composites/cap-settings/CameraGridLayoutEditor.d.ts +24 -2
- package/dist/composites/cap-settings/ConsumablesPanel.d.ts +21 -2
- package/dist/composites/cap-settings/CoverageTrack.d.ts +21 -20
- package/dist/composites/cap-settings/EventBucketStrip.d.ts +21 -20
- package/dist/composites/cap-settings/EventHeatmap.d.ts +8 -7
- package/dist/composites/cap-settings/HomePresetPicker.d.ts +2 -2
- package/dist/composites/cap-settings/MaskShapeCanvas.d.ts +143 -41
- package/dist/composites/cap-settings/MotionZonesSettings.d.ts +41 -2
- package/dist/composites/cap-settings/NavigationPanel.d.ts +14 -2
- package/dist/composites/cap-settings/PrivacyMaskSettings.d.ts +3 -2
- package/dist/composites/cap-settings/PtzPanel.d.ts +15 -2
- package/dist/composites/cap-settings/RecordingBandsEditor.d.ts +33 -32
- package/dist/composites/cap-settings/RecordingPanel.d.ts +3 -2
- package/dist/composites/cap-settings/RecordingSettings.d.ts +11 -10
- package/dist/composites/cap-settings/RecordingTimeline.d.ts +3 -2
- package/dist/composites/cap-settings/SceneMonitorEditor.d.ts +3 -51
- package/dist/composites/cap-settings/SceneReferenceGallery.d.ts +62 -23
- package/dist/composites/cap-settings/SceneSettingsForm.d.ts +52 -16
- package/dist/composites/cap-settings/TimelineControls.d.ts +21 -20
- package/dist/composites/cap-settings/camera-grid-layout.d.ts +95 -95
- package/dist/composites/cap-settings/event-thumb.d.ts +9 -8
- package/dist/composites/cap-settings/index.d.ts +20 -20
- package/dist/composites/cap-settings/privacy-mask-audio.d.ts +47 -47
- package/dist/composites/cap-settings/recording-config-form.d.ts +25 -25
- package/dist/composites/cap-settings/recording-spans.d.ts +14 -14
- package/dist/composites/cap-settings/recording-timeline-model.d.ts +57 -57
- package/dist/composites/cap-settings/scene-monitor-copy.d.ts +58 -49
- package/dist/composites/client-network-sample.d.ts +41 -41
- package/dist/composites/clips/ClipBandBar.d.ts +44 -14
- package/dist/composites/clips/ClipPanel.d.ts +30 -6
- package/dist/composites/clips/ClipTile.d.ts +26 -5
- package/dist/composites/clips/ClipsSection.d.ts +107 -2
- package/dist/composites/clips/clip-band.d.ts +72 -38
- package/dist/composites/clips/clip-day-window.d.ts +7 -30
- package/dist/composites/clips/clip-source-state.d.ts +55 -26
- package/dist/composites/clips/clip-still-retry.d.ts +39 -39
- package/dist/composites/clips/clip-thumbnail-fetch.d.ts +9 -9
- package/dist/composites/clips/clip-tile-media.d.ts +64 -32
- package/dist/composites/clips/clip-view-state.d.ts +76 -46
- package/dist/composites/code-block.d.ts +5 -4
- package/dist/composites/config-form-builder.d.ts +14 -13
- package/dist/composites/config-form-field.d.ts +63 -62
- package/dist/composites/config-icon-field.d.ts +10 -9
- package/dist/composites/config-secret-field.d.ts +51 -27
- package/dist/composites/confirm-action-button.d.ts +52 -39
- package/dist/composites/confirm-dialog.d.ts +110 -48
- package/dist/composites/copy-button.d.ts +25 -19
- package/dist/composites/data-table/data-table-header.d.ts +8 -7
- package/dist/composites/data-table/data-table-pagination.d.ts +7 -6
- package/dist/composites/data-table/data-table-row.d.ts +8 -7
- package/dist/composites/data-table/data-table.d.ts +3 -2
- package/dist/composites/data-table/index.d.ts +2 -2
- package/dist/composites/data-table/types.d.ts +29 -29
- package/dist/composites/data-table-filter-bar.d.ts +30 -29
- package/dist/composites/data-table-filter.d.ts +34 -34
- package/dist/composites/data-table-layout.d.ts +24 -24
- package/dist/composites/data-table-pager.d.ts +5 -5
- package/dist/composites/data-table-pagination.d.ts +23 -23
- package/dist/composites/data-table-selection.d.ts +10 -10
- package/dist/composites/data-table.d.ts +167 -118
- package/dist/composites/detection-canvas.d.ts +34 -25
- package/dist/composites/detection-colors.d.ts +9 -9
- package/dist/composites/detection-overlay.d.ts +33 -32
- package/dist/composites/detection-result-tree.d.ts +22 -9
- package/dist/composites/dev-shell.d.ts +15 -14
- package/dist/composites/device-activity-panel.d.ts +37 -31
- package/dist/composites/device-card.d.ts +32 -32
- package/dist/composites/device-controls/ac-panel.d.ts +2 -2
- package/dist/composites/device-controls/alarm-hero-card.d.ts +42 -42
- package/dist/composites/device-controls/atoms.d.ts +50 -50
- package/dist/composites/device-controls/brightness-panel.d.ts +3 -3
- package/dist/composites/device-controls/button-control.d.ts +14 -14
- package/dist/composites/device-controls/climate-panel.d.ts +12 -12
- package/dist/composites/device-controls/container-primary-hero.d.ts +33 -16
- package/dist/composites/device-controls/container-primary.d.ts +68 -39
- package/dist/composites/device-controls/control-panel.d.ts +4 -4
- package/dist/composites/device-controls/control-registry.d.ts +81 -70
- package/dist/composites/device-controls/cover-hero-card.d.ts +26 -26
- package/dist/composites/device-controls/cover-inline.d.ts +20 -20
- package/dist/composites/device-controls/cover-panel.d.ts +2 -2
- package/dist/composites/device-controls/dummy-hero-card.d.ts +2 -2
- package/dist/composites/device-controls/fan-hero-card.d.ts +20 -20
- package/dist/composites/device-controls/fan-panel.d.ts +3 -3
- package/dist/composites/device-controls/humidifier-control.d.ts +46 -29
- package/dist/composites/device-controls/image-control.d.ts +41 -27
- package/dist/composites/device-controls/index.d.ts +34 -34
- package/dist/composites/device-controls/lawn-mower-control.d.ts +30 -16
- package/dist/composites/device-controls/light-hero-card.d.ts +15 -15
- package/dist/composites/device-controls/lock-hero-card.d.ts +14 -14
- package/dist/composites/device-controls/lock-panel.d.ts +3 -3
- package/dist/composites/device-controls/media-player-hero-card.d.ts +16 -16
- package/dist/composites/device-controls/media-player-panel.d.ts +7 -7
- package/dist/composites/device-controls/offline-badge.d.ts +23 -8
- package/dist/composites/device-controls/panel-controls.d.ts +39 -20
- package/dist/composites/device-controls/pet-feeder-panel.d.ts +27 -9
- package/dist/composites/device-controls/popover-row-action.d.ts +18 -6
- package/dist/composites/device-controls/primary-child-picker.d.ts +31 -15
- package/dist/composites/device-controls/primary-child.d.ts +14 -25
- package/dist/composites/device-controls/radial-gauge.d.ts +17 -17
- package/dist/composites/device-controls/script-automation-controls.d.ts +9 -9
- package/dist/composites/device-controls/sensor-hero-card.d.ts +26 -8
- package/dist/composites/device-controls/sensor-inline-control.d.ts +21 -9
- package/dist/composites/device-controls/sensor-value-atom.d.ts +97 -76
- package/dist/composites/device-controls/switch-hero-card.d.ts +11 -11
- package/dist/composites/device-controls/switch-panel.d.ts +2 -2
- package/dist/composites/device-controls/tap-toggle.d.ts +13 -13
- package/dist/composites/device-controls/thermostat-hero-card.d.ts +16 -16
- package/dist/composites/device-controls/types.d.ts +11 -11
- package/dist/composites/device-controls/update-control.d.ts +20 -7
- package/dist/composites/device-controls/vacuum-control.d.ts +41 -25
- package/dist/composites/device-controls/valve-control.d.ts +51 -35
- package/dist/composites/device-controls/water-heater-control.d.ts +48 -31
- package/dist/composites/device-controls/weather-control.d.ts +46 -28
- package/dist/composites/device-export-panel.d.ts +34 -34
- package/dist/composites/device-grid.d.ts +10 -10
- package/dist/composites/device-item/actions.d.ts +40 -18
- package/dist/composites/device-item/admin-link-quick-action.d.ts +66 -26
- package/dist/composites/device-item/child-layout.d.ts +43 -26
- package/dist/composites/device-item/child-section-accordion.d.ts +20 -6
- package/dist/composites/device-item/children-accordion.d.ts +11 -11
- package/dist/composites/device-item/container-children-context.d.ts +28 -11
- package/dist/composites/device-item/device-delete-action.d.ts +23 -5
- package/dist/composites/device-item/features.d.ts +33 -15
- package/dist/composites/device-item/header.d.ts +53 -31
- package/dist/composites/device-item/helpers.d.ts +291 -274
- package/dist/composites/device-item/index.d.ts +18 -9
- package/dist/composites/device-item/preview.d.ts +41 -21
- package/dist/composites/device-item/quick-detail-action.d.ts +4 -4
- package/dist/composites/device-item/reboot-quick-action.d.ts +28 -7
- package/dist/composites/device-item/role-display-defaults-context.d.ts +28 -12
- package/dist/composites/device-item/status-dot.d.ts +24 -6
- package/dist/composites/device-list/batch-actions-bar.d.ts +23 -12
- package/dist/composites/device-list/batch-toolbar.d.ts +13 -13
- package/dist/composites/device-list/columns.d.ts +108 -108
- package/dist/composites/device-list/device-integration.d.ts +48 -58
- package/dist/composites/device-list/device-mode.d.ts +121 -121
- package/dist/composites/device-list/empty-state.d.ts +14 -3
- package/dist/composites/device-list/filter-chips.d.ts +42 -29
- package/dist/composites/device-list/fuzzy-match.d.ts +22 -22
- package/dist/composites/device-list/generic-mode.d.ts +88 -88
- package/dist/composites/device-list/group.d.ts +62 -35
- package/dist/composites/device-list/hardware-cell.d.ts +14 -3
- package/dist/composites/device-list/hardware.d.ts +29 -11
- package/dist/composites/device-list/icon-action.d.ts +27 -15
- package/dist/composites/device-list/index.d.ts +46 -23
- package/dist/composites/device-list/multi-select.d.ts +17 -17
- package/dist/composites/device-list/page-size-select.d.ts +13 -7
- package/dist/composites/device-list/pagination.d.ts +19 -12
- package/dist/composites/device-list/sort.d.ts +28 -15
- package/dist/composites/device-list/sortable-header.d.ts +20 -7
- package/dist/composites/device-list/table-layout.d.ts +44 -44
- package/dist/composites/device-list/type-filter.d.ts +16 -16
- package/dist/composites/device-list/url-state.d.ts +35 -35
- package/dist/composites/device-meta.d.ts +43 -43
- package/dist/composites/device-picker/DevicePicker.d.ts +72 -33
- package/dist/composites/device-picker/SelectedChip.d.ts +10 -9
- package/dist/composites/device-picker/device-filter-bar.d.ts +19 -18
- package/dist/composites/device-picker/device-fleet-view.d.ts +11 -3
- package/dist/composites/device-picker/device-parent.d.ts +27 -27
- package/dist/composites/device-picker/device-picker-grouping.d.ts +3 -3
- package/dist/composites/device-picker/device-picker-model.d.ts +140 -140
- package/dist/composites/device-picker/device-selection-rows.d.ts +31 -24
- package/dist/composites/device-picker/device-selection.d.ts +43 -43
- package/dist/composites/device-picker/index.d.ts +9 -9
- package/dist/composites/device-select-field.d.ts +17 -16
- package/dist/composites/device-select-filter.d.ts +78 -78
- package/dist/composites/device-selector-picker.d.ts +25 -25
- package/dist/composites/device-step-matrix.d.ts +54 -28
- package/dist/composites/discovery-panel.d.ts +22 -22
- package/dist/composites/doorbell-recent-panel.d.ts +9 -8
- package/dist/composites/empty-state.d.ts +8 -8
- package/dist/composites/error-box.d.ts +32 -17
- package/dist/composites/event-kind-visuals.d.ts +29 -18
- package/dist/composites/event-stream.d.ts +59 -42
- package/dist/composites/extensions/AssociationSlotCard.d.ts +45 -24
- package/dist/composites/extensions/ExtensionsPanel.d.ts +41 -18
- package/dist/composites/extensions/extensions-view-state.d.ts +71 -53
- package/dist/composites/filter-bar.d.ts +22 -21
- package/dist/composites/form-field.d.ts +9 -9
- package/dist/composites/format-state-value.d.ts +23 -51
- package/dist/composites/grouped-model-selector.d.ts +7 -6
- package/dist/composites/hls-quality.d.ts +26 -26
- package/dist/composites/hls-video.d.ts +62 -39
- package/dist/composites/hover-zoom-image.d.ts +35 -16
- package/dist/composites/icon-picker.d.ts +86 -50
- package/dist/composites/image-selector.d.ts +21 -20
- package/dist/composites/index.d.ts +204 -204
- package/dist/composites/inference-config-selector.d.ts +36 -35
- package/dist/composites/kebab-menu.d.ts +53 -35
- package/dist/composites/key-value-list.d.ts +14 -14
- package/dist/composites/log-stream-scroll.d.ts +24 -24
- package/dist/composites/log-stream.d.ts +81 -70
- package/dist/composites/login-form.d.ts +7 -6
- package/dist/composites/model-bound-slider.d.ts +46 -26
- package/dist/composites/model-picker.d.ts +20 -19
- package/dist/composites/mount-addon-page.d.ts +12 -12
- package/dist/composites/network-link-badge.d.ts +7 -6
- package/dist/composites/node-picker.d.ts +14 -13
- package/dist/composites/notification-targets-field.d.ts +76 -58
- package/dist/composites/notification-targets-options.d.ts +9 -6
- package/dist/composites/option-select/OptionSelect.d.ts +23 -22
- package/dist/composites/option-select/index.d.ts +4 -4
- package/dist/composites/option-select/option-select-model.d.ts +35 -35
- package/dist/composites/page-header.d.ts +6 -6
- package/dist/composites/peer-connection-config.d.ts +9 -9
- package/dist/composites/phase-icon.d.ts +10 -3
- package/dist/composites/pipeline-builder.d.ts +21 -13
- package/dist/composites/pipeline-matrix-shared.d.ts +159 -150
- package/dist/composites/pipeline-runtime-selector.d.ts +12 -11
- package/dist/composites/pipeline-step.d.ts +39 -31
- package/dist/composites/placeholder-field/PlaceholderChipField.d.ts +23 -22
- package/dist/composites/placeholder-field/index.d.ts +1 -1
- package/dist/composites/provider-badge.d.ts +6 -5
- package/dist/composites/ptz-overlay.d.ts +38 -18
- package/dist/composites/qr-code.d.ts +24 -10
- package/dist/composites/reconnect-schedule.d.ts +22 -22
- package/dist/composites/resolve-step-default-model.d.ts +94 -94
- package/dist/composites/response-log.d.ts +7 -6
- package/dist/composites/root-model-source.d.ts +21 -10
- package/dist/composites/scope-picker.d.ts +49 -25
- package/dist/composites/section-card.d.ts +19 -11
- package/dist/composites/setting-row.d.ts +39 -21
- package/dist/composites/snapshot-button.d.ts +23 -19
- package/dist/composites/sort-header-button.d.ts +25 -8
- package/dist/composites/stat-card.d.ts +20 -8
- package/dist/composites/state-values-stream.d.ts +49 -24
- package/dist/composites/status-badge.d.ts +10 -8
- package/dist/composites/step-inspector/gate-control.d.ts +13 -12
- package/dist/composites/step-inspector/index.d.ts +8 -8
- package/dist/composites/step-inspector/layered-settings-form.d.ts +41 -30
- package/dist/composites/step-inspector/segmented-choice.d.ts +8 -7
- package/dist/composites/step-inspector/setting-values.d.ts +13 -8
- package/dist/composites/step-inspector/step-detail-dock.d.ts +39 -23
- package/dist/composites/step-inspector/step-inspector-panel.d.ts +34 -28
- package/dist/composites/step-inspector/step-model-row.d.ts +29 -24
- package/dist/composites/step-inspector/step-search.d.ts +11 -11
- package/dist/composites/step-timings.d.ts +7 -6
- package/dist/composites/step-tree.d.ts +17 -12
- package/dist/composites/stream-broker-selector.d.ts +29 -8
- package/dist/composites/stream-debug/stream-debug-overlay.d.ts +40 -40
- package/dist/composites/stream-debug/webrtc-debug-stats.d.ts +144 -129
- package/dist/composites/stream-panel.d.ts +212 -201
- package/dist/composites/table-sort.d.ts +61 -61
- package/dist/composites/timezone-selector.d.ts +15 -13
- package/dist/composites/training/send-frame-to-training.d.ts +5 -4
- package/dist/composites/training/training-collection-picker.d.ts +4 -3
- package/dist/composites/training/training-refusal-text.d.ts +6 -6
- package/dist/composites/unit-picker/UnitPicker.d.ts +19 -14
- package/dist/composites/unit-picker/index.d.ts +1 -1
- package/dist/composites/use-data-table-filter.d.ts +19 -19
- package/dist/composites/version-badge.d.ts +19 -18
- package/dist/composites/webrtc-diagnostics/EndpointTestCard.d.ts +7 -7
- package/dist/composites/webrtc-diagnostics/HubSessionTestCard.d.ts +14 -14
- package/dist/composites/webrtc-diagnostics/RunReport.d.ts +10 -5
- package/dist/composites/webrtc-diagnostics/endpoint-probe.d.ts +41 -21
- package/dist/composites/webrtc-diagnostics/endpoint-test.d.ts +37 -32
- package/dist/composites/webrtc-diagnostics/format.d.ts +3 -3
- package/dist/composites/webrtc-diagnostics/ice-candidates.d.ts +49 -49
- package/dist/composites/webrtc-diagnostics/nat-mapping.d.ts +36 -36
- package/dist/composites/webrtc-diagnostics/session-run.d.ts +108 -95
- package/dist/composites/webrtc-diagnostics/session-verdict.d.ts +29 -20
- package/dist/composites/widget-panel.d.ts +23 -23
- package/dist/composites/widget-slot.d.ts +35 -17
- package/dist/contexts/custom-field-renderers.d.ts +53 -17
- package/dist/contexts/device-context.d.ts +32 -12
- package/dist/contexts/device-quick-detail.d.ts +13 -4
- package/dist/contexts/player-overlays.d.ts +82 -42
- package/dist/contexts/recorded-playback.d.ts +40 -18
- package/dist/contexts/system-context.d.ts +28 -13
- package/dist/contexts/vod-playback.d.ts +39 -22
- package/dist/contexts/widget-registry.d.ts +139 -102
- package/dist/contexts/zone-editing.d.ts +69 -46
- package/dist/generated/system-hooks.d.ts +17 -1
- package/dist/hooks/index.d.ts +43 -43
- package/dist/hooks/turn-server-cache.d.ts +69 -69
- package/dist/hooks/use-capability-presence.d.ts +65 -28
- package/dist/hooks/use-cluster-nodes.d.ts +54 -27
- package/dist/hooks/use-device-autotrack.d.ts +7 -7
- package/dist/hooks/use-device-battery.d.ts +24 -11
- package/dist/hooks/use-device-cap-slice.d.ts +15 -15
- package/dist/hooks/use-device-capability.d.ts +61 -27
- package/dist/hooks/use-device-detections.d.ts +32 -32
- package/dist/hooks/use-device-features.d.ts +18 -18
- package/dist/hooks/use-device-list-page-size.d.ts +19 -6
- package/dist/hooks/use-device-network-link.d.ts +15 -7
- package/dist/hooks/use-device-proxy.d.ts +98 -92
- package/dist/hooks/use-device-snapshot.d.ts +23 -23
- package/dist/hooks/use-device-webrtc.d.ts +211 -205
- package/dist/hooks/use-devices.d.ts +9 -9
- package/dist/hooks/use-doorbell-events.d.ts +13 -13
- package/dist/hooks/use-event-stream.d.ts +6 -3
- package/dist/hooks/use-is-mobile.d.ts +5 -5
- package/dist/hooks/use-live-buffer.d.ts +5 -5
- package/dist/hooks/use-live-event.d.ts +1 -1
- package/dist/hooks/use-navigation.d.ts +20 -20
- package/dist/hooks/use-optimistic-slice.d.ts +13 -13
- package/dist/hooks/use-persisted-page-size.d.ts +10 -10
- package/dist/hooks/use-ptz.d.ts +108 -108
- package/dist/hooks/use-stationary-overlay.d.ts +37 -37
- package/dist/hooks/use-system-query.d.ts +33 -10
- package/dist/hooks/use-url-query.d.ts +3 -3
- package/dist/icons/index.d.ts +2 -2
- package/dist/icons/provider-icons.d.ts +2 -2
- package/dist/icons/status-icons.d.ts +2 -2
- package/dist/index.cjs +123 -69
- package/dist/index.d.ts +31 -27
- package/dist/index.js +123 -69
- package/dist/lib/cap-error.d.ts +18 -39
- package/dist/lib/cn.d.ts +1 -1
- package/dist/lib/fleet-query-defaults.d.ts +68 -34
- package/dist/lib/format-control-datetime.d.ts +16 -16
- package/dist/lib/format-duration.d.ts +12 -12
- package/dist/lib/format-last-seen.d.ts +5 -18
- package/dist/lib/format-numeric.d.ts +7 -7
- package/dist/lib/hub-mount.d.ts +8 -42
- package/dist/lib/index.d.ts +21 -21
- package/dist/lib/phase-config.d.ts +24 -11
- package/dist/lib/pipeline-mirror.d.ts +16 -16
- package/dist/lib/recorded-control-protocol.d.ts +41 -43
- package/dist/lib/resolve-sensor-display.d.ts +36 -20
- package/dist/lib/responsive.d.ts +54 -54
- package/dist/lib/scrub-controller.d.ts +75 -78
- package/dist/lib/shared-context.d.ts +27 -2
- package/dist/lib/tailwind-variants.d.ts +20 -20
- package/dist/primitives/badge.d.ts +5 -10
- package/dist/primitives/bottom-sheet.d.ts +7 -7
- package/dist/primitives/button.d.ts +5 -9
- package/dist/primitives/card.d.ts +4 -8
- package/dist/primitives/checkbox.d.ts +3 -4
- package/dist/primitives/collapsible-card.d.ts +23 -13
- package/dist/primitives/dialog.d.ts +33 -59
- package/dist/primitives/dropdown.d.ts +13 -13
- package/dist/primitives/floating-panel.d.ts +41 -20
- package/dist/primitives/icon-button.d.ts +8 -12
- package/dist/primitives/index.d.ts +22 -22
- package/dist/primitives/input.d.ts +6 -16
- package/dist/primitives/label.d.ts +3 -4
- package/dist/primitives/mobile-drawer.d.ts +8 -8
- package/dist/primitives/password-input.d.ts +18 -18
- package/dist/primitives/popover.d.ts +7 -7
- package/dist/primitives/scroll-area.d.ts +3 -4
- package/dist/primitives/select.d.ts +20 -20
- package/dist/primitives/separator.d.ts +4 -8
- package/dist/primitives/skeleton.d.ts +3 -4
- package/dist/primitives/switch.d.ts +6 -6
- package/dist/primitives/tabs.d.ts +26 -26
- package/dist/primitives/tooltip.d.ts +12 -12
- package/dist/theme/create-theme.d.ts +1 -1
- package/dist/theme/defaults.d.ts +1 -1
- package/dist/theme/index.d.ts +6 -6
- package/dist/theme/theme-provider.d.ts +8 -7
- package/dist/theme/theme-to-css.d.ts +1 -1
- package/dist/theme/types.d.ts +98 -100
- package/dist/theme/use-theme-mode.d.ts +1 -1
- package/dist/trpc-react.d.ts +23 -3
- package/dist/widgets/host-widgets.d.ts +4 -4
- package/package.json +8 -4
- package/src/tailwind/camstack-theme.css +11 -0
- package/dist/composites/unit-picker/UnitPicker.spec.d.ts +0 -1
|
@@ -1,133 +1,133 @@
|
|
|
1
|
-
import { ReactNode } from
|
|
2
|
-
import { UseDeviceProxyTrpc } from
|
|
3
|
-
import { DeviceItemDevice, DeviceItemParent } from
|
|
4
|
-
import { TableContext } from
|
|
5
|
-
import { MultiSelectOption } from
|
|
6
|
-
import { DeviceIntegrationResolution, DeviceIntegrationResolver } from
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
|
+
import type { UseDeviceProxyTrpc } from "../../hooks/use-device-proxy";
|
|
3
|
+
import type { DeviceItemDevice, DeviceItemParent } from "../device-item/helpers";
|
|
4
|
+
import { type TableContext } from "./columns";
|
|
5
|
+
import type { MultiSelectOption } from "./multi-select";
|
|
6
|
+
import type { DeviceIntegrationResolution, DeviceIntegrationResolver } from "./device-integration";
|
|
7
7
|
/** One chip of the integration filter. `id` is the INTEGRATION id
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
* (`IntegrationWithState.id`), matched against `integrationOf(device)` —
|
|
9
|
+
* never a device's `addonId` (a composed device is served by `composer` but
|
|
10
|
+
* belongs to the "Blocks" integration, D659). */
|
|
11
11
|
export interface DeviceListIntegrationOption {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
readonly id: string;
|
|
13
|
+
readonly name: string;
|
|
14
|
+
readonly icon?: ReactNode;
|
|
15
15
|
}
|
|
16
16
|
/** Kept as a source-compatible name for callers compiled against the old
|
|
17
|
-
|
|
17
|
+
* addon-keyed filter API. The values are integration ids now. */
|
|
18
18
|
export type DeviceListAddonOption = DeviceListIntegrationOption;
|
|
19
19
|
export type DeviceListIntegrationIconResolver = (device: DeviceItemDevice, integration: DeviceIntegrationResolution) => ReactNode | null;
|
|
20
20
|
export interface DeviceListDeviceProps {
|
|
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
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
21
|
+
/** Discriminant — omit (or 'devices') for the default registry-device list. */
|
|
22
|
+
readonly mode?: "devices";
|
|
23
|
+
/**
|
|
24
|
+
* Where this table is rendered — selects the visible column subset (table
|
|
25
|
+
* view only). Defaults to `'devices'` (all columns) so every existing
|
|
26
|
+
* call site renders unchanged.
|
|
27
|
+
*/
|
|
28
|
+
readonly context?: TableContext;
|
|
29
|
+
readonly devices: readonly DeviceItemDevice[];
|
|
30
|
+
readonly trpc: UseDeviceProxyTrpc;
|
|
31
|
+
/**
|
|
32
|
+
* Integration filter options + an optional TYPE-filter override.
|
|
33
|
+
*
|
|
34
|
+
* The type filter defaults to the EXHAUSTIVE device-type set
|
|
35
|
+
* (`allDeviceTypeFilterOptions`), so a newly added `DeviceType` appears
|
|
36
|
+
* automatically on every general list and nothing is ever missing. A
|
|
37
|
+
* surface that lists only a known subset (e.g. the export panel restricts
|
|
38
|
+
* to an exporter's supported kinds) may pass `typeOptions` to narrow the
|
|
39
|
+
* dropdown to that subset — built from the same shared meta so labels +
|
|
40
|
+
* icons stay identical.
|
|
41
|
+
*/
|
|
42
|
+
readonly filters?: {
|
|
43
|
+
/** Integration chips — ids are integration ids. Requires `integrationOf`. */
|
|
44
|
+
readonly integrations?: readonly DeviceListIntegrationOption[];
|
|
45
|
+
readonly typeOptions?: readonly MultiSelectOption[];
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* Which integration a row belongs to — build it with
|
|
49
|
+
* `deviceIntegrationResolver(integrations)`, the one rule the whole UI
|
|
50
|
+
* answers that question with. Drives the integration filter
|
|
51
|
+
* (`filters.integrations`, `forceIntegrationId`) and is handed to
|
|
52
|
+
* `resolveIntegrationIcon`. Omitted ⇒ every row is `unknown`, so an
|
|
53
|
+
* integration filter matches nothing.
|
|
54
|
+
*/
|
|
55
|
+
readonly integrationOf?: DeviceIntegrationResolver;
|
|
56
|
+
/** Pre-applied integration filter (an integration id) — hides the chip group. */
|
|
57
|
+
readonly forceIntegrationId?: string;
|
|
58
|
+
/** The badge beside a row's name, given the row and its resolved integration. */
|
|
59
|
+
readonly resolveIntegrationIcon?: DeviceListIntegrationIconResolver;
|
|
60
|
+
readonly resolveParent?: (parentId: number) => DeviceItemParent | null;
|
|
61
|
+
readonly onNavigate?: (deviceId: number) => void;
|
|
62
|
+
readonly pageSize?: {
|
|
63
|
+
readonly cards: number;
|
|
64
|
+
readonly table: number;
|
|
65
|
+
};
|
|
66
|
+
readonly urlScope?: "root" | "nested";
|
|
67
|
+
/** LocalStorage key prefix. Default 'devices' for root scope, 'integrations:nested' for nested. */
|
|
68
|
+
readonly lsKey?: string;
|
|
69
|
+
/**
|
|
70
|
+
* Optional trailing per-row control rendered beside each row's
|
|
71
|
+
* built-in actions (both card + table views, top-level rows only —
|
|
72
|
+
* accessory sub-rows are excluded). Threaded straight through to
|
|
73
|
+
* `<DeviceItem renderRowAction>`. Omitted ⇒ every current call site
|
|
74
|
+
* (Devices, IntegrationDetail, Integrations nested) renders unchanged.
|
|
75
|
+
* Used by `<DeviceExportPanel>` to surface a per-device Expose toggle.
|
|
76
|
+
*/
|
|
77
|
+
readonly renderRowAction?: (device: DeviceItemDevice) => ReactNode;
|
|
78
|
+
/**
|
|
79
|
+
* Built-in confirmed per-row DELETE — a first-class TABLE feature. When
|
|
80
|
+
* provided, every top-level table row renders a red trash button in the
|
|
81
|
+
* merged actions cell; clicking it opens the shared centered confirm
|
|
82
|
+
* dialog ("Delete device?") and calls `onDeleteDevice(device)` only on
|
|
83
|
+
* confirm. Accessory sub-rows are excluded (same gate as `renderRowAction`).
|
|
84
|
+
* Context gating is "consumer passes the handler or not" — omit it (default)
|
|
85
|
+
* and no trash renders, so existing call sites are unchanged. Cap-agnostic:
|
|
86
|
+
* delete is generic and never branches on the device's capabilities. The
|
|
87
|
+
* confirm is built in, so consumers must NOT add their own. Table-only for
|
|
88
|
+
* now (card delete is a follow-up).
|
|
89
|
+
*/
|
|
90
|
+
readonly onDeleteDevice?: (device: DeviceItemDevice) => void;
|
|
91
|
+
/**
|
|
92
|
+
* When `true`, renders a leading checkbox on each top-level row
|
|
93
|
+
* (accessory sub-rows are excluded — same gate as `renderRowAction`).
|
|
94
|
+
* Selection state may be controlled via `selectedIds`; when omitted
|
|
95
|
+
* the list maintains internal state.
|
|
96
|
+
*/
|
|
97
|
+
readonly selectable?: boolean;
|
|
98
|
+
/**
|
|
99
|
+
* Controlled set of selected device ids. Provide together with
|
|
100
|
+
* `onSelectionChange` for a fully controlled selection surface.
|
|
101
|
+
* Omit to let `<DeviceList>` manage internal state.
|
|
102
|
+
*/
|
|
103
|
+
readonly selectedIds?: ReadonlySet<number>;
|
|
104
|
+
/**
|
|
105
|
+
* Called on every toggle with the NEW full selection set.
|
|
106
|
+
* Invoked for both controlled and uncontrolled usage.
|
|
107
|
+
*/
|
|
108
|
+
readonly onSelectionChange?: (ids: ReadonlySet<number>) => void;
|
|
109
|
+
/**
|
|
110
|
+
* Opt into self-managed BATCH MODE. When provided, the list renders an
|
|
111
|
+
* "Select" activation button; batch mode is OFF by default (no
|
|
112
|
+
* checkboxes, no bulk toolbar). Activating it reveals the leading
|
|
113
|
+
* row checkboxes plus a responsive bulk-actions bar wired to these
|
|
114
|
+
* callbacks (full toolbar at `sm+`, a compact menu at L1). Selection
|
|
115
|
+
* state is managed internally for the duration of the activated
|
|
116
|
+
* session and cleared on exit. Mutually independent from the
|
|
117
|
+
* lower-level `selectable`/`selectedIds` controlled API.
|
|
118
|
+
*/
|
|
119
|
+
readonly batchActions?: DeviceListBatchActions;
|
|
120
120
|
}
|
|
121
121
|
/** Self-managed batch-mode bulk-action callbacks (see `batchActions`). */
|
|
122
122
|
export interface DeviceListBatchActions {
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
123
|
+
readonly remove: (input: {
|
|
124
|
+
deviceId: number;
|
|
125
|
+
}) => void;
|
|
126
|
+
readonly disable: (input: {
|
|
127
|
+
deviceId: number;
|
|
128
|
+
}) => void;
|
|
129
|
+
readonly enable: (input: {
|
|
130
|
+
deviceId: number;
|
|
131
|
+
}) => void;
|
|
132
132
|
}
|
|
133
133
|
export declare function DeviceModeList(props: DeviceListDeviceProps): ReactNode;
|
|
@@ -1,6 +1,17 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* <DeviceListEmptyState> — shown when the filtered device list is empty.
|
|
3
|
+
*
|
|
4
|
+
* Two variants:
|
|
5
|
+
* - `nofilter` — list is empty AND no filters applied. Operator
|
|
6
|
+
* hasn't added any devices yet (or the addon hasn't discovered any).
|
|
7
|
+
* - `filtered` — filters are applied but match nothing. Offer a
|
|
8
|
+
* reset link to clear filters.
|
|
9
|
+
* - `pending` — an integration filter could not judge the rows yet (the
|
|
10
|
+
* integrations query has not answered). Not an absence (D315).
|
|
11
|
+
*/
|
|
12
|
+
import { type ReactNode } from "react";
|
|
2
13
|
export interface EmptyStateProps {
|
|
3
|
-
|
|
4
|
-
|
|
14
|
+
readonly variant: "nofilter" | "filtered" | "pending";
|
|
15
|
+
readonly onClearFilters?: () => void;
|
|
5
16
|
}
|
|
6
17
|
export declare function DeviceListEmptyState({ variant, onClearFilters }: EmptyStateProps): ReactNode;
|
|
@@ -1,33 +1,46 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* <FilterChips> — top-row filter UI for DeviceList.
|
|
3
|
+
*
|
|
4
|
+
* Layout: [Type chips] [Integration multi-select] [Clear filters]
|
|
5
|
+
* (search input lives separately; this component only handles the
|
|
6
|
+
* chip-style selectors + the integration dropdown).
|
|
7
|
+
*
|
|
8
|
+
* Type is radio-like (clicking the active chip clears it). Integration
|
|
9
|
+
* is a compact MULTI-select dropdown — previously every integration
|
|
10
|
+
* spilled into the row as inline chips and only one could be active;
|
|
11
|
+
* now a single "Integration" button opens a checkbox menu so several
|
|
12
|
+
* integrations can be filtered at once without flooding the toolbar.
|
|
13
|
+
*/
|
|
14
|
+
import { type ReactNode } from "react";
|
|
15
|
+
import type { MultiSelectOption } from "./multi-select";
|
|
3
16
|
export interface FilterChipsAddonOption {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
17
|
+
readonly id: string;
|
|
18
|
+
readonly name: string;
|
|
19
|
+
readonly icon?: ReactNode;
|
|
7
20
|
}
|
|
8
21
|
export interface FilterChipsProps {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
22
|
+
/**
|
|
23
|
+
* Ready-made options for the shared multi-select type filter. Built once by
|
|
24
|
+
* the caller from the exhaustive device-type meta (`allDeviceTypeFilterOptions`)
|
|
25
|
+
* so the option set is complete + identical everywhere. Omit to hide the
|
|
26
|
+
* type filter entirely.
|
|
27
|
+
*/
|
|
28
|
+
readonly typeOptions?: readonly MultiSelectOption[];
|
|
29
|
+
readonly selectedTypes: readonly string[];
|
|
30
|
+
readonly onTypesChange: (types: readonly string[]) => void;
|
|
31
|
+
readonly addons?: readonly FilterChipsAddonOption[];
|
|
32
|
+
/** Currently-selected integration ids (multi-select). */
|
|
33
|
+
readonly selectedAddons: readonly string[];
|
|
34
|
+
readonly onAddonsChange: (addons: readonly string[]) => void;
|
|
35
|
+
/** When true, the addon group is hidden (used by Integrations expand-row inner DeviceList). */
|
|
36
|
+
readonly hideAddons?: boolean;
|
|
37
|
+
/**
|
|
38
|
+
* Free-text search, read ONLY to decide whether any filter is set. The input
|
|
39
|
+
* itself lives outside this component; a Clear that ignored it would leave
|
|
40
|
+
* the list filtered after the operator was told it had been cleared.
|
|
41
|
+
*/
|
|
42
|
+
readonly query?: string;
|
|
43
|
+
/** Clear every filter at once. Omit to hide the affordance entirely. */
|
|
44
|
+
readonly onClearFilters?: () => void;
|
|
32
45
|
}
|
|
33
|
-
export declare function FilterChips({ typeOptions, selectedTypes, onTypesChange, addons, selectedAddons, onAddonsChange, hideAddons, query, onClearFilters
|
|
46
|
+
export declare function FilterChips({ typeOptions, selectedTypes, onTypesChange, addons, selectedAddons, onAddonsChange, hideAddons, query, onClearFilters }: FilterChipsProps): ReactNode;
|
|
@@ -1,27 +1,27 @@
|
|
|
1
1
|
/**
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
2
|
+
* fuzzy-match — case and separator-insensitive text search helper.
|
|
3
|
+
*
|
|
4
|
+
* Normalization rule: lowercase + strip all runs of hyphens, underscores and
|
|
5
|
+
* whitespace entirely. This makes `Tapparella cucina` and `tapparella-cucina`
|
|
6
|
+
* both normalize to `tapparellacucina`, so a substring match succeeds in
|
|
7
|
+
* either direction.
|
|
8
|
+
*/
|
|
9
9
|
/**
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
10
|
+
* Strips hyphens, underscores and whitespace runs from `s` and lowercases it.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* normalizeForSearch('Tapparella cucina') // 'tapparellacucina'
|
|
14
|
+
* normalizeForSearch('tapparella-cucina') // 'tapparellacucina'
|
|
15
|
+
* normalizeForSearch('tapparella_cucina') // 'tapparellacucina'
|
|
16
|
+
*/
|
|
17
17
|
export declare function normalizeForSearch(s: string): string;
|
|
18
18
|
/**
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
19
|
+
* Returns `true` when the normalized form of `target` contains the normalized
|
|
20
|
+
* form of `query`. An empty query always matches.
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* fuzzyMatch('Tapparella cucina', 'tapparella-cucina') // true
|
|
24
|
+
* fuzzyMatch('tapparella cucina', 'Tapparella-Cucina') // true
|
|
25
|
+
* fuzzyMatch('xyz', 'tapparella-cucina') // false
|
|
26
|
+
*/
|
|
27
27
|
export declare function fuzzyMatch(query: string, target: string): boolean;
|
|
@@ -1,98 +1,98 @@
|
|
|
1
|
-
import { ReactNode } from
|
|
2
|
-
import { LucideIcon } from
|
|
3
|
-
import { MultiSelectOption } from
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
|
+
import { type LucideIcon } from "lucide-react";
|
|
3
|
+
import { type MultiSelectOption } from "./multi-select";
|
|
4
4
|
/**
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
5
|
+
* Generic-mode props — a paginated, searchable, render-prop list that reuses
|
|
6
|
+
* the same chrome (search box + <Pagination>) as the device list but over an
|
|
7
|
+
* arbitrary item type. Used by the HA adoption modal for discovered-device
|
|
8
|
+
* candidates; selection + per-row controls live in the caller's `renderItem`.
|
|
9
|
+
*/
|
|
10
10
|
/** One column of the generic-mode TABLE rendering. */
|
|
11
11
|
export interface DeviceListColumn<T> {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
12
|
+
readonly key: string;
|
|
13
|
+
readonly header: ReactNode;
|
|
14
|
+
readonly cell: (item: T) => ReactNode;
|
|
15
|
+
/** Extra classes on the `<th>` (width, responsive hiding, alignment). */
|
|
16
|
+
readonly headerClassName?: string;
|
|
17
|
+
/** Extra classes on the `<td>`. */
|
|
18
|
+
readonly cellClassName?: string;
|
|
19
19
|
}
|
|
20
20
|
export interface GenericPageSizeSelector {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
21
|
+
readonly options: readonly number[];
|
|
22
|
+
readonly defaultSize: number;
|
|
23
|
+
readonly storageKey: string | null;
|
|
24
24
|
}
|
|
25
25
|
export interface DeviceListGenericProps<T> {
|
|
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
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
26
|
+
readonly mode: "generic";
|
|
27
|
+
readonly items: readonly T[];
|
|
28
|
+
readonly getKey: (item: T) => string;
|
|
29
|
+
readonly getSearchText: (item: T) => string;
|
|
30
|
+
/**
|
|
31
|
+
* Row body. Provide EITHER `columns` (renders a table matching the device
|
|
32
|
+
* list's table styling) OR `renderItem` (a free-form row list). `columns`
|
|
33
|
+
* wins when both are set.
|
|
34
|
+
*/
|
|
35
|
+
readonly renderItem?: (item: T) => ReactNode;
|
|
36
|
+
/** Table columns — when set, the list renders as a bordered table. */
|
|
37
|
+
readonly columns?: readonly DeviceListColumn<T>[];
|
|
38
|
+
/** Full-width expansion row rendered under an item when `isExpanded` is true. */
|
|
39
|
+
readonly renderExpanded?: (item: T) => ReactNode;
|
|
40
|
+
readonly isExpanded?: (item: T) => boolean;
|
|
41
|
+
/** Per-row class (table `<tr>` or list wrapper) — e.g. selected/adopted state. */
|
|
42
|
+
readonly rowClassName?: (item: T) => string;
|
|
43
|
+
/** Click handler for a whole table row — when set, the `<tr>` becomes a
|
|
44
|
+
* clickable button (cursor + keyboard) that navigates/opens the item.
|
|
45
|
+
* Per-cell interactive controls must `stopPropagation` to avoid double-firing. */
|
|
46
|
+
readonly onRowClick?: (item: T) => void;
|
|
47
|
+
/**
|
|
48
|
+
* Optional type-filter projection. When provided, the list renders a compact
|
|
49
|
+
* MULTI-SELECT dropdown over the DISTINCT values present in `items` and keeps
|
|
50
|
+
* items matching ANY selected value (empty selection = no filter). Return
|
|
51
|
+
* `null` for items that carry no type. Omit to hide the filter entirely.
|
|
52
|
+
*/
|
|
53
|
+
readonly getFilterType?: (item: T) => string | null;
|
|
54
|
+
/**
|
|
55
|
+
* Enrich a raw filter value into a display `{ label, icon }` for the
|
|
56
|
+
* multi-select (e.g. via the device-type meta map). Defaults to the raw
|
|
57
|
+
* value as label, no icon. Ignored when `filterOptions` is supplied.
|
|
58
|
+
*/
|
|
59
|
+
readonly mapFilterOption?: (value: string) => {
|
|
60
|
+
readonly label: string;
|
|
61
|
+
readonly icon?: LucideIcon;
|
|
62
|
+
};
|
|
63
|
+
/**
|
|
64
|
+
* Ready-made, COMPLETE option set for the type filter. When supplied, it
|
|
65
|
+
* overrides the present-values-only set the list would otherwise derive from
|
|
66
|
+
* `items` — so e.g. the adoption modal shows every `DeviceType` (via
|
|
67
|
+
* `allDeviceTypeFilterOptions`), not just the types of the current
|
|
68
|
+
* candidates. `getFilterType` still selects each item's value for matching.
|
|
69
|
+
*/
|
|
70
|
+
readonly filterOptions?: readonly MultiSelectOption[];
|
|
71
|
+
/** Label for the type multi-select trigger. Default 'Type'. */
|
|
72
|
+
readonly filterLabel?: string;
|
|
73
|
+
/**
|
|
74
|
+
* Initial type-filter selection. Empty (default) = no filter. Used once at
|
|
75
|
+
* mount — later changes to this prop are ignored (local state owns it).
|
|
76
|
+
*/
|
|
77
|
+
readonly initialTypeFilters?: readonly string[];
|
|
78
|
+
readonly isLoading?: boolean;
|
|
79
|
+
readonly searchPlaceholder?: string;
|
|
80
|
+
readonly emptyLabel?: string;
|
|
81
|
+
/** Fixed rows per page when there is no `pageSizeSelector`. Default 100. */
|
|
82
|
+
readonly pageSize?: number;
|
|
83
|
+
/**
|
|
84
|
+
* Let the viewer pick the page size: a "Per page" control under the table,
|
|
85
|
+
* remembered per viewer under `storageKey` (null = not remembered). Options
|
|
86
|
+
* may include `PAGE_SIZE_ALL`. When set, `pageSize` is ignored.
|
|
87
|
+
*/
|
|
88
|
+
readonly pageSizeSelector?: GenericPageSizeSelector;
|
|
89
|
+
/** Optional control rendered next to the search box (e.g. a Refresh button). */
|
|
90
|
+
readonly toolbar?: ReactNode;
|
|
91
91
|
}
|
|
92
92
|
/**
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
93
|
+
* Generic render-prop list: search + pagination chrome shared with the device
|
|
94
|
+
* list, over an arbitrary item type. Local (non-URL) state — intended for
|
|
95
|
+
* modal/ephemeral surfaces. Selection + per-row controls are the caller's, via
|
|
96
|
+
* `renderItem`.
|
|
97
|
+
*/
|
|
98
98
|
export declare function GenericModeList<T>(props: DeviceListGenericProps<T>): ReactNode;
|