@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.
Files changed (375) hide show
  1. package/dist/composites/accelerator-label.d.ts +9 -9
  2. package/dist/composites/adaptive-downlink.d.ts +141 -143
  3. package/dist/composites/addon-global-settings-form.d.ts +73 -60
  4. package/dist/composites/addon-page-props.d.ts +34 -10
  5. package/dist/composites/agent-step-editor.d.ts +48 -47
  6. package/dist/composites/app-shell/app-shell.d.ts +17 -17
  7. package/dist/composites/app-shell/index.d.ts +3 -3
  8. package/dist/composites/app-shell/sidebar-item.d.ts +9 -8
  9. package/dist/composites/app-shell/sidebar.d.ts +10 -10
  10. package/dist/composites/audio-classification-list.d.ts +16 -15
  11. package/dist/composites/audio-level-waveform.d.ts +31 -30
  12. package/dist/composites/audio-waveform.d.ts +18 -17
  13. package/dist/composites/battery-badge.d.ts +27 -13
  14. package/dist/composites/breadcrumb.d.ts +21 -21
  15. package/dist/composites/camera-stream-player.d.ts +309 -309
  16. package/dist/composites/cap-settings/AutotrackSection.d.ts +19 -2
  17. package/dist/composites/cap-settings/CameraGridLayoutEditor.d.ts +24 -2
  18. package/dist/composites/cap-settings/ConsumablesPanel.d.ts +21 -2
  19. package/dist/composites/cap-settings/CoverageTrack.d.ts +21 -20
  20. package/dist/composites/cap-settings/EventBucketStrip.d.ts +21 -20
  21. package/dist/composites/cap-settings/EventHeatmap.d.ts +8 -7
  22. package/dist/composites/cap-settings/HomePresetPicker.d.ts +2 -2
  23. package/dist/composites/cap-settings/MaskShapeCanvas.d.ts +143 -41
  24. package/dist/composites/cap-settings/MotionZonesSettings.d.ts +41 -2
  25. package/dist/composites/cap-settings/NavigationPanel.d.ts +14 -2
  26. package/dist/composites/cap-settings/PrivacyMaskSettings.d.ts +3 -2
  27. package/dist/composites/cap-settings/PtzPanel.d.ts +15 -2
  28. package/dist/composites/cap-settings/RecordingBandsEditor.d.ts +33 -32
  29. package/dist/composites/cap-settings/RecordingPanel.d.ts +3 -2
  30. package/dist/composites/cap-settings/RecordingSettings.d.ts +11 -10
  31. package/dist/composites/cap-settings/RecordingTimeline.d.ts +3 -2
  32. package/dist/composites/cap-settings/SceneMonitorEditor.d.ts +3 -51
  33. package/dist/composites/cap-settings/SceneReferenceGallery.d.ts +62 -23
  34. package/dist/composites/cap-settings/SceneSettingsForm.d.ts +52 -16
  35. package/dist/composites/cap-settings/TimelineControls.d.ts +21 -20
  36. package/dist/composites/cap-settings/camera-grid-layout.d.ts +95 -95
  37. package/dist/composites/cap-settings/event-thumb.d.ts +9 -8
  38. package/dist/composites/cap-settings/index.d.ts +20 -20
  39. package/dist/composites/cap-settings/privacy-mask-audio.d.ts +47 -47
  40. package/dist/composites/cap-settings/recording-config-form.d.ts +25 -25
  41. package/dist/composites/cap-settings/recording-spans.d.ts +14 -14
  42. package/dist/composites/cap-settings/recording-timeline-model.d.ts +57 -57
  43. package/dist/composites/cap-settings/scene-monitor-copy.d.ts +58 -49
  44. package/dist/composites/client-network-sample.d.ts +41 -41
  45. package/dist/composites/clips/ClipBandBar.d.ts +44 -14
  46. package/dist/composites/clips/ClipPanel.d.ts +30 -6
  47. package/dist/composites/clips/ClipTile.d.ts +26 -5
  48. package/dist/composites/clips/ClipsSection.d.ts +107 -2
  49. package/dist/composites/clips/clip-band.d.ts +72 -38
  50. package/dist/composites/clips/clip-day-window.d.ts +7 -30
  51. package/dist/composites/clips/clip-source-state.d.ts +55 -26
  52. package/dist/composites/clips/clip-still-retry.d.ts +39 -39
  53. package/dist/composites/clips/clip-thumbnail-fetch.d.ts +9 -9
  54. package/dist/composites/clips/clip-tile-media.d.ts +64 -32
  55. package/dist/composites/clips/clip-view-state.d.ts +76 -46
  56. package/dist/composites/code-block.d.ts +5 -4
  57. package/dist/composites/config-form-builder.d.ts +14 -13
  58. package/dist/composites/config-form-field.d.ts +63 -62
  59. package/dist/composites/config-icon-field.d.ts +10 -9
  60. package/dist/composites/config-secret-field.d.ts +51 -27
  61. package/dist/composites/confirm-action-button.d.ts +52 -39
  62. package/dist/composites/confirm-dialog.d.ts +110 -48
  63. package/dist/composites/copy-button.d.ts +25 -19
  64. package/dist/composites/data-table/data-table-header.d.ts +8 -7
  65. package/dist/composites/data-table/data-table-pagination.d.ts +7 -6
  66. package/dist/composites/data-table/data-table-row.d.ts +8 -7
  67. package/dist/composites/data-table/data-table.d.ts +3 -2
  68. package/dist/composites/data-table/index.d.ts +2 -2
  69. package/dist/composites/data-table/types.d.ts +29 -29
  70. package/dist/composites/data-table-filter-bar.d.ts +30 -29
  71. package/dist/composites/data-table-filter.d.ts +34 -34
  72. package/dist/composites/data-table-layout.d.ts +24 -24
  73. package/dist/composites/data-table-pager.d.ts +5 -5
  74. package/dist/composites/data-table-pagination.d.ts +23 -23
  75. package/dist/composites/data-table-selection.d.ts +10 -10
  76. package/dist/composites/data-table.d.ts +167 -118
  77. package/dist/composites/detection-canvas.d.ts +34 -25
  78. package/dist/composites/detection-colors.d.ts +9 -9
  79. package/dist/composites/detection-overlay.d.ts +33 -32
  80. package/dist/composites/detection-result-tree.d.ts +22 -9
  81. package/dist/composites/dev-shell.d.ts +15 -14
  82. package/dist/composites/device-activity-panel.d.ts +37 -31
  83. package/dist/composites/device-card.d.ts +32 -32
  84. package/dist/composites/device-controls/ac-panel.d.ts +2 -2
  85. package/dist/composites/device-controls/alarm-hero-card.d.ts +42 -42
  86. package/dist/composites/device-controls/atoms.d.ts +50 -50
  87. package/dist/composites/device-controls/brightness-panel.d.ts +3 -3
  88. package/dist/composites/device-controls/button-control.d.ts +14 -14
  89. package/dist/composites/device-controls/climate-panel.d.ts +12 -12
  90. package/dist/composites/device-controls/container-primary-hero.d.ts +33 -16
  91. package/dist/composites/device-controls/container-primary.d.ts +68 -39
  92. package/dist/composites/device-controls/control-panel.d.ts +4 -4
  93. package/dist/composites/device-controls/control-registry.d.ts +81 -70
  94. package/dist/composites/device-controls/cover-hero-card.d.ts +26 -26
  95. package/dist/composites/device-controls/cover-inline.d.ts +20 -20
  96. package/dist/composites/device-controls/cover-panel.d.ts +2 -2
  97. package/dist/composites/device-controls/dummy-hero-card.d.ts +2 -2
  98. package/dist/composites/device-controls/fan-hero-card.d.ts +20 -20
  99. package/dist/composites/device-controls/fan-panel.d.ts +3 -3
  100. package/dist/composites/device-controls/humidifier-control.d.ts +46 -29
  101. package/dist/composites/device-controls/image-control.d.ts +41 -27
  102. package/dist/composites/device-controls/index.d.ts +34 -34
  103. package/dist/composites/device-controls/lawn-mower-control.d.ts +30 -16
  104. package/dist/composites/device-controls/light-hero-card.d.ts +15 -15
  105. package/dist/composites/device-controls/lock-hero-card.d.ts +14 -14
  106. package/dist/composites/device-controls/lock-panel.d.ts +3 -3
  107. package/dist/composites/device-controls/media-player-hero-card.d.ts +16 -16
  108. package/dist/composites/device-controls/media-player-panel.d.ts +7 -7
  109. package/dist/composites/device-controls/offline-badge.d.ts +23 -8
  110. package/dist/composites/device-controls/panel-controls.d.ts +39 -20
  111. package/dist/composites/device-controls/pet-feeder-panel.d.ts +27 -9
  112. package/dist/composites/device-controls/popover-row-action.d.ts +18 -6
  113. package/dist/composites/device-controls/primary-child-picker.d.ts +31 -15
  114. package/dist/composites/device-controls/primary-child.d.ts +14 -25
  115. package/dist/composites/device-controls/radial-gauge.d.ts +17 -17
  116. package/dist/composites/device-controls/script-automation-controls.d.ts +9 -9
  117. package/dist/composites/device-controls/sensor-hero-card.d.ts +26 -8
  118. package/dist/composites/device-controls/sensor-inline-control.d.ts +21 -9
  119. package/dist/composites/device-controls/sensor-value-atom.d.ts +97 -76
  120. package/dist/composites/device-controls/switch-hero-card.d.ts +11 -11
  121. package/dist/composites/device-controls/switch-panel.d.ts +2 -2
  122. package/dist/composites/device-controls/tap-toggle.d.ts +13 -13
  123. package/dist/composites/device-controls/thermostat-hero-card.d.ts +16 -16
  124. package/dist/composites/device-controls/types.d.ts +11 -11
  125. package/dist/composites/device-controls/update-control.d.ts +20 -7
  126. package/dist/composites/device-controls/vacuum-control.d.ts +41 -25
  127. package/dist/composites/device-controls/valve-control.d.ts +51 -35
  128. package/dist/composites/device-controls/water-heater-control.d.ts +48 -31
  129. package/dist/composites/device-controls/weather-control.d.ts +46 -28
  130. package/dist/composites/device-export-panel.d.ts +34 -34
  131. package/dist/composites/device-grid.d.ts +10 -10
  132. package/dist/composites/device-item/actions.d.ts +40 -18
  133. package/dist/composites/device-item/admin-link-quick-action.d.ts +66 -26
  134. package/dist/composites/device-item/child-layout.d.ts +43 -26
  135. package/dist/composites/device-item/child-section-accordion.d.ts +20 -6
  136. package/dist/composites/device-item/children-accordion.d.ts +11 -11
  137. package/dist/composites/device-item/container-children-context.d.ts +28 -11
  138. package/dist/composites/device-item/device-delete-action.d.ts +23 -5
  139. package/dist/composites/device-item/features.d.ts +33 -15
  140. package/dist/composites/device-item/header.d.ts +53 -31
  141. package/dist/composites/device-item/helpers.d.ts +291 -274
  142. package/dist/composites/device-item/index.d.ts +18 -9
  143. package/dist/composites/device-item/preview.d.ts +41 -21
  144. package/dist/composites/device-item/quick-detail-action.d.ts +4 -4
  145. package/dist/composites/device-item/reboot-quick-action.d.ts +28 -7
  146. package/dist/composites/device-item/role-display-defaults-context.d.ts +28 -12
  147. package/dist/composites/device-item/status-dot.d.ts +24 -6
  148. package/dist/composites/device-list/batch-actions-bar.d.ts +23 -12
  149. package/dist/composites/device-list/batch-toolbar.d.ts +13 -13
  150. package/dist/composites/device-list/columns.d.ts +108 -108
  151. package/dist/composites/device-list/device-integration.d.ts +48 -58
  152. package/dist/composites/device-list/device-mode.d.ts +121 -121
  153. package/dist/composites/device-list/empty-state.d.ts +14 -3
  154. package/dist/composites/device-list/filter-chips.d.ts +42 -29
  155. package/dist/composites/device-list/fuzzy-match.d.ts +22 -22
  156. package/dist/composites/device-list/generic-mode.d.ts +88 -88
  157. package/dist/composites/device-list/group.d.ts +62 -35
  158. package/dist/composites/device-list/hardware-cell.d.ts +14 -3
  159. package/dist/composites/device-list/hardware.d.ts +29 -11
  160. package/dist/composites/device-list/icon-action.d.ts +27 -15
  161. package/dist/composites/device-list/index.d.ts +46 -23
  162. package/dist/composites/device-list/multi-select.d.ts +17 -17
  163. package/dist/composites/device-list/page-size-select.d.ts +13 -7
  164. package/dist/composites/device-list/pagination.d.ts +19 -12
  165. package/dist/composites/device-list/sort.d.ts +28 -15
  166. package/dist/composites/device-list/sortable-header.d.ts +20 -7
  167. package/dist/composites/device-list/table-layout.d.ts +44 -44
  168. package/dist/composites/device-list/type-filter.d.ts +16 -16
  169. package/dist/composites/device-list/url-state.d.ts +35 -35
  170. package/dist/composites/device-meta.d.ts +43 -43
  171. package/dist/composites/device-picker/DevicePicker.d.ts +72 -33
  172. package/dist/composites/device-picker/SelectedChip.d.ts +10 -9
  173. package/dist/composites/device-picker/device-filter-bar.d.ts +19 -18
  174. package/dist/composites/device-picker/device-fleet-view.d.ts +11 -3
  175. package/dist/composites/device-picker/device-parent.d.ts +27 -27
  176. package/dist/composites/device-picker/device-picker-grouping.d.ts +3 -3
  177. package/dist/composites/device-picker/device-picker-model.d.ts +140 -140
  178. package/dist/composites/device-picker/device-selection-rows.d.ts +31 -24
  179. package/dist/composites/device-picker/device-selection.d.ts +43 -43
  180. package/dist/composites/device-picker/index.d.ts +9 -9
  181. package/dist/composites/device-select-field.d.ts +17 -16
  182. package/dist/composites/device-select-filter.d.ts +78 -78
  183. package/dist/composites/device-selector-picker.d.ts +25 -25
  184. package/dist/composites/device-step-matrix.d.ts +54 -28
  185. package/dist/composites/discovery-panel.d.ts +22 -22
  186. package/dist/composites/doorbell-recent-panel.d.ts +9 -8
  187. package/dist/composites/empty-state.d.ts +8 -8
  188. package/dist/composites/error-box.d.ts +32 -17
  189. package/dist/composites/event-kind-visuals.d.ts +29 -18
  190. package/dist/composites/event-stream.d.ts +59 -42
  191. package/dist/composites/extensions/AssociationSlotCard.d.ts +45 -24
  192. package/dist/composites/extensions/ExtensionsPanel.d.ts +41 -18
  193. package/dist/composites/extensions/extensions-view-state.d.ts +71 -53
  194. package/dist/composites/filter-bar.d.ts +22 -21
  195. package/dist/composites/form-field.d.ts +9 -9
  196. package/dist/composites/format-state-value.d.ts +23 -51
  197. package/dist/composites/grouped-model-selector.d.ts +7 -6
  198. package/dist/composites/hls-quality.d.ts +26 -26
  199. package/dist/composites/hls-video.d.ts +62 -39
  200. package/dist/composites/hover-zoom-image.d.ts +35 -16
  201. package/dist/composites/icon-picker.d.ts +86 -50
  202. package/dist/composites/image-selector.d.ts +21 -20
  203. package/dist/composites/index.d.ts +204 -204
  204. package/dist/composites/inference-config-selector.d.ts +36 -35
  205. package/dist/composites/kebab-menu.d.ts +53 -35
  206. package/dist/composites/key-value-list.d.ts +14 -14
  207. package/dist/composites/log-stream-scroll.d.ts +24 -24
  208. package/dist/composites/log-stream.d.ts +81 -70
  209. package/dist/composites/login-form.d.ts +7 -6
  210. package/dist/composites/model-bound-slider.d.ts +46 -26
  211. package/dist/composites/model-picker.d.ts +20 -19
  212. package/dist/composites/mount-addon-page.d.ts +12 -12
  213. package/dist/composites/network-link-badge.d.ts +7 -6
  214. package/dist/composites/node-picker.d.ts +14 -13
  215. package/dist/composites/notification-targets-field.d.ts +76 -58
  216. package/dist/composites/notification-targets-options.d.ts +9 -6
  217. package/dist/composites/option-select/OptionSelect.d.ts +23 -22
  218. package/dist/composites/option-select/index.d.ts +4 -4
  219. package/dist/composites/option-select/option-select-model.d.ts +35 -35
  220. package/dist/composites/page-header.d.ts +6 -6
  221. package/dist/composites/peer-connection-config.d.ts +9 -9
  222. package/dist/composites/phase-icon.d.ts +10 -3
  223. package/dist/composites/pipeline-builder.d.ts +21 -13
  224. package/dist/composites/pipeline-matrix-shared.d.ts +159 -150
  225. package/dist/composites/pipeline-runtime-selector.d.ts +12 -11
  226. package/dist/composites/pipeline-step.d.ts +39 -31
  227. package/dist/composites/placeholder-field/PlaceholderChipField.d.ts +23 -22
  228. package/dist/composites/placeholder-field/index.d.ts +1 -1
  229. package/dist/composites/provider-badge.d.ts +6 -5
  230. package/dist/composites/ptz-overlay.d.ts +38 -18
  231. package/dist/composites/qr-code.d.ts +24 -10
  232. package/dist/composites/reconnect-schedule.d.ts +22 -22
  233. package/dist/composites/resolve-step-default-model.d.ts +94 -94
  234. package/dist/composites/response-log.d.ts +7 -6
  235. package/dist/composites/root-model-source.d.ts +21 -10
  236. package/dist/composites/scope-picker.d.ts +49 -25
  237. package/dist/composites/section-card.d.ts +19 -11
  238. package/dist/composites/setting-row.d.ts +39 -21
  239. package/dist/composites/snapshot-button.d.ts +23 -19
  240. package/dist/composites/sort-header-button.d.ts +25 -8
  241. package/dist/composites/stat-card.d.ts +20 -8
  242. package/dist/composites/state-values-stream.d.ts +49 -24
  243. package/dist/composites/status-badge.d.ts +10 -8
  244. package/dist/composites/step-inspector/gate-control.d.ts +13 -12
  245. package/dist/composites/step-inspector/index.d.ts +8 -8
  246. package/dist/composites/step-inspector/layered-settings-form.d.ts +41 -30
  247. package/dist/composites/step-inspector/segmented-choice.d.ts +8 -7
  248. package/dist/composites/step-inspector/setting-values.d.ts +13 -8
  249. package/dist/composites/step-inspector/step-detail-dock.d.ts +39 -23
  250. package/dist/composites/step-inspector/step-inspector-panel.d.ts +34 -28
  251. package/dist/composites/step-inspector/step-model-row.d.ts +29 -24
  252. package/dist/composites/step-inspector/step-search.d.ts +11 -11
  253. package/dist/composites/step-timings.d.ts +7 -6
  254. package/dist/composites/step-tree.d.ts +17 -12
  255. package/dist/composites/stream-broker-selector.d.ts +29 -8
  256. package/dist/composites/stream-debug/stream-debug-overlay.d.ts +40 -40
  257. package/dist/composites/stream-debug/webrtc-debug-stats.d.ts +144 -129
  258. package/dist/composites/stream-panel.d.ts +212 -201
  259. package/dist/composites/table-sort.d.ts +61 -61
  260. package/dist/composites/timezone-selector.d.ts +15 -13
  261. package/dist/composites/training/send-frame-to-training.d.ts +5 -4
  262. package/dist/composites/training/training-collection-picker.d.ts +4 -3
  263. package/dist/composites/training/training-refusal-text.d.ts +6 -6
  264. package/dist/composites/unit-picker/UnitPicker.d.ts +19 -14
  265. package/dist/composites/unit-picker/index.d.ts +1 -1
  266. package/dist/composites/use-data-table-filter.d.ts +19 -19
  267. package/dist/composites/version-badge.d.ts +19 -18
  268. package/dist/composites/webrtc-diagnostics/EndpointTestCard.d.ts +7 -7
  269. package/dist/composites/webrtc-diagnostics/HubSessionTestCard.d.ts +14 -14
  270. package/dist/composites/webrtc-diagnostics/RunReport.d.ts +10 -5
  271. package/dist/composites/webrtc-diagnostics/endpoint-probe.d.ts +41 -21
  272. package/dist/composites/webrtc-diagnostics/endpoint-test.d.ts +37 -32
  273. package/dist/composites/webrtc-diagnostics/format.d.ts +3 -3
  274. package/dist/composites/webrtc-diagnostics/ice-candidates.d.ts +49 -49
  275. package/dist/composites/webrtc-diagnostics/nat-mapping.d.ts +36 -36
  276. package/dist/composites/webrtc-diagnostics/session-run.d.ts +108 -95
  277. package/dist/composites/webrtc-diagnostics/session-verdict.d.ts +29 -20
  278. package/dist/composites/widget-panel.d.ts +23 -23
  279. package/dist/composites/widget-slot.d.ts +35 -17
  280. package/dist/contexts/custom-field-renderers.d.ts +53 -17
  281. package/dist/contexts/device-context.d.ts +32 -12
  282. package/dist/contexts/device-quick-detail.d.ts +13 -4
  283. package/dist/contexts/player-overlays.d.ts +82 -42
  284. package/dist/contexts/recorded-playback.d.ts +40 -18
  285. package/dist/contexts/system-context.d.ts +28 -13
  286. package/dist/contexts/vod-playback.d.ts +39 -22
  287. package/dist/contexts/widget-registry.d.ts +139 -102
  288. package/dist/contexts/zone-editing.d.ts +69 -46
  289. package/dist/generated/system-hooks.d.ts +17 -1
  290. package/dist/hooks/index.d.ts +43 -43
  291. package/dist/hooks/turn-server-cache.d.ts +69 -69
  292. package/dist/hooks/use-capability-presence.d.ts +65 -28
  293. package/dist/hooks/use-cluster-nodes.d.ts +54 -27
  294. package/dist/hooks/use-device-autotrack.d.ts +7 -7
  295. package/dist/hooks/use-device-battery.d.ts +24 -11
  296. package/dist/hooks/use-device-cap-slice.d.ts +15 -15
  297. package/dist/hooks/use-device-capability.d.ts +61 -27
  298. package/dist/hooks/use-device-detections.d.ts +32 -32
  299. package/dist/hooks/use-device-features.d.ts +18 -18
  300. package/dist/hooks/use-device-list-page-size.d.ts +19 -6
  301. package/dist/hooks/use-device-network-link.d.ts +15 -7
  302. package/dist/hooks/use-device-proxy.d.ts +98 -92
  303. package/dist/hooks/use-device-snapshot.d.ts +23 -23
  304. package/dist/hooks/use-device-webrtc.d.ts +211 -205
  305. package/dist/hooks/use-devices.d.ts +9 -9
  306. package/dist/hooks/use-doorbell-events.d.ts +13 -13
  307. package/dist/hooks/use-event-stream.d.ts +6 -3
  308. package/dist/hooks/use-is-mobile.d.ts +5 -5
  309. package/dist/hooks/use-live-buffer.d.ts +5 -5
  310. package/dist/hooks/use-live-event.d.ts +1 -1
  311. package/dist/hooks/use-navigation.d.ts +20 -20
  312. package/dist/hooks/use-optimistic-slice.d.ts +13 -13
  313. package/dist/hooks/use-persisted-page-size.d.ts +10 -10
  314. package/dist/hooks/use-ptz.d.ts +108 -108
  315. package/dist/hooks/use-stationary-overlay.d.ts +37 -37
  316. package/dist/hooks/use-system-query.d.ts +33 -10
  317. package/dist/hooks/use-url-query.d.ts +3 -3
  318. package/dist/icons/index.d.ts +2 -2
  319. package/dist/icons/provider-icons.d.ts +2 -2
  320. package/dist/icons/status-icons.d.ts +2 -2
  321. package/dist/index.cjs +123 -69
  322. package/dist/index.d.ts +31 -27
  323. package/dist/index.js +123 -69
  324. package/dist/lib/cap-error.d.ts +18 -39
  325. package/dist/lib/cn.d.ts +1 -1
  326. package/dist/lib/fleet-query-defaults.d.ts +68 -34
  327. package/dist/lib/format-control-datetime.d.ts +16 -16
  328. package/dist/lib/format-duration.d.ts +12 -12
  329. package/dist/lib/format-last-seen.d.ts +5 -18
  330. package/dist/lib/format-numeric.d.ts +7 -7
  331. package/dist/lib/hub-mount.d.ts +8 -42
  332. package/dist/lib/index.d.ts +21 -21
  333. package/dist/lib/phase-config.d.ts +24 -11
  334. package/dist/lib/pipeline-mirror.d.ts +16 -16
  335. package/dist/lib/recorded-control-protocol.d.ts +41 -43
  336. package/dist/lib/resolve-sensor-display.d.ts +36 -20
  337. package/dist/lib/responsive.d.ts +54 -54
  338. package/dist/lib/scrub-controller.d.ts +75 -78
  339. package/dist/lib/shared-context.d.ts +27 -2
  340. package/dist/lib/tailwind-variants.d.ts +20 -20
  341. package/dist/primitives/badge.d.ts +5 -10
  342. package/dist/primitives/bottom-sheet.d.ts +7 -7
  343. package/dist/primitives/button.d.ts +5 -9
  344. package/dist/primitives/card.d.ts +4 -8
  345. package/dist/primitives/checkbox.d.ts +3 -4
  346. package/dist/primitives/collapsible-card.d.ts +23 -13
  347. package/dist/primitives/dialog.d.ts +33 -59
  348. package/dist/primitives/dropdown.d.ts +13 -13
  349. package/dist/primitives/floating-panel.d.ts +41 -20
  350. package/dist/primitives/icon-button.d.ts +8 -12
  351. package/dist/primitives/index.d.ts +22 -22
  352. package/dist/primitives/input.d.ts +6 -16
  353. package/dist/primitives/label.d.ts +3 -4
  354. package/dist/primitives/mobile-drawer.d.ts +8 -8
  355. package/dist/primitives/password-input.d.ts +18 -18
  356. package/dist/primitives/popover.d.ts +7 -7
  357. package/dist/primitives/scroll-area.d.ts +3 -4
  358. package/dist/primitives/select.d.ts +20 -20
  359. package/dist/primitives/separator.d.ts +4 -8
  360. package/dist/primitives/skeleton.d.ts +3 -4
  361. package/dist/primitives/switch.d.ts +6 -6
  362. package/dist/primitives/tabs.d.ts +26 -26
  363. package/dist/primitives/tooltip.d.ts +12 -12
  364. package/dist/theme/create-theme.d.ts +1 -1
  365. package/dist/theme/defaults.d.ts +1 -1
  366. package/dist/theme/index.d.ts +6 -6
  367. package/dist/theme/theme-provider.d.ts +8 -7
  368. package/dist/theme/theme-to-css.d.ts +1 -1
  369. package/dist/theme/types.d.ts +98 -100
  370. package/dist/theme/use-theme-mode.d.ts +1 -1
  371. package/dist/trpc-react.d.ts +23 -3
  372. package/dist/widgets/host-widgets.d.ts +4 -4
  373. package/package.json +8 -4
  374. package/src/tailwind/camstack-theme.css +11 -0
  375. package/dist/composites/unit-picker/UnitPicker.spec.d.ts +0 -1
