@caratlogic/design-system 0.1.13 → 0.1.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/README.md +1 -1
  2. package/dist/components/molecules/CustomField/CustomField.types.d.ts +28 -0
  3. package/dist/components/molecules/CustomField/CustomField.types.d.ts.map +1 -0
  4. package/dist/components/molecules/CustomField/CustomFieldInput.d.ts +43 -0
  5. package/dist/components/molecules/CustomField/CustomFieldInput.d.ts.map +1 -0
  6. package/dist/components/molecules/CustomField/CustomFieldValue.d.ts +17 -0
  7. package/dist/components/molecules/CustomField/CustomFieldValue.d.ts.map +1 -0
  8. package/dist/components/molecules/CustomField/fieldTypeIcon.d.ts +4 -0
  9. package/dist/components/molecules/CustomField/fieldTypeIcon.d.ts.map +1 -0
  10. package/dist/components/molecules/CustomField/fieldValueHelpers.d.ts +10 -0
  11. package/dist/components/molecules/CustomField/fieldValueHelpers.d.ts.map +1 -0
  12. package/dist/components/molecules/CustomField/index.d.ts +8 -0
  13. package/dist/components/molecules/CustomField/index.d.ts.map +1 -0
  14. package/dist/components/organisms/ActivityFeed/ActivityFeed.accessibility.d.ts +10 -0
  15. package/dist/components/organisms/ActivityFeed/ActivityFeed.accessibility.d.ts.map +1 -0
  16. package/dist/components/organisms/ActivityFeed/ActivityFeed.components.d.ts +22 -0
  17. package/dist/components/organisms/ActivityFeed/ActivityFeed.components.d.ts.map +1 -0
  18. package/dist/components/organisms/ActivityFeed/ActivityFeed.constants.d.ts +19 -0
  19. package/dist/components/organisms/ActivityFeed/ActivityFeed.constants.d.ts.map +1 -0
  20. package/dist/components/organisms/ActivityFeed/ActivityFeed.d.ts +11 -0
  21. package/dist/components/organisms/ActivityFeed/ActivityFeed.d.ts.map +1 -0
  22. package/dist/components/organisms/ActivityFeed/ActivityFeed.types.d.ts +102 -0
  23. package/dist/components/organisms/ActivityFeed/ActivityFeed.types.d.ts.map +1 -0
  24. package/dist/components/organisms/ActivityFeed/ActivityFeed.utils.d.ts +12 -0
  25. package/dist/components/organisms/ActivityFeed/ActivityFeed.utils.d.ts.map +1 -0
  26. package/dist/components/organisms/ActivityFeed/index.d.ts +4 -0
  27. package/dist/components/organisms/ActivityFeed/index.d.ts.map +1 -0
  28. package/dist/index.cjs.js +1031 -354
  29. package/dist/index.cjs.js.map +1 -1
  30. package/dist/index.d.ts +2 -0
  31. package/dist/index.d.ts.map +1 -1
  32. package/dist/index.esm.js +1020 -355
  33. package/dist/index.esm.js.map +1 -1
  34. package/package.json +1 -1
