@camstack/ui-library 1.2.257 → 1.2.259

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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 +124 -69
  322. package/dist/index.d.ts +31 -27
  323. package/dist/index.js +124 -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,52 +1,69 @@
1
- import { LiveBuffer } from '../hooks/use-live-buffer';
1
+ /**
2
+ * EventStream — universal event viewer for ui-library.
3
+ *
4
+ * Hierarchical scope: agentId → addonId → deviceId (same as LogStream).
5
+ * Two filtering layers:
6
+ * 1. `defaultCategories` (or legacy `categories`) — initial active
7
+ * whitelist. The user can mutate this through the toolbar's
8
+ * multiselect popover; Reset restores the prop's set.
9
+ * 2. Free-text search — case-insensitive substring match across
10
+ * category, source, data, and the rendered summary line.
11
+ *
12
+ * The backend subscription is mounted only while this component is
13
+ * rendered, so callers can mount/unmount it on tab switches and the
14
+ * tRPC subscription cleans up automatically. The historical query
15
+ * input refreshes when the active category set changes.
16
+ */
17
+ import { type JSX } from "react";
18
+ import { type LiveBuffer } from "../hooks/use-live-buffer";
2
19
  interface EventEntry {
3
- readonly id: string;
4
- readonly timestamp: string;
5
- readonly source: {
6
- readonly type: string;
7
- readonly id: string | number;
8
- readonly nodeId?: string;
9
- readonly addonId?: string;
10
- readonly deviceId?: number;
11
- };
12
- readonly category: string;
13
- readonly data: Record<string, unknown>;
20
+ readonly id: string;
21
+ readonly timestamp: string;
22
+ readonly source: {
23
+ readonly type: string;
24
+ readonly id: string | number;
25
+ readonly nodeId?: string;
26
+ readonly addonId?: string;
27
+ readonly deviceId?: number;
28
+ };
29
+ readonly category: string;
30
+ readonly data: Record<string, unknown>;
14
31
  }
15
32
  export interface EventStreamProps {
16
- readonly agentId?: string;
17
- readonly addonId?: string;
18
- readonly deviceId?: number;
19
- /** Initial whitelist — the user can mutate through the multiselect popover.
20
- * Defaults to ALL EventCategory values when both this and `categories`
21
- * are omitted. */
22
- readonly defaultCategories?: readonly string[];
23
- /** Legacy alias for `defaultCategories`. Kept for back-compat. */
24
- readonly categories?: readonly string[];
25
- /** Category glob/pattern passed to the backend subscription (e.g. 'addon.*'). */
26
- readonly category?: string;
27
- readonly maxHeight?: string;
28
- readonly limit?: number;
29
- /** Show the multiselect filter button in the toolbar (default true). */
30
- readonly showCategoryFilter?: boolean;
31
- readonly showFilters?: boolean;
32
- /**
33
- * Optional controlled live buffer. When provided, the stream reads
34
- * + appends to this external store rather than its own `useState`,
35
- * so the visible list survives an unmount/remount of the component
36
- * (used by `DeviceActivityPanel` to keep tab content alive across
37
- * tab switches without keeping subscriptions open in inactive tabs).
38
- */
39
- readonly liveBuffer?: LiveBuffer<EventEntry>;
40
- readonly onClose?: () => void;
41
- readonly className?: string;
33
+ readonly agentId?: string;
34
+ readonly addonId?: string;
35
+ readonly deviceId?: number;
36
+ /** Initial whitelist — the user can mutate through the multiselect popover.
37
+ * Defaults to ALL EventCategory values when both this and `categories`
38
+ * are omitted. */
39
+ readonly defaultCategories?: readonly string[];
40
+ /** Legacy alias for `defaultCategories`. Kept for back-compat. */
41
+ readonly categories?: readonly string[];
42
+ /** Category glob/pattern passed to the backend subscription (e.g. 'addon.*'). */
43
+ readonly category?: string;
44
+ readonly maxHeight?: string;
45
+ readonly limit?: number;
46
+ /** Show the multiselect filter button in the toolbar (default true). */
47
+ readonly showCategoryFilter?: boolean;
48
+ readonly showFilters?: boolean;
49
+ /**
50
+ * Optional controlled live buffer. When provided, the stream reads
51
+ * + appends to this external store rather than its own `useState`,
52
+ * so the visible list survives an unmount/remount of the component
53
+ * (used by `DeviceActivityPanel` to keep tab content alive across
54
+ * tab switches without keeping subscriptions open in inactive tabs).
55
+ */
56
+ readonly liveBuffer?: LiveBuffer<EventEntry>;
57
+ readonly onClose?: () => void;
58
+ readonly className?: string;
42
59
  }