@@ -1,305 +1,322 @@
1
- import { ChildLayout, DeviceDisplayOverride, RoleDisplayDefault, SourceInfo } from '@camstack/types';
2
- import { LucideIcon } from 'lucide-react';
3
- import { ReactNode } from 'react';
4
- import { UseDeviceProxyTrpc } from '../../hooks/use-device-proxy';
5
1
  /**
6
- * Mirror of the canonical `DeviceInfo` wire shape (see
7
- * `packages/types/src/capabilities/device-manager.cap.ts`). Every
8
- * `deviceManager.listAll` / `getDevice` / `getChildren` row is
9
- * already this exact shape — call sites pass the raw row through
10
- * without remapping. Lives here as a structural type (not an
11
- * import) so this composite stays decoupled from `@camstack/types`.
12
- */
2
+ * Shared types + helpers for the DeviceItem composite. Lives outside
3
+ * the orchestrator file so every sub-component can import without
4
+ * cycles.
5
+ *
6
+ * - `DeviceItemDevice` / `DeviceItemParent` / `DeviceItemKind` —
7
+ * wire-shape mirrors of the `DeviceInfo` row.
8
+ * - `DeviceItemVariant` + `VariantDefaults` + `DEFAULTS` +
9
+ * `resolveFlags` — the variant→flags resolution pipeline.
10
+ * - `deviceLeadIcon` — icon resolution for the row's lead icon
11
+ * (delegated to the exhaustive `device-meta` maps).
12
+ * - `FEATURE_ICON_MAP` / `FEATURE_LABEL_MAP` — for the features
13
+ * popover (NEW in Phase 1).
14
+ * - Capability gates: `maySupportSwitch`, `isAccessoryChild`,
15
+ * `hasMotionTriggerFeature`.
16
+ * - `shortStableId` — display-token for stableId tail.
17
+ */
18
+ import { type ChildLayout, type DeviceDisplayOverride, type RoleDisplayDefault, type SourceInfo } from "@camstack/types";
19
+ import type { LucideIcon } from "lucide-react";
20
+ import type { ReactNode } from "react";
21
+ import type { UseDeviceProxyTrpc } from "../../hooks/use-device-proxy";
22
+ /**
23
+ * Mirror of the canonical `DeviceInfo` wire shape (see
24
+ * `packages/types/src/capabilities/device-manager.cap.ts`). Every
25
+ * `deviceManager.listAll` / `getDevice` / `getChildren` row is
26
+ * already this exact shape — call sites pass the raw row through
27
+ * without remapping. Lives here as a structural type (not an
28
+ * import) so this composite stays decoupled from `@camstack/types`.
29
+ */
13
30
  export interface DeviceItemDevice {
14
- readonly id: number;
15
- readonly stableId: string;
16
- readonly addonId: string;
17
- readonly type: string;
18
- readonly name: string;
19
- readonly online: boolean;
20
- /** Soft-disable flag — `true` dims the row + skips live fetches.
21
- * Matches `DeviceInfo.disabled` so the wire row passes through. */
22
- readonly disabled: boolean;
23
- readonly parentDeviceId: number | null;
24
- /** The integration that CREATED this device — may differ from `addonId`,
25
- * the addon that owns and SERVES it (e.g. a composed device is created
26
- * under the "Blocks" integration but served by the `composer` addon).
27
- * Mirrors `DeviceInfo.integrationId` so the wire row passes through. */
28
- readonly integrationId?: string | null;
29
- /** Optional `DeviceRole` string. Present ⇒ this is an accessory. */
30
- readonly role?: string | null;
31
- /** DeviceFeature strings — gates BatteryBadge etc. */
32
- readonly features?: readonly string[];
33
- /** True for ICameraDevice instances — gates snapshot popover. */
34
- readonly isCamera?: boolean;
35
- /** Upstream-system identity (dispatch key + system tag + optional uniqueId).
36
- * Flows from `DeviceInfo.sourceInfo` via structural cast / parse;
37
- * optional so rows from providers that pre-date SourceInfo still work.
38
- * Live rendering hints (unit, precision) come from the cap STATUS SLICE for
39
- * generic numeric-sensor, or canonical constants in ROLE_DESCRIPTOR for typed
40
- * roles; an operator's per-device customization rides `display` (below). */
41
- readonly sourceInfo?: SourceInfo;
42
- /** Operator-authored per-device display override (icon/label/unit/precision/
43
- * hidden). Mirrors `DeviceInfo.display` so the wire row passes through. The
44
- * renderers resolve it via `resolveSensorDisplay` (unit/precision, render-time
45
- * conversion) + `displayRoleLabel` / `deviceLeadIcon` (label/icon); `hidden`
46
- * filters the row out of list surfaces. Absent ⇒ role/slice defaults. */
47
- readonly display?: DeviceDisplayOverride;
48
- /** Soft-link to another device id. For a CONTAINER device this is the
49
- * LEGACY picker-chosen primary child (numeric id); the row/hero resolve the
50
- * primary child via `resolveContainerPrimary(children, linkDeviceId)`.
51
- * Nullable: an explicit null means "no override → priority default".
52
- * Mirrors `DeviceInfo.linkDeviceId` so the wire row passes through. */
53
- readonly linkDeviceId?: number | null;
54
- /** Durable primary-child override for a CONTAINER device, keyed on the
55
- * chosen child's re-sync/rename-stable `entityId`. Preferred over the
56
- * numeric `linkDeviceId` in `resolveContainerPrimary` (survives a re-sync
57
- * that reallocates the child's numeric id). Mirrors
58
- * `DeviceInfo.primaryChildEntityId`. */
59
- readonly primaryChildEntityId?: string | null;
60
- /** Container-level layout hint: assigns specific accessory children to named
61
- * accordion sections (with optional intra-section order). Each entry's
62
- * `childKey` is the child's re-sync-stable accessory `stableIdSuffix`; a child
63
- * matches when `child.stableId === ${this.stableId}-${childKey}`. Mirrors
64
- * `DeviceInfo.childLayout` so the wire row passes through. Absent ⇒ no layout
65
- * declared (all children render in the plain list). Consumed by
66
- * `groupChildrenByLayout` for the device-detail list + the table row
67
- * expansion. */
68
- readonly childLayout?: ChildLayout;
69
- /** Hardware + identity blob (manufacturer / model / firmware / sn / uid /
70
- * mac / …). Driver-populated; keys are free-form and values arbitrary, so
71
- * consumers MUST treat them defensively (string-coerce for display, skip
72
- * non-string/empty). Mirrors `DeviceInfo.metadata` so the wire row passes
73
- * through unchanged. Absent/null ⇒ no identity info advertised. */
74
- readonly metadata?: Readonly<Record<string, unknown>> | null;
31
+ readonly id: number;
32
+ readonly stableId: string;
33
+ readonly addonId: string;
34
+ readonly type: string;
35
+ readonly name: string;
36
+ readonly online: boolean;
37
+ /** Soft-disable flag — `true` dims the row + skips live fetches.
38
+ * Matches `DeviceInfo.disabled` so the wire row passes through. */
39
+ readonly disabled: boolean;
40
+ readonly parentDeviceId: number | null;
41
+ /** The integration that CREATED this device — may differ from `addonId`,
42
+ * the addon that owns and SERVES it (e.g. a composed device is created
43
+ * under the "Blocks" integration but served by the `composer` addon).
44
+ * Mirrors `DeviceInfo.integrationId` so the wire row passes through. */
45
+ readonly integrationId?: string | null;
46
+ /** Optional `DeviceRole` string. Present ⇒ this is an accessory. */
47
+ readonly role?: string | null;
48
+ /** DeviceFeature strings — gates BatteryBadge etc. */
49
+ readonly features?: readonly string[];
50
+ /** True for ICameraDevice instances — gates snapshot popover. */
51
+ readonly isCamera?: boolean;
52
+ /** Upstream-system identity (dispatch key + system tag + optional uniqueId).
53
+ * Flows from `DeviceInfo.sourceInfo` via structural cast / parse;
54
+ * optional so rows from providers that pre-date SourceInfo still work.
55
+ * Live rendering hints (unit, precision) come from the cap STATUS SLICE for
56
+ * generic numeric-sensor, or canonical constants in ROLE_DESCRIPTOR for typed
57
+ * roles; an operator's per-device customization rides `display` (below). */
58
+ readonly sourceInfo?: SourceInfo;
59
+ /** Operator-authored per-device display override (icon/label/unit/precision/
60
+ * hidden). Mirrors `DeviceInfo.display` so the wire row passes through. The
61
+ * renderers resolve it via `resolveSensorDisplay` (unit/precision, render-time
62
+ * conversion) + `displayRoleLabel` / `deviceLeadIcon` (label/icon); `hidden`
63
+ * filters the row out of list surfaces. Absent ⇒ role/slice defaults. */
64
+ readonly display?: DeviceDisplayOverride;
65
+ /** Soft-link to another device id. For a CONTAINER device this is the
66
+ * LEGACY picker-chosen primary child (numeric id); the row/hero resolve the
67
+ * primary child via `resolveContainerPrimary(children, linkDeviceId)`.
68
+ * Nullable: an explicit null means "no override → priority default".
69
+ * Mirrors `DeviceInfo.linkDeviceId` so the wire row passes through. */
70
+ readonly linkDeviceId?: number | null;
71
+ /** Durable primary-child override for a CONTAINER device, keyed on the
72
+ * chosen child's re-sync/rename-stable `entityId`. Preferred over the
73
+ * numeric `linkDeviceId` in `resolveContainerPrimary` (survives a re-sync
74
+ * that reallocates the child's numeric id). Mirrors
75
+ * `DeviceInfo.primaryChildEntityId`. */
76
+ readonly primaryChildEntityId?: string | null;
77
+ /** Container-level layout hint: assigns specific accessory children to named
78
+ * accordion sections (with optional intra-section order). Each entry's
79
+ * `childKey` is the child's re-sync-stable accessory `stableIdSuffix`; a child
80
+ * matches when `child.stableId === ${this.stableId}-${childKey}`. Mirrors
81
+ * `DeviceInfo.childLayout` so the wire row passes through. Absent ⇒ no layout
82
+ * declared (all children render in the plain list). Consumed by
83
+ * `groupChildrenByLayout` for the device-detail list + the table row
84
+ * expansion. */
85
+ readonly childLayout?: ChildLayout;
86
+ /** Hardware + identity blob (manufacturer / model / firmware / sn / uid /
87
+ * mac / …). Driver-populated; keys are free-form and values arbitrary, so
88
+ * consumers MUST treat them defensively (string-coerce for display, skip
89
+ * non-string/empty). Mirrors `DeviceInfo.metadata` so the wire row passes
90
+ * through unchanged. Absent/null ⇒ no identity info advertised. */
91
+ readonly metadata?: Readonly<Record<string, unknown>> | null;
75
92
  }
