@camstack/ui-library 1.2.195 → 1.2.196

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.cjs CHANGED
@@ -375,6 +375,30 @@ var Bath = createLucideIcon("bath", [
375
375
  * This source code is licensed under the ISC license.
376
376
  * See the LICENSE file in the root directory of this source tree.
377
377
  */
378
+ var BatteryCharging = createLucideIcon("battery-charging", [
379
+ ["path", {
380
+ d: "m11 7-3 5h4l-3 5",
381
+ key: "b4a64w"
382
+ }],
383
+ ["path", {
384
+ d: "M14.856 6H16a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-2.935",
385
+ key: "lre1cr"
386
+ }],
387
+ ["path", {
388
+ d: "M22 14v-4",
389
+ key: "14q9d5"
390
+ }],
391
+ ["path", {
392
+ d: "M5.14 18H4a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h2.936",
393
+ key: "13q5k0"
394
+ }]
395
+ ]);
396
+ /**
397
+ * @license lucide-react v0.576.0 - ISC
398
+ *
399
+ * This source code is licensed under the ISC license.
400
+ * See the LICENSE file in the root directory of this source tree.
401
+ */
378
402
  var BatteryFull = createLucideIcon("battery-full", [
379
403
  ["path", {
380
404
  d: "M10 10v4",
@@ -504,6 +528,78 @@ var Battery = createLucideIcon("battery", [["path", {
504
528
  * This source code is licensed under the ISC license.
505
529
  * See the LICENSE file in the root directory of this source tree.
506
530
  */
531
+ var BedDouble = createLucideIcon("bed-double", [
532
+ ["path", {
533
+ d: "M2 20v-8a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v8",
534
+ key: "1k78r4"
535
+ }],
536
+ ["path", {
537
+ d: "M4 10V6a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v4",
538
+ key: "fb3tl2"
539
+ }],
540
+ ["path", {
541
+ d: "M12 4v6",
542
+ key: "1dcgq2"
543
+ }],
544
+ ["path", {
545
+ d: "M2 18h20",
546
+ key: "ajqnye"
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 Bed = createLucideIcon("bed", [
556
+ ["path", {
557
+ d: "M2 4v16",
558
+ key: "vw9hq8"
559
+ }],
560
+ ["path", {
561
+ d: "M2 8h18a2 2 0 0 1 2 2v10",
562
+ key: "1dgv2r"
563
+ }],
564
+ ["path", {
565
+ d: "M2 17h20",
566
+ key: "18nfp3"
567
+ }],
568
+ ["path", {
569
+ d: "M6 8v9",
570
+ key: "1yriud"
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
+ var BellOff = createLucideIcon("bell-off", [
580
+ ["path", {
581
+ d: "M10.268 21a2 2 0 0 0 3.464 0",
582
+ key: "vwvbt9"
583
+ }],
584
+ ["path", {
585
+ 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",
586
+ key: "178tsu"
587
+ }],
588
+ ["path", {
589
+ d: "m2 2 20 20",
590
+ key: "1ooewy"
591
+ }],
592
+ ["path", {
593
+ d: "M8.668 3.01A6 6 0 0 1 18 8c0 2.687.77 4.653 1.707 6.05",
594
+ key: "1hqiys"
595
+ }]
596
+ ]);
597
+ /**
598
+ * @license lucide-react v0.576.0 - ISC
599
+ *
600
+ * This source code is licensed under the ISC license.
601
+ * See the LICENSE file in the root directory of this source tree.
602
+ */
507
603
  var BellRing = createLucideIcon("bell-ring", [
508
604
  ["path", {
509
605
  d: "M10.268 21a2 2 0 0 0 3.464 0",
@@ -641,6 +737,16 @@ var Blinds = createLucideIcon("blinds", [
641
737
  * This source code is licensed under the ISC license.
642
738
  * See the LICENSE file in the root directory of this source tree.
643
739
  */
740
+ var Bluetooth = createLucideIcon("bluetooth", [["path", {
741
+ d: "m7 7 10 10-5 5V2l5 5L7 17",
742
+ key: "1q5490"
743
+ }]]);
744
+ /**
745
+ * @license lucide-react v0.576.0 - ISC
746
+ *
747
+ * This source code is licensed under the ISC license.
748
+ * See the LICENSE file in the root directory of this source tree.
749
+ */
644
750
  var Bone = createLucideIcon("bone", [["path", {
645
751
  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",
646
752
  key: "w610uw"
@@ -707,6 +813,23 @@ var Box = createLucideIcon("box", [
707
813
  * This source code is licensed under the ISC license.
708
814
  * See the LICENSE file in the root directory of this source tree.
709
815
  */
816
+ var Briefcase = createLucideIcon("briefcase", [["path", {
817
+ d: "M16 20V4a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16",
818
+ key: "jecpp"
819
+ }], ["rect", {
820
+ width: "20",
821
+ height: "14",
822
+ x: "2",
823
+ y: "6",
824
+ rx: "2",
825
+ key: "i6l2r4"
826
+ }]]);
827
+ /**
828
+ * @license lucide-react v0.576.0 - ISC
829
+ *
830
+ * This source code is licensed under the ISC license.
831
+ * See the LICENSE file in the root directory of this source tree.
832
+ */
710
833
  var Bug = createLucideIcon("bug", [
711
834
  ["path", {
712
835
  d: "M12 20v-9",
@@ -759,6 +882,90 @@ var Bug = createLucideIcon("bug", [
759
882
  * This source code is licensed under the ISC license.
760
883
  * See the LICENSE file in the root directory of this source tree.
761
884
  */
885
+ var Building2 = createLucideIcon("building-2", [
886
+ ["path", {
887
+ d: "M10 12h4",
888
+ key: "a56b0p"
889
+ }],
890
+ ["path", {
891
+ d: "M10 8h4",
892
+ key: "1sr2af"
893
+ }],
894
+ ["path", {
895
+ d: "M14 21v-3a2 2 0 0 0-4 0v3",
896
+ key: "1rgiei"
897
+ }],
898
+ ["path", {
899
+ 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",
900
+ key: "secmi2"
901
+ }],
902
+ ["path", {
903
+ d: "M6 21V5a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v16",
904
+ key: "16ra0t"
905
+ }]
906
+ ]);
907
+ /**
908
+ * @license lucide-react v0.576.0 - ISC
909
+ *
910
+ * This source code is licensed under the ISC license.
911
+ * See the LICENSE file in the root directory of this source tree.
912
+ */
913
+ var Building = createLucideIcon("building", [
914
+ ["path", {
915
+ d: "M12 10h.01",
916
+ key: "1nrarc"
917
+ }],
918
+ ["path", {
919
+ d: "M12 14h.01",
920
+ key: "1etili"
921
+ }],
922
+ ["path", {
923
+ d: "M12 6h.01",
924
+ key: "1vi96p"
925
+ }],
926
+ ["path", {
927
+ d: "M16 10h.01",
928
+ key: "1m94wz"
929
+ }],
930
+ ["path", {
931
+ d: "M16 14h.01",
932
+ key: "1gbofw"
933
+ }],
934
+ ["path", {
935
+ d: "M16 6h.01",
936
+ key: "1x0f13"
937
+ }],
938
+ ["path", {
939
+ d: "M8 10h.01",
940
+ key: "19clt8"
941
+ }],
942
+ ["path", {
943
+ d: "M8 14h.01",
944
+ key: "6423bh"
945
+ }],
946
+ ["path", {
947
+ d: "M8 6h.01",
948
+ key: "1dz90k"
949
+ }],
950
+ ["path", {
951
+ d: "M9 22v-3a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v3",
952
+ key: "cabbwy"
953
+ }],
954
+ ["rect", {
955
+ x: "4",
956
+ y: "2",
957
+ width: "16",
958
+ height: "20",
959
+ rx: "2",
960
+ key: "1uxh74"
961
+ }]
962
+ ]);
963
+ /**
964
+ * @license lucide-react v0.576.0 - ISC
965
+ *
966
+ * This source code is licensed under the ISC license.
967
+ * See the LICENSE file in the root directory of this source tree.
968
+ */
762
969
  var Bus = createLucideIcon("bus", [
763
970
  ["path", {
764
971
  d: "M8 6v6",
@@ -835,6 +1042,34 @@ var Cable = createLucideIcon("cable", [
835
1042
  * This source code is licensed under the ISC license.
836
1043
  * See the LICENSE file in the root directory of this source tree.
837
1044
  */
1045
+ var Calendar = createLucideIcon("calendar", [
1046
+ ["path", {
1047
+ d: "M8 2v4",
1048
+ key: "1cmpym"
1049
+ }],
1050
+ ["path", {
1051
+ d: "M16 2v4",
1052
+ key: "4m81vk"
1053
+ }],
1054
+ ["rect", {
1055
+ width: "18",
1056
+ height: "18",
1057
+ x: "3",
1058
+ y: "4",
1059
+ rx: "2",
1060
+ key: "1hopcy"
1061
+ }],
1062
+ ["path", {
1063
+ d: "M3 10h18",
1064
+ key: "8toen8"
1065
+ }]
1066
+ ]);
1067
+ /**
1068
+ * @license lucide-react v0.576.0 - ISC
1069
+ *
1070
+ * This source code is licensed under the ISC license.
1071
+ * See the LICENSE file in the root directory of this source tree.
1072
+ */
838
1073
  var Camera = createLucideIcon("camera", [["path", {
839
1074
  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",
840
1075
  key: "18u6gg"
@@ -1078,6 +1313,21 @@ var CircleDot = createLucideIcon("circle-dot", [["circle", {
1078
1313
  * This source code is licensed under the ISC license.
1079
1314
  * See the LICENSE file in the root directory of this source tree.
1080
1315
  */
1316
+ var CircleParking = createLucideIcon("circle-parking", [["circle", {
1317
+ cx: "12",
1318
+ cy: "12",
1319
+ r: "10",
1320
+ key: "1mglay"
1321
+ }], ["path", {
1322
+ d: "M9 17V7h4a3 3 0 0 1 0 6H9",
1323
+ key: "1dfk2c"
1324
+ }]]);
1325
+ /**
1326
+ * @license lucide-react v0.576.0 - ISC
1327
+ *
1328
+ * This source code is licensed under the ISC license.
1329
+ * See the LICENSE file in the root directory of this source tree.
1330
+ */
1081
1331
  var CirclePause = createLucideIcon("circle-pause", [
1082
1332
  ["circle", {
1083
1333
  cx: "12",
@@ -1433,6 +1683,30 @@ var Cog = createLucideIcon("cog", [
1433
1683
  * This source code is licensed under the ISC license.
1434
1684
  * See the LICENSE file in the root directory of this source tree.
1435
1685
  */
1686
+ var CookingPot = createLucideIcon("cooking-pot", [
1687
+ ["path", {
1688
+ d: "M2 12h20",
1689
+ key: "9i4pu4"
1690
+ }],
1691
+ ["path", {
1692
+ d: "M20 12v8a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2v-8",
1693
+ key: "u0tga0"
1694
+ }],
1695
+ ["path", {
1696
+ d: "m4 8 16-4",
1697
+ key: "16g0ng"
1698
+ }],
1699
+ ["path", {
1700
+ 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",
1701
+ key: "12cejc"
1702
+ }]
1703
+ ]);
1704
+ /**
1705
+ * @license lucide-react v0.576.0 - ISC
1706
+ *
1707
+ * This source code is licensed under the ISC license.
1708
+ * See the LICENSE file in the root directory of this source tree.
1709
+ */
1436
1710
  var CopyPlus = createLucideIcon("copy-plus", [
1437
1711
  ["line", {
1438
1712
  x1: "15",
@@ -1719,6 +1993,38 @@ var Download = createLucideIcon("download", [
1719
1993
  * This source code is licensed under the ISC license.
1720
1994
  * See the LICENSE file in the root directory of this source tree.
1721
1995
  */
1996
+ var Drill = createLucideIcon("drill", [
1997
+ ["path", {
1998
+ 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",
1999
+ key: "ioqxb1"
2000
+ }],
2001
+ ["path", {
2002
+ 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",
2003
+ key: "1rs59n"
2004
+ }],
2005
+ ["path", {
2006
+ d: "M14 4h3a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-3",
2007
+ key: "105ega"
2008
+ }],
2009
+ ["path", {
2010
+ d: "M18 6h4",
2011
+ key: "66u95g"
2012
+ }],
2013
+ ["path", {
2014
+ d: "m5 10-2 8",
2015
+ key: "xt2lic"
2016
+ }],
2017
+ ["path", {
2018
+ d: "m7 18 2-8",
2019
+ key: "1bzku2"
2020
+ }]
2021
+ ]);
2022
+ /**
2023
+ * @license lucide-react v0.576.0 - ISC
2024
+ *
2025
+ * This source code is licensed under the ISC license.
2026
+ * See the LICENSE file in the root directory of this source tree.
2027
+ */
1722
2028
  var Droplet = createLucideIcon("droplet", [["path", {
1723
2029
  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",
1724
2030
  key: "c7niix"
@@ -1742,6 +2048,34 @@ var Droplets = createLucideIcon("droplets", [["path", {
1742
2048
  * This source code is licensed under the ISC license.
1743
2049
  * See the LICENSE file in the root directory of this source tree.
1744
2050
  */
2051
+ var Dumbbell = createLucideIcon("dumbbell", [
2052
+ ["path", {
2053
+ 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",
2054
+ key: "9m4mmf"
2055
+ }],
2056
+ ["path", {
2057
+ d: "m2.5 21.5 1.4-1.4",
2058
+ key: "17g3f0"
2059
+ }],
2060
+ ["path", {
2061
+ d: "m20.1 3.9 1.4-1.4",
2062
+ key: "1qn309"
2063
+ }],
2064
+ ["path", {
2065
+ 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",
2066
+ key: "1t2c92"
2067
+ }],
2068
+ ["path", {
2069
+ d: "m9.6 14.4 4.8-4.8",
2070
+ key: "6umqxw"
2071
+ }]
2072
+ ]);
2073
+ /**
2074
+ * @license lucide-react v0.576.0 - ISC
2075
+ *
2076
+ * This source code is licensed under the ISC license.
2077
+ * See the LICENSE file in the root directory of this source tree.
2078
+ */
1745
2079
  var EllipsisVertical = createLucideIcon("ellipsis-vertical", [
1746
2080
  ["circle", {
1747
2081
  cx: "12",
@@ -1860,6 +2194,42 @@ var Feather = createLucideIcon("feather", [
1860
2194
  * This source code is licensed under the ISC license.
1861
2195
  * See the LICENSE file in the root directory of this source tree.
1862
2196
  */
2197
+ var Fence = createLucideIcon("fence", [
2198
+ ["path", {
2199
+ d: "M4 3 2 5v15c0 .6.4 1 1 1h2c.6 0 1-.4 1-1V5Z",
2200
+ key: "1n2rgs"
2201
+ }],
2202
+ ["path", {
2203
+ d: "M6 8h4",
2204
+ key: "utf9t1"
2205
+ }],
2206
+ ["path", {
2207
+ d: "M6 18h4",
2208
+ key: "12yh4b"
2209
+ }],
2210
+ ["path", {
2211
+ d: "m12 3-2 2v15c0 .6.4 1 1 1h2c.6 0 1-.4 1-1V5Z",
2212
+ key: "3ha7mj"
2213
+ }],
2214
+ ["path", {
2215
+ d: "M14 8h4",
2216
+ key: "1r8wg2"
2217
+ }],
2218
+ ["path", {
2219
+ d: "M14 18h4",
2220
+ key: "1t3kbu"
2221
+ }],
2222
+ ["path", {
2223
+ d: "m20 3-2 2v15c0 .6.4 1 1 1h2c.6 0 1-.4 1-1V5Z",
2224
+ key: "dfd4e2"
2225
+ }]
2226
+ ]);
2227
+ /**
2228
+ * @license lucide-react v0.576.0 - ISC
2229
+ *
2230
+ * This source code is licensed under the ISC license.
2231
+ * See the LICENSE file in the root directory of this source tree.
2232
+ */
1863
2233
  var Film = createLucideIcon("film", [
1864
2234
  ["rect", {
1865
2235
  width: "18",
@@ -1982,6 +2352,56 @@ var FlaskConical = createLucideIcon("flask-conical", [
1982
2352
  * This source code is licensed under the ISC license.
1983
2353
  * See the LICENSE file in the root directory of this source tree.
1984
2354
  */
2355
+ var Flower = createLucideIcon("flower", [
2356
+ ["circle", {
2357
+ cx: "12",
2358
+ cy: "12",
2359
+ r: "3",
2360
+ key: "1v7zrd"
2361
+ }],
2362
+ ["path", {
2363
+ 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",
2364
+ key: "14wa3c"
2365
+ }],
2366
+ ["path", {
2367
+ d: "M12 7.5V9",
2368
+ key: "1oy5b0"
2369
+ }],
2370
+ ["path", {
2371
+ d: "M7.5 12H9",
2372
+ key: "eltsq1"
2373
+ }],
2374
+ ["path", {
2375
+ d: "M16.5 12H15",
2376
+ key: "vk5kw4"
2377
+ }],
2378
+ ["path", {
2379
+ d: "M12 16.5V15",
2380
+ key: "k7eayi"
2381
+ }],
2382
+ ["path", {
2383
+ d: "m8 8 1.88 1.88",
2384
+ key: "nxy4qf"
2385
+ }],
2386
+ ["path", {
2387
+ d: "M14.12 9.88 16 8",
2388
+ key: "1lst6k"
2389
+ }],
2390
+ ["path", {
2391
+ d: "m8 16 1.88-1.88",
2392
+ key: "h2eex1"
2393
+ }],
2394
+ ["path", {
2395
+ d: "M14.12 14.12 16 16",
2396
+ key: "uqkrx3"
2397
+ }]
2398
+ ]);
2399
+ /**
2400
+ * @license lucide-react v0.576.0 - ISC
2401
+ *
2402
+ * This source code is licensed under the ISC license.
2403
+ * See the LICENSE file in the root directory of this source tree.
2404
+ */
1985
2405
  var Footprints = createLucideIcon("footprints", [
1986
2406
  ["path", {
1987
2407
  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",
@@ -2241,6 +2661,77 @@ var Hash = createLucideIcon("hash", [
2241
2661
  * This source code is licensed under the ISC license.
2242
2662
  * See the LICENSE file in the root directory of this source tree.
2243
2663
  */
2664
+ var HeartPulse = createLucideIcon("heart-pulse", [["path", {
2665
+ 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",
2666
+ key: "mvr1a0"
2667
+ }], ["path", {
2668
+ d: "M3.22 13H9.5l.5-1 2 4.5 2-7 1.5 3.5h5.27",
2669
+ key: "auskq0"
2670
+ }]]);
2671
+ /**
2672
+ * @license lucide-react v0.576.0 - ISC
2673
+ *
2674
+ * This source code is licensed under the ISC license.
2675
+ * See the LICENSE file in the root directory of this source tree.
2676
+ */
2677
+ var Heart = createLucideIcon("heart", [["path", {
2678
+ 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",
2679
+ key: "mvr1a0"
2680
+ }]]);
2681
+ /**
2682
+ * @license lucide-react v0.576.0 - ISC
2683
+ *
2684
+ * This source code is licensed under the ISC license.
2685
+ * See the LICENSE file in the root directory of this source tree.
2686
+ */
2687
+ var Heater = createLucideIcon("heater", [
2688
+ ["path", {
2689
+ d: "M11 8c2-3-2-3 0-6",
2690
+ key: "1ldv5m"
2691
+ }],
2692
+ ["path", {
2693
+ d: "M15.5 8c2-3-2-3 0-6",
2694
+ key: "1otqoz"
2695
+ }],
2696
+ ["path", {
2697
+ d: "M6 10h.01",
2698
+ key: "1lbq93"
2699
+ }],
2700
+ ["path", {
2701
+ d: "M6 14h.01",
2702
+ key: "zudwn7"
2703
+ }],
2704
+ ["path", {
2705
+ d: "M10 16v-4",
2706
+ key: "1c25yv"
2707
+ }],
2708
+ ["path", {
2709
+ d: "M14 16v-4",
2710
+ key: "1dkbt8"
2711
+ }],
2712
+ ["path", {
2713
+ d: "M18 16v-4",
2714
+ key: "1yg9me"
2715
+ }],
2716
+ ["path", {
2717
+ 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",
2718
+ key: "1ubg90"
2719
+ }],
2720
+ ["path", {
2721
+ d: "M5 20v2",
2722
+ key: "1abpe8"
2723
+ }],
2724
+ ["path", {
2725
+ d: "M19 20v2",
2726
+ key: "kqn6ft"
2727
+ }]
2728
+ ]);
2729
+ /**
2730
+ * @license lucide-react v0.576.0 - ISC
2731
+ *
2732
+ * This source code is licensed under the ISC license.
2733
+ * See the LICENSE file in the root directory of this source tree.
2734
+ */
2244
2735
  var House = createLucideIcon("house", [["path", {
2245
2736
  d: "M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8",
2246
2737
  key: "5wwlr5"
@@ -2357,6 +2848,141 @@ var Info = createLucideIcon("info", [
2357
2848
  * This source code is licensed under the ISC license.
2358
2849
  * See the LICENSE file in the root directory of this source tree.
2359
2850
  */
2851
+ var KeyRound = createLucideIcon("key-round", [["path", {
2852
+ 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",
2853
+ key: "1s6t7t"
2854
+ }], ["circle", {
2855
+ cx: "16.5",
2856
+ cy: "7.5",
2857
+ r: ".5",
2858
+ fill: "currentColor",
2859
+ key: "w0ekpg"
2860
+ }]]);
2861
+ /**
2862
+ * @license lucide-react v0.576.0 - ISC
2863
+ *
2864
+ * This source code is licensed under the ISC license.
2865
+ * See the LICENSE file in the root directory of this source tree.
2866
+ */
2867
+ var Key = createLucideIcon("key", [
2868
+ ["path", {
2869
+ 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",
2870
+ key: "g0fldk"
2871
+ }],
2872
+ ["path", {
2873
+ d: "m21 2-9.6 9.6",
2874
+ key: "1j0ho8"
2875
+ }],
2876
+ ["circle", {
2877
+ cx: "7.5",
2878
+ cy: "15.5",
2879
+ r: "5.5",
2880
+ key: "yqb3hr"
2881
+ }]
2882
+ ]);
2883
+ /**
2884
+ * @license lucide-react v0.576.0 - ISC
2885
+ *
2886
+ * This source code is licensed under the ISC license.
2887
+ * See the LICENSE file in the root directory of this source tree.
2888
+ */
2889
+ var LampCeiling = createLucideIcon("lamp-ceiling", [
2890
+ ["path", {
2891
+ d: "M12 2v5",
2892
+ key: "nd4vlx"
2893
+ }],
2894
+ ["path", {
2895
+ d: "M14.829 15.998a3 3 0 1 1-5.658 0",
2896
+ key: "1pybiy"
2897
+ }],
2898
+ ["path", {
2899
+ 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",
2900
+ key: "ma1wor"
2901
+ }]
2902
+ ]);
2903
+ /**
2904
+ * @license lucide-react v0.576.0 - ISC
2905
+ *
2906
+ * This source code is licensed under the ISC license.
2907
+ * See the LICENSE file in the root directory of this source tree.
2908
+ */
2909
+ var LampDesk = createLucideIcon("lamp-desk", [
2910
+ ["path", {
2911
+ 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",
2912
+ key: "sb8slu"
2913
+ }],
2914
+ ["path", {
2915
+ d: "m14.207 4.793-3.414 3.414",
2916
+ key: "m2x3oj"
2917
+ }],
2918
+ ["path", {
2919
+ 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",
2920
+ key: "8b3myj"
2921
+ }],
2922
+ ["path", {
2923
+ d: "m9.086 6.5-4.793 4.793a1 1 0 0 0-.18 1.17L7 18",
2924
+ key: "43s6cu"
2925
+ }]
2926
+ ]);
2927
+ /**
2928
+ * @license lucide-react v0.576.0 - ISC
2929
+ *
2930
+ * This source code is licensed under the ISC license.
2931
+ * See the LICENSE file in the root directory of this source tree.
2932
+ */
2933
+ var LampFloor = createLucideIcon("lamp-floor", [
2934
+ ["path", {
2935
+ d: "M12 10v12",
2936
+ key: "6ubwww"
2937
+ }],
2938
+ ["path", {
2939
+ 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",
2940
+ key: "1o95gh"
2941
+ }],
2942
+ ["path", {
2943
+ d: "M9 22h6",
2944
+ key: "1rlq3v"
2945
+ }]
2946
+ ]);
2947
+ /**
2948
+ * @license lucide-react v0.576.0 - ISC
2949
+ *
2950
+ * This source code is licensed under the ISC license.
2951
+ * See the LICENSE file in the root directory of this source tree.
2952
+ */
2953
+ var Lamp = createLucideIcon("lamp", [
2954
+ ["path", {
2955
+ d: "M12 12v6",
2956
+ key: "3ahymv"
2957
+ }],
2958
+ ["path", {
2959
+ 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",
2960
+ key: "1l7kg2"
2961
+ }],
2962
+ ["path", {
2963
+ 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",
2964
+ key: "1mmzpi"
2965
+ }]
2966
+ ]);
2967
+ /**
2968
+ * @license lucide-react v0.576.0 - ISC
2969
+ *
2970
+ * This source code is licensed under the ISC license.
2971
+ * See the LICENSE file in the root directory of this source tree.
2972
+ */
2973
+ var Laptop = createLucideIcon("laptop", [["path", {
2974
+ 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",
2975
+ key: "1pdavp"
2976
+ }], ["path", {
2977
+ d: "M20.054 15.987H3.946",
2978
+ key: "14rxg9"
2979
+ }]]);
2980
+ /**
2981
+ * @license lucide-react v0.576.0 - ISC
2982
+ *
2983
+ * This source code is licensed under the ISC license.
2984
+ * See the LICENSE file in the root directory of this source tree.
2985
+ */
2360
2986
  var Laugh = createLucideIcon("laugh", [
2361
2987
  ["circle", {
2362
2988
  cx: "12",
@@ -2656,6 +3282,33 @@ var Mail = createLucideIcon("mail", [["path", {
2656
3282
  * This source code is licensed under the ISC license.
2657
3283
  * See the LICENSE file in the root directory of this source tree.
2658
3284
  */
3285
+ var Mailbox = createLucideIcon("mailbox", [
3286
+ ["path", {
3287
+ 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",
3288
+ key: "1lbycx"
3289
+ }],
3290
+ ["polyline", {
3291
+ points: "15,9 18,9 18,11",
3292
+ key: "1pm9c0"
3293
+ }],
3294
+ ["path", {
3295
+ d: "M6.5 5C9 5 11 7 11 9.5V17a2 2 0 0 1-2 2",
3296
+ key: "15i455"
3297
+ }],
3298
+ ["line", {
3299
+ x1: "6",
3300
+ x2: "7",
3301
+ y1: "10",
3302
+ y2: "10",
3303
+ key: "1e2scm"
3304
+ }]
3305
+ ]);
3306
+ /**
3307
+ * @license lucide-react v0.576.0 - ISC
3308
+ *
3309
+ * This source code is licensed under the ISC license.
3310
+ * See the LICENSE file in the root directory of this source tree.
3311
+ */
2659
3312
  var MapPin = createLucideIcon("map-pin", [["path", {
2660
3313
  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",
2661
3314
  key: "1r0f0z"
@@ -2745,6 +3398,38 @@ var MessageSquare = createLucideIcon("message-square", [["path", {
2745
3398
  * This source code is licensed under the ISC license.
2746
3399
  * See the LICENSE file in the root directory of this source tree.
2747
3400
  */
3401
+ var MicOff = createLucideIcon("mic-off", [
3402
+ ["path", {
3403
+ d: "M12 19v3",
3404
+ key: "npa21l"
3405
+ }],
3406
+ ["path", {
3407
+ d: "M15 9.34V5a3 3 0 0 0-5.68-1.33",
3408
+ key: "1gzdoj"
3409
+ }],
3410
+ ["path", {
3411
+ d: "M16.95 16.95A7 7 0 0 1 5 12v-2",
3412
+ key: "cqa7eg"
3413
+ }],
3414
+ ["path", {
3415
+ d: "M18.89 13.23A7 7 0 0 0 19 12v-2",
3416
+ key: "16hl24"
3417
+ }],
3418
+ ["path", {
3419
+ d: "m2 2 20 20",
3420
+ key: "1ooewy"
3421
+ }],
3422
+ ["path", {
3423
+ d: "M9 9v3a3 3 0 0 0 5.12 2.12",
3424
+ key: "r2i35w"
3425
+ }]
3426
+ ]);
3427
+ /**
3428
+ * @license lucide-react v0.576.0 - ISC
3429
+ *
3430
+ * This source code is licensed under the ISC license.
3431
+ * See the LICENSE file in the root directory of this source tree.
3432
+ */
2748
3433
  var Mic = createLucideIcon("mic", [
2749
3434
  ["path", {
2750
3435
  d: "M12 19v3",
@@ -2769,6 +3454,42 @@ var Mic = createLucideIcon("mic", [
2769
3454
  * This source code is licensed under the ISC license.
2770
3455
  * See the LICENSE file in the root directory of this source tree.
2771
3456
  */
3457
+ var Microwave = createLucideIcon("microwave", [
3458
+ ["rect", {
3459
+ width: "20",
3460
+ height: "15",
3461
+ x: "2",
3462
+ y: "4",
3463
+ rx: "2",
3464
+ key: "2no95f"
3465
+ }],
3466
+ ["rect", {
3467
+ width: "8",
3468
+ height: "7",
3469
+ x: "6",
3470
+ y: "8",
3471
+ rx: "1",
3472
+ key: "zh9wx"
3473
+ }],
3474
+ ["path", {
3475
+ d: "M18 8v7",
3476
+ key: "o5zi4n"
3477
+ }],
3478
+ ["path", {
3479
+ d: "M6 19v2",
3480
+ key: "1loha6"
3481
+ }],
3482
+ ["path", {
3483
+ d: "M18 19v2",
3484
+ key: "1dawf0"
3485
+ }]
3486
+ ]);
3487
+ /**
3488
+ * @license lucide-react v0.576.0 - ISC
3489
+ *
3490
+ * This source code is licensed under the ISC license.
3491
+ * See the LICENSE file in the root directory of this source tree.
3492
+ */
2772
3493
  var Minimize2 = createLucideIcon("minimize-2", [
2773
3494
  ["path", {
2774
3495
  d: "m14 10 7-7",
@@ -2831,6 +3552,36 @@ var MonitorPlay = createLucideIcon("monitor-play", [
2831
3552
  * This source code is licensed under the ISC license.
2832
3553
  * See the LICENSE file in the root directory of this source tree.
2833
3554
  */
3555
+ var Monitor = createLucideIcon("monitor", [
3556
+ ["rect", {
3557
+ width: "20",
3558
+ height: "14",
3559
+ x: "2",
3560
+ y: "3",
3561
+ rx: "2",
3562
+ key: "48i651"
3563
+ }],
3564
+ ["line", {
3565
+ x1: "8",
3566
+ x2: "16",
3567
+ y1: "21",
3568
+ y2: "21",
3569
+ key: "1svkeh"
3570
+ }],
3571
+ ["line", {
3572
+ x1: "12",
3573
+ x2: "12",
3574
+ y1: "17",
3575
+ y2: "21",
3576
+ key: "vw1qmm"
3577
+ }]
3578
+ ]);
3579
+ /**
3580
+ * @license lucide-react v0.576.0 - ISC
3581
+ *
3582
+ * This source code is licensed under the ISC license.
3583
+ * See the LICENSE file in the root directory of this source tree.
3584
+ */
2834
3585
  var Moon = createLucideIcon("moon", [["path", {
2835
3586
  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",
2836
3587
  key: "kfwtm"
@@ -2841,6 +3592,16 @@ var Moon = createLucideIcon("moon", [["path", {
2841
3592
  * This source code is licensed under the ISC license.
2842
3593
  * See the LICENSE file in the root directory of this source tree.
2843
3594
  */
3595
+ var Mountain = createLucideIcon("mountain", [["path", {
3596
+ d: "m8 3 4 8 5-5 5 15H2L8 3z",
3597
+ key: "otkl63"
3598
+ }]]);
3599
+ /**
3600
+ * @license lucide-react v0.576.0 - ISC
3601
+ *
3602
+ * This source code is licensed under the ISC license.
3603
+ * See the LICENSE file in the root directory of this source tree.
3604
+ */
2844
3605
  var MousePointerClick = createLucideIcon("mouse-pointer-click", [
2845
3606
  ["path", {
2846
3607
  d: "M14 4.1 12 6",
@@ -3103,6 +3864,32 @@ var Pencil = createLucideIcon("pencil", [["path", {
3103
3864
  * This source code is licensed under the ISC license.
3104
3865
  * See the LICENSE file in the root directory of this source tree.
3105
3866
  */
3867
+ var PersonStanding = createLucideIcon("person-standing", [
3868
+ ["circle", {
3869
+ cx: "12",
3870
+ cy: "5",
3871
+ r: "1",
3872
+ key: "gxeob9"
3873
+ }],
3874
+ ["path", {
3875
+ d: "m9 20 3-6 3 6",
3876
+ key: "se2kox"
3877
+ }],
3878
+ ["path", {
3879
+ d: "m6 8 6 2 6-2",
3880
+ key: "4o3us4"
3881
+ }],
3882
+ ["path", {
3883
+ d: "M12 10v4",
3884
+ key: "1kjpxc"
3885
+ }]
3886
+ ]);
3887
+ /**
3888
+ * @license lucide-react v0.576.0 - ISC
3889
+ *
3890
+ * This source code is licensed under the ISC license.
3891
+ * See the LICENSE file in the root directory of this source tree.
3892
+ */
3106
3893
  var Phone = createLucideIcon("phone", [["path", {
3107
3894
  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",
3108
3895
  key: "9njp5v"
@@ -3153,6 +3940,34 @@ var Play = createLucideIcon("play", [["path", {
3153
3940
  * This source code is licensed under the ISC license.
3154
3941
  * See the LICENSE file in the root directory of this source tree.
3155
3942
  */
3943
+ var PlugZap = createLucideIcon("plug-zap", [
3944
+ ["path", {
3945
+ 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",
3946
+ key: "goz73y"
3947
+ }],
3948
+ ["path", {
3949
+ d: "m2 22 3-3",
3950
+ key: "19mgm9"
3951
+ }],
3952
+ ["path", {
3953
+ d: "M7.5 13.5 10 11",
3954
+ key: "7xgeeb"
3955
+ }],
3956
+ ["path", {
3957
+ d: "M10.5 16.5 13 14",
3958
+ key: "10btkg"
3959
+ }],
3960
+ ["path", {
3961
+ d: "m18 3-4 4h6l-4 4",
3962
+ key: "16psg9"
3963
+ }]
3964
+ ]);
3965
+ /**
3966
+ * @license lucide-react v0.576.0 - ISC
3967
+ *
3968
+ * This source code is licensed under the ISC license.
3969
+ * See the LICENSE file in the root directory of this source tree.
3970
+ */
3156
3971
  var Plus = createLucideIcon("plus", [["path", {
3157
3972
  d: "M5 12h14",
3158
3973
  key: "1ays0h"
@@ -3227,6 +4042,64 @@ var Power = createLucideIcon("power", [["path", {
3227
4042
  * This source code is licensed under the ISC license.
3228
4043
  * See the LICENSE file in the root directory of this source tree.
3229
4044
  */
4045
+ var Printer = createLucideIcon("printer", [
4046
+ ["path", {
4047
+ 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",
4048
+ key: "143wyd"
4049
+ }],
4050
+ ["path", {
4051
+ d: "M6 9V3a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v6",
4052
+ key: "1itne7"
4053
+ }],
4054
+ ["rect", {
4055
+ x: "6",
4056
+ y: "14",
4057
+ width: "12",
4058
+ height: "8",
4059
+ rx: "1",
4060
+ key: "1ue0tg"
4061
+ }]
4062
+ ]);
4063
+ /**
4064
+ * @license lucide-react v0.576.0 - ISC
4065
+ *
4066
+ * This source code is licensed under the ISC license.
4067
+ * See the LICENSE file in the root directory of this source tree.
4068
+ */
4069
+ var Projector = createLucideIcon("projector", [
4070
+ ["path", {
4071
+ d: "M5 7 3 5",
4072
+ key: "1yys58"
4073
+ }],
4074
+ ["path", {
4075
+ d: "M9 6V3",
4076
+ key: "1ptz9u"
4077
+ }],
4078
+ ["path", {
4079
+ d: "m13 7 2-2",
4080
+ key: "1w3vmq"
4081
+ }],
4082
+ ["circle", {
4083
+ cx: "9",
4084
+ cy: "13",
4085
+ r: "3",
4086
+ key: "1mma13"
4087
+ }],
4088
+ ["path", {
4089
+ 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",
4090
+ key: "2frwzc"
4091
+ }],
4092
+ ["path", {
4093
+ d: "M16 16h2",
4094
+ key: "dnq2od"
4095
+ }]
4096
+ ]);
4097
+ /**
4098
+ * @license lucide-react v0.576.0 - ISC
4099
+ *
4100
+ * This source code is licensed under the ISC license.
4101
+ * See the LICENSE file in the root directory of this source tree.
4102
+ */
3230
4103
  var QrCode$1 = createLucideIcon("qr-code", [
3231
4104
  ["rect", {
3232
4105
  width: "5",
@@ -3429,6 +4302,26 @@ var RefreshCw = createLucideIcon("refresh-cw", [
3429
4302
  * This source code is licensed under the ISC license.
3430
4303
  * See the LICENSE file in the root directory of this source tree.
3431
4304
  */
4305
+ var Refrigerator = createLucideIcon("refrigerator", [
4306
+ ["path", {
4307
+ 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",
4308
+ key: "fpq118"
4309
+ }],
4310
+ ["path", {
4311
+ d: "M5 10h14",
4312
+ key: "elsbfy"
4313
+ }],
4314
+ ["path", {
4315
+ d: "M15 7v6",
4316
+ key: "1nx30x"
4317
+ }]
4318
+ ]);
4319
+ /**
4320
+ * @license lucide-react v0.576.0 - ISC
4321
+ *
4322
+ * This source code is licensed under the ISC license.
4323
+ * See the LICENSE file in the root directory of this source tree.
4324
+ */
3432
4325
  var RotateCcw = createLucideIcon("rotate-ccw", [["path", {
3433
4326
  d: "M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",
3434
4327
  key: "1357e3"
@@ -3455,6 +4348,66 @@ var RotateCw = createLucideIcon("rotate-cw", [["path", {
3455
4348
  * This source code is licensed under the ISC license.
3456
4349
  * See the LICENSE file in the root directory of this source tree.
3457
4350
  */
4351
+ var Route = createLucideIcon("route", [
4352
+ ["circle", {
4353
+ cx: "6",
4354
+ cy: "19",
4355
+ r: "3",
4356
+ key: "1kj8tv"
4357
+ }],
4358
+ ["path", {
4359
+ d: "M9 19h8.5a3.5 3.5 0 0 0 0-7h-11a3.5 3.5 0 0 1 0-7H15",
4360
+ key: "1d8sl"
4361
+ }],
4362
+ ["circle", {
4363
+ cx: "18",
4364
+ cy: "5",
4365
+ r: "3",
4366
+ key: "gq8acd"
4367
+ }]
4368
+ ]);
4369
+ /**
4370
+ * @license lucide-react v0.576.0 - ISC
4371
+ *
4372
+ * This source code is licensed under the ISC license.
4373
+ * See the LICENSE file in the root directory of this source tree.
4374
+ */
4375
+ var Router = createLucideIcon("router", [
4376
+ ["rect", {
4377
+ width: "20",
4378
+ height: "8",
4379
+ x: "2",
4380
+ y: "14",
4381
+ rx: "2",
4382
+ key: "w68u3i"
4383
+ }],
4384
+ ["path", {
4385
+ d: "M6.01 18H6",
4386
+ key: "19vcac"
4387
+ }],
4388
+ ["path", {
4389
+ d: "M10.01 18H10",
4390
+ key: "uamcmx"
4391
+ }],
4392
+ ["path", {
4393
+ d: "M15 10v4",
4394
+ key: "qjz1xs"
4395
+ }],
4396
+ ["path", {
4397
+ d: "M17.84 7.17a4 4 0 0 0-5.66 0",
4398
+ key: "1rif40"
4399
+ }],
4400
+ ["path", {
4401
+ d: "M20.66 4.34a8 8 0 0 0-11.31 0",
4402
+ key: "6a5xfq"
4403
+ }]
4404
+ ]);
4405
+ /**
4406
+ * @license lucide-react v0.576.0 - ISC
4407
+ *
4408
+ * This source code is licensed under the ISC license.
4409
+ * See the LICENSE file in the root directory of this source tree.
4410
+ */
3458
4411
  var Sailboat = createLucideIcon("sailboat", [
3459
4412
  ["path", {
3460
4413
  d: "M10 2v15",
@@ -3928,6 +4881,64 @@ var Snowflake = createLucideIcon("snowflake", [
3928
4881
  * This source code is licensed under the ISC license.
3929
4882
  * See the LICENSE file in the root directory of this source tree.
3930
4883
  */
4884
+ var Sofa = createLucideIcon("sofa", [
4885
+ ["path", {
4886
+ d: "M20 9V6a2 2 0 0 0-2-2H6a2 2 0 0 0-2 2v3",
4887
+ key: "1dgpiv"
4888
+ }],
4889
+ ["path", {
4890
+ 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",
4891
+ key: "xacw8m"
4892
+ }],
4893
+ ["path", {
4894
+ d: "M4 18v2",
4895
+ key: "jwo5n2"
4896
+ }],
4897
+ ["path", {
4898
+ d: "M20 18v2",
4899
+ key: "1ar1qi"
4900
+ }],
4901
+ ["path", {
4902
+ d: "M12 4v9",
4903
+ key: "oqhhn3"
4904
+ }]
4905
+ ]);
4906
+ /**
4907
+ * @license lucide-react v0.576.0 - ISC
4908
+ *
4909
+ * This source code is licensed under the ISC license.
4910
+ * See the LICENSE file in the root directory of this source tree.
4911
+ */
4912
+ var Speaker = createLucideIcon("speaker", [
4913
+ ["rect", {
4914
+ width: "16",
4915
+ height: "20",
4916
+ x: "4",
4917
+ y: "2",
4918
+ rx: "2",
4919
+ key: "1nb95v"
4920
+ }],
4921
+ ["path", {
4922
+ d: "M12 6h.01",
4923
+ key: "1vi96p"
4924
+ }],
4925
+ ["circle", {
4926
+ cx: "12",
4927
+ cy: "14",
4928
+ r: "4",
4929
+ key: "1jruaj"
4930
+ }],
4931
+ ["path", {
4932
+ d: "M12 14h.01",
4933
+ key: "1etili"
4934
+ }]
4935
+ ]);
4936
+ /**
4937
+ * @license lucide-react v0.576.0 - ISC
4938
+ *
4939
+ * This source code is licensed under the ISC license.
4940
+ * See the LICENSE file in the root directory of this source tree.
4941
+ */
3931
4942
  var Sparkles = createLucideIcon("sparkles", [
3932
4943
  ["path", {
3933
4944
  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",
@@ -3998,6 +5009,26 @@ var Star = createLucideIcon("star", [["path", {
3998
5009
  * This source code is licensed under the ISC license.
3999
5010
  * See the LICENSE file in the root directory of this source tree.
4000
5011
  */
5012
+ var Store = createLucideIcon("store", [
5013
+ ["path", {
5014
+ d: "M15 21v-5a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v5",
5015
+ key: "slp6dd"
5016
+ }],
5017
+ ["path", {
5018
+ 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",
5019
+ key: "o0xfot"
5020
+ }],
5021
+ ["path", {
5022
+ d: "M4 10.95V19a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8.05",
5023
+ key: "wn3emo"
5024
+ }]
5025
+ ]);
5026
+ /**
5027
+ * @license lucide-react v0.576.0 - ISC
5028
+ *
5029
+ * This source code is licensed under the ISC license.
5030
+ * See the LICENSE file in the root directory of this source tree.
5031
+ */
4001
5032
  var SunMedium = createLucideIcon("sun-medium", [
4002
5033
  ["circle", {
4003
5034
  cx: "12",
@@ -4130,6 +5161,27 @@ var Sunrise = createLucideIcon("sunrise", [
4130
5161
  * This source code is licensed under the ISC license.
4131
5162
  * See the LICENSE file in the root directory of this source tree.
4132
5163
  */
5164
+ var Tablet = createLucideIcon("tablet", [["rect", {
5165
+ width: "16",
5166
+ height: "20",
5167
+ x: "4",
5168
+ y: "2",
5169
+ rx: "2",
5170
+ ry: "2",
5171
+ key: "76otgf"
5172
+ }], ["line", {
5173
+ x1: "12",
5174
+ x2: "12.01",
5175
+ y1: "18",
5176
+ y2: "18",
5177
+ key: "1dp563"
5178
+ }]]);
5179
+ /**
5180
+ * @license lucide-react v0.576.0 - ISC
5181
+ *
5182
+ * This source code is licensed under the ISC license.
5183
+ * See the LICENSE file in the root directory of this source tree.
5184
+ */
4133
5185
  var Tag = createLucideIcon("tag", [["path", {
4134
5186
  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",
4135
5187
  key: "vktsd0"
@@ -4172,6 +5224,46 @@ var Target = createLucideIcon("target", [
4172
5224
  * This source code is licensed under the ISC license.
4173
5225
  * See the LICENSE file in the root directory of this source tree.
4174
5226
  */
5227
+ var ThermometerSnowflake = createLucideIcon("thermometer-snowflake", [
5228
+ ["path", {
5229
+ d: "m10 20-1.25-2.5L6 18",
5230
+ key: "18frcb"
5231
+ }],
5232
+ ["path", {
5233
+ d: "M10 4 8.75 6.5 6 6",
5234
+ key: "7mghy3"
5235
+ }],
5236
+ ["path", {
5237
+ d: "M10.585 15H10",
5238
+ key: "4nqulp"
5239
+ }],
5240
+ ["path", {
5241
+ d: "M2 12h6.5L10 9",
5242
+ key: "kv9z4n"
5243
+ }],
5244
+ ["path", {
5245
+ d: "M20 14.54a4 4 0 1 1-4 0V4a2 2 0 0 1 4 0z",
5246
+ key: "yu0u2z"
5247
+ }],
5248
+ ["path", {
5249
+ d: "m4 10 1.5 2L4 14",
5250
+ key: "k9enpj"
5251
+ }],
5252
+ ["path", {
5253
+ d: "m7 21 3-6-1.5-3",
5254
+ key: "j8hb9u"
5255
+ }],
5256
+ ["path", {
5257
+ d: "m7 3 3 6h2",
5258
+ key: "1bbqgq"
5259
+ }]
5260
+ ]);
5261
+ /**
5262
+ * @license lucide-react v0.576.0 - ISC
5263
+ *
5264
+ * This source code is licensed under the ISC license.
5265
+ * See the LICENSE file in the root directory of this source tree.
5266
+ */
4175
5267
  var Thermometer = createLucideIcon("thermometer", [["path", {
4176
5268
  d: "M14 4v10.54a4 4 0 1 1-4 0V4a2 2 0 0 1 4 0Z",
4177
5269
  key: "17jzev"
@@ -4182,6 +5274,66 @@ var Thermometer = createLucideIcon("thermometer", [["path", {
4182
5274
  * This source code is licensed under the ISC license.
4183
5275
  * See the LICENSE file in the root directory of this source tree.
4184
5276
  */
5277
+ var ThermometerSun = createLucideIcon("thermometer-sun", [
5278
+ ["path", {
5279
+ d: "M12 2v2",
5280
+ key: "tus03m"
5281
+ }],
5282
+ ["path", {
5283
+ d: "M12 8a4 4 0 0 0-1.645 7.647",
5284
+ key: "wz5p04"
5285
+ }],
5286
+ ["path", {
5287
+ d: "M2 12h2",
5288
+ key: "1t8f8n"
5289
+ }],
5290
+ ["path", {
5291
+ d: "M20 14.54a4 4 0 1 1-4 0V4a2 2 0 0 1 4 0z",
5292
+ key: "yu0u2z"
5293
+ }],
5294
+ ["path", {
5295
+ d: "m4.93 4.93 1.41 1.41",
5296
+ key: "149t6j"
5297
+ }],
5298
+ ["path", {
5299
+ d: "m6.34 17.66-1.41 1.41",
5300
+ key: "1m8zz5"
5301
+ }]
5302
+ ]);
5303
+ /**
5304
+ * @license lucide-react v0.576.0 - ISC
5305
+ *
5306
+ * This source code is licensed under the ISC license.
5307
+ * See the LICENSE file in the root directory of this source tree.
5308
+ */
5309
+ var Timer = createLucideIcon("timer", [
5310
+ ["line", {
5311
+ x1: "10",
5312
+ x2: "14",
5313
+ y1: "2",
5314
+ y2: "2",
5315
+ key: "14vaq8"
5316
+ }],
5317
+ ["line", {
5318
+ x1: "12",
5319
+ x2: "15",
5320
+ y1: "14",
5321
+ y2: "11",
5322
+ key: "17fdiu"
5323
+ }],
5324
+ ["circle", {
5325
+ cx: "12",
5326
+ cy: "14",
5327
+ r: "8",
5328
+ key: "1e1u0o"
5329
+ }]
5330
+ ]);
5331
+ /**
5332
+ * @license lucide-react v0.576.0 - ISC
5333
+ *
5334
+ * This source code is licensed under the ISC license.
5335
+ * See the LICENSE file in the root directory of this source tree.
5336
+ */
4185
5337
  var ToggleLeft = createLucideIcon("toggle-left", [["circle", {
4186
5338
  cx: "9",
4187
5339
  cy: "12",
@@ -4328,6 +5480,43 @@ var Trash2 = createLucideIcon("trash-2", [
4328
5480
  * This source code is licensed under the ISC license.
4329
5481
  * See the LICENSE file in the root directory of this source tree.
4330
5482
  */
5483
+ var TreePine = createLucideIcon("tree-pine", [["path", {
5484
+ 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",
5485
+ key: "cpyugq"
5486
+ }], ["path", {
5487
+ d: "M12 22v-3",
5488
+ key: "kmzjlo"
5489
+ }]]);
5490
+ /**
5491
+ * @license lucide-react v0.576.0 - ISC
5492
+ *
5493
+ * This source code is licensed under the ISC license.
5494
+ * See the LICENSE file in the root directory of this source tree.
5495
+ */
5496
+ var Trees = createLucideIcon("trees", [
5497
+ ["path", {
5498
+ d: "M10 10v.2A3 3 0 0 1 8.9 16H5a3 3 0 0 1-1-5.8V10a3 3 0 0 1 6 0Z",
5499
+ key: "1l6gj6"
5500
+ }],
5501
+ ["path", {
5502
+ d: "M7 16v6",
5503
+ key: "1a82de"
5504
+ }],
5505
+ ["path", {
5506
+ d: "M13 19v3",
5507
+ key: "13sx9i"
5508
+ }],
5509
+ ["path", {
5510
+ 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",
5511
+ key: "1sj9kv"
5512
+ }]
5513
+ ]);
5514
+ /**
5515
+ * @license lucide-react v0.576.0 - ISC
5516
+ *
5517
+ * This source code is licensed under the ISC license.
5518
+ * See the LICENSE file in the root directory of this source tree.
5519
+ */
4331
5520
  var TrendingUp = createLucideIcon("trending-up", [["path", {
4332
5521
  d: "M16 7h6v6",
4333
5522
  key: "box55l"
@@ -4406,6 +5595,23 @@ var Truck = createLucideIcon("truck", [
4406
5595
  * This source code is licensed under the ISC license.
4407
5596
  * See the LICENSE file in the root directory of this source tree.
4408
5597
  */
5598
+ var Tv = createLucideIcon("tv", [["path", {
5599
+ d: "m17 2-5 5-5-5",
5600
+ key: "16satq"
5601
+ }], ["rect", {
5602
+ width: "20",
5603
+ height: "15",
5604
+ x: "2",
5605
+ y: "7",
5606
+ rx: "2",
5607
+ key: "1e6viu"
5608
+ }]]);
5609
+ /**
5610
+ * @license lucide-react v0.576.0 - ISC
5611
+ *
5612
+ * This source code is licensed under the ISC license.
5613
+ * See the LICENSE file in the root directory of this source tree.
5614
+ */
4409
5615
  var Type = createLucideIcon("type", [
4410
5616
  ["path", {
4411
5617
  d: "M12 4v16",
@@ -4426,6 +5632,26 @@ var Type = createLucideIcon("type", [
4426
5632
  * This source code is licensed under the ISC license.
4427
5633
  * See the LICENSE file in the root directory of this source tree.
4428
5634
  */
5635
+ var Umbrella = createLucideIcon("umbrella", [
5636
+ ["path", {
5637
+ d: "M12 13v7a2 2 0 0 0 4 0",
5638
+ key: "rpgb42"
5639
+ }],
5640
+ ["path", {
5641
+ d: "M12 2v2",
5642
+ key: "tus03m"
5643
+ }],
5644
+ ["path", {
5645
+ 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",
5646
+ key: "124nyo"
5647
+ }]
5648
+ ]);
5649
+ /**
5650
+ * @license lucide-react v0.576.0 - ISC
5651
+ *
5652
+ * This source code is licensed under the ISC license.
5653
+ * See the LICENSE file in the root directory of this source tree.
5654
+ */
4429
5655
  var Undo2 = createLucideIcon("undo-2", [["path", {
4430
5656
  d: "M9 14 4 9l5-5",
4431
5657
  key: "102s5s"
@@ -4556,6 +5782,26 @@ var UtensilsCrossed = createLucideIcon("utensils-crossed", [
4556
5782
  * This source code is licensed under the ISC license.
4557
5783
  * See the LICENSE file in the root directory of this source tree.
4558
5784
  */
5785
+ var Utensils = createLucideIcon("utensils", [
5786
+ ["path", {
5787
+ d: "M3 2v7c0 1.1.9 2 2 2h4a2 2 0 0 0 2-2V2",
5788
+ key: "cjf0a3"
5789
+ }],
5790
+ ["path", {
5791
+ d: "M7 2v20",
5792
+ key: "1473qp"
5793
+ }],
5794
+ ["path", {
5795
+ d: "M21 15V2a5 5 0 0 0-5 5v6c0 1.1.9 2 2 2h3Zm0 0v7",
5796
+ key: "j28e5"
5797
+ }]
5798
+ ]);
5799
+ /**
5800
+ * @license lucide-react v0.576.0 - ISC
5801
+ *
5802
+ * This source code is licensed under the ISC license.
5803
+ * See the LICENSE file in the root directory of this source tree.
5804
+ */
4559
5805
  var Vibrate = createLucideIcon("vibrate", [
4560
5806
  ["path", {
4561
5807
  d: "m2 8 2 2-2 2 2 2-2 2",
@@ -4580,6 +5826,43 @@ var Vibrate = createLucideIcon("vibrate", [
4580
5826
  * This source code is licensed under the ISC license.
4581
5827
  * See the LICENSE file in the root directory of this source tree.
4582
5828
  */
5829
+ var VideoOff = createLucideIcon("video-off", [
5830
+ ["path", {
5831
+ d: "M10.66 6H14a2 2 0 0 1 2 2v2.5l5.248-3.062A.5.5 0 0 1 22 7.87v8.196",
5832
+ key: "w8jjjt"
5833
+ }],
5834
+ ["path", {
5835
+ d: "M16 16a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h2",
5836
+ key: "1xawa7"
5837
+ }],
5838
+ ["path", {
5839
+ d: "m2 2 20 20",
5840
+ key: "1ooewy"
5841
+ }]
5842
+ ]);
5843
+ /**
5844
+ * @license lucide-react v0.576.0 - ISC
5845
+ *
5846
+ * This source code is licensed under the ISC license.
5847
+ * See the LICENSE file in the root directory of this source tree.
5848
+ */
5849
+ var Video = createLucideIcon("video", [["path", {
5850
+ d: "m16 13 5.223 3.482a.5.5 0 0 0 .777-.416V7.87a.5.5 0 0 0-.752-.432L16 10.5",
5851
+ key: "ftymec"
5852
+ }], ["rect", {
5853
+ x: "2",
5854
+ y: "6",
5855
+ width: "14",
5856
+ height: "12",
5857
+ rx: "2",
5858
+ key: "158x01"
5859
+ }]]);
5860
+ /**
5861
+ * @license lucide-react v0.576.0 - ISC
5862
+ *
5863
+ * This source code is licensed under the ISC license.
5864
+ * See the LICENSE file in the root directory of this source tree.
5865
+ */
4583
5866
  var Volume2 = createLucideIcon("volume-2", [
4584
5867
  ["path", {
4585
5868
  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",
@@ -4626,6 +5909,92 @@ var VolumeX = createLucideIcon("volume-x", [
4626
5909
  * This source code is licensed under the ISC license.
4627
5910
  * See the LICENSE file in the root directory of this source tree.
4628
5911
  */
5912
+ var Warehouse = createLucideIcon("warehouse", [
5913
+ ["path", {
5914
+ d: "M18 21V10a1 1 0 0 0-1-1H7a1 1 0 0 0-1 1v11",
5915
+ key: "pb2vm6"
5916
+ }],
5917
+ ["path", {
5918
+ 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",
5919
+ key: "doq5xv"
5920
+ }],
5921
+ ["path", {
5922
+ d: "M6 13h12",
5923
+ key: "yf64js"
5924
+ }],
5925
+ ["path", {
5926
+ d: "M6 17h12",
5927
+ key: "1jwigz"
5928
+ }]
5929
+ ]);
5930
+ /**
5931
+ * @license lucide-react v0.576.0 - ISC
5932
+ *
5933
+ * This source code is licensed under the ISC license.
5934
+ * See the LICENSE file in the root directory of this source tree.
5935
+ */
5936
+ var WashingMachine = createLucideIcon("washing-machine", [
5937
+ ["path", {
5938
+ d: "M3 6h3",
5939
+ key: "155dbl"
5940
+ }],
5941
+ ["path", {
5942
+ d: "M17 6h.01",
5943
+ key: "e2y6kg"
5944
+ }],
5945
+ ["rect", {
5946
+ width: "18",
5947
+ height: "20",
5948
+ x: "3",
5949
+ y: "2",
5950
+ rx: "2",
5951
+ key: "od3kk9"
5952
+ }],
5953
+ ["circle", {
5954
+ cx: "12",
5955
+ cy: "13",
5956
+ r: "5",
5957
+ key: "nlbqau"
5958
+ }],
5959
+ ["path", {
5960
+ d: "M12 18a2.5 2.5 0 0 0 0-5 2.5 2.5 0 0 1 0-5",
5961
+ key: "17lach"
5962
+ }]
5963
+ ]);
5964
+ /**
5965
+ * @license lucide-react v0.576.0 - ISC
5966
+ *
5967
+ * This source code is licensed under the ISC license.
5968
+ * See the LICENSE file in the root directory of this source tree.
5969
+ */
5970
+ var WavesLadder = createLucideIcon("waves-ladder", [
5971
+ ["path", {
5972
+ d: "M19 5a2 2 0 0 0-2 2v11",
5973
+ key: "s41o68"
5974
+ }],
5975
+ ["path", {
5976
+ 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",
5977
+ key: "rd2r6e"
5978
+ }],
5979
+ ["path", {
5980
+ d: "M7 13h10",
5981
+ key: "1rwob1"
5982
+ }],
5983
+ ["path", {
5984
+ d: "M7 9h10",
5985
+ key: "12czzb"
5986
+ }],
5987
+ ["path", {
5988
+ d: "M9 5a2 2 0 0 0-2 2v11",
5989
+ key: "x0q4gh"
5990
+ }]
5991
+ ]);
5992
+ /**
5993
+ * @license lucide-react v0.576.0 - ISC
5994
+ *
5995
+ * This source code is licensed under the ISC license.
5996
+ * See the LICENSE file in the root directory of this source tree.
5997
+ */
4629
5998
  var Waves = createLucideIcon("waves", [
4630
5999
  ["path", {
4631
6000
  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",
@@ -7215,6 +8584,8 @@ var useVideoclipsListSources = trpc.videoclips.listSources.useQuery;
7215
8584
  var useVideoclipsGetClipPlayback = trpc.videoclips.getClipPlayback.useQuery;
7216
8585
  /** Generated alias around `trpc.videoclips.readClipBytes.useQuery`. */
7217
8586
  var useVideoclipsReadClipBytes = trpc.videoclips.readClipBytes.useQuery;
8587
+ /** Generated alias around `trpc.videoclips.dialClipStream.useQuery`. */
8588
+ var useVideoclipsDialClipStream = trpc.videoclips.dialClipStream.useQuery;
7218
8589
  /** Generated alias around `trpc.waterHeater.setTargetTemp.useMutation`. */
7219
8590
  var useWaterHeaterSetTargetTemp = trpc.waterHeater.setTargetTemp.useMutation;
7220
8591
  /** Generated alias around `trpc.waterHeater.setOperationMode.useMutation`. */
@@ -22424,7 +23795,7 @@ function RecordingPanel({ deviceId }) {
22424
23795
  * Module-Federation `WidgetRegistry`. ids are namespaced `host/<name>`. */
22425
23796
  var HOST_WIDGETS = {
22426
23797
  "host/motion-zones-grid": (0, react$1.lazy)(() => Promise.resolve().then(() => require("./MotionZonesSettings-BK9R9NIr.cjs")).then((m) => ({ default: m.MotionZonesSettings }))),
22427
- "host/privacy-mask-grid": (0, react$1.lazy)(() => Promise.resolve().then(() => require("./PrivacyMaskSettings-DfZAFg32.cjs")).then((m) => ({ default: m.PrivacyMaskSettings }))),
23798
+ "host/privacy-mask-grid": (0, react$1.lazy)(() => Promise.resolve().then(() => require("./PrivacyMaskSettings-BqjXsXZR.cjs")).then((m) => ({ default: m.PrivacyMaskSettings }))),
22428
23799
  "host/ptz-panel": PtzPanel,
22429
23800
  "host/navigation-panel": NavigationPanel,
22430
23801
  "host/consumables-panel": ConsumablesPanel,
@@ -31030,6 +32401,212 @@ function DataTableCard({ row, rowIndex, columns, bordered, onRowClick, rowClassN
31030
32401
  });
31031
32402
  }
31032
32403
  //#endregion
32404
+ //#region src/composites/device-list/fuzzy-match.ts
32405
+ /**
32406
+ * fuzzy-match — case and separator-insensitive text search helper.
32407
+ *
32408
+ * Normalization rule: lowercase + strip all runs of hyphens, underscores and
32409
+ * whitespace entirely. This makes `Tapparella cucina` and `tapparella-cucina`
32410
+ * both normalize to `tapparellacucina`, so a substring match succeeds in
32411
+ * either direction.
32412
+ */
32413
+ /**
32414
+ * Strips hyphens, underscores and whitespace runs from `s` and lowercases it.
32415
+ *
32416
+ * @example
32417
+ * normalizeForSearch('Tapparella cucina') // 'tapparellacucina'
32418
+ * normalizeForSearch('tapparella-cucina') // 'tapparellacucina'
32419
+ * normalizeForSearch('tapparella_cucina') // 'tapparellacucina'
32420
+ */
32421
+ function normalizeForSearch(s) {
32422
+ return s.toLowerCase().replace(/[-_\s]+/g, "");
32423
+ }
32424
+ /**
32425
+ * Returns `true` when the normalized form of `target` contains the normalized
32426
+ * form of `query`. An empty query always matches.
32427
+ *
32428
+ * @example
32429
+ * fuzzyMatch('Tapparella cucina', 'tapparella-cucina') // true
32430
+ * fuzzyMatch('tapparella cucina', 'Tapparella-Cucina') // true
32431
+ * fuzzyMatch('xyz', 'tapparella-cucina') // false
32432
+ */
32433
+ function fuzzyMatch(query, target) {
32434
+ const nq = normalizeForSearch(query);
32435
+ if (nq === "") return true;
32436
+ return normalizeForSearch(target).includes(nq);
32437
+ }
32438
+ //#endregion
32439
+ //#region src/composites/data-table-filter.ts
32440
+ /**
32441
+ * Per-instance filtering for a `DataTable` (or any row list): a search box
32442
+ * and a set of facet chips, both DERIVED from the rows the instance renders.
32443
+ *
32444
+ * Pure — no React. The state lives with the caller (`useDataTableFilter`), so
32445
+ * two tables on one page each carry their own filter, and the caller keeps the
32446
+ * FILTERED set it renders: a table whose selection acts on "what is on
32447
+ * screen" has to know what that is, which a filter hidden inside the table
32448
+ * could not tell it.
32449
+ *
32450
+ * Two rules, both load-bearing:
32451
+ * - **Facets are derived from the rows present**, most common first. A
32452
+ * hand-listed set goes stale the day a provider adds a type and offers
32453
+ * chips that match nothing.
32454
+ * - **A selected facet no row carries is ignored**, not applied. The chip is
32455
+ * not drawn (there is no row to derive it from), and an invisible filter
32456
+ * that empties the table is a table that looks broken.
32457
+ */
32458
+ var EMPTY_DATA_TABLE_FILTER = {
32459
+ search: "",
32460
+ facets: []
32461
+ };
32462
+ /**
32463
+ * The facet chips for these rows: one per distinct value, most common first,
32464
+ * ties by value.
32465
+ */
32466
+ function dataTableFacets(rows, facetValue) {
32467
+ if (facetValue === void 0) return [];
32468
+ const counts = /* @__PURE__ */ new Map();
32469
+ for (const row of rows) {
32470
+ const value = facetValue(row);
32471
+ counts.set(value, (counts.get(value) ?? 0) + 1);
32472
+ }
32473
+ return [...counts.entries()].map(([value, count]) => ({
32474
+ value,
32475
+ count
32476
+ })).toSorted((a, b) => b.count - a.count || a.value.localeCompare(b.value));
32477
+ }
32478
+ function isDataTableFilterActive(state) {
32479
+ return state.search.trim() !== "" || state.facets.length > 0;
32480
+ }
32481
+ /** A new state with `value` added to, or removed from, the selected facets. */
32482
+ function toggleDataTableFacet(state, value) {
32483
+ return {
32484
+ ...state,
32485
+ facets: state.facets.includes(value) ? state.facets.filter((v) => v !== value) : [...state.facets, value]
32486
+ };
32487
+ }
32488
+ /**
32489
+ * The rows that survive the filter, in their incoming order.
32490
+ *
32491
+ * A selected facet that none of `rows` carries is dropped from the effective
32492
+ * selection (see the header), so a chip that is not on screen never filters.
32493
+ */
32494
+ function filterDataTableRows(rows, state, config) {
32495
+ const needle = state.search.trim();
32496
+ const facetValue = config.facetValue;
32497
+ const present = new Set(dataTableFacets(rows, facetValue).map((f) => f.value));
32498
+ const selected = new Set(state.facets.filter((v) => present.has(v)));
32499
+ return rows.filter((row) => {
32500
+ if (selected.size > 0 && facetValue !== void 0 && !selected.has(facetValue(row))) return false;
32501
+ if (needle !== "" && !config.searchText(row).some((text) => fuzzyMatch(needle, text))) return false;
32502
+ return true;
32503
+ });
32504
+ }
32505
+ //#endregion
32506
+ //#region src/composites/data-table-filter-bar.tsx
32507
+ /**
32508
+ * The controls of one table's filter: a search box and the facet chips.
32509
+ *
32510
+ * Controlled — the state comes from `useDataTableFilter` and goes back through
32511
+ * the two callbacks; this component owns nothing, so it can sit above a
32512
+ * `DataTable`, a card's list, or anything else that renders the filtered rows.
32513
+ *
32514
+ * Every visible string is a prop: this library carries no translations, and
32515
+ * the caller's i18n does.
32516
+ */
32517
+ var CHIP_ON = "rounded-full border border-primary bg-primary/10 px-2 py-0.5 text-[10px] text-foreground";
32518
+ var CHIP_OFF = "rounded-full border border-border px-2 py-0.5 text-[10px] text-foreground-muted hover:bg-surface-hover";
32519
+ function DataTableFilterBar({ state, facets, labels, onSearch, onToggleFacet, onClear, facetLabel }) {
32520
+ const active = state.search.trim() !== "" || state.facets.length > 0;
32521
+ const showFacets = facets.length > 1;
32522
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
32523
+ className: "flex flex-wrap items-center gap-2",
32524
+ children: [
32525
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
32526
+ className: "relative min-w-[12rem] flex-1",
32527
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(Search, { className: "pointer-events-none absolute left-2 top-1/2 h-3.5 w-3.5 -translate-y-1/2 text-foreground-subtle" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
32528
+ type: "search",
32529
+ value: state.search,
32530
+ onChange: (e) => onSearch(e.target.value),
32531
+ placeholder: labels.searchPlaceholder,
32532
+ "aria-label": labels.searchLabel,
32533
+ className: "w-full rounded border border-border bg-background py-1.5 pl-7 pr-2 text-xs text-foreground"
32534
+ })]
32535
+ }),
32536
+ showFacets && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
32537
+ role: "group",
32538
+ "aria-label": labels.facetsLabel,
32539
+ className: "flex flex-wrap gap-1",
32540
+ children: facets.map((facet) => {
32541
+ const pressed = state.facets.includes(facet.value);
32542
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
32543
+ type: "button",
32544
+ onClick: () => onToggleFacet(facet.value),
32545
+ "aria-pressed": pressed,
32546
+ className: pressed ? CHIP_ON : CHIP_OFF,
32547
+ children: [
32548
+ facetLabel ? facetLabel(facet.value) : facet.value,
32549
+ " ",
32550
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
32551
+ className: "text-foreground-subtle tabular-nums",
32552
+ children: facet.count
32553
+ })
32554
+ ]
32555
+ }, facet.value);
32556
+ })
32557
+ }),
32558
+ active && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
32559
+ type: "button",
32560
+ onClick: onClear,
32561
+ className: "flex items-center gap-1 text-[11px] text-foreground-subtle hover:text-foreground",
32562
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(X, { className: "h-3 w-3" }), labels.clearLabel]
32563
+ })
32564
+ ]
32565
+ });
32566
+ }
32567
+ //#endregion
32568
+ //#region src/composites/use-data-table-filter.ts
32569
+ /**
32570
+ * The React half of `data-table-filter.ts`: one filter state per call site,
32571
+ * so every table on a page filters on its own.
32572
+ *
32573
+ * The caller renders `rows` (the filtered set) and hands `state` + the two
32574
+ * setters to a `DataTableFilterBar`. It keeps the filtered set because
32575
+ * anything that acts on "the rows on screen" — a select-all, a bulk action —
32576
+ * must act on exactly these and nothing the filter hid.
32577
+ */
32578
+ function useDataTableFilter(rows, config) {
32579
+ const [state, setState] = (0, react$1.useState)(EMPTY_DATA_TABLE_FILTER);
32580
+ const setSearch = (0, react$1.useCallback)((search) => {
32581
+ setState((prev) => ({
32582
+ ...prev,
32583
+ search
32584
+ }));
32585
+ }, []);
32586
+ const toggleFacet = (0, react$1.useCallback)((value) => {
32587
+ setState((prev) => toggleDataTableFacet(prev, value));
32588
+ }, []);
32589
+ const clear = (0, react$1.useCallback)(() => setState(EMPTY_DATA_TABLE_FILTER), []);
32590
+ const { searchText, facetValue } = config;
32591
+ return {
32592
+ state,
32593
+ setSearch,
32594
+ toggleFacet,
32595
+ clear,
32596
+ facets: (0, react$1.useMemo)(() => dataTableFacets(rows, facetValue), [rows, facetValue]),
32597
+ rows: (0, react$1.useMemo)(() => filterDataTableRows(rows, state, {
32598
+ searchText,
32599
+ facetValue
32600
+ }), [
32601
+ rows,
32602
+ state,
32603
+ searchText,
32604
+ facetValue
32605
+ ]),
32606
+ active: isDataTableFilterActive(state)
32607
+ };
32608
+ }
32609
+ //#endregion
31033
32610
  //#region src/composites/detection-colors.ts
31034
32611
  /**
31035
32612
  * Detection class colors — a thin adapter over the SINGLE event-kind
@@ -44805,35 +46382,129 @@ function deviceRoleMetaOf(role) {
44805
46382
  return DEVICE_ROLE_META[role] ?? FALLBACK_DEVICE_ROLE_META;
44806
46383
  }
44807
46384
  /**
44808
- * Icons an operator may pick for a per-device `display.icon` override, keyed by
44809
- * a stable kebab-case name. Built ONLY from the lucide icons already imported by
44810
- * this module — no new imports, no dynamic indexing — so it stays bundle-size
44811
- * neutral and the picker offers a curated, sensor-relevant set. Unknown keys
44812
- * resolve to `undefined` (caller keeps the role/type default).
46385
+ * Icons an operator may pick for a per-device `display.icon` override (and for
46386
+ * a per-role default), keyed by a stable kebab-case name. Named imports only —
46387
+ * no dynamic indexing into lucide, so the bundle carries exactly this set.
46388
+ * Unknown keys resolve to `undefined` (caller falls through to the next level).
46389
+ *
46390
+ * The vocabulary is the one the VIEWER draws from too (its own icon module,
46391
+ * keyed by these same strings): a key added here that the phone cannot draw
46392
+ * falls through to the next resolution level there, which reads as "my change
46393
+ * did nothing". So the KEY is the contract — a stable kebab-case string, never
46394
+ * a glyph identity — and `device-meta.test.ts` pins that every key resolves
46395
+ * and that the set never loses a key an operator may already have persisted.
46396
+ *
46397
+ * Grouped by what an operator is naming: a device, a light or appliance, a
46398
+ * sensor or the weather it reads, a room, or what moves through it. `gauge2`
46399
+ * is a legacy alias kept for rows that persisted it.
44813
46400
  */
44814
46401
  var DISPLAY_ICON_REGISTRY = {
46402
+ camera: Camera,
46403
+ network: Network,
46404
+ "toggle-left": ToggleLeft,
46405
+ "toggle-right": ToggleRight,
46406
+ "circle-dot": CircleDot,
46407
+ "refresh-cw": RefreshCw,
46408
+ box: Box,
46409
+ "scroll-text": ScrollText,
46410
+ workflow: Workflow,
46411
+ lock: Lock,
46412
+ "lock-open": LockOpen,
46413
+ blinds: Blinds,
46414
+ "air-vent": AirVent,
46415
+ "monitor-play": MonitorPlay,
46416
+ "sliders-horizontal": SlidersHorizontal,
46417
+ "map-pin": MapPin,
46418
+ bot: Bot,
46419
+ tractor: Tractor,
46420
+ image: Image,
46421
+ bone: Bone,
46422
+ "door-closed": DoorClosed,
46423
+ "door-open": DoorOpen,
46424
+ crosshair: Crosshair,
46425
+ eye: Eye,
46426
+ "eye-off": EyeOff,
46427
+ smartphone: Smartphone,
46428
+ phone: Phone,
46429
+ tablet: Tablet,
46430
+ laptop: Laptop,
46431
+ monitor: Monitor,
46432
+ tv: Tv,
46433
+ speaker: Speaker,
46434
+ printer: Printer,
46435
+ projector: Projector,
46436
+ "gamepad-2": Gamepad2,
46437
+ radio: Radio,
46438
+ router: Router,
46439
+ bluetooth: Bluetooth,
46440
+ cpu: Cpu,
46441
+ "hard-drive": HardDrive,
46442
+ server: Server,
46443
+ mic: Mic,
46444
+ "mic-off": MicOff,
46445
+ video: Video,
46446
+ "video-off": VideoOff,
46447
+ music: Music,
46448
+ plug: Plug,
46449
+ "plug-zap": PlugZap,
46450
+ power: Power,
46451
+ "power-off": PowerOff,
46452
+ cable: Cable,
46453
+ battery: Battery,
46454
+ "battery-charging": BatteryCharging,
46455
+ "battery-full": BatteryFull,
46456
+ "battery-low": BatteryLow,
46457
+ key: Key,
46458
+ "key-round": KeyRound,
46459
+ mailbox: Mailbox,
46460
+ package: Package,
46461
+ shield: Shield,
46462
+ "shield-check": ShieldCheck,
46463
+ "shield-off": ShieldOff,
46464
+ lightbulb: Lightbulb,
46465
+ lamp: Lamp,
46466
+ "lamp-ceiling": LampCeiling,
46467
+ "lamp-desk": LampDesk,
46468
+ "lamp-floor": LampFloor,
46469
+ flashlight: Flashlight,
46470
+ heater: Heater,
46471
+ snowflake: Snowflake,
46472
+ "thermometer-sun": ThermometerSun,
46473
+ "thermometer-snowflake": ThermometerSnowflake,
46474
+ refrigerator: Refrigerator,
46475
+ microwave: Microwave,
46476
+ "washing-machine": WashingMachine,
46477
+ "cooking-pot": CookingPot,
46478
+ utensils: Utensils,
44815
46479
  thermometer: Thermometer,
44816
46480
  droplets: Droplets,
44817
46481
  droplet: Droplet,
44818
46482
  gauge: Gauge,
46483
+ gauge2: Gauge,
44819
46484
  sun: Sun,
44820
46485
  "sun-medium": SunMedium,
44821
46486
  sunrise: Sunrise,
44822
46487
  moon: Moon,
44823
46488
  wind: Wind,
46489
+ cloud: Cloud,
44824
46490
  "cloud-rain": CloudRain,
44825
46491
  "cloud-sun": CloudSun,
44826
46492
  waves: Waves,
44827
46493
  sprout: Sprout,
46494
+ leaf: Leaf,
46495
+ flower: Flower,
44828
46496
  zap: Zap,
44829
46497
  flame: Flame,
44830
46498
  bell: Bell,
46499
+ "bell-ring": BellRing,
46500
+ "bell-off": BellOff,
44831
46501
  siren: Siren,
44832
46502
  radar: Radar,
44833
46503
  activity: Activity,
44834
46504
  hash: Hash,
44835
46505
  clock: Clock,
44836
- gauge2: Gauge,
46506
+ timer: Timer,
46507
+ calendar: Calendar,
44837
46508
  pipette: Pipette,
44838
46509
  fan: Fan,
44839
46510
  bath: Bath,
@@ -44842,9 +46513,49 @@ var DISPLAY_ICON_REGISTRY = {
44842
46513
  "shield-alert": ShieldAlert,
44843
46514
  vibrate: Vibrate,
44844
46515
  wifi: Wifi,
46516
+ "wifi-off": WifiOff,
44845
46517
  "volume-2": Volume2,
44846
- lightbulb: Lightbulb,
44847
- flashlight: Flashlight
46518
+ "volume-x": VolumeX,
46519
+ heart: Heart,
46520
+ "heart-pulse": HeartPulse,
46521
+ star: Star,
46522
+ sparkles: Sparkles,
46523
+ house: House,
46524
+ sofa: Sofa,
46525
+ "bed-double": BedDouble,
46526
+ bed: Bed,
46527
+ warehouse: Warehouse,
46528
+ trees: Trees,
46529
+ "tree-pine": TreePine,
46530
+ fence: Fence,
46531
+ store: Store,
46532
+ building: Building,
46533
+ "building-2": Building2,
46534
+ mountain: Mountain,
46535
+ umbrella: Umbrella,
46536
+ dumbbell: Dumbbell,
46537
+ wrench: Wrench,
46538
+ hammer: Hammer,
46539
+ drill: Drill,
46540
+ "waves-ladder": WavesLadder,
46541
+ "circle-parking": CircleParking,
46542
+ briefcase: Briefcase,
46543
+ route: Route,
46544
+ car: Car,
46545
+ bike: Bike,
46546
+ bus: Bus,
46547
+ truck: Truck,
46548
+ plane: Plane,
46549
+ "train-front": TrainFront,
46550
+ sailboat: Sailboat,
46551
+ dog: Dog,
46552
+ cat: Cat,
46553
+ bird: Bird,
46554
+ "paw-print": PawPrint,
46555
+ baby: Baby,
46556
+ user: User,
46557
+ users: Users,
46558
+ "person-standing": PersonStanding
44848
46559
  };
44849
46560
  /** Resolve a `display.icon` name to a lucide component, or `undefined` when the
44850
46561
  * name is not in the curated `DISPLAY_ICON_REGISTRY`. */
@@ -45029,12 +46740,35 @@ function resolveFlags(props) {
45029
46740
  showChildrenAccordion: props.showChildrenAccordion ?? d.showChildrenAccordion
45030
46741
  };
45031
46742
  }
45032
- function deviceLeadIcon(device) {
46743
+ /**
46744
+ * The row's lead icon — the ONE resolution order, the same one
46745
+ * `resolveSensorDisplay` applies to unit and precision:
46746
+ *
46747
+ * device override → operator role default → built-in role glyph → type glyph
46748
+ *
46749
+ * `roleDefaults` is what the nearest `RoleDisplayDefaultsProvider` publishes;
46750
+ * callers outside a provider pass nothing and the second level is skipped.
46751
+ * Each level FALLS THROUGH when it names a glyph the registry cannot draw —
46752
+ * an unknown key at any level must never leave the row without an icon, and
46753
+ * must never shadow a lower level that would have drawn one.
46754
+ *
46755
+ * "Set as default for all X sensors" writes the second level. It was written
46756
+ * for a year and read by nothing: this function went straight from the device
46757
+ * override to `DEVICE_ROLE_META`.
46758
+ */
46759
+ function deviceLeadIcon(device, roleDefaults) {
45033
46760
  if (device.display?.icon) {
45034
46761
  const overridden = resolveDisplayIcon(device.display.icon);
45035
46762
  if (overridden) return overridden;
45036
46763
  }
45037
- if (device.role) return deviceRoleMetaOf(device.role).icon;
46764
+ if (device.role) {
46765
+ const roleDefaultKey = roleDefaults?.[device.role]?.icon;
46766
+ if (roleDefaultKey !== void 0) {
46767
+ const fromRoleDefault = resolveDisplayIcon(roleDefaultKey);
46768
+ if (fromRoleDefault) return fromRoleDefault;
46769
+ }
46770
+ return deviceRoleMetaOf(device.role).icon;
46771
+ }
45038
46772
  return deviceTypeMetaOf(device.type).icon;
45039
46773
  }
45040
46774
  /**
@@ -45191,6 +46925,7 @@ function effectiveType(device, containerChildren) {
45191
46925
  */
45192
46926
  function effectiveIconDevice(device, containerChildren) {
45193
46927
  if (device.type !== _camstack_types.DeviceType.Container) return device;
46928
+ if (device.display?.icon !== void 0 && resolveDisplayIcon(device.display.icon) !== void 0) return device;
45194
46929
  const children = containerChildren ?? [];
45195
46930
  if (children.length === 0) return device;
45196
46931
  const primary = resolveContainerPrimary(children, device.linkDeviceId, device.primaryChildEntityId);
@@ -45570,7 +47305,7 @@ function RebootQuickAction({ trpc, deviceId, deviceName }) {
45570
47305
  * or a standalone test) the hook returns a stable empty array — the same
45571
47306
  * graceful default the old optional prop had.
45572
47307
  */
45573
- var EMPTY$1 = [];
47308
+ var EMPTY$2 = [];
45574
47309
  var ContainerChildrenContext = (0, react$1.createContext)(null);
45575
47310
  function ContainerChildrenProvider({ value, children }) {
45576
47311
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ContainerChildrenContext.Provider, {
@@ -45585,7 +47320,7 @@ function ContainerChildrenProvider({ value, children }) {
45585
47320
  * rendered outside a list, degrades exactly like the old optional prop.
45586
47321
  */
45587
47322
  function useContainerChildren(deviceId) {
45588
- return (0, react$1.useContext)(ContainerChildrenContext)?.get(deviceId) ?? EMPTY$1;
47323
+ return (0, react$1.useContext)(ContainerChildrenContext)?.get(deviceId) ?? EMPTY$2;
45589
47324
  }
45590
47325
  //#endregion
45591
47326
  //#region src/composites/device-item/actions.tsx
@@ -45811,6 +47546,33 @@ function PtzQuickAction({ trpc, deviceId }) {
45811
47546
  }), document.body)] });
45812
47547
  }
45813
47548
  //#endregion
47549
+ //#region src/composites/device-item/role-display-defaults-context.tsx
47550
+ var EMPTY$1 = {};
47551
+ var RoleDisplayDefaultsContext = (0, react$1.createContext)(EMPTY$1);
47552
+ function RoleDisplayDefaultsProvider({ value, children }) {
47553
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(RoleDisplayDefaultsContext.Provider, {
47554
+ value,
47555
+ children
47556
+ });
47557
+ }
47558
+ /** The defaults published by the nearest provider — an empty record outside
47559
+ * one, never `undefined`, so a caller can index it without a guard. */
47560
+ function useRoleDisplayDefaults() {
47561
+ return (0, react$1.useContext)(RoleDisplayDefaultsContext);
47562
+ }
47563
+ /**
47564
+ * Reads the defaults from the hub and publishes them. Until the query lands
47565
+ * the children see no defaults — the built-in role glyph, which is what they
47566
+ * would see with no operator default at all, so nothing flashes wrong.
47567
+ */
47568
+ function RoleDisplayDefaultsFromServer({ children }) {
47569
+ const { data } = useDeviceManagerGetRoleDisplayDefaults({}, { staleTime: 6e4 });
47570
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(RoleDisplayDefaultsProvider, {
47571
+ value: data?.defaults ?? EMPTY$1,
47572
+ children
47573
+ });
47574
+ }
47575
+ //#endregion
45814
47576
  //#region src/composites/device-item/children-accordion.tsx
45815
47577
  /**
45816
47578
  * <ChildrenAccordion> — accessory + adopted children rows shown when
@@ -45863,7 +47625,7 @@ function ChildRow$1({ trpc, child, onNavigate, parentName }) {
45863
47625
  },
45864
47626
  className: "w-full flex items-center gap-2 px-3 py-1.5 text-left hover:bg-surface-hover transition-colors cursor-pointer",
45865
47627
  children: [
45866
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(deviceLeadIcon(child), { className: "h-3 w-3 text-foreground-subtle flex-shrink-0" }),
47628
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(deviceLeadIcon(child, useRoleDisplayDefaults()), { className: "h-3 w-3 text-foreground-subtle flex-shrink-0" }),
45867
47629
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
45868
47630
  className: "text-[10.5px] text-foreground flex-1 truncate",
45869
47631
  children: childListName(child, parentName)
@@ -46242,7 +48004,9 @@ var CHEVRON_SLOT_CLASS = {
46242
48004
  stacked: "h-4 w-4 mt-0.5"
46243
48005
  };
46244
48006
  function DeviceItemHeader({ device, variant, flags, parent, integrationIcon, hasChildren, expanded, onToggleExpand, onNavigateToParent, stacked = false, nameOverflow = "truncate" }) {
46245
- const Icon = deviceLeadIcon(effectiveIconDevice(device, useContainerChildren(device.id)));
48007
+ const containerChildren = useContainerChildren(device.id);
48008
+ const roleDefaults = useRoleDisplayDefaults();
48009
+ const Icon = deviceLeadIcon(effectiveIconDevice(device, containerChildren), roleDefaults);
46246
48010
  const slotClass = stacked ? CHEVRON_SLOT_CLASS.stacked : CHEVRON_SLOT_CLASS.horizontal;
46247
48011
  const lineClass = nameOverflow === "scroll" ? NAME_TEXT_CLASS : "truncate";
46248
48012
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
@@ -47049,41 +48813,6 @@ function groupTopLevelAndAccessories(devices, options) {
47049
48813
  };
47050
48814
  }
47051
48815
  //#endregion
47052
- //#region src/composites/device-list/fuzzy-match.ts
47053
- /**
47054
- * fuzzy-match — case and separator-insensitive text search helper.
47055
- *
47056
- * Normalization rule: lowercase + strip all runs of hyphens, underscores and
47057
- * whitespace entirely. This makes `Tapparella cucina` and `tapparella-cucina`
47058
- * both normalize to `tapparellacucina`, so a substring match succeeds in
47059
- * either direction.
47060
- */
47061
- /**
47062
- * Strips hyphens, underscores and whitespace runs from `s` and lowercases it.
47063
- *
47064
- * @example
47065
- * normalizeForSearch('Tapparella cucina') // 'tapparellacucina'
47066
- * normalizeForSearch('tapparella-cucina') // 'tapparellacucina'
47067
- * normalizeForSearch('tapparella_cucina') // 'tapparellacucina'
47068
- */
47069
- function normalizeForSearch(s) {
47070
- return s.toLowerCase().replace(/[-_\s]+/g, "");
47071
- }
47072
- /**
47073
- * Returns `true` when the normalized form of `target` contains the normalized
47074
- * form of `query`. An empty query always matches.
47075
- *
47076
- * @example
47077
- * fuzzyMatch('Tapparella cucina', 'tapparella-cucina') // true
47078
- * fuzzyMatch('tapparella cucina', 'Tapparella-Cucina') // true
47079
- * fuzzyMatch('xyz', 'tapparella-cucina') // false
47080
- */
47081
- function fuzzyMatch(query, target) {
47082
- const nq = normalizeForSearch(query);
47083
- if (nq === "") return true;
47084
- return normalizeForSearch(target).includes(nq);
47085
- }
47086
- //#endregion
47087
48816
  //#region src/composites/device-list/multi-select.tsx
47088
48817
  /**
47089
48818
  * Compact multi-select dropdown — a single chip-sized trigger ("Label · N")
@@ -47526,7 +49255,7 @@ function topLevelIndentLevel(device, parentType) {
47526
49255
  if (HUB_LIKE_PARENT_TYPES.has(parentType.toLowerCase())) return 1;
47527
49256
  return 0;
47528
49257
  }
47529
- function TableLayout({ rows, accessoriesByParent, autoExpandedParents, devices, visibleColumns, trpc, resolveIntegrationIcon, resolveParent, onNavigate, renderRowAction, onDeleteDevice, selectable, rowClickSelects, activeSelected, onToggleSelection, sort, onSort }) {
49258
+ function TableLayout({ rows, accessoriesByParent, expandedParents, onToggleExpand, devices, visibleColumns, trpc, resolveIntegrationIcon, resolveParent, onNavigate, renderRowAction, onDeleteDevice, selectable, rowClickSelects, activeSelected, onToggleSelection, sort, onSort }) {
47530
49259
  const showType = visibleColumns.includes("type");
47531
49260
  const showFeatures = visibleColumns.includes("features");
47532
49261
  const showManufacturer = visibleColumns.includes("manufacturer");
@@ -47585,7 +49314,6 @@ function TableLayout({ rows, accessoriesByParent, autoExpandedParents, devices,
47585
49314
  }) }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("tbody", { children: rows.map((d) => {
47586
49315
  const accessories = accessoriesByParent.get(d.id) ?? [];
47587
49316
  const hasAccessories = accessories.length > 0;
47588
- const autoExpand = autoExpandedParents.has(d.id);
47589
49317
  const parentRowParent = d.parentDeviceId !== null ? resolveParent?.(d.parentDeviceId) ?? null : null;
47590
49318
  const parentType = d.parentDeviceId !== null ? parentTypeById.get(d.parentDeviceId) ?? null : null;
47591
49319
  const selection = selectable ? {
@@ -47596,7 +49324,8 @@ function TableLayout({ rows, accessoriesByParent, autoExpandedParents, devices,
47596
49324
  parent: d,
47597
49325
  accessories,
47598
49326
  hasAccessories,
47599
- forceExpanded: autoExpand,
49327
+ expanded: expandedParents.has(d.id),
49328
+ onToggleExpand: () => onToggleExpand(d.id),
47600
49329
  trpc,
47601
49330
  integrationIcon: showIcon ? resolveIntegrationIcon?.(d.addonId) ?? null : null,
47602
49331
  showType,
@@ -47614,16 +49343,7 @@ function TableLayout({ rows, accessoriesByParent, autoExpandedParents, devices,
47614
49343
  })
47615
49344
  });
47616
49345
  }
47617
- function TableRowGroup({ parent, accessories, hasAccessories, forceExpanded, trpc, integrationIcon, showType, showManufacturer, showFeatures, parentRowParent, indentLevel, onNavigate, renderRowAction, onDeleteDevice, selection, rowClickSelects }) {
47618
- const [expanded, setExpanded] = (0, react$1.useState)(forceExpanded);
47619
- const prevForce = (0, react$1.useRef)(forceExpanded);
47620
- (0, react$1.useEffect)(() => {
47621
- if (prevForce.current !== forceExpanded) {
47622
- setExpanded(forceExpanded);
47623
- prevForce.current = forceExpanded;
47624
- }
47625
- }, [forceExpanded]);
47626
- const onToggleExpand = () => setExpanded((v) => !v);
49346
+ function TableRowGroup({ parent, accessories, hasAccessories, expanded, onToggleExpand, trpc, integrationIcon, showType, showManufacturer, showFeatures, parentRowParent, indentLevel, onNavigate, renderRowAction, onDeleteDevice, selection, rowClickSelects }) {
47627
49347
  const showAccessoryRows = hasAccessories && expanded;
47628
49348
  const grouped = (0, react$1.useMemo)(() => groupChildrenByLayout(parent.stableId, accessories, parent.childLayout), [
47629
49349
  parent.stableId,
@@ -47890,13 +49610,15 @@ function DeviceModeList(props) {
47890
49610
  ]);
47891
49611
  const grouped = (0, react$1.useMemo)(() => groupTopLevelAndAccessories(filtered), [filtered]);
47892
49612
  const sortedTopLevel = (0, react$1.useMemo)(() => sortRows(grouped.topLevel, sort), [grouped.topLevel, sort]);
47893
- const autoExpandedParents = (0, react$1.useMemo)(() => {
47894
- if (url.state.q.trim() === "") return /* @__PURE__ */ new Set();
47895
- const q = url.state.q;
47896
- const matching = /* @__PURE__ */ new Set();
47897
- for (const [parentId, accessories] of grouped.accessoriesByParent.entries()) if (accessories.some((a) => fuzzyMatch(q, a.name) || fuzzyMatch(q, a.stableId))) matching.add(parentId);
47898
- return matching;
47899
- }, [grouped.accessoriesByParent, url.state.q]);
49613
+ const [openParents, setOpenParents] = (0, react$1.useState)(() => /* @__PURE__ */ new Set());
49614
+ const toggleParent = (0, react$1.useCallback)((id) => {
49615
+ setOpenParents((prev) => {
49616
+ const next = new Set(prev);
49617
+ if (next.has(id)) next.delete(id);
49618
+ else next.add(id);
49619
+ return next;
49620
+ });
49621
+ }, []);
47900
49622
  const totalItems = grouped.topLevel.length;
47901
49623
  const totalPages = Math.max(1, Math.ceil(totalItems / currentPageSize));
47902
49624
  const safePage = Math.min(url.state.page, totalPages);
@@ -47966,7 +49688,8 @@ function DeviceModeList(props) {
47966
49688
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(TableLayout, {
47967
49689
  rows: pageRows,
47968
49690
  accessoriesByParent: grouped.accessoriesByParent,
47969
- autoExpandedParents,
49691
+ expandedParents: openParents,
49692
+ onToggleExpand: toggleParent,
47970
49693
  visibleColumns,
47971
49694
  sort,
47972
49695
  onSort,
@@ -48734,6 +50457,145 @@ function DeviceGrid({ children, minCardWidth = 220, gap = 3, className }) {
48734
50457
  });
48735
50458
  }
48736
50459
  //#endregion
50460
+ //#region src/composites/icon-picker.tsx
50461
+ /**
50462
+ * icon-picker — the ONE control for choosing an icon, wherever admin-ui asks.
50463
+ *
50464
+ * There were two: a device one over `DISPLAY_ICON_REGISTRY` and a room one
50465
+ * over `LOCATION_ICON_IDS`, identical apart from the vocabulary they walked.
50466
+ * That was tolerable while the device set was 56 glyphs in a flat grid. It is
50467
+ * not at 157: a picker that only lets the operator HUNT is a picker they stop
50468
+ * using, and the two copies were already drifting — only one of them had an
50469
+ * i18n'd label.
50470
+ *
50471
+ * So the vocabulary, the grouping and the search all come from
50472
+ * `@camstack/types`' `display-icon-vocabulary`, which is the same module the
50473
+ * viewer's sheet searches. What is left here is the web half: a popover, a
50474
+ * grid, and a text field.
50475
+ *
50476
+ * ## What it does NOT own
50477
+ *
50478
+ * - **The glyphs.** `resolveGlyph` is a prop, because this package's table is
50479
+ * `lucide-react` and the viewer's is `lucide-react-native`. A key this build
50480
+ * cannot draw is SKIPPED rather than rendered as a hole — an empty tile
50481
+ * reads as a rendering bug, not as a missing choice.
50482
+ * - **The words.** Every string is a prop. This package has no i18n (one file
50483
+ * in it imports react-i18next, and that is the exception), and a control
50484
+ * that reached for a translation would force it on every consumer.
50485
+ * - **The write.** `onPick` is called and that is all; whether it is a form
50486
+ * value or an immediate mutation is the caller's business, as it already was
50487
+ * in both pickers this replaces.
50488
+ *
50489
+ * ## The clear tile is never filtered away
50490
+ *
50491
+ * The "inherit" / "no icon" choice sits above the sections and ignores the
50492
+ * search. A query that hid it would strand the operator on a glyph they picked
50493
+ * by accident with no way back to the default — the one action a picker must
50494
+ * always offer.
50495
+ */
50496
+ function IconPicker({ value, onPick, resolveGlyph, fallbackGlyph, labels, only, extraWords, clearGlyph, labelFor, disabled = false }) {
50497
+ const [open, setOpen] = (0, react$1.useState)(false);
50498
+ const [query, setQuery] = (0, react$1.useState)("");
50499
+ const allowed = (0, react$1.useMemo)(() => only === void 0 ? null : new Set(only), [only]);
50500
+ const sections = (0, react$1.useMemo)(() => {
50501
+ const hits = (0, _camstack_types.searchDisplayIcons)(query, extraWords);
50502
+ const byGroup = /* @__PURE__ */ new Map();
50503
+ for (const hit of hits) {
50504
+ const { key, group } = hit.entry;
50505
+ if (allowed !== null && !allowed.has(key)) continue;
50506
+ if (resolveGlyph(key) === void 0) continue;
50507
+ const bucket = byGroup.get(group);
50508
+ if (bucket === void 0) byGroup.set(group, [key]);
50509
+ else bucket.push(key);
50510
+ }
50511
+ return _camstack_types.DISPLAY_ICON_GROUPS.flatMap((group) => {
50512
+ const keys = byGroup.get(group);
50513
+ return keys === void 0 || keys.length === 0 ? [] : [{
50514
+ group,
50515
+ keys
50516
+ }];
50517
+ });
50518
+ }, [
50519
+ query,
50520
+ extraWords,
50521
+ allowed,
50522
+ resolveGlyph
50523
+ ]);
50524
+ const Current = (value === null ? void 0 : resolveGlyph(value)) ?? fallbackGlyph;
50525
+ const choose = async (next) => {
50526
+ setOpen(false);
50527
+ setQuery("");
50528
+ await onPick(next);
50529
+ };
50530
+ const Clear = clearGlyph ?? fallbackGlyph;
50531
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
50532
+ className: "relative flex shrink-0 items-center gap-2",
50533
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
50534
+ type: "button",
50535
+ disabled,
50536
+ onClick: () => setOpen((o) => !o),
50537
+ "aria-expanded": open,
50538
+ "aria-label": labels.trigger,
50539
+ title: labels.trigger,
50540
+ className: "rounded border border-border p-1 text-foreground-muted hover:bg-surface-hover disabled:opacity-50",
50541
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Current, { className: "h-4 w-4" })
50542
+ }), open && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
50543
+ type: "button",
50544
+ "aria-label": labels.close,
50545
+ onClick: () => setOpen(false),
50546
+ className: "fixed inset-0 z-10 cursor-default"
50547
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
50548
+ role: "group",
50549
+ "aria-label": labels.panel,
50550
+ 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",
50551
+ children: [
50552
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
50553
+ type: "search",
50554
+ value: query,
50555
+ autoFocus: true,
50556
+ onChange: (e) => setQuery(e.target.value),
50557
+ placeholder: labels.searchPlaceholder,
50558
+ "aria-label": labels.searchPlaceholder,
50559
+ className: "mb-2 w-full rounded border border-border bg-surface-raised px-2 py-1 text-xs text-foreground placeholder:text-foreground-subtle"
50560
+ }),
50561
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
50562
+ type: "button",
50563
+ onClick: () => void choose(null),
50564
+ "aria-pressed": value === null,
50565
+ 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",
50566
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(Clear, { className: "h-3.5 w-3.5" }), labels.clear]
50567
+ }),
50568
+ sections.length === 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
50569
+ className: "px-1.5 py-2 text-[11px] text-foreground-subtle",
50570
+ children: labels.noMatches
50571
+ }) : sections.map(({ group, keys }) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("section", {
50572
+ className: "mb-2 last:mb-0",
50573
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("h4", {
50574
+ className: "px-1.5 pb-1 text-[10px] uppercase tracking-wide text-foreground-subtle",
50575
+ children: labels.groups[group]
50576
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
50577
+ className: "grid grid-cols-7 gap-1",
50578
+ children: keys.map((key) => {
50579
+ const Glyph = resolveGlyph(key);
50580
+ if (Glyph === void 0) return null;
50581
+ const selected = value === key;
50582
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
50583
+ type: "button",
50584
+ onClick: () => void choose(key),
50585
+ "aria-pressed": selected,
50586
+ "aria-label": labelFor?.(key) ?? key,
50587
+ title: labelFor?.(key) ?? key,
50588
+ 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",
50589
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Glyph, { className: "h-4 w-4" })
50590
+ }, key);
50591
+ })
50592
+ })]
50593
+ }, group))
50594
+ ]
50595
+ })] })]
50596
+ });
50597
+ }
50598
+ //#endregion
48737
50599
  //#region src/composites/device-selector-picker.tsx
48738
50600
  /**
48739
50601
  * <DeviceSelectorPicker> — the operator-facing editor for a v3
@@ -53687,7 +55549,7 @@ var MotionZonesSettings = (0, react$1.lazy)(() => Promise.resolve().then(() => r
53687
55549
  * inside `<Suspense>`; the admin-ui `/scenes` dialog is its only caller. */
53688
55550
  var SceneMonitorEditor = (0, react$1.lazy)(() => Promise.resolve().then(() => require("./SceneMonitorEditor-D0mXx_SD.cjs")).then((m) => ({ default: m.SceneMonitorEditor })));
53689
55551
  /** Lazy-wrapped `PrivacyMaskSettings` — code-split off the main bundle. */
53690
- var PrivacyMaskSettings = (0, react$1.lazy)(() => Promise.resolve().then(() => require("./PrivacyMaskSettings-DfZAFg32.cjs")).then((m) => ({ default: m.PrivacyMaskSettings })));
55552
+ var PrivacyMaskSettings = (0, react$1.lazy)(() => Promise.resolve().then(() => require("./PrivacyMaskSettings-BqjXsXZR.cjs")).then((m) => ({ default: m.PrivacyMaskSettings })));
53691
55553
  //#endregion
53692
55554
  exports.AddonGlobalSettingsForm = AddonGlobalSettingsForm;
53693
55555
  exports.AgentStepEditor = AgentStepEditor;
@@ -53759,6 +55621,7 @@ exports.DEVICE_TYPE_CONTROL = DEVICE_TYPE_CONTROL;
53759
55621
  exports.DEVICE_TYPE_META = DEVICE_TYPE_META;
53760
55622
  exports.DISPLAY_ICON_REGISTRY = DISPLAY_ICON_REGISTRY;
53761
55623
  exports.DataTable = DataTable;
55624
+ exports.DataTableFilterBar = DataTableFilterBar;
53762
55625
  exports.DetectionCanvas = DetectionCanvas;
53763
55626
  exports.DetectionOverlay = DetectionOverlay;
53764
55627
  exports.DetectionResultTree = DetectionResultTree;
@@ -53791,6 +55654,7 @@ exports.DropdownItem = DropdownItem;
53791
55654
  exports.DropdownTrigger = DropdownTrigger;
53792
55655
  exports.DummyHeroCard = DummyHeroCard;
53793
55656
  exports.DummyInline = DummyInline;
55657
+ exports.EMPTY_DATA_TABLE_FILTER = EMPTY_DATA_TABLE_FILTER;
53794
55658
  exports.EVENT_KIND_ICONS = EVENT_KIND_ICONS;
53795
55659
  exports.EmptyState = EmptyState;
53796
55660
  exports.ErrorBox = ErrorBox;
@@ -53823,6 +55687,7 @@ exports.HumidifierInlineControl = HumidifierInlineControl;
53823
55687
  exports.INPUT_COMPACT = INPUT_COMPACT;
53824
55688
  exports.IconAction = IconAction;
53825
55689
  exports.IconButton = IconButton;
55690
+ exports.IconPicker = IconPicker;
53826
55691
  exports.ImageHeroCard = ImageHeroCard;
53827
55692
  exports.ImageInlineControl = ImageInlineControl;
53828
55693
  exports.ImageOff = ImageOff;
@@ -53848,6 +55713,7 @@ exports.MediaPlayerHeroCard = MediaPlayerHeroCard;
53848
55713
  exports.MediaPlayerInlineControl = MediaPlayerInlineControl;
53849
55714
  exports.MediaPlayerPanel = MediaPlayerPanel;
53850
55715
  exports.Mic = Mic;
55716
+ exports.MicOff = MicOff;
53851
55717
  exports.MobileDrawer = MobileDrawer;
53852
55718
  exports.ModelPicker = ModelPicker;
53853
55719
  exports.MotionZonesSettings = MotionZonesSettings;
@@ -53886,6 +55752,8 @@ exports.RadialGauge = RadialGauge;
53886
55752
  exports.RecordedPlaybackProvider = RecordedPlaybackProvider;
53887
55753
  exports.RecordingPanel = RecordingPanel;
53888
55754
  exports.ResponseLog = ResponseLog;
55755
+ exports.RoleDisplayDefaultsFromServer = RoleDisplayDefaultsFromServer;
55756
+ exports.RoleDisplayDefaultsProvider = RoleDisplayDefaultsProvider;
53889
55757
  exports.RotateCcw = RotateCcw;
53890
55758
  exports.SCENE_CAPTURE_VARIANTS = SCENE_CAPTURE_VARIANTS;
53891
55759
  exports.SCENE_CAPTURE_VARIANTS$1 = SCENE_CAPTURE_VARIANTS;
@@ -53994,6 +55862,7 @@ exports.createSharedContext = createSharedContext;
53994
55862
  exports.createTheme = require_theme_index.createTheme$1;
53995
55863
  exports.cursorFractionFor = cursorFractionFor;
53996
55864
  exports.darkColors = require_theme_index.darkColors$1;
55865
+ exports.dataTableFacets = dataTableFacets;
53997
55866
  exports.defaultTheme = require_theme_index.defaultTheme$1;
53998
55867
  exports.deriveDeviceKind = deriveDeviceKind;
53999
55868
  exports.deriveWebrtcDebugStats = deriveWebrtcDebugStats;
@@ -54008,6 +55877,7 @@ exports.deviceTypeMetaOf = deviceTypeMetaOf;
54008
55877
  exports.devicesToOptions = devicesToOptions;
54009
55878
  exports.ensureMfHostInit = ensureMfHostInit;
54010
55879
  exports.eventKindLabel = eventKindLabel;
55880
+ exports.filterDataTableRows = filterDataTableRows;
54011
55881
  exports.filterDeviceOptions = filterDeviceOptions;
54012
55882
  exports.findTimezone = _camstack_types.findTimezone;
54013
55883
  exports.formatControlDateTime = formatControlDateTime;
@@ -54030,6 +55900,7 @@ exports.humidifierTint = humidifierTint;
54030
55900
  exports.initialScrubState = initialScrubState;
54031
55901
  exports.isAbsentProvider = isAbsentProvider;
54032
55902
  exports.isAbsentProvider$1 = isAbsentProvider;
55903
+ exports.isDataTableFilterActive = isDataTableFilterActive;
54033
55904
  exports.isFieldVisible = isFieldVisible;
54034
55905
  exports.lawnMowerActivityMeta = lawnMowerActivityMeta;
54035
55906
  exports.lightColors = require_theme_index.lightColors$1;
@@ -54082,6 +55953,7 @@ exports.tabForSelector = tabForSelector;
54082
55953
  exports.tankAlert = tankAlert;
54083
55954
  exports.themeToCss = require_theme_index.themeToCss$1;
54084
55955
  exports.toStationaryOverlayBox = toStationaryOverlayBox;
55956
+ exports.toggleDataTableFacet = toggleDataTableFacet;
54085
55957
  exports.trpc = trpc;
54086
55958
  exports.useAccessoriesGetStatus = useAccessoriesGetStatus;
54087
55959
  exports.useAccessoriesSetChildHidden = useAccessoriesSetChildHidden;
@@ -54261,6 +56133,7 @@ exports.useCoverSetPosition = useCoverSetPosition;
54261
56133
  exports.useCoverSetTiltPosition = useCoverSetTiltPosition;
54262
56134
  exports.useCoverStop = useCoverStop;
54263
56135
  exports.useCustomFieldRenderer = useCustomFieldRenderer;
56136
+ exports.useDataTableFilter = useDataTableFilter;
54264
56137
  exports.useDayNightGetOptions = useDayNightGetOptions;
54265
56138
  exports.useDayNightGetStatus = useDayNightGetStatus;
54266
56139
  exports.useDayNightSetSettings = useDayNightSetSettings;
@@ -54968,6 +56841,7 @@ exports.useRecordingSignalGetStatus = useRecordingSignalGetStatus;
54968
56841
  exports.useRecordingStartStorageMigrationMove = useRecordingStartStorageMigrationMove;
54969
56842
  exports.useRecordingStartStorageRebalance = useRecordingStartStorageRebalance;
54970
56843
  exports.useRemoteComponent = useRemoteComponent;
56844
+ exports.useRoleDisplayDefaults = useRoleDisplayDefaults;
54971
56845
  exports.useSceneMonitorCaptureReference = useSceneMonitorCaptureReference;
54972
56846
  exports.useSceneMonitorCreateScene = useSceneMonitorCreateScene;
54973
56847
  exports.useSceneMonitorDeleteReference = useSceneMonitorDeleteReference;
@@ -55173,6 +57047,7 @@ exports.useValveOpen = useValveOpen;
55173
57047
  exports.useValveSetPosition = useValveSetPosition;
55174
57048
  exports.useValveStop = useValveStop;
55175
57049
  exports.useVibrationGetStatus = useVibrationGetStatus;
57050
+ exports.useVideoclipsDialClipStream = useVideoclipsDialClipStream;
55176
57051
  exports.useVideoclipsGetClipPlayback = useVideoclipsGetClipPlayback;
55177
57052
  exports.useVideoclipsListClips = useVideoclipsListClips;
55178
57053
  exports.useVideoclipsListSources = useVideoclipsListSources;