@camstack/ui-library 1.2.285 → 1.2.287

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
@@ -1,7 +1,8 @@
1
+ import { t as createLucideIcon } from "./createLucideIcon-kNomBP27.js";
1
2
  import { ThemeProvider, createTheme, darkColors, defaultTheme, lightColors, themeToCss, useThemeMode } from "./theme/index.js";
2
3
  import * as __mfHostReact from "react";
3
4
  import React, { Fragment, Suspense, createContext, createElement, forwardRef, lazy, useCallback, useContext, useEffect, useId, useImperativeHandle, useLayoutEffect, useMemo, useReducer, useRef, useState, useSyncExternalStore } from "react";
4
- import { ALL_CAPABILITY_DEFINITIONS, CAM_PROFILE_ORDER, CLIP_STILL_DISPOSITION_HEADER, CLIP_STILL_REASON_CODE_HEADER, CLIP_STILL_REASON_HEADER, CONTAINER_CHILD_PRIORITY, DEFAULT_EVENTS_BAND_BUFFER_SEC, DEFAULT_EVENT_COLOR, DEVICE_TYPE_CONTROL_KIND, DISPLAY_ICON_GROUPS, DeviceExportStatusSchema, DeviceFeature, DeviceRole, DeviceType, EVENT_TAXONOMY, EXTENSION_SLOTS, EXTENSION_SLOT_IDS, EventCategory, ExposedDeviceSchema, FIRST_LEVEL_MACRO_CLASSES, KNOWN_CAP_NAMES, MAX_SENSOR_TRIGGER_DEVICES, MODEL_PROVIDER_IDS, NAVIGATION_LIGHT_LEVEL_MAX, NAVIGATION_LIGHT_LEVEL_MIN, NODE_COLOR_IDS, NodeColorIdSchema, PET_FEEDER_MANUAL_FEED_MAX, PET_FEEDER_MANUAL_FEED_MIN, RECORDING_AUDIO_TRIGGER_OFFERED_DBFS, RECORDING_SOURCE_CAMSTACK_ADDON, RecordingConfigSchema, RecordingStatusSchema, SECRET_CLEAR, SOURCE_CAP_ACTIVE_FIELD, STATIONARY_OVERLAY_STYLE, TIMEZONES, USE_ROOT_MODEL_SETTING_KEY, assignNodeColorId, assignNodeColorId as assignNodeColorId$1, buildModelVariantGroups, canConvertUnit, clearModelBoundOverrides, clearModelBoundSetting, clusterStepSettingFieldsFor, collectModelBoundKeys, createDeviceProxy, createLazyTrpcSource, createSliceHandle, deriveRecordingMode, describeModelVariant, effectiveStepSettings, findTimezone, formatParkedFor, hasModelBoundOverrides, isKeychainStoredField, isRootSuppliableStepId, isSecretClear, isSecretFieldView, modelBindingKey, normalizeUnit, publicEventCategories, resolveContainerPrimaryChild, resolveDeviceControlKind, resolveDisplayIconKey, resolveModelBoundSetting, resolveRecordingProfiles, resolveRootSupply, resolveVariantModelId, resolveViewableDeviceIds, searchDisplayIcons, selectAssignedProfileSlots, stepSettingSource, tryConvertUnit, unitsForDimension, withFieldFrom, withoutField, writeModelBoundSetting } from "@camstack/types";
5
+ import { ALL_CAPABILITY_DEFINITIONS, CAM_PROFILE_ORDER, CLIP_STILL_DISPOSITION_HEADER, CLIP_STILL_REASON_CODE_HEADER, CLIP_STILL_REASON_HEADER, CONTAINER_CHILD_PRIORITY, DEFAULT_EVENTS_BAND_BUFFER_SEC, DEFAULT_EVENT_COLOR, DEVICE_TYPE_CONTROL_KIND, DeviceExportStatusSchema, DeviceFeature, DeviceRole, DeviceType, EVENT_TAXONOMY, EXTENSION_SLOTS, EXTENSION_SLOT_IDS, EventCategory, ExposedDeviceSchema, FIRST_LEVEL_MACRO_CLASSES, ICON_CATEGORIES, KNOWN_CAP_NAMES, MAX_SENSOR_TRIGGER_DEVICES, MODEL_PROVIDER_IDS, NAVIGATION_LIGHT_LEVEL_MAX, NAVIGATION_LIGHT_LEVEL_MIN, NODE_COLOR_IDS, NodeColorIdSchema, PET_FEEDER_MANUAL_FEED_MAX, PET_FEEDER_MANUAL_FEED_MIN, RECORDING_AUDIO_TRIGGER_OFFERED_DBFS, RECORDING_SOURCE_CAMSTACK_ADDON, RecordingConfigSchema, RecordingStatusSchema, SECRET_CLEAR, SOURCE_CAP_ACTIVE_FIELD, STATIONARY_OVERLAY_STYLE, TIMEZONES, USE_ROOT_MODEL_SETTING_KEY, assignNodeColorId, assignNodeColorId as assignNodeColorId$1, buildModelVariantGroups, canConvertUnit, canonicalIconKey, clearModelBoundOverrides, clearModelBoundSetting, clusterStepSettingFieldsFor, collectModelBoundKeys, createDeviceProxy, createLazyTrpcSource, createSliceHandle, deriveRecordingMode, describeModelVariant, effectiveStepSettings, findTimezone, formatParkedFor, hasModelBoundOverrides, iconCategoryLabel, iconsInCategory, isKeychainStoredField, isRootSuppliableStepId, isSecretClear, isSecretFieldView, modelBindingKey, normalizeUnit, publicEventCategories, resolveContainerPrimaryChild, resolveDeviceControlKind, resolveIconKey, resolveModelBoundSetting, resolveRecordingProfiles, resolveRootSupply, resolveVariantModelId, resolveViewableDeviceIds, searchIcons, selectAssignedProfileSlots, stepSettingSource, tryConvertUnit, unitsForDimension, withFieldFrom, withoutField, writeModelBoundSetting } from "@camstack/types";
5
6
  import * as __mfHostTrpcReactQuery from "@trpc/react-query";
6
7
  import { createTRPCReact } from "@trpc/react-query";
7
8
  import * as __mfHostReactJsxRuntime from "react/jsx-runtime";
@@ -16,114 +17,6 @@ import * as __mfHostTrpcClient from "@trpc/client";
16
17
  import { createTRPCClient, createWSClient, httpLink, splitLink, wsLink } from "@trpc/client";
17
18
  import { createSystem } from "@camstack/sdk";
18
19
  import { z } from "zod";
19
- //#region ../../node_modules/lucide-react/dist/esm/shared/src/utils/mergeClasses.js
20
- /**
21
- * @license lucide-react v0.576.0 - ISC
22
- *
23
- * This source code is licensed under the ISC license.
24
- * See the LICENSE file in the root directory of this source tree.
25
- */
26
- var mergeClasses = (...classes) => classes.filter((className, index, array) => {
27
- return Boolean(className) && className.trim() !== "" && array.indexOf(className) === index;
28
- }).join(" ").trim();
29
- //#endregion
30
- //#region ../../node_modules/lucide-react/dist/esm/shared/src/utils/toKebabCase.js
31
- /**
32
- * @license lucide-react v0.576.0 - ISC
33
- *
34
- * This source code is licensed under the ISC license.
35
- * See the LICENSE file in the root directory of this source tree.
36
- */
37
- var toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase();
38
- //#endregion
39
- //#region ../../node_modules/lucide-react/dist/esm/shared/src/utils/toCamelCase.js
40
- /**
41
- * @license lucide-react v0.576.0 - ISC
42
- *
43
- * This source code is licensed under the ISC license.
44
- * See the LICENSE file in the root directory of this source tree.
45
- */
46
- var toCamelCase = (string) => string.replace(/^([A-Z])|[\s-_]+(\w)/g, (match, p1, p2) => p2 ? p2.toUpperCase() : p1.toLowerCase());
47
- //#endregion
48
- //#region ../../node_modules/lucide-react/dist/esm/shared/src/utils/toPascalCase.js
49
- /**
50
- * @license lucide-react v0.576.0 - ISC
51
- *
52
- * This source code is licensed under the ISC license.
53
- * See the LICENSE file in the root directory of this source tree.
54
- */
55
- var toPascalCase = (string) => {
56
- const camelCase = toCamelCase(string);
57
- return camelCase.charAt(0).toUpperCase() + camelCase.slice(1);
58
- };
59
- //#endregion
60
- //#region ../../node_modules/lucide-react/dist/esm/defaultAttributes.js
61
- /**
62
- * @license lucide-react v0.576.0 - ISC
63
- *
64
- * This source code is licensed under the ISC license.
65
- * See the LICENSE file in the root directory of this source tree.
66
- */
67
- var defaultAttributes = {
68
- xmlns: "http://www.w3.org/2000/svg",
69
- width: 24,
70
- height: 24,
71
- viewBox: "0 0 24 24",
72
- fill: "none",
73
- stroke: "currentColor",
74
- strokeWidth: 2,
75
- strokeLinecap: "round",
76
- strokeLinejoin: "round"
77
- };
78
- //#endregion
79
- //#region ../../node_modules/lucide-react/dist/esm/shared/src/utils/hasA11yProp.js
80
- /**
81
- * @license lucide-react v0.576.0 - ISC
82
- *
83
- * This source code is licensed under the ISC license.
84
- * See the LICENSE file in the root directory of this source tree.
85
- */
86
- var hasA11yProp = (props) => {
87
- for (const prop in props) if (prop.startsWith("aria-") || prop === "role" || prop === "title") return true;
88
- return false;
89
- };
90
- //#endregion
91
- //#region ../../node_modules/lucide-react/dist/esm/Icon.js
92
- /**
93
- * @license lucide-react v0.576.0 - ISC
94
- *
95
- * This source code is licensed under the ISC license.
96
- * See the LICENSE file in the root directory of this source tree.
97
- */
98
- var Icon = forwardRef(({ color = "currentColor", size = 24, strokeWidth = 2, absoluteStrokeWidth, className = "", children, iconNode, ...rest }, ref) => createElement("svg", {
99
- ref,
100
- ...defaultAttributes,
101
- width: size,
102
- height: size,
103
- stroke: color,
104
- strokeWidth: absoluteStrokeWidth ? Number(strokeWidth) * 24 / Number(size) : strokeWidth,
105
- className: mergeClasses("lucide", className),
106
- ...!children && !hasA11yProp(rest) && { "aria-hidden": "true" },
107
- ...rest
108
- }, [...iconNode.map(([tag, attrs]) => createElement(tag, attrs)), ...Array.isArray(children) ? children : [children]]));
109
- //#endregion
110
- //#region ../../node_modules/lucide-react/dist/esm/createLucideIcon.js
111
- /**
112
- * @license lucide-react v0.576.0 - ISC
113
- *
114
- * This source code is licensed under the ISC license.
115
- * See the LICENSE file in the root directory of this source tree.
116
- */
117
- var createLucideIcon = (iconName, iconNode) => {
118
- const Component = forwardRef(({ className, ...props }, ref) => createElement(Icon, {
119
- ref,
120
- iconNode,
121
- className: mergeClasses(`lucide-${toKebabCase(toPascalCase(iconName))}`, `lucide-${iconName}`, className),
122
- ...props
123
- }));
124
- Component.displayName = toPascalCase(iconName);
125
- return Component;
126
- };
127
20
  /**
128
21
  * @license lucide-react v0.576.0 - ISC
129
22
  *
@@ -351,30 +244,6 @@ var Bath = createLucideIcon("bath", [
351
244
  * This source code is licensed under the ISC license.
352
245
  * See the LICENSE file in the root directory of this source tree.
353
246
  */