76
93
  export interface DeviceItemParent {
77
- readonly id: number;
78
- readonly name: string;
79
- /**
80
- * Type of the parent device. Optional — when provided, callers can
81
- * distinguish "adopted under a hub/nvr" (renders with extra indent in
82
- * the table view) from a generic accessory parent.
83
- */
84
- readonly type?: string;
94
+ readonly id: number;
95
+ readonly name: string;
96
+ /**
97
+ * Type of the parent device. Optional — when provided, callers can
98
+ * distinguish "adopted under a hub/nvr" (renders with extra indent in
99
+ * the table view) from a generic accessory parent.
100
+ */
101
+ readonly type?: string;
85
102
  }
86
- export type DeviceItemKind = 'top-level' | 'adopted' | 'accessory';
87
- export declare function deriveDeviceKind(device: Pick<DeviceItemDevice, 'parentDeviceId' | 'role'>): DeviceItemKind;
88
- export type DeviceItemVariant = 'minimal' | 'compact' | 'expanded';
89
- export type DeviceItemView = 'card' | 'table';
103
+ export type DeviceItemKind = "top-level" | "adopted" | "accessory";
104
+ export declare function deriveDeviceKind(device: Pick<DeviceItemDevice, "parentDeviceId" | "role">): DeviceItemKind;
105
+ export type DeviceItemVariant = "minimal" | "compact" | "expanded";
106
+ export type DeviceItemView = "card" | "table";
90
107
  export interface DeviceItemProps {
91
- readonly trpc: UseDeviceProxyTrpc;
92
- readonly device: DeviceItemDevice;
93
- readonly variant?: DeviceItemVariant;
94
- /**
95
- * Render mode. `'card'` (default) = flex row + optional accordion
96
- * below. `'table'` = `<tr>` with one `<td>` per logical column.
97
- * Phase 2's `<DeviceList>` wrapper drives this prop; Phase 1
98
- * scaffolds both branches with no current consumer using table.
99
- */
100
- readonly view?: DeviceItemView;
101
- /**
102
- * When true, the row is rendered as an accessory of a parent (Phase 2
103
- * nested-only mode). Adds a subtle background tint + indent on the
104
- * first cell. Has no effect on `view='card'`. Caller provides `true`
105
- * only for the accessory passes inside <DeviceList>.
106
- */
107
- readonly isAccessoryRow?: boolean;
108
- /**
109
- * Indent level for the `<td>` first cell in `view='table'`. Controls
110
- * `pl-N` on the name cell so adopted-under-hub rows can be visually
111
- * nested below their parent without forcing the accessory tint.
112
- *
113
- * 0 → `pl-2` (top-level, no parent)
114
- * 1 → `pl-6` (adopted under a hub/nvr — visual hierarchy hint)
115
- * 2 → `pl-8` (accessory under any parent — strongest indent)
116
- *
117
- * When omitted, the orchestrator derives `2` from `isAccessoryRow` and
118
- * otherwise defaults to `0`. Caller may override (e.g. <DeviceList>
119
- * promoting "adopted-under-hub" rows from 0 → 1).
120
- */
121
- readonly indentLevel?: 0 | 1 | 2;
122
- /**
123
- * Controlled expand state for the children-accordion chevron. When
124
- * BOTH `expanded` and `onToggleExpand` are passed, DeviceItem becomes
125
- * fully controlled; otherwise it falls back to internal state. Used
126
- * by `<TableRowGroup>` to lift expand state to the parent so the
127
- * accessory `<tr>` rows can render based on the same flag the chevron
128
- * flips.
129
- */
130
- readonly expanded?: boolean;
131
- readonly onToggleExpand?: () => void;
132
- readonly integrationIcon?: ReactNode;
133
- readonly parent?: DeviceItemParent | null;
134
- readonly showIntegrationIcon?: boolean;
135
- readonly showParentBadge?: boolean;
136
- readonly showSnapshot?: boolean;
137
- readonly showBattery?: boolean;
138
- readonly showStableId?: boolean;
139
- readonly showId?: boolean;
140
- readonly showSwitchToggle?: boolean;
141
- readonly showChildrenAccordion?: boolean;
142
- readonly children?: readonly DeviceItemDevice[];
143
- readonly onNavigate?: (deviceId: number) => void;
144
- readonly className?: string;
145
- /**
146
- * Optional trailing per-row control rendered alongside the built-in
147
- * `<DeviceItemActions>` (both card + table views). Lets a caller
148
- * inject a context-specific affordance — e.g. the device-export
149
- * panel's per-row Expose/Exposed toggle — without the composite
150
- * knowing anything about that domain. Omitted ⇒ no extra control,
151
- * so every existing call site renders unchanged.
152
- */
153
- readonly renderRowAction?: (device: DeviceItemDevice) => ReactNode;
154
- /**
155
- * Built-in confirmed delete (TABLE feature). When provided, the merged
156
- * previewActions cell renders a red trash button that opens the shared
157
- * centered confirm dialog and calls `onDelete(device)` only on confirm.
158
- * Cap/feature-agnostic — delete is generic. Context gating is "consumer
159
- * passes the handler or not": omitted ⇒ no trash, zero layout change.
160
- * No effect on `view='card'` (card delete is a deliberate follow-up).
161
- */
162
- readonly onDelete?: (device: DeviceItemDevice) => void;
163
- /**
164
- * When provided, renders a leading checkbox for row selection.
165
- * Only passed to top-level rows (accessory sub-rows omit it).
166
- * Omitted ⇒ no checkbox, zero layout change for existing callers.
167
- */
168
- readonly selection?: {
169
- readonly selected: boolean;
170
- readonly onToggle: () => void;
171
- };
172
- /**
173
- * When `true` (and `selection` is provided), a click anywhere on the
174
- * row's primary body toggles selection instead of navigating — the
175
- * batch-mode interaction (spec §6). The row also gains an accessible
176
- * pressed affordance (`role="button"` + `aria-pressed`). When omitted
177
- * or `false`, the row navigates on click as usual; the leading
178
- * checkbox remains the only selection surface. The checkbox always
179
- * toggles regardless of this flag (and never bubbles to navigate).
180
- */
181
- readonly rowClickSelects?: boolean;
182
- /**
183
- * Table-view column gates (context-configured). Default `true` so every
184
- * existing call site renders all cells. When `false`, the corresponding
185
- * `<td>` is omitted entirely (the matching `<th>` is gated in the parent
186
- * `TableLayout`, so header + cells stay in lock-step). No effect on
187
- * `view='card'`.
188
- */
189
- readonly showTypeCell?: boolean;
190
- /** Render the Hardware (manufacturer/model) `<td>` (context-gated). Default
191
- * `true` so existing call sites render it; the parent `TableLayout` gates the
192
- * matching `<th>` so header + cell stay in lock-step. No effect on `'card'`. */
193
- readonly showManufacturerCell?: boolean;
194
- readonly showFeaturesCell?: boolean;
108
+ readonly trpc: UseDeviceProxyTrpc;
109
+ readonly device: DeviceItemDevice;
110
+ readonly variant?: DeviceItemVariant;
111
+ /**
112
+ * Render mode. `'card'` (default) = flex row + optional accordion
113
+ * below. `'table'` = `<tr>` with one `<td>` per logical column.
114
+ * Phase 2's `<DeviceList>` wrapper drives this prop; Phase 1
115
+ * scaffolds both branches with no current consumer using table.
116
+ */
117
+ readonly view?: DeviceItemView;
118
+ /**
119
+ * When true, the row is rendered as an accessory of a parent (Phase 2
120
+ * nested-only mode). Adds a subtle background tint + indent on the
121
+ * first cell. Has no effect on `view='card'`. Caller provides `true`
122
+ * only for the accessory passes inside <DeviceList>.
123
+ */
124
+ readonly isAccessoryRow?: boolean;
125
+ /**
126
+ * Indent level for the `<td>` first cell in `view='table'`. Controls
127
+ * `pl-N` on the name cell so adopted-under-hub rows can be visually
128
+ * nested below their parent without forcing the accessory tint.
129
+ *
130
+ * 0 → `pl-2` (top-level, no parent)
131
+ * 1 → `pl-6` (adopted under a hub/nvr — visual hierarchy hint)
132
+ * 2 → `pl-8` (accessory under any parent — strongest indent)
133
+ *
134
+ * When omitted, the orchestrator derives `2` from `isAccessoryRow` and
135
+ * otherwise defaults to `0`. Caller may override (e.g. <DeviceList>
136
+ * promoting "adopted-under-hub" rows from 0 → 1).
137
+ */
138
+ readonly indentLevel?: 0 | 1 | 2;
139
+ /**
140
+ * Controlled expand state for the children-accordion chevron. When
141
+ * BOTH `expanded` and `onToggleExpand` are passed, DeviceItem becomes
142
+ * fully controlled; otherwise it falls back to internal state. Used
143
+ * by `<TableRowGroup>` to lift expand state to the parent so the
144
+ * accessory `<tr>` rows can render based on the same flag the chevron
145
+ * flips.
146
+ */
147
+ readonly expanded?: boolean;
148
+ readonly onToggleExpand?: () => void;
149
+ readonly integrationIcon?: ReactNode;
150
+ readonly parent?: DeviceItemParent | null;
151
+ readonly showIntegrationIcon?: boolean;
152
+ readonly showParentBadge?: boolean;
153
+ readonly showSnapshot?: boolean;
154
+ readonly showBattery?: boolean;
155
+ readonly showStableId?: boolean;
156
+ readonly showId?: boolean;
157
+ readonly showSwitchToggle?: boolean;
158
+ readonly showChildrenAccordion?: boolean;
159
+ readonly children?: readonly DeviceItemDevice[];
160
+ readonly onNavigate?: (deviceId: number) => void;
161
+ readonly className?: string;
162
+ /**
163
+ * Optional trailing per-row control rendered alongside the built-in
164
+ * `<DeviceItemActions>` (both card + table views). Lets a caller
165
+ * inject a context-specific affordance — e.g. the device-export
166
+ * panel's per-row Expose/Exposed toggle — without the composite
167
+ * knowing anything about that domain. Omitted ⇒ no extra control,
168
+ * so every existing call site renders unchanged.
169
+ */
170
+ readonly renderRowAction?: (device: DeviceItemDevice) => ReactNode;
171
+ /**
172
+ * Built-in confirmed delete (TABLE feature). When provided, the merged
173
+ * previewActions cell renders a red trash button that opens the shared
174
+ * centered confirm dialog and calls `onDelete(device)` only on confirm.
175
+ * Cap/feature-agnostic — delete is generic. Context gating is "consumer
176
+ * passes the handler or not": omitted ⇒ no trash, zero layout change.
177
+ * No effect on `view='card'` (card delete is a deliberate follow-up).
178
+ */
179
+ readonly onDelete?: (device: DeviceItemDevice) => void;
180
+ /**
181
+ * When provided, renders a leading checkbox for row selection.
182
+ * Only passed to top-level rows (accessory sub-rows omit it).
183
+ * Omitted ⇒ no checkbox, zero layout change for existing callers.
184
+ */
185
+ readonly selection?: {
186
+ readonly selected: boolean;
187
+ readonly onToggle: () => void;
188
+ };
189
+ /**
190
+ * When `true` (and `selection` is provided), a click anywhere on the
191
+ * row's primary body toggles selection instead of navigating — the
192
+ * batch-mode interaction (spec §6). The row also gains an accessible
193
+ * pressed affordance (`role="button"` + `aria-pressed`). When omitted
194
+ * or `false`, the row navigates on click as usual; the leading
195
+ * checkbox remains the only selection surface. The checkbox always
196
+ * toggles regardless of this flag (and never bubbles to navigate).
197
+ */
198
+ readonly rowClickSelects?: boolean;
199
+ /**
200
+ * Table-view column gates (context-configured). Default `true` so every
201
+ * existing call site renders all cells. When `false`, the corresponding
202
+ * `<td>` is omitted entirely (the matching `<th>` is gated in the parent
203
+ * `TableLayout`, so header + cells stay in lock-step). No effect on
204
+ * `view='card'`.
205
+ */
206
+ readonly showTypeCell?: boolean;
207
+ /** Render the Hardware (manufacturer/model) `<td>` (context-gated). Default
208
+ * `true` so existing call sites render it; the parent `TableLayout` gates the
209
+ * matching `<th>` so header + cell stay in lock-step. No effect on `'card'`. */
210
+ readonly showManufacturerCell?: boolean;
211
+ readonly showFeaturesCell?: boolean;
195
212
  }