43
60
  /** Categories visible in the events tab by default. The "All" badge
44
- * reflects this set, not the raw enum. */
61
+ * reflects this set, not the raw enum. */
45
62
  export declare const DEFAULT_EVENT_CATEGORIES: readonly string[];
46
63
  export declare function summarizeEvent(category: string, data: Record<string, unknown>): string | null;
47
- export declare function EventStream({ agentId, addonId, deviceId, defaultCategories, categories: legacyCategories, category: propsCategory, maxHeight, limit, showCategoryFilter, showFilters: _showFilters, liveBuffer: externalBuffer, onClose, className, }: EventStreamProps): import("react").JSX.Element;
64
+ export declare function EventStream({ agentId, addonId, deviceId, defaultCategories, categories: legacyCategories, category: propsCategory, maxHeight, limit, showCategoryFilter, showFilters: _showFilters, liveBuffer: externalBuffer, onClose, className }: EventStreamProps): JSX.Element | null;
48
65
  export interface FloatingEventStreamProps extends EventStreamProps {
49
- readonly position?: 'bottom' | 'overlay';
66
+ readonly position?: "bottom" | "overlay";
50
67
  }
51
- export declare function FloatingEventStream({ position, className, ...props }: FloatingEventStreamProps): import("react").JSX.Element;
68
+ export declare function FloatingEventStream({ position, className, ...props }: FloatingEventStreamProps): JSX.Element | null;
52
69
  export {};
@@ -1,35 +1,56 @@
1
- import { ExtensionSlotSource, ExtensionSlotState } from '@camstack/types';
2
- import { TrackedOption } from './extensions-view-state.js';
1
+ /**
2
+ * One ASSOCIATION slot (D648): the devices a host lists, edited as a device
3
+ * multiselect.
4
+ *
5
+ * - The saved value is the owner's store, read by `listSlots`. The draft is
6
+ * local until Save, and Save is `setSlot` — the owner validates and writes
7
+ * through its existing path, so a refusal comes back BY NAME and is shown.
8
+ * - Candidates (`listCandidates`) are fetched only while editing. Suggestions
9
+ * are chips the operator must click to add; nothing is picked on its own
10
+ * (D356).
11
+ * - Every saved source shows its health; a missing or unavailable one is
12
+ * shown with its reason and never silently dropped from the draft.
13
+ * - A gate owned by ANOTHER authority (e.g. a wrapper's binding; no slot
14
+ * reports one today) is shown read-only, naming that authority (D62).
15
+ * - A slot whose value carries a tracked-event opt-in (`linked-devices`,
16
+ * D655) gets one toggle per LINKED device — the picks, what the owner links
17
+ * by structure (`impliedSources`: tree children, never a container, D356)
18
+ * and any stored opt-in no longer linked, so each can be removed — saved
19
+ * with the picks, whole.
20
+ */
21
+ import { type JSX } from "react";
22
+ import { type ExtensionSlotSource, type ExtensionSlotState } from "@camstack/types";
23
+ import { type TrackedOption } from "./extensions-view-state.js";
3
24
  export interface SlotSourceListProps {
4
- readonly sources: readonly ExtensionSlotSource[];
5
- /** The tracked-event opt-in, when the slot carries one. */
6
- readonly tracked?: readonly number[] | undefined;
25
+ readonly sources: readonly ExtensionSlotSource[];
26
+ /** The tracked-event opt-in, when the slot carries one. */
27
+ readonly tracked?: readonly number[] | undefined;
7
28
  }
