@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,45 +1,77 @@
1
- import { Clip } from '@camstack/types';
1
+ /**
2
+ * What a clip tile SHOWS — and why, when it shows nothing.
3
+ *
4
+ * Three mutually exclusive shapes arrive on a `Clip` (D549 decision 5):
5
+ *
6
+ * - `thumbnail` — VOUCHED. A JPEG is already on disk. Stamping this from a
7
+ * URL template once pointed 35 % of one camera's tiles at a 404, which is
8
+ * why it now means "confirmed", not "probably".
9
+ * - `thumbnailMint` — an OFFER. A route that MAY produce a still, asked only
10
+ * for rows actually on screen. It answers 200 with the image, or **204**
11
+ * with a refusal.
12
+ * - `thumbnailUnavailable.reason` — the provider already knows no mint can
13
+ * succeed now, so the tile draws the reason instead of firing a request.
14
+ *
15
+ * A clip that carries NONE of the three is its own case and says so. Falling
16
+ * through to an empty grey box is the "we did not look" ambiguity the whole
17
+ * vouching rule exists to remove, and a box is indistinguishable from a
18
+ * loading one.
19
+ *
20
+ * ## "Not yet" and "never" are two answers (D563)
21
+ *
22
+ * The 204 carries a CODE (`x-camstack-reason-code`), the camera's own PROSE
23
+ * (`x-camstack-reason`) and a DISPOSITION (`x-camstack-disposition`). Only the
24
+ * disposition decides whether the tile comes back — this file does not
25
+ * classify codes, because a client that pattern-matches a server's words
26
+ * drifts the first time a word changes, and it already had: the route sends
27
+ * `queue-full: 16 thumbnail mints already waiting for host …` while the table
28
+ * below was keyed by the bare token, so on the live hub EVERY refusal rendered
29
+ * as `Refused: <prose>` — measured on 592, 43 of the 60 tiles of one page.
30
+ *
31
+ * A missing or unrecognised disposition is FINAL. That is not a guess, it is
32
+ * the old behaviour: an addon built before D563 sends no such header and its
33
+ * tiles latch exactly as they used to, instead of gaining a retry loop nobody
34
+ * tested against that build.
35
+ */
36
+ import type { Clip } from "@camstack/types";
2
37
  /** The five things a tile can be. */
3
38
  export type ClipTileMedia = {
4
- readonly kind: 'vouched';
5
- readonly url: string;
39
+ readonly kind: "vouched";
40
+ readonly url: string;
6
41
  } | {
7
- readonly kind: 'mint';
8
- readonly url: string;
9
- }
10
- /** The still is QUEUED. The tile shows loading and comes back, under a
11
- * bound — `text` is what it says if the bound runs out. */
12
- | {
13
- readonly kind: 'deferred';
14
- readonly reason: string;
15
- readonly text: string;
16
- readonly retryAfterMs: number | null;
42
+ readonly kind: "mint";
43
+ readonly url: string;
44
+ } | {
45
+ readonly kind: "deferred";
46
+ readonly reason: string;
47
+ readonly text: string;
48
+ readonly retryAfterMs: number | null;
17
49
  } | {
18
- readonly kind: 'unavailable';
19
- readonly reason: string;
20
- readonly text: string;
50
+ readonly kind: "unavailable";
51
+ readonly reason: string;
52
+ readonly text: string;
21
53
  } | {
22
- readonly kind: 'none';
23
- readonly text: string;
54
+ readonly kind: "none";
55
+ readonly text: string;
24
56
  };
25
57
  /** A 204, as its three headers arrived. `undefined` where a header was absent
26
- * — which is a real case, not a defect: an addon older than D563 sends only
27
- * the prose. */
58
+ * — which is a real case, not a defect: an addon older than D563 sends only
59
+ * the prose. */
28
60
  export interface MintRefusalHeaders {
29
- readonly code: string | undefined;
30
- readonly reason: string;
31
- readonly disposition: string | undefined;
32
- readonly retryAfterMs?: number | null;
61
+ readonly code: string | undefined;
62
+ readonly reason: string;
63
+ readonly disposition: string | undefined;
64
+ readonly retryAfterMs?: number | null;
33
65
  }