196
213
  export interface VariantDefaults {
197
- readonly showIntegrationIcon: boolean;
198
- readonly showParentBadge: boolean;
199
- readonly showSnapshot: boolean;
200
- readonly showBattery: boolean;
201
- readonly showStableId: boolean;
202
- readonly showId: boolean;
203
- readonly showSwitchToggle: boolean;
204
- readonly showChildrenAccordion: boolean;
214
+ readonly showIntegrationIcon: boolean;
215
+ readonly showParentBadge: boolean;
216
+ readonly showSnapshot: boolean;
217
+ readonly showBattery: boolean;
218
+ readonly showStableId: boolean;
219
+ readonly showId: boolean;
220
+ readonly showSwitchToggle: boolean;
221
+ readonly showChildrenAccordion: boolean;
205
222
  }
206
223
  export declare function resolveFlags(props: DeviceItemProps): VariantDefaults;
207
224
  /**
208
- * The row's lead icon — the ONE resolution order, the same one
209
- * `resolveSensorDisplay` applies to unit and precision:
210
- *
211
- * device override → operator role default → built-in role glyph → type glyph
212
- *
213
- * `roleDefaults` is what the nearest `RoleDisplayDefaultsProvider` publishes;
214
- * callers outside a provider pass nothing and the second level is skipped.
215
- * Each level FALLS THROUGH when it names a glyph the registry cannot draw —
216
- * an unknown key at any level must never leave the row without an icon, and
217
- * must never shadow a lower level that would have drawn one.
218
- *
219
- * "Set as default for all X sensors" writes the second level. It was written
220
- * for a year and read by nothing: this function went straight from the device
221
- * override to `DEVICE_ROLE_META`.
222
- */
225
+ * The row's lead icon — the ONE resolution order, the same one
226
+ * `resolveSensorDisplay` applies to unit and precision:
227
+ *
228
+ * device override → operator role default → built-in role glyph → type glyph
229
+ *
230
+ * `roleDefaults` is what the nearest `RoleDisplayDefaultsProvider` publishes;
231
+ * callers outside a provider pass nothing and the second level is skipped.
232
+ * Each level FALLS THROUGH when it names a glyph the registry cannot draw —
233
+ * an unknown key at any level must never leave the row without an icon, and
234
+ * must never shadow a lower level that would have drawn one.
235
+ *
236
+ * "Set as default for all X sensors" writes the second level. It was written
237
+ * for a year and read by nothing: this function went straight from the device
238
+ * override to `DEVICE_ROLE_META`.
239
+ */
223
240
  export declare function deviceLeadIcon(device: DeviceItemDevice, roleDefaults?: Readonly<Record<string, RoleDisplayDefault>>): LucideIcon;