354
- var BatteryCharging = createLucideIcon("battery-charging", [
355
- ["path", {
356
- d: "m11 7-3 5h4l-3 5",
357
- key: "b4a64w"
358
- }],
359
- ["path", {
360
- d: "M14.856 6H16a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-2.935",
361
- key: "lre1cr"
362
- }],
363
- ["path", {
364
- d: "M22 14v-4",
365
- key: "14q9d5"
366
- }],
367
- ["path", {
368
- d: "M5.14 18H4a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h2.936",
369
- key: "13q5k0"
370
- }]
371
- ]);
372
- /**
373
- * @license lucide-react v0.576.0 - ISC
374
- *
375
- * This source code is licensed under the ISC license.
376
- * See the LICENSE file in the root directory of this source tree.
377
- */
378
247
  var BatteryFull = createLucideIcon("battery-full", [
379
248
  ["path", {
380
249
  d: "M10 10v4",
@@ -504,78 +373,6 @@ var Battery = createLucideIcon("battery", [["path", {
504
373
  * This source code is licensed under the ISC license.
505
374
  * See the LICENSE file in the root directory of this source tree.
506
375
  */
507
- var BedDouble = createLucideIcon("bed-double", [
508
- ["path", {
509
- d: "M2 20v-8a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v8",
510
- key: "1k78r4"
511
- }],
512
- ["path", {
513
- d: "M4 10V6a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v4",
514
- key: "fb3tl2"
515
- }],
516
- ["path", {
517
- d: "M12 4v6",
518
- key: "1dcgq2"
519
- }],
520
- ["path", {
521
- d: "M2 18h20",
522
- key: "ajqnye"
523
- }]
524
- ]);
525
- /**
526
- * @license lucide-react v0.576.0 - ISC
527
- *
528
- * This source code is licensed under the ISC license.
529
- * See the LICENSE file in the root directory of this source tree.
530
- */
531
- var Bed = createLucideIcon("bed", [
532
- ["path", {
533
- d: "M2 4v16",
534
- key: "vw9hq8"
535
- }],
536
- ["path", {
537
- d: "M2 8h18a2 2 0 0 1 2 2v10",
538
- key: "1dgv2r"
539
- }],
540
- ["path", {
541
- d: "M2 17h20",
542
- key: "18nfp3"
543
- }],
544
- ["path", {
545
- d: "M6 8v9",
546
- key: "1yriud"
547
- }]
548
- ]);
549
- /**
550
- * @license lucide-react v0.576.0 - ISC
551
- *
552
- * This source code is licensed under the ISC license.
553
- * See the LICENSE file in the root directory of this source tree.
554
- */
555
- var BellOff = createLucideIcon("bell-off", [
556
- ["path", {
557
- d: "M10.268 21a2 2 0 0 0 3.464 0",
558
- key: "vwvbt9"
559
- }],
560
- ["path", {
561
- d: "M17 17H4a1 1 0 0 1-.74-1.673C4.59 13.956 6 12.499 6 8a6 6 0 0 1 .258-1.742",
562
- key: "178tsu"
563
- }],
564
- ["path", {
565
- d: "m2 2 20 20",
566
- key: "1ooewy"
567
- }],
568
- ["path", {
569
- d: "M8.668 3.01A6 6 0 0 1 18 8c0 2.687.77 4.653 1.707 6.05",
570
- key: "1hqiys"
571
- }]
572
- ]);
573
- /**
574
- * @license lucide-react v0.576.0 - ISC
575
- *
576
- * This source code is licensed under the ISC license.
577
- * See the LICENSE file in the root directory of this source tree.
578
- */
579
376
  var BellRing = createLucideIcon("bell-ring", [
580
377
  ["path", {
581
378
  d: "M10.268 21a2 2 0 0 0 3.464 0",
@@ -713,16 +510,6 @@ var Blinds = createLucideIcon("blinds", [
713
510
  * This source code is licensed under the ISC license.
714
511
  * See the LICENSE file in the root directory of this source tree.
715
512
  */
716
- var Bluetooth = createLucideIcon("bluetooth", [["path", {
717
- d: "m7 7 10 10-5 5V2l5 5L7 17",
718
- key: "1q5490"
719
- }]]);
720
- /**
721
- * @license lucide-react v0.576.0 - ISC
722
- *
723
- * This source code is licensed under the ISC license.
724
- * See the LICENSE file in the root directory of this source tree.
725
- */
726
513
  var Bone = createLucideIcon("bone", [["path", {
727
514
  d: "M17 10c.7-.7 1.69 0 2.5 0a2.5 2.5 0 1 0 0-5 .5.5 0 0 1-.5-.5 2.5 2.5 0 1 0-5 0c0 .81.7 1.8 0 2.5l-7 7c-.7.7-1.69 0-2.5 0a2.5 2.5 0 0 0 0 5c.28 0 .5.22.5.5a2.5 2.5 0 1 0 5 0c0-.81-.7-1.8 0-2.5Z",
728
515
  key: "w610uw"
@@ -789,23 +576,6 @@ var Box = createLucideIcon("box", [
789
576
  * This source code is licensed under the ISC license.
790
577
  * See the LICENSE file in the root directory of this source tree.
791
578
  */
792
- var Briefcase = createLucideIcon("briefcase", [["path", {
793
- d: "M16 20V4a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16",
794
- key: "jecpp"
795
- }], ["rect", {
796
- width: "20",
797
- height: "14",
798
- x: "2",
799
- y: "6",
800
- rx: "2",
801
- key: "i6l2r4"
802
- }]]);
803
- /**
804
- * @license lucide-react v0.576.0 - ISC
805
- *
806
- * This source code is licensed under the ISC license.
807
- * See the LICENSE file in the root directory of this source tree.
808
- */
809
579
  var Bug = createLucideIcon("bug", [
810
580
  ["path", {
811
581
  d: "M12 20v-9",
@@ -858,90 +628,6 @@ var Bug = createLucideIcon("bug", [
858
628
  * This source code is licensed under the ISC license.
859
629
  * See the LICENSE file in the root directory of this source tree.
860
630
  */
861
- var Building2 = createLucideIcon("building-2", [
862
- ["path", {
863
- d: "M10 12h4",
864
- key: "a56b0p"
865
- }],
866
- ["path", {
867
- d: "M10 8h4",
868
- key: "1sr2af"
869
- }],
870
- ["path", {
871
- d: "M14 21v-3a2 2 0 0 0-4 0v3",
872
- key: "1rgiei"
873
- }],
874
- ["path", {
875
- d: "M6 10H4a2 2 0 0 0-2 2v7a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2h-2",
876
- key: "secmi2"
877
- }],
878
- ["path", {
879
- d: "M6 21V5a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v16",
880
- key: "16ra0t"
881
- }]
882
- ]);
883
- /**
884
- * @license lucide-react v0.576.0 - ISC
885
- *
886
- * This source code is licensed under the ISC license.
887
- * See the LICENSE file in the root directory of this source tree.
888
- */
889
- var Building = createLucideIcon("building", [
890
- ["path", {
891
- d: "M12 10h.01",
892
- key: "1nrarc"
893
- }],
894
- ["path", {
895
- d: "M12 14h.01",
896
- key: "1etili"
897
- }],
898
- ["path", {
899
- d: "M12 6h.01",
900
- key: "1vi96p"
901
- }],
902
- ["path", {
903
- d: "M16 10h.01",
904
- key: "1m94wz"
905
- }],
906
- ["path", {
907
- d: "M16 14h.01",
908
- key: "1gbofw"
909
- }],
910
- ["path", {
911
- d: "M16 6h.01",
912
- key: "1x0f13"
913
- }],
914
- ["path", {
915
- d: "M8 10h.01",
916
- key: "19clt8"
917
- }],
918
- ["path", {
919
- d: "M8 14h.01",
920
- key: "6423bh"
921
- }],
922
- ["path", {
923
- d: "M8 6h.01",
924
- key: "1dz90k"
925
- }],
926
- ["path", {
927
- d: "M9 22v-3a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v3",
928
- key: "cabbwy"
929
- }],
930
- ["rect", {
931
- x: "4",
932
- y: "2",
933
- width: "16",
934
- height: "20",
935
- rx: "2",
936
- key: "1uxh74"
937
- }]
938
- ]);
939
- /**
940
- * @license lucide-react v0.576.0 - ISC
941
- *
942
- * This source code is licensed under the ISC license.
943
- * See the LICENSE file in the root directory of this source tree.
944
- */
945
631
  var Bus = createLucideIcon("bus", [
946
632
  ["path", {
947
633
  d: "M8 6v6",
@@ -1018,34 +704,6 @@ var Cable = createLucideIcon("cable", [
1018
704
  * This source code is licensed under the ISC license.
1019
705
  * See the LICENSE file in the root directory of this source tree.
1020
706
  */
1021
- var Calendar = createLucideIcon("calendar", [
1022
- ["path", {
1023
- d: "M8 2v4",
1024
- key: "1cmpym"
1025
- }],
1026
- ["path", {
1027
- d: "M16 2v4",
1028
- key: "4m81vk"
1029
- }],
1030
- ["rect", {
1031
- width: "18",
1032
- height: "18",
1033
- x: "3",
1034
- y: "4",
1035
- rx: "2",
1036
- key: "1hopcy"
1037
- }],
1038
- ["path", {
1039
- d: "M3 10h18",
1040
- key: "8toen8"
1041
- }]
1042
- ]);
1043
- /**
1044
- * @license lucide-react v0.576.0 - ISC
1045
- *
1046
- * This source code is licensed under the ISC license.
1047
- * See the LICENSE file in the root directory of this source tree.
1048
- */
1049
707
  var Camera = createLucideIcon("camera", [["path", {
1050
708
  d: "M13.997 4a2 2 0 0 1 1.76 1.05l.486.9A2 2 0 0 0 18.003 7H20a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V9a2 2 0 0 1 2-2h1.997a2 2 0 0 0 1.759-1.048l.489-.904A2 2 0 0 1 10.004 4z",
1051
709
  key: "18u6gg"
@@ -1289,21 +947,6 @@ var CircleDot = createLucideIcon("circle-dot", [["circle", {
1289
947
  * This source code is licensed under the ISC license.
1290
948
  * See the LICENSE file in the root directory of this source tree.
1291
949
  */
1292
- var CircleParking = createLucideIcon("circle-parking", [["circle", {
1293
- cx: "12",
1294
- cy: "12",
1295
- r: "10",
1296
- key: "1mglay"
1297
- }], ["path", {
1298
- d: "M9 17V7h4a3 3 0 0 1 0 6H9",
1299
- key: "1dfk2c"
1300
- }]]);
1301
- /**
1302
- * @license lucide-react v0.576.0 - ISC
1303
- *
1304
- * This source code is licensed under the ISC license.
1305
- * See the LICENSE file in the root directory of this source tree.
1306
- */
1307
950
  var CirclePause = createLucideIcon("circle-pause", [
1308
951
  ["circle", {
1309
952
  cx: "12",
@@ -1659,30 +1302,6 @@ var Cog = createLucideIcon("cog", [
1659
1302
  * This source code is licensed under the ISC license.
1660
1303
  * See the LICENSE file in the root directory of this source tree.
1661
1304
  */
1662
- var CookingPot = createLucideIcon("cooking-pot", [
1663
- ["path", {
1664
- d: "M2 12h20",
1665
- key: "9i4pu4"
1666
- }],
1667
- ["path", {
1668
- d: "M20 12v8a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2v-8",
1669
- key: "u0tga0"
1670
- }],
1671
- ["path", {
1672
- d: "m4 8 16-4",
1673
- key: "16g0ng"
1674
- }],
1675
- ["path", {
1676
- d: "m8.86 6.78-.45-1.81a2 2 0 0 1 1.45-2.43l1.94-.48a2 2 0 0 1 2.43 1.46l.45 1.8",
1677
- key: "12cejc"
1678
- }]
1679
- ]);
1680
- /**
1681
- * @license lucide-react v0.576.0 - ISC
1682
- *
1683
- * This source code is licensed under the ISC license.
1684
- * See the LICENSE file in the root directory of this source tree.
1685
- */
1686
1305
  var Copy = createLucideIcon("copy", [["rect", {
1687
1306
  width: "14",
1688
1307
  height: "14",
@@ -1934,38 +1553,6 @@ var Download = createLucideIcon("download", [
1934
1553
  * This source code is licensed under the ISC license.
1935
1554
  * See the LICENSE file in the root directory of this source tree.
1936
1555
  */
1937
- var Drill = createLucideIcon("drill", [
1938
- ["path", {
1939
- d: "M10 18a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H5a3 3 0 0 1-3-3 1 1 0 0 1 1-1z",
1940
- key: "ioqxb1"
1941
- }],
1942
- ["path", {
1943
- d: "M13 10H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a1 1 0 0 1 1 1v6a1 1 0 0 1-1 1l-.81 3.242a1 1 0 0 1-.97.758H8",
1944
- key: "1rs59n"
1945
- }],
1946
- ["path", {
1947
- d: "M14 4h3a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-3",
1948
- key: "105ega"
1949
- }],
1950
- ["path", {
1951
- d: "M18 6h4",
1952
- key: "66u95g"
1953
- }],
1954
- ["path", {
1955
- d: "m5 10-2 8",
1956
- key: "xt2lic"
1957
- }],
1958
- ["path", {
1959
- d: "m7 18 2-8",
1960
- key: "1bzku2"
1961
- }]
1962
- ]);
1963
- /**
1964
- * @license lucide-react v0.576.0 - ISC
1965
- *
1966
- * This source code is licensed under the ISC license.
1967
- * See the LICENSE file in the root directory of this source tree.
1968
- */
1969
1556
  var Droplet = createLucideIcon("droplet", [["path", {
1970
1557
  d: "M12 22a7 7 0 0 0 7-7c0-2-1-3.9-3-5.5s-3.5-4-4-6.5c-.5 2.5-2 4.9-4 6.5C6 11.1 5 13 5 15a7 7 0 0 0 7 7z",
1971
1558
  key: "c7niix"
@@ -1989,34 +1576,6 @@ var Droplets = createLucideIcon("droplets", [["path", {
1989
1576
  * This source code is licensed under the ISC license.
1990
1577
  * See the LICENSE file in the root directory of this source tree.
1991
1578
  */
1992
- var Dumbbell = createLucideIcon("dumbbell", [
1993
- ["path", {
1994
- d: "M17.596 12.768a2 2 0 1 0 2.829-2.829l-1.768-1.767a2 2 0 0 0 2.828-2.829l-2.828-2.828a2 2 0 0 0-2.829 2.828l-1.767-1.768a2 2 0 1 0-2.829 2.829z",
1995
- key: "9m4mmf"
1996
- }],
1997
- ["path", {
1998
- d: "m2.5 21.5 1.4-1.4",
1999
- key: "17g3f0"
2000
- }],
2001
- ["path", {
2002
- d: "m20.1 3.9 1.4-1.4",
2003
- key: "1qn309"
2004
- }],
2005
- ["path", {
2006
- d: "M5.343 21.485a2 2 0 1 0 2.829-2.828l1.767 1.768a2 2 0 1 0 2.829-2.829l-6.364-6.364a2 2 0 1 0-2.829 2.829l1.768 1.767a2 2 0 0 0-2.828 2.829z",
2007
- key: "1t2c92"
2008
- }],
2009
- ["path", {
2010
- d: "m9.6 14.4 4.8-4.8",
2011
- key: "6umqxw"
2012
- }]
2013
- ]);
2014
- /**
2015
- * @license lucide-react v0.576.0 - ISC
2016
- *
2017
- * This source code is licensed under the ISC license.
2018
- * See the LICENSE file in the root directory of this source tree.
2019
- */
2020
1579
  var EllipsisVertical = createLucideIcon("ellipsis-vertical", [
2021
1580
  ["circle", {
2022
1581
  cx: "12",
@@ -2135,42 +1694,6 @@ var Feather = createLucideIcon("feather", [
2135
1694
  * This source code is licensed under the ISC license.
2136
1695
  * See the LICENSE file in the root directory of this source tree.
2137
1696
  */
2138
- var Fence = createLucideIcon("fence", [
2139
- ["path", {
2140
- d: "M4 3 2 5v15c0 .6.4 1 1 1h2c.6 0 1-.4 1-1V5Z",
2141
- key: "1n2rgs"
2142
- }],
2143
- ["path", {
2144
- d: "M6 8h4",
2145
- key: "utf9t1"
2146
- }],
2147
- ["path", {
2148
- d: "M6 18h4",
2149
- key: "12yh4b"
2150
- }],
2151
- ["path", {
2152
- d: "m12 3-2 2v15c0 .6.4 1 1 1h2c.6 0 1-.4 1-1V5Z",
2153
- key: "3ha7mj"
2154
- }],
2155
- ["path", {
2156
- d: "M14 8h4",
2157
- key: "1r8wg2"
2158
- }],
2159
- ["path", {
2160
- d: "M14 18h4",
2161
- key: "1t3kbu"
2162
- }],
2163
- ["path", {
2164
- d: "m20 3-2 2v15c0 .6.4 1 1 1h2c.6 0 1-.4 1-1V5Z",
2165
- key: "dfd4e2"
2166
- }]
2167
- ]);
2168
- /**
2169
- * @license lucide-react v0.576.0 - ISC
2170
- *
2171
- * This source code is licensed under the ISC license.
2172
- * See the LICENSE file in the root directory of this source tree.
2173
- */
2174
1697
  var Film = createLucideIcon("film", [
2175
1698
  ["rect", {
2176
1699
  width: "18",
@@ -2293,56 +1816,6 @@ var FlaskConical = createLucideIcon("flask-conical", [
2293
1816
  * This source code is licensed under the ISC license.
2294
1817
  * See the LICENSE file in the root directory of this source tree.
2295
1818
  */
2296
- var Flower = createLucideIcon("flower", [
2297
- ["circle", {
2298
- cx: "12",
2299
- cy: "12",
2300
- r: "3",
2301
- key: "1v7zrd"
2302
- }],
2303
- ["path", {
2304
- d: "M12 16.5A4.5 4.5 0 1 1 7.5 12 4.5 4.5 0 1 1 12 7.5a4.5 4.5 0 1 1 4.5 4.5 4.5 4.5 0 1 1-4.5 4.5",
2305
- key: "14wa3c"
2306
- }],
2307
- ["path", {
2308
- d: "M12 7.5V9",
2309
- key: "1oy5b0"
2310
- }],
2311
- ["path", {
2312
- d: "M7.5 12H9",
2313
- key: "eltsq1"
2314
- }],
2315
- ["path", {
2316
- d: "M16.5 12H15",
2317
- key: "vk5kw4"
2318
- }],
2319
- ["path", {
2320
- d: "M12 16.5V15",
2321
- key: "k7eayi"
2322
- }],
2323
- ["path", {
2324
- d: "m8 8 1.88 1.88",
2325
- key: "nxy4qf"
2326
- }],
2327
- ["path", {
2328
- d: "M14.12 9.88 16 8",
2329
- key: "1lst6k"
2330
- }],
2331
- ["path", {
2332
- d: "m8 16 1.88-1.88",
2333
- key: "h2eex1"
2334
- }],
2335
- ["path", {
2336
- d: "M14.12 14.12 16 16",
2337
- key: "uqkrx3"
2338
- }]
2339
- ]);
2340
- /**
2341
- * @license lucide-react v0.576.0 - ISC
2342
- *
2343
- * This source code is licensed under the ISC license.
2344
- * See the LICENSE file in the root directory of this source tree.
2345
- */
2346
1819
  var Footprints = createLucideIcon("footprints", [
2347
1820
  ["path", {
2348
1821
  d: "M4 16v-2.38C4 11.5 2.97 10.5 3 8c.03-2.72 1.49-6 4.5-6C9.37 2 10 3.8 10 5.5c0 3.11-2 5.66-2 8.68V16a2 2 0 1 1-4 0Z",
@@ -2622,77 +2095,6 @@ var Hash = createLucideIcon("hash", [
2622
2095
  * This source code is licensed under the ISC license.
2623
2096
  * See the LICENSE file in the root directory of this source tree.
2624
2097
  */
2625
- var HeartPulse = createLucideIcon("heart-pulse", [["path", {
2626
- d: "M2 9.5a5.5 5.5 0 0 1 9.591-3.676.56.56 0 0 0 .818 0A5.49 5.49 0 0 1 22 9.5c0 2.29-1.5 4-3 5.5l-5.492 5.313a2 2 0 0 1-3 .019L5 15c-1.5-1.5-3-3.2-3-5.5",
2627
- key: "mvr1a0"
2628
- }], ["path", {
2629
- d: "M3.22 13H9.5l.5-1 2 4.5 2-7 1.5 3.5h5.27",
2630
- key: "auskq0"
2631
- }]]);
2632
- /**
2633
- * @license lucide-react v0.576.0 - ISC
2634
- *
2635
- * This source code is licensed under the ISC license.
2636
- * See the LICENSE file in the root directory of this source tree.
2637
- */
2638
- var Heart = createLucideIcon("heart", [["path", {
2639
- d: "M2 9.5a5.5 5.5 0 0 1 9.591-3.676.56.56 0 0 0 .818 0A5.49 5.49 0 0 1 22 9.5c0 2.29-1.5 4-3 5.5l-5.492 5.313a2 2 0 0 1-3 .019L5 15c-1.5-1.5-3-3.2-3-5.5",
2640
- key: "mvr1a0"
2641
- }]]);
2642
- /**
2643
- * @license lucide-react v0.576.0 - ISC
2644
- *
2645
- * This source code is licensed under the ISC license.
2646
- * See the LICENSE file in the root directory of this source tree.
2647
- */
2648
- var Heater = createLucideIcon("heater", [
2649
- ["path", {
2650
- d: "M11 8c2-3-2-3 0-6",
2651
- key: "1ldv5m"
2652
- }],
2653
- ["path", {
2654
- d: "M15.5 8c2-3-2-3 0-6",
2655
- key: "1otqoz"
2656
- }],
2657
- ["path", {
2658
- d: "M6 10h.01",
2659
- key: "1lbq93"
2660
- }],
2661
- ["path", {
2662
- d: "M6 14h.01",
2663
- key: "zudwn7"
2664
- }],
2665
- ["path", {
2666
- d: "M10 16v-4",
2667
- key: "1c25yv"
2668
- }],
2669
- ["path", {
2670
- d: "M14 16v-4",
2671
- key: "1dkbt8"
2672
- }],
2673
- ["path", {
2674
- d: "M18 16v-4",
2675
- key: "1yg9me"
2676
- }],
2677
- ["path", {
2678
- d: "M20 6a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h3",
2679
- key: "1ubg90"
2680
- }],
2681
- ["path", {
2682
- d: "M5 20v2",
2683
- key: "1abpe8"
2684
- }],
2685
- ["path", {
2686
- d: "M19 20v2",
2687
- key: "kqn6ft"
2688
- }]
2689
- ]);
2690
- /**
2691
- * @license lucide-react v0.576.0 - ISC
2692
- *
2693
- * This source code is licensed under the ISC license.
2694
- * See the LICENSE file in the root directory of this source tree.
2695
- */
2696
2098
  var House = createLucideIcon("house", [["path", {
2697
2099
  d: "M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8",
2698
2100
  key: "5wwlr5"
@@ -2809,141 +2211,6 @@ var Info = createLucideIcon("info", [
2809
2211
  * This source code is licensed under the ISC license.
2810
2212
  * See the LICENSE file in the root directory of this source tree.
2811
2213
  */
2812
- var KeyRound = createLucideIcon("key-round", [["path", {
2813
- d: "M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z",
2814
- key: "1s6t7t"
2815
- }], ["circle", {
2816
- cx: "16.5",
2817
- cy: "7.5",
2818
- r: ".5",
2819
- fill: "currentColor",
2820
- key: "w0ekpg"
2821
- }]]);
2822
- /**
2823
- * @license lucide-react v0.576.0 - ISC
2824
- *
2825
- * This source code is licensed under the ISC license.
2826
- * See the LICENSE file in the root directory of this source tree.
2827
- */
2828
- var Key = createLucideIcon("key", [
2829
- ["path", {
2830
- d: "m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L19 4",
2831
- key: "g0fldk"
2832
- }],
2833
- ["path", {
2834
- d: "m21 2-9.6 9.6",
2835
- key: "1j0ho8"
2836
- }],
2837
- ["circle", {
2838
- cx: "7.5",
2839
- cy: "15.5",
2840
- r: "5.5",
2841
- key: "yqb3hr"
2842
- }]
2843
- ]);
2844
- /**
2845
- * @license lucide-react v0.576.0 - ISC
2846
- *
2847
- * This source code is licensed under the ISC license.
2848
- * See the LICENSE file in the root directory of this source tree.
2849
- */
2850
- var LampCeiling = createLucideIcon("lamp-ceiling", [
2851
- ["path", {
2852
- d: "M12 2v5",
2853
- key: "nd4vlx"
2854
- }],
2855
- ["path", {
2856
- d: "M14.829 15.998a3 3 0 1 1-5.658 0",
2857
- key: "1pybiy"
2858
- }],
2859
- ["path", {
2860
- d: "M20.92 14.606A1 1 0 0 1 20 16H4a1 1 0 0 1-.92-1.394l3-7A1 1 0 0 1 7 7h10a1 1 0 0 1 .92.606z",
2861
- key: "ma1wor"
2862
- }]
2863
- ]);
2864
- /**
2865
- * @license lucide-react v0.576.0 - ISC
2866
- *
2867
- * This source code is licensed under the ISC license.
2868
- * See the LICENSE file in the root directory of this source tree.
2869
- */
2870
- var LampDesk = createLucideIcon("lamp-desk", [
2871
- ["path", {
2872
- d: "M10.293 2.293a1 1 0 0 1 1.414 0l2.5 2.5 5.994 1.227a1 1 0 0 1 .506 1.687l-7 7a1 1 0 0 1-1.687-.506l-1.227-5.994-2.5-2.5a1 1 0 0 1 0-1.414z",
2873
- key: "sb8slu"
2874
- }],
2875
- ["path", {
2876
- d: "m14.207 4.793-3.414 3.414",
2877
- key: "m2x3oj"
2878
- }],
2879
- ["path", {
2880
- d: "M3 20a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v1a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1z",
2881
- key: "8b3myj"
2882
- }],
2883
- ["path", {
2884
- d: "m9.086 6.5-4.793 4.793a1 1 0 0 0-.18 1.17L7 18",
2885
- key: "43s6cu"
2886
- }]
2887
- ]);
2888
- /**
2889
- * @license lucide-react v0.576.0 - ISC
2890
- *
2891
- * This source code is licensed under the ISC license.
2892
- * See the LICENSE file in the root directory of this source tree.
2893
- */
2894
- var LampFloor = createLucideIcon("lamp-floor", [
2895
- ["path", {
2896
- d: "M12 10v12",
2897
- key: "6ubwww"
2898
- }],
2899
- ["path", {
2900
- d: "M17.929 7.629A1 1 0 0 1 17 9H7a1 1 0 0 1-.928-1.371l2-5A1 1 0 0 1 9 2h6a1 1 0 0 1 .928.629z",
2901
- key: "1o95gh"
2902
- }],
2903
- ["path", {
2904
- d: "M9 22h6",
2905
- key: "1rlq3v"
2906
- }]
2907
- ]);
2908
- /**
2909
- * @license lucide-react v0.576.0 - ISC
2910
- *
2911
- * This source code is licensed under the ISC license.
2912
- * See the LICENSE file in the root directory of this source tree.
2913
- */
2914
- var Lamp = createLucideIcon("lamp", [
2915
- ["path", {
2916
- d: "M12 12v6",
2917
- key: "3ahymv"
2918
- }],
2919
- ["path", {
2920
- d: "M4.077 10.615A1 1 0 0 0 5 12h14a1 1 0 0 0 .923-1.385l-3.077-7.384A2 2 0 0 0 15 2H9a2 2 0 0 0-1.846 1.23Z",
2921
- key: "1l7kg2"
2922
- }],
2923
- ["path", {
2924
- d: "M8 20a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v1a1 1 0 0 1-1 1H9a1 1 0 0 1-1-1z",
2925
- key: "1mmzpi"
2926
- }]
2927
- ]);
2928
- /**
2929
- * @license lucide-react v0.576.0 - ISC
2930
- *
2931
- * This source code is licensed under the ISC license.
2932
- * See the LICENSE file in the root directory of this source tree.
2933
- */
2934
- var Laptop = createLucideIcon("laptop", [["path", {
2935
- d: "M18 5a2 2 0 0 1 2 2v8.526a2 2 0 0 0 .212.897l1.068 2.127a1 1 0 0 1-.9 1.45H3.62a1 1 0 0 1-.9-1.45l1.068-2.127A2 2 0 0 0 4 15.526V7a2 2 0 0 1 2-2z",
2936
- key: "1pdavp"
2937
- }], ["path", {
2938
- d: "M20.054 15.987H3.946",
2939
- key: "14rxg9"
2940
- }]]);
2941
- /**
2942
- * @license lucide-react v0.576.0 - ISC
2943
- *
2944
- * This source code is licensed under the ISC license.
2945
- * See the LICENSE file in the root directory of this source tree.
2946
- */
2947
2214
  var Laugh = createLucideIcon("laugh", [
2948
2215
  ["circle", {
2949
2216
  cx: "12",
@@ -3243,33 +2510,6 @@ var Mail = createLucideIcon("mail", [["path", {
3243
2510
  * This source code is licensed under the ISC license.
3244
2511
  * See the LICENSE file in the root directory of this source tree.
3245
2512
  */
3246
- var Mailbox = createLucideIcon("mailbox", [
3247
- ["path", {
3248
- d: "M22 17a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V9.5C2 7 4 5 6.5 5H18c2.2 0 4 1.8 4 4v8Z",
3249
- key: "1lbycx"
3250
- }],
3251
- ["polyline", {
3252
- points: "15,9 18,9 18,11",
3253
- key: "1pm9c0"
3254
- }],
3255
- ["path", {
3256
- d: "M6.5 5C9 5 11 7 11 9.5V17a2 2 0 0 1-2 2",
3257
- key: "15i455"
3258
- }],
3259
- ["line", {
3260
- x1: "6",
3261
- x2: "7",
3262
- y1: "10",
3263
- y2: "10",
3264
- key: "1e2scm"
3265
- }]
3266
- ]);
3267
- /**
3268
- * @license lucide-react v0.576.0 - ISC
3269
- *
3270
- * This source code is licensed under the ISC license.
3271
- * See the LICENSE file in the root directory of this source tree.
3272
- */
3273
2513
  var MapPin = createLucideIcon("map-pin", [["path", {
3274
2514
  d: "M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0",
3275
2515
  key: "1r0f0z"
@@ -3359,38 +2599,6 @@ var MessageSquare = createLucideIcon("message-square", [["path", {
3359
2599
  * This source code is licensed under the ISC license.
3360
2600
  * See the LICENSE file in the root directory of this source tree.
3361
2601
  */
3362
- var MicOff = createLucideIcon("mic-off", [
3363
- ["path", {
3364
- d: "M12 19v3",
3365
- key: "npa21l"
3366
- }],
3367
- ["path", {
3368
- d: "M15 9.34V5a3 3 0 0 0-5.68-1.33",
3369
- key: "1gzdoj"
3370
- }],
3371
- ["path", {
3372
- d: "M16.95 16.95A7 7 0 0 1 5 12v-2",
3373
- key: "cqa7eg"
3374
- }],
3375
- ["path", {
3376
- d: "M18.89 13.23A7 7 0 0 0 19 12v-2",
3377
- key: "16hl24"
3378
- }],
3379
- ["path", {
3380
- d: "m2 2 20 20",
3381
- key: "1ooewy"
3382
- }],
3383
- ["path", {
3384
- d: "M9 9v3a3 3 0 0 0 5.12 2.12",
3385
- key: "r2i35w"
3386
- }]
3387
- ]);
3388
- /**
3389
- * @license lucide-react v0.576.0 - ISC
3390
- *
3391
- * This source code is licensed under the ISC license.
3392
- * See the LICENSE file in the root directory of this source tree.
3393
- */
3394
2602
  var Mic = createLucideIcon("mic", [
3395
2603
  ["path", {
3396
2604
  d: "M12 19v3",
@@ -3415,42 +2623,6 @@ var Mic = createLucideIcon("mic", [
3415
2623
  * This source code is licensed under the ISC license.
3416
2624
  * See the LICENSE file in the root directory of this source tree.
3417
2625
  */
3418
- var Microwave = createLucideIcon("microwave", [
3419
- ["rect", {
3420
- width: "20",
3421
- height: "15",
3422
- x: "2",
3423
- y: "4",
3424
- rx: "2",
3425
- key: "2no95f"
3426
- }],
3427
- ["rect", {
3428
- width: "8",
3429
- height: "7",
3430
- x: "6",
3431
- y: "8",
3432
- rx: "1",
3433
- key: "zh9wx"
3434
- }],
3435
- ["path", {
3436
- d: "M18 8v7",
3437
- key: "o5zi4n"
3438
- }],
3439
- ["path", {
3440
- d: "M6 19v2",
3441
- key: "1loha6"
3442
- }],
3443
- ["path", {
3444
- d: "M18 19v2",
3445
- key: "1dawf0"
3446
- }]
3447
- ]);
3448
- /**
3449
- * @license lucide-react v0.576.0 - ISC
3450
- *
3451
- * This source code is licensed under the ISC license.
3452
- * See the LICENSE file in the root directory of this source tree.
3453
- */
3454
2626
  var Minimize2 = createLucideIcon("minimize-2", [
3455
2627
  ["path", {
3456
2628
  d: "m14 10 7-7",
@@ -3513,36 +2685,6 @@ var MonitorPlay = createLucideIcon("monitor-play", [
3513
2685
  * This source code is licensed under the ISC license.
3514
2686
  * See the LICENSE file in the root directory of this source tree.
3515
2687
  */
3516
- var Monitor = createLucideIcon("monitor", [
3517
- ["rect", {
3518
- width: "20",
3519
- height: "14",
3520
- x: "2",
3521
- y: "3",
3522
- rx: "2",
3523
- key: "48i651"
3524
- }],
3525
- ["line", {
3526
- x1: "8",
3527
- x2: "16",
3528
- y1: "21",
3529
- y2: "21",
3530
- key: "1svkeh"
3531
- }],
3532
- ["line", {
3533
- x1: "12",
3534
- x2: "12",
3535
- y1: "17",
3536
- y2: "21",
3537
- key: "vw1qmm"
3538
- }]
3539
- ]);
3540
- /**
3541
- * @license lucide-react v0.576.0 - ISC
3542
- *
3543
- * This source code is licensed under the ISC license.
3544
- * See the LICENSE file in the root directory of this source tree.
3545
- */
3546
2688
  var Moon = createLucideIcon("moon", [["path", {
3547
2689
  d: "M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401",
3548
2690
  key: "kfwtm"
@@ -3553,16 +2695,6 @@ var Moon = createLucideIcon("moon", [["path", {
3553
2695
  * This source code is licensed under the ISC license.
3554
2696
  * See the LICENSE file in the root directory of this source tree.
3555
2697
  */
3556
- var Mountain = createLucideIcon("mountain", [["path", {
3557
- d: "m8 3 4 8 5-5 5 15H2L8 3z",
3558
- key: "otkl63"
3559
- }]]);
3560
- /**
3561
- * @license lucide-react v0.576.0 - ISC
3562
- *
3563
- * This source code is licensed under the ISC license.
3564
- * See the LICENSE file in the root directory of this source tree.
3565
- */
3566
2698
  var MousePointerClick = createLucideIcon("mouse-pointer-click", [
3567
2699
  ["path", {
3568
2700
  d: "M14 4.1 12 6",
@@ -3825,32 +2957,6 @@ var Pencil = createLucideIcon("pencil", [["path", {
3825
2957
  * This source code is licensed under the ISC license.
3826
2958
  * See the LICENSE file in the root directory of this source tree.
3827
2959
  */
3828
- var PersonStanding = createLucideIcon("person-standing", [
3829
- ["circle", {
3830
- cx: "12",
3831
- cy: "5",
3832
- r: "1",
3833
- key: "gxeob9"
3834
- }],
3835
- ["path", {
3836
- d: "m9 20 3-6 3 6",
3837
- key: "se2kox"
3838
- }],
3839
- ["path", {
3840
- d: "m6 8 6 2 6-2",
3841
- key: "4o3us4"
3842
- }],
3843
- ["path", {
3844
- d: "M12 10v4",
3845
- key: "1kjpxc"
3846
- }]
3847
- ]);
3848
- /**
3849
- * @license lucide-react v0.576.0 - ISC
3850
- *
3851
- * This source code is licensed under the ISC license.
3852
- * See the LICENSE file in the root directory of this source tree.
3853
- */
3854
2960
  var Phone = createLucideIcon("phone", [["path", {
3855
2961
  d: "M13.832 16.568a1 1 0 0 0 1.213-.303l.355-.465A2 2 0 0 1 17 15h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2A18 18 0 0 1 2 4a2 2 0 0 1 2-2h3a2 2 0 0 1 2 2v3a2 2 0 0 1-.8 1.6l-.468.351a1 1 0 0 0-.292 1.233 14 14 0 0 0 6.392 6.384",
3856
2962
  key: "9njp5v"
@@ -3914,34 +3020,6 @@ var Play = createLucideIcon("play", [["path", {
3914
3020
  * This source code is licensed under the ISC license.
3915
3021
  * See the LICENSE file in the root directory of this source tree.
3916
3022
  */
3917
- var PlugZap = createLucideIcon("plug-zap", [
3918
- ["path", {
3919
- d: "M6.3 20.3a2.4 2.4 0 0 0 3.4 0L12 18l-6-6-2.3 2.3a2.4 2.4 0 0 0 0 3.4Z",
3920
- key: "goz73y"
3921
- }],
3922
- ["path", {
3923
- d: "m2 22 3-3",
3924
- key: "19mgm9"
3925
- }],
3926
- ["path", {
3927
- d: "M7.5 13.5 10 11",
3928
- key: "7xgeeb"
3929
- }],
3930
- ["path", {
3931
- d: "M10.5 16.5 13 14",
3932
- key: "10btkg"
3933
- }],
3934
- ["path", {
3935
- d: "m18 3-4 4h6l-4 4",
3936
- key: "16psg9"
3937
- }]
3938
- ]);
3939
- /**
3940
- * @license lucide-react v0.576.0 - ISC
3941
- *
3942
- * This source code is licensed under the ISC license.
3943
- * See the LICENSE file in the root directory of this source tree.
3944
- */
3945
3023
  var Plus = createLucideIcon("plus", [["path", {
3946
3024
  d: "M5 12h14",
3947
3025
  key: "1ays0h"
@@ -4016,64 +3094,6 @@ var Power = createLucideIcon("power", [["path", {
4016
3094
  * This source code is licensed under the ISC license.
4017
3095
  * See the LICENSE file in the root directory of this source tree.
4018
3096
  */
4019
- var Printer = createLucideIcon("printer", [
4020
- ["path", {
4021
- d: "M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2",
4022
- key: "143wyd"
4023
- }],
4024
- ["path", {
4025
- d: "M6 9V3a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v6",
4026
- key: "1itne7"
4027
- }],
4028
- ["rect", {
4029
- x: "6",
4030
- y: "14",
4031
- width: "12",
4032
- height: "8",
4033
- rx: "1",
4034
- key: "1ue0tg"
4035
- }]
4036
- ]);
4037
- /**
4038
- * @license lucide-react v0.576.0 - ISC
4039
- *
4040
- * This source code is licensed under the ISC license.
4041
- * See the LICENSE file in the root directory of this source tree.
4042
- */
4043
- var Projector = createLucideIcon("projector", [
4044
- ["path", {
4045
- d: "M5 7 3 5",
4046
- key: "1yys58"
4047
- }],
4048
- ["path", {
4049
- d: "M9 6V3",
4050
- key: "1ptz9u"
4051
- }],
4052
- ["path", {
4053
- d: "m13 7 2-2",
4054
- key: "1w3vmq"
4055
- }],
4056
- ["circle", {
4057
- cx: "9",
4058
- cy: "13",
4059
- r: "3",
4060
- key: "1mma13"
4061
- }],
4062
- ["path", {
4063
- d: "M11.83 12H20a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2v-4a2 2 0 0 1 2-2h2.17",
4064
- key: "2frwzc"
4065
- }],
4066
- ["path", {
4067
- d: "M16 16h2",
4068
- key: "dnq2od"
4069
- }]
4070
- ]);
4071
- /**
4072
- * @license lucide-react v0.576.0 - ISC
4073
- *
4074
- * This source code is licensed under the ISC license.
4075
- * See the LICENSE file in the root directory of this source tree.
4076
- */
4077
3097
  var Puzzle = createLucideIcon("puzzle", [["path", {
4078
3098
  d: "M15.39 4.39a1 1 0 0 0 1.68-.474 2.5 2.5 0 1 1 3.014 3.015 1 1 0 0 0-.474 1.68l1.683 1.682a2.414 2.414 0 0 1 0 3.414L19.61 15.39a1 1 0 0 1-1.68-.474 2.5 2.5 0 1 0-3.014 3.015 1 1 0 0 1 .474 1.68l-1.683 1.682a2.414 2.414 0 0 1-3.414 0L8.61 19.61a1 1 0 0 0-1.68.474 2.5 2.5 0 1 1-3.014-3.015 1 1 0 0 0 .474-1.68l-1.683-1.682a2.414 2.414 0 0 1 0-3.414L4.39 8.61a1 1 0 0 1 1.68.474 2.5 2.5 0 1 0 3.014-3.015 1 1 0 0 1-.474-1.68l1.683-1.682a2.414 2.414 0 0 1 3.414 0z",
4079
3099
  key: "w46dr5"
@@ -4286,26 +3306,6 @@ var RefreshCw = createLucideIcon("refresh-cw", [
4286
3306
  * This source code is licensed under the ISC license.
4287
3307
  * See the LICENSE file in the root directory of this source tree.
4288
3308
  */
4289
- var Refrigerator = createLucideIcon("refrigerator", [
4290
- ["path", {
4291
- d: "M5 6a4 4 0 0 1 4-4h6a4 4 0 0 1 4 4v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6Z",
4292
- key: "fpq118"
4293
- }],
4294
- ["path", {
4295
- d: "M5 10h14",
4296
- key: "elsbfy"
4297
- }],
4298
- ["path", {
4299
- d: "M15 7v6",
4300
- key: "1nx30x"
4301
- }]
4302
- ]);
4303
- /**
4304
- * @license lucide-react v0.576.0 - ISC
4305
- *
4306
- * This source code is licensed under the ISC license.
4307
- * See the LICENSE file in the root directory of this source tree.
4308
- */
4309
3309
  var RotateCcw = createLucideIcon("rotate-ccw", [["path", {
4310
3310
  d: "M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",
4311
3311
  key: "1357e3"
@@ -4356,42 +3356,6 @@ var Route = createLucideIcon("route", [
4356
3356
  * This source code is licensed under the ISC license.
4357
3357
  * See the LICENSE file in the root directory of this source tree.
4358
3358
  */
4359
- var Router = createLucideIcon("router", [
4360
- ["rect", {
4361
- width: "20",
4362
- height: "8",
4363
- x: "2",
4364
- y: "14",
4365
- rx: "2",
4366
- key: "w68u3i"
4367
- }],
4368
- ["path", {
4369
- d: "M6.01 18H6",
4370
- key: "19vcac"
4371
- }],
4372
- ["path", {
4373
- d: "M10.01 18H10",
4374
- key: "uamcmx"
4375
- }],
4376
- ["path", {
4377
- d: "M15 10v4",
4378
- key: "qjz1xs"
4379
- }],
4380
- ["path", {
4381
- d: "M17.84 7.17a4 4 0 0 0-5.66 0",
4382
- key: "1rif40"
4383
- }],
4384
- ["path", {
4385
- d: "M20.66 4.34a8 8 0 0 0-11.31 0",
4386
- key: "6a5xfq"
4387
- }]
4388
- ]);
4389
- /**
4390
- * @license lucide-react v0.576.0 - ISC
4391
- *
4392
- * This source code is licensed under the ISC license.
4393
- * See the LICENSE file in the root directory of this source tree.
4394
- */
4395
3359
  var Sailboat = createLucideIcon("sailboat", [
4396
3360
  ["path", {
4397
3361
  d: "M10 2v15",
@@ -4865,64 +3829,6 @@ var Snowflake = createLucideIcon("snowflake", [
4865
3829
  * This source code is licensed under the ISC license.
4866
3830
  * See the LICENSE file in the root directory of this source tree.
4867
3831
  */
4868
- var Sofa = createLucideIcon("sofa", [
4869
- ["path", {
4870
- d: "M20 9V6a2 2 0 0 0-2-2H6a2 2 0 0 0-2 2v3",
4871
- key: "1dgpiv"
4872
- }],
4873
- ["path", {
4874
- d: "M2 16a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-5a2 2 0 0 0-4 0v1.5a.5.5 0 0 1-.5.5h-11a.5.5 0 0 1-.5-.5V11a2 2 0 0 0-4 0z",
4875
- key: "xacw8m"
4876
- }],
4877
- ["path", {
4878
- d: "M4 18v2",
4879
- key: "jwo5n2"
4880
- }],
4881
- ["path", {
4882
- d: "M20 18v2",
4883
- key: "1ar1qi"
4884
- }],
4885
- ["path", {
4886
- d: "M12 4v9",
4887
- key: "oqhhn3"
4888
- }]
4889
- ]);
4890
- /**
4891
- * @license lucide-react v0.576.0 - ISC
4892
- *
4893
- * This source code is licensed under the ISC license.
4894
- * See the LICENSE file in the root directory of this source tree.
4895
- */
4896
- var Speaker = createLucideIcon("speaker", [
4897
- ["rect", {
4898
- width: "16",
4899
- height: "20",
4900
- x: "4",
4901
- y: "2",
4902
- rx: "2",
4903
- key: "1nb95v"
4904
- }],
4905
- ["path", {
4906
- d: "M12 6h.01",
4907
- key: "1vi96p"
4908
- }],
4909
- ["circle", {
4910
- cx: "12",
4911
- cy: "14",
4912
- r: "4",
4913
- key: "1jruaj"
4914
- }],
4915
- ["path", {
4916
- d: "M12 14h.01",
4917
- key: "1etili"
4918
- }]
4919
- ]);
4920
- /**
4921
- * @license lucide-react v0.576.0 - ISC
4922
- *
4923
- * This source code is licensed under the ISC license.
4924
- * See the LICENSE file in the root directory of this source tree.
4925
- */
4926
3832
  var Sparkles = createLucideIcon("sparkles", [
4927
3833
  ["path", {
4928
3834
  d: "M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z",
@@ -4993,26 +3899,6 @@ var Star = createLucideIcon("star", [["path", {
4993
3899
  * This source code is licensed under the ISC license.
4994
3900
  * See the LICENSE file in the root directory of this source tree.
4995
3901
  */
4996
- var Store = createLucideIcon("store", [
4997
- ["path", {
4998
- d: "M15 21v-5a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v5",
4999
- key: "slp6dd"
5000
- }],
5001
- ["path", {
5002
- d: "M17.774 10.31a1.12 1.12 0 0 0-1.549 0 2.5 2.5 0 0 1-3.451 0 1.12 1.12 0 0 0-1.548 0 2.5 2.5 0 0 1-3.452 0 1.12 1.12 0 0 0-1.549 0 2.5 2.5 0 0 1-3.77-3.248l2.889-4.184A2 2 0 0 1 7 2h10a2 2 0 0 1 1.653.873l2.895 4.192a2.5 2.5 0 0 1-3.774 3.244",
5003
- key: "o0xfot"
5004
- }],
5005
- ["path", {
5006
- d: "M4 10.95V19a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8.05",
5007
- key: "wn3emo"
5008
- }]
5009
- ]);
5010
- /**
5011
- * @license lucide-react v0.576.0 - ISC
5012
- *
5013
- * This source code is licensed under the ISC license.
5014
- * See the LICENSE file in the root directory of this source tree.
5015
- */
5016
3902
  var SunMedium = createLucideIcon("sun-medium", [
5017
3903
  ["circle", {
5018
3904
  cx: "12",
@@ -5145,27 +4031,6 @@ var Sunrise = createLucideIcon("sunrise", [
5145
4031
  * This source code is licensed under the ISC license.
5146
4032
  * See the LICENSE file in the root directory of this source tree.
5147
4033
  */
5148
- var Tablet = createLucideIcon("tablet", [["rect", {
5149
- width: "16",
5150
- height: "20",
5151
- x: "4",
5152
- y: "2",
5153
- rx: "2",
5154
- ry: "2",
5155
- key: "76otgf"
5156
- }], ["line", {
5157
- x1: "12",
5158
- x2: "12.01",
5159
- y1: "18",
5160
- y2: "18",
5161
- key: "1dp563"
5162
- }]]);
5163
- /**
5164
- * @license lucide-react v0.576.0 - ISC
5165
- *
5166
- * This source code is licensed under the ISC license.
5167
- * See the LICENSE file in the root directory of this source tree.
5168
- */
5169
4034
  var Tag = createLucideIcon("tag", [["path", {
5170
4035
  d: "M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z",
5171
4036
  key: "vktsd0"
@@ -5208,46 +4073,6 @@ var Target = createLucideIcon("target", [
5208
4073
  * This source code is licensed under the ISC license.
5209
4074
  * See the LICENSE file in the root directory of this source tree.
5210
4075
  */
5211
- var ThermometerSnowflake = createLucideIcon("thermometer-snowflake", [
5212
- ["path", {
5213
- d: "m10 20-1.25-2.5L6 18",
5214
- key: "18frcb"
5215
- }],
5216
- ["path", {
5217
- d: "M10 4 8.75 6.5 6 6",
5218
- key: "7mghy3"
5219
- }],
5220
- ["path", {
5221
- d: "M10.585 15H10",
5222
- key: "4nqulp"
5223
- }],
5224
- ["path", {
5225
- d: "M2 12h6.5L10 9",
5226
- key: "kv9z4n"
5227
- }],
5228
- ["path", {
5229
- d: "M20 14.54a4 4 0 1 1-4 0V4a2 2 0 0 1 4 0z",
5230
- key: "yu0u2z"
5231
- }],
5232
- ["path", {
5233
- d: "m4 10 1.5 2L4 14",
5234
- key: "k9enpj"
5235
- }],
5236
- ["path", {
5237
- d: "m7 21 3-6-1.5-3",
5238
- key: "j8hb9u"
5239
- }],
5240
- ["path", {
5241
- d: "m7 3 3 6h2",
5242
- key: "1bbqgq"
5243
- }]
5244
- ]);
5245
- /**
5246
- * @license lucide-react v0.576.0 - ISC
5247
- *
5248
- * This source code is licensed under the ISC license.
5249
- * See the LICENSE file in the root directory of this source tree.
5250
- */
5251
4076
  var Thermometer = createLucideIcon("thermometer", [["path", {
5252
4077
  d: "M14 4v10.54a4 4 0 1 1-4 0V4a2 2 0 0 1 4 0Z",
5253
4078
  key: "17jzev"
@@ -5258,66 +4083,6 @@ var Thermometer = createLucideIcon("thermometer", [["path", {
5258
4083
  * This source code is licensed under the ISC license.
5259
4084
  * See the LICENSE file in the root directory of this source tree.
5260
4085
  */
5261
- var ThermometerSun = createLucideIcon("thermometer-sun", [
5262
- ["path", {
5263
- d: "M12 2v2",
5264
- key: "tus03m"
5265
- }],
5266
- ["path", {
5267
- d: "M12 8a4 4 0 0 0-1.645 7.647",
5268
- key: "wz5p04"
5269
- }],
5270
- ["path", {
5271
- d: "M2 12h2",
5272
- key: "1t8f8n"
5273
- }],
5274
- ["path", {
5275
- d: "M20 14.54a4 4 0 1 1-4 0V4a2 2 0 0 1 4 0z",
5276
- key: "yu0u2z"
5277
- }],
5278
- ["path", {
5279
- d: "m4.93 4.93 1.41 1.41",
5280
- key: "149t6j"
5281
- }],
5282
- ["path", {
5283
- d: "m6.34 17.66-1.41 1.41",
5284
- key: "1m8zz5"
5285
- }]
5286
- ]);
5287
- /**
5288
- * @license lucide-react v0.576.0 - ISC
5289
- *
5290
- * This source code is licensed under the ISC license.
5291
- * See the LICENSE file in the root directory of this source tree.
5292
- */
5293
- var Timer = createLucideIcon("timer", [
5294
- ["line", {
5295
- x1: "10",
5296
- x2: "14",
5297
- y1: "2",
5298
- y2: "2",
5299
- key: "14vaq8"
5300
- }],
5301
- ["line", {
5302
- x1: "12",
5303
- x2: "15",
5304
- y1: "14",
5305
- y2: "11",
5306
- key: "17fdiu"
5307
- }],
5308
- ["circle", {
5309
- cx: "12",
5310
- cy: "14",
5311
- r: "8",
5312
- key: "1e1u0o"
5313
- }]
5314
- ]);
5315
- /**
5316
- * @license lucide-react v0.576.0 - ISC
5317
- *
5318
- * This source code is licensed under the ISC license.
5319
- * See the LICENSE file in the root directory of this source tree.
5320
- */
5321
4086
  var ToggleLeft = createLucideIcon("toggle-left", [["circle", {
5322
4087
  cx: "9",
5323
4088
  cy: "12",
@@ -5464,43 +4229,6 @@ var Trash2 = createLucideIcon("trash-2", [
5464
4229
  * This source code is licensed under the ISC license.
5465
4230
  * See the LICENSE file in the root directory of this source tree.
5466
4231
  */
5467
- var TreePine = createLucideIcon("tree-pine", [["path", {
5468
- d: "m17 14 3 3.3a1 1 0 0 1-.7 1.7H4.7a1 1 0 0 1-.7-1.7L7 14h-.3a1 1 0 0 1-.7-1.7L9 9h-.2A1 1 0 0 1 8 7.3L12 3l4 4.3a1 1 0 0 1-.8 1.7H15l3 3.3a1 1 0 0 1-.7 1.7H17Z",
5469
- key: "cpyugq"
5470
- }], ["path", {
5471
- d: "M12 22v-3",
5472
- key: "kmzjlo"
5473
- }]]);
5474
- /**
5475
- * @license lucide-react v0.576.0 - ISC
5476
- *
5477
- * This source code is licensed under the ISC license.
5478
- * See the LICENSE file in the root directory of this source tree.
5479
- */
5480
- var Trees = createLucideIcon("trees", [
5481
- ["path", {
5482
- d: "M10 10v.2A3 3 0 0 1 8.9 16H5a3 3 0 0 1-1-5.8V10a3 3 0 0 1 6 0Z",
5483
- key: "1l6gj6"
5484
- }],
5485
- ["path", {
5486
- d: "M7 16v6",
5487
- key: "1a82de"
5488
- }],
5489
- ["path", {
5490
- d: "M13 19v3",
5491
- key: "13sx9i"
5492
- }],
5493
- ["path", {
5494
- d: "M12 19h8.3a1 1 0 0 0 .7-1.7L18 14h.3a1 1 0 0 0 .7-1.7L16 9h.2a1 1 0 0 0 .8-1.7L13 3l-1.4 1.5",
5495
- key: "1sj9kv"
5496
- }]
5497
- ]);
5498
- /**
5499
- * @license lucide-react v0.576.0 - ISC
5500
- *
5501
- * This source code is licensed under the ISC license.
5502
- * See the LICENSE file in the root directory of this source tree.
5503
- */
5504
4232
  var TrendingUp = createLucideIcon("trending-up", [["path", {
5505
4233
  d: "M16 7h6v6",
5506
4234
  key: "box55l"
@@ -5579,23 +4307,6 @@ var Truck = createLucideIcon("truck", [
5579
4307
  * This source code is licensed under the ISC license.
5580
4308
  * See the LICENSE file in the root directory of this source tree.
5581
4309
  */
5582
- var Tv = createLucideIcon("tv", [["path", {
5583
- d: "m17 2-5 5-5-5",
5584
- key: "16satq"
5585
- }], ["rect", {
5586
- width: "20",
5587
- height: "15",
5588
- x: "2",
5589
- y: "7",
5590
- rx: "2",
5591
- key: "1e6viu"
5592
- }]]);
5593
- /**
5594
- * @license lucide-react v0.576.0 - ISC
5595
- *
5596
- * This source code is licensed under the ISC license.
5597
- * See the LICENSE file in the root directory of this source tree.
5598
- */
5599
4310
  var Type = createLucideIcon("type", [
5600
4311
  ["path", {
5601
4312
  d: "M12 4v16",
@@ -5616,26 +4327,6 @@ var Type = createLucideIcon("type", [
5616
4327
  * This source code is licensed under the ISC license.
5617
4328
  * See the LICENSE file in the root directory of this source tree.
5618
4329
  */
5619
- var Umbrella = createLucideIcon("umbrella", [
5620
- ["path", {
5621
- d: "M12 13v7a2 2 0 0 0 4 0",
5622
- key: "rpgb42"
5623
- }],
5624
- ["path", {
5625
- d: "M12 2v2",
5626
- key: "tus03m"
5627
- }],
5628
- ["path", {
5629
- d: "M20.992 13a1 1 0 0 0 .97-1.274 10.284 10.284 0 0 0-19.923 0A1 1 0 0 0 3 13z",
5630
- key: "124nyo"
5631
- }]
5632
- ]);
5633
- /**
5634
- * @license lucide-react v0.576.0 - ISC
5635
- *
5636
- * This source code is licensed under the ISC license.
5637
- * See the LICENSE file in the root directory of this source tree.
5638
- */
5639
4330
  var Undo2 = createLucideIcon("undo-2", [["path", {
5640
4331
  d: "M9 14 4 9l5-5",
5641
4332
  key: "102s5s"
@@ -5766,26 +4457,6 @@ var UtensilsCrossed = createLucideIcon("utensils-crossed", [
5766
4457
  * This source code is licensed under the ISC license.
5767
4458
  * See the LICENSE file in the root directory of this source tree.
5768
4459
  */
5769
- var Utensils = createLucideIcon("utensils", [
5770
- ["path", {
5771
- d: "M3 2v7c0 1.1.9 2 2 2h4a2 2 0 0 0 2-2V2",
5772
- key: "cjf0a3"
5773
- }],
5774
- ["path", {
5775
- d: "M7 2v20",
5776
- key: "1473qp"
5777
- }],
5778
- ["path", {
5779
- d: "M21 15V2a5 5 0 0 0-5 5v6c0 1.1.9 2 2 2h3Zm0 0v7",
5780
- key: "j28e5"
5781
- }]
5782
- ]);
5783
- /**
5784
- * @license lucide-react v0.576.0 - ISC
5785
- *
5786
- * This source code is licensed under the ISC license.
5787
- * See the LICENSE file in the root directory of this source tree.
5788
- */
5789
4460
  var Vibrate = createLucideIcon("vibrate", [
5790
4461
  ["path", {
5791
4462
  d: "m2 8 2 2-2 2 2 2-2 2",
@@ -5810,43 +4481,6 @@ var Vibrate = createLucideIcon("vibrate", [
5810
4481
  * This source code is licensed under the ISC license.
5811
4482
  * See the LICENSE file in the root directory of this source tree.
5812
4483
  */
5813
- var VideoOff = createLucideIcon("video-off", [
5814
- ["path", {
5815
- d: "M10.66 6H14a2 2 0 0 1 2 2v2.5l5.248-3.062A.5.5 0 0 1 22 7.87v8.196",
5816
- key: "w8jjjt"
5817
- }],
5818
- ["path", {
5819
- d: "M16 16a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h2",
5820
- key: "1xawa7"
5821
- }],
5822
- ["path", {
5823
- d: "m2 2 20 20",
5824
- key: "1ooewy"
5825
- }]
5826
- ]);
5827
- /**
5828
- * @license lucide-react v0.576.0 - ISC
5829
- *
5830
- * This source code is licensed under the ISC license.
5831
- * See the LICENSE file in the root directory of this source tree.
5832
- */
5833
- var Video = createLucideIcon("video", [["path", {
5834
- d: "m16 13 5.223 3.482a.5.5 0 0 0 .777-.416V7.87a.5.5 0 0 0-.752-.432L16 10.5",
5835
- key: "ftymec"
5836
- }], ["rect", {
5837
- x: "2",
5838
- y: "6",
5839
- width: "14",
5840
- height: "12",
5841
- rx: "2",
5842
- key: "158x01"
5843
- }]]);
5844
- /**
5845
- * @license lucide-react v0.576.0 - ISC
5846
- *
5847
- * This source code is licensed under the ISC license.
5848
- * See the LICENSE file in the root directory of this source tree.
5849
- */
5850
4484
  var Volume2 = createLucideIcon("volume-2", [
5851
4485
  ["path", {
5852
4486
  d: "M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z",
@@ -5893,92 +4527,6 @@ var VolumeX = createLucideIcon("volume-x", [
5893
4527
  * This source code is licensed under the ISC license.
5894
4528
  * See the LICENSE file in the root directory of this source tree.
5895
4529
  */
5896
- var Warehouse = createLucideIcon("warehouse", [
5897
- ["path", {
5898
- d: "M18 21V10a1 1 0 0 0-1-1H7a1 1 0 0 0-1 1v11",
5899
- key: "pb2vm6"
5900
- }],
5901
- ["path", {
5902
- d: "M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V8a2 2 0 0 1 1.132-1.803l7.95-3.974a2 2 0 0 1 1.837 0l7.948 3.974A2 2 0 0 1 22 8z",
5903
- key: "doq5xv"
5904
- }],
5905
- ["path", {
5906
- d: "M6 13h12",
5907
- key: "yf64js"
5908
- }],
5909
- ["path", {
5910
- d: "M6 17h12",
5911
- key: "1jwigz"
5912
- }]
5913
- ]);
5914
- /**
5915
- * @license lucide-react v0.576.0 - ISC
5916
- *
5917
- * This source code is licensed under the ISC license.
5918
- * See the LICENSE file in the root directory of this source tree.
5919
- */
5920
- var WashingMachine = createLucideIcon("washing-machine", [
5921
- ["path", {
5922
- d: "M3 6h3",
5923
- key: "155dbl"
5924
- }],
5925
- ["path", {
5926
- d: "M17 6h.01",
5927
- key: "e2y6kg"
5928
- }],
5929
- ["rect", {
5930
- width: "18",
5931
- height: "20",
5932
- x: "3",
5933
- y: "2",
5934
- rx: "2",
5935
- key: "od3kk9"
5936
- }],
5937
- ["circle", {
5938
- cx: "12",
5939
- cy: "13",
5940
- r: "5",
5941
- key: "nlbqau"
5942
- }],
5943
- ["path", {
5944
- d: "M12 18a2.5 2.5 0 0 0 0-5 2.5 2.5 0 0 1 0-5",
5945
- key: "17lach"
5946
- }]
5947
- ]);
5948
- /**
5949
- * @license lucide-react v0.576.0 - ISC
5950
- *
5951
- * This source code is licensed under the ISC license.
5952
- * See the LICENSE file in the root directory of this source tree.
5953
- */
5954
- var WavesLadder = createLucideIcon("waves-ladder", [
5955
- ["path", {
5956
- d: "M19 5a2 2 0 0 0-2 2v11",
5957
- key: "s41o68"
5958
- }],
5959
- ["path", {
5960
- d: "M2 18c.6.5 1.2 1 2.5 1 2.5 0 2.5-2 5-2 2.6 0 2.4 2 5 2 2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1",
5961
- key: "rd2r6e"
5962
- }],
5963
- ["path", {
5964
- d: "M7 13h10",
5965
- key: "1rwob1"
5966
- }],
5967
- ["path", {
5968
- d: "M7 9h10",
5969
- key: "12czzb"
5970
- }],
5971
- ["path", {
5972
- d: "M9 5a2 2 0 0 0-2 2v11",
5973
- key: "x0q4gh"
5974
- }]
5975
- ]);
5976
- /**
5977
- * @license lucide-react v0.576.0 - ISC
5978
- *
5979
- * This source code is licensed under the ISC license.
5980
- * See the LICENSE file in the root directory of this source tree.
5981
- */
5982
4530
  var Waves = createLucideIcon("waves", [
5983
4531
  ["path", {
5984
4532
  d: "M2 6c.6.5 1.2 1 2.5 1C7 7 7 5 9.5 5c2.6 0 2.4 2 5 2 2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1",
@@ -6833,34 +5381,26 @@ function deviceRoleMetaOf(role) {
6833
5381
  return DEVICE_ROLE_META[role] ?? FALLBACK_DEVICE_ROLE_META;
6834
5382
  }
6835
5383
  /**
6836
- * Icons an operator may pick for a per-device `display.icon` override (and for
6837
- * a per-role default), keyed by a stable kebab-case name. Named imports only —
6838
- * no dynamic indexing into lucide, so the bundle carries exactly this set.
6839
- * Unknown keys resolve to `undefined` (caller falls through to the next level).
6840
- *
6841
- * The vocabulary is the one the VIEWER draws from too (its own icon module,
6842
- * keyed by these same strings): a key added here that the phone cannot draw
6843
- * falls through to the next resolution level there, which reads as "my change
6844
- * did nothing". So the KEY is the contract — a stable kebab-case string, never
6845
- * a glyph identity — and `device-meta.test.ts` pins that every key resolves
6846
- * and that the set never loses a key an operator may already have persisted.
5384
+ * The glyphs the admin draws on FIRST PAINT, synchronously — the ones the
5385
+ * device-type and role meta tables above already import. Everything else in
5386
+ * the icon catalog is drawn from the lazily loaded full table
5387
+ * (`icon-glyphs.ts`), so the initial chunk carries ~60 lucide icons instead of
5388
+ * one static import per catalog key (D854).
6847
5389
  *
6848
- * Grouped by what an operator is naming: a device, a light or appliance, a
6849
- * sensor or the weather it reads, a room, or what moves through it. `gauge2`
6850
- * is a legacy alias kept for rows that persisted it.
5390
+ * Typed `Partial<Record<IconKey, ...>>`: a key that is not in the catalog is a
5391
+ * compile error, so this table can never become a second vocabulary — it is a
5392
+ * cache of glyphs, not a list of choices.
6851
5393
  */
6852
- var DISPLAY_ICON_REGISTRY = {
5394
+ var FAST_ICON_GLYPHS = {
6853
5395
  camera: Camera,
6854
5396
  network: Network,
6855
5397
  "toggle-left": ToggleLeft,
6856
- "toggle-right": ToggleRight,
6857
5398
  "circle-dot": CircleDot,
6858
5399
  "refresh-cw": RefreshCw,
6859
5400
  box: Box,
6860
5401
  "scroll-text": ScrollText,
6861
5402
  workflow: Workflow,
6862
5403
  lock: Lock,
6863
- "lock-open": LockOpen,
6864
5404
  blinds: Blinds,
6865
5405
  "air-vent": AirVent,
6866
5406
  "monitor-play": MonitorPlay,
@@ -6873,89 +5413,33 @@ var DISPLAY_ICON_REGISTRY = {
6873
5413
  "door-closed": DoorClosed,
6874
5414
  "door-open": DoorOpen,
6875
5415
  crosshair: Crosshair,
6876
- eye: Eye,
6877
5416
  "eye-off": EyeOff,
6878
5417
  smartphone: Smartphone,
6879
- phone: Phone,
6880
- tablet: Tablet,
6881
- laptop: Laptop,
6882
- monitor: Monitor,
6883
- tv: Tv,
6884
- speaker: Speaker,
6885
- printer: Printer,
6886
- projector: Projector,
6887
- "gamepad-2": Gamepad2,
6888
- radio: Radio,
6889
- router: Router,
6890
- bluetooth: Bluetooth,
6891
- cpu: Cpu,
6892
- "hard-drive": HardDrive,
6893
- server: Server,
6894
- mic: Mic,
6895
- "mic-off": MicOff,
6896
- video: Video,
6897
- "video-off": VideoOff,
6898
- music: Music,
6899
- plug: Plug,
6900
- "plug-zap": PlugZap,
6901
5418
  power: Power,
6902
- "power-off": PowerOff,
6903
- cable: Cable,
6904
5419
  battery: Battery,
6905
- "battery-charging": BatteryCharging,
6906
- "battery-full": BatteryFull,
6907
- "battery-low": BatteryLow,
6908
- key: Key,
6909
- "key-round": KeyRound,
6910
- mailbox: Mailbox,
6911
- package: Package,
6912
- shield: Shield,
6913
- "shield-check": ShieldCheck,
6914
- "shield-off": ShieldOff,
6915
5420
  lightbulb: Lightbulb,
6916
- lamp: Lamp,
6917
- "lamp-ceiling": LampCeiling,
6918
- "lamp-desk": LampDesk,
6919
- "lamp-floor": LampFloor,
6920
5421
  flashlight: Flashlight,
6921
- heater: Heater,
6922
- snowflake: Snowflake,
6923
- "thermometer-sun": ThermometerSun,
6924
- "thermometer-snowflake": ThermometerSnowflake,
6925
- refrigerator: Refrigerator,
6926
- microwave: Microwave,
6927
- "washing-machine": WashingMachine,
6928
- "cooking-pot": CookingPot,
6929
- utensils: Utensils,
6930
5422
  thermometer: Thermometer,
6931
5423
  droplets: Droplets,
6932
5424
  droplet: Droplet,
6933
5425
  gauge: Gauge,
6934
- gauge2: Gauge,
6935
5426
  sun: Sun,
6936
5427
  "sun-medium": SunMedium,
6937
5428
  sunrise: Sunrise,
6938
5429
  moon: Moon,
6939
5430
  wind: Wind,
6940
- cloud: Cloud,
6941
5431
  "cloud-rain": CloudRain,
6942
5432
  "cloud-sun": CloudSun,
6943
5433
  waves: Waves,
6944
5434
  sprout: Sprout,
6945
- leaf: Leaf,
6946
- flower: Flower,
6947
5435
  zap: Zap,
6948
5436
  flame: Flame,
6949
5437
  bell: Bell,
6950
- "bell-ring": BellRing,
6951
- "bell-off": BellOff,
6952
5438
  siren: Siren,
6953
5439
  radar: Radar,
6954
5440
  activity: Activity,
6955
5441
  hash: Hash,
6956
5442
  clock: Clock,
6957
- timer: Timer,
6958
- calendar: Calendar,
6959
5443
  pipette: Pipette,
6960
5444
  fan: Fan,
6961
5445
  bath: Bath,
@@ -6964,55 +5448,13 @@ var DISPLAY_ICON_REGISTRY = {
6964
5448
  "shield-alert": ShieldAlert,
6965
5449
  vibrate: Vibrate,
6966
5450
  wifi: Wifi,
6967
- "wifi-off": WifiOff,
6968
5451
  "volume-2": Volume2,
6969
- "volume-x": VolumeX,
6970
- heart: Heart,
6971
- "heart-pulse": HeartPulse,
6972
- star: Star,
6973
- sparkles: Sparkles,
6974
- house: House,
6975
- sofa: Sofa,
6976
- "bed-double": BedDouble,
6977
- bed: Bed,
6978
- warehouse: Warehouse,
6979
- trees: Trees,
6980
- "tree-pine": TreePine,
6981
- fence: Fence,
6982
- store: Store,
6983
- building: Building,
6984
- "building-2": Building2,
6985
- mountain: Mountain,
6986
- umbrella: Umbrella,
6987
- dumbbell: Dumbbell,
6988
- wrench: Wrench,
6989
- hammer: Hammer,
6990
- drill: Drill,
6991
- "waves-ladder": WavesLadder,
6992
- "circle-parking": CircleParking,
6993
- briefcase: Briefcase,
6994
- route: Route,
6995
- car: Car,
6996
- bike: Bike,
6997
- bus: Bus,
6998
- truck: Truck,
6999
- plane: Plane,
7000
- "train-front": TrainFront,
7001
- sailboat: Sailboat,
7002
- dog: Dog,
7003
- cat: Cat,
7004
- bird: Bird,
7005
- "paw-print": PawPrint,
7006
- baby: Baby,
7007
- user: User,
7008
- users: Users,
7009
- "person-standing": PersonStanding
5452
+ list: List,
5453
+ "list-checks": ListChecks,
5454
+ mail: Mail,
5455
+ "message-square": MessageSquare,
5456
+ type: Type
7010
5457
  };
7011
- /** Resolve a `display.icon` name to a lucide component, or `undefined` when the
7012
- * name is not in the curated `DISPLAY_ICON_REGISTRY`. */
7013
- function resolveDisplayIcon(name) {
7014
- return Object.hasOwn(DISPLAY_ICON_REGISTRY, name) ? DISPLAY_ICON_REGISTRY[name] : void 0;
7015
- }
7016
5458
  /**
7017
5459
  * EXHAUSTIVE device-type filter options — one entry per `DeviceType` member,
7018
5460
  * derived from `DEVICE_TYPE_META` so the set is always complete and a newly
@@ -7040,251 +5482,110 @@ function allDeviceTypeFilterOptions() {
7040
5482
  return ALL_DEVICE_TYPE_FILTER_OPTIONS;
7041
5483
  }
7042
5484
  //#endregion
7043
- //#region src/composites/icon-picker.tsx
7044
- /**
7045
- * icon-picker — the ONE control for choosing an icon, wherever admin-ui asks.
7046
- *
7047
- * There were two: a device one over `DISPLAY_ICON_REGISTRY` and a room one
7048
- * over `LOCATION_ICON_IDS`, identical apart from the vocabulary they walked.
7049
- * That was tolerable while the device set was 56 glyphs in a flat grid. It is
7050
- * not at 157: a picker that only lets the operator HUNT is a picker they stop
7051
- * using, and the two copies were already drifting — only one of them had an
7052
- * i18n'd label.
7053
- *
7054
- * So the vocabulary, the grouping and the search all come from
7055
- * `@camstack/types`' `display-icon-vocabulary`, which is the same module the
7056
- * viewer's sheet searches. What is left here is the web half: a popover, a
7057
- * grid, and a text field.
7058
- *
7059
- * ## What it does NOT own
7060
- *
7061
- * - **The glyphs.** `resolveGlyph` is a prop, because this package's table is
7062
- * `lucide-react` and the viewer's is `lucide-react-native`. A key this build
7063
- * cannot draw is SKIPPED rather than rendered as a hole — an empty tile
7064
- * reads as a rendering bug, not as a missing choice.
7065
- * - **The words.** Every string is a prop. This package has no i18n (one file
7066
- * in it imports react-i18next, and that is the exception), and a control
7067
- * that reached for a translation would force it on every consumer.
7068
- * - **The write.** `onPick` is called and that is all; whether it is a form
7069
- * value or an immediate mutation is the caller's business, as it already was
7070
- * in both pickers this replaces.
7071
- *
7072
- * ## The clear tile is never filtered away
7073
- *
7074
- * The "inherit" / "no icon" choice sits above the sections and ignores the
7075
- * search. A query that hid it would strand the operator on a glyph they picked
7076
- * by accident with no way back to the default — the one action a picker must
7077
- * always offer.
7078
- */
7079
- function IconPicker({ value, onPick, resolveGlyph, fallbackGlyph, labels, only, extraWords, clearGlyph, labelFor, disabled = false }) {
7080
- const [open, setOpen] = useState(false);
7081
- const [query, setQuery] = useState("");
7082
- const allowed = useMemo(() => only === void 0 ? null : new Set(only), [only]);
7083
- const sections = useMemo(() => {
7084
- const hits = searchDisplayIcons(query, extraWords);
7085
- const byGroup = /* @__PURE__ */ new Map();
7086
- for (const hit of hits) {
7087
- const { key, group } = hit.entry;
7088
- if (allowed !== null && !allowed.has(key)) continue;
7089
- if (resolveGlyph(key) === void 0) continue;
7090
- const bucket = byGroup.get(group);
7091
- if (bucket === void 0) byGroup.set(group, [key]);
7092
- else bucket.push(key);
7093
- }
7094
- return DISPLAY_ICON_GROUPS.flatMap((group) => {
7095
- const keys = byGroup.get(group);
7096
- return keys === void 0 || keys.length === 0 ? [] : [{
7097
- group,
7098
- keys
7099
- }];
7100
- });
7101
- }, [
7102
- query,
7103
- extraWords,
7104
- allowed,
7105
- resolveGlyph
7106
- ]);
7107
- const Current = (value === null ? void 0 : resolveGlyph(value)) ?? fallbackGlyph;
7108
- const choose = async (next) => {
7109
- setOpen(false);
7110
- setQuery("");
7111
- await onPick(next);
7112
- };
7113
- const Clear = clearGlyph ?? fallbackGlyph;
7114
- return /* @__PURE__ */ jsxs("div", {
7115
- className: "relative flex shrink-0 items-center gap-2",
7116
- children: [/* @__PURE__ */ jsx("button", {
7117
- type: "button",
7118
- disabled,
7119
- onClick: () => setOpen((o) => !o),
7120
- "aria-expanded": open,
7121
- "aria-label": labels.trigger,
7122
- title: labels.trigger,
7123
- className: "rounded border border-border p-1 text-foreground-muted hover:bg-surface-hover disabled:opacity-50",
7124
- children: /* @__PURE__ */ jsx(Current, { className: "h-4 w-4" })
7125
- }), open && /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("button", {
7126
- type: "button",
7127
- "aria-label": labels.close,
7128
- onClick: () => setOpen(false),
7129
- className: "fixed inset-0 z-10 cursor-default"
7130
- }), /* @__PURE__ */ jsxs("div", {
7131
- role: "group",
7132
- "aria-label": labels.panel,
7133
- className: "absolute left-0 top-full z-20 mt-1 max-h-80 w-72 overflow-y-auto rounded-md border border-border bg-surface p-2 shadow-lg",
7134
- children: [
7135
- /* @__PURE__ */ jsx("input", {
7136
- type: "search",
7137
- value: query,
7138
- autoFocus: true,
7139
- onChange: (e) => setQuery(e.target.value),
7140
- placeholder: labels.searchPlaceholder,
7141
- "aria-label": labels.searchPlaceholder,
7142
- className: "mb-2 w-full rounded border border-border bg-surface-raised px-2 py-1 text-xs text-foreground placeholder:text-foreground-subtle"
7143
- }),
7144
- /* @__PURE__ */ jsxs("button", {
7145
- type: "button",
7146
- onClick: () => void choose(null),
7147
- "aria-pressed": value === null,
7148
- className: "mb-2 flex w-full items-center gap-1.5 rounded px-1.5 py-1 text-[11px] text-foreground-subtle hover:bg-surface-hover",
7149
- children: [/* @__PURE__ */ jsx(Clear, { className: "h-3.5 w-3.5" }), labels.clear]
7150
- }),
7151
- sections.length === 0 ? /* @__PURE__ */ jsx("p", {
7152
- className: "px-1.5 py-2 text-[11px] text-foreground-subtle",
7153
- children: labels.noMatches
7154
- }) : sections.map(({ group, keys }) => /* @__PURE__ */ jsxs("section", {
7155
- className: "mb-2 last:mb-0",
7156
- children: [/* @__PURE__ */ jsx("h4", {
7157
- className: "px-1.5 pb-1 text-[10px] uppercase tracking-wide text-foreground-subtle",
7158
- children: labels.groups[group]
7159
- }), /* @__PURE__ */ jsx("div", {
7160
- className: "grid grid-cols-7 gap-1",
7161
- children: keys.map((key) => {
7162
- const Glyph = resolveGlyph(key);
7163
- if (Glyph === void 0) return null;
7164
- const selected = value === key;
7165
- return /* @__PURE__ */ jsx("button", {
7166
- type: "button",
7167
- onClick: () => void choose(key),
7168
- "aria-pressed": selected,
7169
- "aria-label": labelFor?.(key) ?? key,
7170
- title: labelFor?.(key) ?? key,
7171
- className: selected ? "flex items-center justify-center rounded border border-primary bg-primary/10 p-1.5 text-foreground" : "flex items-center justify-center rounded border border-transparent p-1.5 text-foreground-muted hover:bg-surface-hover",
7172
- children: /* @__PURE__ */ jsx(Glyph, { className: "h-4 w-4" })
7173
- }, key);
7174
- })
7175
- })]
7176
- }, group))
7177
- ]
7178
- })] })]
5485
+ //#region src/composites/icon-glyphs.ts
5486
+ /**
5487
+ * icon-glyphs — the web glyph table for the WHOLE icon catalog (D854).
5488
+ *
5489
+ * `@camstack/types` owns the keys; this module owns the drawing. Every
5490
+ * `ICON_KEYS` member resolves to a `lucide-react` component, without one
5491
+ * static import per icon and without putting the whole set in the initial
5492
+ * chunk:
5493
+ *
5494
+ * - a small synchronous FAST table (`FAST_ICON_GLYPHS`, the icons the device
5495
+ * type/role meta tables already import) answers on first paint;
5496
+ * - everything else comes from a SINGLE lazily imported table, fetched the
5497
+ * first time something asks for a glyph the fast table lacks. One chunk, not
5498
+ * one request per icon. It is lucide's per-icon INDEX module, not the package
5499
+ * barrel: the barrel is also what every static import resolves to, so a
5500
+ * dynamic `import('lucide-react')` is shared with the initial graph and the
5501
+ * bundler hoists all ~1,700 icons into an initial chunk (measured: +484 KB).
5502
+ * The index module is reached only from here, so its icons stay lazy.
5503
+ *
5504
+ * `resolveDisplayIcon` stays synchronous so existing call sites keep their
5505
+ * shape: it answers from the fast table, then from the full table once loaded,
5506
+ * and otherwise returns `undefined` AND starts the load. A component that
5507
+ * draws the result must subscribe with {@link useDisplayIconResolver} so it
5508
+ * re-renders when the table arrives — `undefined` then means "fall through to
5509
+ * the next precedence level for now", exactly as it always meant "this build
5510
+ * cannot draw it".
5511
+ *
5512
+ * If the lazy chunk fails to load the failure is recorded
5513
+ * ({@link iconGlyphsFailed}) and not retried until reload; the fast table keeps
5514
+ * answering.
5515
+ */
5516
+ var fullTable;
5517
+ var pending;
5518
+ var failure;
5519
+ var version = 0;
5520
+ var listeners = /* @__PURE__ */ new Set();
5521
+ function publish() {
5522
+ version += 1;
5523
+ for (const listener of listeners) listener();
5524
+ }
5525
+ /** `house` → `House`, `arrow-down-0-1` → `ArrowDown01`: lucide's export naming. */
5526
+ function lucideExportName(key) {
5527
+ return key.split("-").map((part) => part.charAt(0).toUpperCase() + part.slice(1)).join("");
5528
+ }
5529
+ /**
5530
+ * Load the full glyph table once. Resolves when it is available; rejects (once)
5531
+ * if the chunk could not be fetched. Safe to call repeatedly.
5532
+ */
5533
+ function loadIconGlyphs() {
5534
+ if (fullTable !== void 0) return Promise.resolve();
5535
+ if (failure !== void 0) return Promise.reject(failure);
5536
+ pending ??= import("./icons-BXXScOuy.js").then((module) => {
5537
+ fullTable = module;
5538
+ publish();
5539
+ }, (error) => {
5540
+ failure = error;
5541
+ publish();
5542
+ throw error;
7179
5543
  });
5544
+ return pending;
5545
+ }
5546
+ /** Has the lazy glyph chunk failed to load? (Then only the fast table answers.) */
5547
+ function iconGlyphsFailed() {
5548
+ return failure !== void 0;
5549
+ }
5550
+ /** Is the full table loaded? */
5551
+ function iconGlyphsLoaded() {
5552
+ return fullTable !== void 0;
7180
5553
  }
7181
- //#endregion
7182
- //#region src/composites/config-icon-field.tsx
7183
5554
  /**
7184
- * The control behind a `type: 'icon'` settings field (D780).
7185
- *
7186
- * The shared `<IconPicker>` over the display-icon vocabulary, with the device
7187
- * glyph table — the same control and the same keys the device and room
7188
- * pickers use. An icon field always draws something, so clearing is "back to
7189
- * the field's default", and a stored value the vocabulary does not know (a
7190
- * free-text lucide name from before D780) is drawn as that default.
5555
+ * The glyph for a stored icon value (a catalog key, or a spelling that
5556
+ * resolves to one), or `undefined` when it names no catalog icon — or when its
5557
+ * glyph is not loaded YET, in which case the load is started.
7191
5558
  */
7192
- function labelsFor(label) {
7193
- return {
7194
- trigger: `Choose an icon for ${label}`,
7195
- panel: `${label} icon`,
7196
- close: "Close",
7197
- searchPlaceholder: "Search icons",
7198
- clear: "Default icon",
7199
- noMatches: "No icon matches",
7200
- groups: {
7201
- device: "Devices",
7202
- lighting: "Lighting",
7203
- sensing: "Sensing",
7204
- place: "Places",
7205
- life: "Life"
7206
- }
5559
+ function resolveDisplayIcon(name) {
5560
+ const key = canonicalIconKey(name);
5561
+ if (key === void 0) return void 0;
5562
+ const fast = FAST_ICON_GLYPHS[key];
5563
+ if (fast !== void 0) return fast;
5564
+ if (fullTable !== void 0) return fullTable[lucideExportName(key)];
5565
+ if (failure === void 0) loadIconGlyphs().catch(() => void 0);
5566
+ }
5567
+ function subscribe(listener) {
5568
+ listeners.add(listener);
5569
+ return () => {
5570
+ listeners.delete(listener);
7207
5571
  };
7208
5572
  }
7209
- function ConfigIconFieldControl({ label, value, defaultKey, disabled, onChange }) {
7210
- const key = resolveDisplayIconKey(value, defaultKey);
7211
- const DefaultGlyph = resolveDisplayIcon(defaultKey) ?? ShieldCheck;
7212
- return /* @__PURE__ */ jsxs("div", {
7213
- className: "flex items-center gap-2",
7214
- children: [/* @__PURE__ */ jsx(IconPicker, {
7215
- value: key === "" ? null : key,
7216
- onPick: (next) => onChange(next ?? defaultKey),
7217
- resolveGlyph: resolveDisplayIcon,
7218
- fallbackGlyph: DefaultGlyph,
7219
- labels: labelsFor(label),
7220
- disabled
7221
- }), /* @__PURE__ */ jsx("span", {
7222
- className: "text-[11px] text-foreground-subtle font-mono",
7223
- children: key
7224
- })]
7225
- });
5573
+ var getVersion = () => version;
5574
+ /**
5575
+ * Subscribe a component to the lazy glyph table. Call it in any component that
5576
+ * draws the result of `resolveDisplayIcon` (directly or through a helper such
5577
+ * as `deviceLeadIcon`): it re-renders once when the table arrives, so a glyph
5578
+ * that was `undefined` a moment ago is drawn.
5579
+ */
5580
+ function useIconGlyphsVersion() {
5581
+ return useSyncExternalStore(subscribe, getVersion, getVersion);
7226
5582
  }
7227
- //#endregion
7228
- //#region src/composites/sanitize-info-html.ts
7229
5583
  /**
7230
- * Sanitize a small HTML subset for `ConfigInfoField.format='html'`.
7231
- *
7232
- * Only `<a>`, `<ul>`, `<ol>`, `<li>`, `<strong>`, `<em>`, `<code>`,
7233
- * `<br>`, `<p>`, and `<span>` are kept. On anchors, only `href` and a
7234
- * normalised `target`/`rel` are emitted; everything else is dropped
7235
- * (including event handlers and inline styles).
7236
- *
7237
- * Allowed `href` schemes: `http(s):`, `mailto:`, and **root-relative**
7238
- * paths (`/addon/…`). Root-relative links stay same-tab (session cookie);
7239
- * absolute http(s) open in a new tab. Protocol-relative (`//…`) is refused.
7240
- *
7241
- * The input comes from addon-authored copy bundled at build time —
7242
- * sanitisation is defence in depth rather than primary trust boundary.
5584
+ * `resolveDisplayIcon` for a component: the returned function changes identity
5585
+ * when the full table arrives, so anything memoised on it recomputes.
7243
5586
  */
7244
- function sanitizeInfoHtml(html) {
7245
- if (typeof window === "undefined" || typeof DOMParser === "undefined") return "";
7246
- const ALLOWED_TAGS = new Set([
7247
- "A",
7248
- "UL",
7249
- "OL",
7250
- "LI",
7251
- "STRONG",
7252
- "EM",
7253
- "CODE",
7254
- "BR",
7255
- "P",
7256
- "SPAN",
7257
- "B"
7258
- ]);
7259
- const doc = new DOMParser().parseFromString(`<div>${html}</div>`, "text/html");
7260
- const root = doc.body.firstElementChild;
7261
- if (!root) return "";
7262
- const walk = (node) => {
7263
- const children = Array.from(node.children);
7264
- for (const child of children) {
7265
- if (!ALLOWED_TAGS.has(child.tagName)) {
7266
- const text = doc.createTextNode(child.textContent ?? "");
7267
- child.replaceWith(text);
7268
- continue;
7269
- }
7270
- const allowed = child.tagName === "A" ? new Set(["href"]) : /* @__PURE__ */ new Set();
7271
- for (const attr of Array.from(child.attributes)) if (!allowed.has(attr.name)) child.removeAttribute(attr.name);
7272
- if (child.tagName === "A") {
7273
- const href = child.getAttribute("href") ?? "";
7274
- const isHttp = /^https?:\/\//i.test(href);
7275
- const isMailto = href.startsWith("mailto:");
7276
- const isRootRelative = href.startsWith("/") && !href.startsWith("//");
7277
- if (!isHttp && !isMailto && !isRootRelative) child.removeAttribute("href");
7278
- else if (isHttp) {
7279
- child.setAttribute("target", "_blank");
7280
- child.setAttribute("rel", "noopener noreferrer");
7281
- }
7282
- }
7283
- walk(child);
7284
- }
7285
- };
7286
- walk(root);
7287
- return root.innerHTML;
5587
+ function useDisplayIconResolver() {
5588
+ return useMemo(() => (name) => resolveDisplayIcon(name), [useIconGlyphsVersion()]);
7288
5589
  }
7289
5590
  //#endregion
7290
5591
  //#region ../../node_modules/clsx/dist/clsx.mjs
@@ -10686,6 +8987,560 @@ function cn(...inputs) {
10686
8987
  return twMerge(clsx(inputs));
10687
8988
  }
10688
8989
  //#endregion
8990
+ //#region src/hooks/use-is-mobile.ts
8991
+ var MOBILE_QUERY = "(max-width: 767px)";
8992
+ /**
8993
+ * Mid breakpoint — below this width the sidebar collapses to an
8994
+ * icons-only rail to reclaim canvas space. Above it (and outside
8995
+ * mobile) the full sidebar renders. Threshold matches Tailwind `lg`
8996
+ * so sidebar fans out at the same point grids switch to multi-column.
8997
+ */
8998
+ var MID_QUERY = "(min-width: 768px) and (max-width: 1023px)";
8999
+ /**
9000
+ * `matchMedia` is universal in browsers but absent in bare DOM environments.
9001
+ * These hooks are called from shared primitives (`DataTable` picks its narrow
9002
+ * layout with one), so throwing here takes down the whole page that merely
9003
+ * rendered a table. Where the capability is missing, report the desktop
9004
+ * layout — a widescreen rendering is wrong-looking; a crashed page is gone.
9005
+ */
9006
+ function matchQuery(query) {
9007
+ if (typeof window.matchMedia !== "function") return null;
9008
+ return window.matchMedia(query);
9009
+ }
9010
+ function subscribeQuery(query) {
9011
+ return (callback) => {
9012
+ const mql = matchQuery(query);
9013
+ if (mql === null) return () => {};
9014
+ mql.addEventListener("change", callback);
9015
+ return () => mql.removeEventListener("change", callback);
9016
+ };
9017
+ }
9018
+ function getSnapshot(query) {
9019
+ return () => matchQuery(query)?.matches ?? false;
9020
+ }
9021
+ function getServerSnapshot() {
9022
+ return false;
9023
+ }
9024
+ function useIsMobile() {
9025
+ return useSyncExternalStore(subscribeQuery(MOBILE_QUERY), getSnapshot(MOBILE_QUERY), getServerSnapshot);
9026
+ }
9027
+ /**
9028
+ * True when the viewport is in the medium (`md`) Tailwind range —
9029
+ * 768px ≤ width < 1024px. Use to drive layouts that should pack denser
9030
+ * than full-desktop but more legibly than mobile (e.g. icons-only
9031
+ * sidebar rail, narrower stat tiles).
9032
+ */
9033
+ function useIsMidWidth() {
9034
+ return useSyncExternalStore(subscribeQuery(MID_QUERY), getSnapshot(MID_QUERY), getServerSnapshot);
9035
+ }
9036
+ //#endregion
9037
+ //#region src/primitives/bottom-sheet.tsx
9038
+ function BottomSheet({ open, onClose, title, children, className }) {
9039
+ useEffect(() => {
9040
+ if (!open) return;
9041
+ const handleKeyDown = (e) => {
9042
+ if (e.key === "Escape") onClose();
9043
+ };
9044
+ document.addEventListener("keydown", handleKeyDown);
9045
+ document.body.style.overflow = "hidden";
9046
+ return () => {
9047
+ document.removeEventListener("keydown", handleKeyDown);
9048
+ document.body.style.overflow = "";
9049
+ };
9050
+ }, [open, onClose]);
9051
+ return /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("div", {
9052
+ className: cn("fixed inset-0 z-40 bg-black/50 transition-opacity duration-200", open ? "opacity-100" : "pointer-events-none opacity-0"),
9053
+ onClick: onClose,
9054
+ "aria-hidden": "true"
9055
+ }), /* @__PURE__ */ jsxs("div", {
9056
+ role: "dialog",
9057
+ "aria-modal": "true",
9058
+ className: cn("fixed inset-x-0 bottom-0 z-50 flex flex-col bg-background-elevated border-t border-border rounded-t-xl shadow-2xl transition-transform duration-200 ease-out pb-[env(safe-area-inset-bottom)]", "max-h-[80dvh]", open ? "translate-y-0" : "translate-y-full", className),
9059
+ children: [
9060
+ /* @__PURE__ */ jsx("div", {
9061
+ className: "flex justify-center pt-2 pb-1",
9062
+ children: /* @__PURE__ */ jsx("div", { className: "h-1 w-8 rounded-full bg-foreground-subtle/30" })
9063
+ }),
9064
+ title && /* @__PURE__ */ jsxs("div", {
9065
+ className: "flex items-center justify-between px-4 pb-2",
9066
+ children: [/* @__PURE__ */ jsx("span", {
9067
+ className: "text-sm font-medium text-foreground",
9068
+ children: title
9069
+ }), /* @__PURE__ */ jsx("button", {
9070
+ onClick: onClose,
9071
+ className: "p-1 rounded-md hover:bg-surface-hover text-foreground-muted transition-colors",
9072
+ children: /* @__PURE__ */ jsx(X, { className: "h-4 w-4" })
9073
+ })]
9074
+ }),
9075
+ /* @__PURE__ */ jsx("div", {
9076
+ className: "flex-1 overflow-y-auto px-4 pb-4",
9077
+ children
9078
+ })
9079
+ ]
9080
+ })] });
9081
+ }
9082
+ //#endregion
9083
+ //#region src/primitives/popover.tsx
9084
+ var PopoverContext = createContext(null);
9085
+ function usePopoverContext() {
9086
+ const ctx = useContext(PopoverContext);
9087
+ if (!ctx) throw new Error("Popover compound components must be used within <Popover>");
9088
+ return ctx;
9089
+ }
9090
+ function Popover({ children, open: controlledOpen, onOpenChange }) {
9091
+ const [uncontrolledOpen, setUncontrolledOpen] = useState(false);
9092
+ const open = controlledOpen ?? uncontrolledOpen;
9093
+ const triggerId = useId();
9094
+ const contentId = useId();
9095
+ const triggerRef = useRef(null);
9096
+ const setOpen = useCallback((next) => {
9097
+ onOpenChange?.(next);
9098
+ if (controlledOpen === void 0) setUncontrolledOpen(next);
9099
+ }, [controlledOpen, onOpenChange]);
9100
+ return /* @__PURE__ */ jsx(PopoverContext.Provider, {
9101
+ value: {
9102
+ open,
9103
+ setOpen,
9104
+ triggerId,
9105
+ contentId,
9106
+ triggerRef
9107
+ },
9108
+ children: /* @__PURE__ */ jsx("div", {
9109
+ className: "relative inline-block",
9110
+ children
9111
+ })
9112
+ });
9113
+ }
9114
+ function PopoverTrigger({ children, ...props }) {
9115
+ const { open, setOpen, triggerId, contentId, triggerRef } = usePopoverContext();
9116
+ return /* @__PURE__ */ jsx("button", {
9117
+ type: "button",
9118
+ ref: triggerRef,
9119
+ id: triggerId,
9120
+ "aria-haspopup": "dialog",
9121
+ "aria-expanded": open,
9122
+ "aria-controls": open ? contentId : void 0,
9123
+ onClick: () => setOpen(!open),
9124
+ ...props,
9125
+ children
9126
+ });
9127
+ }
9128
+ /** Breathing room kept between a popover and the viewport edge. */
9129
+ var VIEWPORT_MARGIN_PX$1 = 8;
9130
+ /**
9131
+ * Where a popover goes so it stays inside the viewport: below the trigger
9132
+ * unless it does not fit there and there is more room above, and never taller
9133
+ * than the room on the chosen side.
9134
+ */
9135
+ function placePopover(input) {
9136
+ const below = input.viewportHeight - input.triggerBottom - input.offset - VIEWPORT_MARGIN_PX$1;
9137
+ const above = input.triggerTop - input.offset - VIEWPORT_MARGIN_PX$1;
9138
+ const side = input.contentHeight > below && above > below ? "above" : "below";
9139
+ return {
9140
+ side,
9141
+ maxHeight: Math.max(0, side === "above" ? above : below)
9142
+ };
9143
+ }
9144
+ function PopoverContent({ className, children, align = "start", offset = 4, ...props }) {
9145
+ const { open, setOpen, contentId, triggerId, triggerRef } = usePopoverContext();
9146
+ const isMobile = useIsMobile();
9147
+ const ref = useRef(null);
9148
+ const [coords, setCoords] = useState(null);
9149
+ const [placement, setPlacement] = useState(null);
9150
+ useLayoutEffect(() => {
9151
+ if (!open || isMobile) {
9152
+ setCoords(null);
9153
+ return;
9154
+ }
9155
+ const compute = () => {
9156
+ const trigger = triggerRef.current;
9157
+ if (!trigger) return;
9158
+ const rect = trigger.getBoundingClientRect();
9159
+ const left = align === "end" ? rect.right : rect.left;
9160
+ setCoords({
9161
+ top: rect.bottom + offset,
9162
+ left,
9163
+ minWidth: rect.width,
9164
+ triggerTop: rect.top,
9165
+ triggerBottom: rect.bottom
9166
+ });
9167
+ };
9168
+ compute();
9169
+ window.addEventListener("resize", compute);
9170
+ window.addEventListener("scroll", compute, true);
9171
+ return () => {
9172
+ window.removeEventListener("resize", compute);
9173
+ window.removeEventListener("scroll", compute, true);
9174
+ };
9175
+ }, [
9176
+ open,
9177
+ isMobile,
9178
+ align,
9179
+ offset,
9180
+ triggerRef
9181
+ ]);
9182
+ useLayoutEffect(() => {
9183
+ const el = ref.current;
9184
+ if (!coords || !el) {
9185
+ setPlacement(null);
9186
+ return;
9187
+ }
9188
+ setPlacement(placePopover({
9189
+ triggerTop: coords.triggerTop,
9190
+ triggerBottom: coords.triggerBottom,
9191
+ contentHeight: el.scrollHeight,
9192
+ viewportHeight: window.innerHeight,
9193
+ offset
9194
+ }));
9195
+ }, [coords, offset]);
9196
+ useEffect(() => {
9197
+ if (!open || isMobile) return;
9198
+ const handler = (e) => {
9199
+ const el = ref.current;
9200
+ const trigger = triggerRef.current;
9201
+ if (el && !el.contains(e.target) && !trigger?.contains(e.target)) setOpen(false);
9202
+ };
9203
+ const escHandler = (e) => {
9204
+ if (e.key === "Escape") setOpen(false);
9205
+ };
9206
+ document.addEventListener("mousedown", handler);
9207
+ document.addEventListener("keydown", escHandler);
9208
+ return () => {
9209
+ document.removeEventListener("mousedown", handler);
9210
+ document.removeEventListener("keydown", escHandler);
9211
+ };
9212
+ }, [
9213
+ open,
9214
+ setOpen,
9215
+ triggerRef,
9216
+ isMobile
9217
+ ]);
9218
+ if (!open) return null;
9219
+ if (isMobile) return /* @__PURE__ */ jsx(BottomSheet, {
9220
+ open,
9221
+ onClose: () => setOpen(false),
9222
+ children
9223
+ });
9224
+ if (!coords || typeof document === "undefined") return null;
9225
+ return createPortal(/* @__PURE__ */ jsx("div", {
9226
+ ref,
9227
+ id: contentId,
9228
+ role: "dialog",
9229
+ "aria-labelledby": triggerId,
9230
+ style: {
9231
+ position: "fixed",
9232
+ ...placement?.side === "above" ? { bottom: window.innerHeight - coords.triggerTop + offset } : { top: coords.top },
9233
+ ...placement ? { maxHeight: placement.maxHeight } : {},
9234
+ ...align === "end" ? { right: window.innerWidth - coords.left } : { left: coords.left },
9235
+ minWidth: coords.minWidth
9236
+ },
9237
+ className: cn("z-50 overflow-y-auto bg-background-elevated border border-border rounded-lg shadow-lg p-3", className),
9238
+ ...props,
9239
+ children
9240
+ }), document.body);
9241
+ }
9242
+ //#endregion
9243
+ //#region src/composites/icon-picker.tsx
9244
+ /**
9245
+ * icon-picker — the ONE control for choosing an icon, wherever admin-ui asks.
9246
+ *
9247
+ * One view over the ONE icon catalog (`@camstack/types`' `icon-catalog`, D854):
9248
+ * every lucide icon both surfaces can draw, filed under its primary lucide
9249
+ * category, searched over the key, the Italian/English overlay and lucide's own
9250
+ * English tags. There is no curated section and no per-caller subset — a device
9251
+ * override, a room and a settings field all choose from the same ~1,700 icons.
9252
+ *
9253
+ * ## It is virtualised
9254
+ *
9255
+ * ~1,700 tiles is too many to mount at once (and each is an SVG component whose
9256
+ * glyph may still be loading). The list is flattened into fixed-height rows —
9257
+ * a category header or a row of seven tiles — and only the rows in (or just
9258
+ * past) the scrolled window are rendered; two spacers stand in for the rest.
9259
+ * Opening the popover mounts ~20 rows, and typing re-filters the same window.
9260
+ *
9261
+ * ## What it does NOT own
9262
+ *
9263
+ * - **The words.** Every string is a prop. This package has no i18n (one file
9264
+ * in it imports react-i18next, and that is the exception). Section titles are
9265
+ * derived from the lucide category id unless the caller supplies
9266
+ * `categoryLabel`.
9267
+ * - **The write.** `onPick` is called and that is all; whether it is a form
9268
+ * value or an immediate mutation is the caller's business.
9269
+ *
9270
+ * The glyphs come from `icon-glyphs.ts`: a synchronous fast table, then one
9271
+ * lazily loaded table for the rest, which opening the picker starts loading.
9272
+ *
9273
+ * ## The clear tile is never filtered away
9274
+ *
9275
+ * The "inherit" / "no icon" choice sits above the list and ignores the search.
9276
+ * A query that hid it would strand the operator on a glyph they picked by
9277
+ * accident with no way back to the default — the one action a picker must
9278
+ * always offer.
9279
+ */
9280
+ var TILES_PER_ROW = 7;
9281
+ /** Matches `h-6` / `h-8` on the rows below. */
9282
+ var HEADER_ROW_PX = 24;
9283
+ var TILE_ROW_PX = 32;
9284
+ /** Matches the `h-72` of the scroll area. */
9285
+ var VIEWPORT_PX = 288;
9286
+ var OVERSCAN_PX = 96;
9287
+ function chunk(keys) {
9288
+ const rows = [];
9289
+ for (let i = 0; i < keys.length; i += TILES_PER_ROW) rows.push(keys.slice(i, i + TILES_PER_ROW));
9290
+ return rows;
9291
+ }
9292
+ function heightOf(row) {
9293
+ return row.kind === "header" ? HEADER_ROW_PX : TILE_ROW_PX;
9294
+ }
9295
+ /** An empty query shows every category as a section; a query shows one ranked list. */
9296
+ function buildRows(query, extraWords) {
9297
+ if (query.trim().length > 0) return chunk(searchIcons(query, extraWords).map((h) => h.entry.key)).map((row, i) => ({
9298
+ kind: "tiles",
9299
+ id: `r${i}`,
9300
+ keys: row
9301
+ }));
9302
+ return ICON_CATEGORIES.flatMap((category) => {
9303
+ const keys = iconsInCategory(category).map((e) => e.key);
9304
+ return [{
9305
+ kind: "header",
9306
+ id: `h-${category}`,
9307
+ category
9308
+ }, ...chunk(keys).map((row, i) => ({
9309
+ kind: "tiles",
9310
+ id: `${category}-${i}`,
9311
+ keys: row
9312
+ }))];
9313
+ });
9314
+ }
9315
+ /** The rows intersecting the scrolled window, and the spacers that stand in for the rest. */
9316
+ function windowRows(rows, offsets, total, scrollTop) {
9317
+ const from = Math.max(0, scrollTop - OVERSCAN_PX);
9318
+ const to = scrollTop + VIEWPORT_PX + OVERSCAN_PX;
9319
+ let start = 0;
9320
+ while (start < rows.length - 1 && (offsets[start + 1] ?? total) <= from) start += 1;
9321
+ let end = start;
9322
+ while (end < rows.length && (offsets[end] ?? total) < to) end += 1;
9323
+ return {
9324
+ rows: rows.slice(start, end),
9325
+ padTop: offsets[start] ?? 0,
9326
+ padBottom: Math.max(0, total - (offsets[end] ?? total))
9327
+ };
9328
+ }
9329
+ function IconPicker({ value, onPick, fallbackGlyph, labels, extraWords, clearGlyph, labelFor, categoryLabel = iconCategoryLabel, disabled = false }) {
9330
+ const [open, setOpen] = useState(false);
9331
+ const [query, setQuery] = useState("");
9332
+ const [scrollTop, setScrollTop] = useState(0);
9333
+ const scroller = useRef(null);
9334
+ const resolveGlyph = useDisplayIconResolver();
9335
+ useEffect(() => {
9336
+ if (open) loadIconGlyphs().catch(() => void 0);
9337
+ }, [open]);
9338
+ const selectedKey = canonicalIconKey(value);
9339
+ const rows = useMemo(() => buildRows(query, extraWords), [query, extraWords]);
9340
+ const { offsets, total } = useMemo(() => {
9341
+ const out = [];
9342
+ let acc = 0;
9343
+ for (const row of rows) {
9344
+ out.push(acc);
9345
+ acc += heightOf(row);
9346
+ }
9347
+ return {
9348
+ offsets: out,
9349
+ total: acc
9350
+ };
9351
+ }, [rows]);
9352
+ const visible = useMemo(() => windowRows(rows, offsets, total, scrollTop), [
9353
+ rows,
9354
+ offsets,
9355
+ total,
9356
+ scrollTop
9357
+ ]);
9358
+ const Current = (value === null ? void 0 : resolveGlyph(value)) ?? fallbackGlyph;
9359
+ const Clear = clearGlyph ?? fallbackGlyph;
9360
+ const onQuery = (next) => {
9361
+ setQuery(next);
9362
+ setScrollTop(0);
9363
+ if (scroller.current !== null) scroller.current.scrollTop = 0;
9364
+ };
9365
+ const choose = async (next) => {
9366
+ setOpenAndReset(false);
9367
+ await onPick(next);
9368
+ };
9369
+ const setOpenAndReset = (next) => {
9370
+ setOpen(next);
9371
+ if (!next) onQuery("");
9372
+ };
9373
+ return /* @__PURE__ */ jsxs(Popover, {
9374
+ open,
9375
+ onOpenChange: setOpenAndReset,
9376
+ children: [/* @__PURE__ */ jsx(PopoverTrigger, {
9377
+ disabled,
9378
+ "aria-label": labels.trigger,
9379
+ title: labels.trigger,
9380
+ className: "rounded border border-border p-1 text-foreground-muted hover:bg-surface-hover disabled:opacity-50",
9381
+ children: /* @__PURE__ */ jsx(Current, { className: "h-4 w-4" })
9382
+ }), /* @__PURE__ */ jsx(PopoverContent, {
9383
+ "aria-label": labels.panel,
9384
+ "aria-labelledby": void 0,
9385
+ className: "w-72 p-2",
9386
+ children: /* @__PURE__ */ jsxs("div", {
9387
+ className: "w-full",
9388
+ children: [
9389
+ /* @__PURE__ */ jsx("input", {
9390
+ type: "search",
9391
+ value: query,
9392
+ autoFocus: true,
9393
+ onChange: (e) => onQuery(e.target.value),
9394
+ placeholder: labels.searchPlaceholder,
9395
+ "aria-label": labels.searchPlaceholder,
9396
+ className: "mb-2 w-full rounded border border-border bg-surface-raised px-2 py-1 text-xs text-foreground placeholder:text-foreground-subtle"
9397
+ }),
9398
+ /* @__PURE__ */ jsxs("button", {
9399
+ type: "button",
9400
+ onClick: () => void choose(null),
9401
+ "aria-pressed": value === null,
9402
+ className: "mb-2 flex w-full items-center gap-1.5 rounded px-1.5 py-1 text-[11px] text-foreground-subtle hover:bg-surface-hover",
9403
+ children: [/* @__PURE__ */ jsx(Clear, { className: "h-3.5 w-3.5" }), labels.clear]
9404
+ }),
9405
+ rows.length === 0 ? /* @__PURE__ */ jsx("p", {
9406
+ className: "px-1.5 py-2 text-[11px] text-foreground-subtle",
9407
+ children: labels.noMatches
9408
+ }) : /* @__PURE__ */ jsx("div", {
9409
+ ref: scroller,
9410
+ onScroll: (e) => setScrollTop(e.currentTarget.scrollTop),
9411
+ className: "max-h-72 overflow-y-auto",
9412
+ children: /* @__PURE__ */ jsx("div", {
9413
+ style: {
9414
+ paddingTop: visible.padTop,
9415
+ paddingBottom: visible.padBottom
9416
+ },
9417
+ children: visible.rows.map((row) => row.kind === "header" ? /* @__PURE__ */ jsx("h4", {
9418
+ className: "flex h-6 items-center px-1.5 text-[10px] uppercase tracking-wide text-foreground-subtle",
9419
+ children: categoryLabel(row.category)
9420
+ }, row.id) : /* @__PURE__ */ jsx("div", {
9421
+ className: "grid h-8 grid-cols-7 gap-1 pb-1",
9422
+ children: row.keys.map((key) => {
9423
+ const Glyph = resolveGlyph(key);
9424
+ if (Glyph === void 0) return /* @__PURE__ */ jsx("span", { "aria-hidden": "true" }, key);
9425
+ const selected = selectedKey === key;
9426
+ return /* @__PURE__ */ jsx("button", {
9427
+ type: "button",
9428
+ onClick: () => void choose(key),
9429
+ "aria-pressed": selected,
9430
+ "aria-label": labelFor?.(key) ?? key,
9431
+ title: labelFor?.(key) ?? key,
9432
+ className: selected ? "flex items-center justify-center rounded border border-primary bg-primary/10 text-foreground" : "flex items-center justify-center rounded border border-transparent text-foreground-muted hover:bg-surface-hover",
9433
+ children: /* @__PURE__ */ jsx(Glyph, { className: "h-4 w-4" })
9434
+ }, key);
9435
+ })
9436
+ }, row.id))
9437
+ })
9438
+ })
9439
+ ]
9440
+ })
9441
+ })]
9442
+ });
9443
+ }
9444
+ //#endregion
9445
+ //#region src/composites/config-icon-field.tsx
9446
+ /**
9447
+ * The control behind a `type: 'icon'` settings field (D780).
9448
+ *
9449
+ * The shared `<IconPicker>` over the icon catalog (D854) — the same control
9450
+ * and the same keys the device and room pickers use. An icon field always draws something, so clearing is "back to
9451
+ * the field's default", and a stored value the catalog does not know (a
9452
+ * free-text lucide name from before D780) is drawn as that default.
9453
+ */
9454
+ function labelsFor(label) {
9455
+ return {
9456
+ trigger: `Choose an icon for ${label}`,
9457
+ panel: `${label} icon`,
9458
+ searchPlaceholder: "Search icons",
9459
+ clear: "Default icon",
9460
+ noMatches: "No icon matches"
9461
+ };
9462
+ }
9463
+ function ConfigIconFieldControl({ label, value, defaultKey, disabled, onChange }) {
9464
+ const resolveDisplayIcon = useDisplayIconResolver();
9465
+ const key = resolveIconKey(value, defaultKey);
9466
+ const DefaultGlyph = resolveDisplayIcon(defaultKey) ?? ShieldCheck;
9467
+ return /* @__PURE__ */ jsxs("div", {
9468
+ className: "flex items-center gap-2",
9469
+ children: [/* @__PURE__ */ jsx(IconPicker, {
9470
+ value: key === "" ? null : key,
9471
+ onPick: (next) => onChange(next ?? defaultKey),
9472
+ fallbackGlyph: DefaultGlyph,
9473
+ labels: labelsFor(label),
9474
+ disabled
9475
+ }), /* @__PURE__ */ jsx("span", {
9476
+ className: "text-[11px] text-foreground-subtle font-mono",
9477
+ children: key
9478
+ })]
9479
+ });
9480
+ }
9481
+ //#endregion
9482
+ //#region src/composites/sanitize-info-html.ts
9483
+ /**
9484
+ * Sanitize a small HTML subset for `ConfigInfoField.format='html'`.
9485
+ *
9486
+ * Only `<a>`, `<ul>`, `<ol>`, `<li>`, `<strong>`, `<em>`, `<code>`,
9487
+ * `<br>`, `<p>`, and `<span>` are kept. On anchors, only `href` and a
9488
+ * normalised `target`/`rel` are emitted; everything else is dropped
9489
+ * (including event handlers and inline styles).
9490
+ *
9491
+ * Allowed `href` schemes: `http(s):`, `mailto:`, and **root-relative**
9492
+ * paths (`/addon/…`). Root-relative links stay same-tab (session cookie);
9493
+ * absolute http(s) open in a new tab. Protocol-relative (`//…`) is refused.
9494
+ *
9495
+ * The input comes from addon-authored copy bundled at build time —
9496
+ * sanitisation is defence in depth rather than primary trust boundary.
9497
+ */
9498
+ function sanitizeInfoHtml(html) {
9499
+ if (typeof window === "undefined" || typeof DOMParser === "undefined") return "";
9500
+ const ALLOWED_TAGS = new Set([
9501
+ "A",
9502
+ "UL",
9503
+ "OL",
9504
+ "LI",
9505
+ "STRONG",
9506
+ "EM",
9507
+ "CODE",
9508
+ "BR",
9509
+ "P",
9510
+ "SPAN",
9511
+ "B"
9512
+ ]);
9513
+ const doc = new DOMParser().parseFromString(`<div>${html}</div>`, "text/html");
9514
+ const root = doc.body.firstElementChild;
9515
+ if (!root) return "";
9516
+ const walk = (node) => {
9517
+ const children = Array.from(node.children);
9518
+ for (const child of children) {
9519
+ if (!ALLOWED_TAGS.has(child.tagName)) {
9520
+ const text = doc.createTextNode(child.textContent ?? "");
9521
+ child.replaceWith(text);
9522
+ continue;
9523
+ }
9524
+ const allowed = child.tagName === "A" ? new Set(["href"]) : /* @__PURE__ */ new Set();
9525
+ for (const attr of Array.from(child.attributes)) if (!allowed.has(attr.name)) child.removeAttribute(attr.name);
9526
+ if (child.tagName === "A") {
9527
+ const href = child.getAttribute("href") ?? "";
9528
+ const isHttp = /^https?:\/\//i.test(href);
9529
+ const isMailto = href.startsWith("mailto:");
9530
+ const isRootRelative = href.startsWith("/") && !href.startsWith("//");
9531
+ if (!isHttp && !isMailto && !isRootRelative) child.removeAttribute("href");
9532
+ else if (isHttp) {
9533
+ child.setAttribute("target", "_blank");
9534
+ child.setAttribute("rel", "noopener noreferrer");
9535
+ }
9536
+ }
9537
+ walk(child);
9538
+ }
9539
+ };
9540
+ walk(root);
9541
+ return root.innerHTML;
9542
+ }
9543
+ //#endregion
10689
9544
  //#region ../../node_modules/class-variance-authority/dist/index.mjs
10690
9545
  /**
10691
9546
  * Copyright 2022 Joe Bell. All rights reserved.
@@ -11324,6 +10179,8 @@ var useBackupUpsertDestinationPolicy = trpc.backup.upsertDestinationPolicy.useMu
11324
10179
  var useBackupPreviewSchedule = trpc.backup.previewSchedule.useQuery;
11325
10180
  /** Generated alias around `trpc.backup.listSchedules.useQuery`. */
11326
10181
  var useBackupListSchedules = trpc.backup.listSchedules.useQuery;
10182
+ /** Generated alias around `trpc.backup.listAvailableDatabases.useQuery`. */
10183
+ var useBackupListAvailableDatabases = trpc.backup.listAvailableDatabases.useQuery;
11327
10184
  /** Generated alias around `trpc.backup.upsertSchedule.useMutation`. */
11328
10185
  var useBackupUpsertSchedule = trpc.backup.upsertSchedule.useMutation;
11329
10186
  /** Generated alias around `trpc.backup.deleteSchedule.useMutation`. */
@@ -27031,8 +25888,8 @@ function RecordingPanel({ deviceId }) {
27031
25888
  * `type:'widget'` ConfigField. `WidgetSlot` resolves these BEFORE the
27032
25889
  * Module-Federation `WidgetRegistry`. ids are namespaced `host/<name>`. */
27033
25890
  var HOST_WIDGETS = {
27034
- "host/motion-zones-grid": lazy(() => import("./MotionZonesSettings-DHDfnZyU.js").then((m) => ({ default: m.MotionZonesSettings }))),
27035
- "host/privacy-mask-grid": lazy(() => import("./PrivacyMaskSettings-DMkchqO1.js").then((m) => ({ default: m.PrivacyMaskSettings }))),
25891
+ "host/motion-zones-grid": lazy(() => import("./MotionZonesSettings-CiYjd-yl.js").then((m) => ({ default: m.MotionZonesSettings }))),
25892
+ "host/privacy-mask-grid": lazy(() => import("./PrivacyMaskSettings-BmRdUrPp.js").then((m) => ({ default: m.PrivacyMaskSettings }))),
27036
25893
  "host/ptz-panel": PtzPanel,
27037
25894
  "host/navigation-panel": NavigationPanel,
27038
25895
  "host/consumables-panel": ConsumablesPanel,
@@ -31898,225 +30755,6 @@ var Switch = forwardRef(({ className, checked, onCheckedChange, label, ...props
31898
30755
  });
31899
30756
  Switch.displayName = "Switch";
31900
30757
  //#endregion
31901
- //#region src/hooks/use-is-mobile.ts
31902
- var MOBILE_QUERY = "(max-width: 767px)";
31903
- /**
31904
- * Mid breakpoint — below this width the sidebar collapses to an
31905
- * icons-only rail to reclaim canvas space. Above it (and outside
31906
- * mobile) the full sidebar renders. Threshold matches Tailwind `lg`
31907
- * so sidebar fans out at the same point grids switch to multi-column.
31908
- */
31909
- var MID_QUERY = "(min-width: 768px) and (max-width: 1023px)";
31910
- /**
31911
- * `matchMedia` is universal in browsers but absent in bare DOM environments.
31912
- * These hooks are called from shared primitives (`DataTable` picks its narrow
31913
- * layout with one), so throwing here takes down the whole page that merely
31914
- * rendered a table. Where the capability is missing, report the desktop
31915
- * layout — a widescreen rendering is wrong-looking; a crashed page is gone.
31916
- */
31917
- function matchQuery(query) {
31918
- if (typeof window.matchMedia !== "function") return null;
31919
- return window.matchMedia(query);
31920
- }
31921
- function subscribeQuery(query) {
31922
- return (callback) => {
31923
- const mql = matchQuery(query);
31924
- if (mql === null) return () => {};
31925
- mql.addEventListener("change", callback);
31926
- return () => mql.removeEventListener("change", callback);
31927
- };
31928
- }
31929
- function getSnapshot(query) {
31930
- return () => matchQuery(query)?.matches ?? false;
31931
- }
31932
- function getServerSnapshot() {
31933
- return false;
31934
- }
31935
- function useIsMobile() {
31936
- return useSyncExternalStore(subscribeQuery(MOBILE_QUERY), getSnapshot(MOBILE_QUERY), getServerSnapshot);
31937
- }
31938
- /**
31939
- * True when the viewport is in the medium (`md`) Tailwind range —
31940
- * 768px ≤ width < 1024px. Use to drive layouts that should pack denser
31941
- * than full-desktop but more legibly than mobile (e.g. icons-only
31942
- * sidebar rail, narrower stat tiles).
31943
- */
31944
- function useIsMidWidth() {
31945
- return useSyncExternalStore(subscribeQuery(MID_QUERY), getSnapshot(MID_QUERY), getServerSnapshot);
31946
- }
31947
- //#endregion
31948
- //#region src/primitives/bottom-sheet.tsx
31949
- function BottomSheet({ open, onClose, title, children, className }) {
31950
- useEffect(() => {
31951
- if (!open) return;
31952
- const handleKeyDown = (e) => {
31953
- if (e.key === "Escape") onClose();
31954
- };
31955
- document.addEventListener("keydown", handleKeyDown);
31956
- document.body.style.overflow = "hidden";
31957
- return () => {
31958
- document.removeEventListener("keydown", handleKeyDown);
31959
- document.body.style.overflow = "";
31960
- };
31961
- }, [open, onClose]);
31962
- return /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("div", {
31963
- className: cn("fixed inset-0 z-40 bg-black/50 transition-opacity duration-200", open ? "opacity-100" : "pointer-events-none opacity-0"),
31964
- onClick: onClose,
31965
- "aria-hidden": "true"
31966
- }), /* @__PURE__ */ jsxs("div", {
31967
- role: "dialog",
31968
- "aria-modal": "true",
31969
- className: cn("fixed inset-x-0 bottom-0 z-50 flex flex-col bg-background-elevated border-t border-border rounded-t-xl shadow-2xl transition-transform duration-200 ease-out pb-[env(safe-area-inset-bottom)]", "max-h-[80dvh]", open ? "translate-y-0" : "translate-y-full", className),
31970
- children: [
31971
- /* @__PURE__ */ jsx("div", {
31972
- className: "flex justify-center pt-2 pb-1",
31973
- children: /* @__PURE__ */ jsx("div", { className: "h-1 w-8 rounded-full bg-foreground-subtle/30" })
31974
- }),
31975
- title && /* @__PURE__ */ jsxs("div", {
31976
- className: "flex items-center justify-between px-4 pb-2",
31977
- children: [/* @__PURE__ */ jsx("span", {
31978
- className: "text-sm font-medium text-foreground",
31979
- children: title
31980
- }), /* @__PURE__ */ jsx("button", {
31981
- onClick: onClose,
31982
- className: "p-1 rounded-md hover:bg-surface-hover text-foreground-muted transition-colors",
31983
- children: /* @__PURE__ */ jsx(X, { className: "h-4 w-4" })
31984
- })]
31985
- }),
31986
- /* @__PURE__ */ jsx("div", {
31987
- className: "flex-1 overflow-y-auto px-4 pb-4",
31988
- children
31989
- })
31990
- ]
31991
- })] });
31992
- }
31993
- //#endregion
31994
- //#region src/primitives/popover.tsx
31995
- var PopoverContext = createContext(null);
31996
- function usePopoverContext() {
31997
- const ctx = useContext(PopoverContext);
31998
- if (!ctx) throw new Error("Popover compound components must be used within <Popover>");
31999
- return ctx;
32000
- }
32001
- function Popover({ children, open: controlledOpen, onOpenChange }) {
32002
- const [uncontrolledOpen, setUncontrolledOpen] = useState(false);
32003
- const open = controlledOpen ?? uncontrolledOpen;
32004
- const triggerId = useId();
32005
- const contentId = useId();
32006
- const triggerRef = useRef(null);
32007
- const setOpen = useCallback((next) => {
32008
- onOpenChange?.(next);
32009
- if (controlledOpen === void 0) setUncontrolledOpen(next);
32010
- }, [controlledOpen, onOpenChange]);
32011
- return /* @__PURE__ */ jsx(PopoverContext.Provider, {
32012
- value: {
32013
- open,
32014
- setOpen,
32015
- triggerId,
32016
- contentId,
32017
- triggerRef
32018
- },
32019
- children: /* @__PURE__ */ jsx("div", {
32020
- className: "relative inline-block",
32021
- children
32022
- })
32023
- });
32024
- }
32025
- function PopoverTrigger({ children, ...props }) {
32026
- const { open, setOpen, triggerId, contentId, triggerRef } = usePopoverContext();
32027
- return /* @__PURE__ */ jsx("button", {
32028
- type: "button",
32029
- ref: triggerRef,
32030
- id: triggerId,
32031
- "aria-haspopup": "dialog",
32032
- "aria-expanded": open,
32033
- "aria-controls": open ? contentId : void 0,
32034
- onClick: () => setOpen(!open),
32035
- ...props,
32036
- children
32037
- });
32038
- }
32039
- function PopoverContent({ className, children, align = "start", offset = 4, ...props }) {
32040
- const { open, setOpen, contentId, triggerId, triggerRef } = usePopoverContext();
32041
- const isMobile = useIsMobile();
32042
- const ref = useRef(null);
32043
- const [coords, setCoords] = useState(null);
32044
- useLayoutEffect(() => {
32045
- if (!open || isMobile) {
32046
- setCoords(null);
32047
- return;
32048
- }
32049
- const compute = () => {
32050
- const trigger = triggerRef.current;
32051
- if (!trigger) return;
32052
- const rect = trigger.getBoundingClientRect();
32053
- const left = align === "end" ? rect.right : rect.left;
32054
- setCoords({
32055
- top: rect.bottom + offset,
32056
- left,
32057
- minWidth: rect.width
32058
- });
32059
- };
32060
- compute();
32061
- window.addEventListener("resize", compute);
32062
- window.addEventListener("scroll", compute, true);
32063
- return () => {
32064
- window.removeEventListener("resize", compute);
32065
- window.removeEventListener("scroll", compute, true);
32066
- };
32067
- }, [
32068
- open,
32069
- isMobile,
32070
- align,
32071
- offset,
32072
- triggerRef
32073
- ]);
32074
- useEffect(() => {
32075
- if (!open || isMobile) return;
32076
- const handler = (e) => {
32077
- const el = ref.current;
32078
- const trigger = triggerRef.current;
32079
- if (el && !el.contains(e.target) && !trigger?.contains(e.target)) setOpen(false);
32080
- };
32081
- const escHandler = (e) => {
32082
- if (e.key === "Escape") setOpen(false);
32083
- };
32084
- document.addEventListener("mousedown", handler);
32085
- document.addEventListener("keydown", escHandler);
32086
- return () => {
32087
- document.removeEventListener("mousedown", handler);
32088
- document.removeEventListener("keydown", escHandler);
32089
- };
32090
- }, [
32091
- open,
32092
- setOpen,
32093
- triggerRef,
32094
- isMobile
32095
- ]);
32096
- if (!open) return null;
32097
- if (isMobile) return /* @__PURE__ */ jsx(BottomSheet, {
32098
- open,
32099
- onClose: () => setOpen(false),
32100
- children
32101
- });
32102
- if (!coords || typeof document === "undefined") return null;
32103
- return createPortal(/* @__PURE__ */ jsx("div", {
32104
- ref,
32105
- id: contentId,
32106
- role: "dialog",
32107
- "aria-labelledby": triggerId,
32108
- style: {
32109
- position: "fixed",
32110
- top: coords.top,
32111
- ...align === "end" ? { right: window.innerWidth - coords.left } : { left: coords.left },
32112
- minWidth: coords.minWidth
32113
- },
32114
- className: cn("z-50 bg-background-elevated border border-border rounded-lg shadow-lg p-3", className),
32115
- ...props,
32116
- children
32117
- }), document.body);
32118
- }
32119
- //#endregion
32120
30758
  //#region src/primitives/tabs.tsx
32121
30759
  var TabsContext = createContext(null);
32122
30760
  function useTabsContext() {
@@ -52611,7 +51249,7 @@ function effectiveType(device, containerChildren) {
52611
51249
  */
52612
51250
  function effectiveIconDevice(device, containerChildren) {
52613
51251
  if (device.type !== DeviceType.Container) return device;
52614
- if (device.display?.icon !== void 0 && resolveDisplayIcon(device.display.icon) !== void 0) return device;
51252
+ if (device.display?.icon !== void 0 && canonicalIconKey(device.display.icon) !== void 0) return device;
52615
51253
  const children = containerChildren ?? [];
52616
51254
  if (children.length === 0) return device;
52617
51255
  const primary = resolveContainerPrimary(children, device.linkDeviceId, device.primaryChildEntityId);
@@ -53423,6 +52061,8 @@ function ChildRow$1({ trpc, child, onNavigate, parentName }) {
53423
52061
  const enabled = !child.disabled;
53424
52062
  const showSwitch = enabled && maySupportSwitch(child);
53425
52063
  const showMotionTrigger = enabled && hasMotionTriggerFeature(child);
52064
+ const roleDefaults = useRoleDisplayDefaults();
52065
+ useIconGlyphsVersion();
53426
52066
  return /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsxs("div", {
53427
52067
  onClick: (e) => {
53428
52068
  e.stopPropagation();
@@ -53430,7 +52070,7 @@ function ChildRow$1({ trpc, child, onNavigate, parentName }) {
53430
52070
  },
53431
52071
  className: "w-full flex items-center gap-2 px-3 py-1.5 text-left hover:bg-surface-hover transition-colors cursor-pointer",
53432
52072
  children: [
53433
- /* @__PURE__ */ jsx(deviceLeadIcon(child, useRoleDisplayDefaults()), { className: "h-3 w-3 text-foreground-subtle flex-shrink-0" }),
52073
+ /* @__PURE__ */ jsx(deviceLeadIcon(child, roleDefaults), { className: "h-3 w-3 text-foreground-subtle flex-shrink-0" }),
53434
52074
  /* @__PURE__ */ jsx("span", {
53435
52075
  className: "text-[10.5px] text-foreground flex-1 truncate",
53436
52076
  children: childListName(child, parentName)
@@ -53811,6 +52451,7 @@ var CHEVRON_SLOT_CLASS = {
53811
52451
  function DeviceItemHeader({ device, variant, flags, parent, integrationIcon, hasChildren, expanded, onToggleExpand, onNavigateToParent, stacked = false, nameOverflow = "truncate" }) {
53812
52452
  const containerChildren = useContainerChildren(device.id);
53813
52453
  const roleDefaults = useRoleDisplayDefaults();
52454
+ useIconGlyphsVersion();
53814
52455
  const Icon = deviceLeadIcon(effectiveIconDevice(device, containerChildren), roleDefaults);
53815
52456
  const slotClass = stacked ? CHEVRON_SLOT_CLASS.stacked : CHEVRON_SLOT_CLASS.horizontal;
53816
52457
  const lineClass = nameOverflow === "scroll" ? NAME_TEXT_CLASS : "truncate";
@@ -63209,12 +61850,12 @@ function mirror(input) {
63209
61850
  * Render inside `<Suspense>` at all call sites. */
63210
61851
  var MaskShapeCanvas = lazy(() => import("./MaskShapeCanvas-DI4BY7W2.js").then((m) => ({ default: m.MaskShapeCanvas })));
63211
61852
  /** Lazy-wrapped `MotionZonesSettings` — code-split off the main bundle. */
63212
- var MotionZonesSettings = lazy(() => import("./MotionZonesSettings-DHDfnZyU.js").then((m) => ({ default: m.MotionZonesSettings })));
61853
+ var MotionZonesSettings = lazy(() => import("./MotionZonesSettings-CiYjd-yl.js").then((m) => ({ default: m.MotionZonesSettings })));
63213
61854
  /** Lazy-wrapped `SceneMonitorEditor` — code-split off the main bundle for the
63214
61855
  * same reason: it mounts `MaskShapeCanvas`, which chains react-konva. Render
63215
61856
  * inside `<Suspense>`; the admin-ui `/scenes` dialog is its only caller. */
63216
- var SceneMonitorEditor = lazy(() => import("./SceneMonitorEditor-vfWTm6qv.js").then((m) => ({ default: m.SceneMonitorEditor })));
61857
+ var SceneMonitorEditor = lazy(() => import("./SceneMonitorEditor-J4Ix_0tu.js").then((m) => ({ default: m.SceneMonitorEditor })));
63217
61858
  /** Lazy-wrapped `PrivacyMaskSettings` — code-split off the main bundle. */
63218
- var PrivacyMaskSettings = lazy(() => import("./PrivacyMaskSettings-DMkchqO1.js").then((m) => ({ default: m.PrivacyMaskSettings })));
61859
+ var PrivacyMaskSettings = lazy(() => import("./PrivacyMaskSettings-BmRdUrPp.js").then((m) => ({ default: m.PrivacyMaskSettings })));
63219
61860
  //#endregion
63220
- export { AddProviderEntryDialog, AddonGlobalSettingsForm, AdminLinkQuickAction, AgentStepEditor, AlarmHeroCard, AlarmInlineControl as AlarmPanelInlineControl, AppShell, ArcKnob, AudioClassificationList, AudioLevelWaveform, AudioWaveform, AutomationHeroCard, AutomationInlineControl, AutotrackSection, BTN_COMPACT, BTN_COMPACT_DANGER, BTN_COMPACT_PRIMARY, BTN_COMPACT_WARNING, BackToStepsButton, Badge, BatteryBadge, BottomSheet, Breadcrumb, BrightnessPanel, Button, ButtonControl, ButtonHeroCard, CARD_MODE_MIN_COLUMNS, CENTER, CHIP_ACTIVE, CHIP_BASE, CHIP_INACTIVE, CLASS_COLORS, COLUMN_BREAKPOINT_CLASS, COLUMN_PRIORITY, COMMIT_DEDUPE_TOLERANCE_MS, COMMIT_DEDUPE_WINDOW_MS, CONTROL_CAP_NAMES, CONTROL_FILLS, CameraStreamPlayer, Card, Checkbox, ChildSectionAccordion, ClimatePanel, CodeBlock, CollapsibleCard, ConfigFormBuilder, FormField as ConfigFormField, ConfigNotificationTargetMultiSelectFieldView, ConfigNotificationTargetSelectFieldView, ConfigSchemaField, ConfirmActionButton, ConfirmDialogProvider, ConsumablesPanel, ContainerChildrenProvider, ContainerPrimaryHero, ControlColumn, ControlHeroCard, ControlInlineControl, ControlPanel, CopyButton, CoverHeroCard, CoverInlineControl, CoverPanel, CustomFieldRenderersProvider, DEFAULT_COLOR, DEFAULT_PAGINATION_LABELS, DEVICE_COLUMNS, DEVICE_EXPORT_PAGE_SIZE_KEY, DEVICE_LIST_PAGE_SIZE_KEY, DEVICE_LIST_PAGE_SIZE_OPTIONS, DEVICE_PICKER_GROUP_STORAGE_KEY, DEVICE_ROLE_META, DEVICE_TYPE_CONTROL, DEVICE_TYPE_META, DISPLAY_ICON_REGISTRY, DataTable, DataTableFilterBar, DataTablePager, DetectionCanvas, DetectionOverlay, DetectionResultTree, DevShell, DeviceActivityPanel, DeviceBatchToolbar, DeviceCard, DeviceContextProvider, DeviceExportPanel, DeviceExportSetup, DeviceFilterBar, DeviceGrid, DeviceItem, DeviceList, DeviceMultiSelectField, DevicePicker, DeviceQuickDetailProvider, DeviceSelectField, DeviceSelectorPicker, DeviceStepMatrix, DevicesFailedLine, DevicesLoadingLine, DevicesWidenWarning, Dialog, DialogBody, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, DiscoveryPanel, DoorbellRecentPanel, Dropdown, DropdownContent, DropdownItem, DropdownTrigger, DummyHeroCard, DummyInline, EMPTY_DATA_TABLE_FILTER, EVENT_KIND_ICONS, EmptyState, EndpointResultsCard, EndpointTestCard, ErrorBox, EventKindGlyph, EventStream, ExtensionsPanel, FILL, FLEET_LIST_GC_TIME_MS, FLEET_LIST_QUERY_KEY, FLEET_LIST_STALE_TIME_MS, FanHeroCard, FanInlineControl, FanPanel, FilterBar, FloatingEventStream, FloatingLogStream, FloatingPanel, FormField$1 as FormField, GRID_GAP, GRID_PAIRED, GRID_QUICK_STATS, GateBadge, GateControl, GripTrack, GroupedModelSelector, HOST_WIDGETS, HUB_SESSION_RUN_MS, HlsVideo, HoverZoomImage, HubSessionTestCard, HumidifierHeroCard, HumidifierInlineControl, INPUT_COMPACT, INPUT_SHELL, IconAction, IconButton, IconPicker, ImageHeroCard, ImageInlineControl, ImageSelector, InferenceConfigSelector, Input, ItemFormDialog, KebabMenu, KeyValueList, LIST_ROW, Label, LawnMowerHeroCard, LawnMowerInlineControl, LayeredSettingsForm, LightHeroCard, LightInlineControl, LockHeroCard, LockInlineControl, LockPanel, LogStream, LoginForm, MEDIA_GRID, MODE_COLOR, MaskShapeCanvas, MediaCard, MediaGrid, MediaPlayerHeroCard, MediaPlayerInlineControl, MediaPlayerPanel, MobileDrawer, ModelPicker, MotionZonesSettings, NAVIGATION_DRIVE_INTERVAL_MS, NODE_COLOR_IDS, NatResultCard, NavigationPanel, NetworkLinkBadge, NodeMultiSelectField, NodePicker, NodeSelectField, NotificationTargetSelectField, NotificationTargetsField, OPTION_SELECT_SEARCH_MIN_OPTIONS, OfflineBadge, OptionSelect, PAGE_SIZE_ALL, PHASE_CONFIG, PICKER_CHIP_LIMIT, PICKER_DEFAULT_GROUP_BY, PICKER_GROUP_BY_MODES, PICKER_GROUP_COLLAPSE_AT, PICKER_NONE_KEY, PICKER_NOUN_PLURAL, PICKER_NO_FILTERS, PICKER_PAGE_SIZE, PICKER_SEARCH_DEBOUNCE_MS, PICKER_WINDOW, PRIORITY, PTZOverlay, PageHeader, PageShell, PageSizeSelect, Pagination, PasswordInput, PhaseIcon, PipelineBuilder, PipelineRuntimeSelector, PipelineStep, PlaceholderChipField, PlayerOverlaysProvider, Popover, PopoverContent, PopoverRowAction, PopoverTrigger, PrimaryChildPicker, PrivacyMaskSettings, ProviderBadge, ProviderEntryPills, PtzPanel, QrCode, RECONNECT_POLICY, RECORDED_PLAYBACK_MODES, RIGHT, ROI_AREA_WARN_FRACTION, ROLE_DESCRIPTOR, ROOT_DETECTOR_STEP_ID, RadialGauge, RecordedPlaybackProvider, RecordingPanel, ResponseLog, RetrainReviewBadge, RoleDisplayDefaultsFromServer, RoleDisplayDefaultsProvider, RoleNodePill, RootModelSourceControl, RootSuppliedModelNote, RunReport, SCENE_CAPTURE_VARIANTS, SECRET_MASK_PLACEHOLDER, SECRET_REVEAL_MS, SECTION_BODY, SECTION_CARD, SECTION_HEADER, SETTING_ROW, SETTING_ROW_LABEL, SETTING_ROW_STACK_BREAKPOINT, SETTING_ROW_VALUE, SETTING_ROW_VALUE_TEXT, SNAPSHOT_MEDIA_PATH, SPLIT_PANEL_OUTER, SPLIT_PANEL_SIDE, STACK_GAP, STATE_COLOR, STEP_DOCK_WIDTH_PX, SceneMonitorEditor, ScopePicker, ScriptHeroCard, ScriptInlineControl, ScrollArea, SecretFieldControl, SecretRevealProvider, SectionCard, SectionToolbar, SectionedPage, SegmentedChoice, Select, SelectedChip, SemanticBadge, SendFrameToTrainingButton, SensorHeroCard, SensorInlineControl, SensorValueAtom, Separator, SettingRow, Sidebar, SidebarItem, Skeleton, SlideToggle, SnapshotButton, SortHeaderButton, StableTabPanel, StatCard, StateValuesStream, StatusBadge, StepDetailDock, StepInspectorPanel, StepModelRow, StepTimings, Stepper, StreamBrokerSelector, StreamDebugOverlay, StreamPanel, Switch, SwitchHeroCard, SwitchInlineControl, SwitchPanel, SystemProvider, TABLE_SCROLL_MAX_H, 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, TrainingBaseModelPicker, TrainingCollectionPicker, UnitPicker, VacuumHeroCard, VacuumInlineControl, ValueReadout, ValveHeroCard, ValveInlineControl, VersionBadge, VodPlaybackProvider, WaterHeaterHeroCard, WaterHeaterInlineControl, WeatherHeroCard, WeatherInlineControl, WidgetMetricCard, WidgetPanel, WidgetRegistryProvider, WidgetSlot, ZoneEditingProvider, MicOff as a, acceleratorLabel, acceleratorShortLabel, agentColumnKey, allDeviceTypeFilterOptions, applyFleetQueryDefaults, applyPickerFilters, ariaSortForColumn, assignNodeColorId, badgeFor, bindsToModel, buildColorByNodeId, buildPeerConnectionConfig, buildStepTreeFromSchema, EyeOff as c, catalogHasDraft, childEntityId, childListName, chipOverflow, classifyAddressScope, classifyCapability, classifySessionVerdict, clearPickerGroup, clusterRootModelIds, cn, colorIdForNode, columnsForContext, compareSrflxMappings, computePageButtons, containerChildToRef, countableDevices, coverHighlight, coverageLine, createSharedContext, createTheme, cursorFractionFor, darkColors, dataTableFacetGroups, dataTableFacets, defaultOfField, defaultSelectClusterRoots, defaultSingleClusterRoot, defaultTheme, deriveDeviceKind, deriveWebrtcDebugStats, describeDeviceSelector, deviceIntegrationResolver, deviceListStateOf, deviceMatchesFilter, deviceOptionLabel, deviceRoleMeta, deviceRoleMetaOf, deviceTypeLabel, deviceTypeMeta, deviceTypeMetaOf, devicesToOptions, dockBox, draftFromQuery, effectivePageSize, emptyDevicesWidens, emptySessionRun, ensureMfHostInit, eventKindLabel, filterDataTableRows, filterDeviceOptions, filterOptions as filterOptionSelectOptions, filterPickerDevices, finalizeSessionRun, findTimezone, flattenPickerGrouping, flattenPickerRows, fleetViewOf, formatControlDateTime, formatLastSeen, formatNumeric, formatSettingValue, freezeVerdict, fuzzyMatch, getClassColor, getPhaseVisual, groupAgentColumns, groupChildrenByLayout, groupPickerDevices, groupPickerDevicesBy, hardwareLabel, hubOrigin, hubPath, hubUrl, hubWsUrl, humanDuration, humidifierTint, Mic as i, initialScrubState, insertAtSelection, isAbsentProvider, isDataTableFilterActive, isFieldVisible, isGroupExpanded, isKeychainFieldValue, isValueField, Camera as l, lawnMowerActivityMeta, lightColors, loadRemoteBundle, makeScrubBridge, mapRootDetectorPlacements, metadataEntries, metadataString, mirror, mountAddonPage, mountPath, Square as n, nextGridPosition, nextReconnectAction, nextSort, nextSortDirection, nextTableSort, nodeColorClass, nodeSoftBgClass, nodeTextColorClass, normalizeForSearch, ImageOff as o, offListSelections, openTopLayer, optionSearchText as optionSelectSearchText, orphanDeviceLabel, overrideEntityIdFromLink, pageRows, pageSizeLabel, paginateRows, parentDetailOf, parseIceCandidate, parsePickerGroupBy, parseRecordedServerMessage, partitionSelected as partitionOptionSelectSelected, partitionSuggested, pickerFacetFilterShown, pickerFacetKey, pickerFacetOptions, pickerFiltersActive, pickerGroupKey, pickerHiddenSelectedCount, pickerLocationKey, pickerQueryTokens, pickerRowFacts, pickerSearchText, pickerZoneFilterSuspended, pinnedStreamChoices, providerIcons, RotateCcw as r, readStoredGroupBy, reduceSessionRun, resetHubMountForTests, resetPickerFilters, resolveContainerPrimary, resolveControlAlign, resolveDeviceControl, resolveDeviceIntegration, resolveDisplayIcon, resolveEffectiveDefaultModel, resolveEffectiveStepModel, resolveEventKindIcon, resolveSearchable as resolveOptionSelectSearchable, resolveParentNames, resolvePrimaryChild, resolveSelectedDevices, resolveSensorDisplay, resolveStepDefaultModel, resolveTableLayout, retrainReviewBadgeLook, roiTooLarge, rootSourceState, routerBasename, Grid2x2 as s, sameLocationSuggestions, scrubReducer, searchSteps, secretSubmitValue, selectPickerGroup, selectedDeviceOptions, serializeRecordedCommand, settingsModelIdFor, shouldCommit, shouldEmit, shouldShowAddNewFooter, shouldShowUseQueryRow, shouldUseSingleNode, showsNoCamerasHint, sortRows, sortRowsByColumn, statusIcons, statusLine, stepFieldDomId, stepHasModelForFormat, stepLocalFields, stepModelOptions, stripParentNamePrefix, summarizeHubCandidates, Trash2 as t, tabForSelector, tankAlert, themeToCss, toStationaryOverlayBox, toggleDataTableFacet, toggleDataTableGroupFacet, togglePickerDevice, togglePickerKey, trainingRefusalText, trpc, typeLabel, createLucideIcon as u, useAccessoriesGetStatus, useAccessoriesSetChildHidden, useAddonPagesListPages, useAddonSettingsGetDeviceSettings, useAddonSettingsGetGlobalSettings, useAddonSettingsGetIntegrationSettings, useAddonSettingsUpdateDeviceSettings, useAddonSettingsUpdateGlobalSettings, useAddonWidgetsListWidgets, useAddonsApplyAutoUpdateToAll, useAddonsCancelJob, useAddonsCustom, useAddonsForceRefresh, useAddonsGetAddonAutoUpdate, useAddonsGetAutoUpdateSettings, useAddonsGetJob, useAddonsGetLastRestart, useAddonsGetLogs, useAddonsGetVersions, useAddonsInstallFromWorkspace, useAddonsInstallPackage, useAddonsIsWorkspaceAvailable, useAddonsList, useAddonsListCapabilityProviders, useAddonsListFrameworkPackages, useAddonsListInstallations, useAddonsListJobs, useAddonsListPackages, useAddonsListUpdates, useAddonsListWorkspacePackages, useAddonsOnAddonLogs, useAddonsReloadPackages, useAddonsRestartAddon, useAddonsRestartServer, useAddonsRetryLoad, useAddonsRollbackPackage, useAddonsSearchAvailable, useAddonsSetAddonAutoUpdate, useAddonsSetAutoUpdateSettings, useAddonsSetCapabilityProviderEnabled, useAddonsStartJob, useAddonsUninstallPackage, useAddonsUpdatePackage, useAirQualitySensorGetStatus, useAlarmPanelArm, useAlarmPanelDisarm, useAlarmPanelGetStatus, useAlarmPanelTrigger, useAlert, useAlertsDismiss, useAlertsEmit, useAlertsGetUnreadCount, useAlertsList, useAlertsMarkAllRead, useAlertsMarkRead, useAlertsUpdate, useAllWidgets, useAmbientLightSensorGetStatus, useAudioAnalysisApplyDeviceSettingsPatch, useAudioAnalysisGetDeviceLiveContribution, useAudioAnalysisGetDeviceSettingsContribution, useAudioAnalysisResolveDeviceSettings, useAudioAnalyzerAnalyseChunk, useAudioAnalyzerAttachDevice, useAudioAnalyzerClassify, useAudioAnalyzerDetachDevice, useAudioAnalyzerDispose, useAudioAnalyzerIsReady, useAudioAnalyzerReprobeAudioEngine, useAudioCodecCanHandle, useAudioCodecCloseSession, useAudioCodecCreateDecodeSession, useAudioCodecCreateEncodeSession, useAudioCodecFlushEncode, useAudioCodecListActiveSessions, useAudioCodecListSupportedCodecs, useAudioCodecPullEncoded, useAudioCodecPullPcm, useAudioCodecPushEncodedFrame, useAudioCodecPushPcm, useAudioMetricsGetCurrentSnapshot, useAudioMetricsGetHistory, useAutomationControlDisable, useAutomationControlEnable, useAutomationControlGetStatus, useAutomationControlTrigger, useBackupCancel, useBackupCheckBackupKey, useBackupDelete, useBackupDeleteSchedule, useBackupDisableEncryption, useBackupGetEncryption, useBackupGetEntries, useBackupList, useBackupListArchives, useBackupListDestinations, useBackupListLocations, useBackupListRuns, useBackupListSchedules, useBackupPreviewSchedule, useBackupRestore, useBackupSetupEncryption, useBackupTrigger, useBackupUpsertDestinationPolicy, useBackupUpsertSchedule, useBatteryGetStatus, useBatteryWakeForStream, useBinaryGetStatus, useBrightnessGetStatus, useBrightnessSetBrightness, useBrokerAdd, useBrokerGet, useBrokerGetBrokerConfig, useBrokerGetSettings, useBrokerGetSettingsSchema, useBrokerGetState, useBrokerGetStatus, useBrokerList, useBrokerListProviders, useBrokerPublish, useBrokerRemove, useBrokerSetSettings, useBrokerSubscribe, useBrokerTestConnection, useBrokerTestSettings, useBrokerUnsubscribe, useButtonPress, useCalendarsGetPreferences, useCalendarsListCalendars, useCalendarsListEvents, useCalendarsSetCalendarPreference, useCameraCredentialsGetCredentials, useCameraCredentialsGetStatus, useCameraGridLayoutApplyDeviceSettingsPatch, useCameraGridLayoutGetDeviceLiveContribution, useCameraGridLayoutGetDeviceSettingsContribution, useCameraGridLayoutGetLayout, useCameraGridLayoutSaveLayout, useCameraPipelineConfigApplyDeviceSettingsPatch, useCameraPipelineConfigGetDeviceLiveContribution, useCameraPipelineConfigGetDeviceSettingsContribution, useCameraStreamsGetBrokerStreams, useCameraStreamsGetCameraStreams, useCameraStreamsGetProfileRtspEntries, useCameraStreamsGetRtspEntries, useCameraStreamsPickStream, useCapabilityPresence, useCarbonMonoxideGetStatus, useClimateControlGetStatus, useClimateControlSetFanMode, useClimateControlSetMode, useClimateControlSetPreset, useClimateControlSetSwingHorizontal, useClimateControlSetSwingVertical, useClimateControlSetTarget, useClimateControlSetTargetHumidity, useClimateControlSetTargetRange, useClusterNodes, useClusterTopology, useColorGetStatus, useColorSetColor, useConfirm, useConnectionTestDescribeTest, useConnectionTestTestSettings, useConnectivityGetStatus, useConsumablesGetStatus, useConsumablesReset, useContactGetStatus, useContainerChildren, useControlGetStatus, useControlSetValue, useCoreBlocksCompile, useCoreBlocksCreate, useCoreBlocksCreateComposition, useCoreBlocksDelete, useCoreBlocksGet, useCoreBlocksGetBlockSettings, useCoreBlocksGetComposition, useCoreBlocksGetCustomization, useCoreBlocksGetTypeDefs, useCoreBlocksList, useCoreBlocksListComposableCaps, useCoreBlocksListCompositions, useCoreBlocksRestart, useCoreBlocksSetEnabled, useCoreBlocksUpdate, useCoreBlocksUpdateBlockSettings, useCoreBlocksUpdateComposition, useCoreBlocksValidateComposition, useCoverClose, useCoverGetStatus, useCoverOpen, useCoverSetPosition, useCoverSetTiltPosition, useCoverStop, useCustomFieldRenderer, useDataTableFilter, useDayNightGetOptions, useDayNightGetStatus, useDayNightSetSettings, useDebouncedString, useDecoderGetInfo, useDecoderReprobeHwaccel, useDetectionPipelineApplyDeviceSettingsPatch, useDetectionPipelineGetDeviceLiveContribution, useDetectionPipelineGetDeviceSettingsContribution, useDevShell, useDevice, useDeviceAdminLink, useDeviceAdminLinkGetAdminLink, 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, useDeviceExtensionListCandidates, useDeviceExtensionListSlots, useDeviceExtensionListSources, useDeviceExtensionSetSlot, useDeviceId, useDeviceListPageSize, useDeviceManagerAddLocation, useDeviceManagerAdoptDevice, useDeviceManagerAdoptionAdopt, useDeviceManagerAdoptionCancelJob, useDeviceManagerAdoptionListCandidateFilters, useDeviceManagerAdoptionListCandidates, useDeviceManagerAdoptionListJobs, useDeviceManagerAdoptionRefresh, useDeviceManagerAdoptionRelease, useDeviceManagerAdoptionResync, useDeviceManagerAdoptionStartJob, useDeviceManagerAllocateDeviceId, useDeviceManagerApplyInitialMeta, useDeviceManagerCreateDevice, useDeviceManagerDisable, useDeviceManagerDiscoverAllProviders, useDeviceManagerDiscoverDevices, useDeviceManagerDiscoverProvider, useDeviceManagerDiscoveryProviders, useDeviceManagerEnable, useDeviceManagerGetAllBindings, useDeviceManagerGetBindings, useDeviceManagerGetBindingsBatch, useDeviceManagerGetChildren, useDeviceManagerGetChildrenBatch, useDeviceManagerGetConfigSchema, useDeviceManagerGetCreationSchema, useDeviceManagerGetDevice, useDeviceManagerGetDeviceAggregate, useDeviceManagerGetDeviceLiveInfoAggregate, useDeviceManagerGetDeviceSettingsAggregate, useDeviceManagerGetDeviceStatusAggregate, useDeviceManagerGetDeviceStatusAggregateBatch, useDeviceManagerGetLinkedDevices, useDeviceManagerGetLinkedDevicesBatch, useDeviceManagerGetRoleDisplayDefaults, useDeviceManagerGetSettingsSchema, useDeviceManagerGetStreamProfileMap, useDeviceManagerGetStreamSources, useDeviceManagerGetWireableFields, useDeviceManagerGetWrapperActivation, useDeviceManagerListAll, useDeviceManagerListBindableCapsForDeviceType, useDeviceManagerListDeviceIdsByCaps, useDeviceManagerListLocationDescriptions, useDeviceManagerListLocationIcons, useDeviceManagerListLocations, useDeviceManagerListPersistedByAddon, useDeviceManagerListSiteZones, useDeviceManagerListWrappersForCap, useDeviceManagerLoadConfig, useDeviceManagerLoadMeta, useDeviceManagerLoadRuntimeState, useDeviceManagerMigrateDevice, useDeviceManagerPersistConfig, useDeviceManagerProbeStreams, useDeviceManagerProviderCreationType, useDeviceManagerProviderDiscoveryParamsSchema, useDeviceManagerRegisterDevice, useDeviceManagerRemove, useDeviceManagerRemoveByIntegration, useDeviceManagerRemoveDevice, useDeviceManagerRemoveLocation, useDeviceManagerRemoveSiteZone, useDeviceManagerRenameLocation, useDeviceManagerRenameSiteZone, useDeviceManagerRunDeviceAction, useDeviceManagerSetChildLayout, useDeviceManagerSetDisabled, useDeviceManagerSetDisplay, useDeviceManagerSetIntegrationId, useDeviceManagerSetLinkDeviceId, useDeviceManagerSetLocation, useDeviceManagerSetLocationDescription, useDeviceManagerSetLocationIcon, useDeviceManagerSetLocationZone, useDeviceManagerSetMetadata, useDeviceManagerSetName, useDeviceManagerSetPrimaryChildEntityId, useDeviceManagerSetRole, useDeviceManagerSetRoleDisplayDefaults, useDeviceManagerSetSiteZone, useDeviceManagerSetStreamProfileMap, useDeviceManagerSetType, useDeviceManagerSetWrapperActive, useDeviceManagerTestCreationField, useDeviceManagerTestField, useDeviceManagerUpdateConfig, useDeviceManagerUpdateDeviceField, useDeviceManagerUpdateDeviceFieldsBatch, useDeviceNetworkLink, useDeviceOpsGetConfigEntries, useDeviceOpsGetRawState, useDeviceOpsGetSettingsSchema, useDeviceOpsGetStreamSources, useDeviceOpsRemoveDevice, useDeviceOpsRunAction, useDeviceOpsSetConfig, useDeviceProviderAdoptDiscoveredDevice, useDeviceProviderCreateDevice, useDeviceProviderDiscoverDevices, useDeviceProviderGetChildCreationSchema, useDeviceProviderGetDevices, useDeviceProviderGetDiscoveryParamsSchema, useDeviceProviderGetManualCreationType, useDeviceProviderGetStatus, useDeviceProviderReloadDevice, useDeviceProviderStart, useDeviceProviderStop, useDeviceProviderSupportsDiscovery, useDeviceProviderSupportsManualCreation, useDeviceProviderTestCreationField, useDeviceProxy, useDeviceQuickDetailOpen, useDeviceSnapshot, useDeviceSnapshotImage, useDeviceState, useDeviceStateClaimFields, useDeviceStateGetAllSnapshots, useDeviceStateGetCapSlice, useDeviceStateGetNativeCapSlice, useDeviceStateGetSnapshot, useDeviceStateListClaims, useDeviceStatePatchOwnedFields, useDeviceStateReleaseClaim, useDeviceStateSetCapSlice, useDeviceStateSlice, useDeviceStatusGetStatus, useDeviceWebrtc, useDevices, useDoorbellEvents, useDoorbellGetStatus, useEnumSensorGetStatus, useEventEmitterGetStatus, useEventInvalidation, useEventStreamLatest, useEventStreamMap, useFaceGalleryAssignFace, useFaceGalleryAssignFaces, useFaceGalleryAuditIdentitySamples, 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, useImageSettingsGetOptions, useImageSettingsGetStatus, useImageSettingsSetSettings, useIntegrationsCreate, useIntegrationsDelete, useIntegrationsGet, useIntegrationsGetAvailableTypes, useIntegrationsGetByAddonId, useIntegrationsGetSettings, useIntegrationsList, useIntegrationsSetSettings, useIntegrationsTestConnection, useIntegrationsUpdate, useIntercomEndTalkSession, useIntercomGetStatus, useIntercomHandleAnswer, useIntercomPushTalkAudio, useIntercomStartSession, useIntercomStartTalkSession, useIntercomStopSession, useIsMidWidth, useIsMobile, useItemFormUrl, useKeychainAdminAcknowledgeReset, useKeychainAdminDeleteOrphans, useKeychainAdminDownloadRecoveryKey, useKeychainAdminListAudit, useKeychainAdminListSecrets, useKeychainAdminPurgeRetiredKeys, useKeychainAdminResetKeychain, useKeychainAdminResetReport, useKeychainAdminReveal, useKeychainAdminRotateMasterKey, useKeychainAdminSetSystemSecret, useKeychainAdminStatus, useLawnMowerControlDock, useLawnMowerControlGetStatus, useLawnMowerControlPause, useLawnMowerControlStartMowing, useLiveBuffer, useLiveEvent, useLlmCancel, useLlmDeleteModel, useLlmDeleteProfile, useLlmGenerate, useLlmGenerateVision, useLlmGetDefaults, useLlmGetRuntimeStatus, useLlmGetUsage, useLlmInstallModel, useLlmListModelCatalog, useLlmListModels, useLlmListNodeModels, useLlmListProfileKinds, useLlmListProfiles, useLlmListRuntimeNodes, useLlmResolveModelRef, useLlmSetDefault, useLlmStartRuntime, useLlmStopRuntime, useLlmTestProfile, useLlmUpsertProfile, useLocalNetworkAddCustomAddress, useLocalNetworkDownloadCa, useLocalNetworkGetAddresses, useLocalNetworkGetAllowedAddresses, useLocalNetworkGetConnectionEndpoints, useLocalNetworkGetHubAddresses, useLocalNetworkGetNotificationEndpoint, useLocalNetworkGetPreferred, useLocalNetworkGetTlsStatus, useLocalNetworkGetViewerEndpoints, useLocalNetworkList, useLocalNetworkRegenerateCertificate, useLocalNetworkRemoveCustomAddress, useLocalNetworkResetAllowlistToBestMatch, useLocalNetworkRevertToGeneratedCertificate, useLocalNetworkSetAddressRole, useLocalNetworkSetAllowedAddresses, useLocalNetworkSetNotificationEndpoint, useLocalNetworkSetViewerEndpoints, useLocalNetworkUploadCertificate, 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, useMetricsProviderGetAddonStats, useMetricsProviderGetCached, useMetricsProviderGetCpuTemperature, useMetricsProviderGetCurrent, useMetricsProviderGetDiskSpace, useMetricsProviderGetGpuInfo, useMetricsProviderGetLoadSeries, useMetricsProviderGetProcessStats, useMetricsProviderListAddonInstances, useMetricsProviderListNodeProcesses, useMotionDetectionAnalyze, useMotionDetectionApplyDeviceSettingsPatch, useMotionDetectionGetDeviceLiveContribution, useMotionDetectionGetDeviceSettingsContribution, useMotionDetectionRemoveCamera, useMotionDetectionReset, useMotionGetStatus, useMotionIsDetected, useMotionTriggerGetStatus, useMotionTriggerSetMotionTrigger, useMotionZonesGetOptions, useMotionZonesGetStatus, useMotionZonesSetZone, useMqttBrokerAddBroker, useMqttBrokerGetBrokerConfig, useMqttBrokerGetStatus, useMqttBrokerListBrokers, useMqttBrokerRemoveBroker, useMqttBrokerStartEmbeddedBroker, useMqttBrokerStopEmbeddedBroker, useMqttBrokerTestConnection, useNativeObjectDetectionGetOptions, useNativeObjectDetectionGetStatus, useNativeObjectDetectionSetEnabled, useNativeObjectDetectionSetSettings, useNavigation, useNavigationGetFeatures, useNavigationGetStatus, useNavigationGoToPoint, useNavigationListActions, useNavigationMove, useNavigationPlaySound, useNavigationRunAction, useNavigationSetLightLevel, useNavigationSetLightMode, useNavigationSetLightOn, useNavigationStop, useNetworkAccessGetEndpoint, useNetworkAccessGetStatus, useNetworkAccessListEndpoints, useNetworkAccessStart, useNetworkAccessStop, useNetworkLinkGetStatus, useNetworkQualityGetAllStats, useNetworkQualityGetDeviceStats, useNetworkQualityReportClientStats, useNodesClusterAddonStatus, useNodesDeployAddon, useNodesDirectory, useNodesExecuteQuery, useNodesGetCapUsageGraph, useNodesGetNodeAddons, useNodesRenameNode, useNodesRestartAddon, useNodesRestartNode, useNodesRestartProcess, useNodesSetProcessLogLevel, useNodesShutdownNode, useNodesTopology, useNodesUndeployAddon, useNotificationOutputDeleteTarget, useNotificationOutputDiscoverTargets, useNotificationOutputGetTarget, useNotificationOutputListTargetKinds, useNotificationOutputListTargets, useNotificationOutputProbeTargetConfig, useNotificationOutputSend, useNotificationOutputSetTargetEnabled, useNotificationOutputTestTarget, useNotificationOutputUpsertTarget, useNotificationRulesActivateAlarmProfile, useNotificationRulesCancelSnooze, useNotificationRulesCreateAlarmProfile, useNotificationRulesCreateRule, useNotificationRulesCreateSequence, useNotificationRulesCreateSnooze, useNotificationRulesDeleteAlarmProfile, useNotificationRulesDeleteRule, useNotificationRulesDeleteSequence, useNotificationRulesGetAlarmConfig, useNotificationRulesGetAlarmSensors, useNotificationRulesGetClipRetentionAsks, useNotificationRulesGetConditionCatalog, useNotificationRulesGetHistory, useNotificationRulesGetRule, useNotificationRulesGetRuleLastRuns, useNotificationRulesGetSequence, useNotificationRulesGetTemplateCatalog, useNotificationRulesListDeviceMutes, useNotificationRulesListRules, useNotificationRulesListSequences, useNotificationRulesListSnoozes, useNotificationRulesPreviewStateSummary, useNotificationRulesPreviewTemplate, useNotificationRulesRenameAlarmProfile, useNotificationRulesResolveArtifactUrl, useNotificationRulesSetAlarmConfig, useNotificationRulesSetDeviceMuted, useNotificationRulesSetRuleEnabled, useNotificationRulesTestRule, useNotificationRulesUpdateRule, useNotificationRulesUpdateSequence, useNotifierCancel, useNotifierGetStatus, useNotifierSend, useNumericSensorGetStatus, useOidcConnectionsConnectionFormSchema, useOidcConnectionsCreateConnection, useOidcConnectionsDeleteConnection, useOidcConnectionsListConnections, useOidcConnectionsUpdateConnection, useOptimisticSlice, useOptionalSystem, useOptionalWidgetRegistry, useOsdGetStatus, useOsdManagerClearSlotBinding, useOsdManagerCopyDeviceConfiguration, useOsdManagerDeleteTemplate, useOsdManagerGetConditionSupport, useOsdManagerGetDeviceOsd, useOsdManagerGetSourceCatalog, useOsdManagerListTemplates, useOsdManagerPreviewSlot, useOsdManagerRenderDevice, useOsdManagerSetSlotBinding, useOsdManagerSetSlotCameraEnabled, useOsdManagerUpsertTemplate, useOsdSetOverlay, usePTZ, usePersistedPageSize, usePetFeederCallPet, usePetFeederCancelFeed, usePetFeederFeed, usePetFeederGetStatus, usePetFeederMarkFoodReplenished, usePetFeederPlaySound, usePetFeederResetDesiccant, usePetFeederSetChildLock, usePetFeederSetFeedSound, usePetFeederSetIndicatorLight, usePetFeederSetVolume, usePickerSiteZones, usePipelineAnalyticsAddRetrainFrameFromRecording, usePipelineAnalyticsAddRetrainFramesToCollection, usePipelineAnalyticsApplyDeviceSettingsPatch, usePipelineAnalyticsBackfillRetrainOrigins, usePipelineAnalyticsCancelRelocateMedia, usePipelineAnalyticsCancelStorageMigrationMove, usePipelineAnalyticsClearTrackRelation, usePipelineAnalyticsClearTracks, usePipelineAnalyticsCompleteRetrainTrack, usePipelineAnalyticsCountRelocatableMedia, usePipelineAnalyticsCountUnstampedEventMedia, usePipelineAnalyticsCreateRetrainCollection, usePipelineAnalyticsDeleteDeviceEvents, usePipelineAnalyticsDeleteRetrainCollection, usePipelineAnalyticsDeleteTracks, usePipelineAnalyticsDeselectRetrainFrame, usePipelineAnalyticsGetActiveTracks, usePipelineAnalyticsGetAudioEvents, usePipelineAnalyticsGetDeviceLiveContribution, usePipelineAnalyticsGetDeviceSettingsContribution, usePipelineAnalyticsGetEventDensity, usePipelineAnalyticsGetEventDensityBatch, usePipelineAnalyticsGetEventMedia, usePipelineAnalyticsGetEventMediaFootprintByKind, usePipelineAnalyticsGetEventStoreFootprint, usePipelineAnalyticsGetKeyEvents, usePipelineAnalyticsGetKeyEventsBatch, usePipelineAnalyticsGetMediaReclaimStatus, usePipelineAnalyticsGetMotionEvents, usePipelineAnalyticsGetObjectEmbeddingRebuildStatus, usePipelineAnalyticsGetObjectEvents, usePipelineAnalyticsGetRetrainCorpusKpi, usePipelineAnalyticsGetRetrainExportUrl, usePipelineAnalyticsGetRetrainFrameImage, usePipelineAnalyticsGetSensorEvents, usePipelineAnalyticsGetStorageMigrationMoveStatus, usePipelineAnalyticsGetTrack, usePipelineAnalyticsGetTrackMedia, usePipelineAnalyticsGetTrainingExportSummary, usePipelineAnalyticsGetTrainingExportUrl, usePipelineAnalyticsListArchivedDebugNotes, usePipelineAnalyticsListBirthDecisions, usePipelineAnalyticsListEventKinds, usePipelineAnalyticsListEventKindsBatch, usePipelineAnalyticsListEventMedia, usePipelineAnalyticsListOpsLog, usePipelineAnalyticsListRecentTracks, usePipelineAnalyticsListRelocateMediaJobs, usePipelineAnalyticsListRetrainAnnotations, usePipelineAnalyticsListRetrainAssistProfiles, usePipelineAnalyticsListRetrainCollectionFrames, usePipelineAnalyticsListRetrainCollections, usePipelineAnalyticsListRetrainCorpusPage, usePipelineAnalyticsListRetrainFrames, usePipelineAnalyticsListRetrainStaging, usePipelineAnalyticsListTrackMedia, usePipelineAnalyticsListTrackRelations, usePipelineAnalyticsListTracks, usePipelineAnalyticsOfferRetrainArchive, usePipelineAnalyticsOwnersWithMedia, usePipelineAnalyticsPauseForStorageMigration, usePipelineAnalyticsProposeRetrainAnnotations, usePipelineAnalyticsProposeRetrainAnnotationsWithLlm, usePipelineAnalyticsPruneEvents, usePipelineAnalyticsPruneEventsBefore, usePipelineAnalyticsPruneTracksBefore, usePipelineAnalyticsReadLongTermSeries, usePipelineAnalyticsRebuildObjectEmbeddings, usePipelineAnalyticsReclaimDebugMedia, usePipelineAnalyticsReconcileFromDisk, usePipelineAnalyticsRefreshStorageLocationsForMigration, usePipelineAnalyticsRelocateMedia, usePipelineAnalyticsRemoveRetrainFrameFromCollection, usePipelineAnalyticsRenameRetrainCollection, usePipelineAnalyticsResolveRetrainTrainingCorpus, usePipelineAnalyticsRestageRetrainTrack, usePipelineAnalyticsResumeForStorageMigration, usePipelineAnalyticsSaveRetrainAnnotations, usePipelineAnalyticsSearchObjectEvents, usePipelineAnalyticsSelectRetrainFrames, usePipelineAnalyticsSetRetrainFrameComplete, usePipelineAnalyticsSetTrackFlags, usePipelineAnalyticsSetTrackPurity, usePipelineAnalyticsSetTrackRelation, usePipelineAnalyticsStartStorageMigrationMove, usePipelineAnalyticsWipeAllAnalytics, usePipelineAnalyticsWipeObjectEmbeddings, usePipelineAnalyticsWriteRetrainArchive, usePipelineExecutorCacheFrameInPool, usePipelineExecutorClearDeviceOverrides, usePipelineExecutorClearModelBoundDeviceOverrides, usePipelineExecutorDeleteModel, usePipelineExecutorDownloadModel, usePipelineExecutorGetAddonModels, usePipelineExecutorGetAudioCapabilities, usePipelineExecutorGetAvailableEngines, usePipelineExecutorGetCapabilities, usePipelineExecutorGetDefaultSteps, usePipelineExecutorGetDetectionConfigSchema, usePipelineExecutorGetEffectiveTuning, usePipelineExecutorGetEngineProvisioning, usePipelineExecutorGetGlobalPipelineConfig, usePipelineExecutorGetGlobalSteps, usePipelineExecutorGetInferenceDeviceHealth, usePipelineExecutorGetOrchestratorConfigSchema, usePipelineExecutorGetReferenceAudio, usePipelineExecutorGetReferenceAudioFiles, usePipelineExecutorGetReferenceImage, usePipelineExecutorGetSchema, usePipelineExecutorGetSelectedEngine, usePipelineExecutorGetVideoPipelineSteps, usePipelineExecutorInferCached, usePipelineExecutorKillEngine, usePipelineExecutorListLoadedEngines, usePipelineExecutorListReferenceImages, usePipelineExecutorRearmInferenceDevice, usePipelineExecutorRunAudioTest, usePipelineExecutorRunPipeline, usePipelineExecutorRunPipelineBatch, usePipelineExecutorSetVideoPipelineSteps, usePipelineExecutorSpinEngine, usePipelineExecutorUncacheFrame, usePipelineExecutorValidatePipeline, usePipelineOrchestratorAbortNodeBenchmark, usePipelineOrchestratorApplyAutoTune, usePipelineOrchestratorApplyDeviceSettingsPatch, usePipelineOrchestratorAssignAudio, usePipelineOrchestratorAssignPipeline, usePipelineOrchestratorDeleteNodeBenchmarkResult, usePipelineOrchestratorGetAgentLoad, usePipelineOrchestratorGetAgentSettings, usePipelineOrchestratorGetAudioAssignment, usePipelineOrchestratorGetAudioAssignments, usePipelineOrchestratorGetAudioNodeLoad, usePipelineOrchestratorGetCameraDetectionSource, usePipelineOrchestratorGetCameraMetrics, usePipelineOrchestratorGetCameraSettings, usePipelineOrchestratorGetCameraStatus, usePipelineOrchestratorGetCameraStatuses, usePipelineOrchestratorGetCameraStepOverrides, usePipelineOrchestratorGetCameraSwitches, usePipelineOrchestratorGetCapabilityBindings, usePipelineOrchestratorGetClusterModelChoice, usePipelineOrchestratorGetDeviceLiveContribution, usePipelineOrchestratorGetDeviceSettingsContribution, usePipelineOrchestratorGetEffectiveShares, usePipelineOrchestratorGetGlobalMetrics, usePipelineOrchestratorGetIngestOwner, usePipelineOrchestratorGetNodeBenchmarkCandidates, usePipelineOrchestratorGetNodeBenchmarkPreflight, usePipelineOrchestratorGetNodeBenchmarkStatus, usePipelineOrchestratorGetNodeInferenceDevices, usePipelineOrchestratorGetPipelineAssignment, usePipelineOrchestratorGetPipelineAssignments, usePipelineOrchestratorGetPipelineDevicePin, usePipelineOrchestratorGetPlacementStats, usePipelineOrchestratorGetReconcileFromDiskStatus, usePipelineOrchestratorListAgentSettings, usePipelineOrchestratorListNodeBenchmarkResults, usePipelineOrchestratorPauseForStorageMigration, usePipelineOrchestratorPlanAutoTune, usePipelineOrchestratorRebalance, usePipelineOrchestratorReconcileFromDisk, usePipelineOrchestratorRemoveAgentSettings, usePipelineOrchestratorRequestOccupancyLook, usePipelineOrchestratorResetNodePipelineDefaults, usePipelineOrchestratorResolvePipeline, usePipelineOrchestratorResumeForStorageMigration, usePipelineOrchestratorSetAgentCapabilities, usePipelineOrchestratorSetAgentDecodeLimits, usePipelineOrchestratorSetAgentInferenceDevices, usePipelineOrchestratorSetAgentMaxCameras, usePipelineOrchestratorSetAgentReachableHost, usePipelineOrchestratorSetCameraDetectionSource, usePipelineOrchestratorSetCameraPipelineForAgent, usePipelineOrchestratorSetCameraSensors, usePipelineOrchestratorSetCameraStepOverride, usePipelineOrchestratorSetCameraStepSettings, usePipelineOrchestratorSetCameraStepToggle, usePipelineOrchestratorSetCameraSwitch, usePipelineOrchestratorSetCapabilityBinding, usePipelineOrchestratorSetLoadBalancingShares, usePipelineOrchestratorSetPipelineDevicePin, usePipelineOrchestratorSetShareSource, usePipelineOrchestratorStartNodeBenchmark, usePipelineOrchestratorSuggestShares, usePipelineOrchestratorUnassignAudio, usePipelineOrchestratorUnassignPipeline, usePipelineRunnerAbortNodeBench, usePipelineRunnerAttachCamera, usePipelineRunnerDetachCamera, usePipelineRunnerGetAllCameraMetrics, usePipelineRunnerGetCameraMetrics, usePipelineRunnerGetLocalCameras, usePipelineRunnerGetLocalLoad, usePipelineRunnerGetLocalMetrics, usePipelineRunnerGetNativeCrop, usePipelineRunnerGetNodeBenchStatus, usePipelineRunnerGetParkedTrackFrame, usePipelineRunnerParkTrackFrame, usePipelineRunnerReleaseParkedTrackFrames, usePipelineRunnerReportMotion, usePipelineRunnerRequestOccupancyBurst, usePipelineRunnerRunDetailSubtree, usePipelineRunnerRunStatelessStep, usePipelineRunnerStartNodeBench, usePlateGalleryAssignPlate, usePlateGalleryAssignPlates, usePlateGalleryCorrectPlateText, usePlateGalleryCreateVehicle, usePlateGalleryDeletePlate, usePlateGalleryDeleteVehicle, usePlateGalleryGetPlateByTrack, usePlateGalleryGetPlateMedia, usePlateGalleryListPlates, usePlateGalleryListVehicleSamples, usePlateGalleryListVehicles, usePlateGalleryRemoveVehicleSample, usePlateGalleryRenameVehicle, usePlateGallerySearchPlates, usePlateGallerySuggestPlateClusters, usePlateGalleryUnassignPlate, usePlateGalleryUnassignPlates, usePlayerOverlayLayer, usePlayerOverlayLayers, usePlayerToolbarButton, usePlayerToolbarButtons, usePowerMeterGetStatus, usePresenceGetStatus, usePressureSensorGetStatus, usePrivacyMaskGetOptions, usePrivacyMaskGetStatus, usePrivacyMaskSetAudioEnabled, usePrivacyMaskSetMask, usePrompt, usePtzAutotrackGetSettings, usePtzAutotrackGetStatus, usePtzAutotrackSetEnabled, usePtzAutotrackSetSettings, usePtzCaptureHomeHere, usePtzContinuousMove, usePtzDeletePreset, usePtzGetHomePreset, usePtzGetHomeReturn, usePtzGetOptions, usePtzGetPosition, usePtzGetPresets, usePtzGetStatus, usePtzGoHome, usePtzGoToPreset, usePtzMove, usePtzSavePreset, usePtzSetAutofocus, usePtzSetHomePreset, usePtzSetHomeReturn, usePtzStop, useRebootReboot, useRecordedPlayback, useRecordingArchiveApplyDeviceSettingsPatch, useRecordingArchiveCancelRelocateJob, useRecordingArchiveCancelStorageMigrationMove, useRecordingArchiveDeleteFootprint, useRecordingArchiveGetAvailabilityBatch, useRecordingArchiveGetDaysWithRecordingsBatch, useRecordingArchiveGetDeviceConfig, useRecordingArchiveGetDeviceLiveContribution, useRecordingArchiveGetDeviceSettingsContribution, useRecordingArchiveGetPlacement, useRecordingArchiveGetRelocateResidue, useRecordingArchiveGetStatus, useRecordingArchiveGetStorageMigrationMoveStatus, useRecordingArchiveGetStorageUsage, useRecordingArchiveListOpsLog, useRecordingArchiveListRelocateJobs, useRecordingArchiveLocateSegment, useRecordingArchivePauseForStorageMigration, useRecordingArchivePlanStorageRebalance, useRecordingArchivePruneFootage, useRecordingArchiveReadGopBytes, useRecordingArchiveReadSegmentBytes, useRecordingArchiveReadWindowBytes, useRecordingArchiveReconcileLedgerAgainstDisk, useRecordingArchiveRefreshStorageLocationsForMigration, useRecordingArchiveRelocateFootage, useRecordingArchiveRenderClip, useRecordingArchiveRenderGif, useRecordingArchiveRescanStorage, useRecordingArchiveResumeForStorageMigration, useRecordingArchiveSetDeviceConfig, useRecordingArchiveSetDevicePlacement, useRecordingArchiveStartStorageMigrationMove, useRecordingArchiveStartStorageRebalance, useRecordingExportCancelExport, useRecordingExportCreateExport, useRecordingExportDeleteExport, useRecordingExportGetDownloadUrl, useRecordingExportGetExport, useRecordingExportListExports, useRecordingExportReadExportBytes, useRecordingGetAvailability, useRecordingGetDaysWithRecordings, useRecordingGetPlayback, useRecordingGetPlaybackOptions, useRecordingListSources, useRecordingOnboardGetOptions, useRecordingOnboardGetStatus, useRecordingOnboardSetSettings, useRecordingSignalGetStatus, useRemoteComponent, useRoleDisplayDefaults, useSceneMonitorCaptureReference, useSceneMonitorCreateScene, useSceneMonitorDeleteReference, useSceneMonitorDeleteScene, useSceneMonitorGetStatus, useSceneMonitorListScenes, useSceneMonitorListScenesBatch, useSceneMonitorRecheckNow, useSceneMonitorResetScene, useSceneMonitorUpdateScene, useScriptRunnerGetStatus, useScriptRunnerRun, useScriptRunnerStop, useScrubController, useServerManagementApplyServerUpdate, useServerManagementCheckServerUpdate, useServerManagementGetServerPackageStatus, useServerManagementRestartServer, useServerManagementRollbackServerUpdate, useSettingsStoreAggregate, useSettingsStoreCount, useSettingsStoreDeclareCollection, useSettingsStoreDelete, useSettingsStoreDeleteWhere, useSettingsStoreGet, useSettingsStoreHistogram, useSettingsStoreInsert, useSettingsStoreInsertMany, useSettingsStoreIsEmpty, useSettingsStoreQuery, useSettingsStoreSet, useSettingsStoreTransact, useSettingsStoreUpdate, useSettingsStoreUpdateWhere, useSettingsStoreUpsert, useSettingsStoreUpsertMany, useSmokeGetStatus, useSnapshotApplyDeviceSettingsPatch, useSnapshotGetDebugState, useSnapshotGetDeviceLiveContribution, useSnapshotGetDeviceSettingsContribution, useSnapshotGetSnapshot, useSnapshotGetSnapshotLinks, useSnapshotGetSnapshotOverview, useSnapshotGetStatus, useSnapshotInvalidateCache, useStationaryOverlay, useStorageAbortUpload, useStorageBeginDownload, useStorageBeginUpload, useStorageDelete, useStorageDeleteLocation, useStorageEndDownload, useStorageExists, useStorageFinalizeUpload, useStorageGetAvailableSpace, useStorageList, useStorageListDrainProgress, useStorageListLocationDeclarations, useStorageListLocations, useStorageListProviders, useStorageMigrationCancel, useStorageMigrationCleanupCancel, useStorageMigrationCleanupStart, useStorageMigrationCleanupStatus, useStorageMigrationDrain, useStorageMigrationHistory, useStorageMigrationMovers, useStorageMigrationPlan, useStorageMigrationResidue, useStorageMigrationStart, useStorageMigrationStatus, useStorageRead, useStorageReadChunk, useStorageResolve, useStorageTestConfig, useStorageTestLocation, useStorageUpsertLocation, useStorageWrite, useStorageWriteChunk, useStoredGroupBy, useStreamBrokerAcquireEgressTranscode, useStreamBrokerApplyDeviceSettingsPatch, useStreamBrokerAssignProfile, useStreamBrokerFetchEventMedia, useStreamBrokerForgetDeviceHardware, useStreamBrokerGetAllRtspEntries, useStreamBrokerGetBrokerStats, useStreamBrokerGetDeviceAudioMute, useStreamBrokerGetDeviceLiveContribution, useStreamBrokerGetDeviceSettingsContribution, useStreamBrokerGetLiveViewerCounts, useStreamBrokerGetPreBufferInfo, useStreamBrokerGetRtspEntry, useStreamBrokerGetRtspPort, useStreamBrokerGetStreamUrl, useStreamBrokerGetStreamWithCodec, useStreamBrokerIsRtspEnabled, useStreamBrokerKillClient, useStreamBrokerListAllCameraStreams, useStreamBrokerListAllProfileSlots, useStreamBrokerListClients, useStreamBrokerProbeStream, useStreamBrokerProduceEventMedia, useStreamBrokerPublishCameraStream, useStreamBrokerPullAudioChunks, useStreamBrokerRegenerateRtspToken, useStreamBrokerReleaseEgressTranscode, useStreamBrokerReleaseStreamWithCodec, useStreamBrokerRenderPreBufferClip, useStreamBrokerReportStreamSignal, useStreamBrokerRestartProfile, useStreamBrokerRetractCameraStream, useStreamBrokerSetDeviceAudioMute, useStreamBrokerSetPreBufferDuration, useStreamBrokerSetRtspEnabled, useStreamBrokerSubscribeAudioChunks, useStreamBrokerUnassignProfile, useStreamBrokerUnsubscribeAudioChunks, useStreamCatalogGetCatalog, useStreamParamsGetConfigSchema, useStreamParamsGetOptions, useStreamParamsGetStatus, useStreamParamsSetProfile, useStreamSignalsListSignals, useSwitchGetStatus, useSwitchSetState, useSystem, useSystemDetectSiteLocation, useSystemFeatureFlags, useSystemForceRetentionCleanup, useSystemGetFailureContributions, useSystemGetLoadContributions, useSystemGetLoggingSettings, useSystemGetRequestCensus, useSystemGetRetentionConfig, useSystemGetSiteLocation, useSystemHealth, useSystemInfo, useSystemMutation, useSystemNetworkAddresses, useSystemQuery, useSystemSetLoggingSettings, useSystemSetRetentionConfig, useSystemSetSiteLocation, useTamperGetStatus, useTemperatureSensorGetStatus, useTerminalSessionAdoptLegacyMonitor, useTerminalSessionClose, useTerminalSessionCreateInstance, useTerminalSessionDeleteInstance, useTerminalSessionListInstances, useTerminalSessionListLegacyCameras, useTerminalSessionListProfiles, useTerminalSessionListSessions, useTerminalSessionOpenSession, useTerminalSessionPullOutput, useTerminalSessionResize, useTerminalSessionSetInstanceEnabled, useTerminalSessionUpdateInstance, useTerminalSessionWriteInput, useThemeMode, useToastOnToast, useTrainingCanaryResult, useTrainingCancelJob, useTrainingDiscardResult, useTrainingGetJob, useTrainingGetJobResult, useTrainingListBaseModels, useTrainingListJobs, useTrainingPlanJob, useTrainingRegisterResult, useTrainingRollbackCanary, useTrainingStartJob, useTrainingStartJobBatch, useTurnProviderGetTurnServers, useUpdateGetStatus, useUpdateInstallUpdate, useUrlQueryParam, useUserManagementConfirmTotp, useUserManagementCreateScopedToken, useUserManagementCreateUser, useUserManagementDeleteUser, useUserManagementDisableTotp, useUserManagementFindUserByExternalIdentity, useUserManagementGetTotpStatus, useUserManagementListApiKeys, useUserManagementListExternalIdentities, useUserManagementListOauthSessions, useUserManagementListScopedTokens, useUserManagementListUsers, useUserManagementOauthExchangeCode, useUserManagementOauthIssueCode, useUserManagementOauthRefresh, useUserManagementOauthVerifyAccessToken, useUserManagementResetPassword, useUserManagementRevokeApiKey, useUserManagementRevokeOauthSession, useUserManagementRevokeScopedToken, useUserManagementSetUserScopes, useUserManagementSetupTotp, useUserManagementUnlinkExternalIdentity, useUserManagementUpdateUser, useUserManagementValidateCredentials, useUserManagementValidateScopedToken, useUserManagementVerifyTotp, useVacuumControlGetStatus, useVacuumControlLocate, useVacuumControlPause, useVacuumControlReturnToBase, useVacuumControlSetFanSpeed, useVacuumControlStart, useVacuumControlStop, useValveClose, useValveGetStatus, useValveOpen, useValveSetPosition, useValveStop, useVibrationGetStatus, useVideoclipsDialClipStream, useVideoclipsGetClipPlayback, useVideoclipsGetPlaybackOptions, useVideoclipsListClips, useVideoclipsListSources, useVideoclipsOfferClipBytes, useVideoclipsReadClipBytes, useVodPlayback, useWaterHeaterGetStatus, useWaterHeaterSetAway, useWaterHeaterSetOperationMode, useWaterHeaterSetTargetTemp, useWeatherGetStatus, useWebrtcSessionAddIceCandidate, useWebrtcSessionApplyDownlinkProbe, useWebrtcSessionCloseSession, useWebrtcSessionCreateSession, useWebrtcSessionGetIceCandidates, useWebrtcSessionGetSessionDebug, useWebrtcSessionGetSessionState, useWebrtcSessionHandleAnswer, useWebrtcSessionHandleOffer, useWebrtcSessionHasAdaptiveBitrate, useWebrtcSessionListStreams, useWidget, useWidgetMetadata, useWidgetRegistry, useZoneAnalyticsGetCameraHistory, useZoneAnalyticsGetCurrentSnapshot, useZoneAnalyticsGetCurrentSnapshotBatch, useZoneAnalyticsGetUnzonedHistory, useZoneAnalyticsGetZoneHistory, useZoneEditing, useZoneRulesListRules, useZoneRulesSetRules, useZonesAddZone, useZonesListZones, useZonesRemoveZone, useZonesUpdateZone, vacuumStateMeta, validateScopes, valveStateMeta, variantLabel, waterHeaterPhase, waterHeaterTint, weatherConditionMeta, weatherTint, withResolvedParentDetail, withUseRootModel, writeStoredGroupBy };
61861
+ export { ShieldCheck as $, CircleX as $n, List as $t, TrainFront as A, AddProviderEntryDialog, AddonGlobalSettingsForm, AdminLinkQuickAction, AgentStepEditor, AlarmHeroCard, AlarmInlineControl as AlarmPanelInlineControl, Eye as An, AppShell, Battery as Ar, ArcKnob, Package as At, AudioClassificationList, AudioLevelWaveform, AudioWaveform, AutomationHeroCard, AutomationInlineControl, AutotrackSection, Star as B, BTN_COMPACT, BTN_COMPACT_DANGER, BTN_COMPACT_PRIMARY, BTN_COMPACT_WARNING, BackToStepsButton, Badge, BatteryBadge, Database as Bn, BottomSheet, ArrowRight as Br, Breadcrumb, BrightnessPanel, Minus as Bt, Button, ButtonControl, ButtonHeroCard, Undo2 as C, CARD_MODE_MIN_COLUMNS, CENTER, CHIP_ACTIVE, CHIP_BASE, CHIP_INACTIVE, CLASS_COLORS, COLUMN_BREAKPOINT_CLASS, COLUMN_PRIORITY, COMMIT_DEDUPE_TOLERANCE_MS, COMMIT_DEDUPE_WINDOW_MS, CONTROL_CAP_NAMES, CONTROL_FILLS, CameraStreamPlayer, Card, Checkbox, ChildSectionAccordion, ClimatePanel, FlaskConical as Cn, CodeBlock, CollapsibleCard, ConfigFormBuilder, FormField as ConfigFormField, ConfigNotificationTargetMultiSelectFieldView, ConfigNotificationTargetSelectFieldView, ConfigSchemaField, ConfirmActionButton, ConfirmDialogProvider, ConsumablesPanel, ContainerChildrenProvider, ContainerPrimaryHero, ControlColumn, ControlHeroCard, ControlInlineControl, ControlPanel, CopyButton, CoverHeroCard, CoverInlineControl, CoverPanel, Bot as Cr, Plane as Ct, CustomFieldRenderersProvider, TrendingDown as D, DEFAULT_COLOR, DEFAULT_PAGINATION_LABELS, DEVICE_COLUMNS, DEVICE_EXPORT_PAGE_SIZE_KEY, DEVICE_LIST_PAGE_SIZE_KEY, DEVICE_LIST_PAGE_SIZE_OPTIONS, DEVICE_PICKER_GROUP_STORAGE_KEY, DEVICE_ROLE_META, DEVICE_TYPE_CONTROL, DEVICE_TYPE_META, DataTable, DataTableFilterBar, DataTablePager, DetectionCanvas, DetectionOverlay, DetectionResultTree, DevShell, DeviceActivityPanel, DeviceBatchToolbar, DeviceCard, DeviceContextProvider, DeviceExportPanel, DeviceExportSetup, DeviceFilterBar, DeviceGrid, DeviceItem, DeviceList, DeviceMultiSelectField, DevicePicker, DeviceQuickDetailProvider, DeviceSelectField, DeviceSelectorPicker, DeviceStepMatrix, DevicesFailedLine, DevicesLoadingLine, DevicesWidenWarning, Dialog, DialogBody, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, DiscoveryPanel, Film as Dn, DoorbellRecentPanel, Bike as Dr, Dropdown, DropdownContent, DropdownItem, DropdownTrigger, Pencil as Dt, DummyHeroCard, DummyInline, TriangleAlert as E, EMPTY_DATA_TABLE_FILTER, EVENT_KIND_ICONS, EmptyState, Flame as En, EndpointResultsCard, EndpointTestCard, Bird as Er, ErrorBox, Phone as Et, EventKindGlyph, EventStream, ExtensionsPanel, Target as F, FAST_ICON_GLYPHS, FILL, FLEET_LIST_GC_TIME_MS, FLEET_LIST_QUERY_KEY, FLEET_LIST_STALE_TIME_MS, FanHeroCard, FanInlineControl, FanPanel, FilterBar, FloatingEventStream, FloatingLogStream, FloatingPanel, Droplet as Fn, FormField$1 as FormField, Bath as Fr, MoveVertical as Ft, Smartphone as G, GRID_GAP, GRID_PAIRED, GRID_QUICK_STATS, GateBadge, GateControl, Cloud as Gn, AirVent as Gr, GripTrack, GroupedModelSelector, Megaphone as Gt, Sprout as H, HOST_WIDGETS, HUB_SESSION_RUN_MS, HlsVideo, Cpu as Hn, HoverZoomImage, ArrowDown as Hr, Mic as Ht, HubSessionTestCard, HumidifierHeroCard, HumidifierInlineControl, Tag as I, INPUT_COMPACT, INPUT_SHELL, IconAction, IconButton, IconPicker, ImageHeroCard, ImageInlineControl, ImageSelector, Download as In, InferenceConfigSelector, Input, Ban as Ir, MoveHorizontal as It, ItemFormDialog, SkipBack as J, CloudRain as Jn, Mail as Jt, SlidersHorizontal as K, KebabMenu, KeyValueList, CloudSun as Kn, Activity as Kr, Maximize2 as Kt, Sunrise as L, LIST_ROW, Label, LawnMowerHeroCard, LawnMowerInlineControl, LayeredSettingsForm, LightHeroCard, LightInlineControl, DoorOpen as Ln, LockHeroCard, LockInlineControl, LockPanel, LogStream, LoginForm, Baby as Lr, MousePointerClick as Lt, ToggleRight as M, MEDIA_GRID, MODE_COLOR, MaskShapeCanvas, MediaCard, MediaGrid, MediaPlayerHeroCard, MediaPlayerInlineControl, MediaPlayerPanel, ExternalLink as Mn, MobileDrawer, ModelPicker, MotionZonesSettings, BatteryMedium as Mr, Navigation as Mt, ToggleLeft as N, NAVIGATION_DRIVE_INTERVAL_MS, NODE_COLOR_IDS, NatResultCard, NavigationPanel, NetworkLinkBadge, EllipsisVertical as Nn, NodeMultiSelectField, NodePicker, NodeSelectField, NotificationTargetSelectField, NotificationTargetsField, BatteryLow as Nr, Music as Nt, TrendingUp as O, OPTION_SELECT_SEARCH_MIN_OPTIONS, OfflineBadge, Feather as On, OptionSelect, Bell as Or, PawPrint as Ot, Thermometer as P, PAGE_SIZE_ALL, PHASE_CONFIG, PICKER_CHIP_LIMIT, PICKER_DEFAULT_GROUP_BY, PICKER_GROUP_BY_MODES, PICKER_GROUP_COLLAPSE_AT, PICKER_NONE_KEY, PICKER_NOUN_PLURAL, PICKER_NO_FILTERS, PICKER_PAGE_SIZE, PICKER_SEARCH_DEBOUNCE_MS, PICKER_WINDOW, PRIORITY, PTZOverlay, PageHeader, PageShell, PageSizeSelect, Pagination, PasswordInput, PhaseIcon, PipelineBuilder, PipelineRuntimeSelector, PipelineStep, PlaceholderChipField, PlayerOverlaysProvider, Droplets as Pn, Popover, PopoverContent, PopoverRowAction, PopoverTrigger, BatteryFull as Pr, PrimaryChildPicker, PrivacyMaskSettings, ProviderBadge, ProviderEntryPills, Move as Pt, PtzPanel, ShieldOff as Q, Clapperboard as Qn, QrCode, LoaderCircle as Qt, Sun as R, RECONNECT_POLICY, RECORDED_PLAYBACK_MODES, RIGHT, ROI_AREA_WARN_FRACTION, ROLE_DESCRIPTOR, ROOT_DETECTOR_STEP_ID, RadialGauge, RecordedPlaybackProvider, RecordingPanel, ResponseLog, RetrainReviewBadge, DoorClosed as Rn, RoleDisplayDefaultsFromServer, RoleDisplayDefaultsProvider, RoleNodePill, RootModelSourceControl, RootSuppliedModelNote, ArrowUp as Rr, Moon as Rt, RunReport, Unlink2 as S, SCENE_CAPTURE_VARIANTS, SECRET_MASK_PLACEHOLDER, SECRET_REVEAL_MS, SECTION_BODY, SECTION_CARD, SECTION_HEADER, SETTING_ROW, SETTING_ROW_LABEL, SETTING_ROW_STACK_BREAKPOINT, SETTING_ROW_VALUE, SETTING_ROW_VALUE_TEXT, SNAPSHOT_MEDIA_PATH, SPLIT_PANEL_OUTER, SPLIT_PANEL_SIDE, STACK_GAP, STATE_COLOR, STEP_DOCK_WIDTH_PX, SceneMonitorEditor, ScopePicker, ScriptHeroCard, ScriptInlineControl, ScrollArea, SecretFieldControl, SecretRevealProvider, SectionCard, SectionToolbar, SectionedPage, SegmentedChoice, Select, SelectedChip, SemanticBadge, SendFrameToTrainingButton, SensorHeroCard, SensorInlineControl, SensorValueAtom, Separator, SettingRow, Sidebar, SidebarItem, Skeleton, SlideToggle, Footprints as Sn, SnapshotButton, SortHeaderButton, Box as Sr, Play as St, StableTabPanel, StatCard, StateValuesStream, StatusBadge, StepDetailDock, StepInspectorPanel, StepModelRow, StepTimings, Stepper, StreamBrokerSelector, StreamDebugOverlay, StreamPanel, Switch, SwitchHeroCard, SwitchInlineControl, SwitchPanel, SystemProvider, Truck as T, TABLE_SCROLL_MAX_H, TEXT_FIELD_LABEL, TEXT_HINT, TEXT_METRIC, TEXT_SECTION_LABEL, TEXT_VALUE, TIMEZONES, Tabs, TabsContent, TabsList, TabsTrigger, TapToggle, ThemeProvider, ThermostatHeroCard, ThermostatInlineControl, TimezoneSelector, FlashlightOff as Tn, Tooltip, TooltipContent, TooltipTrigger, Blinds as Tr, TrainingBaseModelPicker, TrainingCollectionPicker, Pin as Tt, Sparkles as U, Copy as Un, UnitPicker, ArrowDownToLine as Ur, MessageSquare as Ut, Square as V, VacuumHeroCard, VacuumInlineControl, ValueReadout, ValveHeroCard, ValveInlineControl, VersionBadge, Crosshair as Vn, VodPlaybackProvider, ArrowLeft as Vr, Minimize2 as Vt, Snowflake as W, WaterHeaterHeroCard, WaterHeaterInlineControl, WeatherHeroCard, WeatherInlineControl, WidgetMetricCard, WidgetPanel, WidgetRegistryProvider, WidgetSlot, Cog as Wn, AlarmSmoke as Wr, Menu as Wt, Ship as X, CloudFog as Xn, LockOpen as Xt, Siren as Y, CloudLightning as Yn, Lock as Yt, Shield as Z, Clock as Zn, ZoneEditingProvider, LocateFixed as Zt, UtensilsCrossed as _, Grid2x2 as _n, Car as _r, Puzzle as _t, Wrench as a, acceleratorLabel, acceleratorShortLabel, agentColumnKey, allDeviceTypeFilterOptions, Laugh as an, applyFleetQueryDefaults, applyPickerFilters, CircleCheck as ar, ariaSortForColumn, assignNodeColorId, ScrollText as at, UserCheck as b, badgeFor, bindsToModel, Gamepad2 as bn, Bus as br, Plug as bt, buildColorByNodeId, buildPeerConnectionConfig, buildStepTreeFromSchema, Wifi as c, catalogHasDraft, childEntityId, childListName, chipOverflow, classifyAddressScope, classifyCapability, classifySessionVerdict, clearPickerGroup, clusterRootModelIds, cn, colorIdForNode, columnsForContext, compareSrflxMappings, computePageButtons, containerChildToRef, countableDevices, coverHighlight, coverageLine, ChevronsUpDown as cr, createSharedContext, createTheme, Sailboat as ct, cursorFractionFor, WifiLow as d, darkColors, dataTableFacetGroups, dataTableFacets, defaultOfField, defaultSelectClusterRoots, defaultSingleClusterRoot, defaultTheme, deriveDeviceKind, deriveWebrtcDebugStats, describeDeviceSelector, deviceIntegrationResolver, deviceListStateOf, deviceMatchesFilter, deviceOptionLabel, deviceRoleMeta, deviceRoleMetaOf, deviceTypeLabel, deviceTypeMeta, deviceTypeMetaOf, devicesToOptions, House as dn, dockBox, ChevronRight as dr, draftFromQuery, RotateCcw as dt, effectivePageSize, emptyDevicesWidens, emptySessionRun, ListChecks as en, ensureMfHostInit, CircleStop as er, ShieldAlert as et, eventKindLabel, WifiHigh as f, filterDataTableRows, filterDeviceOptions, filterOptions as filterOptionSelectOptions, filterPickerDevices, finalizeSessionRun, findTimezone, flattenPickerGrouping, flattenPickerRows, fleetViewOf, Hash as fn, formatControlDateTime, formatLastSeen, formatNumeric, formatSettingValue, ChevronLeft as fr, freezeVerdict, RefreshCw as ft, fuzzyMatch, Vibrate as g, getClassColor, getPhaseVisual, GripHorizontal as gn, Cast as gr, groupAgentColumns, groupChildrenByLayout, groupPickerDevices, groupPickerDevicesBy, QrCode$1 as gt, Volume2 as h, hardwareLabel, Hammer as hn, Cat as hr, Radar as ht, hubOrigin, hubPath, hubUrl, hubWsUrl, humanDuration, humidifierTint, X as i, iconGlyphsFailed, iconGlyphsLoaded, LayoutGrid as in, initialScrubState, insertAtSelection, CircleDot as ir, isAbsentProvider, isDataTableFilterActive, isFieldVisible, isGroupExpanded, isKeychainFieldValue, isValueField, Search as it, Tractor as j, EyeOff as jn, BatteryWarning as jr, Network as jt, Trash2 as k, Fan as kn, BellRing as kr, Pause as kt, WifiZero as l, lawnMowerActivityMeta, lightColors, Image as ln, loadIconGlyphs, loadRemoteBundle, ChevronsDownUp as lr, Route as lt, lucideExportName, VolumeX as m, makeScrubBridge, mapRootDetectorPlacements, metadataEntries, metadataString, mirror, Hand as mn, mountAddonPage, mountPath, Check as mr, RadioTower as mt, ZoomIn as n, nextGridPosition, nextReconnectAction, nextSort, nextSortDirection, nextTableSort, Lightbulb as nn, nodeColorClass, nodeSoftBgClass, nodeTextColorClass, normalizeForSearch, CirclePlus as nr, Settings as nt, Workflow as o, offListSelections, Info as on, openTopLayer, optionSearchText as optionSelectSearchText, CircleCheckBig as or, orphanDeviceLabel, Scan as ot, overrideEntityIdFromLink, Waves as p, pageRows, pageSizeLabel, paginateRows, parentDetailOf, parseIceCandidate, parsePickerGroupBy, parseRecordedServerMessage, partitionSelected as partitionOptionSelectSelected, partitionSuggested, pickerFacetFilterShown, pickerFacetKey, pickerFacetOptions, pickerFiltersActive, pickerGroupKey, pickerHiddenSelectedCount, pickerLocationKey, pickerQueryTokens, pickerRowFacts, pickerSearchText, pickerZoneFilterSuspended, pinnedStreamChoices, placePopover, HardDrive as pn, ChevronDown as pr, providerIcons, Radio as pt, SkipForward as q, CloudSnow as qn, MapPin as qt, Zap as r, readStoredGroupBy, reduceSessionRun, resetHubMountForTests, resetPickerFilters, resolveContainerPrimary, resolveControlAlign, resolveDeviceControl, resolveDeviceIntegration, resolveDisplayIcon, resolveEffectiveDefaultModel, resolveEffectiveStepModel, resolveEventKindIcon, resolveSearchable as resolveOptionSelectSearchable, resolveParentNames, resolvePrimaryChild, resolveSelectedDevices, resolveSensorDisplay, resolveStepDefaultModel, resolveTableLayout, retrainReviewBadgeLook, Leaf as rn, roiTooLarge, rootSourceState, routerBasename, CirclePause as rr, Server as rt, Wind as s, sameLocationSuggestions, scrubReducer, searchSteps, secretSubmitValue, selectPickerGroup, selectedDeviceOptions, serializeRecordedCommand, settingsModelIdFor, shouldCommit, shouldEmit, shouldShowAddNewFooter, shouldShowUseQueryRow, shouldUseSingleNode, showsNoCamerasHint, Inbox as sn, sortRows, sortRowsByColumn, CircleAlert as sr, Save as st, statusIcons, statusLine, stepFieldDomId, stepHasModelForFormat, stepLocalFields, stepModelOptions, stripParentNamePrefix, summarizeHubCandidates, ZoomOut as t, tabForSelector, tankAlert, themeToCss, Link2 as tn, toStationaryOverlayBox, toggleDataTableFacet, toggleDataTableGroupFacet, togglePickerDevice, togglePickerKey, CircleQuestionMark as tr, trainingRefusalText, trpc, Share2 as tt, typeLabel, WifiOff as u, ImageOff as un, ChevronUp as ur, useAccessoriesGetStatus, useAccessoriesSetChildHidden, useAddonPagesListPages, useAddonSettingsGetDeviceSettings, useAddonSettingsGetGlobalSettings, useAddonSettingsGetIntegrationSettings, useAddonSettingsUpdateDeviceSettings, useAddonSettingsUpdateGlobalSettings, useAddonWidgetsListWidgets, useAddonsApplyAutoUpdateToAll, useAddonsCancelJob, useAddonsCustom, useAddonsForceRefresh, useAddonsGetAddonAutoUpdate, useAddonsGetAutoUpdateSettings, useAddonsGetJob, useAddonsGetLastRestart, useAddonsGetLogs, useAddonsGetVersions, useAddonsInstallFromWorkspace, useAddonsInstallPackage, useAddonsIsWorkspaceAvailable, useAddonsList, useAddonsListCapabilityProviders, useAddonsListFrameworkPackages, useAddonsListInstallations, useAddonsListJobs, useAddonsListPackages, useAddonsListUpdates, useAddonsListWorkspacePackages, useAddonsOnAddonLogs, useAddonsReloadPackages, useAddonsRestartAddon, useAddonsRestartServer, useAddonsRetryLoad, useAddonsRollbackPackage, useAddonsSearchAvailable, useAddonsSetAddonAutoUpdate, useAddonsSetAutoUpdateSettings, useAddonsSetCapabilityProviderEnabled, useAddonsStartJob, useAddonsUninstallPackage, useAddonsUpdatePackage, useAirQualitySensorGetStatus, useAlarmPanelArm, useAlarmPanelDisarm, useAlarmPanelGetStatus, useAlarmPanelTrigger, useAlert, useAlertsDismiss, useAlertsEmit, useAlertsGetUnreadCount, useAlertsList, useAlertsMarkAllRead, useAlertsMarkRead, useAlertsUpdate, useAllWidgets, useAmbientLightSensorGetStatus, useAudioAnalysisApplyDeviceSettingsPatch, useAudioAnalysisGetDeviceLiveContribution, useAudioAnalysisGetDeviceSettingsContribution, useAudioAnalysisResolveDeviceSettings, useAudioAnalyzerAnalyseChunk, useAudioAnalyzerAttachDevice, useAudioAnalyzerClassify, useAudioAnalyzerDetachDevice, useAudioAnalyzerDispose, useAudioAnalyzerIsReady, useAudioAnalyzerReprobeAudioEngine, useAudioCodecCanHandle, useAudioCodecCloseSession, useAudioCodecCreateDecodeSession, useAudioCodecCreateEncodeSession, useAudioCodecFlushEncode, useAudioCodecListActiveSessions, useAudioCodecListSupportedCodecs, useAudioCodecPullEncoded, useAudioCodecPullPcm, useAudioCodecPushEncodedFrame, useAudioCodecPushPcm, useAudioMetricsGetCurrentSnapshot, useAudioMetricsGetHistory, useAutomationControlDisable, useAutomationControlEnable, useAutomationControlGetStatus, useAutomationControlTrigger, useBackupCancel, useBackupCheckBackupKey, useBackupDelete, useBackupDeleteSchedule, useBackupDisableEncryption, useBackupGetEncryption, useBackupGetEntries, useBackupList, useBackupListArchives, useBackupListAvailableDatabases, useBackupListDestinations, useBackupListLocations, useBackupListRuns, useBackupListSchedules, useBackupPreviewSchedule, useBackupRestore, useBackupSetupEncryption, useBackupTrigger, useBackupUpsertDestinationPolicy, useBackupUpsertSchedule, useBatteryGetStatus, useBatteryWakeForStream, useBinaryGetStatus, useBrightnessGetStatus, useBrightnessSetBrightness, useBrokerAdd, useBrokerGet, useBrokerGetBrokerConfig, useBrokerGetSettings, useBrokerGetSettingsSchema, useBrokerGetState, useBrokerGetStatus, useBrokerList, useBrokerListProviders, useBrokerPublish, useBrokerRemove, useBrokerSetSettings, useBrokerSubscribe, useBrokerTestConnection, useBrokerTestSettings, useBrokerUnsubscribe, useButtonPress, useCalendarsGetPreferences, useCalendarsListCalendars, useCalendarsListEvents, useCalendarsSetCalendarPreference, useCameraCredentialsGetCredentials, useCameraCredentialsGetStatus, useCameraGridLayoutApplyDeviceSettingsPatch, useCameraGridLayoutGetDeviceLiveContribution, useCameraGridLayoutGetDeviceSettingsContribution, useCameraGridLayoutGetLayout, useCameraGridLayoutSaveLayout, useCameraPipelineConfigApplyDeviceSettingsPatch, useCameraPipelineConfigGetDeviceLiveContribution, useCameraPipelineConfigGetDeviceSettingsContribution, useCameraStreamsGetBrokerStreams, useCameraStreamsGetCameraStreams, useCameraStreamsGetProfileRtspEntries, useCameraStreamsGetRtspEntries, useCameraStreamsPickStream, useCapabilityPresence, useCarbonMonoxideGetStatus, useClimateControlGetStatus, useClimateControlSetFanMode, useClimateControlSetMode, useClimateControlSetPreset, useClimateControlSetSwingHorizontal, useClimateControlSetSwingVertical, useClimateControlSetTarget, useClimateControlSetTargetHumidity, useClimateControlSetTargetRange, useClusterNodes, useClusterTopology, useColorGetStatus, useColorSetColor, useConfirm, useConnectionTestDescribeTest, useConnectionTestTestSettings, useConnectivityGetStatus, useConsumablesGetStatus, useConsumablesReset, useContactGetStatus, useContainerChildren, useControlGetStatus, useControlSetValue, useCoreBlocksCompile, useCoreBlocksCreate, useCoreBlocksCreateComposition, useCoreBlocksDelete, useCoreBlocksGet, useCoreBlocksGetBlockSettings, useCoreBlocksGetComposition, useCoreBlocksGetCustomization, useCoreBlocksGetTypeDefs, useCoreBlocksList, useCoreBlocksListComposableCaps, useCoreBlocksListCompositions, useCoreBlocksRestart, useCoreBlocksSetEnabled, useCoreBlocksUpdate, useCoreBlocksUpdateBlockSettings, useCoreBlocksUpdateComposition, useCoreBlocksValidateComposition, useCoverClose, useCoverGetStatus, useCoverOpen, useCoverSetPosition, useCoverSetTiltPosition, useCoverStop, useCustomFieldRenderer, useDataTableFilter, useDayNightGetOptions, useDayNightGetStatus, useDayNightSetSettings, useDebouncedString, useDecoderGetInfo, useDecoderReprobeHwaccel, useDetectionPipelineApplyDeviceSettingsPatch, useDetectionPipelineGetDeviceLiveContribution, useDetectionPipelineGetDeviceSettingsContribution, useDevShell, useDevice, useDeviceAdminLink, useDeviceAdminLinkGetAdminLink, 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, useDeviceExtensionListCandidates, useDeviceExtensionListSlots, useDeviceExtensionListSources, useDeviceExtensionSetSlot, useDeviceId, useDeviceListPageSize, useDeviceManagerAddLocation, useDeviceManagerAdoptDevice, useDeviceManagerAdoptionAdopt, useDeviceManagerAdoptionCancelJob, useDeviceManagerAdoptionListCandidateFilters, useDeviceManagerAdoptionListCandidates, useDeviceManagerAdoptionListJobs, useDeviceManagerAdoptionRefresh, useDeviceManagerAdoptionRelease, useDeviceManagerAdoptionResync, useDeviceManagerAdoptionStartJob, useDeviceManagerAllocateDeviceId, useDeviceManagerApplyInitialMeta, useDeviceManagerCreateDevice, useDeviceManagerDisable, useDeviceManagerDiscoverAllProviders, useDeviceManagerDiscoverDevices, useDeviceManagerDiscoverProvider, useDeviceManagerDiscoveryProviders, useDeviceManagerEnable, useDeviceManagerGetAllBindings, useDeviceManagerGetBindings, useDeviceManagerGetBindingsBatch, useDeviceManagerGetChildren, useDeviceManagerGetChildrenBatch, useDeviceManagerGetConfigSchema, useDeviceManagerGetCreationSchema, useDeviceManagerGetDevice, useDeviceManagerGetDeviceAggregate, useDeviceManagerGetDeviceLiveInfoAggregate, useDeviceManagerGetDeviceSettingsAggregate, useDeviceManagerGetDeviceStatusAggregate, useDeviceManagerGetDeviceStatusAggregateBatch, useDeviceManagerGetLinkedDevices, useDeviceManagerGetLinkedDevicesBatch, useDeviceManagerGetRoleDisplayDefaults, useDeviceManagerGetSettingsSchema, useDeviceManagerGetStreamProfileMap, useDeviceManagerGetStreamSources, useDeviceManagerGetWireableFields, useDeviceManagerGetWrapperActivation, useDeviceManagerListAll, useDeviceManagerListBindableCapsForDeviceType, useDeviceManagerListDeviceIdsByCaps, useDeviceManagerListLocationDescriptions, useDeviceManagerListLocationIcons, useDeviceManagerListLocations, useDeviceManagerListPersistedByAddon, useDeviceManagerListSiteZones, useDeviceManagerListWrappersForCap, useDeviceManagerLoadConfig, useDeviceManagerLoadMeta, useDeviceManagerLoadRuntimeState, useDeviceManagerMigrateDevice, useDeviceManagerPersistConfig, useDeviceManagerProbeStreams, useDeviceManagerProviderCreationType, useDeviceManagerProviderDiscoveryParamsSchema, useDeviceManagerRegisterDevice, useDeviceManagerRemove, useDeviceManagerRemoveByIntegration, useDeviceManagerRemoveDevice, useDeviceManagerRemoveLocation, useDeviceManagerRemoveSiteZone, useDeviceManagerRenameLocation, useDeviceManagerRenameSiteZone, useDeviceManagerRunDeviceAction, useDeviceManagerSetChildLayout, useDeviceManagerSetDisabled, useDeviceManagerSetDisplay, useDeviceManagerSetIntegrationId, useDeviceManagerSetLinkDeviceId, useDeviceManagerSetLocation, useDeviceManagerSetLocationDescription, useDeviceManagerSetLocationIcon, useDeviceManagerSetLocationZone, useDeviceManagerSetMetadata, useDeviceManagerSetName, useDeviceManagerSetPrimaryChildEntityId, useDeviceManagerSetRole, useDeviceManagerSetRoleDisplayDefaults, useDeviceManagerSetSiteZone, useDeviceManagerSetStreamProfileMap, useDeviceManagerSetType, useDeviceManagerSetWrapperActive, useDeviceManagerTestCreationField, useDeviceManagerTestField, useDeviceManagerUpdateConfig, useDeviceManagerUpdateDeviceField, useDeviceManagerUpdateDeviceFieldsBatch, useDeviceNetworkLink, useDeviceOpsGetConfigEntries, useDeviceOpsGetRawState, useDeviceOpsGetSettingsSchema, useDeviceOpsGetStreamSources, useDeviceOpsRemoveDevice, useDeviceOpsRunAction, useDeviceOpsSetConfig, useDeviceProviderAdoptDiscoveredDevice, useDeviceProviderCreateDevice, useDeviceProviderDiscoverDevices, useDeviceProviderGetChildCreationSchema, useDeviceProviderGetDevices, useDeviceProviderGetDiscoveryParamsSchema, useDeviceProviderGetManualCreationType, useDeviceProviderGetStatus, useDeviceProviderReloadDevice, useDeviceProviderStart, useDeviceProviderStop, useDeviceProviderSupportsDiscovery, useDeviceProviderSupportsManualCreation, useDeviceProviderTestCreationField, useDeviceProxy, useDeviceQuickDetailOpen, useDeviceSnapshot, useDeviceSnapshotImage, useDeviceState, useDeviceStateClaimFields, useDeviceStateGetAllSnapshots, useDeviceStateGetCapSlice, useDeviceStateGetNativeCapSlice, useDeviceStateGetSnapshot, useDeviceStateListClaims, useDeviceStatePatchOwnedFields, useDeviceStateReleaseClaim, useDeviceStateSetCapSlice, useDeviceStateSlice, useDeviceStatusGetStatus, useDeviceWebrtc, useDevices, useDisplayIconResolver, useDoorbellEvents, useDoorbellGetStatus, useEnumSensorGetStatus, useEventEmitterGetStatus, useEventInvalidation, useEventStreamLatest, useEventStreamMap, useFaceGalleryAssignFace, useFaceGalleryAssignFaces, useFaceGalleryAuditIdentitySamples, 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, useIconGlyphsVersion, useImageGetStatus, useImageSettingsGetOptions, useImageSettingsGetStatus, useImageSettingsSetSettings, useIntegrationsCreate, useIntegrationsDelete, useIntegrationsGet, useIntegrationsGetAvailableTypes, useIntegrationsGetByAddonId, useIntegrationsGetSettings, useIntegrationsList, useIntegrationsSetSettings, useIntegrationsTestConnection, useIntegrationsUpdate, useIntercomEndTalkSession, useIntercomGetStatus, useIntercomHandleAnswer, useIntercomPushTalkAudio, useIntercomStartSession, useIntercomStartTalkSession, useIntercomStopSession, useIsMidWidth, useIsMobile, useItemFormUrl, useKeychainAdminAcknowledgeReset, useKeychainAdminDeleteOrphans, useKeychainAdminDownloadRecoveryKey, useKeychainAdminListAudit, useKeychainAdminListSecrets, useKeychainAdminPurgeRetiredKeys, useKeychainAdminResetKeychain, useKeychainAdminResetReport, useKeychainAdminReveal, useKeychainAdminRotateMasterKey, useKeychainAdminSetSystemSecret, useKeychainAdminStatus, useLawnMowerControlDock, useLawnMowerControlGetStatus, useLawnMowerControlPause, useLawnMowerControlStartMowing, useLiveBuffer, useLiveEvent, useLlmCancel, useLlmDeleteModel, useLlmDeleteProfile, useLlmGenerate, useLlmGenerateVision, useLlmGetDefaults, useLlmGetRuntimeStatus, useLlmGetUsage, useLlmInstallModel, useLlmListModelCatalog, useLlmListModels, useLlmListNodeModels, useLlmListProfileKinds, useLlmListProfiles, useLlmListRuntimeNodes, useLlmResolveModelRef, useLlmSetDefault, useLlmStartRuntime, useLlmStopRuntime, useLlmTestProfile, useLlmUpsertProfile, useLocalNetworkAddCustomAddress, useLocalNetworkDownloadCa, useLocalNetworkGetAddresses, useLocalNetworkGetAllowedAddresses, useLocalNetworkGetConnectionEndpoints, useLocalNetworkGetHubAddresses, useLocalNetworkGetNotificationEndpoint, useLocalNetworkGetPreferred, useLocalNetworkGetTlsStatus, useLocalNetworkGetViewerEndpoints, useLocalNetworkList, useLocalNetworkRegenerateCertificate, useLocalNetworkRemoveCustomAddress, useLocalNetworkResetAllowlistToBestMatch, useLocalNetworkRevertToGeneratedCertificate, useLocalNetworkSetAddressRole, useLocalNetworkSetAllowedAddresses, useLocalNetworkSetNotificationEndpoint, useLocalNetworkSetViewerEndpoints, useLocalNetworkUploadCertificate, 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, useMetricsProviderGetAddonStats, useMetricsProviderGetCached, useMetricsProviderGetCpuTemperature, useMetricsProviderGetCurrent, useMetricsProviderGetDiskSpace, useMetricsProviderGetGpuInfo, useMetricsProviderGetLoadSeries, useMetricsProviderGetProcessStats, useMetricsProviderListAddonInstances, useMetricsProviderListNodeProcesses, useMotionDetectionAnalyze, useMotionDetectionApplyDeviceSettingsPatch, useMotionDetectionGetDeviceLiveContribution, useMotionDetectionGetDeviceSettingsContribution, useMotionDetectionRemoveCamera, useMotionDetectionReset, useMotionGetStatus, useMotionIsDetected, useMotionTriggerGetStatus, useMotionTriggerSetMotionTrigger, useMotionZonesGetOptions, useMotionZonesGetStatus, useMotionZonesSetZone, useMqttBrokerAddBroker, useMqttBrokerGetBrokerConfig, useMqttBrokerGetStatus, useMqttBrokerListBrokers, useMqttBrokerRemoveBroker, useMqttBrokerStartEmbeddedBroker, useMqttBrokerStopEmbeddedBroker, useMqttBrokerTestConnection, useNativeObjectDetectionGetOptions, useNativeObjectDetectionGetStatus, useNativeObjectDetectionSetEnabled, useNativeObjectDetectionSetSettings, useNavigation, useNavigationGetFeatures, useNavigationGetStatus, useNavigationGoToPoint, useNavigationListActions, useNavigationMove, useNavigationPlaySound, useNavigationRunAction, useNavigationSetLightLevel, useNavigationSetLightMode, useNavigationSetLightOn, useNavigationStop, useNetworkAccessGetEndpoint, useNetworkAccessGetStatus, useNetworkAccessListEndpoints, useNetworkAccessStart, useNetworkAccessStop, useNetworkLinkGetStatus, useNetworkQualityGetAllStats, useNetworkQualityGetDeviceStats, useNetworkQualityReportClientStats, useNodesClusterAddonStatus, useNodesDeployAddon, useNodesDirectory, useNodesExecuteQuery, useNodesGetCapUsageGraph, useNodesGetNodeAddons, useNodesRenameNode, useNodesRestartAddon, useNodesRestartNode, useNodesRestartProcess, useNodesSetProcessLogLevel, useNodesShutdownNode, useNodesTopology, useNodesUndeployAddon, useNotificationOutputDeleteTarget, useNotificationOutputDiscoverTargets, useNotificationOutputGetTarget, useNotificationOutputListTargetKinds, useNotificationOutputListTargets, useNotificationOutputProbeTargetConfig, useNotificationOutputSend, useNotificationOutputSetTargetEnabled, useNotificationOutputTestTarget, useNotificationOutputUpsertTarget, useNotificationRulesActivateAlarmProfile, useNotificationRulesCancelSnooze, useNotificationRulesCreateAlarmProfile, useNotificationRulesCreateRule, useNotificationRulesCreateSequence, useNotificationRulesCreateSnooze, useNotificationRulesDeleteAlarmProfile, useNotificationRulesDeleteRule, useNotificationRulesDeleteSequence, useNotificationRulesGetAlarmConfig, useNotificationRulesGetAlarmSensors, useNotificationRulesGetClipRetentionAsks, useNotificationRulesGetConditionCatalog, useNotificationRulesGetHistory, useNotificationRulesGetRule, useNotificationRulesGetRuleLastRuns, useNotificationRulesGetSequence, useNotificationRulesGetTemplateCatalog, useNotificationRulesListDeviceMutes, useNotificationRulesListRules, useNotificationRulesListSequences, useNotificationRulesListSnoozes, useNotificationRulesPreviewStateSummary, useNotificationRulesPreviewTemplate, useNotificationRulesRenameAlarmProfile, useNotificationRulesResolveArtifactUrl, useNotificationRulesSetAlarmConfig, useNotificationRulesSetDeviceMuted, useNotificationRulesSetRuleEnabled, useNotificationRulesTestRule, useNotificationRulesUpdateRule, useNotificationRulesUpdateSequence, useNotifierCancel, useNotifierGetStatus, useNotifierSend, useNumericSensorGetStatus, useOidcConnectionsConnectionFormSchema, useOidcConnectionsCreateConnection, useOidcConnectionsDeleteConnection, useOidcConnectionsListConnections, useOidcConnectionsUpdateConnection, useOptimisticSlice, useOptionalSystem, useOptionalWidgetRegistry, useOsdGetStatus, useOsdManagerClearSlotBinding, useOsdManagerCopyDeviceConfiguration, useOsdManagerDeleteTemplate, useOsdManagerGetConditionSupport, useOsdManagerGetDeviceOsd, useOsdManagerGetSourceCatalog, useOsdManagerListTemplates, useOsdManagerPreviewSlot, useOsdManagerRenderDevice, useOsdManagerSetSlotBinding, useOsdManagerSetSlotCameraEnabled, useOsdManagerUpsertTemplate, useOsdSetOverlay, usePTZ, usePersistedPageSize, usePetFeederCallPet, usePetFeederCancelFeed, usePetFeederFeed, usePetFeederGetStatus, usePetFeederMarkFoodReplenished, usePetFeederPlaySound, usePetFeederResetDesiccant, usePetFeederSetChildLock, usePetFeederSetFeedSound, usePetFeederSetIndicatorLight, usePetFeederSetVolume, usePickerSiteZones, usePipelineAnalyticsAddRetrainFrameFromRecording, usePipelineAnalyticsAddRetrainFramesToCollection, usePipelineAnalyticsApplyDeviceSettingsPatch, usePipelineAnalyticsBackfillRetrainOrigins, usePipelineAnalyticsCancelRelocateMedia, usePipelineAnalyticsCancelStorageMigrationMove, usePipelineAnalyticsClearTrackRelation, usePipelineAnalyticsClearTracks, usePipelineAnalyticsCompleteRetrainTrack, usePipelineAnalyticsCountRelocatableMedia, usePipelineAnalyticsCountUnstampedEventMedia, usePipelineAnalyticsCreateRetrainCollection, usePipelineAnalyticsDeleteDeviceEvents, usePipelineAnalyticsDeleteRetrainCollection, usePipelineAnalyticsDeleteTracks, usePipelineAnalyticsDeselectRetrainFrame, usePipelineAnalyticsGetActiveTracks, usePipelineAnalyticsGetAudioEvents, usePipelineAnalyticsGetDeviceLiveContribution, usePipelineAnalyticsGetDeviceSettingsContribution, usePipelineAnalyticsGetEventDensity, usePipelineAnalyticsGetEventDensityBatch, usePipelineAnalyticsGetEventMedia, usePipelineAnalyticsGetEventMediaFootprintByKind, usePipelineAnalyticsGetEventStoreFootprint, usePipelineAnalyticsGetKeyEvents, usePipelineAnalyticsGetKeyEventsBatch, usePipelineAnalyticsGetMediaReclaimStatus, usePipelineAnalyticsGetMotionEvents, usePipelineAnalyticsGetObjectEmbeddingRebuildStatus, usePipelineAnalyticsGetObjectEvents, usePipelineAnalyticsGetRetrainCorpusKpi, usePipelineAnalyticsGetRetrainExportUrl, usePipelineAnalyticsGetRetrainFrameImage, usePipelineAnalyticsGetSensorEvents, usePipelineAnalyticsGetStorageMigrationMoveStatus, usePipelineAnalyticsGetTrack, usePipelineAnalyticsGetTrackMedia, usePipelineAnalyticsGetTrainingExportSummary, usePipelineAnalyticsGetTrainingExportUrl, usePipelineAnalyticsListArchivedDebugNotes, usePipelineAnalyticsListBirthDecisions, usePipelineAnalyticsListEventKinds, usePipelineAnalyticsListEventKindsBatch, usePipelineAnalyticsListEventMedia, usePipelineAnalyticsListOpsLog, usePipelineAnalyticsListRecentTracks, usePipelineAnalyticsListRelocateMediaJobs, usePipelineAnalyticsListRetrainAnnotations, usePipelineAnalyticsListRetrainAssistProfiles, usePipelineAnalyticsListRetrainCollectionFrames, usePipelineAnalyticsListRetrainCollections, usePipelineAnalyticsListRetrainCorpusPage, usePipelineAnalyticsListRetrainFrames, usePipelineAnalyticsListRetrainStaging, usePipelineAnalyticsListTrackMedia, usePipelineAnalyticsListTrackRelations, usePipelineAnalyticsListTracks, usePipelineAnalyticsOfferRetrainArchive, usePipelineAnalyticsOwnersWithMedia, usePipelineAnalyticsPauseForStorageMigration, usePipelineAnalyticsProposeRetrainAnnotations, usePipelineAnalyticsProposeRetrainAnnotationsWithLlm, usePipelineAnalyticsPruneEvents, usePipelineAnalyticsPruneEventsBefore, usePipelineAnalyticsPruneTracksBefore, usePipelineAnalyticsReadLongTermSeries, usePipelineAnalyticsRebuildObjectEmbeddings, usePipelineAnalyticsReclaimDebugMedia, usePipelineAnalyticsReconcileFromDisk, usePipelineAnalyticsRefreshStorageLocationsForMigration, usePipelineAnalyticsRelocateMedia, usePipelineAnalyticsRemoveRetrainFrameFromCollection, usePipelineAnalyticsRenameRetrainCollection, usePipelineAnalyticsResolveRetrainTrainingCorpus, usePipelineAnalyticsRestageRetrainTrack, usePipelineAnalyticsResumeForStorageMigration, usePipelineAnalyticsSaveRetrainAnnotations, usePipelineAnalyticsSearchObjectEvents, usePipelineAnalyticsSelectRetrainFrames, usePipelineAnalyticsSetRetrainFrameComplete, usePipelineAnalyticsSetTrackFlags, usePipelineAnalyticsSetTrackPurity, usePipelineAnalyticsSetTrackRelation, usePipelineAnalyticsStartStorageMigrationMove, usePipelineAnalyticsWipeAllAnalytics, usePipelineAnalyticsWipeObjectEmbeddings, usePipelineAnalyticsWriteRetrainArchive, usePipelineExecutorCacheFrameInPool, usePipelineExecutorClearDeviceOverrides, usePipelineExecutorClearModelBoundDeviceOverrides, usePipelineExecutorDeleteModel, usePipelineExecutorDownloadModel, usePipelineExecutorGetAddonModels, usePipelineExecutorGetAudioCapabilities, usePipelineExecutorGetAvailableEngines, usePipelineExecutorGetCapabilities, usePipelineExecutorGetDefaultSteps, usePipelineExecutorGetDetectionConfigSchema, usePipelineExecutorGetEffectiveTuning, usePipelineExecutorGetEngineProvisioning, usePipelineExecutorGetGlobalPipelineConfig, usePipelineExecutorGetGlobalSteps, usePipelineExecutorGetInferenceDeviceHealth, usePipelineExecutorGetOrchestratorConfigSchema, usePipelineExecutorGetReferenceAudio, usePipelineExecutorGetReferenceAudioFiles, usePipelineExecutorGetReferenceImage, usePipelineExecutorGetSchema, usePipelineExecutorGetSelectedEngine, usePipelineExecutorGetVideoPipelineSteps, usePipelineExecutorInferCached, usePipelineExecutorKillEngine, usePipelineExecutorListLoadedEngines, usePipelineExecutorListReferenceImages, usePipelineExecutorRearmInferenceDevice, usePipelineExecutorRunAudioTest, usePipelineExecutorRunPipeline, usePipelineExecutorRunPipelineBatch, usePipelineExecutorSetVideoPipelineSteps, usePipelineExecutorSpinEngine, usePipelineExecutorUncacheFrame, usePipelineExecutorValidatePipeline, usePipelineOrchestratorAbortNodeBenchmark, usePipelineOrchestratorApplyAutoTune, usePipelineOrchestratorApplyDeviceSettingsPatch, usePipelineOrchestratorAssignAudio, usePipelineOrchestratorAssignPipeline, usePipelineOrchestratorDeleteNodeBenchmarkResult, usePipelineOrchestratorGetAgentLoad, usePipelineOrchestratorGetAgentSettings, usePipelineOrchestratorGetAudioAssignment, usePipelineOrchestratorGetAudioAssignments, usePipelineOrchestratorGetAudioNodeLoad, usePipelineOrchestratorGetCameraDetectionSource, usePipelineOrchestratorGetCameraMetrics, usePipelineOrchestratorGetCameraSettings, usePipelineOrchestratorGetCameraStatus, usePipelineOrchestratorGetCameraStatuses, usePipelineOrchestratorGetCameraStepOverrides, usePipelineOrchestratorGetCameraSwitches, usePipelineOrchestratorGetCapabilityBindings, usePipelineOrchestratorGetClusterModelChoice, usePipelineOrchestratorGetDeviceLiveContribution, usePipelineOrchestratorGetDeviceSettingsContribution, usePipelineOrchestratorGetEffectiveShares, usePipelineOrchestratorGetGlobalMetrics, usePipelineOrchestratorGetIngestOwner, usePipelineOrchestratorGetNodeBenchmarkCandidates, usePipelineOrchestratorGetNodeBenchmarkPreflight, usePipelineOrchestratorGetNodeBenchmarkStatus, usePipelineOrchestratorGetNodeInferenceDevices, usePipelineOrchestratorGetPipelineAssignment, usePipelineOrchestratorGetPipelineAssignments, usePipelineOrchestratorGetPipelineDevicePin, usePipelineOrchestratorGetPlacementStats, usePipelineOrchestratorGetReconcileFromDiskStatus, usePipelineOrchestratorListAgentSettings, usePipelineOrchestratorListNodeBenchmarkResults, usePipelineOrchestratorPauseForStorageMigration, usePipelineOrchestratorPlanAutoTune, usePipelineOrchestratorRebalance, usePipelineOrchestratorReconcileFromDisk, usePipelineOrchestratorRemoveAgentSettings, usePipelineOrchestratorRequestOccupancyLook, usePipelineOrchestratorResetNodePipelineDefaults, usePipelineOrchestratorResolvePipeline, usePipelineOrchestratorResumeForStorageMigration, usePipelineOrchestratorSetAgentCapabilities, usePipelineOrchestratorSetAgentDecodeLimits, usePipelineOrchestratorSetAgentInferenceDevices, usePipelineOrchestratorSetAgentMaxCameras, usePipelineOrchestratorSetAgentReachableHost, usePipelineOrchestratorSetCameraDetectionSource, usePipelineOrchestratorSetCameraPipelineForAgent, usePipelineOrchestratorSetCameraSensors, usePipelineOrchestratorSetCameraStepOverride, usePipelineOrchestratorSetCameraStepSettings, usePipelineOrchestratorSetCameraStepToggle, usePipelineOrchestratorSetCameraSwitch, usePipelineOrchestratorSetCapabilityBinding, usePipelineOrchestratorSetLoadBalancingShares, usePipelineOrchestratorSetPipelineDevicePin, usePipelineOrchestratorSetShareSource, usePipelineOrchestratorStartNodeBenchmark, usePipelineOrchestratorSuggestShares, usePipelineOrchestratorUnassignAudio, usePipelineOrchestratorUnassignPipeline, usePipelineRunnerAbortNodeBench, usePipelineRunnerAttachCamera, usePipelineRunnerDetachCamera, usePipelineRunnerGetAllCameraMetrics, usePipelineRunnerGetCameraMetrics, usePipelineRunnerGetLocalCameras, usePipelineRunnerGetLocalLoad, usePipelineRunnerGetLocalMetrics, usePipelineRunnerGetNativeCrop, usePipelineRunnerGetNodeBenchStatus, usePipelineRunnerGetParkedTrackFrame, usePipelineRunnerParkTrackFrame, usePipelineRunnerReleaseParkedTrackFrames, usePipelineRunnerReportMotion, usePipelineRunnerRequestOccupancyBurst, usePipelineRunnerRunDetailSubtree, usePipelineRunnerRunStatelessStep, usePipelineRunnerStartNodeBench, usePlateGalleryAssignPlate, usePlateGalleryAssignPlates, usePlateGalleryCorrectPlateText, usePlateGalleryCreateVehicle, usePlateGalleryDeletePlate, usePlateGalleryDeleteVehicle, usePlateGalleryGetPlateByTrack, usePlateGalleryGetPlateMedia, usePlateGalleryListPlates, usePlateGalleryListVehicleSamples, usePlateGalleryListVehicles, usePlateGalleryRemoveVehicleSample, usePlateGalleryRenameVehicle, usePlateGallerySearchPlates, usePlateGallerySuggestPlateClusters, usePlateGalleryUnassignPlate, usePlateGalleryUnassignPlates, usePlayerOverlayLayer, usePlayerOverlayLayers, usePlayerToolbarButton, usePlayerToolbarButtons, usePowerMeterGetStatus, usePresenceGetStatus, usePressureSensorGetStatus, usePrivacyMaskGetOptions, usePrivacyMaskGetStatus, usePrivacyMaskSetAudioEnabled, usePrivacyMaskSetMask, usePrompt, usePtzAutotrackGetSettings, usePtzAutotrackGetStatus, usePtzAutotrackSetEnabled, usePtzAutotrackSetSettings, usePtzCaptureHomeHere, usePtzContinuousMove, usePtzDeletePreset, usePtzGetHomePreset, usePtzGetHomeReturn, usePtzGetOptions, usePtzGetPosition, usePtzGetPresets, usePtzGetStatus, usePtzGoHome, usePtzGoToPreset, usePtzMove, usePtzSavePreset, usePtzSetAutofocus, usePtzSetHomePreset, usePtzSetHomeReturn, usePtzStop, useRebootReboot, useRecordedPlayback, useRecordingArchiveApplyDeviceSettingsPatch, useRecordingArchiveCancelRelocateJob, useRecordingArchiveCancelStorageMigrationMove, useRecordingArchiveDeleteFootprint, useRecordingArchiveGetAvailabilityBatch, useRecordingArchiveGetDaysWithRecordingsBatch, useRecordingArchiveGetDeviceConfig, useRecordingArchiveGetDeviceLiveContribution, useRecordingArchiveGetDeviceSettingsContribution, useRecordingArchiveGetPlacement, useRecordingArchiveGetRelocateResidue, useRecordingArchiveGetStatus, useRecordingArchiveGetStorageMigrationMoveStatus, useRecordingArchiveGetStorageUsage, useRecordingArchiveListOpsLog, useRecordingArchiveListRelocateJobs, useRecordingArchiveLocateSegment, useRecordingArchivePauseForStorageMigration, useRecordingArchivePlanStorageRebalance, useRecordingArchivePruneFootage, useRecordingArchiveReadGopBytes, useRecordingArchiveReadSegmentBytes, useRecordingArchiveReadWindowBytes, useRecordingArchiveReconcileLedgerAgainstDisk, useRecordingArchiveRefreshStorageLocationsForMigration, useRecordingArchiveRelocateFootage, useRecordingArchiveRenderClip, useRecordingArchiveRenderGif, useRecordingArchiveRescanStorage, useRecordingArchiveResumeForStorageMigration, useRecordingArchiveSetDeviceConfig, useRecordingArchiveSetDevicePlacement, useRecordingArchiveStartStorageMigrationMove, useRecordingArchiveStartStorageRebalance, useRecordingExportCancelExport, useRecordingExportCreateExport, useRecordingExportDeleteExport, useRecordingExportGetDownloadUrl, useRecordingExportGetExport, useRecordingExportListExports, useRecordingExportReadExportBytes, useRecordingGetAvailability, useRecordingGetDaysWithRecordings, useRecordingGetPlayback, useRecordingGetPlaybackOptions, useRecordingListSources, useRecordingOnboardGetOptions, useRecordingOnboardGetStatus, useRecordingOnboardSetSettings, useRecordingSignalGetStatus, useRemoteComponent, useRoleDisplayDefaults, useSceneMonitorCaptureReference, useSceneMonitorCreateScene, useSceneMonitorDeleteReference, useSceneMonitorDeleteScene, useSceneMonitorGetStatus, useSceneMonitorListScenes, useSceneMonitorListScenesBatch, useSceneMonitorRecheckNow, useSceneMonitorResetScene, useSceneMonitorUpdateScene, useScriptRunnerGetStatus, useScriptRunnerRun, useScriptRunnerStop, useScrubController, useServerManagementApplyServerUpdate, useServerManagementCheckServerUpdate, useServerManagementGetServerPackageStatus, useServerManagementRestartServer, useServerManagementRollbackServerUpdate, useSettingsStoreAggregate, useSettingsStoreCount, useSettingsStoreDeclareCollection, useSettingsStoreDelete, useSettingsStoreDeleteWhere, useSettingsStoreGet, useSettingsStoreHistogram, useSettingsStoreInsert, useSettingsStoreInsertMany, useSettingsStoreIsEmpty, useSettingsStoreQuery, useSettingsStoreSet, useSettingsStoreTransact, useSettingsStoreUpdate, useSettingsStoreUpdateWhere, useSettingsStoreUpsert, useSettingsStoreUpsertMany, useSmokeGetStatus, useSnapshotApplyDeviceSettingsPatch, useSnapshotGetDebugState, useSnapshotGetDeviceLiveContribution, useSnapshotGetDeviceSettingsContribution, useSnapshotGetSnapshot, useSnapshotGetSnapshotLinks, useSnapshotGetSnapshotOverview, useSnapshotGetStatus, useSnapshotInvalidateCache, useStationaryOverlay, useStorageAbortUpload, useStorageBeginDownload, useStorageBeginUpload, useStorageDelete, useStorageDeleteLocation, useStorageEndDownload, useStorageExists, useStorageFinalizeUpload, useStorageGetAvailableSpace, useStorageList, useStorageListDrainProgress, useStorageListLocationDeclarations, useStorageListLocations, useStorageListProviders, useStorageMigrationCancel, useStorageMigrationCleanupCancel, useStorageMigrationCleanupStart, useStorageMigrationCleanupStatus, useStorageMigrationDrain, useStorageMigrationHistory, useStorageMigrationMovers, useStorageMigrationPlan, useStorageMigrationResidue, useStorageMigrationStart, useStorageMigrationStatus, useStorageRead, useStorageReadChunk, useStorageResolve, useStorageTestConfig, useStorageTestLocation, useStorageUpsertLocation, useStorageWrite, useStorageWriteChunk, useStoredGroupBy, useStreamBrokerAcquireEgressTranscode, useStreamBrokerApplyDeviceSettingsPatch, useStreamBrokerAssignProfile, useStreamBrokerFetchEventMedia, useStreamBrokerForgetDeviceHardware, useStreamBrokerGetAllRtspEntries, useStreamBrokerGetBrokerStats, useStreamBrokerGetDeviceAudioMute, useStreamBrokerGetDeviceLiveContribution, useStreamBrokerGetDeviceSettingsContribution, useStreamBrokerGetLiveViewerCounts, useStreamBrokerGetPreBufferInfo, useStreamBrokerGetRtspEntry, useStreamBrokerGetRtspPort, useStreamBrokerGetStreamUrl, useStreamBrokerGetStreamWithCodec, useStreamBrokerIsRtspEnabled, useStreamBrokerKillClient, useStreamBrokerListAllCameraStreams, useStreamBrokerListAllProfileSlots, useStreamBrokerListClients, useStreamBrokerProbeStream, useStreamBrokerProduceEventMedia, useStreamBrokerPublishCameraStream, useStreamBrokerPullAudioChunks, useStreamBrokerRegenerateRtspToken, useStreamBrokerReleaseEgressTranscode, useStreamBrokerReleaseStreamWithCodec, useStreamBrokerRenderPreBufferClip, useStreamBrokerReportStreamSignal, useStreamBrokerRestartProfile, useStreamBrokerRetractCameraStream, useStreamBrokerSetDeviceAudioMute, useStreamBrokerSetPreBufferDuration, useStreamBrokerSetRtspEnabled, useStreamBrokerSubscribeAudioChunks, useStreamBrokerUnassignProfile, useStreamBrokerUnsubscribeAudioChunks, useStreamCatalogGetCatalog, useStreamParamsGetConfigSchema, useStreamParamsGetOptions, useStreamParamsGetStatus, useStreamParamsSetProfile, useStreamSignalsListSignals, useSwitchGetStatus, useSwitchSetState, useSystem, useSystemDetectSiteLocation, useSystemFeatureFlags, useSystemForceRetentionCleanup, useSystemGetFailureContributions, useSystemGetLoadContributions, useSystemGetLoggingSettings, useSystemGetRequestCensus, useSystemGetRetentionConfig, useSystemGetSiteLocation, useSystemHealth, useSystemInfo, useSystemMutation, useSystemNetworkAddresses, useSystemQuery, useSystemSetLoggingSettings, useSystemSetRetentionConfig, useSystemSetSiteLocation, useTamperGetStatus, useTemperatureSensorGetStatus, useTerminalSessionAdoptLegacyMonitor, useTerminalSessionClose, useTerminalSessionCreateInstance, useTerminalSessionDeleteInstance, useTerminalSessionListInstances, useTerminalSessionListLegacyCameras, useTerminalSessionListProfiles, useTerminalSessionListSessions, useTerminalSessionOpenSession, useTerminalSessionPullOutput, useTerminalSessionResize, useTerminalSessionSetInstanceEnabled, useTerminalSessionUpdateInstance, useTerminalSessionWriteInput, useThemeMode, useToastOnToast, useTrainingCanaryResult, useTrainingCancelJob, useTrainingDiscardResult, useTrainingGetJob, useTrainingGetJobResult, useTrainingListBaseModels, useTrainingListJobs, useTrainingPlanJob, useTrainingRegisterResult, useTrainingRollbackCanary, useTrainingStartJob, useTrainingStartJobBatch, useTurnProviderGetTurnServers, useUpdateGetStatus, useUpdateInstallUpdate, useUrlQueryParam, useUserManagementConfirmTotp, useUserManagementCreateScopedToken, useUserManagementCreateUser, useUserManagementDeleteUser, useUserManagementDisableTotp, useUserManagementFindUserByExternalIdentity, useUserManagementGetTotpStatus, useUserManagementListApiKeys, useUserManagementListExternalIdentities, useUserManagementListOauthSessions, useUserManagementListScopedTokens, useUserManagementListUsers, useUserManagementOauthExchangeCode, useUserManagementOauthIssueCode, useUserManagementOauthRefresh, useUserManagementOauthVerifyAccessToken, useUserManagementResetPassword, useUserManagementRevokeApiKey, useUserManagementRevokeOauthSession, useUserManagementRevokeScopedToken, useUserManagementSetUserScopes, useUserManagementSetupTotp, useUserManagementUnlinkExternalIdentity, useUserManagementUpdateUser, useUserManagementValidateCredentials, useUserManagementValidateScopedToken, useUserManagementVerifyTotp, useVacuumControlGetStatus, useVacuumControlLocate, useVacuumControlPause, useVacuumControlReturnToBase, useVacuumControlSetFanSpeed, useVacuumControlStart, useVacuumControlStop, useValveClose, useValveGetStatus, useValveOpen, useValveSetPosition, useValveStop, useVibrationGetStatus, useVideoclipsDialClipStream, useVideoclipsGetClipPlayback, useVideoclipsGetPlaybackOptions, useVideoclipsListClips, useVideoclipsListSources, useVideoclipsOfferClipBytes, useVideoclipsReadClipBytes, useVodPlayback, useWaterHeaterGetStatus, useWaterHeaterSetAway, useWaterHeaterSetOperationMode, useWaterHeaterSetTargetTemp, useWeatherGetStatus, useWebrtcSessionAddIceCandidate, useWebrtcSessionApplyDownlinkProbe, useWebrtcSessionCloseSession, useWebrtcSessionCreateSession, useWebrtcSessionGetIceCandidates, useWebrtcSessionGetSessionDebug, useWebrtcSessionGetSessionState, useWebrtcSessionHandleAnswer, useWebrtcSessionHandleOffer, useWebrtcSessionHasAdaptiveBitrate, useWebrtcSessionListStreams, useWidget, useWidgetMetadata, useWidgetRegistry, useZoneAnalyticsGetCameraHistory, useZoneAnalyticsGetCurrentSnapshot, useZoneAnalyticsGetCurrentSnapshotBatch, useZoneAnalyticsGetUnzonedHistory, useZoneAnalyticsGetZoneHistory, useZoneEditing, useZoneRulesListRules, useZoneRulesSetRules, useZonesAddZone, useZonesListZones, useZonesRemoveZone, useZonesUpdateZone, RotateCw as ut, Users as v, vacuumStateMeta, validateScopes, valveStateMeta, variantLabel, GraduationCap as vn, Camera as vr, Power as vt, Type as w, waterHeaterPhase, waterHeaterTint, weatherConditionMeta, weatherTint, withResolvedParentDetail, withUseRootModel, Flashlight as wn, Bone as wr, writeStoredGroupBy, Pipette as wt, Upload as x, Funnel as xn, Bug as xr, Plus as xt, User as y, Gauge as yn, Cable as yr, PowerOff as yt, SunMedium as z, Dog as zn, ArrowUpToLine as zr, MonitorPlay as zt };