8
29
  /** The saved sources, each with its health — a bad one is shown, never hidden. */
9
- export declare function SlotSourceList({ sources, tracked }: SlotSourceListProps): import("react").JSX.Element;
30
+ export declare function SlotSourceList({ sources, tracked }: SlotSourceListProps): JSX.Element | null;
10
31
  export interface AssociationSlotCardProps {
11
- readonly deviceId: number;
12
- readonly row: ExtensionSlotState;
13
- readonly onSaved: () => void;
14
- /**
15
- * No Edit affordance — for a caller whose viewer cannot write `setSlot`
16
- * (`auth: 'admin'`), never a client-side echo of a server refusal. The
17
- * saved picks are still shown in full (D356: a link is only what the
18
- * operator picked, and hiding it from a non-admin would read as gone).
19
- */
20
- readonly readOnly?: boolean;
32
+ readonly deviceId: number;
33
+ readonly row: ExtensionSlotState;
34
+ readonly onSaved: () => void;
35
+ /**
36
+ * No Edit affordance — for a caller whose viewer cannot write `setSlot`
37
+ * (`auth: 'admin'`), never a client-side echo of a server refusal. The
38
+ * saved picks are still shown in full (D356: a link is only what the
39
+ * operator picked, and hiding it from a non-admin would read as gone).
40
+ */
41
+ readonly readOnly?: boolean;
21
42
  }
22
43
  export interface ActivationLineProps {
23
- readonly row: ExtensionSlotState;
44
+ readonly row: ExtensionSlotState;
24
45
  }
25
46
  export interface ImpliedSourceListProps {
26
- readonly sources: readonly ExtensionSlotSource[];
27
- readonly tracked?: readonly number[] | undefined;
47
+ readonly sources: readonly ExtensionSlotSource[];
48
+ readonly tracked?: readonly number[] | undefined;
28
49
  }
29
50
  export interface TrackedTogglesProps {
30
- readonly options: readonly TrackedOption[];
31
- readonly tracked: readonly number[];
32
- readonly nameOf: (id: number) => string;
33
- readonly onToggle: (id: number) => void;
51
+ readonly options: readonly TrackedOption[];
52
+ readonly tracked: readonly number[];
53
+ readonly nameOf: (id: number) => string;
54
+ readonly onToggle: (id: number) => void;
34
55
  }