224
241
  /**
225
- * Role label for a device row, honouring an operator's per-device `display.label`
226
- * override (falls back to the `DEVICE_ROLE_META` label). NOT the device name —
227
- * this is the small secondary role caption on accessory/sensor rows.
228
- */
242
+ * Role label for a device row, honouring an operator's per-device `display.label`
243
+ * override (falls back to the `DEVICE_ROLE_META` label). NOT the device name —
244
+ * this is the small secondary role caption on accessory/sensor rows.
245
+ */
229
246
  export declare function displayRoleLabel(device: DeviceItemDevice): string;
230
247
  export declare function stripParentNamePrefix(name: string, parentName: string): string;
231
248
  /**
232
- * Display name for a child device rendered UNDER its container/parent row.
233
- * Precedence: an operator's explicit per-device `display.label` wins over the
234
- * auto-strip (mirrors {@link displayRoleLabel}); otherwise the parent-name
235
- * prefix is stripped via {@link stripParentNamePrefix}. Shared by the
236
- * device-detail children list AND the devices list-table so both surfaces
237
- * render the bare child label identically.
238
- */
239
- export declare function childListName(child: Pick<DeviceItemDevice, 'name' | 'display'>, parentName: string): string;
249
+ * Display name for a child device rendered UNDER its container/parent row.
250
+ * Precedence: an operator's explicit per-device `display.label` wins over the
251
+ * auto-strip (mirrors {@link displayRoleLabel}); otherwise the parent-name
252
+ * prefix is stripped via {@link stripParentNamePrefix}. Shared by the
253
+ * device-detail children list AND the devices list-table so both surfaces
254
+ * render the bare child label identically.
255
+ */
256
+ export declare function childListName(child: Pick<DeviceItemDevice, "name" | "display">, parentName: string): string;
240
257
  /**
241
- * Icon for each `DeviceFeature` advertised on a device row. Used by
242
- * the features popover (`<DeviceItemFeatures>`) to render compact
243
- * feature chips. Keys mirror `DeviceFeature` enum string values from
244
- * `@camstack/types/device/device-type.ts`.
245
- */
258
+ * Icon for each `DeviceFeature` advertised on a device row. Used by
259
+ * the features popover (`<DeviceItemFeatures>`) to render compact
260
+ * feature chips. Keys mirror `DeviceFeature` enum string values from
261
+ * `@camstack/types/device/device-type.ts`.
262
+ */
246
263
  export declare const FEATURE_ICON_MAP: Readonly<Record<string, LucideIcon>>;