34
66
  /** What to draw for one clip's tile. */
35
67
  export declare function resolveTileMedia(clip: Clip): ClipTileMedia;
36
68
  /**
37
- * A 204, as something the tile can draw.
38
- *
39
- * `deferred` is the ONLY answer that comes back, and only because the server
40
- * said so. Everything else — an unknown disposition, an absent one, a code
41
- * this build has never heard of — is final, so the failure mode of a
42
- * vocabulary that moves is a tile that stops early, never one that asks for
43
- * ever.
44
- */
69
+ * A 204, as something the tile can draw.
70
+ *
71
+ * `deferred` is the ONLY answer that comes back, and only because the server
72
+ * said so. Everything else — an unknown disposition, an absent one, a code
73
+ * this build has never heard of — is final, so the failure mode of a
74
+ * vocabulary that moves is a tile that stops early, never one that asks for
75
+ * ever.
76
+ */
45
77
  export declare function describeRefusal(headers: MintRefusalHeaders): ClipTileMedia;
@@ -1,56 +1,86 @@
1
- import { Clip, ClipSource } from '@camstack/types';
2
- import { ClipBand, ClipBandPlan } from './clip-band.js';
3
- import { ClipSourceNotice } from './clip-source-state.js';
1
+ /**
2
+ * The clips browser's on-screen state, decided once, in one place.
3
+ *
4
+ * Four states have to be TELLABLE APART on screen, and that is the whole point
5
+ * of the external-videoclips line (D549 § 7b):
6
+ *
7
+ * - `loading` — never rendered as empty. A list drawn while a query is still
8
+ * pending is a claim the data does not support.
9
+ * - `empty` — a band with no rows, carrying the BAND and the sources that
10
+ * answered for it. "No clips" with neither of those is the lie this whole
11
+ * surface exists to stop telling.
12
+ * - `refused` — the selected band is wider than the bound `clip-band.ts`
13
+ * sets, so nothing was asked. Added with the timebar (D564): a band can be
14
+ * made arbitrarily wide and a day could not, and a range that answered
15
+ * partly would read as the whole of it.
16
+ * - `listed` — rows, plus every source that could NOT contribute, named with
17
+ * its reason verbatim. One unreachable source never empties the others
18
+ * (the dispatcher's rule 2), and the operator must see both halves: today
19
+ * a hub child lists `onboard` and shows `native:reolink:hub` unreachable.
20
+ * - `failed` — the read itself failed. Not an answer, so not "empty" either.
21
+ *
22
+ * There is no client-side source filter here, and that is a decision, not an
23
+ * omission. `listClips` is asked of ONE provider at a time, and NAMING it is
24
+ * required (`provider`, D554 amended) — the operator settled it on 2026-09-20,
25
+ * *"l'utilizzatore è uno solo"* [there is only one user] — so what arrives is already the answer for
26
+ * the provider on screen and there is nothing to filter out of it. What
27
+ * survives unchanged is the rule the old filter existed to protect: every
28
+ * source a camera HAS is still described here, with its availability,
29
+ * whichever provider was asked.
30
+ */
31
+ import type { Clip, ClipSource } from "@camstack/types";
32
+ import type { ClipBand, ClipBandPlan } from "./clip-band.js";
33
+ import { type ClipSourceNotice } from "./clip-source-state.js";
4
34
  /** React Query's settled-ness, narrowed to what this decision needs. */