35
- export declare function AssociationSlotCard({ deviceId, row, onSaved, readOnly, }: AssociationSlotCardProps): import("react").JSX.Element;
56
+ export declare function AssociationSlotCard({ deviceId, row, onSaved, readOnly }: AssociationSlotCardProps): JSX.Element | null;
@@ -1,20 +1,43 @@
1
- import { ExtensionSlotId } from '@camstack/types';
1
+ /**
2
+ * `host/extensions-panel` — what a device is extended with by OTHER devices,
3
+ * in one place (D648).
4
+ *
5
+ * Mounted by the framework: `device-extension.cap.ts` declares
6
+ * `deviceConfig.ui = { kind:'widget', widgetId:'host/extensions-panel',
7
+ * tab:'general', order:72 }` and `deriveDeviceConfigContribution` emits the
8
+ * section (D14). The panel STORES NOTHING: every card is one row of
9
+ * `device-extension.listSlots`, read by the slot's owner from the store it
10
+ * already has, and every save is `setSlot`, written by that owner through its
11
+ * existing path. It is the only editor of what it shows: the hand-written
12
+ * "Linked devices" and "Virtual doorbell" sections it replaced were retired
13
+ * once the live read matched them on every measured camera (D655).
14
+ *
15
+ * Every slot is an ASSOCIATION, so every card is a device multiselect. A
16
+ * device that GAINS a capability from other devices is a composition, not a
17
+ * slot, and is authored there (D663, amends D648).
18
+ *
19
+ * Absence is claimed only from an answer (D315): pending, failed and empty
20
+ * are three different sentences, and an owner that could not answer is shown
21
+ * with its reason, verbatim — never dropped.
22
+ */
23
+ import type { ExtensionSlotId } from "@camstack/types";
24
+ import { type JSX } from "react";
2
25
  export interface ExtensionsPanelProps {
3
- readonly deviceId: number;
4
- /**
5
- * Only these slots are rendered; absent = every slot (the host widget's
6
- * behaviour, unchanged). An owner that could not answer is shown either way:
7
- * its row cannot say which slot it owns, and hiding it would read as
8
- * "nothing configured" (D315). Used by the Customize tab (D676).
9
- */
10
- readonly slots?: readonly ExtensionSlotId[];
11
- /** Panel title; absent = "Extensions". */
12
- readonly title?: string;
13
- /**
14
- * No Edit affordance on any card (`setSlot` is `auth: 'admin'`). Used by a
15
- * viewer who can read `listSlots` (`protected`) but not write — never a
16
- * reason to hide the saved picks themselves.
17
- */
18
- readonly readOnly?: boolean;
26
+ readonly deviceId: number;
27
+ /**
28
+ * Only these slots are rendered; absent = every slot (the host widget's
29
+ * behaviour, unchanged). An owner that could not answer is shown either way:
30
+ * its row cannot say which slot it owns, and hiding it would read as
31
+ * "nothing configured" (D315). Used by the Customize tab (D676).
32
+ */
33
+ readonly slots?: readonly ExtensionSlotId[];
34
+ /** Panel title; absent = "Extensions". */
35
+ readonly title?: string;
36
+ /**
37
+ * No Edit affordance on any card (`setSlot` is `auth: 'admin'`). Used by a
38
+ * viewer who can read `listSlots` (`protected`) but not write — never a
39
+ * reason to hide the saved picks themselves.
40
+ */
41
+ readonly readOnly?: boolean;
19
42
  }
20
- export declare function ExtensionsPanel({ deviceId, slots, title, readOnly, }: ExtensionsPanelProps): import("react").JSX.Element;
43
+ export declare function ExtensionsPanel({ deviceId, slots, title, readOnly }: ExtensionsPanelProps): JSX.Element;
@@ -1,51 +1,69 @@
1
- import { ExtensionCandidate, ExtensionSlotCardinality, ExtensionSlotRow, ExtensionSlotState, ExtensionSlotUnreachable, ExtensionSlotValue } from '@camstack/types';
1
+ /**
2
+ * What the Extensions section may CLAIM, from what `listSlots` answered
3
+ * (D648, D315).
4
+ *
5
+ * Four states, and the two a boolean would collapse are kept apart on purpose:
6
+ *
7
+ * - `pending` — nobody has answered yet. Never "no extensions".
8
+ * - `unknown` — the query FAILED. It is not an answer, so it is not absence
9
+ * either; the reason is shown verbatim.
10
+ * - `none` — the query answered with nothing. The only state that may say
11
+ * "no extensions".
12
+ * - `rows` — cards, in the generated table's order, and every owner that
13
+ * could not answer as its own row with its reason (D554.4). A device whose
14
+ * ONLY owner failed is `rows` with no slots, not `none`.
15
+ *
16
+ * Also here, pure: the editor's draft rules, so the component holds no logic
17
+ * a spec cannot reach.
18
+ */
19
+ import { type ExtensionCandidate, type ExtensionSlotCardinality, type ExtensionSlotRow, type ExtensionSlotState, type ExtensionSlotUnreachable, type ExtensionSlotValue } from "@camstack/types";
2
20
  /** The one field of a query error this module reads. */
3
21
  export interface ExtensionsQueryError {
4
- readonly message: string;
22
+ readonly message: string;
5
23
  }
6
24
  /** The fields of a query result this module reads — nothing else. */
7
25
  export interface ExtensionsQueryView {
8
- readonly status: 'pending' | 'error' | 'success';
9
- readonly data?: readonly ExtensionSlotRow[] | undefined;
10
- readonly error?: ExtensionsQueryError | null;
26
+ readonly status: "pending" | "error" | "success";
27
+ readonly data?: readonly ExtensionSlotRow[] | undefined;
28
+ readonly error?: ExtensionsQueryError | null;
11
29
  }