247
264
  export declare const FEATURE_LABEL_MAP: Readonly<Record<string, string>>;
248
265
  /**
249
- * Maps a wire-level `DeviceFeature` string to the cap name registered
250
- * in `deviceManager.getBindings` entries. A feature with NO entry here
251
- * is a pure informational marker (no cap to interrogate) — render but
252
- * without a native/enhanced label.
253
- *
254
- * Source of truth: live `getBindings` capNames observed against a
255
- * Reolink camera (snapshot, reboot, ptz, ptz-autotrack, intercom,
256
- * motion-trigger). Cap-name strings cross-checked against the
257
- * `name:` fields in `packages/types/src/capabilities/*.cap.ts`. When
258
- * a new feature ↔ cap pairing goes live, add the row here so the
259
- * popover picks it up.
260
- *
261
- * Pure markers (no cap to bind, intentionally absent):
262
- * - `battery-operated` — exposed as a plain `device.features` flag;
263
- * the runtime-state slice lives under the `battery` cap which has
264
- * its own dedicated reactive surface (`useDeviceBattery`).
265
- * - `doorbell-button` — UI marker only; the actual press events
266
- * flow through the `doorbell` cap which is already exercised by
267
- * `useDoorbellEvents`. Distinct from the marker.
268
- */
266
+ * Maps a wire-level `DeviceFeature` string to the cap name registered
267
+ * in `deviceManager.getBindings` entries. A feature with NO entry here
268
+ * is a pure informational marker (no cap to interrogate) — render but
269
+ * without a native/enhanced label.
270
+ *
271
+ * Source of truth: live `getBindings` capNames observed against a
272
+ * Reolink camera (snapshot, reboot, ptz, ptz-autotrack, intercom,
273
+ * motion-trigger). Cap-name strings cross-checked against the
274
+ * `name:` fields in `packages/types/src/capabilities/*.cap.ts`. When
275
+ * a new feature ↔ cap pairing goes live, add the row here so the
276
+ * popover picks it up.
277
+ *
278
+ * Pure markers (no cap to bind, intentionally absent):
279
+ * - `battery-operated` — exposed as a plain `device.features` flag;
280
+ * the runtime-state slice lives under the `battery` cap which has
281
+ * its own dedicated reactive surface (`useDeviceBattery`).
282
+ * - `doorbell-button` — UI marker only; the actual press events
283
+ * flow through the `doorbell` cap which is already exercised by
284
+ * `useDoorbellEvents`. Distinct from the marker.
285
+ */
269
286
  export declare const FEATURE_TO_CAP_NAME: Readonly<Record<string, string>>;