5
- export type ClipQueryStatus = 'pending' | 'error' | 'success';
35
+ export type ClipQueryStatus = "pending" | "error" | "success";
6
36
  export interface ClipsViewInput {
7
- /**
8
- * The period the list is about, and whether it may be asked for at all
9
- * (`clip-band.ts`). A refused plan means NO query was fired, which is why
10
- * the refusal has to be decided here rather than inferred from a query that
11
- * will stay `pending` for ever.
12
- */
13
- readonly plan: ClipBandPlan;
14
- /**
15
- * The provider the clip list was asked of, or `null` when the camera lists
16
- * NO source to ask.
17
- *
18
- * Naming one is required (D554 amended), so "nobody to ask" is a real state and it
19
- * has to be told apart from "not answered yet": the query never fires, its
20
- * status stays `pending` for ever, and a surface that only consults the
21
- * status spins against a question with no addressee. Exactly the trap
22
- * `too-wide` has, arriving from the other end.
23
- */
24
- readonly provider: string | null;
25
- readonly clipsStatus: ClipQueryStatus;
26
- readonly clips: readonly Clip[];
27
- readonly sourcesStatus: ClipQueryStatus;
28
- readonly sources: readonly ClipSource[];
29
- readonly clipsError?: string;
30
- readonly sourcesError?: string;
37
+ /**
38
+ * The period the list is about, and whether it may be asked for at all
39
+ * (`clip-band.ts`). A refused plan means NO query was fired, which is why
40
+ * the refusal has to be decided here rather than inferred from a query that
41
+ * will stay `pending` for ever.
42
+ */
43
+ readonly plan: ClipBandPlan;
44
+ /**
45
+ * The provider the clip list was asked of, or `null` when the camera lists
46
+ * NO source to ask.
47
+ *
48
+ * Naming one is required (D554 amended), so "nobody to ask" is a real state and it
49
+ * has to be told apart from "not answered yet": the query never fires, its
50
+ * status stays `pending` for ever, and a surface that only consults the
51
+ * status spins against a question with no addressee. Exactly the trap
52
+ * `too-wide` has, arriving from the other end.
53
+ */
54
+ readonly provider: string | null;
55
+ readonly clipsStatus: ClipQueryStatus;
56
+ readonly clips: readonly Clip[];
57
+ readonly sourcesStatus: ClipQueryStatus;
58
+ readonly sources: readonly ClipSource[];
59
+ readonly clipsError?: string;
60
+ readonly sourcesError?: string;
31
61
  }
32
62
  export type ClipsViewState = {
33
- readonly kind: 'loading';
63
+ readonly kind: "loading";
34
64
  } | {
35
- readonly kind: 'failed';
36
- readonly message: string;
65
+ readonly kind: "failed";
66
+ readonly message: string;
37
67
  } | {
38
- /** The band is wider than the bound, so nothing was asked. */
39
- readonly kind: 'refused';
40
- readonly band: ClipBand;
41
- readonly localDays: number;
42
- readonly maxLocalDays: number;
68
+ /** The band is wider than the bound, so nothing was asked. */
69
+ readonly kind: "refused";
70
+ readonly band: ClipBand;
71
+ readonly localDays: number;
72
+ readonly maxLocalDays: number;
43
73
  } | {
44
- readonly kind: 'empty';
45
- readonly band: ClipBand;
46
- readonly answered: readonly ClipSourceNotice[];
47
- readonly silent: readonly ClipSourceNotice[];
48
- /** No source could answer at all — a different fact from a quiet day. */
49
- readonly nobodyAnswered: boolean;
74
+ readonly kind: "empty";
75
+ readonly band: ClipBand;
76
+ readonly answered: readonly ClipSourceNotice[];
77
+ readonly silent: readonly ClipSourceNotice[];
78
+ /** No source could answer at all — a different fact from a quiet day. */
79
+ readonly nobodyAnswered: boolean;
50
80
  } | {
51
- readonly kind: 'listed';
52
- readonly clips: readonly Clip[];
53
- readonly answered: readonly ClipSourceNotice[];
54
- readonly silent: readonly ClipSourceNotice[];
81
+ readonly kind: "listed";
82
+ readonly clips: readonly Clip[];
83
+ readonly answered: readonly ClipSourceNotice[];
84
+ readonly silent: readonly ClipSourceNotice[];
55
85
  };
56
86
  export declare function resolveClipsView(input: ClipsViewInput): ClipsViewState;
@@ -1,6 +1,7 @@
1
+ import { type JSX } from "react";
1
2
  export interface CodeBlockProps {
2
- children: string;
3
- maxHeight?: number;
4
- className?: string;
3
+ children: string;
4
+ maxHeight?: number;
5
+ className?: string;
5
6
  }
