@camstack/ui-library 1.1.6 → 1.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -10760,6 +10760,26 @@ var Smartphone = createLucideIcon("smartphone", [["rect", {
10760
10760
  * This source code is licensed under the ISC license.
10761
10761
  * See the LICENSE file in the root directory of this source tree.
10762
10762
  */
10763
+ var Sprout = createLucideIcon("sprout", [
10764
+ ["path", {
10765
+ d: "M14 9.536V7a4 4 0 0 1 4-4h1.5a.5.5 0 0 1 .5.5V5a4 4 0 0 1-4 4 4 4 0 0 0-4 4c0 2 1 3 1 5a5 5 0 0 1-1 3",
10766
+ key: "139s4v"
10767
+ }],
10768
+ ["path", {
10769
+ d: "M4 9a5 5 0 0 1 8 4 5 5 0 0 1-8-4",
10770
+ key: "1dlkgp"
10771
+ }],
10772
+ ["path", {
10773
+ d: "M5 21h14",
10774
+ key: "11awu3"
10775
+ }]
10776
+ ]);
10777
+ /**
10778
+ * @license lucide-react v0.576.0 - ISC
10779
+ *
10780
+ * This source code is licensed under the ISC license.
10781
+ * See the LICENSE file in the root directory of this source tree.
10782
+ */
10763
10783
  var Square = createLucideIcon("square", [["rect", {
10764
10784
  width: "18",
10765
10785
  height: "18",
@@ -10784,6 +10804,52 @@ var Star = createLucideIcon("star", [["path", {
10784
10804
  * This source code is licensed under the ISC license.
10785
10805
  * See the LICENSE file in the root directory of this source tree.
10786
10806
  */
10807
+ var SunMedium = createLucideIcon("sun-medium", [
10808
+ ["circle", {
10809
+ cx: "12",
10810
+ cy: "12",
10811
+ r: "4",
10812
+ key: "4exip2"
10813
+ }],
10814
+ ["path", {
10815
+ d: "M12 3v1",
10816
+ key: "1asbbs"
10817
+ }],
10818
+ ["path", {
10819
+ d: "M12 20v1",
10820
+ key: "1wcdkc"
10821
+ }],
10822
+ ["path", {
10823
+ d: "M3 12h1",
10824
+ key: "lp3yf2"
10825
+ }],
10826
+ ["path", {
10827
+ d: "M20 12h1",
10828
+ key: "1vloll"
10829
+ }],
10830
+ ["path", {
10831
+ d: "m18.364 5.636-.707.707",
10832
+ key: "1hakh0"
10833
+ }],
10834
+ ["path", {
10835
+ d: "m6.343 17.657-.707.707",
10836
+ key: "18m9nf"
10837
+ }],
10838
+ ["path", {
10839
+ d: "m5.636 5.636.707.707",
10840
+ key: "1xv1c5"
10841
+ }],
10842
+ ["path", {
10843
+ d: "m17.657 17.657.707.707",
10844
+ key: "vl76zb"
10845
+ }]
10846
+ ]);
10847
+ /**
10848
+ * @license lucide-react v0.576.0 - ISC
10849
+ *
10850
+ * This source code is licensed under the ISC license.
10851
+ * See the LICENSE file in the root directory of this source tree.
10852
+ */
10787
10853
  var Sun = createLucideIcon("sun", [
10788
10854
  ["circle", {
10789
10855
  cx: "12",
@@ -10830,6 +10896,46 @@ var Sun = createLucideIcon("sun", [
10830
10896
  * This source code is licensed under the ISC license.
10831
10897
  * See the LICENSE file in the root directory of this source tree.
10832
10898
  */
10899
+ var Sunrise = createLucideIcon("sunrise", [
10900
+ ["path", {
10901
+ d: "M12 2v8",
10902
+ key: "1q4o3n"
10903
+ }],
10904
+ ["path", {
10905
+ d: "m4.93 10.93 1.41 1.41",
10906
+ key: "2a7f42"
10907
+ }],
10908
+ ["path", {
10909
+ d: "M2 18h2",
10910
+ key: "j10viu"
10911
+ }],
10912
+ ["path", {
10913
+ d: "M20 18h2",
10914
+ key: "wocana"
10915
+ }],
10916
+ ["path", {
10917
+ d: "m19.07 10.93-1.41 1.41",
10918
+ key: "15zs5n"
10919
+ }],
10920
+ ["path", {
10921
+ d: "M22 22H2",
10922
+ key: "19qnx5"
10923
+ }],
10924
+ ["path", {
10925
+ d: "m8 6 4-4 4 4",
10926
+ key: "ybng9g"
10927
+ }],
10928
+ ["path", {
10929
+ d: "M16 18a4 4 0 0 0-8 0",
10930
+ key: "1lzouq"
10931
+ }]
10932
+ ]);
10933
+ /**
10934
+ * @license lucide-react v0.576.0 - ISC
10935
+ *
10936
+ * This source code is licensed under the ISC license.
10937
+ * See the LICENSE file in the root directory of this source tree.
10938
+ */
10833
10939
  var Table2 = createLucideIcon("table-2", [["path", {
10834
10940
  d: "M9 3H5a2 2 0 0 0-2 2v4m6-6h10a2 2 0 0 1 2 2v4M9 3v18m0 0h10a2 2 0 0 0 2-2V9M9 21H5a2 2 0 0 1-2-2V9m0 0h18",
10835
10941
  key: "gugj83"
@@ -14649,6 +14755,26 @@ var DEVICE_ROLE_META = {
14649
14755
  icon: Gauge,
14650
14756
  label: "Pressure"
14651
14757
  },
14758
+ [DeviceRole.WindSensor]: {
14759
+ icon: Wind,
14760
+ label: "Wind"
14761
+ },
14762
+ [DeviceRole.RainSensor]: {
14763
+ icon: CloudRain,
14764
+ label: "Rain"
14765
+ },
14766
+ [DeviceRole.UvSensor]: {
14767
+ icon: SunMedium,
14768
+ label: "UV index"
14769
+ },
14770
+ [DeviceRole.SolarRadiationSensor]: {
14771
+ icon: Sunrise,
14772
+ label: "Solar radiation"
14773
+ },
14774
+ [DeviceRole.SoilMoistureSensor]: {
14775
+ icon: Sprout,
14776
+ label: "Soil moisture"
14777
+ },
14652
14778
  [DeviceRole.PowerSensor]: {
14653
14779
  icon: Zap,
14654
14780
  label: "Power"
@@ -17060,6 +17186,8 @@ var useDeviceManagerAdoptionRefresh = trpc.deviceManager.adoptionRefresh.useMuta
17060
17186
  var useDeviceManagerAdoptionAdopt = trpc.deviceManager.adoptionAdopt.useMutation;
17061
17187
  /** Generated alias around `trpc.deviceManager.adoptionRelease.useMutation`. */
17062
17188
  var useDeviceManagerAdoptionRelease = trpc.deviceManager.adoptionRelease.useMutation;
17189
+ /** Generated alias around `trpc.deviceManager.adoptionResync.useMutation`. */
17190
+ var useDeviceManagerAdoptionResync = trpc.deviceManager.adoptionResync.useMutation;
17063
17191
  /** Generated alias around `trpc.deviceManager.testField.useMutation`. */
17064
17192
  var useDeviceManagerTestField = trpc.deviceManager.testField.useMutation;
17065
17193
  /** Generated alias around `trpc.deviceManager.getDeviceStatusAggregate.useQuery`. */
@@ -18107,6 +18235,31 @@ var ROLE_DESCRIPTOR = {
18107
18235
  field: "value",
18108
18236
  getSliceHandle: (s) => s.numericSensor
18109
18237
  },
18238
+ "wind-sensor": {
18239
+ kind: "numeric",
18240
+ field: "value",
18241
+ getSliceHandle: (s) => s.numericSensor
18242
+ },
18243
+ "rain-sensor": {
18244
+ kind: "numeric",
18245
+ field: "value",
18246
+ getSliceHandle: (s) => s.numericSensor
18247
+ },
18248
+ "uv-sensor": {
18249
+ kind: "numeric",
18250
+ field: "value",
18251
+ getSliceHandle: (s) => s.numericSensor
18252
+ },
18253
+ "solar-radiation-sensor": {
18254
+ kind: "numeric",
18255
+ field: "value",
18256
+ getSliceHandle: (s) => s.numericSensor
18257
+ },
18258
+ "soil-moisture-sensor": {
18259
+ kind: "numeric",
18260
+ field: "value",
18261
+ getSliceHandle: (s) => s.numericSensor
18262
+ },
18110
18263
  "power-sensor": {
18111
18264
  kind: "numeric",
18112
18265
  field: "watts",
@@ -18620,6 +18773,10 @@ function vacuumStateMeta(state) {
18620
18773
  label: "Docked",
18621
18774
  tone: "text-success"
18622
18775
  };
18776
+ case "drying": return {
18777
+ label: "Drying",
18778
+ tone: "text-warning"
18779
+ };
18623
18780
  case "idle": return {
18624
18781
  label: "Idle",
18625
18782
  tone: "text-foreground-subtle"
@@ -18676,6 +18833,12 @@ function vacuumGraphicTint(state) {
18676
18833
  docked: true,
18677
18834
  active: false
18678
18835
  };
18836
+ case "drying": return {
18837
+ glow: "bg-warning/10",
18838
+ accent: "text-warning",
18839
+ docked: true,
18840
+ active: false
18841
+ };
18679
18842
  case "paused": return {
18680
18843
  glow: "bg-warning/10",
18681
18844
  accent: "text-warning",
@@ -18846,8 +19009,10 @@ function tankMeta(kind) {
18846
19009
  /**
18847
19010
  * TankIndicator — one tank row: label + glyph, then a fill bar (numeric
18848
19011
  * level) or a status pill (discrete), tinted by `tankAlert`. Renders
18849
- * nothing when the tank is absent (null) or its reading is unknown
18850
- * (both fields null).
19012
+ * nothing only when the tank is absent (null). A PRESENT tank whose
19013
+ * reading is unknown (both fields null) still renders a neutral row with
19014
+ * an em-dash placeholder, so the user always sees which tanks the robot
19015
+ * has (Dreame reports presence but no fill telemetry).
18851
19016
  */
18852
19017
  function TankIndicator({ kind, tank }) {
18853
19018
  if (tank === null) return null;
@@ -18883,15 +19048,22 @@ function TankIndicator({ kind, tank }) {
18883
19048
  children: tank.status
18884
19049
  })]
18885
19050
  });
18886
- return null;
19051
+ return /* @__PURE__ */ jsxs("div", {
19052
+ className: "flex items-center gap-2 text-xs",
19053
+ children: [/* @__PURE__ */ jsxs("span", {
19054
+ className: "inline-flex items-center gap-1 w-24 shrink-0 text-foreground-subtle",
19055
+ children: [meta.icon, meta.label]
19056
+ }), /* @__PURE__ */ jsx("span", {
19057
+ className: "inline-flex items-center rounded-full px-2 py-0.5 text-[11px] font-medium bg-surface-hover text-foreground-subtle",
19058
+ children: "—"
19059
+ })]
19060
+ });
18887
19061
  }
18888
19062
  /**
18889
19063
  * TanksRow — compact 2-column grid of the present tanks for the vacuum
18890
- * hero. Absent tanks (null) are skipped; the row renders nothing unless at
18891
- * least one tank is actually renderablepresent AND with a known reading
18892
- * (level or status). A tank that is present but all-unknown
18893
- * (`{level:null,status:null}`) renders nothing, so a hero of only such
18894
- * tanks would otherwise show an empty bordered box.
19064
+ * hero. Absent tanks (null) are skipped; every PRESENT tank is shown, even
19065
+ * when its reading is unknown (`{level:null,status:null}`)it renders a
19066
+ * neutral em-dash row. The row renders iff the robot has at least one tank.
18895
19067
  */
18896
19068
  function TanksRow({ cleanWater, dirtyWater, detergent, dustBin }) {
18897
19069
  const tanks = [
@@ -18900,7 +19072,7 @@ function TanksRow({ cleanWater, dirtyWater, detergent, dustBin }) {
18900
19072
  ["detergent", detergent],
18901
19073
  ["dustBin", dustBin]
18902
19074
  ];
18903
- if (!tanks.some(([, t]) => t !== null && (t.level !== null || t.status !== null))) return null;
19075
+ if (!tanks.some(([, t]) => t !== null)) return null;
18904
19076
  return /* @__PURE__ */ jsx("div", {
18905
19077
  className: "grid grid-cols-1 gap-x-6 gap-y-2 rounded-md border border-border bg-surface-hover/40 p-3 sm:grid-cols-2",
18906
19078
  children: tanks.map(([kind, tank]) => /* @__PURE__ */ jsx(TankIndicator, {
@@ -18994,52 +19166,72 @@ function VacuumHeroCard({ trpc, deviceId }) {
18994
19166
  className: "flex items-center gap-6",
18995
19167
  children: [/* @__PURE__ */ jsx(VacuumGraphic, { state }), /* @__PURE__ */ jsxs("div", {
18996
19168
  className: "flex flex-col gap-3 flex-1",
18997
- children: [/* @__PURE__ */ jsxs("div", {
18998
- className: "flex items-center justify-between",
18999
- children: [/* @__PURE__ */ jsx("span", {
19000
- className: cn("text-3xl font-semibold", meta.tone),
19001
- children: meta.label
19002
- }), slice?.batteryLevel != null && /* @__PURE__ */ jsx(BatteryBadge$2, { level: slice.batteryLevel })]
19003
- }), /* @__PURE__ */ jsxs("div", {
19004
- className: "flex items-center gap-2",
19005
- children: [
19006
- /* @__PURE__ */ jsx(VacuumHeroButton, {
19007
- label: "Start",
19008
- busy,
19009
- active: state === "cleaning",
19010
- onClick: () => press(cap.start),
19011
- children: /* @__PURE__ */ jsx(Play, { className: "h-5 w-5" })
19012
- }),
19013
- /* @__PURE__ */ jsx(VacuumHeroButton, {
19014
- label: "Pause",
19015
- busy,
19016
- active: state === "paused",
19017
- onClick: () => press(cap.pause),
19018
- children: /* @__PURE__ */ jsx(Pause, { className: "h-5 w-5" })
19019
- }),
19020
- /* @__PURE__ */ jsx(VacuumHeroButton, {
19021
- label: "Stop",
19022
- busy,
19023
- active: false,
19024
- onClick: () => press(cap.stop),
19025
- children: /* @__PURE__ */ jsx(Square, { className: "h-4 w-4" })
19026
- }),
19027
- /* @__PURE__ */ jsx(VacuumHeroButton, {
19028
- label: "Return to base",
19029
- busy,
19030
- active: state === "returning",
19031
- onClick: () => press(cap.returnToBase),
19032
- children: /* @__PURE__ */ jsx(House, { className: "h-5 w-5" })
19033
- }),
19034
- /* @__PURE__ */ jsx(VacuumHeroButton, {
19035
- label: "Locate",
19036
- busy,
19037
- active: false,
19038
- onClick: () => press(cap.locate),
19039
- children: /* @__PURE__ */ jsx(Megaphone, { className: "h-5 w-5" })
19040
- })
19041
- ]
19042
- })]
19169
+ children: [
19170
+ /* @__PURE__ */ jsxs("div", {
19171
+ className: "flex items-center justify-between",
19172
+ children: [/* @__PURE__ */ jsx("span", {
19173
+ className: cn("text-3xl font-semibold", meta.tone),
19174
+ children: meta.label
19175
+ }), slice?.batteryLevel != null && /* @__PURE__ */ jsx(BatteryBadge$2, { level: slice.batteryLevel })]
19176
+ }),
19177
+ slice?.progressPercent != null && /* @__PURE__ */ jsxs("div", {
19178
+ className: "flex items-center gap-2",
19179
+ children: [/* @__PURE__ */ jsx("div", {
19180
+ className: "h-1.5 flex-1 rounded bg-surface-hover overflow-hidden",
19181
+ children: /* @__PURE__ */ jsx("div", {
19182
+ className: "h-full bg-primary transition-[width] duration-500",
19183
+ style: { width: `${Math.max(0, Math.min(100, slice.progressPercent))}%` }
19184
+ })
19185
+ }), /* @__PURE__ */ jsxs("span", {
19186
+ className: "tabular-nums text-xs text-foreground-subtle",
19187
+ children: [Math.round(slice.progressPercent), "%"]
19188
+ })]
19189
+ }),
19190
+ slice?.errorCode != null && slice.errorCode !== 0 && /* @__PURE__ */ jsxs("div", {
19191
+ className: "inline-flex items-center gap-1 text-xs text-destructive",
19192
+ children: [/* @__PURE__ */ jsx(TriangleAlert, { className: "h-3.5 w-3.5" }), /* @__PURE__ */ jsx("span", { children: slice.errorLabel ?? `Error ${slice.errorCode}` })]
19193
+ }),
19194
+ /* @__PURE__ */ jsxs("div", {
19195
+ className: "flex items-center gap-2",
19196
+ children: [
19197
+ /* @__PURE__ */ jsx(VacuumHeroButton, {
19198
+ label: "Start",
19199
+ busy,
19200
+ active: state === "cleaning",
19201
+ onClick: () => press(cap.start),
19202
+ children: /* @__PURE__ */ jsx(Play, { className: "h-5 w-5" })
19203
+ }),
19204
+ /* @__PURE__ */ jsx(VacuumHeroButton, {
19205
+ label: "Pause",
19206
+ busy,
19207
+ active: state === "paused",
19208
+ onClick: () => press(cap.pause),
19209
+ children: /* @__PURE__ */ jsx(Pause, { className: "h-5 w-5" })
19210
+ }),
19211
+ /* @__PURE__ */ jsx(VacuumHeroButton, {
19212
+ label: "Stop",
19213
+ busy,
19214
+ active: false,
19215
+ onClick: () => press(cap.stop),
19216
+ children: /* @__PURE__ */ jsx(Square, { className: "h-4 w-4" })
19217
+ }),
19218
+ /* @__PURE__ */ jsx(VacuumHeroButton, {
19219
+ label: "Return to base",
19220
+ busy,
19221
+ active: state === "returning",
19222
+ onClick: () => press(cap.returnToBase),
19223
+ children: /* @__PURE__ */ jsx(House, { className: "h-5 w-5" })
19224
+ }),
19225
+ /* @__PURE__ */ jsx(VacuumHeroButton, {
19226
+ label: "Locate",
19227
+ busy,
19228
+ active: false,
19229
+ onClick: () => press(cap.locate),
19230
+ children: /* @__PURE__ */ jsx(Megaphone, { className: "h-5 w-5" })
19231
+ })
19232
+ ]
19233
+ })
19234
+ ]
19043
19235
  })]
19044
19236
  }),
19045
19237
  fanSpeeds.length > 0 && /* @__PURE__ */ jsxs("label", {
@@ -19267,6 +19459,37 @@ function LawnMowerGraphic({ activity }) {
19267
19459
  })]
19268
19460
  });
19269
19461
  }
19462
+ /** Tailwind text tone for a device-code severity. */
19463
+ function severityTone(severity) {
19464
+ switch (severity) {
19465
+ case "error": return "text-destructive";
19466
+ case "warning": return "text-warning";
19467
+ case "info": return "text-foreground-subtle";
19468
+ }
19469
+ }
19470
+ /** Mowing-progress bar + % — shown only when a progress value is present. */
19471
+ function ProgressBar({ percent }) {
19472
+ return /* @__PURE__ */ jsxs("div", {
19473
+ className: "flex items-center gap-2",
19474
+ children: [/* @__PURE__ */ jsx("div", {
19475
+ className: "h-1.5 flex-1 rounded bg-surface-hover overflow-hidden",
19476
+ children: /* @__PURE__ */ jsx("div", {
19477
+ className: "h-full bg-primary transition-[width] duration-500",
19478
+ style: { width: `${Math.max(0, Math.min(100, percent))}%` }
19479
+ })
19480
+ }), /* @__PURE__ */ jsxs("span", {
19481
+ className: "tabular-nums text-xs text-foreground-subtle",
19482
+ children: [Math.round(percent), "%"]
19483
+ })]
19484
+ });
19485
+ }
19486
+ /** Current device/event code line — tinted by severity; an icon for warn/error. */
19487
+ function CodeLine({ code, label, severity }) {
19488
+ return /* @__PURE__ */ jsxs("div", {
19489
+ className: cn("inline-flex items-center gap-1 text-xs", severityTone(severity)),
19490
+ children: [severity !== "info" && /* @__PURE__ */ jsx(TriangleAlert, { className: "h-3.5 w-3.5" }), /* @__PURE__ */ jsx("span", { children: label ?? `Code ${code}` })]
19491
+ });
19492
+ }
19270
19493
  /** Battery % badge — shared between inline + hero. */
19271
19494
  function BatteryBadge$1({ level }) {
19272
19495
  return /* @__PURE__ */ jsxs("span", {
@@ -19370,38 +19593,47 @@ function LawnMowerHeroCard({ trpc, deviceId }) {
19370
19593
  className: "flex items-center gap-6",
19371
19594
  children: [/* @__PURE__ */ jsx(LawnMowerGraphic, { activity }), /* @__PURE__ */ jsxs("div", {
19372
19595
  className: "flex flex-col gap-3 flex-1",
19373
- children: [/* @__PURE__ */ jsxs("div", {
19374
- className: "flex items-center justify-between",
19375
- children: [/* @__PURE__ */ jsx("span", {
19376
- className: cn("text-3xl font-semibold", meta.tone),
19377
- children: meta.label
19378
- }), slice?.batteryLevel != null && /* @__PURE__ */ jsx(BatteryBadge$1, { level: slice.batteryLevel })]
19379
- }), /* @__PURE__ */ jsxs("div", {
19380
- className: "flex items-center gap-2",
19381
- children: [
19382
- /* @__PURE__ */ jsx(LawnMowerHeroButton, {
19383
- label: "Start mowing",
19384
- busy,
19385
- active: activity === "mowing",
19386
- onClick: () => press(cap.startMowing),
19387
- children: /* @__PURE__ */ jsx(Play, { className: "h-5 w-5" })
19388
- }),
19389
- /* @__PURE__ */ jsx(LawnMowerHeroButton, {
19390
- label: "Pause",
19391
- busy,
19392
- active: activity === "paused",
19393
- onClick: () => press(cap.pause),
19394
- children: /* @__PURE__ */ jsx(Pause, { className: "h-5 w-5" })
19395
- }),
19396
- /* @__PURE__ */ jsx(LawnMowerHeroButton, {
19397
- label: "Dock",
19398
- busy,
19399
- active: activity === "docked",
19400
- onClick: () => press(cap.dock),
19401
- children: /* @__PURE__ */ jsx(House, { className: "h-5 w-5" })
19402
- })
19403
- ]
19404
- })]
19596
+ children: [
19597
+ /* @__PURE__ */ jsxs("div", {
19598
+ className: "flex items-center justify-between",
19599
+ children: [/* @__PURE__ */ jsx("span", {
19600
+ className: cn("text-3xl font-semibold", meta.tone),
19601
+ children: meta.label
19602
+ }), slice?.batteryLevel != null && /* @__PURE__ */ jsx(BatteryBadge$1, { level: slice.batteryLevel })]
19603
+ }),
19604
+ slice?.progressPercent != null && /* @__PURE__ */ jsx(ProgressBar, { percent: slice.progressPercent }),
19605
+ slice?.currentCode != null && /* @__PURE__ */ jsx(CodeLine, {
19606
+ code: slice.currentCode,
19607
+ label: slice.currentCodeLabel,
19608
+ severity: slice.severity
19609
+ }),
19610
+ /* @__PURE__ */ jsxs("div", {
19611
+ className: "flex items-center gap-2",
19612
+ children: [
19613
+ /* @__PURE__ */ jsx(LawnMowerHeroButton, {
19614
+ label: "Start mowing",
19615
+ busy,
19616
+ active: activity === "mowing",
19617
+ onClick: () => press(cap.startMowing),
19618
+ children: /* @__PURE__ */ jsx(Play, { className: "h-5 w-5" })
19619
+ }),
19620
+ /* @__PURE__ */ jsx(LawnMowerHeroButton, {
19621
+ label: "Pause",
19622
+ busy,
19623
+ active: activity === "paused",
19624
+ onClick: () => press(cap.pause),
19625
+ children: /* @__PURE__ */ jsx(Pause, { className: "h-5 w-5" })
19626
+ }),
19627
+ /* @__PURE__ */ jsx(LawnMowerHeroButton, {
19628
+ label: "Dock",
19629
+ busy,
19630
+ active: activity === "docked",
19631
+ onClick: () => press(cap.dock),
19632
+ children: /* @__PURE__ */ jsx(House, { className: "h-5 w-5" })
19633
+ })
19634
+ ]
19635
+ })
19636
+ ]
19405
19637
  })]
19406
19638
  })
19407
19639
  });
@@ -21135,103 +21367,6 @@ function WeatherHeroCard({ trpc, deviceId }) {
21135
21367
  });
21136
21368
  }
21137
21369
  //#endregion
21138
- //#region src/composites/hover-zoom-image.tsx
21139
- /**
21140
- * <HoverZoomImage> — a small thumbnail that expands into a floating
21141
- * enlarged preview on hover/focus.
21142
- *
21143
- * One responsibility: render a compact thumbnail (image when `src` is
21144
- * present, a muted `ImageOff` placeholder box when null) and, while the
21145
- * thumbnail is hovered or focused, portal a larger preview to
21146
- * `document.body` positioned with FLIP-ON-COLLISION:
21147
- * - the position is computed from the thumbnail's `getBoundingClientRect`;
21148
- * - placed ABOVE the thumbnail unless there is insufficient space (then
21149
- * below); left-clamped to the viewport;
21150
- * - `position:fixed`, `pointer-events:none`, `z-[9999]`.
21151
- *
21152
- * The portal is what lets this work inside the device grid, whose overflow
21153
- * ancestors would otherwise clip a normally-positioned popover.
21154
- *
21155
- * Reused by BOTH the Image DeviceType inline control (signed image url) and
21156
- * the camera-snapshot cell in device rows (snapshot blob/object url).
21157
- */
21158
- var DEFAULT_EXPANDED_WIDTH = 288;
21159
- var DEFAULT_EXPANDED_HEIGHT = 196;
21160
- var DEFAULT_THUMB_CLASS = "h-7 w-7 rounded";
21161
- var TRIGGER_GAP = 8;
21162
- var VIEWPORT_MARGIN = 8;
21163
- function HoverZoomImage({ src, alt, caption, placeholder = "No image", thumbClassName = DEFAULT_THUMB_CLASS, expandedWidth = DEFAULT_EXPANDED_WIDTH, expandedHeight = DEFAULT_EXPANDED_HEIGHT }) {
21164
- const triggerRef = useRef(null);
21165
- const [position, setPosition] = useState(null);
21166
- const [errored, setErrored] = useState(false);
21167
- useEffect(() => {
21168
- setErrored(false);
21169
- }, [src]);
21170
- const hasImage = src !== null && !errored;
21171
- const safeSrc = src ?? void 0;
21172
- const open = useCallback(() => {
21173
- const el = triggerRef.current;
21174
- if (!el) return;
21175
- const rect = el.getBoundingClientRect();
21176
- const spaceAbove = rect.top;
21177
- const spaceBelow = window.innerHeight - rect.bottom;
21178
- const top = spaceAbove < expandedHeight + TRIGGER_GAP && spaceBelow > spaceAbove ? rect.bottom + TRIGGER_GAP : rect.top - expandedHeight - TRIGGER_GAP;
21179
- const desiredLeft = rect.right - expandedWidth;
21180
- setPosition({
21181
- top,
21182
- left: Math.max(VIEWPORT_MARGIN, Math.min(desiredLeft, window.innerWidth - expandedWidth - VIEWPORT_MARGIN))
21183
- });
21184
- }, [expandedWidth, expandedHeight]);
21185
- const close = useCallback(() => setPosition(null), []);
21186
- return /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("button", {
21187
- ref: triggerRef,
21188
- type: "button",
21189
- onClick: (e) => e.stopPropagation(),
21190
- onMouseEnter: open,
21191
- onMouseLeave: close,
21192
- onFocus: open,
21193
- onBlur: close,
21194
- "aria-label": alt,
21195
- className: `flex flex-shrink-0 items-center justify-center overflow-hidden border border-border bg-background text-foreground-subtle transition-colors hover:bg-surface-hover ${thumbClassName}`,
21196
- children: hasImage ? /* @__PURE__ */ jsx("img", {
21197
- src: safeSrc,
21198
- alt: "",
21199
- onError: () => setErrored(true),
21200
- className: "h-full w-full object-cover"
21201
- }) : /* @__PURE__ */ jsx(ImageOff, {
21202
- className: "h-3.5 w-3.5",
21203
- "aria-hidden": "true"
21204
- })
21205
- }), position && createPortal(/* @__PURE__ */ jsxs("div", {
21206
- "aria-hidden": "true",
21207
- style: {
21208
- position: "fixed",
21209
- top: position.top,
21210
- left: position.left,
21211
- width: expandedWidth,
21212
- pointerEvents: "none"
21213
- },
21214
- className: "z-[9999] overflow-hidden rounded-lg border border-border bg-surface shadow-lg shadow-black/30",
21215
- children: [/* @__PURE__ */ jsx("div", {
21216
- className: "flex h-40 items-center justify-center bg-background",
21217
- children: hasImage ? /* @__PURE__ */ jsx("img", {
21218
- src: safeSrc,
21219
- alt,
21220
- className: "h-full w-full object-cover"
21221
- }) : /* @__PURE__ */ jsx("span", {
21222
- className: "text-xs text-foreground-subtle",
21223
- children: placeholder
21224
- })
21225
- }), /* @__PURE__ */ jsx("div", {
21226
- className: "px-3 py-2",
21227
- children: /* @__PURE__ */ jsx("p", {
21228
- className: "truncate text-xs font-semibold text-foreground",
21229
- children: caption ?? alt
21230
- })
21231
- })]
21232
- }), document.body)] });
21233
- }
21234
- //#endregion
21235
21370
  //#region src/composites/device-controls/image-control.tsx
21236
21371
  /**
21237
21372
  * Image controls for a `DeviceType.Image` device.
@@ -21255,6 +21390,91 @@ function useImage(trpc, deviceId) {
21255
21390
  slice: (d) => d.state.image
21256
21391
  });
21257
21392
  }
21393
+ var ZOOM_MIN = 1;
21394
+ var ZOOM_MAX = 6;
21395
+ var ZOOM_STEP = .5;
21396
+ /**
21397
+ * ImageDetailModal — a full-view image dialog with zoom in/out/reset and pan
21398
+ * (scroll when zoomed). Generous padding frames the image. Opened by clicking
21399
+ * the inline thumbnail or the hero image. Controlled via `open`/`onOpenChange`.
21400
+ */
21401
+ function ImageDetailModal({ url, alt, open, onOpenChange }) {
21402
+ const [scale, setScale] = useState(1);
21403
+ useEffect(() => {
21404
+ if (open) setScale(1);
21405
+ }, [open, url]);
21406
+ const zoomIn = useCallback(() => setScale((s) => Math.min(ZOOM_MAX, s + ZOOM_STEP)), []);
21407
+ const zoomOut = useCallback(() => setScale((s) => Math.max(ZOOM_MIN, s - ZOOM_STEP)), []);
21408
+ const reset = useCallback(() => setScale(1), []);
21409
+ return /* @__PURE__ */ jsx(Dialog, {
21410
+ open,
21411
+ onOpenChange,
21412
+ children: /* @__PURE__ */ jsxs(DialogContent, {
21413
+ width: "lg",
21414
+ className: "max-w-5xl p-6",
21415
+ children: [/* @__PURE__ */ jsxs("div", {
21416
+ className: "flex items-center justify-between gap-2 mb-3",
21417
+ children: [/* @__PURE__ */ jsx("span", {
21418
+ className: "truncate text-sm font-semibold text-foreground",
21419
+ children: alt
21420
+ }), /* @__PURE__ */ jsxs("div", {
21421
+ className: "flex items-center gap-1",
21422
+ children: [
21423
+ /* @__PURE__ */ jsx(ModalIconButton, {
21424
+ label: "Zoom out",
21425
+ disabled: scale <= ZOOM_MIN,
21426
+ onClick: zoomOut,
21427
+ children: /* @__PURE__ */ jsx(ZoomOut, { className: "h-4 w-4" })
21428
+ }),
21429
+ /* @__PURE__ */ jsxs("span", {
21430
+ className: "tabular-nums text-xs text-foreground-subtle w-10 text-center",
21431
+ children: [Math.round(scale * 100), "%"]
21432
+ }),
21433
+ /* @__PURE__ */ jsx(ModalIconButton, {
21434
+ label: "Zoom in",
21435
+ disabled: scale >= ZOOM_MAX,
21436
+ onClick: zoomIn,
21437
+ children: /* @__PURE__ */ jsx(ZoomIn, { className: "h-4 w-4" })
21438
+ }),
21439
+ /* @__PURE__ */ jsx(ModalIconButton, {
21440
+ label: "Reset zoom",
21441
+ disabled: scale === 1,
21442
+ onClick: reset,
21443
+ children: /* @__PURE__ */ jsx(RotateCcw, { className: "h-4 w-4" })
21444
+ }),
21445
+ /* @__PURE__ */ jsx(ModalIconButton, {
21446
+ label: "Close",
21447
+ onClick: () => onOpenChange(false),
21448
+ children: /* @__PURE__ */ jsx(X, { className: "h-4 w-4" })
21449
+ })
21450
+ ]
21451
+ })]
21452
+ }), /* @__PURE__ */ jsx("div", {
21453
+ className: "flex max-h-[75vh] items-center justify-center overflow-auto rounded border border-border bg-gradient-to-b from-surface-hover to-surface p-6",
21454
+ children: /* @__PURE__ */ jsx("img", {
21455
+ src: url,
21456
+ alt,
21457
+ style: {
21458
+ transform: `scale(${scale})`,
21459
+ transformOrigin: "center"
21460
+ },
21461
+ className: "max-h-[65vh] w-auto object-contain transition-transform duration-150"
21462
+ })
21463
+ })]
21464
+ })
21465
+ });
21466
+ }
21467
+ function ModalIconButton({ label, disabled, onClick, children }) {
21468
+ return /* @__PURE__ */ jsx("button", {
21469
+ type: "button",
21470
+ "aria-label": label,
21471
+ title: label,
21472
+ disabled,
21473
+ onClick,
21474
+ className: "inline-flex h-7 w-7 items-center justify-center rounded text-foreground-subtle hover:text-foreground hover:bg-surface-hover transition-colors disabled:opacity-40 disabled:cursor-not-allowed",
21475
+ children
21476
+ });
21477
+ }
21258
21478
  /**
21259
21479
  * ImageInlineControl — compact thumbnail for a device-list row that expands
21260
21480
  * into a floating preview on hover/focus (shared `HoverZoomImage`). Shows a
@@ -21265,13 +21485,36 @@ function useImage(trpc, deviceId) {
21265
21485
  */
21266
21486
  function ImageInlineControl({ trpc, deviceId }) {
21267
21487
  const { slice } = useImage(trpc, deviceId);
21488
+ const [open, setOpen] = useState(false);
21268
21489
  if (slice === void 0) return null;
21269
- return /* @__PURE__ */ jsx(HoverZoomImage, {
21270
- src: slice.url,
21271
- alt: "Image",
21272
- placeholder: "No image",
21273
- thumbClassName: "h-7 w-7 rounded"
21490
+ const url = slice.url;
21491
+ if (url === null) return /* @__PURE__ */ jsx("span", {
21492
+ className: "inline-flex h-7 w-7 items-center justify-center rounded bg-surface-hover text-foreground-subtle",
21493
+ title: "No image",
21494
+ children: /* @__PURE__ */ jsx(ImageOff, {
21495
+ className: "h-4 w-4",
21496
+ "aria-hidden": "true"
21497
+ })
21274
21498
  });
21499
+ return /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("button", {
21500
+ type: "button",
21501
+ title: "View image",
21502
+ onClick: (e) => {
21503
+ e.stopPropagation();
21504
+ setOpen(true);
21505
+ },
21506
+ className: "inline-flex items-center justify-center rounded ring-offset-1 hover:ring-2 hover:ring-primary/50 transition",
21507
+ children: /* @__PURE__ */ jsx("img", {
21508
+ src: url,
21509
+ alt: "Image",
21510
+ className: "h-7 w-7 rounded object-cover"
21511
+ })
21512
+ }), /* @__PURE__ */ jsx(ImageDetailModal, {
21513
+ url,
21514
+ alt: "Image",
21515
+ open,
21516
+ onOpenChange: setOpen
21517
+ })] });
21275
21518
  }
21276
21519
  /**
21277
21520
  * ImageHeroCard — read-only framed image for the device-detail hero.
@@ -21284,19 +21527,27 @@ function ImageInlineControl({ trpc, deviceId }) {
21284
21527
  function ImageHeroCard({ trpc, deviceId, deviceName }) {
21285
21528
  const { slice } = useImage(trpc, deviceId);
21286
21529
  const [errored, setErrored] = useState(false);
21530
+ const [open, setOpen] = useState(false);
21531
+ const url = slice?.url ?? null;
21287
21532
  useEffect(() => {
21288
21533
  setErrored(false);
21289
- }, [slice?.url ?? null]);
21534
+ }, [url]);
21290
21535
  if (slice === void 0) return null;
21291
- return /* @__PURE__ */ jsx("div", {
21536
+ return /* @__PURE__ */ jsxs("div", {
21292
21537
  className: "flex flex-col items-stretch gap-3 rounded-lg border border-border bg-surface p-4",
21293
- children: /* @__PURE__ */ jsx("div", {
21538
+ children: [/* @__PURE__ */ jsx("div", {
21294
21539
  className: "flex w-full items-center justify-center overflow-hidden rounded border-2 border-border bg-gradient-to-b from-surface-hover to-surface",
21295
- children: slice.url !== null && !errored ? /* @__PURE__ */ jsx("img", {
21296
- src: slice.url,
21297
- alt: deviceName ?? "Image",
21298
- onError: () => setErrored(true),
21299
- className: "max-h-72 w-full object-contain"
21540
+ children: slice.url !== null && !errored ? /* @__PURE__ */ jsx("button", {
21541
+ type: "button",
21542
+ title: "View image",
21543
+ onClick: () => setOpen(true),
21544
+ className: "flex w-full cursor-zoom-in items-center justify-center",
21545
+ children: /* @__PURE__ */ jsx("img", {
21546
+ src: slice.url,
21547
+ alt: deviceName ?? "Image",
21548
+ onError: () => setErrored(true),
21549
+ className: "max-h-72 w-full object-contain"
21550
+ })
21300
21551
  }) : /* @__PURE__ */ jsxs("div", {
21301
21552
  "data-testid": "image-placeholder",
21302
21553
  className: "flex h-48 w-full flex-col items-center justify-center gap-2 text-foreground-subtle",
@@ -21308,7 +21559,12 @@ function ImageHeroCard({ trpc, deviceId, deviceName }) {
21308
21559
  children: "No image"
21309
21560
  })]
21310
21561
  })
21311
- })
21562
+ }), url !== null && !errored && /* @__PURE__ */ jsx(ImageDetailModal, {
21563
+ url,
21564
+ alt: deviceName ?? "Image",
21565
+ open,
21566
+ onOpenChange: setOpen
21567
+ })]
21312
21568
  });
21313
21569
  }
21314
21570
  //#endregion
@@ -24867,6 +25123,103 @@ function BatteryBadge({ status, variant = "compact", className }) {
24867
25123
  });
24868
25124
  }
24869
25125
  //#endregion
25126
+ //#region src/composites/hover-zoom-image.tsx
25127
+ /**
25128
+ * <HoverZoomImage> — a small thumbnail that expands into a floating
25129
+ * enlarged preview on hover/focus.
25130
+ *
25131
+ * One responsibility: render a compact thumbnail (image when `src` is
25132
+ * present, a muted `ImageOff` placeholder box when null) and, while the
25133
+ * thumbnail is hovered or focused, portal a larger preview to
25134
+ * `document.body` positioned with FLIP-ON-COLLISION:
25135
+ * - the position is computed from the thumbnail's `getBoundingClientRect`;
25136
+ * - placed ABOVE the thumbnail unless there is insufficient space (then
25137
+ * below); left-clamped to the viewport;
25138
+ * - `position:fixed`, `pointer-events:none`, `z-[9999]`.
25139
+ *
25140
+ * The portal is what lets this work inside the device grid, whose overflow
25141
+ * ancestors would otherwise clip a normally-positioned popover.
25142
+ *
25143
+ * Reused by BOTH the Image DeviceType inline control (signed image url) and
25144
+ * the camera-snapshot cell in device rows (snapshot blob/object url).
25145
+ */
25146
+ var DEFAULT_EXPANDED_WIDTH = 288;
25147
+ var DEFAULT_EXPANDED_HEIGHT = 196;
25148
+ var DEFAULT_THUMB_CLASS = "h-7 w-7 rounded";
25149
+ var TRIGGER_GAP = 8;
25150
+ var VIEWPORT_MARGIN = 8;
25151
+ function HoverZoomImage({ src, alt, caption, placeholder = "No image", thumbClassName = DEFAULT_THUMB_CLASS, expandedWidth = DEFAULT_EXPANDED_WIDTH, expandedHeight = DEFAULT_EXPANDED_HEIGHT }) {
25152
+ const triggerRef = useRef(null);
25153
+ const [position, setPosition] = useState(null);
25154
+ const [errored, setErrored] = useState(false);
25155
+ useEffect(() => {
25156
+ setErrored(false);
25157
+ }, [src]);
25158
+ const hasImage = src !== null && !errored;
25159
+ const safeSrc = src ?? void 0;
25160
+ const open = useCallback(() => {
25161
+ const el = triggerRef.current;
25162
+ if (!el) return;
25163
+ const rect = el.getBoundingClientRect();
25164
+ const spaceAbove = rect.top;
25165
+ const spaceBelow = window.innerHeight - rect.bottom;
25166
+ const top = spaceAbove < expandedHeight + TRIGGER_GAP && spaceBelow > spaceAbove ? rect.bottom + TRIGGER_GAP : rect.top - expandedHeight - TRIGGER_GAP;
25167
+ const desiredLeft = rect.right - expandedWidth;
25168
+ setPosition({
25169
+ top,
25170
+ left: Math.max(VIEWPORT_MARGIN, Math.min(desiredLeft, window.innerWidth - expandedWidth - VIEWPORT_MARGIN))
25171
+ });
25172
+ }, [expandedWidth, expandedHeight]);
25173
+ const close = useCallback(() => setPosition(null), []);
25174
+ return /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("button", {
25175
+ ref: triggerRef,
25176
+ type: "button",
25177
+ onClick: (e) => e.stopPropagation(),
25178
+ onMouseEnter: open,
25179
+ onMouseLeave: close,
25180
+ onFocus: open,
25181
+ onBlur: close,
25182
+ "aria-label": alt,
25183
+ className: `flex flex-shrink-0 items-center justify-center overflow-hidden border border-border bg-background text-foreground-subtle transition-colors hover:bg-surface-hover ${thumbClassName}`,
25184
+ children: hasImage ? /* @__PURE__ */ jsx("img", {
25185
+ src: safeSrc,
25186
+ alt: "",
25187
+ onError: () => setErrored(true),
25188
+ className: "h-full w-full object-cover"
25189
+ }) : /* @__PURE__ */ jsx(ImageOff, {
25190
+ className: "h-3.5 w-3.5",
25191
+ "aria-hidden": "true"
25192
+ })
25193
+ }), position && createPortal(/* @__PURE__ */ jsxs("div", {
25194
+ "aria-hidden": "true",
25195
+ style: {
25196
+ position: "fixed",
25197
+ top: position.top,
25198
+ left: position.left,
25199
+ width: expandedWidth,
25200
+ pointerEvents: "none"
25201
+ },
25202
+ className: "z-[9999] overflow-hidden rounded-lg border border-border bg-surface shadow-lg shadow-black/30",
25203
+ children: [/* @__PURE__ */ jsx("div", {
25204
+ className: "flex h-40 items-center justify-center bg-background",
25205
+ children: hasImage ? /* @__PURE__ */ jsx("img", {
25206
+ src: safeSrc,
25207
+ alt,
25208
+ className: "h-full w-full object-cover"
25209
+ }) : /* @__PURE__ */ jsx("span", {
25210
+ className: "text-xs text-foreground-subtle",
25211
+ children: placeholder
25212
+ })
25213
+ }), /* @__PURE__ */ jsx("div", {
25214
+ className: "px-3 py-2",
25215
+ children: /* @__PURE__ */ jsx("p", {
25216
+ className: "truncate text-xs font-semibold text-foreground",
25217
+ children: caption ?? alt
25218
+ })
25219
+ })]
25220
+ }), document.body)] });
25221
+ }
25222
+ //#endregion
24870
25223
  //#region src/composites/device-item/preview.tsx
24871
25224
  function DeviceItemPreview({ trpc, device, status, enabled, showStatusPills = false }) {
24872
25225
  const snapshot = useDeviceSnapshotImage(trpc, enabled && device.online ? device.id : null);
@@ -42205,4 +42558,4 @@ var MotionZonesSettings = lazy(() => import("./MotionZonesSettings-NcxxQN8r.js")
42205
42558
  /** Lazy-wrapped `PrivacyMaskSettings` — code-split off the main bundle. */
42206
42559
  var PrivacyMaskSettings = lazy(() => import("./PrivacyMaskSettings-APgPLF7p.js").then((m) => ({ default: m.PrivacyMaskSettings })));
42207
42560
  //#endregion
42208
- export { AddonGlobalSettingsForm, AgentStepEditor, AlarmHeroCard, AlarmInlineControl as AlarmPanelInlineControl, AppShell, ArcKnob, AudioClassificationList, AudioLevelWaveform, AudioWaveform, AutotrackSection, BTN_COMPACT, BTN_COMPACT_DANGER, BTN_COMPACT_PRIMARY, BTN_COMPACT_WARNING, Badge, BatteryBadge, BottomSheet, Breadcrumb, BrightnessPanel, Button, ButtonControl, ButtonHeroCard, CENTER, CHIP_ACTIVE, CHIP_BASE, CHIP_INACTIVE, CLASS_COLORS, COLUMN_BREAKPOINT_CLASS, COLUMN_PRIORITY, CONTROL_CAP_NAMES, CONTROL_FILLS, CameraStreamPlayer, Card, Checkbox, ChildSectionAccordion, ClimatePanel, CodeBlock, CollapsibleCard, ConfigFormBuilder, FormField as ConfigFormField, ConfigSchemaField, ConfirmActionButton, ConfirmDialogProvider, ConsumablesPanel, ContainerChildrenProvider, ContainerPrimaryHero, ControlColumn, ControlHeroCard, ControlInlineControl, ControlPanel, CopyButton, CoverHeroCard, CoverInlineControl, CoverPanel, CustomFieldRenderersProvider, DEFAULT_COLOR, DEVICE_COLUMNS, DEVICE_LIST_PAGE_SIZE_KEY, DEVICE_LIST_PAGE_SIZE_OPTIONS, DEVICE_ROLE_META, DEVICE_TYPE_CONTROL, DEVICE_TYPE_META, DataTable, DetectionCanvas, DetectionOverlay, DetectionResultTree, DevShell, DeviceActivityPanel, DeviceBatchToolbar, DeviceCard, DeviceContextProvider, DeviceExportPanel, DeviceGrid, DeviceItem, DeviceList, Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, DiscoveryPanel, DoorbellRecentPanel, Dropdown, DropdownContent, DropdownItem, DropdownTrigger, DummyHeroCard, DummyInline, EmptyState, ErrorBox, EventStream, FILL, FanHeroCard, FanInlineControl, FanPanel, FilterBar, FloatingEventStream, FloatingLogStream, FloatingPanel, FormField$1 as FormField, GRID_GAP, GRID_PAIRED, GRID_QUICK_STATS, GripTrack, HOST_WIDGETS, HlsVideo, HoverZoomImage, HumidifierHeroCard, HumidifierInlineControl, INPUT_COMPACT, IconAction, IconButton, ImageHeroCard, ImageInlineControl, ImageSelector, InferenceConfigSelector, Input, KebabMenu, KeyValueList, LIST_ROW, Label, LawnMowerHeroCard, LawnMowerInlineControl, LightHeroCard, LightInlineControl, LockHeroCard, LockInlineControl, LockPanel, LogStream, LoginForm, MODE_COLOR, MaskShapeCanvas, MediaPlayerHeroCard, MediaPlayerInlineControl, MediaPlayerPanel, MobileDrawer, MotionZonesSettings, NodeMultiSelectField, NodePicker, NodeSelectField, OfflineBadge, PHASE_CONFIG, PRIORITY, PTZOverlay, PageHeader, PhaseIcon, PipelineBuilder, PipelineRuntimeSelector, PipelineStep, PipelineTreeMatrix, PlayerOverlaysProvider, Popover, PopoverContent, PopoverRowAction, PopoverTrigger, PrivacyMaskSettings, ProviderBadge, PtzPanel, QrCode, RIGHT, ROLE_DESCRIPTOR, RadialGauge, RecordingPanel, ResponseLog, SECTION_BODY, SECTION_CARD, SECTION_HEADER, SPLIT_PANEL_OUTER, SPLIT_PANEL_SIDE, STACK_GAP, STATE_COLOR, ScopePicker, ScrollArea, Select, SemanticBadge, SensorHeroCard, SensorInlineControl, SensorValueAtom, Separator, Sidebar, SidebarItem, Skeleton, SlideOverPanel, SlideToggle, SnapshotButton, StatCard, StateValuesStream, StatusBadge, StepTimings, StepTreeMaster, Stepper, StreamBrokerSelector, StreamPanel, Switch, SwitchHeroCard, SwitchInlineControl, SwitchPanel, SystemProvider, TEXT_FIELD_LABEL, TEXT_HINT, TEXT_METRIC, TEXT_SECTION_LABEL, TEXT_VALUE, TIMEZONES, Tabs, TabsContent, TabsList, TabsTrigger, TapToggle, ThemeProvider, ThermostatHeroCard, ThermostatInlineControl, TimezoneSelector, Tooltip, TooltipContent, TooltipTrigger, VacuumHeroCard, VacuumInlineControl, ValueReadout, ValveHeroCard, ValveInlineControl, VersionBadge, VodPlaybackProvider, WaterHeaterHeroCard, WaterHeaterInlineControl, WeatherHeroCard, WeatherInlineControl, WidgetMetricCard, WidgetPanel, WidgetRegistryProvider, WidgetSlot, ZoneEditingProvider, allDeviceTypeFilterOptions, buildStepTreeFromSchema, childEntityId, cn, columnsForContext, containerChildToRef, countableDevices, coverHighlight, createSharedContext, createTheme, darkColors, defaultTheme, deriveDeviceKind, deviceRoleMeta, deviceRoleMetaOf, deviceTypeMeta, deviceTypeMetaOf, ensureMfHostInit, findTimezone, formatControlDateTime, formatLastSeen, fuzzyMatch, getClassColor, getPhaseVisual, groupChildrenByLayout, hardwareLabel, humidifierTint, createLucideIcon as i, isAbsentProvider, isFieldVisible, lawnMowerActivityMeta, lightColors, loadRemoteBundle, metadataEntries, metadataString, mirror, mountAddonPage, Square as n, nextSort, normalizeForSearch, overrideEntityIdFromLink, providerIcons, EyeOff as r, resolveContainerPrimary, resolveControlAlign, resolveDeviceControl, resolvePrimaryChild, sortRows, statusIcons, Trash2 as t, tankAlert, themeToCss, trpc, useAccessoriesGetStatus, useAccessoriesSetChildHidden, useAddonPagesListPages, useAddonSettingsGetDeviceSettings, useAddonSettingsGetGlobalSettings, useAddonSettingsUpdateDeviceSettings, useAddonSettingsUpdateGlobalSettings, useAddonWidgetsListWidgets, useAddonsApplyAutoUpdateToAll, useAddonsCancelJob, useAddonsCustom, useAddonsForceRefresh, useAddonsGetAddonAutoUpdate, useAddonsGetAutoUpdateSettings, useAddonsGetJob, useAddonsGetLastRestart, useAddonsGetLogs, useAddonsGetVersions, useAddonsInstallFromWorkspace, useAddonsInstallPackage, useAddonsIsWorkspaceAvailable, useAddonsList, useAddonsListCapabilityProviders, useAddonsListFrameworkPackages, useAddonsListJobs, useAddonsListPackages, useAddonsListUpdates, useAddonsListWorkspacePackages, useAddonsOnAddonLogs, useAddonsReloadPackages, useAddonsRestartAddon, useAddonsRestartServer, useAddonsRetryLoad, useAddonsRollbackPackage, useAddonsSearchAvailable, useAddonsSetAddonAutoUpdate, useAddonsSetAutoUpdateSettings, useAddonsSetCapabilityProviderEnabled, useAddonsStartJob, useAddonsUninstallPackage, useAddonsUpdateFrameworkPackage, useAddonsUpdatePackage, useAirQualitySensorGetStatus, useAlarmPanelArm, useAlarmPanelDisarm, useAlarmPanelGetStatus, useAlarmPanelTrigger, useAlertsDismiss, useAlertsEmit, useAlertsGetUnreadCount, useAlertsList, useAlertsMarkAllRead, useAlertsMarkRead, useAlertsUpdate, useAllWidgets, useAmbientLightSensorGetStatus, useAudioAnalysisApplyDeviceSettingsPatch, useAudioAnalysisGetDeviceLiveContribution, useAudioAnalysisGetDeviceSettingsContribution, useAudioAnalysisResolveDeviceSettings, useAudioAnalyzerAnalyseChunk, useAudioAnalyzerClassify, useAudioAnalyzerDispose, useAudioAnalyzerIsReady, useAudioAnalyzerReprobeAudioEngine, useAudioCodecCanHandle, useAudioCodecCloseSession, useAudioCodecCreateDecodeSession, useAudioCodecCreateEncodeSession, useAudioCodecFlushEncode, useAudioCodecListActiveSessions, useAudioCodecListSupportedCodecs, useAudioCodecPullEncoded, useAudioCodecPullPcm, useAudioCodecPushEncodedFrame, useAudioCodecPushPcm, useAudioMetricsGetCurrentSnapshot, useAudioMetricsGetHistory, useAutomationControlDisable, useAutomationControlEnable, useAutomationControlGetStatus, useAutomationControlTrigger, useBackupDelete, useBackupGetEntries, useBackupList, useBackupListArchives, useBackupListDestinations, useBackupListLocations, useBackupPreviewSchedule, useBackupRestore, useBackupTrigger, useBackupUpsertDestinationPolicy, useBatteryGetStatus, useBatteryWakeForStream, useBinaryGetStatus, useBrightnessGetStatus, useBrightnessSetBrightness, useBrokerAdd, useBrokerGet, useBrokerGetBrokerConfig, useBrokerGetSettings, useBrokerGetSettingsSchema, useBrokerGetState, useBrokerGetStatus, useBrokerList, useBrokerListProviders, useBrokerPublish, useBrokerRemove, useBrokerSetSettings, useBrokerSubscribe, useBrokerTestConnection, useBrokerTestSettings, useBrokerUnsubscribe, useButtonPress, useCameraCredentialsGetCredentials, useCameraCredentialsGetStatus, useCameraPipelineConfigApplyDeviceSettingsPatch, useCameraPipelineConfigGetDeviceLiveContribution, useCameraPipelineConfigGetDeviceSettingsContribution, useCameraStreamsGetBrokerStreams, useCameraStreamsGetCameraStreams, useCameraStreamsGetProfileRtspEntries, useCameraStreamsGetRtspEntries, useCameraStreamsPickStream, useCarbonMonoxideGetStatus, useClimateControlGetStatus, useClimateControlSetFanMode, useClimateControlSetMode, useClimateControlSetPreset, useClimateControlSetTarget, useClimateControlSetTargetHumidity, useClimateControlSetTargetRange, useClusterNodes, useColorGetStatus, useColorSetColor, useConfirm, useConnectivityGetStatus, useConsumablesGetStatus, useConsumablesReset, useContactGetStatus, useContainerChildren, useControlGetStatus, useControlSetValue, useCoverClose, useCoverGetStatus, useCoverOpen, useCoverSetPosition, useCoverSetTiltPosition, useCoverStop, useCustomFieldRenderer, useDebouncedString, useDecoderCreateSession, useDecoderDestroySession, useDecoderGetFrame, useDecoderGetInfo, useDecoderGetShmStats, useDecoderGetStats, useDecoderListActiveSessions, useDecoderOpenStream, useDecoderPullFrames, useDecoderPullHandles, useDecoderPushPacket, useDecoderReprobeHwaccel, useDecoderSupportsCodec, useDecoderUpdateConfig, useDetectionPipelineApplyDeviceSettingsPatch, useDetectionPipelineGetDeviceLiveContribution, useDetectionPipelineGetDeviceSettingsContribution, useDevShell, useDevice, useDeviceAdoptionAdopt, useDeviceAdoptionGetCandidate, useDeviceAdoptionGetStatus, useDeviceAdoptionListCandidateFilters, useDeviceAdoptionListCandidates, useDeviceAdoptionRefresh, useDeviceAdoptionRelease, useDeviceAdoptionResync, useDeviceAutotrack, useDeviceBattery, useDeviceCapSlice, useDeviceCapability, useDeviceDetections, useDeviceDiscoveryAdoptDevice, useDeviceDiscoveryGetStatus, useDeviceDiscoveryListDiscovered, useDeviceDiscoveryRefreshDiscovery, useDeviceDiscoveryReleaseDevice, useDeviceExportApplyDeviceSettingsPatch, useDeviceExportExposeDevice, useDeviceExportGetDeviceLiveContribution, useDeviceExportGetDeviceSettingsContribution, useDeviceExportGetStatus, useDeviceExportListExposedDevices, useDeviceExportListSupportedDeviceKinds, useDeviceExportUnexposeDevice, useDeviceId, useDeviceListPageSize, useDeviceManagerAddLocation, useDeviceManagerAdoptDevice, useDeviceManagerAdoptionAdopt, useDeviceManagerAdoptionListCandidates, useDeviceManagerAdoptionRefresh, useDeviceManagerAdoptionRelease, useDeviceManagerAllocateDeviceId, useDeviceManagerApplyInitialMeta, useDeviceManagerCreateDevice, useDeviceManagerDisable, useDeviceManagerDiscoverDevices, useDeviceManagerEnable, useDeviceManagerGetAllBindings, useDeviceManagerGetBindings, useDeviceManagerGetChildren, useDeviceManagerGetConfigSchema, useDeviceManagerGetCreationSchema, useDeviceManagerGetDevice, useDeviceManagerGetDeviceAggregate, useDeviceManagerGetDeviceLiveInfoAggregate, useDeviceManagerGetDeviceSettingsAggregate, useDeviceManagerGetDeviceStatusAggregate, useDeviceManagerGetSettingsSchema, useDeviceManagerGetStreamProfileMap, useDeviceManagerGetStreamSources, useDeviceManagerGetWireableFields, useDeviceManagerListAll, useDeviceManagerListBindableCapsForDeviceType, useDeviceManagerListLocations, useDeviceManagerListPersistedByAddon, useDeviceManagerListWrappersForCap, useDeviceManagerLoadConfig, useDeviceManagerLoadMeta, useDeviceManagerLoadRuntimeState, useDeviceManagerPersistConfig, useDeviceManagerProbeStreams, useDeviceManagerRegisterDevice, useDeviceManagerRemove, useDeviceManagerRemoveByIntegration, useDeviceManagerRemoveDevice, useDeviceManagerRemoveLocation, useDeviceManagerRunDeviceAction, useDeviceManagerSetChildLayout, useDeviceManagerSetDeviceLinks, useDeviceManagerSetDisabled, useDeviceManagerSetIntegrationId, useDeviceManagerSetLinkDeviceId, useDeviceManagerSetLocation, useDeviceManagerSetMetadata, useDeviceManagerSetName, useDeviceManagerSetPrimaryChildEntityId, useDeviceManagerSetRole, useDeviceManagerSetStreamProfileMap, useDeviceManagerSetType, useDeviceManagerSetWrapperActive, useDeviceManagerTestCreationField, useDeviceManagerTestField, useDeviceManagerUpdateConfig, useDeviceManagerUpdateDeviceField, useDeviceManagerUpdateDeviceFieldsBatch, useDeviceOpsGetConfigEntries, useDeviceOpsGetRawState, useDeviceOpsGetSettingsSchema, useDeviceOpsGetStreamSources, useDeviceOpsRemoveDevice, useDeviceOpsRunAction, useDeviceOpsSetConfig, useDeviceProviderAdoptDiscoveredDevice, useDeviceProviderCreateDevice, useDeviceProviderDiscoverDevices, useDeviceProviderGetChildCreationSchema, useDeviceProviderGetDevices, useDeviceProviderGetStatus, useDeviceProviderStart, useDeviceProviderStop, useDeviceProviderSupportsDiscovery, useDeviceProviderSupportsManualCreation, useDeviceProviderTestCreationField, useDeviceProxy, useDeviceSnapshot, useDeviceSnapshotImage, useDeviceState, useDeviceStateGetAllSnapshots, useDeviceStateGetCapSlice, useDeviceStateGetSnapshot, useDeviceStateSetCapSlice, useDeviceStateSlice, useDeviceStatusGetStatus, useDeviceWebrtc, useDevices, useDoorbellEvents, useDoorbellGetStatus, useEnumSensorGetStatus, useEventEmitterGetStatus, useEventInvalidation, useEventStreamLatest, useEventStreamMap, useEventsGetEventClipUrl, useEventsGetEventThumbnail, useEventsGetEvents, useFaceGalleryAssignFace, useFaceGalleryAssignFaces, useFaceGalleryCreateIdentity, useFaceGalleryDeleteFace, useFaceGalleryDeleteIdentity, useFaceGalleryGetFaceByTrack, useFaceGalleryGetFaceMedia, useFaceGalleryListIdentities, useFaceGalleryListIdentitySamples, useFaceGalleryListRecentFaces, useFaceGalleryRemoveSample, useFaceGalleryRenameIdentity, useFaceGallerySuggestFaceClusters, useFaceGalleryUnassignFace, useFaceGalleryUnassignFaces, useFanControlGetStatus, useFanControlSetDirection, useFanControlSetOscillating, useFanControlSetPercentage, useFanControlSetPreset, useFeatureProbeGetStatus, useFloodGetStatus, useGasGetStatus, useHumidifierGetStatus, useHumidifierSetMode, useHumidifierSetOn, useHumidifierSetTargetHumidity, useHumiditySensorGetStatus, useImageGetStatus, useIntegrationsCreate, useIntegrationsDelete, useIntegrationsGet, useIntegrationsGetAvailableTypes, useIntegrationsGetByAddonId, useIntegrationsGetSettings, useIntegrationsList, useIntegrationsSetSettings, useIntegrationsTestConnection, useIntegrationsUpdate, useIntercomEndTalkSession, useIntercomGetStatus, useIntercomHandleAnswer, useIntercomPushTalkAudio, useIntercomStartSession, useIntercomStartTalkSession, useIntercomStopSession, useIsMidWidth, useIsMobile, useLawnMowerControlDock, useLawnMowerControlGetStatus, useLawnMowerControlPause, useLawnMowerControlStartMowing, useLiveBuffer, useLiveEvent, useLocalNetworkGetAllowedAddresses, useLocalNetworkGetConnectionEndpoints, useLocalNetworkGetPreferred, useLocalNetworkList, useLocalNetworkResetAllowlistToBestMatch, useLocalNetworkSetAllowedAddresses, useLockControlGetStatus, useLockControlLock, useLockControlOpen, useLockControlUnlock, useMediaPlayerGetStatus, useMediaPlayerNext, useMediaPlayerPause, useMediaPlayerPlay, useMediaPlayerPlayMedia, useMediaPlayerPrevious, useMediaPlayerSeek, useMediaPlayerSelectSource, useMediaPlayerSetMute, useMediaPlayerSetRepeat, useMediaPlayerSetShuffle, useMediaPlayerSetVolume, useMediaPlayerStop, useMeshNetworkGetStatus, useMeshNetworkJoin, useMeshNetworkLeave, useMeshNetworkListPeers, useMeshNetworkLogout, useMeshNetworkStartLogin, useMeshNetworkTestConnection, useMetricsProviderCollectSnapshot, useMetricsProviderDumpHeapSnapshot, useMetricsProviderGetAddonStats, useMetricsProviderGetCached, useMetricsProviderGetCpuTemperature, useMetricsProviderGetCurrent, useMetricsProviderGetDiskSpace, useMetricsProviderGetGpuInfo, useMetricsProviderGetProcessStats, useMetricsProviderKillProcess, useMetricsProviderListAddonInstances, useMetricsProviderListNodeProcesses, useMotionDetectionAnalyze, useMotionDetectionApplyDeviceSettingsPatch, useMotionDetectionGetDeviceLiveContribution, useMotionDetectionGetDeviceSettingsContribution, useMotionDetectionRemoveCamera, useMotionDetectionReset, useMotionGetStatus, useMotionIsDetected, useMotionTriggerGetStatus, useMotionTriggerSetMotionTrigger, useMotionZonesGetOptions, useMotionZonesGetStatus, useMotionZonesSetZone, useMqttBrokerAddBroker, useMqttBrokerGetBrokerConfig, useMqttBrokerGetStatus, useMqttBrokerListBrokers, useMqttBrokerRemoveBroker, useMqttBrokerStartEmbeddedBroker, useMqttBrokerStopEmbeddedBroker, useMqttBrokerTestConnection, useNativeObjectDetectionGetStatus, useNativeObjectDetectionSetEnabled, useNetworkAccessGetEndpoint, useNetworkAccessGetStatus, useNetworkAccessListEndpoints, useNetworkAccessStart, useNetworkAccessStop, useNetworkQualityGetAllStats, useNetworkQualityGetDeviceStats, useNetworkQualityReportClientStats, useNodesClusterAddonStatus, useNodesDeployAddon, useNodesExecuteQuery, useNodesGetCapUsageGraph, useNodesGetNodeAddons, useNodesRenameNode, useNodesRestartAddon, useNodesRestartNode, useNodesRestartProcess, useNodesSetProcessLogLevel, useNodesShutdownNode, useNodesTopology, useNodesUndeployAddon, useNotificationOutputSend, useNotificationOutputSendTest, useNotifierCancel, useNotifierGetStatus, useNotifierSend, useNumericSensorGetStatus, useOptimisticSlice, useOptionalSystem, useOptionalWidgetRegistry, useOsdGetStatus, useOsdSetOverlay, usePTZ, usePipelineAnalyticsApplyDeviceSettingsPatch, usePipelineAnalyticsClearTracks, usePipelineAnalyticsGetActiveTracks, usePipelineAnalyticsGetAudioEvents, usePipelineAnalyticsGetDeviceLiveContribution, usePipelineAnalyticsGetDeviceSettingsContribution, usePipelineAnalyticsGetEventDensity, usePipelineAnalyticsGetEventMedia, usePipelineAnalyticsGetMotionEvents, usePipelineAnalyticsGetObjectEvents, usePipelineAnalyticsGetTrack, usePipelineAnalyticsGetTrackMedia, usePipelineAnalyticsListTracks, usePipelineAnalyticsPruneEventsBefore, usePipelineAnalyticsSearchObjectEvents, usePipelineExecutorCacheFrameInPool, usePipelineExecutorDeleteModel, usePipelineExecutorDeleteTemplate, usePipelineExecutorDetect, usePipelineExecutorDownloadModel, usePipelineExecutorGetAddonModels, usePipelineExecutorGetAudioCapabilities, usePipelineExecutorGetAvailableEngines, usePipelineExecutorGetCapabilities, usePipelineExecutorGetDefaultSteps, usePipelineExecutorGetDetectionConfigSchema, usePipelineExecutorGetEffectiveTuning, usePipelineExecutorGetEngineProvisioning, usePipelineExecutorGetGlobalPipelineConfig, usePipelineExecutorGetGlobalSteps, usePipelineExecutorGetOrchestratorConfigSchema, usePipelineExecutorGetReferenceAudio, usePipelineExecutorGetReferenceAudioFiles, usePipelineExecutorGetReferenceImage, usePipelineExecutorGetSchema, usePipelineExecutorGetSelectedEngine, usePipelineExecutorGetVideoPipelineSteps, usePipelineExecutorInferCached, usePipelineExecutorKillEngine, usePipelineExecutorListLoadedEngines, usePipelineExecutorListReferenceImages, usePipelineExecutorListTemplates, usePipelineExecutorReprobeEngine, usePipelineExecutorRunAudioTest, usePipelineExecutorRunPipeline, usePipelineExecutorRunPipelineBatch, usePipelineExecutorSaveTemplate, usePipelineExecutorSetVideoPipelineSteps, usePipelineExecutorSpinEngine, usePipelineExecutorUncacheFrame, usePipelineExecutorUpdateTemplate, usePipelineOrchestratorApplyDeviceSettingsPatch, usePipelineOrchestratorAssignAudio, usePipelineOrchestratorAssignDecoder, usePipelineOrchestratorAssignPipeline, usePipelineOrchestratorDeleteTemplate, usePipelineOrchestratorGetAgentLoad, usePipelineOrchestratorGetAgentSettings, usePipelineOrchestratorGetAudioAssignment, usePipelineOrchestratorGetAudioAssignments, usePipelineOrchestratorGetAudioNodeLoad, usePipelineOrchestratorGetCameraMetrics, usePipelineOrchestratorGetCameraSettings, usePipelineOrchestratorGetCameraStatus, usePipelineOrchestratorGetCameraStatuses, usePipelineOrchestratorGetCameraStepOverrides, usePipelineOrchestratorGetCapabilityBindings, usePipelineOrchestratorGetDecoderAssignment, usePipelineOrchestratorGetDecoderAssignments, usePipelineOrchestratorGetDeviceLiveContribution, usePipelineOrchestratorGetDeviceSettingsContribution, usePipelineOrchestratorGetGlobalMetrics, usePipelineOrchestratorGetPipelineAssignment, usePipelineOrchestratorGetPipelineAssignments, usePipelineOrchestratorListAgentSettings, usePipelineOrchestratorListTemplates, usePipelineOrchestratorRebalance, usePipelineOrchestratorRemoveAgentSettings, usePipelineOrchestratorResolvePipeline, usePipelineOrchestratorSaveTemplate, usePipelineOrchestratorSetAgentAddonDefaults, usePipelineOrchestratorSetAgentMaxCameras, usePipelineOrchestratorSetCameraPipelineForAgent, usePipelineOrchestratorSetCameraStepOverride, usePipelineOrchestratorSetCameraStepToggle, usePipelineOrchestratorSetCapabilityBinding, usePipelineOrchestratorUnassignAudio, usePipelineOrchestratorUnassignDecoder, usePipelineOrchestratorUnassignPipeline, usePipelineOrchestratorUpdateTemplate, usePipelineRunnerAttachCamera, usePipelineRunnerDetachCamera, usePipelineRunnerGetAllCameraMetrics, usePipelineRunnerGetCameraMetrics, usePipelineRunnerGetLocalCameras, usePipelineRunnerGetLocalLoad, usePipelineRunnerGetLocalMetrics, usePipelineRunnerReportMotion, usePlateGalleryCorrectPlateText, usePlateGalleryDeletePlate, usePlateGalleryGetPlateByTrack, usePlateGalleryGetPlateMedia, usePlateGalleryListPlates, usePlateGallerySearchPlates, usePlateGallerySuggestPlateClusters, usePlayerOverlayLayer, usePlayerOverlayLayers, usePlayerToolbarButton, usePlayerToolbarButtons, usePowerMeterGetStatus, usePresenceGetStatus, usePressureSensorGetStatus, usePrivacyMaskGetOptions, usePrivacyMaskGetStatus, usePrivacyMaskSetMask, usePtzAutotrackGetSettings, usePtzAutotrackGetStatus, usePtzAutotrackSetEnabled, usePtzAutotrackSetSettings, usePtzContinuousMove, usePtzDeletePreset, usePtzGetOptions, usePtzGetPosition, usePtzGetPresets, usePtzGetStatus, usePtzGoHome, usePtzGoToPreset, usePtzMove, usePtzSavePreset, usePtzSetAutofocus, usePtzStop, useRebootReboot, useRecordingApplyDeviceSettingsPatch, useRecordingGetAvailability, useRecordingGetDaysWithRecordings, useRecordingGetDeviceConfig, useRecordingGetDeviceLiveContribution, useRecordingGetDeviceSettingsContribution, useRecordingGetPlaybackManifest, useRecordingGetStatus, useRecordingGetStorageUsage, useRecordingLocateSegment, useRecordingPruneFootage, useRecordingReadSegmentBytes, useRecordingRescanStorage, useRecordingSetDeviceConfig, useRemoteComponent, useScriptRunnerGetStatus, useScriptRunnerRun, useScriptRunnerStop, useSettingsStoreCount, useSettingsStoreDeclareCollection, useSettingsStoreDelete, useSettingsStoreGet, useSettingsStoreHistogram, useSettingsStoreInsert, useSettingsStoreIsEmpty, useSettingsStoreQuery, useSettingsStoreSet, useSettingsStoreUpdate, useSmokeGetStatus, useSnapshotApplyDeviceSettingsPatch, useSnapshotGetDeviceLiveContribution, useSnapshotGetDeviceSettingsContribution, useSnapshotGetSnapshot, useSnapshotGetStatus, useSnapshotInvalidateCache, useSnapshotProviderGetSnapshot, useSnapshotProviderSupportsDevice, useStorageAbortUpload, useStorageBeginDownload, useStorageBeginUpload, useStorageDelete, useStorageDeleteLocation, useStorageEndDownload, useStorageExists, useStorageFinalizeUpload, useStorageGetAvailableSpace, useStorageGetDefaultLocation, useStorageList, useStorageListLocationDeclarations, useStorageListLocations, useStorageListProviders, useStorageRead, useStorageReadChunk, useStorageResolve, useStorageTestConfig, useStorageTestLocation, useStorageUpsertLocation, useStorageWrite, useStorageWriteChunk, useStreamBrokerApplyDeviceSettingsPatch, useStreamBrokerAssignProfile, useStreamBrokerGetAllRtspEntries, useStreamBrokerGetBrokerStats, useStreamBrokerGetDeviceLiveContribution, useStreamBrokerGetDeviceSettingsContribution, useStreamBrokerGetPreBufferInfo, useStreamBrokerGetRtspEntry, useStreamBrokerGetRtspPort, useStreamBrokerGetStreamUrl, useStreamBrokerGetStreamWithCodec, useStreamBrokerIsRtspEnabled, useStreamBrokerKillClient, useStreamBrokerListAllCameraStreams, useStreamBrokerListAllProfileSlots, useStreamBrokerListClients, useStreamBrokerProbeStream, useStreamBrokerPublishCameraStream, useStreamBrokerPullAudioChunks, useStreamBrokerPullFrameHandles, useStreamBrokerRegenerateRtspToken, useStreamBrokerReleaseStreamWithCodec, useStreamBrokerRestartProfile, useStreamBrokerRetractCameraStream, useStreamBrokerSetPreBufferDuration, useStreamBrokerSetRtspEnabled, useStreamBrokerSubscribeAudioChunks, useStreamBrokerSubscribeFrames, useStreamBrokerUnassignProfile, useStreamBrokerUnsubscribeAudioChunks, useStreamBrokerUnsubscribeFrames, useStreamCatalogGetCatalog, useStreamParamsGetConfigSchema, useStreamParamsGetOptions, useStreamParamsGetStatus, useStreamParamsSetProfile, useSwitchGetStatus, useSwitchSetState, useSystem, useSystemFeatureFlags, useSystemForceRetentionCleanup, useSystemGetRetentionConfig, useSystemHealth, useSystemInfo, useSystemMutation, useSystemNetworkAddresses, useSystemQuery, useSystemSetRetentionConfig, useTamperGetStatus, useTemperatureSensorGetStatus, useThemeMode, useToastOnToast, useTurnProviderGetTurnServers, useUpdateGetStatus, useUpdateInstallUpdate, useUserManagementConfirmTotp, useUserManagementCreateApiKey, useUserManagementCreateScopedToken, useUserManagementCreateUser, useUserManagementDeleteUser, useUserManagementDisableTotp, useUserManagementGetTotpStatus, useUserManagementListApiKeys, useUserManagementListOauthSessions, useUserManagementListScopedTokens, useUserManagementListUsers, useUserManagementOauthExchangeCode, useUserManagementOauthIssueCode, useUserManagementOauthRefresh, useUserManagementOauthVerifyAccessToken, useUserManagementResetPassword, useUserManagementRevokeApiKey, useUserManagementRevokeOauthSession, useUserManagementRevokeScopedToken, useUserManagementSetUserScopes, useUserManagementSetupTotp, useUserManagementUpdateUser, useUserManagementValidateApiKey, useUserManagementValidateCredentials, useUserManagementValidateScopedToken, useUserManagementVerifyTotp, useVacuumControlGetStatus, useVacuumControlLocate, useVacuumControlPause, useVacuumControlReturnToBase, useVacuumControlSetFanSpeed, useVacuumControlStart, useVacuumControlStop, useValveClose, useValveGetStatus, useValveOpen, useValveSetPosition, useValveStop, useVibrationGetStatus, useVideoclipsGetClipPlayback, useVideoclipsListClips, useVodPlayback, useWaterHeaterGetStatus, useWaterHeaterSetAway, useWaterHeaterSetOperationMode, useWaterHeaterSetTargetTemp, useWeatherGetStatus, useWebrtcSessionAddIceCandidate, useWebrtcSessionCloseSession, useWebrtcSessionCreateSession, useWebrtcSessionGetIceCandidates, useWebrtcSessionGetSessionState, useWebrtcSessionHandleAnswer, useWebrtcSessionHandleOffer, useWebrtcSessionHasAdaptiveBitrate, useWebrtcSessionListStreams, useWidget, useWidgetMetadata, useWidgetRegistry, useZoneAnalyticsGetCameraHistory, useZoneAnalyticsGetCurrentSnapshot, useZoneAnalyticsGetUnzonedHistory, useZoneAnalyticsGetZoneHistory, useZoneEditing, useZoneRulesListRules, useZoneRulesSetRules, useZonesAddZone, useZonesListZones, useZonesRemoveZone, useZonesUpdateZone, vacuumStateMeta, validateScopes, valveStateMeta, waterHeaterPhase, waterHeaterTint, weatherConditionMeta, weatherTint };
42561
+ export { AddonGlobalSettingsForm, AgentStepEditor, AlarmHeroCard, AlarmInlineControl as AlarmPanelInlineControl, AppShell, ArcKnob, AudioClassificationList, AudioLevelWaveform, AudioWaveform, AutotrackSection, BTN_COMPACT, BTN_COMPACT_DANGER, BTN_COMPACT_PRIMARY, BTN_COMPACT_WARNING, Badge, BatteryBadge, BottomSheet, Breadcrumb, BrightnessPanel, Button, ButtonControl, ButtonHeroCard, CENTER, CHIP_ACTIVE, CHIP_BASE, CHIP_INACTIVE, CLASS_COLORS, COLUMN_BREAKPOINT_CLASS, COLUMN_PRIORITY, CONTROL_CAP_NAMES, CONTROL_FILLS, CameraStreamPlayer, Card, Checkbox, ChildSectionAccordion, ClimatePanel, CodeBlock, CollapsibleCard, ConfigFormBuilder, FormField as ConfigFormField, ConfigSchemaField, ConfirmActionButton, ConfirmDialogProvider, ConsumablesPanel, ContainerChildrenProvider, ContainerPrimaryHero, ControlColumn, ControlHeroCard, ControlInlineControl, ControlPanel, CopyButton, CoverHeroCard, CoverInlineControl, CoverPanel, CustomFieldRenderersProvider, DEFAULT_COLOR, DEVICE_COLUMNS, DEVICE_LIST_PAGE_SIZE_KEY, DEVICE_LIST_PAGE_SIZE_OPTIONS, DEVICE_ROLE_META, DEVICE_TYPE_CONTROL, DEVICE_TYPE_META, DataTable, DetectionCanvas, DetectionOverlay, DetectionResultTree, DevShell, DeviceActivityPanel, DeviceBatchToolbar, DeviceCard, DeviceContextProvider, DeviceExportPanel, DeviceGrid, DeviceItem, DeviceList, Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, DiscoveryPanel, DoorbellRecentPanel, Dropdown, DropdownContent, DropdownItem, DropdownTrigger, DummyHeroCard, DummyInline, EmptyState, ErrorBox, EventStream, FILL, FanHeroCard, FanInlineControl, FanPanel, FilterBar, FloatingEventStream, FloatingLogStream, FloatingPanel, FormField$1 as FormField, GRID_GAP, GRID_PAIRED, GRID_QUICK_STATS, GripTrack, HOST_WIDGETS, HlsVideo, HoverZoomImage, HumidifierHeroCard, HumidifierInlineControl, INPUT_COMPACT, IconAction, IconButton, ImageHeroCard, ImageInlineControl, ImageSelector, InferenceConfigSelector, Input, KebabMenu, KeyValueList, LIST_ROW, Label, LawnMowerHeroCard, LawnMowerInlineControl, LightHeroCard, LightInlineControl, LockHeroCard, LockInlineControl, LockPanel, LogStream, LoginForm, MODE_COLOR, MaskShapeCanvas, MediaPlayerHeroCard, MediaPlayerInlineControl, MediaPlayerPanel, MobileDrawer, MotionZonesSettings, NodeMultiSelectField, NodePicker, NodeSelectField, OfflineBadge, PHASE_CONFIG, PRIORITY, PTZOverlay, PageHeader, PhaseIcon, PipelineBuilder, PipelineRuntimeSelector, PipelineStep, PipelineTreeMatrix, PlayerOverlaysProvider, Popover, PopoverContent, PopoverRowAction, PopoverTrigger, PrivacyMaskSettings, ProviderBadge, PtzPanel, QrCode, RIGHT, ROLE_DESCRIPTOR, RadialGauge, RecordingPanel, ResponseLog, SECTION_BODY, SECTION_CARD, SECTION_HEADER, SPLIT_PANEL_OUTER, SPLIT_PANEL_SIDE, STACK_GAP, STATE_COLOR, ScopePicker, ScrollArea, Select, SemanticBadge, SensorHeroCard, SensorInlineControl, SensorValueAtom, Separator, Sidebar, SidebarItem, Skeleton, SlideOverPanel, SlideToggle, SnapshotButton, StatCard, StateValuesStream, StatusBadge, StepTimings, StepTreeMaster, Stepper, StreamBrokerSelector, StreamPanel, Switch, SwitchHeroCard, SwitchInlineControl, SwitchPanel, SystemProvider, TEXT_FIELD_LABEL, TEXT_HINT, TEXT_METRIC, TEXT_SECTION_LABEL, TEXT_VALUE, TIMEZONES, Tabs, TabsContent, TabsList, TabsTrigger, TapToggle, ThemeProvider, ThermostatHeroCard, ThermostatInlineControl, TimezoneSelector, Tooltip, TooltipContent, TooltipTrigger, VacuumHeroCard, VacuumInlineControl, ValueReadout, ValveHeroCard, ValveInlineControl, VersionBadge, VodPlaybackProvider, WaterHeaterHeroCard, WaterHeaterInlineControl, WeatherHeroCard, WeatherInlineControl, WidgetMetricCard, WidgetPanel, WidgetRegistryProvider, WidgetSlot, ZoneEditingProvider, allDeviceTypeFilterOptions, buildStepTreeFromSchema, childEntityId, cn, columnsForContext, containerChildToRef, countableDevices, coverHighlight, createSharedContext, createTheme, darkColors, defaultTheme, deriveDeviceKind, deviceRoleMeta, deviceRoleMetaOf, deviceTypeMeta, deviceTypeMetaOf, ensureMfHostInit, findTimezone, formatControlDateTime, formatLastSeen, fuzzyMatch, getClassColor, getPhaseVisual, groupChildrenByLayout, hardwareLabel, humidifierTint, createLucideIcon as i, isAbsentProvider, isFieldVisible, lawnMowerActivityMeta, lightColors, loadRemoteBundle, metadataEntries, metadataString, mirror, mountAddonPage, Square as n, nextSort, normalizeForSearch, overrideEntityIdFromLink, providerIcons, EyeOff as r, resolveContainerPrimary, resolveControlAlign, resolveDeviceControl, resolvePrimaryChild, sortRows, statusIcons, Trash2 as t, tankAlert, themeToCss, trpc, useAccessoriesGetStatus, useAccessoriesSetChildHidden, useAddonPagesListPages, useAddonSettingsGetDeviceSettings, useAddonSettingsGetGlobalSettings, useAddonSettingsUpdateDeviceSettings, useAddonSettingsUpdateGlobalSettings, useAddonWidgetsListWidgets, useAddonsApplyAutoUpdateToAll, useAddonsCancelJob, useAddonsCustom, useAddonsForceRefresh, useAddonsGetAddonAutoUpdate, useAddonsGetAutoUpdateSettings, useAddonsGetJob, useAddonsGetLastRestart, useAddonsGetLogs, useAddonsGetVersions, useAddonsInstallFromWorkspace, useAddonsInstallPackage, useAddonsIsWorkspaceAvailable, useAddonsList, useAddonsListCapabilityProviders, useAddonsListFrameworkPackages, useAddonsListJobs, useAddonsListPackages, useAddonsListUpdates, useAddonsListWorkspacePackages, useAddonsOnAddonLogs, useAddonsReloadPackages, useAddonsRestartAddon, useAddonsRestartServer, useAddonsRetryLoad, useAddonsRollbackPackage, useAddonsSearchAvailable, useAddonsSetAddonAutoUpdate, useAddonsSetAutoUpdateSettings, useAddonsSetCapabilityProviderEnabled, useAddonsStartJob, useAddonsUninstallPackage, useAddonsUpdateFrameworkPackage, useAddonsUpdatePackage, useAirQualitySensorGetStatus, useAlarmPanelArm, useAlarmPanelDisarm, useAlarmPanelGetStatus, useAlarmPanelTrigger, useAlertsDismiss, useAlertsEmit, useAlertsGetUnreadCount, useAlertsList, useAlertsMarkAllRead, useAlertsMarkRead, useAlertsUpdate, useAllWidgets, useAmbientLightSensorGetStatus, useAudioAnalysisApplyDeviceSettingsPatch, useAudioAnalysisGetDeviceLiveContribution, useAudioAnalysisGetDeviceSettingsContribution, useAudioAnalysisResolveDeviceSettings, useAudioAnalyzerAnalyseChunk, useAudioAnalyzerClassify, useAudioAnalyzerDispose, useAudioAnalyzerIsReady, useAudioAnalyzerReprobeAudioEngine, useAudioCodecCanHandle, useAudioCodecCloseSession, useAudioCodecCreateDecodeSession, useAudioCodecCreateEncodeSession, useAudioCodecFlushEncode, useAudioCodecListActiveSessions, useAudioCodecListSupportedCodecs, useAudioCodecPullEncoded, useAudioCodecPullPcm, useAudioCodecPushEncodedFrame, useAudioCodecPushPcm, useAudioMetricsGetCurrentSnapshot, useAudioMetricsGetHistory, useAutomationControlDisable, useAutomationControlEnable, useAutomationControlGetStatus, useAutomationControlTrigger, useBackupDelete, useBackupGetEntries, useBackupList, useBackupListArchives, useBackupListDestinations, useBackupListLocations, useBackupPreviewSchedule, useBackupRestore, useBackupTrigger, useBackupUpsertDestinationPolicy, useBatteryGetStatus, useBatteryWakeForStream, useBinaryGetStatus, useBrightnessGetStatus, useBrightnessSetBrightness, useBrokerAdd, useBrokerGet, useBrokerGetBrokerConfig, useBrokerGetSettings, useBrokerGetSettingsSchema, useBrokerGetState, useBrokerGetStatus, useBrokerList, useBrokerListProviders, useBrokerPublish, useBrokerRemove, useBrokerSetSettings, useBrokerSubscribe, useBrokerTestConnection, useBrokerTestSettings, useBrokerUnsubscribe, useButtonPress, useCameraCredentialsGetCredentials, useCameraCredentialsGetStatus, useCameraPipelineConfigApplyDeviceSettingsPatch, useCameraPipelineConfigGetDeviceLiveContribution, useCameraPipelineConfigGetDeviceSettingsContribution, useCameraStreamsGetBrokerStreams, useCameraStreamsGetCameraStreams, useCameraStreamsGetProfileRtspEntries, useCameraStreamsGetRtspEntries, useCameraStreamsPickStream, useCarbonMonoxideGetStatus, useClimateControlGetStatus, useClimateControlSetFanMode, useClimateControlSetMode, useClimateControlSetPreset, useClimateControlSetTarget, useClimateControlSetTargetHumidity, useClimateControlSetTargetRange, useClusterNodes, useColorGetStatus, useColorSetColor, useConfirm, useConnectivityGetStatus, useConsumablesGetStatus, useConsumablesReset, useContactGetStatus, useContainerChildren, useControlGetStatus, useControlSetValue, useCoverClose, useCoverGetStatus, useCoverOpen, useCoverSetPosition, useCoverSetTiltPosition, useCoverStop, useCustomFieldRenderer, useDebouncedString, useDecoderCreateSession, useDecoderDestroySession, useDecoderGetFrame, useDecoderGetInfo, useDecoderGetShmStats, useDecoderGetStats, useDecoderListActiveSessions, useDecoderOpenStream, useDecoderPullFrames, useDecoderPullHandles, useDecoderPushPacket, useDecoderReprobeHwaccel, useDecoderSupportsCodec, useDecoderUpdateConfig, useDetectionPipelineApplyDeviceSettingsPatch, useDetectionPipelineGetDeviceLiveContribution, useDetectionPipelineGetDeviceSettingsContribution, useDevShell, useDevice, useDeviceAdoptionAdopt, useDeviceAdoptionGetCandidate, useDeviceAdoptionGetStatus, useDeviceAdoptionListCandidateFilters, useDeviceAdoptionListCandidates, useDeviceAdoptionRefresh, useDeviceAdoptionRelease, useDeviceAdoptionResync, useDeviceAutotrack, useDeviceBattery, useDeviceCapSlice, useDeviceCapability, useDeviceDetections, useDeviceDiscoveryAdoptDevice, useDeviceDiscoveryGetStatus, useDeviceDiscoveryListDiscovered, useDeviceDiscoveryRefreshDiscovery, useDeviceDiscoveryReleaseDevice, useDeviceExportApplyDeviceSettingsPatch, useDeviceExportExposeDevice, useDeviceExportGetDeviceLiveContribution, useDeviceExportGetDeviceSettingsContribution, useDeviceExportGetStatus, useDeviceExportListExposedDevices, useDeviceExportListSupportedDeviceKinds, useDeviceExportUnexposeDevice, useDeviceId, useDeviceListPageSize, useDeviceManagerAddLocation, useDeviceManagerAdoptDevice, useDeviceManagerAdoptionAdopt, useDeviceManagerAdoptionListCandidates, useDeviceManagerAdoptionRefresh, useDeviceManagerAdoptionRelease, useDeviceManagerAdoptionResync, useDeviceManagerAllocateDeviceId, useDeviceManagerApplyInitialMeta, useDeviceManagerCreateDevice, useDeviceManagerDisable, useDeviceManagerDiscoverDevices, useDeviceManagerEnable, useDeviceManagerGetAllBindings, useDeviceManagerGetBindings, useDeviceManagerGetChildren, useDeviceManagerGetConfigSchema, useDeviceManagerGetCreationSchema, useDeviceManagerGetDevice, useDeviceManagerGetDeviceAggregate, useDeviceManagerGetDeviceLiveInfoAggregate, useDeviceManagerGetDeviceSettingsAggregate, useDeviceManagerGetDeviceStatusAggregate, useDeviceManagerGetSettingsSchema, useDeviceManagerGetStreamProfileMap, useDeviceManagerGetStreamSources, useDeviceManagerGetWireableFields, useDeviceManagerListAll, useDeviceManagerListBindableCapsForDeviceType, useDeviceManagerListLocations, useDeviceManagerListPersistedByAddon, useDeviceManagerListWrappersForCap, useDeviceManagerLoadConfig, useDeviceManagerLoadMeta, useDeviceManagerLoadRuntimeState, useDeviceManagerPersistConfig, useDeviceManagerProbeStreams, useDeviceManagerRegisterDevice, useDeviceManagerRemove, useDeviceManagerRemoveByIntegration, useDeviceManagerRemoveDevice, useDeviceManagerRemoveLocation, useDeviceManagerRunDeviceAction, useDeviceManagerSetChildLayout, useDeviceManagerSetDeviceLinks, useDeviceManagerSetDisabled, useDeviceManagerSetIntegrationId, useDeviceManagerSetLinkDeviceId, useDeviceManagerSetLocation, useDeviceManagerSetMetadata, useDeviceManagerSetName, useDeviceManagerSetPrimaryChildEntityId, useDeviceManagerSetRole, useDeviceManagerSetStreamProfileMap, useDeviceManagerSetType, useDeviceManagerSetWrapperActive, useDeviceManagerTestCreationField, useDeviceManagerTestField, useDeviceManagerUpdateConfig, useDeviceManagerUpdateDeviceField, useDeviceManagerUpdateDeviceFieldsBatch, useDeviceOpsGetConfigEntries, useDeviceOpsGetRawState, useDeviceOpsGetSettingsSchema, useDeviceOpsGetStreamSources, useDeviceOpsRemoveDevice, useDeviceOpsRunAction, useDeviceOpsSetConfig, useDeviceProviderAdoptDiscoveredDevice, useDeviceProviderCreateDevice, useDeviceProviderDiscoverDevices, useDeviceProviderGetChildCreationSchema, useDeviceProviderGetDevices, useDeviceProviderGetStatus, useDeviceProviderStart, useDeviceProviderStop, useDeviceProviderSupportsDiscovery, useDeviceProviderSupportsManualCreation, useDeviceProviderTestCreationField, useDeviceProxy, useDeviceSnapshot, useDeviceSnapshotImage, useDeviceState, useDeviceStateGetAllSnapshots, useDeviceStateGetCapSlice, useDeviceStateGetSnapshot, useDeviceStateSetCapSlice, useDeviceStateSlice, useDeviceStatusGetStatus, useDeviceWebrtc, useDevices, useDoorbellEvents, useDoorbellGetStatus, useEnumSensorGetStatus, useEventEmitterGetStatus, useEventInvalidation, useEventStreamLatest, useEventStreamMap, useEventsGetEventClipUrl, useEventsGetEventThumbnail, useEventsGetEvents, useFaceGalleryAssignFace, useFaceGalleryAssignFaces, useFaceGalleryCreateIdentity, useFaceGalleryDeleteFace, useFaceGalleryDeleteIdentity, useFaceGalleryGetFaceByTrack, useFaceGalleryGetFaceMedia, useFaceGalleryListIdentities, useFaceGalleryListIdentitySamples, useFaceGalleryListRecentFaces, useFaceGalleryRemoveSample, useFaceGalleryRenameIdentity, useFaceGallerySuggestFaceClusters, useFaceGalleryUnassignFace, useFaceGalleryUnassignFaces, useFanControlGetStatus, useFanControlSetDirection, useFanControlSetOscillating, useFanControlSetPercentage, useFanControlSetPreset, useFeatureProbeGetStatus, useFloodGetStatus, useGasGetStatus, useHumidifierGetStatus, useHumidifierSetMode, useHumidifierSetOn, useHumidifierSetTargetHumidity, useHumiditySensorGetStatus, useImageGetStatus, useIntegrationsCreate, useIntegrationsDelete, useIntegrationsGet, useIntegrationsGetAvailableTypes, useIntegrationsGetByAddonId, useIntegrationsGetSettings, useIntegrationsList, useIntegrationsSetSettings, useIntegrationsTestConnection, useIntegrationsUpdate, useIntercomEndTalkSession, useIntercomGetStatus, useIntercomHandleAnswer, useIntercomPushTalkAudio, useIntercomStartSession, useIntercomStartTalkSession, useIntercomStopSession, useIsMidWidth, useIsMobile, useLawnMowerControlDock, useLawnMowerControlGetStatus, useLawnMowerControlPause, useLawnMowerControlStartMowing, useLiveBuffer, useLiveEvent, useLocalNetworkGetAllowedAddresses, useLocalNetworkGetConnectionEndpoints, useLocalNetworkGetPreferred, useLocalNetworkList, useLocalNetworkResetAllowlistToBestMatch, useLocalNetworkSetAllowedAddresses, useLockControlGetStatus, useLockControlLock, useLockControlOpen, useLockControlUnlock, useMediaPlayerGetStatus, useMediaPlayerNext, useMediaPlayerPause, useMediaPlayerPlay, useMediaPlayerPlayMedia, useMediaPlayerPrevious, useMediaPlayerSeek, useMediaPlayerSelectSource, useMediaPlayerSetMute, useMediaPlayerSetRepeat, useMediaPlayerSetShuffle, useMediaPlayerSetVolume, useMediaPlayerStop, useMeshNetworkGetStatus, useMeshNetworkJoin, useMeshNetworkLeave, useMeshNetworkListPeers, useMeshNetworkLogout, useMeshNetworkStartLogin, useMeshNetworkTestConnection, useMetricsProviderCollectSnapshot, useMetricsProviderDumpHeapSnapshot, useMetricsProviderGetAddonStats, useMetricsProviderGetCached, useMetricsProviderGetCpuTemperature, useMetricsProviderGetCurrent, useMetricsProviderGetDiskSpace, useMetricsProviderGetGpuInfo, useMetricsProviderGetProcessStats, useMetricsProviderKillProcess, useMetricsProviderListAddonInstances, useMetricsProviderListNodeProcesses, useMotionDetectionAnalyze, useMotionDetectionApplyDeviceSettingsPatch, useMotionDetectionGetDeviceLiveContribution, useMotionDetectionGetDeviceSettingsContribution, useMotionDetectionRemoveCamera, useMotionDetectionReset, useMotionGetStatus, useMotionIsDetected, useMotionTriggerGetStatus, useMotionTriggerSetMotionTrigger, useMotionZonesGetOptions, useMotionZonesGetStatus, useMotionZonesSetZone, useMqttBrokerAddBroker, useMqttBrokerGetBrokerConfig, useMqttBrokerGetStatus, useMqttBrokerListBrokers, useMqttBrokerRemoveBroker, useMqttBrokerStartEmbeddedBroker, useMqttBrokerStopEmbeddedBroker, useMqttBrokerTestConnection, useNativeObjectDetectionGetStatus, useNativeObjectDetectionSetEnabled, useNetworkAccessGetEndpoint, useNetworkAccessGetStatus, useNetworkAccessListEndpoints, useNetworkAccessStart, useNetworkAccessStop, useNetworkQualityGetAllStats, useNetworkQualityGetDeviceStats, useNetworkQualityReportClientStats, useNodesClusterAddonStatus, useNodesDeployAddon, useNodesExecuteQuery, useNodesGetCapUsageGraph, useNodesGetNodeAddons, useNodesRenameNode, useNodesRestartAddon, useNodesRestartNode, useNodesRestartProcess, useNodesSetProcessLogLevel, useNodesShutdownNode, useNodesTopology, useNodesUndeployAddon, useNotificationOutputSend, useNotificationOutputSendTest, useNotifierCancel, useNotifierGetStatus, useNotifierSend, useNumericSensorGetStatus, useOptimisticSlice, useOptionalSystem, useOptionalWidgetRegistry, useOsdGetStatus, useOsdSetOverlay, usePTZ, usePipelineAnalyticsApplyDeviceSettingsPatch, usePipelineAnalyticsClearTracks, usePipelineAnalyticsGetActiveTracks, usePipelineAnalyticsGetAudioEvents, usePipelineAnalyticsGetDeviceLiveContribution, usePipelineAnalyticsGetDeviceSettingsContribution, usePipelineAnalyticsGetEventDensity, usePipelineAnalyticsGetEventMedia, usePipelineAnalyticsGetMotionEvents, usePipelineAnalyticsGetObjectEvents, usePipelineAnalyticsGetTrack, usePipelineAnalyticsGetTrackMedia, usePipelineAnalyticsListTracks, usePipelineAnalyticsPruneEventsBefore, usePipelineAnalyticsSearchObjectEvents, usePipelineExecutorCacheFrameInPool, usePipelineExecutorDeleteModel, usePipelineExecutorDeleteTemplate, usePipelineExecutorDetect, usePipelineExecutorDownloadModel, usePipelineExecutorGetAddonModels, usePipelineExecutorGetAudioCapabilities, usePipelineExecutorGetAvailableEngines, usePipelineExecutorGetCapabilities, usePipelineExecutorGetDefaultSteps, usePipelineExecutorGetDetectionConfigSchema, usePipelineExecutorGetEffectiveTuning, usePipelineExecutorGetEngineProvisioning, usePipelineExecutorGetGlobalPipelineConfig, usePipelineExecutorGetGlobalSteps, usePipelineExecutorGetOrchestratorConfigSchema, usePipelineExecutorGetReferenceAudio, usePipelineExecutorGetReferenceAudioFiles, usePipelineExecutorGetReferenceImage, usePipelineExecutorGetSchema, usePipelineExecutorGetSelectedEngine, usePipelineExecutorGetVideoPipelineSteps, usePipelineExecutorInferCached, usePipelineExecutorKillEngine, usePipelineExecutorListLoadedEngines, usePipelineExecutorListReferenceImages, usePipelineExecutorListTemplates, usePipelineExecutorReprobeEngine, usePipelineExecutorRunAudioTest, usePipelineExecutorRunPipeline, usePipelineExecutorRunPipelineBatch, usePipelineExecutorSaveTemplate, usePipelineExecutorSetVideoPipelineSteps, usePipelineExecutorSpinEngine, usePipelineExecutorUncacheFrame, usePipelineExecutorUpdateTemplate, usePipelineOrchestratorApplyDeviceSettingsPatch, usePipelineOrchestratorAssignAudio, usePipelineOrchestratorAssignDecoder, usePipelineOrchestratorAssignPipeline, usePipelineOrchestratorDeleteTemplate, usePipelineOrchestratorGetAgentLoad, usePipelineOrchestratorGetAgentSettings, usePipelineOrchestratorGetAudioAssignment, usePipelineOrchestratorGetAudioAssignments, usePipelineOrchestratorGetAudioNodeLoad, usePipelineOrchestratorGetCameraMetrics, usePipelineOrchestratorGetCameraSettings, usePipelineOrchestratorGetCameraStatus, usePipelineOrchestratorGetCameraStatuses, usePipelineOrchestratorGetCameraStepOverrides, usePipelineOrchestratorGetCapabilityBindings, usePipelineOrchestratorGetDecoderAssignment, usePipelineOrchestratorGetDecoderAssignments, usePipelineOrchestratorGetDeviceLiveContribution, usePipelineOrchestratorGetDeviceSettingsContribution, usePipelineOrchestratorGetGlobalMetrics, usePipelineOrchestratorGetPipelineAssignment, usePipelineOrchestratorGetPipelineAssignments, usePipelineOrchestratorListAgentSettings, usePipelineOrchestratorListTemplates, usePipelineOrchestratorRebalance, usePipelineOrchestratorRemoveAgentSettings, usePipelineOrchestratorResolvePipeline, usePipelineOrchestratorSaveTemplate, usePipelineOrchestratorSetAgentAddonDefaults, usePipelineOrchestratorSetAgentMaxCameras, usePipelineOrchestratorSetCameraPipelineForAgent, usePipelineOrchestratorSetCameraStepOverride, usePipelineOrchestratorSetCameraStepToggle, usePipelineOrchestratorSetCapabilityBinding, usePipelineOrchestratorUnassignAudio, usePipelineOrchestratorUnassignDecoder, usePipelineOrchestratorUnassignPipeline, usePipelineOrchestratorUpdateTemplate, usePipelineRunnerAttachCamera, usePipelineRunnerDetachCamera, usePipelineRunnerGetAllCameraMetrics, usePipelineRunnerGetCameraMetrics, usePipelineRunnerGetLocalCameras, usePipelineRunnerGetLocalLoad, usePipelineRunnerGetLocalMetrics, usePipelineRunnerReportMotion, usePlateGalleryCorrectPlateText, usePlateGalleryDeletePlate, usePlateGalleryGetPlateByTrack, usePlateGalleryGetPlateMedia, usePlateGalleryListPlates, usePlateGallerySearchPlates, usePlateGallerySuggestPlateClusters, usePlayerOverlayLayer, usePlayerOverlayLayers, usePlayerToolbarButton, usePlayerToolbarButtons, usePowerMeterGetStatus, usePresenceGetStatus, usePressureSensorGetStatus, usePrivacyMaskGetOptions, usePrivacyMaskGetStatus, usePrivacyMaskSetMask, usePtzAutotrackGetSettings, usePtzAutotrackGetStatus, usePtzAutotrackSetEnabled, usePtzAutotrackSetSettings, usePtzContinuousMove, usePtzDeletePreset, usePtzGetOptions, usePtzGetPosition, usePtzGetPresets, usePtzGetStatus, usePtzGoHome, usePtzGoToPreset, usePtzMove, usePtzSavePreset, usePtzSetAutofocus, usePtzStop, useRebootReboot, useRecordingApplyDeviceSettingsPatch, useRecordingGetAvailability, useRecordingGetDaysWithRecordings, useRecordingGetDeviceConfig, useRecordingGetDeviceLiveContribution, useRecordingGetDeviceSettingsContribution, useRecordingGetPlaybackManifest, useRecordingGetStatus, useRecordingGetStorageUsage, useRecordingLocateSegment, useRecordingPruneFootage, useRecordingReadSegmentBytes, useRecordingRescanStorage, useRecordingSetDeviceConfig, useRemoteComponent, useScriptRunnerGetStatus, useScriptRunnerRun, useScriptRunnerStop, useSettingsStoreCount, useSettingsStoreDeclareCollection, useSettingsStoreDelete, useSettingsStoreGet, useSettingsStoreHistogram, useSettingsStoreInsert, useSettingsStoreIsEmpty, useSettingsStoreQuery, useSettingsStoreSet, useSettingsStoreUpdate, useSmokeGetStatus, useSnapshotApplyDeviceSettingsPatch, useSnapshotGetDeviceLiveContribution, useSnapshotGetDeviceSettingsContribution, useSnapshotGetSnapshot, useSnapshotGetStatus, useSnapshotInvalidateCache, useSnapshotProviderGetSnapshot, useSnapshotProviderSupportsDevice, useStorageAbortUpload, useStorageBeginDownload, useStorageBeginUpload, useStorageDelete, useStorageDeleteLocation, useStorageEndDownload, useStorageExists, useStorageFinalizeUpload, useStorageGetAvailableSpace, useStorageGetDefaultLocation, useStorageList, useStorageListLocationDeclarations, useStorageListLocations, useStorageListProviders, useStorageRead, useStorageReadChunk, useStorageResolve, useStorageTestConfig, useStorageTestLocation, useStorageUpsertLocation, useStorageWrite, useStorageWriteChunk, useStreamBrokerApplyDeviceSettingsPatch, useStreamBrokerAssignProfile, useStreamBrokerGetAllRtspEntries, useStreamBrokerGetBrokerStats, useStreamBrokerGetDeviceLiveContribution, useStreamBrokerGetDeviceSettingsContribution, useStreamBrokerGetPreBufferInfo, useStreamBrokerGetRtspEntry, useStreamBrokerGetRtspPort, useStreamBrokerGetStreamUrl, useStreamBrokerGetStreamWithCodec, useStreamBrokerIsRtspEnabled, useStreamBrokerKillClient, useStreamBrokerListAllCameraStreams, useStreamBrokerListAllProfileSlots, useStreamBrokerListClients, useStreamBrokerProbeStream, useStreamBrokerPublishCameraStream, useStreamBrokerPullAudioChunks, useStreamBrokerPullFrameHandles, useStreamBrokerRegenerateRtspToken, useStreamBrokerReleaseStreamWithCodec, useStreamBrokerRestartProfile, useStreamBrokerRetractCameraStream, useStreamBrokerSetPreBufferDuration, useStreamBrokerSetRtspEnabled, useStreamBrokerSubscribeAudioChunks, useStreamBrokerSubscribeFrames, useStreamBrokerUnassignProfile, useStreamBrokerUnsubscribeAudioChunks, useStreamBrokerUnsubscribeFrames, useStreamCatalogGetCatalog, useStreamParamsGetConfigSchema, useStreamParamsGetOptions, useStreamParamsGetStatus, useStreamParamsSetProfile, useSwitchGetStatus, useSwitchSetState, useSystem, useSystemFeatureFlags, useSystemForceRetentionCleanup, useSystemGetRetentionConfig, useSystemHealth, useSystemInfo, useSystemMutation, useSystemNetworkAddresses, useSystemQuery, useSystemSetRetentionConfig, useTamperGetStatus, useTemperatureSensorGetStatus, useThemeMode, useToastOnToast, useTurnProviderGetTurnServers, useUpdateGetStatus, useUpdateInstallUpdate, useUserManagementConfirmTotp, useUserManagementCreateApiKey, useUserManagementCreateScopedToken, useUserManagementCreateUser, useUserManagementDeleteUser, useUserManagementDisableTotp, useUserManagementGetTotpStatus, useUserManagementListApiKeys, useUserManagementListOauthSessions, useUserManagementListScopedTokens, useUserManagementListUsers, useUserManagementOauthExchangeCode, useUserManagementOauthIssueCode, useUserManagementOauthRefresh, useUserManagementOauthVerifyAccessToken, useUserManagementResetPassword, useUserManagementRevokeApiKey, useUserManagementRevokeOauthSession, useUserManagementRevokeScopedToken, useUserManagementSetUserScopes, useUserManagementSetupTotp, useUserManagementUpdateUser, useUserManagementValidateApiKey, useUserManagementValidateCredentials, useUserManagementValidateScopedToken, useUserManagementVerifyTotp, useVacuumControlGetStatus, useVacuumControlLocate, useVacuumControlPause, useVacuumControlReturnToBase, useVacuumControlSetFanSpeed, useVacuumControlStart, useVacuumControlStop, useValveClose, useValveGetStatus, useValveOpen, useValveSetPosition, useValveStop, useVibrationGetStatus, useVideoclipsGetClipPlayback, useVideoclipsListClips, useVodPlayback, useWaterHeaterGetStatus, useWaterHeaterSetAway, useWaterHeaterSetOperationMode, useWaterHeaterSetTargetTemp, useWeatherGetStatus, useWebrtcSessionAddIceCandidate, useWebrtcSessionCloseSession, useWebrtcSessionCreateSession, useWebrtcSessionGetIceCandidates, useWebrtcSessionGetSessionState, useWebrtcSessionHandleAnswer, useWebrtcSessionHandleOffer, useWebrtcSessionHasAdaptiveBitrate, useWebrtcSessionListStreams, useWidget, useWidgetMetadata, useWidgetRegistry, useZoneAnalyticsGetCameraHistory, useZoneAnalyticsGetCurrentSnapshot, useZoneAnalyticsGetUnzonedHistory, useZoneAnalyticsGetZoneHistory, useZoneEditing, useZoneRulesListRules, useZoneRulesSetRules, useZonesAddZone, useZonesListZones, useZonesRemoveZone, useZonesUpdateZone, vacuumStateMeta, validateScopes, valveStateMeta, waterHeaterPhase, waterHeaterTint, weatherConditionMeta, weatherTint };