270
287
  export declare function maySupportSwitch(device: DeviceItemDevice): boolean;
271
288
  export declare function isAccessoryChild(device: DeviceItemDevice): boolean;
272
289
  export declare function hasMotionTriggerFeature(device: DeviceItemDevice): boolean;
273
290
  /**
274
- * Effective online state for a device row's status dot.
275
- *
276
- * A CONTAINER device renders AS its PRIMARY child (same row control via
277
- * `ContainerPrimaryInline`, same hero via `ContainerPrimaryHero`). Its
278
- * reachability dot should therefore follow that primary child's `online`,
279
- * NOT "any child online" — so the dot and the control gate agree (the
280
- * control is bound to the same primary child via `resolveContainerPrimary`).
281
- *
282
- * Resolution reuses the SAME `resolveContainerPrimary(children, linkDeviceId)`
283
- * helper the row control uses, then reads the resolved child row's `online`.
284
- * Degrades gracefully: a non-container, a container with no children, or a
285
- * container with no resolvable primary child falls back to `device.online`
286
- * (never crashes, never forces offline).
287
- */
291
+ * Effective online state for a device row's status dot.
292
+ *
293
+ * A CONTAINER device renders AS its PRIMARY child (same row control via
294
+ * `ContainerPrimaryInline`, same hero via `ContainerPrimaryHero`). Its
295
+ * reachability dot should therefore follow that primary child's `online`,
296
+ * NOT "any child online" — so the dot and the control gate agree (the
297
+ * control is bound to the same primary child via `resolveContainerPrimary`).
298
+ *
299
+ * Resolution reuses the SAME `resolveContainerPrimary(children, linkDeviceId)`
300
+ * helper the row control uses, then reads the resolved child row's `online`.
301
+ * Degrades gracefully: a non-container, a container with no children, or a
302
+ * container with no resolvable primary child falls back to `device.online`
303
+ * (never crashes, never forces offline).
304
+ */
288
305
  export declare function effectiveOnline(device: DeviceItemDevice, containerChildren: readonly DeviceItemDevice[] | undefined): boolean;