6
- export declare function CodeBlock({ children, maxHeight, className }: CodeBlockProps): import("react").JSX.Element;
7
+ export declare function CodeBlock({ children, maxHeight, className }: CodeBlockProps): JSX.Element;
@@ -1,18 +1,19 @@
1
- import { ConfigUISchema, FieldProbeResult } from '@camstack/types';
2
- import { ProbeState } from './config-form-field';
1
+ import { type JSX } from "react";
2
+ import type { ConfigUISchema, FieldProbeResult } from "@camstack/types";
3
+ import type { ProbeState } from "./config-form-field";
3
4
  export type TranslationFn = (key: string) => string;
4
5
  export declare function resolveLabel(value: string | undefined, t?: TranslationFn): string | undefined;
5
6
  interface FormBuilderProps {
6
- schema: ConfigUISchema;
7
- values: Record<string, unknown>;
8
- onChange: (values: Record<string, unknown>) => void;
9
- disabled?: boolean;
10
- translationFn?: TranslationFn;
11
- onTestField?: (key: string, value: unknown) => Promise<FieldProbeResult>;
12
- /** External probe results from useProbeAll hook */
13
- probeResults?: Record<string, ProbeState>;
14
- /** Callback to clear a probe result when a field value changes */
15
- onClearProbe?: (key: string) => void;
7
+ schema: ConfigUISchema;
8
+ values: Record<string, unknown>;
9
+ onChange: (values: Record<string, unknown>) => void;
10
+ disabled?: boolean;
11
+ translationFn?: TranslationFn;
12
+ onTestField?: (key: string, value: unknown) => Promise<FieldProbeResult>;
13
+ /** External probe results from useProbeAll hook */
14
+ probeResults?: Record<string, ProbeState>;
15
+ /** Callback to clear a probe result when a field value changes */
16
+ onClearProbe?: (key: string) => void;
16
17
  }
17
- export declare function ConfigFormBuilder({ schema, values, onChange, disabled, translationFn, onTestField, probeResults, onClearProbe, }: FormBuilderProps): import("react").JSX.Element;
18
+ export declare function ConfigFormBuilder({ schema, values, onChange, disabled, translationFn, onTestField, probeResults, onClearProbe }: FormBuilderProps): JSX.Element;
18
19
  export {};
@@ -1,70 +1,71 @@
1
- import { ConfigField, ConfigNodeSelectField, ConfigNodeMultiSelectField, FieldProbeResult } from '@camstack/types';
2
- import { TranslationFn } from './config-form-builder';
1
+ import { type JSX } from "react";
2
+ import type { ConfigField, ConfigNodeSelectField, ConfigNodeMultiSelectField, FieldProbeResult } from "@camstack/types";
3
+ import type { TranslationFn } from "./config-form-builder";
3
4
  /** Probe state for a single field — exported for callers that need to track probe lifecycle externally. */
4
5
  export interface ProbeState {
5
- status: 'probing' | 'ok' | 'error';
6
- result?: FieldProbeResult;
6
+ status: "probing" | "ok" | "error";
7
+ result?: FieldProbeResult;
7
8
  }