package/dist/index.esm.js CHANGED
@@ -2668,12 +2668,27 @@ const createLucideIcon = (iconName, iconNode) => {
2668
2668
  */
2669
2669
 
2670
2670
 
2671
- const __iconNode$18 = [
2671
+ const __iconNode$1o = [
2672
+ ["path", { d: "M15 12H3", key: "6jk70r" }],
2673
+ ["path", { d: "M17 18H3", key: "1amg6g" }],
2674
+ ["path", { d: "M21 6H3", key: "1jwq7v" }]
2675
+ ];
2676
+ const AlignLeft = createLucideIcon("align-left", __iconNode$1o);
2677
+
2678
+ /**
2679
+ * @license lucide-react v0.539.0 - ISC
2680
+ *
2681
+ * This source code is licensed under the ISC license.
2682
+ * See the LICENSE file in the root directory of this source tree.
2683
+ */
2684
+
2685
+
2686
+ const __iconNode$1n = [
2672
2687
  ["rect", { width: "20", height: "5", x: "2", y: "3", rx: "1", key: "1wp1u1" }],
2673
2688
  ["path", { d: "M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8", key: "1s80jp" }],
2674
2689
  ["path", { d: "M10 12h4", key: "a56b0p" }]
2675
2690
  ];
2676
- const Archive = createLucideIcon("archive", __iconNode$18);
2691
+ const Archive = createLucideIcon("archive", __iconNode$1n);
2677
2692
 
2678
2693
  /**
2679
2694
  * @license lucide-react v0.539.0 - ISC
@@ -2683,11 +2698,11 @@ const Archive = createLucideIcon("archive", __iconNode$18);
2683
2698
  */
2684
2699
 
2685
2700
 
2686
- const __iconNode$17 = [
2701
+ const __iconNode$1m = [
2687
2702
  ["path", { d: "m12 19-7-7 7-7", key: "1l729n" }],
2688
2703
  ["path", { d: "M19 12H5", key: "x3x0zl" }]
2689
2704
  ];
2690
- const ArrowLeft = createLucideIcon("arrow-left", __iconNode$17);
2705
+ const ArrowLeft = createLucideIcon("arrow-left", __iconNode$1m);
2691
2706
 
2692
2707
  /**
2693
2708
  * @license lucide-react v0.539.0 - ISC
@@ -2697,11 +2712,11 @@ const ArrowLeft = createLucideIcon("arrow-left", __iconNode$17);
2697
2712
  */
2698
2713
 
2699
2714
 
2700
- const __iconNode$16 = [
2715
+ const __iconNode$1l = [
2701
2716
  ["path", { d: "M5 12h14", key: "1ays0h" }],
2702
2717
  ["path", { d: "m12 5 7 7-7 7", key: "xquz4c" }]
2703
2718
  ];
2704
- const ArrowRight = createLucideIcon("arrow-right", __iconNode$16);
2719
+ const ArrowRight = createLucideIcon("arrow-right", __iconNode$1l);
2705
2720
 
2706
2721
  /**
2707
2722
  * @license lucide-react v0.539.0 - ISC
@@ -2711,11 +2726,11 @@ const ArrowRight = createLucideIcon("arrow-right", __iconNode$16);
2711
2726
  */
2712
2727
 
2713
2728
 
2714
- const __iconNode$15 = [
2729
+ const __iconNode$1k = [
2715
2730
  ["path", { d: "M4.929 4.929 19.07 19.071", key: "196cmz" }],
2716
2731
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }]
2717
2732
  ];
2718
- const Ban = createLucideIcon("ban", __iconNode$15);
2733
+ const Ban = createLucideIcon("ban", __iconNode$1k);
2719
2734
 
2720
2735
  /**
2721
2736
  * @license lucide-react v0.539.0 - ISC
@@ -2725,7 +2740,7 @@ const Ban = createLucideIcon("ban", __iconNode$15);
2725
2740
  */
2726
2741
 
2727
2742
 
2728
- const __iconNode$14 = [
2743
+ const __iconNode$1j = [
2729
2744
  ["path", { d: "M10.268 21a2 2 0 0 0 3.464 0", key: "vwvbt9" }],
2730
2745
  [
2731
2746
  "path",
@@ -2736,7 +2751,7 @@ const __iconNode$14 = [
2736
2751
  ],
2737
2752
  ["circle", { cx: "18", cy: "8", r: "3", key: "1g0gzu" }]
2738
2753
  ];
2739
- const BellDot = createLucideIcon("bell-dot", __iconNode$14);
2754
+ const BellDot = createLucideIcon("bell-dot", __iconNode$1j);
2740
2755
 
2741
2756
  /**
2742
2757
  * @license lucide-react v0.539.0 - ISC
@@ -2746,7 +2761,29 @@ const BellDot = createLucideIcon("bell-dot", __iconNode$14);
2746
2761
  */
2747
2762
 
2748
2763
 
2749
- const __iconNode$13 = [
2764
+ const __iconNode$1i = [
2765
+ ["path", { d: "M10.268 21a2 2 0 0 0 3.464 0", key: "vwvbt9" }],
2766
+ ["path", { d: "M22 8c0-2.3-.8-4.3-2-6", key: "5bb3ad" }],
2767
+ [
2768
+ "path",
2769
+ {
2770
+ d: "M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326",
2771
+ key: "11g9vi"
2772
+ }
2773
+ ],
2774
+ ["path", { d: "M4 2C2.8 3.7 2 5.7 2 8", key: "tap9e0" }]
2775
+ ];
2776
+ const BellRing = createLucideIcon("bell-ring", __iconNode$1i);
2777
+
2778
+ /**
2779
+ * @license lucide-react v0.539.0 - ISC
2780
+ *
2781
+ * This source code is licensed under the ISC license.
2782
+ * See the LICENSE file in the root directory of this source tree.
2783
+ */
2784
+
2785
+
2786
+ const __iconNode$1h = [
2750
2787
  ["path", { d: "M10.268 21a2 2 0 0 0 3.464 0", key: "vwvbt9" }],
2751
2788
  [
2752
2789
  "path",
@@ -2756,7 +2793,7 @@ const __iconNode$13 = [
2756
2793
  }
2757
2794
  ]
2758
2795
  ];
2759
- const Bell = createLucideIcon("bell", __iconNode$13);
2796
+ const Bell = createLucideIcon("bell", __iconNode$1h);
2760
2797
 
2761
2798
  /**
2762
2799
  * @license lucide-react v0.539.0 - ISC
@@ -2766,13 +2803,13 @@ const Bell = createLucideIcon("bell", __iconNode$13);
2766
2803
  */
2767
2804
 
2768
2805
 
2769
- const __iconNode$12 = [
2806
+ const __iconNode$1g = [
2770
2807
  [
2771
2808
  "path",
2772
2809
  { d: "M6 12h9a4 4 0 0 1 0 8H7a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h7a4 4 0 0 1 0 8", key: "mg9rjx" }
2773
2810
  ]
2774
2811
  ];
2775
- const Bold$1 = createLucideIcon("bold", __iconNode$12);
2812
+ const Bold$1 = createLucideIcon("bold", __iconNode$1g);
2776
2813
 
2777
2814
  /**
2778
2815
  * @license lucide-react v0.539.0 - ISC
@@ -2782,7 +2819,7 @@ const Bold$1 = createLucideIcon("bold", __iconNode$12);
2782
2819
  */
2783
2820
 
2784
2821
 
2785
- const __iconNode$11 = [
2822
+ const __iconNode$1f = [
2786
2823
  ["path", { d: "M8 2v4", key: "1cmpym" }],
2787
2824
  ["path", { d: "M16 2v4", key: "4m81vk" }],
2788
2825
  ["rect", { width: "18", height: "18", x: "3", y: "4", rx: "2", key: "1hopcy" }],
@@ -2794,7 +2831,7 @@ const __iconNode$11 = [
2794
2831
  ["path", { d: "M12 18h.01", key: "mhygvu" }],
2795
2832
  ["path", { d: "M16 18h.01", key: "kzsmim" }]
2796
2833
  ];
2797
- const CalendarDays = createLucideIcon("calendar-days", __iconNode$11);
2834
+ const CalendarDays = createLucideIcon("calendar-days", __iconNode$1f);
2798
2835
 
2799
2836
  /**
2800
2837
  * @license lucide-react v0.539.0 - ISC
@@ -2804,13 +2841,13 @@ const CalendarDays = createLucideIcon("calendar-days", __iconNode$11);
2804
2841
  */
2805
2842
 
2806
2843
 
2807
- const __iconNode$10 = [
2844
+ const __iconNode$1e = [
2808
2845
  ["path", { d: "M8 2v4", key: "1cmpym" }],
2809
2846
  ["path", { d: "M16 2v4", key: "4m81vk" }],
2810
2847
  ["rect", { width: "18", height: "18", x: "3", y: "4", rx: "2", key: "1hopcy" }],
2811
2848
  ["path", { d: "M3 10h18", key: "8toen8" }]
2812
2849
  ];
2813
- const Calendar$1 = createLucideIcon("calendar", __iconNode$10);
2850
+ const Calendar$1 = createLucideIcon("calendar", __iconNode$1e);
2814
2851
 
2815
2852
  /**
2816
2853
  * @license lucide-react v0.539.0 - ISC
@@ -2820,11 +2857,11 @@ const Calendar$1 = createLucideIcon("calendar", __iconNode$10);
2820
2857
  */
2821
2858
 
2822
2859
 
2823
- const __iconNode$$ = [
2860
+ const __iconNode$1d = [
2824
2861
  ["path", { d: "M18 6 7 17l-5-5", key: "116fxf" }],
2825
2862
  ["path", { d: "m22 10-7.5 7.5L13 16", key: "ke71qq" }]
2826
2863
  ];
2827
- const CheckCheck = createLucideIcon("check-check", __iconNode$$);
2864
+ const CheckCheck = createLucideIcon("check-check", __iconNode$1d);
2828
2865
 
2829
2866
  /**
2830
2867
  * @license lucide-react v0.539.0 - ISC
@@ -2834,8 +2871,8 @@ const CheckCheck = createLucideIcon("check-check", __iconNode$$);
2834
2871
  */
2835
2872
 
2836
2873
 
2837
- const __iconNode$_ = [["path", { d: "M20 6 9 17l-5-5", key: "1gmf2c" }]];
2838
- const Check = createLucideIcon("check", __iconNode$_);
2874
+ const __iconNode$1c = [["path", { d: "M20 6 9 17l-5-5", key: "1gmf2c" }]];
2875
+ const Check = createLucideIcon("check", __iconNode$1c);
2839
2876
 
2840
2877
  /**
2841
2878
  * @license lucide-react v0.539.0 - ISC
@@ -2845,8 +2882,8 @@ const Check = createLucideIcon("check", __iconNode$_);
2845
2882
  */
2846
2883
 
2847
2884
 
2848
- const __iconNode$Z = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]];
2849
- const ChevronDown = createLucideIcon("chevron-down", __iconNode$Z);
2885
+ const __iconNode$1b = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]];
2886
+ const ChevronDown = createLucideIcon("chevron-down", __iconNode$1b);
2850
2887
 
2851
2888
  /**
2852
2889
  * @license lucide-react v0.539.0 - ISC
@@ -2856,8 +2893,8 @@ const ChevronDown = createLucideIcon("chevron-down", __iconNode$Z);
2856
2893
  */
2857
2894
 
2858
2895
 
2859
- const __iconNode$Y = [["path", { d: "m15 18-6-6 6-6", key: "1wnfg3" }]];
2860
- const ChevronLeft = createLucideIcon("chevron-left", __iconNode$Y);
2896
+ const __iconNode$1a = [["path", { d: "m15 18-6-6 6-6", key: "1wnfg3" }]];
2897
+ const ChevronLeft = createLucideIcon("chevron-left", __iconNode$1a);
2861
2898
 
2862
2899
  /**
2863
2900
  * @license lucide-react v0.539.0 - ISC
@@ -2867,8 +2904,8 @@ const ChevronLeft = createLucideIcon("chevron-left", __iconNode$Y);
2867
2904
  */
2868
2905
 
2869
2906
 
2870
- const __iconNode$X = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]];
2871
- const ChevronRight = createLucideIcon("chevron-right", __iconNode$X);
2907
+ const __iconNode$19 = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]];
2908
+ const ChevronRight = createLucideIcon("chevron-right", __iconNode$19);
2872
2909
 
2873
2910
  /**
2874
2911
  * @license lucide-react v0.539.0 - ISC
@@ -2878,8 +2915,8 @@ const ChevronRight = createLucideIcon("chevron-right", __iconNode$X);
2878
2915
  */
2879
2916
 
2880
2917
 
2881
- const __iconNode$W = [["path", { d: "m18 15-6-6-6 6", key: "153udz" }]];
2882
- const ChevronUp = createLucideIcon("chevron-up", __iconNode$W);
2918
+ const __iconNode$18 = [["path", { d: "m18 15-6-6-6 6", key: "153udz" }]];
2919
+ const ChevronUp = createLucideIcon("chevron-up", __iconNode$18);
2883
2920
 
2884
2921
  /**
2885
2922
  * @license lucide-react v0.539.0 - ISC
@@ -2889,11 +2926,11 @@ const ChevronUp = createLucideIcon("chevron-up", __iconNode$W);
2889
2926
  */
2890
2927
 
2891
2928
 
2892
- const __iconNode$V = [
2929
+ const __iconNode$17 = [
2893
2930
  ["path", { d: "m11 17-5-5 5-5", key: "13zhaf" }],
2894
2931
  ["path", { d: "m18 17-5-5 5-5", key: "h8a8et" }]
2895
2932
  ];
2896
- const ChevronsLeft = createLucideIcon("chevrons-left", __iconNode$V);
2933
+ const ChevronsLeft = createLucideIcon("chevrons-left", __iconNode$17);
2897
2934
 
2898
2935
  /**
2899
2936
  * @license lucide-react v0.539.0 - ISC
@@ -2903,11 +2940,11 @@ const ChevronsLeft = createLucideIcon("chevrons-left", __iconNode$V);
2903
2940
  */
2904
2941
 
2905
2942
 
2906
- const __iconNode$U = [
2943
+ const __iconNode$16 = [
2907
2944
  ["path", { d: "m6 17 5-5-5-5", key: "xnjwq" }],
2908
2945
  ["path", { d: "m13 17 5-5-5-5", key: "17xmmf" }]
2909
2946
  ];
2910
- const ChevronsRight = createLucideIcon("chevrons-right", __iconNode$U);
2947
+ const ChevronsRight = createLucideIcon("chevrons-right", __iconNode$16);
2911
2948
 
2912
2949
  /**
2913
2950
  * @license lucide-react v0.539.0 - ISC
@@ -2917,12 +2954,12 @@ const ChevronsRight = createLucideIcon("chevrons-right", __iconNode$U);
2917
2954
  */
2918
2955
 
2919
2956
 
2920
- const __iconNode$T = [
2957
+ const __iconNode$15 = [
2921
2958
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
2922
2959
  ["line", { x1: "12", x2: "12", y1: "8", y2: "12", key: "1pkeuh" }],
2923
2960
  ["line", { x1: "12", x2: "12.01", y1: "16", y2: "16", key: "4dfq90" }]
2924
2961
  ];
2925
- const CircleAlert = createLucideIcon("circle-alert", __iconNode$T);
2962
+ const CircleAlert = createLucideIcon("circle-alert", __iconNode$15);
2926
2963
 
2927
2964
  /**
2928
2965
  * @license lucide-react v0.539.0 - ISC
@@ -2932,11 +2969,11 @@ const CircleAlert = createLucideIcon("circle-alert", __iconNode$T);
2932
2969
  */
2933
2970
 
2934
2971
 
2935
- const __iconNode$S = [
2972
+ const __iconNode$14 = [
2936
2973
  ["path", { d: "M21.801 10A10 10 0 1 1 17 3.335", key: "yps3ct" }],
2937
2974
  ["path", { d: "m9 11 3 3L22 4", key: "1pflzl" }]
2938
2975
  ];
2939
- const CircleCheckBig = createLucideIcon("circle-check-big", __iconNode$S);
2976
+ const CircleCheckBig = createLucideIcon("circle-check-big", __iconNode$14);
2940
2977
 
2941
2978
  /**
2942
2979
  * @license lucide-react v0.539.0 - ISC
@@ -2946,11 +2983,11 @@ const CircleCheckBig = createLucideIcon("circle-check-big", __iconNode$S);
2946
2983
  */
2947
2984
 
2948
2985
 
2949
- const __iconNode$R = [
2986
+ const __iconNode$13 = [
2950
2987
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
2951
2988
  ["path", { d: "m9 12 2 2 4-4", key: "dzmm74" }]
2952
2989
  ];
2953
- const CircleCheck = createLucideIcon("circle-check", __iconNode$R);
2990
+ const CircleCheck = createLucideIcon("circle-check", __iconNode$13);
2954
2991
 
2955
2992
  /**
2956
2993
  * @license lucide-react v0.539.0 - ISC
@@ -2960,12 +2997,40 @@ const CircleCheck = createLucideIcon("circle-check", __iconNode$R);
2960
2997
  */
2961
2998
 
2962
2999
 
2963
- const __iconNode$Q = [
3000
+ const __iconNode$12 = [
3001
+ ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
3002
+ ["path", { d: "m16 10-4 4-4-4", key: "894hmk" }]
3003
+ ];
3004
+ const CircleChevronDown = createLucideIcon("circle-chevron-down", __iconNode$12);
3005
+
3006
+ /**
3007
+ * @license lucide-react v0.539.0 - ISC
3008
+ *
3009
+ * This source code is licensed under the ISC license.
3010
+ * See the LICENSE file in the root directory of this source tree.
3011
+ */
3012
+
3013
+
3014
+ const __iconNode$11 = [
3015
+ ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
3016
+ ["circle", { cx: "12", cy: "12", r: "1", key: "41hilf" }]
3017
+ ];
3018
+ const CircleDot = createLucideIcon("circle-dot", __iconNode$11);
3019
+
3020
+ /**
3021
+ * @license lucide-react v0.539.0 - ISC
3022
+ *
3023
+ * This source code is licensed under the ISC license.
3024
+ * See the LICENSE file in the root directory of this source tree.
3025
+ */
3026
+
3027
+
3028
+ const __iconNode$10 = [
2964
3029
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
2965
3030
  ["path", { d: "m15 9-6 6", key: "1uzhvr" }],
2966
3031
  ["path", { d: "m9 9 6 6", key: "z0biqf" }]
2967
3032
  ];
2968
- const CircleX = createLucideIcon("circle-x", __iconNode$Q);
3033
+ const CircleX = createLucideIcon("circle-x", __iconNode$10);
2969
3034
 
2970
3035
  /**
2971
3036
  * @license lucide-react v0.539.0 - ISC
@@ -2975,8 +3040,8 @@ const CircleX = createLucideIcon("circle-x", __iconNode$Q);
2975
3040
  */
2976
3041
 
2977
3042
 
2978
- const __iconNode$P = [["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }]];
2979
- const Circle = createLucideIcon("circle", __iconNode$P);
3043
+ const __iconNode$$ = [["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }]];
3044
+ const Circle = createLucideIcon("circle", __iconNode$$);
2980
3045
 
2981
3046
  /**
2982
3047
  * @license lucide-react v0.539.0 - ISC
@@ -2986,11 +3051,11 @@ const Circle = createLucideIcon("circle", __iconNode$P);
2986
3051
  */
2987
3052
 
2988
3053
 
2989
- const __iconNode$O = [
3054
+ const __iconNode$_ = [
2990
3055
  ["path", { d: "M12 6v6l4 2", key: "mmk7yg" }],
2991
3056
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }]
2992
3057
  ];
2993
- const Clock = createLucideIcon("clock", __iconNode$O);
3058
+ const Clock = createLucideIcon("clock", __iconNode$_);
2994
3059
 
2995
3060
  /**
2996
3061
  * @license lucide-react v0.539.0 - ISC
@@ -3000,11 +3065,11 @@ const Clock = createLucideIcon("clock", __iconNode$O);
3000
3065
  */
3001
3066
 
3002
3067
 
3003
- const __iconNode$N = [
3068
+ const __iconNode$Z = [
3004
3069
  ["rect", { width: "14", height: "14", x: "8", y: "8", rx: "2", ry: "2", key: "17jyea" }],
3005
3070
  ["path", { d: "M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2", key: "zix9uf" }]
3006
3071
  ];
3007
- const Copy = createLucideIcon("copy", __iconNode$N);
3072
+ const Copy = createLucideIcon("copy", __iconNode$Z);
3008
3073
 
3009
3074
  /**
3010
3075
  * @license lucide-react v0.539.0 - ISC
@@ -3014,11 +3079,11 @@ const Copy = createLucideIcon("copy", __iconNode$N);
3014
3079
  */
3015
3080
 
3016
3081
 
3017
- const __iconNode$M = [
3082
+ const __iconNode$Y = [
3018
3083
  ["path", { d: "M6 2v14a2 2 0 0 0 2 2h14", key: "ron5a4" }],
3019
3084
  ["path", { d: "M18 22V8a2 2 0 0 0-2-2H2", key: "7s9ehn" }]
3020
3085
  ];
3021
- const Crop = createLucideIcon("crop", __iconNode$M);
3086
+ const Crop = createLucideIcon("crop", __iconNode$Y);
3022
3087
 
3023
3088
  /**
3024
3089
  * @license lucide-react v0.539.0 - ISC
@@ -3028,12 +3093,12 @@ const Crop = createLucideIcon("crop", __iconNode$M);
3028
3093
  */
3029
3094
 
3030
3095
 
3031
- const __iconNode$L = [
3096
+ const __iconNode$X = [
3032
3097
  ["path", { d: "M12 15V3", key: "m9g1x1" }],
3033
3098
  ["path", { d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4", key: "ih7n3h" }],
3034
3099
  ["path", { d: "m7 10 5 5 5-5", key: "brsn70" }]
3035
3100
  ];
3036
- const Download = createLucideIcon("download", __iconNode$L);
3101
+ const Download = createLucideIcon("download", __iconNode$X);
3037
3102
 
3038
3103
  /**
3039
3104
  * @license lucide-react v0.539.0 - ISC
@@ -3043,12 +3108,12 @@ const Download = createLucideIcon("download", __iconNode$L);
3043
3108
  */
3044
3109
 
3045
3110
 
3046
- const __iconNode$K = [
3111
+ const __iconNode$W = [
3047
3112
  ["circle", { cx: "12", cy: "12", r: "1", key: "41hilf" }],
3048
3113
  ["circle", { cx: "12", cy: "5", r: "1", key: "gxeob9" }],
3049
3114
  ["circle", { cx: "12", cy: "19", r: "1", key: "lyex9k" }]
3050
3115
  ];
3051
- const EllipsisVertical = createLucideIcon("ellipsis-vertical", __iconNode$K);
3116
+ const EllipsisVertical = createLucideIcon("ellipsis-vertical", __iconNode$W);
3052
3117
 
3053
3118
  /**
3054
3119
  * @license lucide-react v0.539.0 - ISC
@@ -3058,12 +3123,12 @@ const EllipsisVertical = createLucideIcon("ellipsis-vertical", __iconNode$K);
3058
3123
  */
3059
3124
 
3060
3125
 
3061
- const __iconNode$J = [
3126
+ const __iconNode$V = [
3062
3127
  ["circle", { cx: "12", cy: "12", r: "1", key: "41hilf" }],
3063
3128
  ["circle", { cx: "19", cy: "12", r: "1", key: "1wjl8i" }],
3064
3129
  ["circle", { cx: "5", cy: "12", r: "1", key: "1pcz8c" }]
3065
3130
  ];
3066
- const Ellipsis = createLucideIcon("ellipsis", __iconNode$J);
3131
+ const Ellipsis = createLucideIcon("ellipsis", __iconNode$V);
3067
3132
 
3068
3133
  /**
3069
3134
  * @license lucide-react v0.539.0 - ISC
@@ -3073,12 +3138,12 @@ const Ellipsis = createLucideIcon("ellipsis", __iconNode$J);
3073
3138
  */
3074
3139
 
3075
3140
 
3076
- const __iconNode$I = [
3141
+ const __iconNode$U = [
3077
3142
  ["path", { d: "M15 3h6v6", key: "1q9fwt" }],
3078
3143
  ["path", { d: "M10 14 21 3", key: "gplh6r" }],
3079
3144
  ["path", { d: "M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6", key: "a6xqqp" }]
3080
3145
  ];
3081
- const ExternalLink = createLucideIcon("external-link", __iconNode$I);
3146
+ const ExternalLink = createLucideIcon("external-link", __iconNode$U);
3082
3147
 
3083
3148
  /**
3084
3149
  * @license lucide-react v0.539.0 - ISC
@@ -3088,7 +3153,7 @@ const ExternalLink = createLucideIcon("external-link", __iconNode$I);
3088
3153
  */
3089
3154
 
3090
3155
 
3091
- const __iconNode$H = [
3156
+ const __iconNode$T = [
3092
3157
  [
3093
3158
  "path",
3094
3159
  {
@@ -3098,7 +3163,7 @@ const __iconNode$H = [
3098
3163
  ],
3099
3164
  ["circle", { cx: "12", cy: "12", r: "3", key: "1v7zrd" }]
3100
3165
  ];
3101
- const Eye = createLucideIcon("eye", __iconNode$H);
3166
+ const Eye = createLucideIcon("eye", __iconNode$T);
3102
3167
 
3103
3168
  /**
3104
3169
  * @license lucide-react v0.539.0 - ISC
@@ -3108,13 +3173,13 @@ const Eye = createLucideIcon("eye", __iconNode$H);
3108
3173
  */
3109
3174
 
3110
3175
 
3111
- const __iconNode$G = [
3176
+ const __iconNode$S = [
3112
3177
  [
3113
3178
  "path",
3114
3179
  { d: "M18 2h-3a5 5 0 0 0-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 0 1 1-1h3z", key: "1jg4f8" }
3115
3180
  ]
3116
3181
  ];
3117
- const Facebook = createLucideIcon("facebook", __iconNode$G);
3182
+ const Facebook = createLucideIcon("facebook", __iconNode$S);
3118
3183
 
3119
3184
  /**
3120
3185
  * @license lucide-react v0.539.0 - ISC
@@ -3124,7 +3189,7 @@ const Facebook = createLucideIcon("facebook", __iconNode$G);
3124
3189
  */
3125
3190
 
3126
3191
 
3127
- const __iconNode$F = [
3192
+ const __iconNode$R = [
3128
3193
  ["path", { d: "M12 22h6a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v3.072", key: "n6s66f" }],
3129
3194
  ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }],
3130
3195
  [
@@ -3136,7 +3201,7 @@ const __iconNode$F = [
3136
3201
  ],
3137
3202
  ["circle", { cx: "5", cy: "14", r: "3", key: "ufru5t" }]
3138
3203
  ];
3139
- const FileBadge = createLucideIcon("file-badge", __iconNode$F);
3204
+ const FileBadge = createLucideIcon("file-badge", __iconNode$R);
3140
3205
 
3141
3206
  /**
3142
3207
  * @license lucide-react v0.539.0 - ISC
@@ -3146,14 +3211,29 @@ const FileBadge = createLucideIcon("file-badge", __iconNode$F);
3146
3211
  */
3147
3212
 
3148
3213
 
3149
- const __iconNode$E = [
3214
+ const __iconNode$Q = [
3215
+ ["path", { d: "M4 22h14a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v4", key: "1pf5j1" }],
3216
+ ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }],
3217
+ ["path", { d: "m3 15 2 2 4-4", key: "1lhrkk" }]
3218
+ ];
3219
+ const FileCheck2 = createLucideIcon("file-check-2", __iconNode$Q);
3220
+
3221
+ /**
3222
+ * @license lucide-react v0.539.0 - ISC
3223
+ *
3224
+ * This source code is licensed under the ISC license.
3225
+ * See the LICENSE file in the root directory of this source tree.
3226
+ */
3227
+
3228
+
3229
+ const __iconNode$P = [
3150
3230
  ["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }],
3151
3231
  ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }],
3152
3232
  ["path", { d: "M10 9H8", key: "b1mrlr" }],
3153
3233
  ["path", { d: "M16 13H8", key: "t4e002" }],
3154
3234
  ["path", { d: "M16 17H8", key: "z1uh3a" }]
3155
3235
  ];
3156
- const FileText = createLucideIcon("file-text", __iconNode$E);
3236
+ const FileText = createLucideIcon("file-text", __iconNode$P);
3157
3237
 
3158
3238
  /**
3159
3239
  * @license lucide-react v0.539.0 - ISC
@@ -3163,7 +3243,7 @@ const FileText = createLucideIcon("file-text", __iconNode$E);
3163
3243
  */
3164
3244
 
3165
3245
 
3166
- const __iconNode$D = [
3246
+ const __iconNode$O = [
3167
3247
  [
3168
3248
  "path",
3169
3249
  {
@@ -3172,7 +3252,7 @@ const __iconNode$D = [
3172
3252
  }
3173
3253
  ]
3174
3254
  ];
3175
- const Funnel = createLucideIcon("funnel", __iconNode$D);
3255
+ const Funnel = createLucideIcon("funnel", __iconNode$O);
3176
3256
 
3177
3257
  /**
3178
3258
  * @license lucide-react v0.539.0 - ISC
@@ -3182,7 +3262,7 @@ const Funnel = createLucideIcon("funnel", __iconNode$D);
3182
3262
  */
3183
3263
 
3184
3264
 
3185
- const __iconNode$C = [
3265
+ const __iconNode$N = [
3186
3266
  ["circle", { cx: "12", cy: "9", r: "1", key: "124mty" }],
3187
3267
  ["circle", { cx: "19", cy: "9", r: "1", key: "1ruzo2" }],
3188
3268
  ["circle", { cx: "5", cy: "9", r: "1", key: "1a8b28" }],
@@ -3190,7 +3270,7 @@ const __iconNode$C = [
3190
3270
  ["circle", { cx: "19", cy: "15", r: "1", key: "1a92ep" }],
3191
3271
  ["circle", { cx: "5", cy: "15", r: "1", key: "5r1jwy" }]
3192
3272
  ];
3193
- const GripHorizontal = createLucideIcon("grip-horizontal", __iconNode$C);
3273
+ const GripHorizontal = createLucideIcon("grip-horizontal", __iconNode$N);
3194
3274
 
3195
3275
  /**
3196
3276
  * @license lucide-react v0.539.0 - ISC
@@ -3200,7 +3280,7 @@ const GripHorizontal = createLucideIcon("grip-horizontal", __iconNode$C);
3200
3280
  */
3201
3281
 
3202
3282
 
3203
- const __iconNode$B = [
3283
+ const __iconNode$M = [
3204
3284
  ["circle", { cx: "9", cy: "12", r: "1", key: "1vctgf" }],
3205
3285
  ["circle", { cx: "9", cy: "5", r: "1", key: "hp0tcf" }],
3206
3286
  ["circle", { cx: "9", cy: "19", r: "1", key: "fkjjf6" }],
@@ -3208,7 +3288,7 @@ const __iconNode$B = [
3208
3288
  ["circle", { cx: "15", cy: "5", r: "1", key: "19l28e" }],
3209
3289
  ["circle", { cx: "15", cy: "19", r: "1", key: "f4zoj3" }]
3210
3290
  ];
3211
- const GripVertical = createLucideIcon("grip-vertical", __iconNode$B);
3291
+ const GripVertical = createLucideIcon("grip-vertical", __iconNode$M);
3212
3292
 
3213
3293
  /**
3214
3294
  * @license lucide-react v0.539.0 - ISC
@@ -3218,13 +3298,29 @@ const GripVertical = createLucideIcon("grip-vertical", __iconNode$B);
3218
3298
  */
3219
3299
 
3220
3300
 
3221
- const __iconNode$A = [
3301
+ const __iconNode$L = [
3302
+ ["line", { x1: "4", x2: "20", y1: "9", y2: "9", key: "4lhtct" }],
3303
+ ["line", { x1: "4", x2: "20", y1: "15", y2: "15", key: "vyu0kd" }],
3304
+ ["line", { x1: "10", x2: "8", y1: "3", y2: "21", key: "1ggp8o" }],
3305
+ ["line", { x1: "16", x2: "14", y1: "3", y2: "21", key: "weycgp" }]
3306
+ ];
3307
+ const Hash = createLucideIcon("hash", __iconNode$L);
3308
+
3309
+ /**
3310
+ * @license lucide-react v0.539.0 - ISC
3311
+ *
3312
+ * This source code is licensed under the ISC license.
3313
+ * See the LICENSE file in the root directory of this source tree.
3314
+ */
3315
+
3316
+
3317
+ const __iconNode$K = [
3222
3318
  ["path", { d: "M4 12h8", key: "17cfdx" }],
3223
3319
  ["path", { d: "M4 18V6", key: "1rz3zl" }],
3224
3320
  ["path", { d: "M12 18V6", key: "zqpxq5" }],
3225
3321
  ["path", { d: "m17 12 3-2v8", key: "1hhhft" }]
3226
3322
  ];
3227
- const Heading1 = createLucideIcon("heading-1", __iconNode$A);
3323
+ const Heading1 = createLucideIcon("heading-1", __iconNode$K);
3228
3324
 
3229
3325
  /**
3230
3326
  * @license lucide-react v0.539.0 - ISC
@@ -3234,13 +3330,13 @@ const Heading1 = createLucideIcon("heading-1", __iconNode$A);
3234
3330
  */
3235
3331
 
3236
3332
 
3237
- const __iconNode$z = [
3333
+ const __iconNode$J = [
3238
3334
  ["path", { d: "M4 12h8", key: "17cfdx" }],
3239
3335
  ["path", { d: "M4 18V6", key: "1rz3zl" }],
3240
3336
  ["path", { d: "M12 18V6", key: "zqpxq5" }],
3241
3337
  ["path", { d: "M21 18h-4c0-4 4-3 4-6 0-1.5-2-2.5-4-1", key: "9jr5yi" }]
3242
3338
  ];
3243
- const Heading2 = createLucideIcon("heading-2", __iconNode$z);
3339
+ const Heading2 = createLucideIcon("heading-2", __iconNode$J);
3244
3340
 
3245
3341
  /**
3246
3342
  * @license lucide-react v0.539.0 - ISC
@@ -3250,14 +3346,14 @@ const Heading2 = createLucideIcon("heading-2", __iconNode$z);
3250
3346
  */
3251
3347
 
3252
3348
 
3253
- const __iconNode$y = [
3349
+ const __iconNode$I = [
3254
3350
  ["path", { d: "M4 12h8", key: "17cfdx" }],
3255
3351
  ["path", { d: "M4 18V6", key: "1rz3zl" }],
3256
3352
  ["path", { d: "M12 18V6", key: "zqpxq5" }],
3257
3353
  ["path", { d: "M17.5 10.5c1.7-1 3.5 0 3.5 1.5a2 2 0 0 1-2 2", key: "68ncm8" }],
3258
3354
  ["path", { d: "M17 17.5c2 1.5 4 .3 4-1.5a2 2 0 0 0-2-2", key: "1ejuhz" }]
3259
3355
  ];
3260
- const Heading3 = createLucideIcon("heading-3", __iconNode$y);
3356
+ const Heading3 = createLucideIcon("heading-3", __iconNode$I);
3261
3357
 
3262
3358
  /**
3263
3359
  * @license lucide-react v0.539.0 - ISC
@@ -3267,12 +3363,12 @@ const Heading3 = createLucideIcon("heading-3", __iconNode$y);
3267
3363
  */
3268
3364
 
3269
3365
 
3270
- const __iconNode$x = [
3366
+ const __iconNode$H = [
3271
3367
  ["path", { d: "M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8", key: "1357e3" }],
3272
3368
  ["path", { d: "M3 3v5h5", key: "1xhq8a" }],
3273
3369
  ["path", { d: "M12 7v5l4 2", key: "1fdv2h" }]
3274
3370
  ];
3275
- const History = createLucideIcon("history", __iconNode$x);
3371
+ const History = createLucideIcon("history", __iconNode$H);
3276
3372
 
3277
3373
  /**
3278
3374
  * @license lucide-react v0.539.0 - ISC
@@ -3282,12 +3378,12 @@ const History = createLucideIcon("history", __iconNode$x);
3282
3378
  */
3283
3379
 
3284
3380
 
3285
- const __iconNode$w = [
3381
+ const __iconNode$G = [
3286
3382
  ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", ry: "2", key: "1m3agn" }],
3287
3383
  ["circle", { cx: "9", cy: "9", r: "2", key: "af1f0g" }],
3288
3384
  ["path", { d: "m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21", key: "1xmnt7" }]
3289
3385
  ];
3290
- const Image$1 = createLucideIcon("image", __iconNode$w);
3386
+ const Image$1 = createLucideIcon("image", __iconNode$G);
3291
3387
 
3292
3388
  /**
3293
3389
  * @license lucide-react v0.539.0 - ISC
@@ -3297,12 +3393,12 @@ const Image$1 = createLucideIcon("image", __iconNode$w);
3297
3393
  */
3298
3394
 
3299
3395
 
3300
- const __iconNode$v = [
3396
+ const __iconNode$F = [
3301
3397
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
3302
3398
  ["path", { d: "M12 16v-4", key: "1dtifu" }],
3303
3399
  ["path", { d: "M12 8h.01", key: "e9boi3" }]
3304
3400
  ];
3305
- const Info = createLucideIcon("info", __iconNode$v);
3401
+ const Info = createLucideIcon("info", __iconNode$F);
3306
3402
 
3307
3403
  /**
3308
3404
  * @license lucide-react v0.539.0 - ISC
@@ -3312,12 +3408,12 @@ const Info = createLucideIcon("info", __iconNode$v);
3312
3408
  */
3313
3409
 
3314
3410
 
3315
- const __iconNode$u = [
3411
+ const __iconNode$E = [
3316
3412
  ["line", { x1: "19", x2: "10", y1: "4", y2: "4", key: "15jd3p" }],
3317
3413
  ["line", { x1: "14", x2: "5", y1: "20", y2: "20", key: "bu0au3" }],
3318
3414
  ["line", { x1: "15", x2: "9", y1: "4", y2: "20", key: "uljnxc" }]
3319
3415
  ];
3320
- const Italic$1 = createLucideIcon("italic", __iconNode$u);
3416
+ const Italic$1 = createLucideIcon("italic", __iconNode$E);
3321
3417
 
3322
3418
  /**
3323
3419
  * @license lucide-react v0.539.0 - ISC
@@ -3327,12 +3423,32 @@ const Italic$1 = createLucideIcon("italic", __iconNode$u);
3327
3423
  */
3328
3424
 
3329
3425
 
3330
- const __iconNode$t = [
3426
+ const __iconNode$D = [
3427
+ [
3428
+ "path",
3429
+ {
3430
+ 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",
3431
+ key: "1s6t7t"
3432
+ }
3433
+ ],
3434
+ ["circle", { cx: "16.5", cy: "7.5", r: ".5", fill: "currentColor", key: "w0ekpg" }]
3435
+ ];
3436
+ const KeyRound = createLucideIcon("key-round", __iconNode$D);
3437
+
3438
+ /**
3439
+ * @license lucide-react v0.539.0 - ISC
3440
+ *
3441
+ * This source code is licensed under the ISC license.
3442
+ * See the LICENSE file in the root directory of this source tree.
3443
+ */
3444
+
3445
+
3446
+ const __iconNode$C = [
3331
3447
  ["path", { d: "M9 17H7A5 5 0 0 1 7 7h2", key: "8i5ue5" }],
3332
3448
  ["path", { d: "M15 7h2a5 5 0 1 1 0 10h-2", key: "1b9ql8" }],
3333
3449
  ["line", { x1: "8", x2: "16", y1: "12", y2: "12", key: "1jonct" }]
3334
3450
  ];
3335
- const Link2 = createLucideIcon("link-2", __iconNode$t);
3451
+ const Link2 = createLucideIcon("link-2", __iconNode$C);
3336
3452
 
3337
3453
  /**
3338
3454
  * @license lucide-react v0.539.0 - ISC
@@ -3342,7 +3458,24 @@ const Link2 = createLucideIcon("link-2", __iconNode$t);
3342
3458
  */
3343
3459
 
3344
3460
 
3345
- const __iconNode$s = [
3461
+ const __iconNode$B = [
3462
+ ["path", { d: "m3 17 2 2 4-4", key: "1jhpwq" }],
3463
+ ["path", { d: "m3 7 2 2 4-4", key: "1obspn" }],
3464
+ ["path", { d: "M13 6h8", key: "15sg57" }],
3465
+ ["path", { d: "M13 12h8", key: "h98zly" }],
3466
+ ["path", { d: "M13 18h8", key: "oe0vm4" }]
3467
+ ];
3468
+ const ListChecks = createLucideIcon("list-checks", __iconNode$B);
3469
+
3470
+ /**
3471
+ * @license lucide-react v0.539.0 - ISC
3472
+ *
3473
+ * This source code is licensed under the ISC license.
3474
+ * See the LICENSE file in the root directory of this source tree.
3475
+ */
3476
+
3477
+
3478
+ const __iconNode$A = [
3346
3479
  ["path", { d: "M10 12h11", key: "6m4ad9" }],
3347
3480
  ["path", { d: "M10 18h11", key: "11hvi2" }],
3348
3481
  ["path", { d: "M10 6h11", key: "c7qv1k" }],
@@ -3350,7 +3483,7 @@ const __iconNode$s = [
3350
3483
  ["path", { d: "M4 6h1v4", key: "cnovpq" }],
3351
3484
  ["path", { d: "M6 18H4c0-1 2-2 2-3s-1-1.5-2-1", key: "m9a95d" }]
3352
3485
  ];
3353
- const ListOrdered = createLucideIcon("list-ordered", __iconNode$s);
3486
+ const ListOrdered = createLucideIcon("list-ordered", __iconNode$A);
3354
3487
 
3355
3488
  /**
3356
3489
  * @license lucide-react v0.539.0 - ISC
@@ -3360,7 +3493,7 @@ const ListOrdered = createLucideIcon("list-ordered", __iconNode$s);
3360
3493
  */
3361
3494
 
3362
3495
 
3363
- const __iconNode$r = [
3496
+ const __iconNode$z = [
3364
3497
  ["path", { d: "M3 12h.01", key: "nlz23k" }],
3365
3498
  ["path", { d: "M3 18h.01", key: "1tta3j" }],
3366
3499
  ["path", { d: "M3 6h.01", key: "1rqtza" }],
@@ -3368,7 +3501,7 @@ const __iconNode$r = [
3368
3501
  ["path", { d: "M8 18h13", key: "1lx6n3" }],
3369
3502
  ["path", { d: "M8 6h13", key: "ik3vkj" }]
3370
3503
  ];
3371
- const List = createLucideIcon("list", __iconNode$r);
3504
+ const List = createLucideIcon("list", __iconNode$z);
3372
3505
 
3373
3506
  /**
3374
3507
  * @license lucide-react v0.539.0 - ISC
@@ -3378,8 +3511,8 @@ const List = createLucideIcon("list", __iconNode$r);
3378
3511
  */
3379
3512
 
3380
3513
 
3381
- const __iconNode$q = [["path", { d: "M21 12a9 9 0 1 1-6.219-8.56", key: "13zald" }]];
3382
- const LoaderCircle = createLucideIcon("loader-circle", __iconNode$q);
3514
+ const __iconNode$y = [["path", { d: "M21 12a9 9 0 1 1-6.219-8.56", key: "13zald" }]];
3515
+ const LoaderCircle = createLucideIcon("loader-circle", __iconNode$y);
3383
3516
 
3384
3517
  /**
3385
3518
  * @license lucide-react v0.539.0 - ISC
@@ -3389,7 +3522,7 @@ const LoaderCircle = createLucideIcon("loader-circle", __iconNode$q);
3389
3522
  */
3390
3523
 
3391
3524
 
3392
- const __iconNode$p = [
3525
+ const __iconNode$x = [
3393
3526
  ["path", { d: "M12 2v4", key: "3427ic" }],
3394
3527
  ["path", { d: "m16.2 7.8 2.9-2.9", key: "r700ao" }],
3395
3528
  ["path", { d: "M18 12h4", key: "wj9ykh" }],
@@ -3399,7 +3532,7 @@ const __iconNode$p = [
3399
3532
  ["path", { d: "M2 12h4", key: "j09sii" }],
3400
3533
  ["path", { d: "m4.9 4.9 2.9 2.9", key: "giyufr" }]
3401
3534
  ];
3402
- const Loader = createLucideIcon("loader", __iconNode$p);
3535
+ const Loader = createLucideIcon("loader", __iconNode$x);
3403
3536
 
3404
3537
  /**
3405
3538
  * @license lucide-react v0.539.0 - ISC
@@ -3409,12 +3542,12 @@ const Loader = createLucideIcon("loader", __iconNode$p);
3409
3542
  */
3410
3543
 
3411
3544
 
3412
- const __iconNode$o = [
3545
+ const __iconNode$w = [
3413
3546
  ["path", { d: "m16 17 5-5-5-5", key: "1bji2h" }],
3414
3547
  ["path", { d: "M21 12H9", key: "dn1m92" }],
3415
3548
  ["path", { d: "M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4", key: "1uf3rs" }]
3416
3549
  ];
3417
- const LogOut = createLucideIcon("log-out", __iconNode$o);
3550
+ const LogOut = createLucideIcon("log-out", __iconNode$w);
3418
3551
 
3419
3552
  /**
3420
3553
  * @license lucide-react v0.539.0 - ISC
@@ -3424,12 +3557,26 @@ const LogOut = createLucideIcon("log-out", __iconNode$o);
3424
3557
  */
3425
3558
 
3426
3559
 
3427
- const __iconNode$n = [
3560
+ const __iconNode$v = [
3561
+ ["path", { d: "m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7", key: "132q7q" }],
3562
+ ["rect", { x: "2", y: "4", width: "20", height: "16", rx: "2", key: "izxlao" }]
3563
+ ];
3564
+ const Mail = createLucideIcon("mail", __iconNode$v);
3565
+
3566
+ /**
3567
+ * @license lucide-react v0.539.0 - ISC
3568
+ *
3569
+ * This source code is licensed under the ISC license.
3570
+ * See the LICENSE file in the root directory of this source tree.
3571
+ */
3572
+
3573
+
3574
+ const __iconNode$u = [
3428
3575
  ["path", { d: "M4 12h16", key: "1lakjw" }],
3429
3576
  ["path", { d: "M4 18h16", key: "19g7jn" }],
3430
3577
  ["path", { d: "M4 6h16", key: "1o0s65" }]
3431
3578
  ];
3432
- const Menu = createLucideIcon("menu", __iconNode$n);
3579
+ const Menu = createLucideIcon("menu", __iconNode$u);
3433
3580
 
3434
3581
  /**
3435
3582
  * @license lucide-react v0.539.0 - ISC
@@ -3439,7 +3586,7 @@ const Menu = createLucideIcon("menu", __iconNode$n);
3439
3586
  */
3440
3587
 
3441
3588
 
3442
- const __iconNode$m = [
3589
+ const __iconNode$t = [
3443
3590
  [
3444
3591
  "path",
3445
3592
  {
@@ -3448,7 +3595,7 @@ const __iconNode$m = [
3448
3595
  }
3449
3596
  ]
3450
3597
  ];
3451
- const Moon = createLucideIcon("moon", __iconNode$m);
3598
+ const Moon = createLucideIcon("moon", __iconNode$t);
3452
3599
 
3453
3600
  /**
3454
3601
  * @license lucide-react v0.539.0 - ISC
@@ -3458,7 +3605,7 @@ const Moon = createLucideIcon("moon", __iconNode$m);
3458
3605
  */
3459
3606
 
3460
3607
 
3461
- const __iconNode$l = [
3608
+ const __iconNode$s = [
3462
3609
  [
3463
3610
  "path",
3464
3611
  {
@@ -3471,7 +3618,7 @@ const __iconNode$l = [
3471
3618
  ["circle", { cx: "6.5", cy: "12.5", r: ".5", fill: "currentColor", key: "qy21gx" }],
3472
3619
  ["circle", { cx: "8.5", cy: "7.5", r: ".5", fill: "currentColor", key: "fotxhn" }]
3473
3620
  ];
3474
- const Palette = createLucideIcon("palette", __iconNode$l);
3621
+ const Palette = createLucideIcon("palette", __iconNode$s);
3475
3622
 
3476
3623
  /**
3477
3624
  * @license lucide-react v0.539.0 - ISC
@@ -3481,12 +3628,12 @@ const Palette = createLucideIcon("palette", __iconNode$l);
3481
3628
  */
3482
3629
 
3483
3630
 
3484
- const __iconNode$k = [
3631
+ const __iconNode$r = [
3485
3632
  ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }],
3486
3633
  ["path", { d: "M9 3v18", key: "fh3hqa" }],
3487
3634
  ["path", { d: "m16 15-3-3 3-3", key: "14y99z" }]
3488
3635
  ];
3489
- const PanelLeftClose = createLucideIcon("panel-left-close", __iconNode$k);
3636
+ const PanelLeftClose = createLucideIcon("panel-left-close", __iconNode$r);
3490
3637
 
3491
3638
  /**
3492
3639
  * @license lucide-react v0.539.0 - ISC
@@ -3496,7 +3643,26 @@ const PanelLeftClose = createLucideIcon("panel-left-close", __iconNode$k);
3496
3643
  */
3497
3644
 
3498
3645
 
3499
- const __iconNode$j = [
3646
+ const __iconNode$q = [
3647
+ [
3648
+ "path",
3649
+ {
3650
+ d: "m16 6-8.414 8.586a2 2 0 0 0 2.829 2.829l8.414-8.586a4 4 0 1 0-5.657-5.657l-8.379 8.551a6 6 0 1 0 8.485 8.485l8.379-8.551",
3651
+ key: "1miecu"
3652
+ }
3653
+ ]
3654
+ ];
3655
+ const Paperclip = createLucideIcon("paperclip", __iconNode$q);
3656
+
3657
+ /**
3658
+ * @license lucide-react v0.539.0 - ISC
3659
+ *
3660
+ * This source code is licensed under the ISC license.
3661
+ * See the LICENSE file in the root directory of this source tree.
3662
+ */
3663
+
3664
+
3665
+ const __iconNode$p = [
3500
3666
  [
3501
3667
  "path",
3502
3668
  {
@@ -3506,7 +3672,7 @@ const __iconNode$j = [
3506
3672
  ],
3507
3673
  ["path", { d: "m15 5 4 4", key: "1mk7zo" }]
3508
3674
  ];
3509
- const Pencil = createLucideIcon("pencil", __iconNode$j);
3675
+ const Pencil = createLucideIcon("pencil", __iconNode$p);
3510
3676
 
3511
3677
  /**
3512
3678
  * @license lucide-react v0.539.0 - ISC
@@ -3516,7 +3682,26 @@ const Pencil = createLucideIcon("pencil", __iconNode$j);
3516
3682
  */
3517
3683
 
3518
3684
 
3519
- const __iconNode$i = [
3685
+ const __iconNode$o = [
3686
+ [
3687
+ "path",
3688
+ {
3689
+ 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",
3690
+ key: "9njp5v"
3691
+ }
3692
+ ]
3693
+ ];
3694
+ const Phone = createLucideIcon("phone", __iconNode$o);
3695
+
3696
+ /**
3697
+ * @license lucide-react v0.539.0 - ISC
3698
+ *
3699
+ * This source code is licensed under the ISC license.
3700
+ * See the LICENSE file in the root directory of this source tree.
3701
+ */
3702
+
3703
+
3704
+ const __iconNode$n = [
3520
3705
  [
3521
3706
  "path",
3522
3707
  {
@@ -3525,7 +3710,7 @@ const __iconNode$i = [
3525
3710
  }
3526
3711
  ]
3527
3712
  ];
3528
- const Play = createLucideIcon("play", __iconNode$i);
3713
+ const Play = createLucideIcon("play", __iconNode$n);
3529
3714
 
3530
3715
  /**
3531
3716
  * @license lucide-react v0.539.0 - ISC
@@ -3535,11 +3720,11 @@ const Play = createLucideIcon("play", __iconNode$i);
3535
3720
  */
3536
3721
 
3537
3722
 
3538
- const __iconNode$h = [
3723
+ const __iconNode$m = [
3539
3724
  ["path", { d: "M5 12h14", key: "1ays0h" }],
3540
3725
  ["path", { d: "M12 5v14", key: "s699le" }]
3541
3726
  ];
3542
- const Plus = createLucideIcon("plus", __iconNode$h);
3727
+ const Plus = createLucideIcon("plus", __iconNode$m);
3543
3728
 
3544
3729
  /**
3545
3730
  * @license lucide-react v0.539.0 - ISC
@@ -3549,10 +3734,10 @@ const Plus = createLucideIcon("plus", __iconNode$h);
3549
3734
  */
3550
3735
 
3551
3736
 
3552
- const __iconNode$g = [
3737
+ const __iconNode$l = [
3553
3738
  ["rect", { width: "20", height: "12", x: "2", y: "6", rx: "2", key: "9lu3g6" }]
3554
3739
  ];
3555
- const RectangleHorizontal = createLucideIcon("rectangle-horizontal", __iconNode$g);
3740
+ const RectangleHorizontal = createLucideIcon("rectangle-horizontal", __iconNode$l);
3556
3741
 
3557
3742
  /**
3558
3743
  * @license lucide-react v0.539.0 - ISC
@@ -3562,11 +3747,11 @@ const RectangleHorizontal = createLucideIcon("rectangle-horizontal", __iconNode$
3562
3747
  */
3563
3748
 
3564
3749
 
3565
- const __iconNode$f = [
3750
+ const __iconNode$k = [
3566
3751
  ["path", { d: "M21 7v6h-6", key: "3ptur4" }],
3567
3752
  ["path", { d: "M3 17a9 9 0 0 1 9-9 9 9 0 0 1 6 2.3l3 2.7", key: "1kgawr" }]
3568
3753
  ];
3569
- const Redo = createLucideIcon("redo", __iconNode$f);
3754
+ const Redo = createLucideIcon("redo", __iconNode$k);
3570
3755
 
3571
3756
  /**
3572
3757
  * @license lucide-react v0.539.0 - ISC
@@ -3576,13 +3761,13 @@ const Redo = createLucideIcon("redo", __iconNode$f);
3576
3761
  */
3577
3762
 
3578
3763
 
3579
- const __iconNode$e = [
3764
+ const __iconNode$j = [
3580
3765
  ["path", { d: "M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8", key: "v9h5vc" }],
3581
3766
  ["path", { d: "M21 3v5h-5", key: "1q7to0" }],
3582
3767
  ["path", { d: "M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16", key: "3uifl3" }],
3583
3768
  ["path", { d: "M8 16H3v5", key: "1cv678" }]
3584
3769
  ];
3585
- const RefreshCw = createLucideIcon("refresh-cw", __iconNode$e);
3770
+ const RefreshCw = createLucideIcon("refresh-cw", __iconNode$j);
3586
3771
 
3587
3772
  /**
3588
3773
  * @license lucide-react v0.539.0 - ISC
@@ -3592,14 +3777,14 @@ const RefreshCw = createLucideIcon("refresh-cw", __iconNode$e);
3592
3777
  */
3593
3778
 
3594
3779
 
3595
- const __iconNode$d = [
3780
+ const __iconNode$i = [
3596
3781
  ["path", { d: "M4 7V4h16v3", key: "9msm58" }],
3597
3782
  ["path", { d: "M5 20h6", key: "1h6pxn" }],
3598
3783
  ["path", { d: "M13 4 8 20", key: "kqq6aj" }],
3599
3784
  ["path", { d: "m15 15 5 5", key: "me55sn" }],
3600
3785
  ["path", { d: "m20 15-5 5", key: "11p7ol" }]
3601
3786
  ];
3602
- const RemoveFormatting = createLucideIcon("remove-formatting", __iconNode$d);
3787
+ const RemoveFormatting = createLucideIcon("remove-formatting", __iconNode$i);
3603
3788
 
3604
3789
  /**
3605
3790
  * @license lucide-react v0.539.0 - ISC
@@ -3609,14 +3794,14 @@ const RemoveFormatting = createLucideIcon("remove-formatting", __iconNode$d);
3609
3794
  */
3610
3795
 
3611
3796
 
3612
- const __iconNode$c = [
3797
+ const __iconNode$h = [
3613
3798
  ["circle", { cx: "6", cy: "6", r: "3", key: "1lh9wr" }],
3614
3799
  ["path", { d: "M8.12 8.12 12 12", key: "1alkpv" }],
3615
3800
  ["path", { d: "M20 4 8.12 15.88", key: "xgtan2" }],
3616
3801
  ["circle", { cx: "6", cy: "18", r: "3", key: "fqmcym" }],
3617
3802
  ["path", { d: "M14.8 14.8 20 20", key: "ptml3r" }]
3618
3803
  ];
3619
- const Scissors = createLucideIcon("scissors", __iconNode$c);
3804
+ const Scissors = createLucideIcon("scissors", __iconNode$h);
3620
3805
 
3621
3806
  /**
3622
3807
  * @license lucide-react v0.539.0 - ISC
@@ -3626,11 +3811,11 @@ const Scissors = createLucideIcon("scissors", __iconNode$c);
3626
3811
  */
3627
3812
 
3628
3813
 
3629
- const __iconNode$b = [
3814
+ const __iconNode$g = [
3630
3815
  ["path", { d: "m21 21-4.34-4.34", key: "14j7rj" }],
3631
3816
  ["circle", { cx: "11", cy: "11", r: "8", key: "4ej97u" }]
3632
3817
  ];
3633
- const Search = createLucideIcon("search", __iconNode$b);
3818
+ const Search = createLucideIcon("search", __iconNode$g);
3634
3819
 
3635
3820
  /**
3636
3821
  * @license lucide-react v0.539.0 - ISC
@@ -3640,14 +3825,14 @@ const Search = createLucideIcon("search", __iconNode$b);
3640
3825
  */
3641
3826
 
3642
3827
 
3643
- const __iconNode$a = [
3828
+ const __iconNode$f = [
3644
3829
  ["circle", { cx: "18", cy: "5", r: "3", key: "gq8acd" }],
3645
3830
  ["circle", { cx: "6", cy: "12", r: "3", key: "w7nqdw" }],
3646
3831
  ["circle", { cx: "18", cy: "19", r: "3", key: "1xt0gg" }],
3647
3832
  ["line", { x1: "8.59", x2: "15.42", y1: "13.51", y2: "17.49", key: "47mynk" }],
3648
3833
  ["line", { x1: "15.41", x2: "8.59", y1: "6.51", y2: "10.49", key: "1n3mei" }]
3649
3834
  ];
3650
- const Share2 = createLucideIcon("share-2", __iconNode$a);
3835
+ const Share2 = createLucideIcon("share-2", __iconNode$f);
3651
3836
 
3652
3837
  /**
3653
3838
  * @license lucide-react v0.539.0 - ISC
@@ -3657,10 +3842,47 @@ const Share2 = createLucideIcon("share-2", __iconNode$a);
3657
3842
  */
3658
3843
 
3659
3844
 
3660
- const __iconNode$9 = [
3845
+ const __iconNode$e = [
3846
+ [
3847
+ "path",
3848
+ {
3849
+ d: "M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",
3850
+ key: "oel41y"
3851
+ }
3852
+ ],
3853
+ ["path", { d: "m9 12 2 2 4-4", key: "dzmm74" }]
3854
+ ];
3855
+ const ShieldCheck = createLucideIcon("shield-check", __iconNode$e);
3856
+
3857
+ /**
3858
+ * @license lucide-react v0.539.0 - ISC
3859
+ *
3860
+ * This source code is licensed under the ISC license.
3861
+ * See the LICENSE file in the root directory of this source tree.
3862
+ */
3863
+
3864
+
3865
+ const __iconNode$d = [
3866
+ [
3867
+ "path",
3868
+ { d: "M21 10.656V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h12.344", key: "2acyp4" }
3869
+ ],
3870
+ ["path", { d: "m9 11 3 3L22 4", key: "1pflzl" }]
3871
+ ];
3872
+ const SquareCheckBig = createLucideIcon("square-check-big", __iconNode$d);
3873
+
3874
+ /**
3875
+ * @license lucide-react v0.539.0 - ISC
3876
+ *
3877
+ * This source code is licensed under the ISC license.
3878
+ * See the LICENSE file in the root directory of this source tree.
3879
+ */
3880
+
3881
+
3882
+ const __iconNode$c = [
3661
3883
  ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }]
3662
3884
  ];
3663
- const Square = createLucideIcon("square", __iconNode$9);
3885
+ const Square = createLucideIcon("square", __iconNode$c);
3664
3886
 
3665
3887
  /**
3666
3888
  * @license lucide-react v0.539.0 - ISC
@@ -3670,12 +3892,12 @@ const Square = createLucideIcon("square", __iconNode$9);
3670
3892
  */
3671
3893
 
3672
3894
 
3673
- const __iconNode$8 = [
3895
+ const __iconNode$b = [
3674
3896
  ["path", { d: "M16 4H9a3 3 0 0 0-2.83 4", key: "43sutm" }],
3675
3897
  ["path", { d: "M14 12a4 4 0 0 1 0 8H6", key: "nlfj13" }],
3676
3898
  ["line", { x1: "4", x2: "20", y1: "12", y2: "12", key: "1e0a9i" }]
3677
3899
  ];
3678
- const Strikethrough = createLucideIcon("strikethrough", __iconNode$8);
3900
+ const Strikethrough = createLucideIcon("strikethrough", __iconNode$b);
3679
3901
 
3680
3902
  /**
3681
3903
  * @license lucide-react v0.539.0 - ISC
@@ -3685,7 +3907,7 @@ const Strikethrough = createLucideIcon("strikethrough", __iconNode$8);
3685
3907
  */
3686
3908
 
3687
3909
 
3688
- const __iconNode$7 = [
3910
+ const __iconNode$a = [
3689
3911
  ["circle", { cx: "12", cy: "12", r: "4", key: "4exip2" }],
3690
3912
  ["path", { d: "M12 2v2", key: "tus03m" }],
3691
3913
  ["path", { d: "M12 20v2", key: "1lh1kg" }],
@@ -3696,7 +3918,7 @@ const __iconNode$7 = [
3696
3918
  ["path", { d: "m6.34 17.66-1.41 1.41", key: "1m8zz5" }],
3697
3919
  ["path", { d: "m19.07 4.93-1.41 1.41", key: "1shlcs" }]
3698
3920
  ];
3699
- const Sun = createLucideIcon("sun", __iconNode$7);
3921
+ const Sun = createLucideIcon("sun", __iconNode$a);
3700
3922
 
3701
3923
  /**
3702
3924
  * @license lucide-react v0.539.0 - ISC
@@ -3706,14 +3928,28 @@ const Sun = createLucideIcon("sun", __iconNode$7);
3706
3928
  */
3707
3929
 
3708
3930
 
3709
- const __iconNode$6 = [
3931
+ const __iconNode$9 = [
3932
+ ["circle", { cx: "9", cy: "12", r: "3", key: "u3jwor" }],
3933
+ ["rect", { width: "20", height: "14", x: "2", y: "5", rx: "7", key: "g7kal2" }]
3934
+ ];
3935
+ const ToggleLeft = createLucideIcon("toggle-left", __iconNode$9);
3936
+
3937
+ /**
3938
+ * @license lucide-react v0.539.0 - ISC
3939
+ *
3940
+ * This source code is licensed under the ISC license.
3941
+ * See the LICENSE file in the root directory of this source tree.
3942
+ */
3943
+
3944
+
3945
+ const __iconNode$8 = [
3710
3946
  ["path", { d: "M10 11v6", key: "nco0om" }],
3711
3947
  ["path", { d: "M14 11v6", key: "outv1u" }],
3712
3948
  ["path", { d: "M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6", key: "miytrc" }],
3713
3949
  ["path", { d: "M3 6h18", key: "d0wm0j" }],
3714
3950
  ["path", { d: "M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2", key: "e791ji" }]
3715
3951
  ];
3716
- const Trash2 = createLucideIcon("trash-2", __iconNode$6);
3952
+ const Trash2 = createLucideIcon("trash-2", __iconNode$8);
3717
3953
 
3718
3954
  /**
3719
3955
  * @license lucide-react v0.539.0 - ISC
@@ -3723,7 +3959,7 @@ const Trash2 = createLucideIcon("trash-2", __iconNode$6);
3723
3959
  */
3724
3960
 
3725
3961
 
3726
- const __iconNode$5 = [
3962
+ const __iconNode$7 = [
3727
3963
  [
3728
3964
  "path",
3729
3965
  {
@@ -3734,7 +3970,7 @@ const __iconNode$5 = [
3734
3970
  ["path", { d: "M12 9v4", key: "juzpu7" }],
3735
3971
  ["path", { d: "M12 17h.01", key: "p32p05" }]
3736
3972
  ];
3737
- const TriangleAlert = createLucideIcon("triangle-alert", __iconNode$5);
3973
+ const TriangleAlert = createLucideIcon("triangle-alert", __iconNode$7);
3738
3974
 
3739
3975
  /**
3740
3976
  * @license lucide-react v0.539.0 - ISC
@@ -3744,11 +3980,26 @@ const TriangleAlert = createLucideIcon("triangle-alert", __iconNode$5);
3744
3980
  */
3745
3981
 
3746
3982
 
3747
- const __iconNode$4 = [
3983
+ const __iconNode$6 = [
3984
+ ["path", { d: "M12 4v16", key: "1654pz" }],
3985
+ ["path", { d: "M4 7V5a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v2", key: "e0r10z" }],
3986
+ ["path", { d: "M9 20h6", key: "s66wpe" }]
3987
+ ];
3988
+ const Type = createLucideIcon("type", __iconNode$6);
3989
+
3990
+ /**
3991
+ * @license lucide-react v0.539.0 - ISC
3992
+ *
3993
+ * This source code is licensed under the ISC license.
3994
+ * See the LICENSE file in the root directory of this source tree.
3995
+ */
3996
+
3997
+
3998
+ const __iconNode$5 = [
3748
3999
  ["path", { d: "M6 4v6a6 6 0 0 0 12 0V4", key: "9kb039" }],
3749
4000
  ["line", { x1: "4", x2: "20", y1: "20", y2: "20", key: "nun2al" }]
3750
4001
  ];
3751
- const Underline$1 = createLucideIcon("underline", __iconNode$4);
4002
+ const Underline$1 = createLucideIcon("underline", __iconNode$5);
3752
4003
 
3753
4004
  /**
3754
4005
  * @license lucide-react v0.539.0 - ISC
@@ -3758,11 +4009,11 @@ const Underline$1 = createLucideIcon("underline", __iconNode$4);
3758
4009
  */
3759
4010
 
3760
4011
 
3761
- const __iconNode$3 = [
4012
+ const __iconNode$4 = [
3762
4013
  ["path", { d: "M3 7v6h6", key: "1v2h90" }],
3763
4014
  ["path", { d: "M21 17a9 9 0 0 0-9-9 9 9 0 0 0-6 2.3L3 13", key: "1r6uu6" }]
3764
4015
  ];
3765
- const Undo = createLucideIcon("undo", __iconNode$3);
4016
+ const Undo = createLucideIcon("undo", __iconNode$4);
3766
4017
 
3767
4018
  /**
3768
4019
  * @license lucide-react v0.539.0 - ISC
@@ -3772,12 +4023,28 @@ const Undo = createLucideIcon("undo", __iconNode$3);
3772
4023
  */
3773
4024
 
3774
4025
 
3775
- const __iconNode$2 = [
4026
+ const __iconNode$3 = [
3776
4027
  ["path", { d: "M12 3v12", key: "1x0j5s" }],
3777
4028
  ["path", { d: "m17 8-5-5-5 5", key: "7q97r8" }],
3778
4029
  ["path", { d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4", key: "ih7n3h" }]
3779
4030
  ];
3780
- const Upload = createLucideIcon("upload", __iconNode$2);
4031
+ const Upload = createLucideIcon("upload", __iconNode$3);
4032
+
4033
+ /**
4034
+ * @license lucide-react v0.539.0 - ISC
4035
+ *
4036
+ * This source code is licensed under the ISC license.
4037
+ * See the LICENSE file in the root directory of this source tree.
4038
+ */
4039
+
4040
+
4041
+ const __iconNode$2 = [
4042
+ ["path", { d: "M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2", key: "1yyitq" }],
4043
+ ["circle", { cx: "9", cy: "7", r: "4", key: "nufk8" }],
4044
+ ["line", { x1: "19", x2: "19", y1: "8", y2: "14", key: "1bvyxn" }],
4045
+ ["line", { x1: "22", x2: "16", y1: "11", y2: "11", key: "1shjgl" }]
4046
+ ];
4047
+ const UserPlus = createLucideIcon("user-plus", __iconNode$2);
3781
4048
 
3782
4049
  /**
3783
4050
  * @license lucide-react v0.539.0 - ISC
@@ -20787,7 +21054,7 @@ const DATE_FORMAT$1 = 'DD-MM-YYYY';
20787
21054
  */
20788
21055
  const DEFAULT_INVENTORY_THUMBNAIL = '/default%20thumbnail.png';
20789
21056
 
20790
- const formatDate$2 = (iso) => {
21057
+ const formatDate$3 = (iso) => {
20791
21058
  if (!iso)
20792
21059
  return '-';
20793
21060
  try {
@@ -20804,7 +21071,7 @@ const InfoCard = ({ info, title, refundToWallet, onRefundChange, }) => {
20804
21071
  if (React__default.isValidElement(info))
20805
21072
  return jsx("div", { className: "mt-3", children: info });
20806
21073
  const i = info;
20807
- return (jsx("div", { className: "mt-1 rounded-lg border bg-muted p-3 shadow-sm", children: jsxs("div", { className: "flex flex-col gap-1", children: [jsxs("div", { className: "flex items-start gap-3", children: [jsx("div", { className: "w-36 text-sm text-muted-foreground", children: "Date" }), jsx("div", { children: formatDate$2(i.invoiceDate) })] }), jsxs("div", { className: "flex items-start gap-3", children: [jsx("div", { className: "w-36 text-sm text-muted-foreground", children: "Total" }), jsx("div", { className: "font-medium text-foreground", children: formatCurrencyWithTenantSymbol(i.totalAmount) })] }), i.paidAmount !== undefined && (jsxs("div", { className: "flex items-start gap-3", children: [jsx("div", { className: "w-36 text-sm text-muted-foreground", children: "Paid" }), jsx("div", { className: "font-medium text-primary", children: formatCurrencyWithTenantSymbol(i.paidAmount) })] })), i.outstandingAmount !== undefined && (jsxs("div", { className: "flex items-start gap-3", children: [jsx("div", { className: "w-36 text-sm text-muted-foreground", children: "Outstanding" }), jsx("div", { className: "font-medium text-muted-foreground", children: formatCurrencyWithTenantSymbol(i.outstandingAmount) })] })), title === 'Cancel Invoice' &&
21074
+ return (jsx("div", { className: "mt-1 rounded-lg border bg-muted p-3 shadow-sm", children: jsxs("div", { className: "flex flex-col gap-1", children: [jsxs("div", { className: "flex items-start gap-3", children: [jsx("div", { className: "w-36 text-sm text-muted-foreground", children: "Date" }), jsx("div", { children: formatDate$3(i.invoiceDate) })] }), jsxs("div", { className: "flex items-start gap-3", children: [jsx("div", { className: "w-36 text-sm text-muted-foreground", children: "Total" }), jsx("div", { className: "font-medium text-foreground", children: formatCurrencyWithTenantSymbol(i.totalAmount) })] }), i.paidAmount !== undefined && (jsxs("div", { className: "flex items-start gap-3", children: [jsx("div", { className: "w-36 text-sm text-muted-foreground", children: "Paid" }), jsx("div", { className: "font-medium text-primary", children: formatCurrencyWithTenantSymbol(i.paidAmount) })] })), i.outstandingAmount !== undefined && (jsxs("div", { className: "flex items-start gap-3", children: [jsx("div", { className: "w-36 text-sm text-muted-foreground", children: "Outstanding" }), jsx("div", { className: "font-medium text-muted-foreground", children: formatCurrencyWithTenantSymbol(i.outstandingAmount) })] })), title === 'Cancel Invoice' &&
20808
21075
  !React__default.isValidElement(info) &&
20809
21076
  (i?.paidAmount ?? 0) > 0 && (jsxs("div", { className: "flex items-start gap-3", children: [jsx("div", { className: "w-36 whitespace-nowrap text-sm text-muted-foreground", children: "Refund to Wallet" }), jsx(Checkbox, { checked: !!refundToWallet, onCheckedChange: (v) => onRefundChange?.(Boolean(v)), className: "bg-card" })] })), (i.customerName || i.email) && (jsxs("div", { className: "mt-1 rounded bg-card p-2", children: [i.customerName && (jsx("div", { className: "text-sm font-medium", children: i.customerName })), i.email && (jsx("div", { className: "text-sm text-muted-foreground", children: i.email }))] }))] }) }));
20810
21077
  };
@@ -21975,7 +22242,7 @@ function normalizeDates(context, ...dates) {
21975
22242
  * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))
21976
22243
  * //=> Tue Sep 02 2014 00:00:00
21977
22244
  */
21978
- function startOfDay(date, options) {
22245
+ function startOfDay$1(date, options) {
21979
22246
  const _date = toDate(date, options?.in);
21980
22247
  _date.setHours(0, 0, 0, 0);
21981
22248
  return _date;
@@ -22023,8 +22290,8 @@ function differenceInCalendarDays(laterDate, earlierDate, options) {
22023
22290
  earlierDate,
22024
22291
  );
22025
22292
 
22026
- const laterStartOfDay = startOfDay(laterDate_);
22027
- const earlierStartOfDay = startOfDay(earlierDate_);
22293
+ const laterStartOfDay = startOfDay$1(laterDate_);
22294
+ const earlierStartOfDay = startOfDay$1(earlierDate_);
22028
22295
 
22029
22296
  const laterTimestamp =
22030
22297
  +laterStartOfDay - getTimezoneOffsetInMilliseconds(laterStartOfDay);
@@ -22355,7 +22622,7 @@ function isSameDay$1(laterDate, earlierDate, options) {
22355
22622
  laterDate,
22356
22623
  earlierDate,
22357
22624
  );
22358
- return +startOfDay(dateLeft_) === +startOfDay(dateRight_);
22625
+ return +startOfDay$1(dateLeft_) === +startOfDay$1(dateRight_);
22359
22626
  }
22360
22627
 
22361
22628
  /**
@@ -31291,7 +31558,7 @@ function parseDate(value, dateFormat, locale, strictParsing, refDate) {
31291
31558
  var parsedDate = parse(value, format_1, refDate, {
31292
31559
  locale: localeObject});
31293
31560
  if (isValid(parsedDate) &&
31294
- (!strictParsing || value === formatDate$1(parsedDate, format_1, locale))) {
31561
+ (!strictParsing || value === formatDate$2(parsedDate, format_1, locale))) {
31295
31562
  return parsedDate;
31296
31563
  }
31297
31564
  }
@@ -31319,7 +31586,7 @@ function isValid(date, minDate) {
31319
31586
  * @param locale - The locale.
31320
31587
  * @returns - The formatted date.
31321
31588
  */
31322
- function formatDate$1(date, formatStr, locale) {
31589
+ function formatDate$2(date, formatStr, locale) {
31323
31590
  if (locale === "en") {
31324
31591
  return format(date, formatStr, {
31325
31592
  useAdditionalWeekYearTokens: true,
@@ -31349,7 +31616,7 @@ function safeDateFormat(date, _a) {
31349
31616
  var formatStr = (Array.isArray(dateFormat) && dateFormat.length > 0
31350
31617
  ? dateFormat[0]
31351
31618
  : dateFormat); // Cast to string because it's impossible to get `string | string[] | undefined` here and typescript doesn't know that
31352
- return (date && formatDate$1(date, formatStr, locale)) || "";
31619
+ return (date && formatDate$2(date, formatStr, locale)) || "";
31353
31620
  }
31354
31621
  /**
31355
31622
  * Used as a delimiter to separate two dates when formatting a date range
@@ -31423,7 +31690,7 @@ function getWeek(date) {
31423
31690
  * @returns - The day of the week code.
31424
31691
  */
31425
31692
  function getDayOfWeekCode(day, locale) {
31426
- return formatDate$1(day, "ddd", locale);
31693
+ return formatDate$2(day, "ddd", locale);
31427
31694
  }
31428
31695
  // *** Start of ***
31429
31696
  /**
@@ -31433,7 +31700,7 @@ function getDayOfWeekCode(day, locale) {
31433
31700
  * @returns - The start of the day.
31434
31701
  */
31435
31702
  function getStartOfDay(date) {
31436
- return startOfDay(date);
31703
+ return startOfDay$1(date);
31437
31704
  }
31438
31705
  /**
31439
31706
  * Gets the start of the week for a given date.
@@ -31485,7 +31752,7 @@ function getStartOfQuarter(date) {
31485
31752
  * @returns - The start of today.
31486
31753
  */
31487
31754
  function getStartOfToday() {
31488
- return startOfDay(newDate());
31755
+ return startOfDay$1(newDate());
31489
31756
  }
31490
31757
  // *** End of ***
31491
31758
  /**
@@ -31600,7 +31867,7 @@ function isEqual(date1, date2) {
31600
31867
  */
31601
31868
  function isDayInRange(day, startDate, endDate) {
31602
31869
  var valid;
31603
- var start = startOfDay(startDate);
31870
+ var start = startOfDay$1(startDate);
31604
31871
  var end = endOfDay(endDate);
31605
31872
  try {
31606
31873
  valid = isWithinInterval(day, { start: start, end: end });
@@ -31646,7 +31913,7 @@ function getLocaleObject(localeSpec) {
31646
31913
  * @returns - The formatted weekday.
31647
31914
  */
31648
31915
  function getFormattedWeekdayInLocale(date, formatFunc, locale) {
31649
- return formatFunc(formatDate$1(date, "EEEE", locale));
31916
+ return formatFunc(formatDate$2(date, "EEEE", locale));
31650
31917
  }
31651
31918
  /**
31652
31919
  * Gets the minimum weekday in a given locale.
@@ -31656,7 +31923,7 @@ function getFormattedWeekdayInLocale(date, formatFunc, locale) {
31656
31923
  * @returns - The minimum weekday.
31657
31924
  */
31658
31925
  function getWeekdayMinInLocale(date, locale) {
31659
- return formatDate$1(date, "EEEEEE", locale);
31926
+ return formatDate$2(date, "EEEEEE", locale);
31660
31927
  }
31661
31928
  /**
31662
31929
  * Gets the short weekday in a given locale.
@@ -31666,7 +31933,7 @@ function getWeekdayMinInLocale(date, locale) {
31666
31933
  * @returns - The short weekday.
31667
31934
  */
31668
31935
  function getWeekdayShortInLocale(date, locale) {
31669
- return formatDate$1(date, "EEE", locale);
31936
+ return formatDate$2(date, "EEE", locale);
31670
31937
  }
31671
31938
  /**
31672
31939
  * Gets the month in a given locale.
@@ -31676,7 +31943,7 @@ function getWeekdayShortInLocale(date, locale) {
31676
31943
  * @returns - The month.
31677
31944
  */
31678
31945
  function getMonthInLocale(month, locale) {
31679
- return formatDate$1(setMonth(newDate(), month), "LLLL", locale);
31946
+ return formatDate$2(setMonth(newDate(), month), "LLLL", locale);
31680
31947
  }
31681
31948
  /**
31682
31949
  * Gets the short month in a given locale.
@@ -31686,7 +31953,7 @@ function getMonthInLocale(month, locale) {
31686
31953
  * @returns - The short month.
31687
31954
  */
31688
31955
  function getMonthShortInLocale(month, locale) {
31689
- return formatDate$1(setMonth(newDate(), month), "LLL", locale);
31956
+ return formatDate$2(setMonth(newDate(), month), "LLL", locale);
31690
31957
  }
31691
31958
  /**
31692
31959
  * Gets the short quarter in a given locale.
@@ -31696,7 +31963,7 @@ function getMonthShortInLocale(month, locale) {
31696
31963
  * @returns - The short quarter.
31697
31964
  */
31698
31965
  function getQuarterShortInLocale(quarter, locale) {
31699
- return formatDate$1(setQuarter(newDate(), quarter), "QQQ", locale);
31966
+ return formatDate$2(setQuarter(newDate(), quarter), "QQQ", locale);
31700
31967
  }
31701
31968
  /**
31702
31969
  * Checks if a day is disabled.
@@ -32026,7 +32293,7 @@ function getHighLightDaysMap(highlightDates, defaultClassName) {
32026
32293
  for (var i = 0, len = highlightDates.length; i < len; i++) {
32027
32294
  var obj = highlightDates[i];
32028
32295
  if (isDate(obj)) {
32029
- var key = formatDate$1(obj, "MM.dd.yyyy");
32296
+ var key = formatDate$2(obj, "MM.dd.yyyy");
32030
32297
  var classNamesArr = dateClasses.get(key) || [];
32031
32298
  if (!classNamesArr.includes(defaultClassName)) {
32032
32299
  classNamesArr.push(defaultClassName);
@@ -32041,7 +32308,7 @@ function getHighLightDaysMap(highlightDates, defaultClassName) {
32041
32308
  for (var k = 0, len_1 = arrOfDates.length; k < len_1; k++) {
32042
32309
  var dateK = arrOfDates[k];
32043
32310
  if (dateK) {
32044
- var key = formatDate$1(dateK, "MM.dd.yyyy");
32311
+ var key = formatDate$2(dateK, "MM.dd.yyyy");
32045
32312
  var classNamesArr = dateClasses.get(key) || [];
32046
32313
  if (!classNamesArr.includes(className)) {
32047
32314
  classNamesArr.push(className);
@@ -32081,7 +32348,7 @@ function getHolidaysMap(holidayDates, defaultClassName) {
32081
32348
  if (!isDate(dateObj)) {
32082
32349
  return;
32083
32350
  }
32084
- var key = formatDate$1(dateObj, "MM.dd.yyyy");
32351
+ var key = formatDate$2(dateObj, "MM.dd.yyyy");
32085
32352
  var classNamesObj = dateClasses.get(key) || {
32086
32353
  className: "",
32087
32354
  holidayNames: [],
@@ -32455,7 +32722,7 @@ var Day = /** @class */ (function (_super) {
32455
32722
  return false;
32456
32723
  }
32457
32724
  // Looking for className in the Map of {'day string, 'className'}
32458
- var dayStr = formatDate$1(day, "MM.dd.yyyy");
32725
+ var dayStr = formatDate$2(day, "MM.dd.yyyy");
32459
32726
  return highlightDates.get(dayStr);
32460
32727
  };
32461
32728
  // Function to return the array containing className associated to the date
@@ -32466,7 +32733,7 @@ var Day = /** @class */ (function (_super) {
32466
32733
  // For type consistency no other reasons
32467
32734
  return [undefined];
32468
32735
  }
32469
- var dayStr = formatDate$1(day, "MM.dd.yyyy");
32736
+ var dayStr = formatDate$2(day, "MM.dd.yyyy");
32470
32737
  // Looking for className in the Map of {day string: {className, holidayName}}
32471
32738
  if (holidays.has(dayStr)) {
32472
32739
  return [(_a = holidays.get(dayStr)) === null || _a === void 0 ? void 0 : _a.className];
@@ -32607,12 +32874,12 @@ var Day = /** @class */ (function (_super) {
32607
32874
  var prefix = _this.isDisabled() || _this.isExcluded()
32608
32875
  ? ariaLabelPrefixWhenDisabled
32609
32876
  : ariaLabelPrefixWhenEnabled;
32610
- return "".concat(prefix, " ").concat(formatDate$1(day, "PPPP", _this.props.locale));
32877
+ return "".concat(prefix, " ").concat(formatDate$2(day, "PPPP", _this.props.locale));
32611
32878
  };
32612
32879
  // A function to return the holiday's name as title's content
32613
32880
  _this.getTitle = function () {
32614
32881
  var _a = _this.props, day = _a.day, _b = _a.holidays, holidays = _b === void 0 ? new Map() : _b, excludeDates = _a.excludeDates;
32615
- var compareDt = formatDate$1(day, "MM.dd.yyyy");
32882
+ var compareDt = formatDate$2(day, "MM.dd.yyyy");
32616
32883
  var titles = [];
32617
32884
  if (holidays.has(compareDt)) {
32618
32885
  titles.push.apply(titles, holidays.get(compareDt).holidayNames);
@@ -33538,7 +33805,7 @@ var Month = /** @class */ (function (_super) {
33538
33805
  var prefix = _this.isDisabled(labelDate) || _this.isExcluded(labelDate)
33539
33806
  ? disabledDayAriaLabelPrefix
33540
33807
  : chooseDayAriaLabelPrefix;
33541
- return "".concat(prefix, " ").concat(formatDate$1(labelDate, "MMMM yyyy", locale));
33808
+ return "".concat(prefix, " ").concat(formatDate$2(labelDate, "MMMM yyyy", locale));
33542
33809
  };
33543
33810
  _this.getQuarterClassNames = function (q) {
33544
33811
  var _a = _this.props, day = _a.day, startDate = _a.startDate, endDate = _a.endDate, minDate = _a.minDate, maxDate = _a.maxDate, excludeDates = _a.excludeDates, includeDates = _a.includeDates, filterDate = _a.filterDate, preSelection = _a.preSelection, disabledKeyboardNavigation = _a.disabledKeyboardNavigation, disabled = _a.disabled;
@@ -33640,7 +33907,7 @@ var Month = /** @class */ (function (_super) {
33640
33907
  : "";
33641
33908
  // Format aria-label, return empty string if date is invalid
33642
33909
  var formattedAriaLabel = isValid(day)
33643
- ? "".concat(formattedAriaLabelPrefix).concat(formatDate$1(day, "MMMM, yyyy", this.props.locale))
33910
+ ? "".concat(formattedAriaLabelPrefix).concat(formatDate$2(day, "MMMM, yyyy", this.props.locale))
33644
33911
  : "";
33645
33912
  var shouldUseListboxRole = showMonthYearPicker || showQuarterYearPicker;
33646
33913
  if (shouldUseListboxRole) {
@@ -33783,7 +34050,7 @@ var MonthYearDropdownOptions = /** @class */ (function (_super) {
33783
34050
  ? "react-datepicker__month-year-option--selected_month-year"
33784
34051
  : "react-datepicker__month-year-option", key: monthYearPoint, onClick: _this.onChange.bind(_this, monthYearPoint), "aria-selected": isSameMonthYear ? "true" : undefined },
33785
34052
  isSameMonthYear ? (React__default.createElement("span", { className: "react-datepicker__month-year-option--selected" }, "\u2713")) : (""),
33786
- formatDate$1(monthYear, _this.props.dateFormat, _this.props.locale)));
34053
+ formatDate$2(monthYear, _this.props.dateFormat, _this.props.locale)));
33787
34054
  });
33788
34055
  };
33789
34056
  _this.onChange = function (monthYear) { return _this.props.onChange(monthYear); };
@@ -33818,7 +34085,7 @@ var MonthYearDropdown = /** @class */ (function (_super) {
33818
34085
  var options = [];
33819
34086
  while (!isAfter$1(currDate, lastDate)) {
33820
34087
  var timePoint = getTime(currDate);
33821
- options.push(React__default.createElement("option", { key: timePoint, value: timePoint }, formatDate$1(currDate, _this.props.dateFormat, _this.props.locale)));
34088
+ options.push(React__default.createElement("option", { key: timePoint, value: timePoint }, formatDate$2(currDate, _this.props.dateFormat, _this.props.locale)));
33822
34089
  currDate = addMonths(currDate, 1);
33823
34090
  }
33824
34091
  return options;
@@ -33828,7 +34095,7 @@ var MonthYearDropdown = /** @class */ (function (_super) {
33828
34095
  };
33829
34096
  _this.renderSelectMode = function () { return (React__default.createElement("select", { value: getTime(getStartOfMonth(_this.props.date)), className: "react-datepicker__month-year-select", onChange: _this.onSelectChange }, _this.renderSelectOptions())); };
33830
34097
  _this.renderReadView = function (visible) {
33831
- var yearMonth = formatDate$1(_this.props.date, _this.props.dateFormat, _this.props.locale);
34098
+ var yearMonth = formatDate$2(_this.props.date, _this.props.dateFormat, _this.props.locale);
33832
34099
  return (React__default.createElement("div", { key: "read", style: { visibility: visible ? "visible" : "hidden" }, className: "react-datepicker__month-year-read-view", onClick: _this.toggleDropdown },
33833
34100
  React__default.createElement("span", { className: "react-datepicker__month-year-read-view--down-arrow" }),
33834
34101
  React__default.createElement("span", { className: "react-datepicker__month-year-read-view--selected-month-year" }, yearMonth)));
@@ -33997,7 +34264,7 @@ var Time = /** @class */ (function (_super) {
33997
34264
  }
33998
34265
  }, onKeyDown: function (event) {
33999
34266
  _this.handleOnKeyDown(event, time);
34000
- }, tabIndex: time === timeToFocus ? 0 : -1, role: "option", "aria-selected": _this.isSelectedTime(time) ? "true" : undefined, "aria-disabled": _this.isDisabledTime(time) ? "true" : undefined }, formatDate$1(time, format, _this.props.locale)));
34267
+ }, tabIndex: time === timeToFocus ? 0 : -1, role: "option", "aria-selected": _this.isSelectedTime(time) ? "true" : undefined, "aria-disabled": _this.isDisabledTime(time) ? "true" : undefined }, formatDate$2(time, format, _this.props.locale)));
34001
34268
  });
34002
34269
  };
34003
34270
  _this.renderTimeCaption = function () {
@@ -34768,7 +35035,7 @@ var Calendar = /** @class */ (function (_super) {
34768
35035
  ? _this.props.weekDayClassName(day)
34769
35036
  : undefined;
34770
35037
  return (React__default.createElement("div", { key: offset, role: "columnheader", className: clsx("react-datepicker__day-name", weekDayClassName, disabled ? "react-datepicker__day-name--disabled" : "") },
34771
- React__default.createElement("span", { className: "react-datepicker__sr-only" }, formatDate$1(day, "EEEE", _this.props.locale)),
35038
+ React__default.createElement("span", { className: "react-datepicker__sr-only" }, formatDate$2(day, "EEEE", _this.props.locale)),
34772
35039
  React__default.createElement("span", { "aria-hidden": "true" }, weekDayName)));
34773
35040
  }));
34774
35041
  };
@@ -34948,7 +35215,7 @@ var Calendar = /** @class */ (function (_super) {
34948
35215
  classes.push("react-datepicker__current-month--hasMonthYearDropdown");
34949
35216
  }
34950
35217
  return (React__default.createElement("h2", { className: classes.join(" ") }, isValid(date)
34951
- ? formatDate$1(date, _this.props.dateFormat, _this.props.locale)
35218
+ ? formatDate$2(date, _this.props.dateFormat, _this.props.locale)
34952
35219
  : ""));
34953
35220
  };
34954
35221
  _this.renderYearDropdown = function (overrideHide) {
@@ -35932,7 +36199,7 @@ var DatePicker = /** @class */ (function (_super) {
35932
36199
  var newMinutes = Math.min(maxMinutes, currentMinutes + timeIntervals);
35933
36200
  newTime = addMinutes(baseDate, newMinutes);
35934
36201
  }
35935
- var formattedTime = formatDate$1(newTime, formatStr || DatePicker.defaultProps.dateFormat, _this.props.locale);
36202
+ var formattedTime = formatDate$2(newTime, formatStr || DatePicker.defaultProps.dateFormat, _this.props.locale);
35936
36203
  _this.setState({
35937
36204
  preSelection: newTime,
35938
36205
  inputValue: formattedTime,
@@ -36546,7 +36813,7 @@ function computeDateBounds(min, max) {
36546
36813
  maxYear: maxDate ? moment(maxDate, BOUND_FORMAT).year() : undefined,
36547
36814
  };
36548
36815
  }
36549
- function formatDate(value) {
36816
+ function formatDate$1(value) {
36550
36817
  return value ? moment(value).format(DATE_FORMAT) : '';
36551
36818
  }
36552
36819
  function toBoundDate(bound) {
@@ -36620,7 +36887,7 @@ function useDateInput({ value, onChange, onBlur, min, max, disabled, }) {
36620
36887
  const inputRef = useRef(null);
36621
36888
  const caretRef = useRef(null);
36622
36889
  const bounds = computeDateBounds(min, max);
36623
- const formatted = formatDate(value);
36890
+ const formatted = formatDate$1(value);
36624
36891
  const [text, setText] = useState(formatted);
36625
36892
  const [syncedValue, setSyncedValue] = useState(formatted);
36626
36893
  // Adopt `value` whenever it changes from the outside — a form reset, a
@@ -36654,7 +36921,7 @@ function useDateInput({ value, onChange, onBlur, min, max, disabled, }) {
36654
36921
  }
36655
36922
  };
36656
36923
  const commit = (date) => {
36657
- const next = formatDate(date);
36924
+ const next = formatDate$1(date);
36658
36925
  setText(next);
36659
36926
  setSyncedValue(next);
36660
36927
  onChange(date);
@@ -36931,6 +37198,348 @@ const FilterSelect = ({ label, value, onValueChange, options, resetValue = 'all'
36931
37198
  return (jsxs(Select, { value: value, onValueChange: onValueChange, keepOpenOnSelect: true, children: [jsxs(SelectTrigger, { className: cn(TRIGGER_BASE, active && TRIGGER_ACTIVE, triggerClassName), children: [jsx(Funnel, { className: cn('h-4 w-4 shrink-0', active ? 'text-primary' : 'text-muted-foreground'), "aria-hidden": "true" }), jsxs("span", { className: "flex items-center gap-1", children: [jsx(SelectValue, { placeholder: label }), active && (jsx("span", { className: "ml-1 inline-flex h-4 min-w-4 items-center justify-center rounded bg-primary/10 px-1 text-[10px] font-semibold leading-none text-primary", children: activeCount }))] })] }), jsxs(SelectContent, { className: cn(CONTENT_BASE, contentClassName), searchable: searchable, children: [jsx(SelectItem, { value: resetValue, withCheckbox: true, children: label }), options.map((opt) => (jsx(SelectItem, { value: opt.value, searchValue: opt.searchValue, withCheckbox: true, children: opt.label }, opt.value)))] })] }));
36932
37199
  };
36933
37200
 
37201
+ /**
37202
+ * Horizontal row of option cards behaving as a radio group.
37203
+ * Selected option highlights with primary border + light green background + filled dot.
37204
+ * Unselected options have an empty circle indicator.
37205
+ */
37206
+ function RadioCardGroup({ value, onChange, options, className, disabled, name, ariaLabel, iconSize = 'sm', }) {
37207
+ const iconSizeClasses = iconSize === 'xl'
37208
+ ? '[&_svg]:h-10 [&_svg]:w-10'
37209
+ : iconSize === 'lg'
37210
+ ? '[&_svg]:h-6 [&_svg]:w-6'
37211
+ : '[&_svg]:h-4 [&_svg]:w-4';
37212
+ return (jsx("div", { role: "radiogroup", "aria-label": ariaLabel, className: cn('grid w-full grid-cols-2 gap-3 sm:grid-cols-4', className), children: options.map((opt) => {
37213
+ const selected = value === opt.value;
37214
+ const isDisabled = disabled || opt.disabled;
37215
+ return (jsxs("button", { type: "button", role: "radio", "aria-checked": selected, disabled: isDisabled, "data-state": selected ? 'checked' : 'unchecked', onClick: () => !isDisabled && onChange(opt.value), name: name, className: cn('flex w-full cursor-pointer gap-3 rounded-md border px-3 text-sm font-medium shadow-[0_1px_2px_0_rgba(0,0,0,0.05)] transition-colors disabled:cursor-not-allowed', 'outline-none focus-visible:ring-2 focus-visible:ring-primary/30', opt.description
37216
+ ? 'min-h-14 items-start py-2 text-left'
37217
+ : 'h-9 items-center py-1.5', selected
37218
+ ? 'border-primary bg-primary/10 text-primary'
37219
+ : 'border-transparent bg-[#FAFAFA] text-foreground dark:bg-[#262626]', isDisabled && 'cursor-not-allowed opacity-50'), children: [jsx("span", { "aria-hidden": "true", className: cn('relative inline-flex h-4 w-4 shrink-0 items-center justify-center rounded-full border', opt.description && 'mt-[3px]', selected ? 'border-primary' : 'border-gray-300'), children: selected && (jsx("span", { className: "block h-2 w-2 rounded-full bg-primary" })) }), jsxs("span", { className: "flex min-w-0 flex-1 flex-col items-start", children: [jsx("span", { className: "truncate", children: opt.label }), opt.description && (jsx("span", { className: cn('mt-0.5 text-xs font-normal', selected ? 'text-primary/80' : 'text-label'), children: opt.description }))] }), opt.icon && (jsx("span", { "aria-hidden": "true", className: cn('inline-flex shrink-0 items-center', iconSizeClasses, selected ? 'text-primary' : 'text-label'), children: opt.icon }))] }, opt.value));
37220
+ }) }));
37221
+ }
37222
+
37223
+ /**
37224
+ * One scrolling column of the picker (hours, minutes or period). The selected
37225
+ * row is scrolled into view whenever it changes, so reopening the popover lands
37226
+ * on the current value instead of at midnight.
37227
+ */
37228
+ function TimeColumn({ label, options, selected, onSelect, }) {
37229
+ const listRef = useRef(null);
37230
+ const activeRef = useRef(null);
37231
+ useEffect(() => {
37232
+ const list = listRef.current;
37233
+ const active = activeRef.current;
37234
+ if (!list || !active)
37235
+ return;
37236
+ // `scrollIntoView` would scroll the page as well as the column.
37237
+ list.scrollTop =
37238
+ active.offsetTop - list.clientHeight / 2 + active.clientHeight / 2;
37239
+ }, [selected]);
37240
+ return (jsxs("div", { className: "flex min-w-0 flex-col", children: [jsx("span", { className: "px-1 pb-1.5 text-center text-[11px] font-medium uppercase tracking-wide text-muted-foreground", children: label }), jsx("div", { ref: listRef, role: "listbox", "aria-label": label, className: "scrollbar-thin h-[184px] overflow-y-auto px-1", children: jsx("div", { className: "flex flex-col gap-0.5", children: options.map((option) => {
37241
+ const isSelected = option.value === selected;
37242
+ return (jsx("button", { ref: isSelected ? activeRef : undefined, type: "button", role: "option", "aria-selected": isSelected, onClick: () => onSelect(option.value), className: cn('rounded-md px-3 py-1.5 text-center text-sm tabular-nums transition-colors', 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring', isSelected
37243
+ ? 'bg-primary text-primary-foreground'
37244
+ : 'text-foreground hover:bg-muted'), children: option.label }, option.value));
37245
+ }) }) })] }));
37246
+ }
37247
+
37248
+ const TIME_PATTERN = /^(\d{1,2}):(\d{2})(?::\d{2})?$/;
37249
+ const pad = (n) => String(n).padStart(2, '0');
37250
+ /** Reads `HH:mm` / `HH:mm:ss`. Returns null for anything out of range. */
37251
+ function parseTimeValue(value) {
37252
+ const match = TIME_PATTERN.exec((value ?? '').trim());
37253
+ if (!match)
37254
+ return null;
37255
+ const hour = Number(match[1]);
37256
+ const minute = Number(match[2]);
37257
+ if (hour > 23 || minute > 59)
37258
+ return null;
37259
+ return { hour, minute };
37260
+ }
37261
+ /** The stored form — always 24-hour, whatever the display format. */
37262
+ function toTimeValue(hour, minute) {
37263
+ return `${pad(hour)}:${pad(minute)}`;
37264
+ }
37265
+ function formatTimeDisplay(time, use24Hour) {
37266
+ if (use24Hour)
37267
+ return toTimeValue(time.hour, time.minute);
37268
+ // 0 and 12 both map to 12 — midnight is 12 AM, noon is 12 PM.
37269
+ const hour12 = time.hour % 12 === 0 ? 12 : time.hour % 12;
37270
+ const period = time.hour < 12 ? 'AM' : 'PM';
37271
+ return `${pad(hour12)}:${pad(time.minute)} ${period}`;
37272
+ }
37273
+ function buildHourOptions(use24Hour) {
37274
+ if (use24Hour) {
37275
+ return Array.from({ length: 24 }, (_, hour) => ({
37276
+ value: hour,
37277
+ label: pad(hour),
37278
+ }));
37279
+ }
37280
+ // 12 first, matching how a clock reads.
37281
+ return Array.from({ length: 12 }, (_, index) => {
37282
+ const hour12 = index === 0 ? 12 : index;
37283
+ return { value: hour12, label: pad(hour12) };
37284
+ });
37285
+ }
37286
+ function buildMinuteOptions(step) {
37287
+ const safeStep = Number.isFinite(step) && step > 0 ? Math.floor(step) : 1;
37288
+ const options = [];
37289
+ for (let minute = 0; minute < 60; minute += safeStep) {
37290
+ options.push({ value: minute, label: pad(minute) });
37291
+ }
37292
+ return options;
37293
+ }
37294
+ /** The hour as the 12-hour column shows it (12, 1…11). */
37295
+ function toHour12(hour) {
37296
+ return hour % 12 === 0 ? 12 : hour % 12;
37297
+ }
37298
+ /** Rebuilds a 24-hour hour from a 12-hour column value and its period. */
37299
+ function fromHour12(hour12, period) {
37300
+ const base = hour12 % 12;
37301
+ return period === 'PM' ? base + 12 : base;
37302
+ }
37303
+ function periodOf(hour) {
37304
+ return hour < 12 ? 'AM' : 'PM';
37305
+ }
37306
+
37307
+ // Only one TimePicker popover should be open at a time — same coordination the
37308
+ // DateInput uses, for the same reason: each is its own `modal` Radix Popover, so
37309
+ // opening a second does not dismiss the first by outside-click.
37310
+ const TIMEPICKER_OPEN_EVENT = 'caratlogic:timepicker-open';
37311
+ const PERIOD_OPTIONS = [
37312
+ { value: 0, label: 'AM' },
37313
+ { value: 1, label: 'PM' },
37314
+ ];
37315
+ function TimePicker({ value, onChange, onBlur, name, className, disabled, placeholder = 'Select time', use24Hour = false, minuteStep = 1, hideFooter = false, }) {
37316
+ const [open, setOpen] = useState(false);
37317
+ const instanceId = useId$2();
37318
+ const parsed = parseTimeValue(value);
37319
+ useEffect(() => {
37320
+ const onOtherOpen = (e) => {
37321
+ if (e.detail !== instanceId)
37322
+ setOpen(false);
37323
+ };
37324
+ window.addEventListener(TIMEPICKER_OPEN_EVENT, onOtherOpen);
37325
+ return () => window.removeEventListener(TIMEPICKER_OPEN_EVENT, onOtherOpen);
37326
+ }, [instanceId]);
37327
+ const handleOpenChange = (next) => {
37328
+ setOpen(next);
37329
+ if (next) {
37330
+ window.dispatchEvent(new CustomEvent(TIMEPICKER_OPEN_EVENT, { detail: instanceId }));
37331
+ }
37332
+ };
37333
+ /** Picking one column before the others commits against a 00:00 baseline. */
37334
+ const commit = (hour, minute) => {
37335
+ onChange(toTimeValue(hour, minute));
37336
+ };
37337
+ const handleHour = (picked) => {
37338
+ const minute = parsed?.minute ?? 0;
37339
+ if (use24Hour) {
37340
+ commit(picked, minute);
37341
+ return;
37342
+ }
37343
+ commit(fromHour12(picked, parsed ? periodOf(parsed.hour) : 'AM'), minute);
37344
+ };
37345
+ const handleMinute = (picked) => {
37346
+ commit(parsed?.hour ?? 0, picked);
37347
+ };
37348
+ const handlePeriod = (picked) => {
37349
+ const period = picked === 0 ? 'AM' : 'PM';
37350
+ const hour12 = parsed ? toHour12(parsed.hour) : 12;
37351
+ commit(fromHour12(hour12, period), parsed?.minute ?? 0);
37352
+ };
37353
+ const selectedHour = parsed
37354
+ ? use24Hour
37355
+ ? parsed.hour
37356
+ : toHour12(parsed.hour)
37357
+ : null;
37358
+ // NOTE: `open` is driven from the button's onClick rather than
37359
+ // <PopoverTrigger>, matching DateInput — inside a modal <SlideOut> the
37360
+ // trigger's built-in toggle does not fire in Safari. <PopoverAnchor> is pure
37361
+ // positioning, so a single controlled toggle stays the only source of truth.
37362
+ return (jsxs(Popover, { open: open, onOpenChange: handleOpenChange, modal: true, children: [jsx(PopoverAnchor, { asChild: true, children: jsxs("button", { type: "button", name: name, onBlur: onBlur, disabled: disabled, "aria-haspopup": "dialog", "aria-expanded": open, onClick: () => {
37363
+ if (!disabled)
37364
+ handleOpenChange(!open);
37365
+ }, "data-slot": "input", "data-empty": !parsed || undefined, className: cn('border-input-border flex h-9 w-full min-w-0 cursor-pointer items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-1 text-left shadow-[0_1px_2px_0_#0000000d] transition-[color,box-shadow] outline-none', 'focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]', 'aria-invalid:ring-destructive/20 aria-invalid:border-destructive', disabled && 'cursor-not-allowed bg-muted/50 text-label', className), children: [jsx("span", { className: cn('truncate text-sm md:text-sm', parsed ? 'text-foreground' : 'text-placeholder'), children: parsed ? formatTimeDisplay(parsed, use24Hour) : placeholder }), jsx("span", { className: "inline-flex h-4 w-4 shrink-0 items-center justify-center text-muted-foreground", children: jsx(Clock, { className: "h-4 w-4 stroke-[1.75]" }) })] }) }), jsxs(PopoverContent, { align: "start", className: "w-auto p-3", children: [jsxs("div", { className: "flex gap-1", children: [jsx(TimeColumn, { label: "Hour", options: buildHourOptions(use24Hour), selected: selectedHour, onSelect: handleHour }), jsx(TimeColumn, { label: "Min", options: buildMinuteOptions(minuteStep), selected: parsed?.minute ?? null, onSelect: handleMinute }), !use24Hour && (jsx(TimeColumn, { label: "AM/PM", options: PERIOD_OPTIONS, selected: parsed ? (periodOf(parsed.hour) === 'AM' ? 0 : 1) : null, onSelect: handlePeriod }))] }), !hideFooter && (jsxs("div", { className: "mt-2 flex items-center justify-between gap-2 border-t border-border pt-2", children: [jsx("button", { type: "button", onClick: () => {
37366
+ onChange(undefined);
37367
+ setOpen(false);
37368
+ }, className: "rounded-md px-2 py-1 text-xs font-medium text-muted-foreground transition-colors hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring", children: "Clear" }), jsx("button", { type: "button", onClick: () => {
37369
+ const now = new Date();
37370
+ commit(now.getHours(), now.getMinutes());
37371
+ setOpen(false);
37372
+ }, className: "rounded-md px-2 py-1 text-xs font-medium text-primary transition-colors hover:text-hover focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring", children: "Now" })] }))] })] }));
37373
+ }
37374
+
37375
+ const Textarea = ({ label, error, className, ...props }) => {
37376
+ return (jsxs("div", { className: "flex flex-col gap-1 w-full text-xs", children: [label && (jsx("label", { className: " font-medium text-foreground text-xs", children: label })), jsx("textarea", { "aria-invalid": error ? true : undefined, className: `w-full text-xs rounded-lg border px-3 py-2 placeholder:text-placeholder placeholder:text-sm shadow-[0_1px_2px_0_rgba(0,0,0,0.05)] outline-none resize-y
37377
+ disabled:cursor-not-allowed disabled:bg-muted/50 disabled:text-label
37378
+ focus:ring-2 focus:ring-input focus:border-input
37379
+ ${error ? 'border-destructive focus:border-destructive focus:ring-destructive/20' : 'border-input-border'}
37380
+ ${className || ''}
37381
+ `, ...props }), error && jsx("p", { className: "text-xs text-destructive", children: error })] }));
37382
+ };
37383
+
37384
+ /** Shown in a read-only control whose value was never filled in. */
37385
+ const NOT_CAPTURED = 'Not captured';
37386
+ const asText = (value) => typeof value === 'string' ? value : '';
37387
+ const asList = (value) => Array.isArray(value)
37388
+ ? value.filter((v) => typeof v === 'string')
37389
+ : [];
37390
+ /** Blank for display purposes — a number `0` is a real value, not blank. */
37391
+ const isBlank = (value) => value === null || value === undefined || asText(value).trim() === '';
37392
+ /** Treats blank strings, empty arrays and empty upload objects as uncaptured. */
37393
+ function isValueEmpty(value) {
37394
+ if (value === null || value === undefined)
37395
+ return true;
37396
+ if (typeof value === 'string')
37397
+ return value.trim() === '';
37398
+ // multiSelect stores an array; uploads store an object.
37399
+ if (Array.isArray(value))
37400
+ return value.length === 0;
37401
+ if (typeof value === 'object')
37402
+ return Object.keys(value).length === 0;
37403
+ return false;
37404
+ }
37405
+
37406
+ /** A snapshotted option field whose list was never filled in. */
37407
+ const NoOptions = () => (jsx("p", { className: "py-1.5 text-sm text-muted-foreground", children: "No options configured." }));
37408
+ /**
37409
+ * Renders one control for a field described by `type` and its option metadata.
37410
+ *
37411
+ * Covers the field types shared by every custom-field surface. Types specific
37412
+ * to one feature stay with that feature, which handles them before delegating.
37413
+ */
37414
+ function CustomFieldInput({ field, value, disabled, invalid, onChange, renderUpload, }) {
37415
+ // Read-only fields render even when blank, so say why they are blank rather
37416
+ // than leaving an unexplained empty box.
37417
+ const placeholder = disabled && isBlank(value) ? NOT_CAPTURED : undefined;
37418
+ switch (field.type) {
37419
+ case 'dropdown':
37420
+ case 'radio': {
37421
+ const options = field.options ?? [];
37422
+ if (field.type === 'radio') {
37423
+ if (options.length === 0)
37424
+ return jsx(NoOptions, {});
37425
+ return (jsx(RadioCardGroup, { name: field.id, ariaLabel: field.label, disabled: disabled, value: asText(value), onChange: (next) => onChange(next), options: options.map((option) => ({ value: option, label: option })) }));
37426
+ }
37427
+ return (jsxs(Select, { disabled: disabled, value: asText(value), onValueChange: (v) => onChange(v), children: [jsx(SelectTrigger, { id: field.id, "aria-invalid": invalid, className: "h-9 w-full", children: jsx(SelectValue, { placeholder: disabled ? NOT_CAPTURED : (field.placeholder ?? 'Select an option') }) }), jsx(SelectContent, { children: options.map((option) => (jsx(SelectItem, { value: option, children: option }, option))) })] }));
37428
+ }
37429
+ case 'multiSelect': {
37430
+ const options = field.options ?? [];
37431
+ if (options.length === 0)
37432
+ return jsx(NoOptions, {});
37433
+ const selected = asList(value);
37434
+ // Read-only has no trigger to disable, so show the picked values plainly.
37435
+ if (disabled) {
37436
+ return (jsx("p", { className: "py-1.5 text-sm text-foreground", children: selected.length > 0 ? selected.join(', ') : NOT_CAPTURED }));
37437
+ }
37438
+ return (jsx(FilterMultiSelect, { label: field.placeholder ?? 'Select options', value: selected, onChange: (next) => onChange(next), options: options.map((option) => ({ value: option, label: option })), triggerClassName: "w-full" }));
37439
+ }
37440
+ case 'toggle':
37441
+ return (jsx("div", { className: "flex h-9 items-center", children: jsx(ToggleSwitch, { checked: value === true, disabled: disabled, onCheckedChange: (checked) => onChange(checked) }) }));
37442
+ case 'time':
37443
+ return (jsx(TimePicker, { name: field.id, disabled: disabled, placeholder: disabled ? NOT_CAPTURED : (field.placeholder ?? 'Select time'), value: asText(value), onChange: (next) => onChange(next ?? null) }));
37444
+ case 'email':
37445
+ case 'phone':
37446
+ return (jsx(Input, { id: field.id, type: field.type === 'email' ? 'email' : 'tel', inputMode: field.type === 'phone' ? 'tel' : undefined, disabled: disabled, placeholder: placeholder ?? field.placeholder, "aria-invalid": invalid, value: asText(value), onChange: (e) => onChange(e.target.value) }));
37447
+ case 'image':
37448
+ case 'file':
37449
+ case 'docsWithExpiry':
37450
+ return (renderUpload?.({
37451
+ id: field.id,
37452
+ variant: field.type,
37453
+ value,
37454
+ expiryDateLabel: field.expiryDateLabel,
37455
+ disabled,
37456
+ onChange,
37457
+ }) ?? null);
37458
+ case 'textarea':
37459
+ return (jsx(Textarea, { id: field.id, rows: 3, disabled: disabled, placeholder: placeholder ?? field.placeholder, "aria-invalid": invalid, value: asText(value), onChange: (e) => onChange(e.target.value) }));
37460
+ case 'number':
37461
+ // The unit is carried by the label, so the input keeps its full width.
37462
+ return (jsx(NumberInput, { id: field.id, disabled: disabled, placeholder: placeholder ?? field.placeholder, "aria-invalid": invalid, value: typeof value === 'number' ? value : '', emitUndefinedOnEmpty: true, onChange: (v) => onChange(v ?? null), className: "h-9 w-full" }));
37463
+ case 'date':
37464
+ return (jsx(DateInput, { name: field.id, disabled: disabled, placeholder: placeholder ?? field.placeholder, max: field.maxDate, value: typeof value === 'string' && value ? new Date(value) : undefined, onChange: (date) => onChange(date ? date.toISOString() : null) }));
37465
+ case 'checkbox':
37466
+ return (jsxs("label", { className: "flex h-9 cursor-pointer select-none items-center gap-2", children: [jsx(Checkbox, { id: field.id, disabled: disabled, checked: value === true, onCheckedChange: (checked) => onChange(checked === true) }), jsx("span", { className: "text-sm text-muted-foreground", children: disabled ? (value === true ? 'Yes' : 'No') : 'Yes' })] }));
37467
+ default:
37468
+ return (jsx(Input, { id: field.id, disabled: disabled, placeholder: placeholder ?? field.placeholder, "aria-invalid": invalid, value: asText(value), onChange: (e) => onChange(e.target.value) }));
37469
+ }
37470
+ }
37471
+
37472
+ const formatDate = (iso) => {
37473
+ const date = new Date(iso);
37474
+ return Number.isNaN(date.getTime())
37475
+ ? iso
37476
+ : date.toLocaleDateString(undefined, {
37477
+ day: '2-digit',
37478
+ month: 'short',
37479
+ year: 'numeric',
37480
+ });
37481
+ };
37482
+ const isUpload = (value) => !!value && typeof value === 'object' && 'key' in value;
37483
+ const FileLink = ({ file }) => file.url ? (jsxs("a", { href: file.url, target: "_blank", rel: "noreferrer", className: "inline-flex items-center gap-1.5 text-primary hover:underline", children: [jsx(FileText, { className: "h-3.5 w-3.5 shrink-0", "aria-hidden": true }), file.name] })) : (jsxs("span", { className: "inline-flex items-center gap-1.5", children: [jsx(FileText, { className: "h-3.5 w-3.5 shrink-0 text-muted-foreground", "aria-hidden": true }), file.name] }));
37484
+ /** Muted dash, so an uncaptured field reads as blank rather than as a value. */
37485
+ const EmptyValue = () => (jsx("span", { className: "text-muted-foreground/60", children: "\u2014" }));
37486
+ /**
37487
+ * A captured value rendered for reading rather than editing. Edit forms use
37488
+ * real inputs; a disabled input full of placeholders is much harder to scan
37489
+ * than plain text, and reads as broken rather than empty.
37490
+ */
37491
+ function CustomFieldValue({ type, value, unit, }) {
37492
+ if (isValueEmpty(value))
37493
+ return jsx(EmptyValue, {});
37494
+ switch (type) {
37495
+ case 'checkbox':
37496
+ case 'toggle':
37497
+ return jsx("span", { children: value === true ? 'Yes' : 'No' });
37498
+ case 'date':
37499
+ return jsx("span", { children: typeof value === 'string' ? formatDate(value) : '—' });
37500
+ case 'multiSelect':
37501
+ return (jsx("span", { children: Array.isArray(value) ? value.join(', ') : String(value) }));
37502
+ case 'image':
37503
+ case 'file':
37504
+ return isUpload(value) ? jsx(FileLink, { file: value }) : jsx(EmptyValue, {});
37505
+ case 'docsWithExpiry': {
37506
+ const doc = value;
37507
+ if (!isUpload(doc.file))
37508
+ return jsx(EmptyValue, {});
37509
+ return (jsxs("span", { className: "flex flex-col gap-0.5", children: [jsx(FileLink, { file: doc.file }), doc.expiryDate && (jsxs("span", { className: "text-xs text-muted-foreground", children: ["Expires ", formatDate(doc.expiryDate)] }))] }));
37510
+ }
37511
+ case 'number': {
37512
+ const text = typeof value === 'number' ? value.toLocaleString() : String(value);
37513
+ return (jsx("span", { className: "tabular-nums", children: unit ? `${text} ${unit}` : text }));
37514
+ }
37515
+ default:
37516
+ return (jsx("span", { className: "whitespace-pre-wrap break-words", children: String(value) }));
37517
+ }
37518
+ }
37519
+
37520
+ const FIELD_TYPE_ICONS = {
37521
+ text: Type,
37522
+ textarea: AlignLeft,
37523
+ email: Mail,
37524
+ phone: Phone,
37525
+ number: Hash,
37526
+ date: Calendar$1,
37527
+ time: Clock,
37528
+ dropdown: CircleChevronDown,
37529
+ radio: CircleDot,
37530
+ checkbox: SquareCheckBig,
37531
+ multiSelect: ListChecks,
37532
+ toggle: ToggleLeft,
37533
+ boolean: ToggleLeft,
37534
+ image: Image$1,
37535
+ file: Paperclip,
37536
+ docsWithExpiry: Paperclip,
37537
+ };
37538
+ /** Glyph for a field type, so a list of fields is scannable at a glance. */
37539
+ function fieldTypeIcon(type) {
37540
+ return FIELD_TYPE_ICONS[type] ?? Type;
37541
+ }
37542
+
36934
37543
  /**
36935
37544
  * Compact "time ago" label, e.g. "5m ago". Falls back to a locale date past a
36936
37545
  * week so older entries stay scannable.
@@ -37962,28 +38571,6 @@ function PurchaseOrderComboBox({ selectedItem, onSelect, fetchPurchaseOrders, se
37962
38571
  : '', fetchPage: fetchPage, resolveById: resolveById, preSelectedId: preSelectedId, searchPlaceholder: searchPlaceholder, emptyMessage: "No purchase orders found.", disabled: disabled, className: className, align: align }));
37963
38572
  }
37964
38573
 
37965
- /**
37966
- * Horizontal row of option cards behaving as a radio group.
37967
- * Selected option highlights with primary border + light green background + filled dot.
37968
- * Unselected options have an empty circle indicator.
37969
- */
37970
- function RadioCardGroup({ value, onChange, options, className, disabled, name, ariaLabel, iconSize = 'sm', }) {
37971
- const iconSizeClasses = iconSize === 'xl'
37972
- ? '[&_svg]:h-10 [&_svg]:w-10'
37973
- : iconSize === 'lg'
37974
- ? '[&_svg]:h-6 [&_svg]:w-6'
37975
- : '[&_svg]:h-4 [&_svg]:w-4';
37976
- return (jsx("div", { role: "radiogroup", "aria-label": ariaLabel, className: cn('grid w-full grid-cols-2 gap-3 sm:grid-cols-4', className), children: options.map((opt) => {
37977
- const selected = value === opt.value;
37978
- const isDisabled = disabled || opt.disabled;
37979
- return (jsxs("button", { type: "button", role: "radio", "aria-checked": selected, disabled: isDisabled, "data-state": selected ? 'checked' : 'unchecked', onClick: () => !isDisabled && onChange(opt.value), name: name, className: cn('flex w-full cursor-pointer gap-3 rounded-md border px-3 text-sm font-medium shadow-[0_1px_2px_0_rgba(0,0,0,0.05)] transition-colors disabled:cursor-not-allowed', 'outline-none focus-visible:ring-2 focus-visible:ring-primary/30', opt.description
37980
- ? 'min-h-14 items-start py-2 text-left'
37981
- : 'h-9 items-center py-1.5', selected
37982
- ? 'border-primary bg-primary/10 text-primary'
37983
- : 'border-transparent bg-[#FAFAFA] text-foreground dark:bg-[#262626]', isDisabled && 'cursor-not-allowed opacity-50'), children: [jsx("span", { "aria-hidden": "true", className: cn('relative inline-flex h-4 w-4 shrink-0 items-center justify-center rounded-full border', opt.description && 'mt-[3px]', selected ? 'border-primary' : 'border-gray-300'), children: selected && (jsx("span", { className: "block h-2 w-2 rounded-full bg-primary" })) }), jsxs("span", { className: "flex min-w-0 flex-1 flex-col items-start", children: [jsx("span", { className: "truncate", children: opt.label }), opt.description && (jsx("span", { className: cn('mt-0.5 text-xs font-normal', selected ? 'text-primary/80' : 'text-label'), children: opt.description }))] }), opt.icon && (jsx("span", { "aria-hidden": "true", className: cn('inline-flex shrink-0 items-center', iconSizeClasses, selected ? 'text-primary' : 'text-label'), children: opt.icon }))] }, opt.value));
37984
- }) }));
37985
- }
37986
-
37987
38574
  // ::- Persistent data structure representing an ordered mapping from
37988
38575
  // strings to values, with some convenient update methods.
37989
38576
  function OrderedMap(content) {
@@ -66672,158 +67259,6 @@ function TagsInput({ value, onChange, placeholder, helperText, uppercase = false
66672
67259
  return (jsxs("div", { className: "w-full", children: [jsxs("div", { className: "flex items-center gap-2", children: [jsx(Input, { value: input, onChange: onInputChange, onKeyDown: onInputKeyDown, placeholder: placeholder || 'Type and Press Enter', className: "flex-1 bg-formInput" }), jsxs(Button$1, { type: "button", onClick: addTag, disabled: addDisabled, className: "h-9 gap-1.5 disabled:opacity-50", children: [jsx(Plus, { className: "h-4 w-4" }), "Add"] })] }), helperText && (jsx("p", { className: "mt-1.5 text-xs text-muted-foreground", children: helperText })), value.length > 0 && (jsx("div", { className: "mt-3 flex flex-wrap gap-2", children: value.map((tag, idx) => (jsxs("span", { className: "inline-flex items-center gap-1.5 rounded-md border border-border bg-secondary px-2 py-1 text-xs font-medium text-foreground", children: [tag, jsx("button", { type: "button", onClick: () => removeTag(idx), "aria-label": `Remove ${tag}`, className: "cursor-pointer text-muted-foreground transition-colors hover:text-foreground", children: jsx(X$2, { className: "h-3 w-3" }) })] }, idx))) }))] }));
66673
67260
  }
66674
67261
 
66675
- /**
66676
- * One scrolling column of the picker (hours, minutes or period). The selected
66677
- * row is scrolled into view whenever it changes, so reopening the popover lands
66678
- * on the current value instead of at midnight.
66679
- */
66680
- function TimeColumn({ label, options, selected, onSelect, }) {
66681
- const listRef = useRef(null);
66682
- const activeRef = useRef(null);
66683
- useEffect(() => {
66684
- const list = listRef.current;
66685
- const active = activeRef.current;
66686
- if (!list || !active)
66687
- return;
66688
- // `scrollIntoView` would scroll the page as well as the column.
66689
- list.scrollTop =
66690
- active.offsetTop - list.clientHeight / 2 + active.clientHeight / 2;
66691
- }, [selected]);
66692
- return (jsxs("div", { className: "flex min-w-0 flex-col", children: [jsx("span", { className: "px-1 pb-1.5 text-center text-[11px] font-medium uppercase tracking-wide text-muted-foreground", children: label }), jsx("div", { ref: listRef, role: "listbox", "aria-label": label, className: "scrollbar-thin h-[184px] overflow-y-auto px-1", children: jsx("div", { className: "flex flex-col gap-0.5", children: options.map((option) => {
66693
- const isSelected = option.value === selected;
66694
- return (jsx("button", { ref: isSelected ? activeRef : undefined, type: "button", role: "option", "aria-selected": isSelected, onClick: () => onSelect(option.value), className: cn('rounded-md px-3 py-1.5 text-center text-sm tabular-nums transition-colors', 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring', isSelected
66695
- ? 'bg-primary text-primary-foreground'
66696
- : 'text-foreground hover:bg-muted'), children: option.label }, option.value));
66697
- }) }) })] }));
66698
- }
66699
-
66700
- const TIME_PATTERN = /^(\d{1,2}):(\d{2})(?::\d{2})?$/;
66701
- const pad = (n) => String(n).padStart(2, '0');
66702
- /** Reads `HH:mm` / `HH:mm:ss`. Returns null for anything out of range. */
66703
- function parseTimeValue(value) {
66704
- const match = TIME_PATTERN.exec((value ?? '').trim());
66705
- if (!match)
66706
- return null;
66707
- const hour = Number(match[1]);
66708
- const minute = Number(match[2]);
66709
- if (hour > 23 || minute > 59)
66710
- return null;
66711
- return { hour, minute };
66712
- }
66713
- /** The stored form — always 24-hour, whatever the display format. */
66714
- function toTimeValue(hour, minute) {
66715
- return `${pad(hour)}:${pad(minute)}`;
66716
- }
66717
- function formatTimeDisplay(time, use24Hour) {
66718
- if (use24Hour)
66719
- return toTimeValue(time.hour, time.minute);
66720
- // 0 and 12 both map to 12 — midnight is 12 AM, noon is 12 PM.
66721
- const hour12 = time.hour % 12 === 0 ? 12 : time.hour % 12;
66722
- const period = time.hour < 12 ? 'AM' : 'PM';
66723
- return `${pad(hour12)}:${pad(time.minute)} ${period}`;
66724
- }
66725
- function buildHourOptions(use24Hour) {
66726
- if (use24Hour) {
66727
- return Array.from({ length: 24 }, (_, hour) => ({
66728
- value: hour,
66729
- label: pad(hour),
66730
- }));
66731
- }
66732
- // 12 first, matching how a clock reads.
66733
- return Array.from({ length: 12 }, (_, index) => {
66734
- const hour12 = index === 0 ? 12 : index;
66735
- return { value: hour12, label: pad(hour12) };
66736
- });
66737
- }
66738
- function buildMinuteOptions(step) {
66739
- const safeStep = Number.isFinite(step) && step > 0 ? Math.floor(step) : 1;
66740
- const options = [];
66741
- for (let minute = 0; minute < 60; minute += safeStep) {
66742
- options.push({ value: minute, label: pad(minute) });
66743
- }
66744
- return options;
66745
- }
66746
- /** The hour as the 12-hour column shows it (12, 1…11). */
66747
- function toHour12(hour) {
66748
- return hour % 12 === 0 ? 12 : hour % 12;
66749
- }
66750
- /** Rebuilds a 24-hour hour from a 12-hour column value and its period. */
66751
- function fromHour12(hour12, period) {
66752
- const base = hour12 % 12;
66753
- return period === 'PM' ? base + 12 : base;
66754
- }
66755
- function periodOf(hour) {
66756
- return hour < 12 ? 'AM' : 'PM';
66757
- }
66758
-
66759
- // Only one TimePicker popover should be open at a time — same coordination the
66760
- // DateInput uses, for the same reason: each is its own `modal` Radix Popover, so
66761
- // opening a second does not dismiss the first by outside-click.
66762
- const TIMEPICKER_OPEN_EVENT = 'caratlogic:timepicker-open';
66763
- const PERIOD_OPTIONS = [
66764
- { value: 0, label: 'AM' },
66765
- { value: 1, label: 'PM' },
66766
- ];
66767
- function TimePicker({ value, onChange, onBlur, name, className, disabled, placeholder = 'Select time', use24Hour = false, minuteStep = 1, hideFooter = false, }) {
66768
- const [open, setOpen] = useState(false);
66769
- const instanceId = useId$2();
66770
- const parsed = parseTimeValue(value);
66771
- useEffect(() => {
66772
- const onOtherOpen = (e) => {
66773
- if (e.detail !== instanceId)
66774
- setOpen(false);
66775
- };
66776
- window.addEventListener(TIMEPICKER_OPEN_EVENT, onOtherOpen);
66777
- return () => window.removeEventListener(TIMEPICKER_OPEN_EVENT, onOtherOpen);
66778
- }, [instanceId]);
66779
- const handleOpenChange = (next) => {
66780
- setOpen(next);
66781
- if (next) {
66782
- window.dispatchEvent(new CustomEvent(TIMEPICKER_OPEN_EVENT, { detail: instanceId }));
66783
- }
66784
- };
66785
- /** Picking one column before the others commits against a 00:00 baseline. */
66786
- const commit = (hour, minute) => {
66787
- onChange(toTimeValue(hour, minute));
66788
- };
66789
- const handleHour = (picked) => {
66790
- const minute = parsed?.minute ?? 0;
66791
- if (use24Hour) {
66792
- commit(picked, minute);
66793
- return;
66794
- }
66795
- commit(fromHour12(picked, parsed ? periodOf(parsed.hour) : 'AM'), minute);
66796
- };
66797
- const handleMinute = (picked) => {
66798
- commit(parsed?.hour ?? 0, picked);
66799
- };
66800
- const handlePeriod = (picked) => {
66801
- const period = picked === 0 ? 'AM' : 'PM';
66802
- const hour12 = parsed ? toHour12(parsed.hour) : 12;
66803
- commit(fromHour12(hour12, period), parsed?.minute ?? 0);
66804
- };
66805
- const selectedHour = parsed
66806
- ? use24Hour
66807
- ? parsed.hour
66808
- : toHour12(parsed.hour)
66809
- : null;
66810
- // NOTE: `open` is driven from the button's onClick rather than
66811
- // <PopoverTrigger>, matching DateInput — inside a modal <SlideOut> the
66812
- // trigger's built-in toggle does not fire in Safari. <PopoverAnchor> is pure
66813
- // positioning, so a single controlled toggle stays the only source of truth.
66814
- return (jsxs(Popover, { open: open, onOpenChange: handleOpenChange, modal: true, children: [jsx(PopoverAnchor, { asChild: true, children: jsxs("button", { type: "button", name: name, onBlur: onBlur, disabled: disabled, "aria-haspopup": "dialog", "aria-expanded": open, onClick: () => {
66815
- if (!disabled)
66816
- handleOpenChange(!open);
66817
- }, "data-slot": "input", "data-empty": !parsed || undefined, className: cn('border-input-border flex h-9 w-full min-w-0 cursor-pointer items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-1 text-left shadow-[0_1px_2px_0_#0000000d] transition-[color,box-shadow] outline-none', 'focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]', 'aria-invalid:ring-destructive/20 aria-invalid:border-destructive', disabled && 'cursor-not-allowed bg-muted/50 text-label', className), children: [jsx("span", { className: cn('truncate text-sm md:text-sm', parsed ? 'text-foreground' : 'text-placeholder'), children: parsed ? formatTimeDisplay(parsed, use24Hour) : placeholder }), jsx("span", { className: "inline-flex h-4 w-4 shrink-0 items-center justify-center text-muted-foreground", children: jsx(Clock, { className: "h-4 w-4 stroke-[1.75]" }) })] }) }), jsxs(PopoverContent, { align: "start", className: "w-auto p-3", children: [jsxs("div", { className: "flex gap-1", children: [jsx(TimeColumn, { label: "Hour", options: buildHourOptions(use24Hour), selected: selectedHour, onSelect: handleHour }), jsx(TimeColumn, { label: "Min", options: buildMinuteOptions(minuteStep), selected: parsed?.minute ?? null, onSelect: handleMinute }), !use24Hour && (jsx(TimeColumn, { label: "AM/PM", options: PERIOD_OPTIONS, selected: parsed ? (periodOf(parsed.hour) === 'AM' ? 0 : 1) : null, onSelect: handlePeriod }))] }), !hideFooter && (jsxs("div", { className: "mt-2 flex items-center justify-between gap-2 border-t border-border pt-2", children: [jsx("button", { type: "button", onClick: () => {
66818
- onChange(undefined);
66819
- setOpen(false);
66820
- }, className: "rounded-md px-2 py-1 text-xs font-medium text-muted-foreground transition-colors hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring", children: "Clear" }), jsx("button", { type: "button", onClick: () => {
66821
- const now = new Date();
66822
- commit(now.getHours(), now.getMinutes());
66823
- setOpen(false);
66824
- }, className: "rounded-md px-2 py-1 text-xs font-medium text-primary transition-colors hover:text-hover focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring", children: "Now" })] }))] })] }));
66825
- }
66826
-
66827
67262
  function mapToItem(w, separator) {
66828
67263
  const id = w.id || w.warehouseId || '';
66829
67264
  if (!id)
@@ -67199,6 +67634,236 @@ function ZoomSplitViewer({ src, alt = 'Preview', zoom = 2, lensSize = 160, paneO
67199
67634
  }) })), isTouchDevice && (jsx("p", { className: `text-xs text-muted-foreground text-center mt-2 ${isMobile ? 'text-2xs' : ''}`, children: isMobile ? 'Touch & hold to zoom' : 'Touch and hold to zoom' }))] }));
67200
67635
  }
67201
67636
 
67637
+ /**
67638
+ * Categories carry both a colour and a distinct icon — the colour alone never
67639
+ * distinguishes them, so the feed stays readable without relying on hue.
67640
+ */
67641
+ const ACTIVITY_CATEGORY_META = {
67642
+ customer: {
67643
+ label: 'Customer',
67644
+ icon: UserPlus,
67645
+ iconClassName: 'bg-secondary text-secondary-foreground',
67646
+ dotClassName: 'bg-secondary-foreground',
67647
+ },
67648
+ form: {
67649
+ label: 'Form',
67650
+ icon: FileCheck2,
67651
+ iconClassName: 'bg-primary/10 text-primary',
67652
+ dotClassName: 'bg-primary',
67653
+ },
67654
+ communication: {
67655
+ label: 'Communication',
67656
+ icon: BellRing,
67657
+ iconClassName: 'bg-warning/10 text-warning',
67658
+ dotClassName: 'bg-warning',
67659
+ },
67660
+ verification: {
67661
+ label: 'Verification',
67662
+ icon: KeyRound,
67663
+ iconClassName: 'bg-info/10 text-info',
67664
+ dotClassName: 'bg-info',
67665
+ },
67666
+ status: {
67667
+ label: 'Status',
67668
+ icon: ShieldCheck,
67669
+ iconClassName: 'bg-success/10 text-success',
67670
+ dotClassName: 'bg-success',
67671
+ },
67672
+ };
67673
+ const ACTIVITY_CATEGORIES = Object.keys(ACTIVITY_CATEGORY_META);
67674
+ /** Feed grid: time gutter, icon rail, content, expand control. */
67675
+ const ACTIVITY_ROW_GRID = 'grid grid-cols-[52px_32px_minmax(0,1fr)_36px] gap-x-3';
67676
+
67677
+ const ACTIVITY_FEED_ARIA = {
67678
+ feedLabel: 'Activity feed',
67679
+ expandRow: (summary) => `Show details for: ${summary}`,
67680
+ collapseRow: (summary) => `Hide details for: ${summary}`,
67681
+ expandAutomatedGroup: (count) => `Show ${count} automated ${count === 1 ? 'entry' : 'entries'}`,
67682
+ collapseAutomatedGroup: (count) => `Hide ${count} automated ${count === 1 ? 'entry' : 'entries'}`,
67683
+ copyReference: 'Copy reference',
67684
+ changesTable: 'Fields changed by this entry',
67685
+ };
67686
+
67687
+ function formatActivityTime(iso) {
67688
+ const date = new Date(iso);
67689
+ if (Number.isNaN(date.getTime()))
67690
+ return '';
67691
+ return date.toLocaleTimeString('en-GB', {
67692
+ hour: '2-digit',
67693
+ minute: '2-digit',
67694
+ hour12: false,
67695
+ });
67696
+ }
67697
+ function startOfDay(date) {
67698
+ return new Date(date.getFullYear(), date.getMonth(), date.getDate()).getTime();
67699
+ }
67700
+ /** "Today" / "Yesterday" / the weekday, so a reader can place an entry at a glance. */
67701
+ function relativeDayLabel(date, today) {
67702
+ const dayMs = 24 * 60 * 60 * 1000;
67703
+ const diff = Math.round((startOfDay(today) - startOfDay(date)) / dayMs);
67704
+ if (diff === 0)
67705
+ return 'Today';
67706
+ if (diff === 1)
67707
+ return 'Yesterday';
67708
+ return date.toLocaleDateString('en-GB', { weekday: 'long' });
67709
+ }
67710
+ function fullDateLabel(date) {
67711
+ return date.toLocaleDateString('en-GB', {
67712
+ weekday: 'long',
67713
+ day: 'numeric',
67714
+ month: 'short',
67715
+ year: 'numeric',
67716
+ });
67717
+ }
67718
+ /**
67719
+ * Collapse runs of consecutive automated entries into one row. Only runs of two
67720
+ * or more are worth collapsing — hiding a single reminder behind a toggle costs
67721
+ * a click and saves nothing.
67722
+ */
67723
+ function collapseAutomated(entries, groupKey) {
67724
+ const rows = [];
67725
+ let run = [];
67726
+ const flush = () => {
67727
+ if (run.length === 0)
67728
+ return;
67729
+ if (run.length === 1)
67730
+ rows.push({ kind: 'entry', entry: run[0] });
67731
+ else
67732
+ rows.push({
67733
+ kind: 'automated-group',
67734
+ id: `${groupKey}-auto-${rows.length}`,
67735
+ entries: run,
67736
+ });
67737
+ run = [];
67738
+ };
67739
+ for (const entry of entries) {
67740
+ if (entry.actor.kind === 'system') {
67741
+ run.push(entry);
67742
+ continue;
67743
+ }
67744
+ flush();
67745
+ rows.push({ kind: 'entry', entry });
67746
+ }
67747
+ flush();
67748
+ return rows;
67749
+ }
67750
+ /**
67751
+ * Bucket entries by calendar day, preserving the order they arrive in so the
67752
+ * caller keeps control of newest-first vs oldest-first.
67753
+ */
67754
+ function groupActivityByDay(entries, groupAutomated, now = new Date()) {
67755
+ const buckets = new Map();
67756
+ for (const entry of entries) {
67757
+ const date = new Date(entry.createdAt);
67758
+ const key = Number.isNaN(date.getTime())
67759
+ ? 'unknown'
67760
+ : String(startOfDay(date));
67761
+ const bucket = buckets.get(key);
67762
+ if (bucket)
67763
+ bucket.entries.push(entry);
67764
+ else
67765
+ buckets.set(key, { date, entries: [entry] });
67766
+ }
67767
+ return Array.from(buckets.entries()).map(([key, bucket]) => {
67768
+ const valid = !Number.isNaN(bucket.date.getTime());
67769
+ return {
67770
+ key,
67771
+ label: valid ? relativeDayLabel(bucket.date, now) : 'Unknown date',
67772
+ dateLabel: valid ? fullDateLabel(bucket.date) : '',
67773
+ count: bucket.entries.length,
67774
+ rows: groupAutomated
67775
+ ? collapseAutomated(bucket.entries, key)
67776
+ : bucket.entries.map((entry) => ({ kind: 'entry', entry })),
67777
+ };
67778
+ });
67779
+ }
67780
+ /** Initials for the contact avatar, capped at two letters. */
67781
+ function initialsOf(name) {
67782
+ const parts = name.trim().split(/\s+/).filter(Boolean);
67783
+ if (parts.length === 0)
67784
+ return '?';
67785
+ return parts
67786
+ .slice(0, 2)
67787
+ .map((part) => part[0])
67788
+ .join('')
67789
+ .toUpperCase();
67790
+ }
67791
+ /** Shortens a correlation id so it never pushes the footer's actions off-row. */
67792
+ function truncateReference(reference, max = 28) {
67793
+ return reference.length > max ? `${reference.slice(0, max)}…` : reference;
67794
+ }
67795
+
67796
+ function ActivityDayHeader({ group, }) {
67797
+ return (jsxs("div", { className: "flex items-baseline justify-between gap-3 border-b border-border bg-muted/40 px-5 py-3", children: [jsxs("div", { className: "flex items-baseline gap-2", children: [jsx("h3", { className: "text-sm font-semibold text-foreground", children: group.label }), jsx("span", { className: "text-xs text-muted-foreground", children: group.dateLabel })] }), jsxs("span", { className: "text-xs text-muted-foreground", children: [group.count, " ", group.count === 1 ? 'event' : 'events'] })] }));
67798
+ }
67799
+ function StatusChip({ status, tone, }) {
67800
+ return (jsx(Badge, { appearance: "soft", color: tone, size: "sm", children: status }));
67801
+ }
67802
+ function CategoryIcon({ entry, showRail, }) {
67803
+ const meta = ACTIVITY_CATEGORY_META[entry.category];
67804
+ const Icon = meta.icon;
67805
+ return (jsxs("div", { className: "relative self-stretch", children: [jsx("span", { className: cn('relative z-10 flex size-8 items-center justify-center rounded-full', meta.iconClassName), children: jsx(Icon, { className: "size-4", "aria-hidden": "true" }) }), showRail && (jsx("span", { "aria-hidden": "true", className: "absolute top-9 -bottom-4 left-1/2 w-px -translate-x-1/2 bg-border" }))] }));
67806
+ }
67807
+ function ChangesTable({ changes, }) {
67808
+ return (jsxs("div", { className: "overflow-hidden rounded-lg border border-border bg-card", children: [jsx("p", { className: "border-b border-border px-3 py-2 text-[0.625rem] font-semibold tracking-wide text-muted-foreground uppercase", children: "What changed" }), changes.length === 0 ? (jsx("p", { className: "px-3 py-2.5 text-xs text-muted-foreground", children: "No field detail was recorded for this entry." })) : (jsxs("table", { className: "w-full text-sm", "aria-label": ACTIVITY_FEED_ARIA.changesTable, children: [jsx("thead", { children: jsxs("tr", { className: "bg-muted/40 text-left text-xs text-muted-foreground", children: [jsx("th", { scope: "col", className: "px-3 py-1.5 font-normal", children: "Field" }), jsx("th", { scope: "col", className: "px-3 py-1.5 font-normal", children: "Before" }), jsx("th", { scope: "col", className: "px-3 py-1.5 font-normal", children: "After" })] }) }), jsx("tbody", { children: changes.map((change) => (jsxs("tr", { className: "border-t border-border align-top", children: [jsx("th", { scope: "row", className: "px-3 py-2 text-left text-xs font-normal text-secondary-foreground", children: change.field }), jsx("td", { className: "px-3 py-2 text-xs text-muted-foreground line-through", children: change.before ?? 'Not set' }), jsx("td", { className: "px-3 py-2 text-xs font-medium text-foreground", children: change.after ?? 'Not set' })] }, change.field))) })] }))] }));
67809
+ }
67810
+ function ContactCard({ contact, }) {
67811
+ const name = contact.name || contact.company || contact.email || 'Unknown contact';
67812
+ const secondary = [
67813
+ contact.company === name ? undefined : contact.company,
67814
+ contact.email,
67815
+ ]
67816
+ .filter(Boolean)
67817
+ .join(' · ');
67818
+ return (jsxs("div", { className: "overflow-hidden rounded-lg border border-border bg-card", children: [jsx("p", { className: "border-b border-border px-3 py-2 text-[0.625rem] font-semibold tracking-wide text-muted-foreground uppercase", children: "Contact at the time" }), jsxs("div", { className: "flex flex-col gap-2.5 px-3 py-2.5", children: [jsxs("div", { className: "flex items-center gap-2.5", children: [jsx("span", { "aria-hidden": "true", className: "flex size-9 shrink-0 items-center justify-center rounded-full bg-muted text-xs font-semibold text-foreground", children: initialsOf(name) }), jsxs("div", { className: "min-w-0", children: [jsx("p", { className: "truncate text-sm font-semibold text-foreground", children: name }), secondary && (jsx("p", { className: "truncate text-xs text-muted-foreground", children: secondary }))] })] }), (contact.roles?.length || contact.isActive !== undefined) && (jsxs("div", { className: "flex flex-wrap gap-1", children: [contact.roles?.map((role) => (jsx(Badge, { appearance: "soft", color: "secondary", size: "sm", children: role }, role))), contact.isActive !== undefined && (jsx(Badge, { appearance: "soft", color: contact.isActive ? 'success' : 'secondary', size: "sm", children: contact.isActive ? 'Active' : 'Inactive' }))] }))] })] }));
67819
+ }
67820
+ function ActivityDetail({ entry }) {
67821
+ const showChanges = entry.changes.length > 0 || entry.changesExpected === true;
67822
+ return (jsxs("div", { className: "flex flex-col gap-3 pt-1", children: [(showChanges || entry.contact) && (jsxs("div", { className: cn('grid gap-3', showChanges && entry.contact
67823
+ ? 'lg:grid-cols-[minmax(0,1.4fr)_minmax(0,1fr)]'
67824
+ : 'grid-cols-1'), children: [showChanges && jsx(ChangesTable, { changes: entry.changes }), entry.contact && jsx(ContactCard, { contact: entry.contact })] })), entry.notes && (jsxs("div", { className: "rounded-lg border border-border bg-card px-3 py-2", children: [jsx("p", { className: "text-[0.625rem] font-semibold tracking-wide text-muted-foreground uppercase", children: "Notes" }), jsx("p", { className: "mt-1 text-sm text-foreground", children: entry.notes })] })), jsxs("div", { className: "flex flex-wrap items-center justify-between gap-3", children: [jsxs("div", { className: "flex items-center gap-1.5 text-xs text-muted-foreground", children: [jsx("span", { children: "Ref" }), jsx("code", { className: "rounded bg-secondary px-1.5 py-0.5 font-mono text-[0.6875rem] text-secondary-foreground", children: truncateReference(entry.reference) }), jsx(CopyButton, { value: entry.reference })] }), !!entry.links?.length && (jsx("div", { className: "flex flex-wrap items-center gap-4", children: entry.links.map((link) => (jsx("button", { type: "button", onClick: link.onClick, className: "text-sm font-medium text-primary underline-offset-4 hover:underline focus-visible:ring-2 focus-visible:ring-ring focus-visible:outline-none", children: link.label }, link.label))) }))] })] }));
67825
+ }
67826
+ function ActivityRow({ entry, showRail, statusColors, }) {
67827
+ const [open, setOpen] = useState(false);
67828
+ const sentence = `${entry.actor.name} ${entry.action}${entry.subject ? ` ${entry.subject.label}` : ''}`;
67829
+ const tone = (status) => statusColors[status] ?? 'secondary';
67830
+ return (jsxs("div", { className: cn(ACTIVITY_ROW_GRID, 'border-b border-border px-5 py-3.5 last:border-b-0', open && 'bg-muted/30'), children: [jsx("time", { dateTime: entry.createdAt, className: "pt-1.5 font-mono text-xs text-muted-foreground", children: formatActivityTime(entry.createdAt) }), jsx(CategoryIcon, { entry: entry, showRail: showRail }), jsxs("div", { className: "flex min-w-0 flex-col gap-1.5", children: [jsxs("p", { className: "pt-1 text-sm leading-5 text-foreground", children: [jsx("span", { className: "font-semibold", children: entry.actor.name }), ' ', entry.action, entry.subject && (jsxs(Fragment$2, { children: [' ', jsx("button", { type: "button", onClick: entry.subject.onClick, className: "font-medium text-primary underline-offset-4 hover:underline focus-visible:ring-2 focus-visible:ring-ring focus-visible:outline-none", children: entry.subject.label })] }))] }), (entry.statusFrom || entry.statusTo) && (jsxs("div", { className: "flex flex-wrap items-center gap-1.5", children: [entry.statusFrom && (jsx(StatusChip, { status: entry.statusFrom, tone: tone(entry.statusFrom) })), entry.statusFrom && entry.statusTo && (jsx(ArrowRight, { className: "size-3.5 shrink-0 text-muted-foreground", "aria-hidden": "true" })), entry.statusTo && (jsx(StatusChip, { status: entry.statusTo, tone: tone(entry.statusTo) }))] })), entry.detail && (jsx("p", { className: "text-xs text-muted-foreground", children: entry.detail })), open && jsx(ActivityDetail, { entry: entry })] }), jsx("button", { type: "button", onClick: () => setOpen((value) => !value), "aria-expanded": open, "aria-label": open
67831
+ ? ACTIVITY_FEED_ARIA.collapseRow(sentence)
67832
+ : ACTIVITY_FEED_ARIA.expandRow(sentence), className: cn('flex size-8 items-center justify-center self-start rounded-md text-muted-foreground transition-colors hover:bg-muted hover:text-foreground focus-visible:ring-2 focus-visible:ring-ring focus-visible:outline-none', open && 'bg-muted text-foreground'), children: jsx(ChevronDown, { className: cn('size-4 transition-transform', open && 'rotate-180'), "aria-hidden": "true" }) })] }));
67833
+ }
67834
+ /**
67835
+ * A run of automated entries folded into one line. Scheduled reminders are the
67836
+ * bulk of a busy day and rarely the thing a reader came for.
67837
+ */
67838
+ function ActivityAutomatedGroupRow({ entries, statusColors, }) {
67839
+ const [open, setOpen] = useState(false);
67840
+ const count = entries.length;
67841
+ const preview = entries
67842
+ .map((entry) => entry.detail || entry.action)
67843
+ .slice(0, 2)
67844
+ .join(' · ');
67845
+ return (jsxs("div", { className: "border-b border-border last:border-b-0", children: [jsxs("div", { className: cn(ACTIVITY_ROW_GRID, 'items-start px-5 py-3.5'), children: [jsx("time", { dateTime: entries[0].createdAt, className: "pt-1.5 font-mono text-xs text-muted-foreground", children: formatActivityTime(entries[0].createdAt) }), jsx(CategoryIcon, { entry: entries[0], showRail: false }), jsxs("div", { className: "flex min-w-0 flex-col gap-1", children: [jsxs("p", { className: "pt-1 text-sm leading-5 text-foreground", children: [jsx("span", { className: "font-semibold", children: "System" }), " sent ", count, " automatic", ' ', count === 1 ? 'entry' : 'entries'] }), preview && (jsx("p", { className: "truncate text-xs text-muted-foreground", children: preview }))] }), jsx(Button$1, { variant: "outline", size: "sm", onClick: () => setOpen((value) => !value), "aria-expanded": open, "aria-label": open
67846
+ ? ACTIVITY_FEED_ARIA.collapseAutomatedGroup(count)
67847
+ : ACTIVITY_FEED_ARIA.expandAutomatedGroup(count), className: "h-8 justify-self-end px-2 text-xs font-medium", children: open ? 'Hide' : `Show ${count}` })] }), open && (jsx("div", { className: "border-t border-border bg-muted/20", children: entries.map((entry, index) => (jsx(ActivityRow, { entry: entry, showRail: index < entries.length - 1, statusColors: statusColors }, entry.id))) }))] }));
67848
+ }
67849
+
67850
+ function FeedSkeleton() {
67851
+ return (jsx("div", { className: "flex flex-col gap-2 p-4", "aria-hidden": "true", children: Array.from({ length: 6 }).map((_, index) => (jsx(SquareSkeleton, { height: 56, className: "w-full", rounded: "md" }, index))) }));
67852
+ }
67853
+ /**
67854
+ * Day-grouped activity feed: a time gutter, a category icon on a connecting
67855
+ * rail, a one-sentence description, and per-row details on demand.
67856
+ *
67857
+ * Presentational by design — it fetches nothing and knows no domain vocabulary.
67858
+ * The host maps its records to `ActivityEntry` and owns paging via `onLoadMore`.
67859
+ */
67860
+ function ActivityFeed({ entries, isLoading = false, hasMore = false, isLoadingMore = false, onLoadMore, groupAutomated = true, fill = false, statusColors = {}, emptyMessage = 'No activity recorded yet.', className, }) {
67861
+ const groups = useMemo(() => groupActivityByDay(entries, groupAutomated), [entries, groupAutomated]);
67862
+ return (jsxs("div", { className: cn('flex flex-col gap-4', fill && 'flex-1', className), children: [jsx("section", { "aria-label": ACTIVITY_FEED_ARIA.feedLabel, className: cn('overflow-hidden rounded-xl border border-border bg-card', fill && 'flex-1'), children: isLoading ? (jsx(FeedSkeleton, {})) : groups.length === 0 ? (jsxs("div", { className: "flex flex-col items-center gap-2 py-16", children: [jsx(History, { className: "size-8 text-muted-foreground/40", "aria-hidden": "true" }), jsx("p", { className: "text-sm text-muted-foreground", children: emptyMessage })] })) : (groups.map((group) => (jsxs("div", { children: [jsx(ActivityDayHeader, { group: group }), group.rows.map((row, index) => row.kind === 'entry' ? (jsx(ActivityRow, { entry: row.entry,
67863
+ // The rail links a row to the next one, so the last in a day stops.
67864
+ showRail: index < group.rows.length - 1, statusColors: statusColors }, row.entry.id)) : (jsx(ActivityAutomatedGroupRow, { entries: row.entries, statusColors: statusColors }, row.id)))] }, group.key)))) }), !isLoading && groups.length > 0 && (jsx("div", { className: "flex justify-center", children: hasMore && onLoadMore ? (jsx(Button$1, { variant: "outline", onClick: onLoadMore, disabled: isLoadingMore, children: isLoadingMore ? 'Loading…' : 'Load earlier activity' })) : (jsx("p", { className: "text-xs text-muted-foreground", children: "You've reached the end of the activity log." })) }))] }));
67865
+ }
67866
+
67202
67867
  /** 1px border on the track, and the gap between thumb and track. */
67203
67868
  const TRACK_BORDER = 1;
67204
67869
  const THUMB_INSET = 2;
@@ -76949,5 +77614,5 @@ var RichTextAreaImpl = /*#__PURE__*/Object.freeze({
76949
77614
  RichTextarea: RichTextarea
76950
77615
  });
76951
77616
 
76952
- export { ActionBadge, ActionButtonWithTooltip, AdvancedSearchDrawer, Alert, ApiComboBox, AppSidebar, AuditEntryCard, AuditHistoryPanel, AuditTimeline, AuditTimelineShimmer, Badge, BadgeType, BusinessContactStatusFilter, Button, CUSTOMER_AUDIT_CONFIG, CertificateRowList, ChangePill, Collapsible, CollapsibleCard, CollapsibleContent, CollapsibleTrigger, ConfirmDialog, ContactTypeFilter, CopyButton, CountrySelect, CreateFormPageHeader, CreateFormPageShell, CurrencyDisplayTabs, CurrencyInput, CurrencyToggle, CustomCombobox, CustomTable, CustomizeColumnsDrawer, DIAMOND_AUDIT_CONFIG, DashboardShell, DataEditableTable, DataTable, DateInput, DetailChip, DetailPageLayout, DetailPageSkeleton, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EntityHeader, Field, FieldSkeleton, FileUploader, FilterMultiSelect, FilterSelect, FormSectionCard, FormSectionCardSkeleton, GEM_AUDIT_CONFIG, HistoryEntryCard, HistoryTimeline, HistoryTimelineShimmer, INVOICE_AUDIT_CONFIG, IconButton, IdHyperlinkText, InAppNotificationCard, InAppNotificationsPanel, InfoBanner, InventoryComboBox, InventoryItemCard, InventoryItemRow, InvoiceComboBox, KYCStatusFilter, KeyValueGrid, LAYOUT_AUDIT_CONFIG, LabeledToggle, MEMO_IN_AUDIT_CONFIG, MEMO_OUT_AUDIT_CONFIG, MediaGallery, MemoInComboBox, MetricCard, MetricRow, MetricTile, Modal, MoreInfoPanel, MoreInfoTrigger, Navbar, NavbarActions, NavbarAvatar, NavbarIconButton, NavbarSearch, NavbarTitle, NumberInput, NumberedStepCard, OtpInput, OwnershipFilter, OwnershipSplitCard, PROFORMA_AUDIT_CONFIG, PageHeader, PageTabs, Pagination, PaginationSelect, PartnerShareCard, PriceInput, Protected, PurchaseOrderComboBox, QUOTATION_AUDIT_CONFIG, RadioCardGroup, ReadMoreText, RefreshButton, RichTextarea$1 as RichTextarea, SEARCHABLE_SELECT_PAGE_SIZE, SafeImage, SearchBox, SearchInput, SearchableSelect, SectionCard, SectionIcon, SegmentedControl, ShareDialog, ShareMenu, ShimmerTable, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupLabel, SidebarHeader, SidebarInset, SidebarMenu, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, SlideOut, SlideOutClose, SlideOutContent, SlideOutDescription, SlideOutHeader, SlideOutOverlay, SlideOutPortal, SlideOutTitle, SlideOutTrigger, Slider, SpecList, Spinner, SquareSkeleton, StateSelect, StatusBadge$1 as StatusBadge, StatusFilter, Stepper, StockTypeFilter, TablePagination, TableSkeleton, Tabs, TabsContent, TabsList, TabsTrigger, TagsInput, TextHyperlink, TimePicker, ToggleSwitch, TruncateTooltip, WarehouseComboBox, WarehouseFilter, ZoomSplitViewer, badgeVariants, buildBulkShareTitle, buildInventoryPublicUrl, buildInventoryRowProps, buildInventoryShareTitle, buildWhatsappUrl, buttonVariants, cn, countries, countryByCode, createVideoMediaItem, dropdownMenuItemDestructiveClass, findRegion, flagEmoji, formatAddressLocation, formatFileSize, generateActionDescription, generateTitle, getBadgeTypeForStatus, getChangePills, getCountryName, getInitials, getStatesOfCountry, iconButtonVariants, inAppNotificationCardA11y, inAppNotificationsPanelA11y, isIndiaCountry, isKnownRegion, isPathActive, isValidAlpha2CountryCode, notify, releaseStaleOverlayBodyLock, renderBadge, resolveCountryCode, toAddressFormValues, useAuditShowMore, useBadge, useButton, useDropdownMenu, useInAppNotificationsPanel, useNavbar, useSidebar, videoThumbnailSrc, watchOverlayBodyLock };
77617
+ export { ACTIVITY_CATEGORIES, ACTIVITY_CATEGORY_META, ActionBadge, ActionButtonWithTooltip, ActivityFeed, AdvancedSearchDrawer, Alert, ApiComboBox, AppSidebar, AuditEntryCard, AuditHistoryPanel, AuditTimeline, AuditTimelineShimmer, Badge, BadgeType, BusinessContactStatusFilter, Button, CUSTOMER_AUDIT_CONFIG, CertificateRowList, ChangePill, Collapsible, CollapsibleCard, CollapsibleContent, CollapsibleTrigger, ConfirmDialog, ContactTypeFilter, CopyButton, CountrySelect, CreateFormPageHeader, CreateFormPageShell, CurrencyDisplayTabs, CurrencyInput, CurrencyToggle, CustomCombobox, CustomFieldInput, CustomFieldValue, CustomTable, CustomizeColumnsDrawer, DIAMOND_AUDIT_CONFIG, DashboardShell, DataEditableTable, DataTable, DateInput, DetailChip, DetailPageLayout, DetailPageSkeleton, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyValue, EntityHeader, Field, FieldSkeleton, FileUploader, FilterMultiSelect, FilterSelect, FormSectionCard, FormSectionCardSkeleton, GEM_AUDIT_CONFIG, HistoryEntryCard, HistoryTimeline, HistoryTimelineShimmer, INVOICE_AUDIT_CONFIG, IconButton, IdHyperlinkText, InAppNotificationCard, InAppNotificationsPanel, InfoBanner, InventoryComboBox, InventoryItemCard, InventoryItemRow, InvoiceComboBox, KYCStatusFilter, KeyValueGrid, LAYOUT_AUDIT_CONFIG, LabeledToggle, MEMO_IN_AUDIT_CONFIG, MEMO_OUT_AUDIT_CONFIG, MediaGallery, MemoInComboBox, MetricCard, MetricRow, MetricTile, Modal, MoreInfoPanel, MoreInfoTrigger, NOT_CAPTURED, Navbar, NavbarActions, NavbarAvatar, NavbarIconButton, NavbarSearch, NavbarTitle, NumberInput, NumberedStepCard, OtpInput, OwnershipFilter, OwnershipSplitCard, PROFORMA_AUDIT_CONFIG, PageHeader, PageTabs, Pagination, PaginationSelect, PartnerShareCard, PriceInput, Protected, PurchaseOrderComboBox, QUOTATION_AUDIT_CONFIG, RadioCardGroup, ReadMoreText, RefreshButton, RichTextarea$1 as RichTextarea, SEARCHABLE_SELECT_PAGE_SIZE, SafeImage, SearchBox, SearchInput, SearchableSelect, SectionCard, SectionIcon, SegmentedControl, ShareDialog, ShareMenu, ShimmerTable, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupLabel, SidebarHeader, SidebarInset, SidebarMenu, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, SlideOut, SlideOutClose, SlideOutContent, SlideOutDescription, SlideOutHeader, SlideOutOverlay, SlideOutPortal, SlideOutTitle, SlideOutTrigger, Slider, SpecList, Spinner, SquareSkeleton, StateSelect, StatusBadge$1 as StatusBadge, StatusFilter, Stepper, StockTypeFilter, TablePagination, TableSkeleton, Tabs, TabsContent, TabsList, TabsTrigger, TagsInput, TextHyperlink, TimePicker, ToggleSwitch, TruncateTooltip, WarehouseComboBox, WarehouseFilter, ZoomSplitViewer, asList, asText, badgeVariants, buildBulkShareTitle, buildInventoryPublicUrl, buildInventoryRowProps, buildInventoryShareTitle, buildWhatsappUrl, buttonVariants, cn, countries, countryByCode, createVideoMediaItem, dropdownMenuItemDestructiveClass, fieldTypeIcon, findRegion, flagEmoji, formatAddressLocation, formatFileSize, generateActionDescription, generateTitle, getBadgeTypeForStatus, getChangePills, getCountryName, getInitials, getStatesOfCountry, iconButtonVariants, inAppNotificationCardA11y, inAppNotificationsPanelA11y, isBlank, isIndiaCountry, isKnownRegion, isPathActive, isValidAlpha2CountryCode, isValueEmpty, notify, releaseStaleOverlayBodyLock, renderBadge, resolveCountryCode, toAddressFormValues, useAuditShowMore, useBadge, useButton, useDropdownMenu, useInAppNotificationsPanel, useNavbar, useSidebar, videoThumbnailSrc, watchOverlayBodyLock };
76953
77618
  //# sourceMappingURL=index.esm.js.map