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