8
9
  interface FormFieldProps {
9
- field: ConfigField;
10
- values: Record<string, unknown>;
11
- onChange: (key: string, value: unknown) => void;
12
- disabled?: boolean;
13
- translationFn?: TranslationFn;
14
- /**
15
- * Dedicated probe callback — used by the device-creation dialog where
16
- * the device doesn't exist yet so the generic `onAction` routing
17
- * cannot resolve an addon owner. For existing-device forms prefer
18
- * `onAction` with action `'test-probe'`: the probe field falls back
19
- * to it when `onTestField` is absent, so the two paths converge.
20
- */
21
- onTestField?: (key: string, value: unknown) => Promise<FieldProbeResult>;
22
- /** External probe result (from "Test All" button) */
23
- externalProbe?: {
24
- status: 'probing' | 'ok' | 'error';
25
- result?: FieldProbeResult;
26
- };
27
- /**
28
- * Inline-action callback. Fired by icon buttons on any field
29
- * (copy-value, regenerate-rtsp-token, …) and by the probe field's
30
- * Test button when `onTestField` is not provided — in that case the
31
- * action name is `'test-probe'` and the current field value flows
32
- * through the third arg so the handler can probe it.
33
- *
34
- * Returns `Promise<unknown>` (not `void`) because some actions yield
35
- * a result the caller wants (the probe returns a `FieldProbeResult`).
36
- */
37
- onAction?: (action: string, key: string, value?: unknown) => Promise<unknown>;
38
- /** All fields in the section — used to resolve defaults for showWhen conditions */
39
- allFields?: readonly ConfigField[];
10
+ field: ConfigField;
11
+ values: Record<string, unknown>;
12
+ onChange: (key: string, value: unknown) => void;
13
+ disabled?: boolean;
14
+ translationFn?: TranslationFn;
15
+ /**
16
+ * Dedicated probe callback — used by the device-creation dialog where
17
+ * the device doesn't exist yet so the generic `onAction` routing
18
+ * cannot resolve an addon owner. For existing-device forms prefer
19
+ * `onAction` with action `'test-probe'`: the probe field falls back
20
+ * to it when `onTestField` is absent, so the two paths converge.
21
+ */
22
+ onTestField?: (key: string, value: unknown) => Promise<FieldProbeResult>;
23
+ /** External probe result (from "Test All" button) */
24
+ externalProbe?: {
25
+ status: "probing" | "ok" | "error";
26
+ result?: FieldProbeResult;
27
+ };
28
+ /**
29
+ * Inline-action callback. Fired by icon buttons on any field
30
+ * (copy-value, regenerate-rtsp-token, …) and by the probe field's
31
+ * Test button when `onTestField` is not provided — in that case the
32
+ * action name is `'test-probe'` and the current field value flows
33
+ * through the third arg so the handler can probe it.
34
+ *
35
+ * Returns `Promise<unknown>` (not `void`) because some actions yield
36
+ * a result the caller wants (the probe returns a `FieldProbeResult`).
37
+ */
38
+ onAction?: (action: string, key: string, value?: unknown) => Promise<unknown>;
39
+ /** All fields in the section — used to resolve defaults for showWhen conditions */
40
+ allFields?: readonly ConfigField[];
40
41
  }
