@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/{MotionZonesSettings-7c3yiT5E.js → MotionZonesSettings-DHDfnZyU.js} +1 -1
- package/dist/{PrivacyMaskSettings-DfZAFg32.cjs → PrivacyMaskSettings-BqjXsXZR.cjs} +1 -33
- package/dist/{PrivacyMaskSettings-PkYs077O.js → PrivacyMaskSettings-DMkchqO1.js} +1 -33
- package/dist/{SceneMonitorEditor-BvDy3x3k.js → SceneMonitorEditor-vfWTm6qv.js} +1 -1
- package/dist/composites/data-table-filter-bar.d.ts +23 -0
- package/dist/composites/data-table-filter.d.ts +36 -0
- package/dist/composites/device-item/helpers.d.ts +18 -2
- package/dist/composites/device-item/index.d.ts +1 -0
- package/dist/composites/device-item/role-display-defaults-context.d.ts +21 -0
- package/dist/composites/device-list/table-layout.d.ts +5 -2
- package/dist/composites/device-meta.d.ts +15 -5
- package/dist/composites/icon-picker.d.ts +55 -0
- package/dist/composites/index.d.ts +7 -0
- package/dist/composites/use-data-table-filter.d.ts +16 -0
- package/dist/generated/system-hooks.d.ts +2 -0
- package/dist/index.cjs +1947 -72
- package/dist/index.js +1939 -77
- package/package.json +1 -1
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-
|
|
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
|
|
44809
|
-
* a stable kebab-case name.
|
|
44810
|
-
*
|
|
44811
|
-
*
|
|
44812
|
-
*
|
|
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
|
-
|
|
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
|
-
|
|
44847
|
-
|
|
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
|
-
|
|
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)
|
|
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$
|
|
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$
|
|
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
|
|
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,
|
|
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
|
-
|
|
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,
|
|
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
|
|
47894
|
-
|
|
47895
|
-
|
|
47896
|
-
|
|
47897
|
-
|
|
47898
|
-
|
|
47899
|
-
|
|
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
|
-
|
|
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-
|
|
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;
|