289
306
  /**
290
- * The type a CONTAINER should DISPLAY as (and be FILTERED by): its primary
291
- * child's type, since a container renders as that child (a vacuum container
292
- * should read + filter as `vacuum`, not the structural `container`). Mirrors
293
- * {@link effectiveOnline} — same primary-child resolution. Non-containers, and
294
- * containers with no resolvable primary child, fall back to `device.type`.
295
- */
307
+ * The type a CONTAINER should DISPLAY as (and be FILTERED by): its primary
308
+ * child's type, since a container renders as that child (a vacuum container
309
+ * should read + filter as `vacuum`, not the structural `container`). Mirrors
310
+ * {@link effectiveOnline} — same primary-child resolution. Non-containers, and
311
+ * containers with no resolvable primary child, fall back to `device.type`.
312
+ */
296
313
  export declare function effectiveType(device: DeviceItemDevice, containerChildren: readonly DeviceItemDevice[] | undefined): string;
297
314
  /**
298
- * The device whose lead ICON a row should display: a Container shows its
299
- * primary CHILD's icon (the child's type + role drive the glyph, e.g. a vacuum
300
- * rather than the generic container box). Mirrors {@link effectiveType}, but
301
- * returns the resolved device so {@link deviceLeadIcon} also picks up the
302
- * child's role. Falls back to the device itself for non-containers / no primary.
303
- */
315
+ * The device whose lead ICON a row should display: a Container shows its
316
+ * primary CHILD's icon (the child's type + role drive the glyph, e.g. a vacuum
317
+ * rather than the generic container box). Mirrors {@link effectiveType}, but
318
+ * returns the resolved device so {@link deviceLeadIcon} also picks up the
319
+ * child's role. Falls back to the device itself for non-containers / no primary.
320
+ */
304
321
  export declare function effectiveIconDevice(device: DeviceItemDevice, containerChildren: readonly DeviceItemDevice[] | undefined): DeviceItemDevice;
305
322
  export declare function shortStableId(stableId: string): string;
@@ -1,10 +1,19 @@
1
- import { ReactNode } from 'react';
2
- import { DeviceItemProps } from './helpers';
3
- export type { ChildLayoutSection, GroupedChildren } from './child-layout';
4
- export { groupChildrenByLayout } from './child-layout';
5
- export { ChildSectionAccordion } from './child-section-accordion';
6
- export { ContainerChildrenProvider, useContainerChildren } from './container-children-context';
7
- export { RoleDisplayDefaultsFromServer, RoleDisplayDefaultsProvider, useRoleDisplayDefaults, type RoleDisplayDefaults, } from './role-display-defaults-context';
8
- export type { DeviceItemDevice, DeviceItemKind, DeviceItemParent, DeviceItemProps, DeviceItemVariant, DeviceItemView, } from './helpers';
9
- export { childListName, deriveDeviceKind, stripParentNamePrefix } from './helpers';
1
+ /**
2
+ * <DeviceItem> — orchestrator that composes Header / Preview /
3
+ * Features / Actions / StatusDot in a flex row (`view='card'`) or a
4
+ * `<tr>` with one `<td>` per logical column (`view='table'`).
5
+ *
6
+ * Public API contract: identical to the predecessor `device-item.tsx`
7
+ * file so the 5 existing call sites compile unchanged. The new
8
+ * `view` prop defaults to `'card'`.
9
+ */
10
+ import { type ReactNode } from "react";
11
+ import { type DeviceItemProps } from "./helpers";
12
+ export type { ChildLayoutSection, GroupedChildren } from "./child-layout";
13
+ export { groupChildrenByLayout } from "./child-layout";
14
+ export { ChildSectionAccordion } from "./child-section-accordion";
15
+ export { ContainerChildrenProvider, useContainerChildren } from "./container-children-context";
16
+ export { RoleDisplayDefaultsFromServer, RoleDisplayDefaultsProvider, useRoleDisplayDefaults, type RoleDisplayDefaults } from "./role-display-defaults-context";
17
+ export type { DeviceItemDevice, DeviceItemKind, DeviceItemParent, DeviceItemProps, DeviceItemVariant, DeviceItemView } from "./helpers";
18
+ export { childListName, deriveDeviceKind, stripParentNamePrefix } from "./helpers";
10
19
  export declare function DeviceItem(props: DeviceItemProps): ReactNode;