41
- export declare function NodeSelectField({ field, value, onChange, disabled, translationFn, }: {
42
- field: ConfigNodeSelectField;
43
- value: unknown;
44
- onChange: (v: unknown) => void;
45
- disabled?: boolean;
46
- translationFn?: TranslationFn;
47
- }): import("react").JSX.Element;
48
- export declare function NodeMultiSelectField({ field, value, onChange, disabled, translationFn, }: {
49
- field: ConfigNodeMultiSelectField;
50
- value: unknown;
51
- onChange: (v: unknown) => void;
52
- disabled?: boolean;
53
- translationFn?: TranslationFn;
54
- }): import("react").JSX.Element;
42
+ export declare function NodeSelectField({ field, value, onChange, disabled, translationFn }: {
43
+ field: ConfigNodeSelectField;
44
+ value: unknown;
45
+ onChange: (v: unknown) => void;
46
+ disabled?: boolean;
47
+ translationFn?: TranslationFn;
48
+ }): JSX.Element | null;
49
+ export declare function NodeMultiSelectField({ field, value, onChange, disabled, translationFn }: {
50
+ field: ConfigNodeMultiSelectField;
51
+ value: unknown;
52
+ onChange: (v: unknown) => void;
53
+ disabled?: boolean;
54
+ translationFn?: TranslationFn;
55
+ }): JSX.Element | null;
55
56
  /**
56
- * Resolve a `ConfigCondition` against the form's flat values bag and the
57
- * sibling-field list (used to recover schema defaults when the
58
- * referenced field hasn't been touched yet). Returns `true` for fields
59
- * with no `showWhen` — i.e. always visible — and for fields whose
60
- * condition is missing a recognised operator (forward-compat: a future
61
- * operator added to `ConfigCondition` won't accidentally hide every
62
- * field on older clients).
63
- *
64
- * Exported so callers (FormBuilder section renderer, future
65
- * sub-tab visibility checks, …) can pre-evaluate which fields would be
66
- * rendered without instantiating a React subtree.
67
- */
57
+ * Resolve a `ConfigCondition` against the form's flat values bag and the
58
+ * sibling-field list (used to recover schema defaults when the
59
+ * referenced field hasn't been touched yet). Returns `true` for fields
60
+ * with no `showWhen` — i.e. always visible — and for fields whose
61
+ * condition is missing a recognised operator (forward-compat: a future
62
+ * operator added to `ConfigCondition` won't accidentally hide every
63
+ * field on older clients).
64
+ *
65
+ * Exported so callers (FormBuilder section renderer, future
66
+ * sub-tab visibility checks, …) can pre-evaluate which fields would be
67
+ * rendered without instantiating a React subtree.
68
+ */
68
69
  export declare function isFieldVisible(field: ConfigField, values: Record<string, unknown>, allFields?: readonly ConfigField[]): boolean;
69
- export declare function FormField({ field, values, onChange, disabled, translationFn, onTestField, externalProbe, allFields, onAction, }: FormFieldProps): import("react").JSX.Element | null;
70
+ export declare function FormField({ field, values, onChange, disabled, translationFn, onTestField, externalProbe, allFields, onAction }: FormFieldProps): JSX.Element | null;
70
71
  export { FormField as ConfigFormField };
@@ -1,11 +1,12 @@
1
+ import { type JSX } from "react";
1
2
  export interface ConfigIconFieldControlProps {
2
- /** The field's label — names the picker for assistive tech. */
3
- readonly label: string;
4
- /** The stored value (anything — only a vocabulary key is honoured). */
5
- readonly value: unknown;
6
- /** The field's default key; `''` when the schema declares none. */
7
- readonly defaultKey: string;
8
- readonly disabled?: boolean;
9
- readonly onChange: (key: string) => void;
3
+ /** The field's label — names the picker for assistive tech. */
4
+ readonly label: string;
5
+ /** The stored value (anything — only a vocabulary key is honoured). */
6
+ readonly value: unknown;
7
+ /** The field's default key; `''` when the schema declares none. */
8
+ readonly defaultKey: string;
9
+ readonly disabled?: boolean;
10
+ readonly onChange: (key: string) => void;
10
11
  }
11
- export declare function ConfigIconFieldControl({ label, value, defaultKey, disabled, onChange, }: ConfigIconFieldControlProps): import("react").JSX.Element;
12
+ export declare function ConfigIconFieldControl({ label, value, defaultKey, disabled, onChange }: ConfigIconFieldControlProps): JSX.Element;
@@ -1,41 +1,65 @@
1
- import { ConfigField, SecretFieldView } from '@camstack/types';
2
- import { ReactNode } from 'react';
1
+ /**
2
+ * A keychain-stored secret in a settings form (D787, D789) — drawn as ONE
3
+ * password input with an eye.
4
+ *
5
+ * The form never holds the value. It receives the field's VIEW —
6
+ * `{ $secret, v, set: true }` when something is stored, `null` when nothing
7
+ * is — and sends back exactly one of three things:
8
+ *
9
+ * - the view, unchanged ........ KEEP (an untouched field sends nothing, so
10
+ * the hydrated view stays the value; a revealed
11
+ * value left as it was sends the view again);
12
+ * - a non-empty typed string ... CHANGE (the owner stores it in the keychain);
13
+ * - `{ $secretClear: true }` ... CLEAR — only when the operator emptied a box
14
+ * that showed a value they revealed or typed.
15
+ *
16
+ * `''` is never sent for "remove": the save path reads it as KEEP, because an
17
+ * empty string is what a defaults fallback writes back. An untouched field
18
+ * looks empty (a masked placeholder) and so can never clear by accident.
19
+ *
20
+ * The eye on an untouched stored secret asks the host's audited
21
+ * `keychain-admin.reveal` (provided with {@link SecretRevealProvider}) for the
22
+ * value; a host that provides none, or a pre-keychain inline value (no ref),
23
+ * cannot reveal — the eye then only shows what the operator types.
24
+ */
25
+ import { type ConfigField, type SecretFieldView } from "@camstack/types";
26
+ import { type ReactNode, type JSX } from "react";
3
27
  /** Returns the stored value of a ref (audited by the host). */
4
28
  export type SecretRevealFn = (ref: string) => Promise<string>;
5
29
  /** How long the System → Secrets page shows a revealed value. */
6
- export declare const SECRET_REVEAL_MS = 10000;
30
+ export declare const SECRET_REVEAL_MS = 1e4;
7
31
  /** What an untouched stored secret shows in place of its value. */
8
- export declare const SECRET_MASK_PLACEHOLDER = "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022";
9
- export declare function SecretRevealProvider({ reveal, children, }: {
10
- readonly reveal: SecretRevealFn;
11
- readonly children: ReactNode;
12
- }): import("react").JSX.Element;
32
+ export declare const SECRET_MASK_PLACEHOLDER = "••••••••";
33
+ export declare function SecretRevealProvider({ reveal, children }: {
34
+ readonly reveal: SecretRevealFn;
35
+ readonly children: ReactNode;
36
+ }): JSX.Element;
13
37
  /** Does this value belong to the keychain rendering (a view, or "not set")? */
14
38
  export declare function isKeychainFieldValue(value: unknown): boolean;
15
39
  /**
16
- * What the operator has done to the field. `untouched` shows nothing and
17
- * sends nothing; `visible` holds text the operator can see — revealed (then
18
- * `revealed` is the stored value) or typed.
19
- */
40
+ * What the operator has done to the field. `untouched` shows nothing and
41
+ * sends nothing; `visible` holds text the operator can see — revealed (then
42
+ * `revealed` is the stored value) or typed.
43
+ */
20
44
  export type SecretEntry = {
21
- readonly kind: 'untouched';
45
+ readonly kind: "untouched";
22
46
  } | {
23
- readonly kind: 'visible';
24
- readonly text: string;
25
- readonly revealed: string | null;
47
+ readonly kind: "visible";
48
+ readonly text: string;
49
+ readonly revealed: string | null;
26
50
  };
27
51
  /**
28
- * The value the form sends for an entry. `stored` — something is stored (or
29
- * already marked for removal) — is what makes an emptied box a CLEAR.
30
- */
52
+ * The value the form sends for an entry. `stored` — something is stored (or
53
+ * already marked for removal) — is what makes an emptied box a CLEAR.
54
+ */
31
55
  export declare function secretSubmitValue(entry: SecretEntry, original: SecretFieldView | null, stored: boolean): unknown;
32
56
  export interface SecretFieldProps {
33
- readonly field: ConfigField;
34
- /** The view (or null) the form was hydrated with, or what the operator has done since. */
35
- readonly value: unknown;
36
- readonly onChange: (value: unknown) => void;
37
- readonly disabled?: boolean;
38
- /** Multi-line entry (a PEM key). */
39
- readonly multiline?: boolean;
57
+ readonly field: ConfigField;
58
+ /** The view (or null) the form was hydrated with, or what the operator has done since. */
59
+ readonly value: unknown;
60
+ readonly onChange: (value: unknown) => void;
61
+ readonly disabled?: boolean;
62
+ /** Multi-line entry (a PEM key). */
63
+ readonly multiline?: boolean;
40
64
  }
41
- export declare function SecretFieldControl({ field, value, onChange, disabled, multiline, }: SecretFieldProps): import("react").JSX.Element;
65
+ export declare function SecretFieldControl({ field, value, onChange, disabled, multiline }: SecretFieldProps): JSX.Element;
@@ -1,41 +1,54 @@
1
- import { ReactNode, ComponentType } from 'react';
2
- import { ButtonProps } from '../primitives/button';
1
+ /**
2
+ * ConfirmActionButton — destructive-action button with a modal confirm.
3
+ *
4
+ * Two-step UX for any operation operators shouldn't trigger by accident:
5
+ * reboot device, restart addon, regenerate token, etc. The trigger is a
6
+ * normal Button that opens a Dialog; confirming runs the async action,
7
+ * the trigger spinner-disables itself for the duration, and the dialog
8
+ * closes on success. Errors surface inline at the dialog's bottom.
9
+ *
10
+ * Generic on `TResult` so callers don't have to discard the return
11
+ * value. Pass an `icon` to render it inside the trigger (e.g. RotateCw
12
+ * for reboot, RefreshCw for restart).
13
+ */
14
+ import { type ReactNode, type ComponentType, type JSX } from "react";
15
+ import { type ButtonProps } from "../primitives/button";
3
16
  export interface ConfirmActionButtonProps<TResult> {
4
- /** Visible label on the trigger button. */
5
- readonly label: string;
6
- /** Icon component (lucide-react) rendered inside the trigger. */
7
- readonly icon?: ComponentType<{
8
- className?: string;
9
- }>;
10
- /** Dialog title. Defaults to "Confirm action". */
11
- readonly title?: string;
12
- /**
13
- * Dialog body — accepts either a string (rendered as DialogDescription)
14
- * or arbitrary ReactNode for callers that need lists, code blocks, etc.
15
- */
16
- readonly description?: ReactNode;
17
- /** Label on the confirm button inside the dialog. Defaults to `label`. */
18
- readonly confirmLabel?: string;
19
- /** Visual variant for the trigger button (defaults to `outline`). */
20
- readonly triggerVariant?: ButtonProps['variant'];
21
- /**
22
- * Visual variant for the confirm button inside the dialog. Defaults to
23
- * `danger` since this component is meant for destructive actions.
24
- */
25
- readonly confirmVariant?: ButtonProps['variant'];
26
- /** Trigger button size — propagated to the underlying Button. */
27
- readonly size?: ButtonProps['size'];
28
- /** Disable the trigger entirely (gates rendering instead of UX state). */
29
- readonly disabled?: boolean;
30
- /** Optional extra class name on the trigger. */
31
- readonly className?: string;
32
- /**
33
- * The async action to run on confirm. Must throw on failure so this
34
- * component can surface the error inline. The result is returned to
35
- * `onSuccess` for callers that need it (e.g. to invalidate queries).
36
- */
37
- readonly action: () => Promise<TResult>;
38
- /** Called after `action` resolves, with the result. */
39
- readonly onSuccess?: (result: TResult) => void;
17
+ /** Visible label on the trigger button. */
18
+ readonly label: string;
19
+ /** Icon component (lucide-react) rendered inside the trigger. */
20
+ readonly icon?: ComponentType<{
21
+ className?: string;
22
+ }>;
23
+ /** Dialog title. Defaults to "Confirm action". */
24
+ readonly title?: string;
25
+ /**
26
+ * Dialog body — accepts either a string (rendered as DialogDescription)
27
+ * or arbitrary ReactNode for callers that need lists, code blocks, etc.
28
+ */
29
+ readonly description?: ReactNode;
30
+ /** Label on the confirm button inside the dialog. Defaults to `label`. */
31
+ readonly confirmLabel?: string;
32
+ /** Visual variant for the trigger button (defaults to `outline`). */
33
+ readonly triggerVariant?: ButtonProps["variant"];
34
+ /**
35
+ * Visual variant for the confirm button inside the dialog. Defaults to
36
+ * `danger` since this component is meant for destructive actions.
37
+ */
38
+ readonly confirmVariant?: ButtonProps["variant"];
39
+ /** Trigger button size — propagated to the underlying Button. */
40
+ readonly size?: ButtonProps["size"];
41
+ /** Disable the trigger entirely (gates rendering instead of UX state). */
42
+ readonly disabled?: boolean;
43
+ /** Optional extra class name on the trigger. */
44
+ readonly className?: string;
45
+ /**
46
+ * The async action to run on confirm. Must throw on failure so this
47
+ * component can surface the error inline. The result is returned to
48
+ * `onSuccess` for callers that need it (e.g. to invalidate queries).
49
+ */
50
+ readonly action: () => Promise<TResult>;
51
+ /** Called after `action` resolves, with the result. */
52
+ readonly onSuccess?: (result: TResult) => void;
40
53
  }
41
- export declare function ConfirmActionButton<TResult>({ label, icon: Icon, title, description, confirmLabel, triggerVariant, confirmVariant, size, disabled, className, action, onSuccess, }: ConfirmActionButtonProps<TResult>): import("react").JSX.Element;
54
+ export declare function ConfirmActionButton<TResult>({ label, icon: Icon, title, description, confirmLabel, triggerVariant, confirmVariant, size, disabled, className, action, onSuccess }: ConfirmActionButtonProps<TResult>): JSX.Element;