12
30
  /** Nobody has answered yet. */
13
31
  export interface ExtensionsPendingView {
14
- readonly kind: 'pending';
32
+ readonly kind: "pending";
15
33
  }
16
34
  /** The read FAILED — not an answer, so not absence either. */
17
35
  export interface ExtensionsUnknownView {
18
- readonly kind: 'unknown';
19
- readonly reason: string;
36
+ readonly kind: "unknown";
37
+ readonly reason: string;
20
38
  }
21
39
  /** Answered with nothing — the only state that may say "no extensions". */
22
40
  export interface ExtensionsNoneView {
23
- readonly kind: 'none';
41
+ readonly kind: "none";
24
42
  }
25
43
  /**
26
- * A row of a slot this build does NOT declare — an older or newer server than
27
- * this admin UI (a rollback after slice 6 still answers `doorbell-source`).
28
- * It cannot be a card (no descriptor), so it is said by name instead: never
29
- * dropped, never crashing the panel (D315, task 17 re-review R1).
30
- */
44
+ * A row of a slot this build does NOT declare — an older or newer server than
45
+ * this admin UI (a rollback after slice 6 still answers `doorbell-source`).
46
+ * It cannot be a card (no descriptor), so it is said by name instead: never
47
+ * dropped, never crashing the panel (D315, task 17 re-review R1).
48
+ */
31
49
  export interface ExtensionsUnknownSlotRow {
32
- readonly slot: string;
33
- readonly slotRef: string;
50
+ readonly slot: string;
51
+ readonly slotRef: string;
34
52
  }
35
53
  /** Cards in table order, every slot this build does not know, and every owner that could not answer. */
36
54
  export interface ExtensionsRowsView {
37
- readonly kind: 'rows';
38
- readonly slots: readonly ExtensionSlotState[];
39
- readonly unknownSlots: readonly ExtensionsUnknownSlotRow[];
40
- readonly unreachable: readonly ExtensionSlotUnreachable[];
55
+ readonly kind: "rows";
56
+ readonly slots: readonly ExtensionSlotState[];
57
+ readonly unknownSlots: readonly ExtensionsUnknownSlotRow[];
58
+ readonly unreachable: readonly ExtensionSlotUnreachable[];
41
59
  }
42
60
  export type ExtensionsView = ExtensionsPendingView | ExtensionsUnknownView | ExtensionsNoneView | ExtensionsRowsView;
43
61
  /** The order cards are shown in: the generated slot table's. */
44
62
  export type ExtensionSlotTableOrder = readonly string[];
45
63
  /**
46
- * `order` is the generated table (`EXTENSION_SLOT_IDS`); a parameter only so a
47
- * spec can pin the comparator while the table holds a single slot.
48
- */
64
+ * `order` is the generated table (`EXTENSION_SLOT_IDS`); a parameter only so a
65
+ * spec can pin the comparator while the table holds a single slot.
66
+ */
49
67
  export declare function resolveExtensionsView(query: ExtensionsQueryView, order?: ExtensionSlotTableOrder): ExtensionsView;
50
68
  /** Add or remove one pick. `one` replaces; `many` toggles. */
51
69
  export declare function togglePick(draft: readonly number[], deviceId: number, cardinality: ExtensionSlotCardinality): readonly number[];
@@ -56,51 +74,51 @@ export declare function searchCandidates(candidates: readonly ExtensionCandidate
56
74
  /** Whether the draft differs from what the owner's store holds. */
57
75
  export declare function isDirty(saved: readonly number[], draft: readonly number[]): boolean;
58
76
  /**
59
- * The tracked-event opt-in a slot's value carries, or `undefined` when it
60
- * carries none — every slot but `linked-devices`, and a `linked-devices` row
61
- * from a server older than D655. `undefined` is "this owner offers no
62
- * opt-in", never "nothing is opted in": the card then shows no toggle rather
63
- * than a row of unticked ones it could not save.
64
- */
77
+ * The tracked-event opt-in a slot's value carries, or `undefined` when it
78
+ * carries none — every slot but `linked-devices`, and a `linked-devices` row
79
+ * from a server older than D655. `undefined` is "this owner offers no
80
+ * opt-in", never "nothing is opted in": the card then shows no toggle rather
81
+ * than a row of unticked ones it could not save.
82
+ */
65
83
  export declare function trackedOptInOf(value: ExtensionSlotValue): readonly number[] | undefined;
66
84
  /** Flip one device's tracked-event opt-in. */
67
85
  export declare function toggleTracked(tracked: readonly number[], deviceId: number): readonly number[];
68
86
  /** Whether two opt-ins differ as SETS — the order carries no meaning. */
69
87
  export declare function isTrackedDirty(saved: readonly number[], draft: readonly number[]): boolean;
70
88
  /** Where a tracked-event toggle comes from — said next to it. */
71
- export type TrackedOptionOrigin = 'pick' | 'implied' | 'not-linked';
89
+ export type TrackedOptionOrigin = "pick" | "implied" | "not-linked";
72
90
  /** One device the editor offers a tracked-event toggle for. */
73
91
  export interface TrackedOption {
74
- readonly deviceId: number;
75
- readonly origin: TrackedOptionOrigin;
92
+ readonly deviceId: number;
93
+ readonly origin: TrackedOptionOrigin;
76
94
  }
77
95
  /** What `trackedOptions` builds the toggle list from. */
78
96
  export interface TrackedOptionsInput {
79
- /** The draft picks. */
80
- readonly picks: readonly number[];
81
- /** Saved picks that are not a valid source (a container, D356) — no toggle. */
82
- readonly invalidPicks: readonly number[];
83
- /** Linked by the owner's own structure (`impliedSources`). */
84
- readonly implied: readonly number[];
85
- /** The draft opt-in. */
86
- readonly tracked: readonly number[];
97
+ /** The draft picks. */
98
+ readonly picks: readonly number[];
99
+ /** Saved picks that are not a valid source (a container, D356) — no toggle. */
100
+ readonly invalidPicks: readonly number[];
101
+ /** Linked by the owner's own structure (`impliedSources`). */
102
+ readonly implied: readonly number[];
103
+ /** The draft opt-in. */
104
+ readonly tracked: readonly number[];
87
105
  }
88
106
  /**
89
- * One toggle per device the camera links — the old section's set (D655):
90
- * the valid picks, then what the owner links by structure (tree children, a
91
- * picked container's child — never the container itself, D356), then every
92
- * opted-in device that is linked no more, so a stored opt-in is always
93
- * visible and can always be removed.
94
- */
107
+ * One toggle per device the camera links — the old section's set (D655):
108
+ * the valid picks, then what the owner links by structure (tree children, a
109
+ * picked container's child — never the container itself, D356), then every
110
+ * opted-in device that is linked no more, so a stored opt-in is always
111
+ * visible and can always be removed.
112
+ */
95
113
  export declare function trackedOptions(input: TrackedOptionsInput): readonly TrackedOption[];
96
114
  /**
97
- * The opt-in after one device is removed from the draft picks: its toggle
98
- * goes with it, unless the camera still links it by structure.
99
- */
115
+ * The opt-in after one device is removed from the draft picks: its toggle
116
+ * goes with it, unless the camera still links it by structure.
117
+ */
100
118
  export declare function untrackUnpicked(tracked: readonly number[], deviceId: number, implied: readonly number[]): readonly number[];
101
119
  /**
102
- * The value a Save sends. The opt-in travels only when the owner offered one,
103
- * and then WHOLE: it replaces the stored one, and the owner accepts any id it
104
- * already stored, so what was read can be sent back unchanged (D655).
105
- */
120
+ * The value a Save sends. The opt-in travels only when the owner offered one,
121
+ * and then WHOLE: it replaces the stored one, and the owner accepts any id it
122
+ * already stored, so what was read can be sent back unchanged (D655).
123
+ */
106
124
  export declare function slotWriteValue(saved: ExtensionSlotValue, deviceIds: readonly number[], tracked: readonly number[] | undefined): ExtensionSlotValue;
@@ -1,28 +1,29 @@
1
+ import { type JSX } from "react";
1
2
  type FilterDef = {
2
- type: 'search';
3
- key: string;
4
- placeholder?: string;
3
+ type: "search";
4
+ key: string;
5
+ placeholder?: string;
5
6
  } | {
6
- type: 'select';
7
- key: string;
8
- label: string;
9
- options: {
10
- value: string;
11
- label: string;
12
- }[];
7
+ type: "select";
8
+ key: string;
9
+ label: string;
10
+ options: {
11
+ value: string;
12
+ label: string;
13
+ }[];
13
14
  } | {
14
- type: 'badge-toggle';
15
- key: string;
16
- options: {
17
- value: string;
18
- label: string;
19
- }[];
15
+ type: "badge-toggle";
16
+ key: string;
17
+ options: {
18
+ value: string;
19
+ label: string;
20
+ }[];
20
21
  };
21
22
  export type { FilterDef };
22
23
  export interface FilterBarProps {
23
- filters: FilterDef[];
24
- values: Record<string, unknown>;
25
- onChange: (values: Record<string, unknown>) => void;
26
- className?: string;
24
+ filters: FilterDef[];
25
+ values: Record<string, unknown>;
26
+ onChange: (values: Record<string, unknown>) => void;
27
+ className?: string;
27
28
  }
28
- export declare function FilterBar({ filters, values, onChange, className }: FilterBarProps): import("react").JSX.Element;
29
+ export declare function FilterBar({ filters, values, onChange, className }: FilterBarProps): JSX.Element | null;
@@ -1,11 +1,11 @@
1
- import { ReactNode } from 'react';
1
+ import { type ReactNode, type JSX } from "react";
2
2
  export interface FormFieldProps {
3
- label: string;
4
- description?: string;
5
- error?: string;
6
- required?: boolean;
7
- children: ReactNode;
8
- orientation?: 'vertical' | 'horizontal';
9
- className?: string;
3
+ label: string;
4
+ description?: string;
5
+ error?: string;
6
+ required?: boolean;
7
+ children: ReactNode;
8
+ orientation?: "vertical" | "horizontal";
9
+ className?: string;
10
10
  }
11
- export declare function FormField({ label, description, error, required, children, orientation, className, }: FormFieldProps): import("react").JSX.Element;
11
+ export declare function FormField({ label, description, error, required, children, orientation, className }: FormFieldProps): JSX.Element;
@@ -1,62 +1,34 @@
1
- /**
2
- * Leaf formatting for the device State panel — in particular, turning epoch
3
- * timestamps into readable local dates.
4
- *
5
- * ## Why this needs a rule rather than a `typeof`
6
- *
7
- * `lastFetchedAt: 1785060000000` is unreadable, and every `runtimeState` slice is
8
- * required to carry one. But "large number" is not "timestamp": `bitrate`,
9
- * `memoryRss`, `diskFree` and `retentionDays` are all numbers, and rendering a
10
- * bitrate as a date in 1970 is worse than leaving it raw.
11
- *
12
- * So a value is treated as a time point only when BOTH hold:
13
- *
14
- * 1. the KEY names a time point — `…At`, `…AtMs`, `timestamp`, `…Since`,
15
- * `lastSeen`, `expires…`; and
16
- * 2. the NUMBER falls in a plausible epoch range.
17
- *
18
- * Requiring both is what keeps `uptimeSeconds` (a duration whose name contains
19
- * "time"), `timeoutMs` and `batchIntervalMs` (durations ending in "Ms") out of it.
20
- * Durations are deliberately NOT converted — this formats instants, not spans.
21
- *
22
- * ## The raw value is never lost
23
- *
24
- * This is a debugging panel, so the exact number still matters. The formatted text
25
- * is what is shown; `raw` is returned alongside for a `title` tooltip, and search
26
- * matches against both. Replacing the value outright would trade one kind of
27
- * unreadability for another.
28
- */
29
1
  export declare function isTimeKey(key: string): boolean;
30
2
  /** Epoch milliseconds for a numeric value under a time-shaped key, else null. */
31
3
  export declare function epochMsOf(value: number): number | null;
32
4
  /**
33
- * Locale-formatted instant. `undefined` locale means the viewer's own locale,
34
- * which is the point — an operator in Rome should not read UTC.
35
- */
5
+ * Locale-formatted instant. `undefined` locale means the viewer's own locale,
6
+ * which is the point — an operator in Rome should not read UTC.
7
+ */
36
8
  export declare function formatLocalDate(epochMs: number): string;
37
9
  export interface FormattedLeaf {
38
- /** What is displayed. */
39
- readonly text: string;
40
- /**
41
- * The untouched original, present ONLY when `text` differs from it — so a
42
- * caller can show a tooltip without one on every unremarkable value.
43
- */
44
- readonly raw: string | null;
10
+ /** What is displayed. */
11
+ readonly text: string;
12
+ /**
13
+ * The untouched original, present ONLY when `text` differs from it — so a
14
+ * caller can show a tooltip without one on every unremarkable value.
15
+ */
16
+ readonly raw: string | null;
45
17
  }
46
18
  /**
47
- * Format one leaf of the state tree, given the key it sits under.
48
- *
49
- * Handles two timestamp shapes:
50
- * - a NUMBER under a time-shaped key → local date, raw kept
51
- * - an ISO-8601 STRING → local date, raw kept. No key check needed: an ISO
52
- * string is unambiguous, and a Moleculer round-trip turns every `Date` into
53
- * one, so these appear whether or not the key looks temporal.
54
- */
19
+ * Format one leaf of the state tree, given the key it sits under.
20
+ *
21
+ * Handles two timestamp shapes:
22
+ * - a NUMBER under a time-shaped key → local date, raw kept
23
+ * - an ISO-8601 STRING → local date, raw kept. No key check needed: an ISO
24
+ * string is unambiguous, and a Moleculer round-trip turns every `Date` into
25
+ * one, so these appear whether or not the key looks temporal.
26
+ */
55
27
  export declare function formatLeafValue(key: string, value: unknown): FormattedLeaf;
56
28
  /**
57
- * Strict ISO-8601 with a time part. Requires the `T` and at least
58
- * `hh:mm` — a bare `2026-07-26` is far more often a version, an id fragment or a
59
- * label than a date, and `Date.parse` would silently read it as UTC midnight and
60
- * shift it a day in a negative-offset locale.
61
- */
29
+ * Strict ISO-8601 with a time part. Requires the `T` and at least
30
+ * `hh:mm` — a bare `2026-07-26` is far more often a version, an id fragment or a
31
+ * label than a date, and `Date.parse` would silently read it as UTC midnight and
32
+ * shift it a day in a negative-offset locale.
33
+ */
62
34
  export declare function isIsoDateString(value: string): boolean;
@@ -1,8 +1,9 @@
1
- import { ModelVariantSource } from '@camstack/types';
1
+ import type { JSX } from "react";
2
+ import { type ModelVariantSource } from "@camstack/types";
2
3
  export interface GroupedModelSelectorProps {
3
- readonly catalog: readonly ModelVariantSource[];
4
- readonly value: string;
5
- readonly onChange: (id: string) => void;
6
- readonly disabled?: boolean;
4
+ readonly catalog: readonly ModelVariantSource[];
5
+ readonly value: string;
6
+ readonly onChange: (id: string) => void;
7
+ readonly disabled?: boolean;
7
8
  }
8
- export declare function GroupedModelSelector({ catalog, value, onChange, disabled, }: GroupedModelSelectorProps): import("react").JSX.Element | null;
9
+ export declare function GroupedModelSelector({ catalog, value, onChange, disabled }: GroupedModelSelectorProps): JSX.Element | null;