@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.cjs.js CHANGED
@@ -2698,12 +2698,27 @@ const createLucideIcon = (iconName, iconNode) => {
2698
2698
  */
2699
2699
 
2700
2700
 
2701
- const __iconNode$18 = [
2701
+ const __iconNode$1o = [
2702
+ ["path", { d: "M15 12H3", key: "6jk70r" }],
2703
+ ["path", { d: "M17 18H3", key: "1amg6g" }],
2704
+ ["path", { d: "M21 6H3", key: "1jwq7v" }]
2705
+ ];
2706
+ const AlignLeft = createLucideIcon("align-left", __iconNode$1o);
2707
+
2708
+ /**
2709
+ * @license lucide-react v0.539.0 - ISC
2710
+ *
2711
+ * This source code is licensed under the ISC license.
2712
+ * See the LICENSE file in the root directory of this source tree.
2713
+ */
2714
+
2715
+
2716
+ const __iconNode$1n = [
2702
2717
  ["rect", { width: "20", height: "5", x: "2", y: "3", rx: "1", key: "1wp1u1" }],
2703
2718
  ["path", { d: "M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8", key: "1s80jp" }],
2704
2719
  ["path", { d: "M10 12h4", key: "a56b0p" }]
2705
2720
  ];
2706
- const Archive = createLucideIcon("archive", __iconNode$18);
2721
+ const Archive = createLucideIcon("archive", __iconNode$1n);
2707
2722
 
2708
2723
  /**
2709
2724
  * @license lucide-react v0.539.0 - ISC
@@ -2713,11 +2728,11 @@ const Archive = createLucideIcon("archive", __iconNode$18);
2713
2728
  */
2714
2729
 
2715
2730
 
2716
- const __iconNode$17 = [
2731
+ const __iconNode$1m = [
2717
2732
  ["path", { d: "m12 19-7-7 7-7", key: "1l729n" }],
2718
2733
  ["path", { d: "M19 12H5", key: "x3x0zl" }]
2719
2734
  ];
2720
- const ArrowLeft = createLucideIcon("arrow-left", __iconNode$17);
2735
+ const ArrowLeft = createLucideIcon("arrow-left", __iconNode$1m);
2721
2736
 
2722
2737
  /**
2723
2738
  * @license lucide-react v0.539.0 - ISC
@@ -2727,11 +2742,11 @@ const ArrowLeft = createLucideIcon("arrow-left", __iconNode$17);
2727
2742
  */
2728
2743
 
2729
2744
 
2730
- const __iconNode$16 = [
2745
+ const __iconNode$1l = [
2731
2746
  ["path", { d: "M5 12h14", key: "1ays0h" }],
2732
2747
  ["path", { d: "m12 5 7 7-7 7", key: "xquz4c" }]
2733
2748
  ];
2734
- const ArrowRight = createLucideIcon("arrow-right", __iconNode$16);
2749
+ const ArrowRight = createLucideIcon("arrow-right", __iconNode$1l);
2735
2750
 
2736
2751
  /**
2737
2752
  * @license lucide-react v0.539.0 - ISC
@@ -2741,11 +2756,11 @@ const ArrowRight = createLucideIcon("arrow-right", __iconNode$16);
2741
2756
  */
2742
2757
 
2743
2758
 
2744
- const __iconNode$15 = [
2759
+ const __iconNode$1k = [
2745
2760
  ["path", { d: "M4.929 4.929 19.07 19.071", key: "196cmz" }],
2746
2761
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }]
2747
2762
  ];
2748
- const Ban = createLucideIcon("ban", __iconNode$15);
2763
+ const Ban = createLucideIcon("ban", __iconNode$1k);
2749
2764
 
2750
2765
  /**
2751
2766
  * @license lucide-react v0.539.0 - ISC
@@ -2755,7 +2770,7 @@ const Ban = createLucideIcon("ban", __iconNode$15);
2755
2770
  */
2756
2771
 
2757
2772
 
2758
- const __iconNode$14 = [
2773
+ const __iconNode$1j = [
2759
2774
  ["path", { d: "M10.268 21a2 2 0 0 0 3.464 0", key: "vwvbt9" }],
2760
2775
  [
2761
2776
  "path",
@@ -2766,7 +2781,7 @@ const __iconNode$14 = [
2766
2781
  ],
2767
2782
  ["circle", { cx: "18", cy: "8", r: "3", key: "1g0gzu" }]
2768
2783
  ];
2769
- const BellDot = createLucideIcon("bell-dot", __iconNode$14);
2784
+ const BellDot = createLucideIcon("bell-dot", __iconNode$1j);
2770
2785
 
2771
2786
  /**
2772
2787
  * @license lucide-react v0.539.0 - ISC
@@ -2776,7 +2791,29 @@ const BellDot = createLucideIcon("bell-dot", __iconNode$14);
2776
2791
  */
2777
2792
 
2778
2793
 
2779
- const __iconNode$13 = [
2794
+ const __iconNode$1i = [
2795
+ ["path", { d: "M10.268 21a2 2 0 0 0 3.464 0", key: "vwvbt9" }],
2796
+ ["path", { d: "M22 8c0-2.3-.8-4.3-2-6", key: "5bb3ad" }],
2797
+ [
2798
+ "path",
2799
+ {
2800
+ 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",
2801
+ key: "11g9vi"
2802
+ }
2803
+ ],
2804
+ ["path", { d: "M4 2C2.8 3.7 2 5.7 2 8", key: "tap9e0" }]
2805
+ ];
2806
+ const BellRing = createLucideIcon("bell-ring", __iconNode$1i);
2807
+
2808
+ /**
2809
+ * @license lucide-react v0.539.0 - ISC
2810
+ *
2811
+ * This source code is licensed under the ISC license.
2812
+ * See the LICENSE file in the root directory of this source tree.
2813
+ */
2814
+
2815
+
2816
+ const __iconNode$1h = [
2780
2817
  ["path", { d: "M10.268 21a2 2 0 0 0 3.464 0", key: "vwvbt9" }],
2781
2818
  [
2782
2819
  "path",
@@ -2786,7 +2823,7 @@ const __iconNode$13 = [
2786
2823
  }
2787
2824
  ]
2788
2825
  ];
2789
- const Bell = createLucideIcon("bell", __iconNode$13);
2826
+ const Bell = createLucideIcon("bell", __iconNode$1h);
2790
2827
 
2791
2828
  /**
2792
2829
  * @license lucide-react v0.539.0 - ISC
@@ -2796,13 +2833,13 @@ const Bell = createLucideIcon("bell", __iconNode$13);
2796
2833
  */
2797
2834
 
2798
2835
 
2799
- const __iconNode$12 = [
2836
+ const __iconNode$1g = [
2800
2837
  [
2801
2838
  "path",
2802
2839
  { 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" }
2803
2840
  ]
2804
2841
  ];
2805
- const Bold$1 = createLucideIcon("bold", __iconNode$12);
2842
+ const Bold$1 = createLucideIcon("bold", __iconNode$1g);
2806
2843
 
2807
2844
  /**
2808
2845
  * @license lucide-react v0.539.0 - ISC
@@ -2812,7 +2849,7 @@ const Bold$1 = createLucideIcon("bold", __iconNode$12);
2812
2849
  */
2813
2850
 
2814
2851
 
2815
- const __iconNode$11 = [
2852
+ const __iconNode$1f = [
2816
2853
  ["path", { d: "M8 2v4", key: "1cmpym" }],
2817
2854
  ["path", { d: "M16 2v4", key: "4m81vk" }],
2818
2855
  ["rect", { width: "18", height: "18", x: "3", y: "4", rx: "2", key: "1hopcy" }],
@@ -2824,7 +2861,7 @@ const __iconNode$11 = [
2824
2861
  ["path", { d: "M12 18h.01", key: "mhygvu" }],
2825
2862
  ["path", { d: "M16 18h.01", key: "kzsmim" }]
2826
2863
  ];
2827
- const CalendarDays = createLucideIcon("calendar-days", __iconNode$11);
2864
+ const CalendarDays = createLucideIcon("calendar-days", __iconNode$1f);
2828
2865
 
2829
2866
  /**
2830
2867
  * @license lucide-react v0.539.0 - ISC
@@ -2834,13 +2871,13 @@ const CalendarDays = createLucideIcon("calendar-days", __iconNode$11);
2834
2871
  */
2835
2872
 
2836
2873
 
2837
- const __iconNode$10 = [
2874
+ const __iconNode$1e = [
2838
2875
  ["path", { d: "M8 2v4", key: "1cmpym" }],
2839
2876
  ["path", { d: "M16 2v4", key: "4m81vk" }],
2840
2877
  ["rect", { width: "18", height: "18", x: "3", y: "4", rx: "2", key: "1hopcy" }],
2841
2878
  ["path", { d: "M3 10h18", key: "8toen8" }]
2842
2879
  ];
2843
- const Calendar$1 = createLucideIcon("calendar", __iconNode$10);
2880
+ const Calendar$1 = createLucideIcon("calendar", __iconNode$1e);
2844
2881
 
2845
2882
  /**
2846
2883
  * @license lucide-react v0.539.0 - ISC
@@ -2850,11 +2887,11 @@ const Calendar$1 = createLucideIcon("calendar", __iconNode$10);
2850
2887
  */
2851
2888
 
2852
2889
 
2853
- const __iconNode$$ = [
2890
+ const __iconNode$1d = [
2854
2891
  ["path", { d: "M18 6 7 17l-5-5", key: "116fxf" }],
2855
2892
  ["path", { d: "m22 10-7.5 7.5L13 16", key: "ke71qq" }]
2856
2893
  ];
2857
- const CheckCheck = createLucideIcon("check-check", __iconNode$$);
2894
+ const CheckCheck = createLucideIcon("check-check", __iconNode$1d);
2858
2895
 
2859
2896
  /**
2860
2897
  * @license lucide-react v0.539.0 - ISC
@@ -2864,8 +2901,8 @@ const CheckCheck = createLucideIcon("check-check", __iconNode$$);
2864
2901
  */
2865
2902
 
2866
2903
 
2867
- const __iconNode$_ = [["path", { d: "M20 6 9 17l-5-5", key: "1gmf2c" }]];
2868
- const Check = createLucideIcon("check", __iconNode$_);
2904
+ const __iconNode$1c = [["path", { d: "M20 6 9 17l-5-5", key: "1gmf2c" }]];
2905
+ const Check = createLucideIcon("check", __iconNode$1c);
2869
2906
 
2870
2907
  /**
2871
2908
  * @license lucide-react v0.539.0 - ISC
@@ -2875,8 +2912,8 @@ const Check = createLucideIcon("check", __iconNode$_);
2875
2912
  */
2876
2913
 
2877
2914
 
2878
- const __iconNode$Z = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]];
2879
- const ChevronDown = createLucideIcon("chevron-down", __iconNode$Z);
2915
+ const __iconNode$1b = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]];
2916
+ const ChevronDown = createLucideIcon("chevron-down", __iconNode$1b);
2880
2917
 
2881
2918
  /**
2882
2919
  * @license lucide-react v0.539.0 - ISC
@@ -2886,8 +2923,8 @@ const ChevronDown = createLucideIcon("chevron-down", __iconNode$Z);
2886
2923
  */
2887
2924
 
2888
2925
 
2889
- const __iconNode$Y = [["path", { d: "m15 18-6-6 6-6", key: "1wnfg3" }]];
2890
- const ChevronLeft = createLucideIcon("chevron-left", __iconNode$Y);
2926
+ const __iconNode$1a = [["path", { d: "m15 18-6-6 6-6", key: "1wnfg3" }]];
2927
+ const ChevronLeft = createLucideIcon("chevron-left", __iconNode$1a);
2891
2928
 
2892
2929
  /**
2893
2930
  * @license lucide-react v0.539.0 - ISC
@@ -2897,8 +2934,8 @@ const ChevronLeft = createLucideIcon("chevron-left", __iconNode$Y);
2897
2934
  */
2898
2935
 
2899
2936
 
2900
- const __iconNode$X = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]];
2901
- const ChevronRight = createLucideIcon("chevron-right", __iconNode$X);
2937
+ const __iconNode$19 = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]];
2938
+ const ChevronRight = createLucideIcon("chevron-right", __iconNode$19);
2902
2939
 
2903
2940
  /**
2904
2941
  * @license lucide-react v0.539.0 - ISC
@@ -2908,8 +2945,8 @@ const ChevronRight = createLucideIcon("chevron-right", __iconNode$X);
2908
2945
  */
2909
2946
 
2910
2947
 
2911
- const __iconNode$W = [["path", { d: "m18 15-6-6-6 6", key: "153udz" }]];
2912
- const ChevronUp = createLucideIcon("chevron-up", __iconNode$W);
2948
+ const __iconNode$18 = [["path", { d: "m18 15-6-6-6 6", key: "153udz" }]];
2949
+ const ChevronUp = createLucideIcon("chevron-up", __iconNode$18);
2913
2950
 
2914
2951
  /**
2915
2952
  * @license lucide-react v0.539.0 - ISC
@@ -2919,11 +2956,11 @@ const ChevronUp = createLucideIcon("chevron-up", __iconNode$W);
2919
2956
  */
2920
2957
 
2921
2958
 
2922
- const __iconNode$V = [
2959
+ const __iconNode$17 = [
2923
2960
  ["path", { d: "m11 17-5-5 5-5", key: "13zhaf" }],
2924
2961
  ["path", { d: "m18 17-5-5 5-5", key: "h8a8et" }]
2925
2962
  ];
2926
- const ChevronsLeft = createLucideIcon("chevrons-left", __iconNode$V);
2963
+ const ChevronsLeft = createLucideIcon("chevrons-left", __iconNode$17);
2927
2964
 
2928
2965
  /**
2929
2966
  * @license lucide-react v0.539.0 - ISC
@@ -2933,11 +2970,11 @@ const ChevronsLeft = createLucideIcon("chevrons-left", __iconNode$V);
2933
2970
  */
2934
2971
 
2935
2972
 
2936
- const __iconNode$U = [
2973
+ const __iconNode$16 = [
2937
2974
  ["path", { d: "m6 17 5-5-5-5", key: "xnjwq" }],
2938
2975
  ["path", { d: "m13 17 5-5-5-5", key: "17xmmf" }]
2939
2976
  ];
2940
- const ChevronsRight = createLucideIcon("chevrons-right", __iconNode$U);
2977
+ const ChevronsRight = createLucideIcon("chevrons-right", __iconNode$16);
2941
2978
 
2942
2979
  /**
2943
2980
  * @license lucide-react v0.539.0 - ISC
@@ -2947,12 +2984,12 @@ const ChevronsRight = createLucideIcon("chevrons-right", __iconNode$U);
2947
2984
  */
2948
2985
 
2949
2986
 
2950
- const __iconNode$T = [
2987
+ const __iconNode$15 = [
2951
2988
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
2952
2989
  ["line", { x1: "12", x2: "12", y1: "8", y2: "12", key: "1pkeuh" }],
2953
2990
  ["line", { x1: "12", x2: "12.01", y1: "16", y2: "16", key: "4dfq90" }]
2954
2991
  ];
2955
- const CircleAlert = createLucideIcon("circle-alert", __iconNode$T);
2992
+ const CircleAlert = createLucideIcon("circle-alert", __iconNode$15);
2956
2993
 
2957
2994
  /**
2958
2995
  * @license lucide-react v0.539.0 - ISC
@@ -2962,11 +2999,11 @@ const CircleAlert = createLucideIcon("circle-alert", __iconNode$T);
2962
2999
  */
2963
3000
 
2964
3001
 
2965
- const __iconNode$S = [
3002
+ const __iconNode$14 = [
2966
3003
  ["path", { d: "M21.801 10A10 10 0 1 1 17 3.335", key: "yps3ct" }],
2967
3004
  ["path", { d: "m9 11 3 3L22 4", key: "1pflzl" }]
2968
3005
  ];
2969
- const CircleCheckBig = createLucideIcon("circle-check-big", __iconNode$S);
3006
+ const CircleCheckBig = createLucideIcon("circle-check-big", __iconNode$14);
2970
3007
 
2971
3008
  /**
2972
3009
  * @license lucide-react v0.539.0 - ISC
@@ -2976,11 +3013,11 @@ const CircleCheckBig = createLucideIcon("circle-check-big", __iconNode$S);
2976
3013
  */
2977
3014
 
2978
3015
 
2979
- const __iconNode$R = [
3016
+ const __iconNode$13 = [
2980
3017
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
2981
3018
  ["path", { d: "m9 12 2 2 4-4", key: "dzmm74" }]
2982
3019
  ];
2983
- const CircleCheck = createLucideIcon("circle-check", __iconNode$R);
3020
+ const CircleCheck = createLucideIcon("circle-check", __iconNode$13);
2984
3021
 
2985
3022
  /**
2986
3023
  * @license lucide-react v0.539.0 - ISC
@@ -2990,12 +3027,40 @@ const CircleCheck = createLucideIcon("circle-check", __iconNode$R);
2990
3027
  */
2991
3028
 
2992
3029
 
2993
- const __iconNode$Q = [
3030
+ const __iconNode$12 = [
3031
+ ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
3032
+ ["path", { d: "m16 10-4 4-4-4", key: "894hmk" }]
3033
+ ];
3034
+ const CircleChevronDown = createLucideIcon("circle-chevron-down", __iconNode$12);
3035
+
3036
+ /**
3037
+ * @license lucide-react v0.539.0 - ISC
3038
+ *
3039
+ * This source code is licensed under the ISC license.
3040
+ * See the LICENSE file in the root directory of this source tree.
3041
+ */
3042
+
3043
+
3044
+ const __iconNode$11 = [
3045
+ ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
3046
+ ["circle", { cx: "12", cy: "12", r: "1", key: "41hilf" }]
3047
+ ];
3048
+ const CircleDot = createLucideIcon("circle-dot", __iconNode$11);
3049
+
3050
+ /**
3051
+ * @license lucide-react v0.539.0 - ISC
3052
+ *
3053
+ * This source code is licensed under the ISC license.
3054
+ * See the LICENSE file in the root directory of this source tree.
3055
+ */
3056
+
3057
+
3058
+ const __iconNode$10 = [
2994
3059
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
2995
3060
  ["path", { d: "m15 9-6 6", key: "1uzhvr" }],
2996
3061
  ["path", { d: "m9 9 6 6", key: "z0biqf" }]
2997
3062
  ];
2998
- const CircleX = createLucideIcon("circle-x", __iconNode$Q);
3063
+ const CircleX = createLucideIcon("circle-x", __iconNode$10);
2999
3064
 
3000
3065
  /**
3001
3066
  * @license lucide-react v0.539.0 - ISC
@@ -3005,8 +3070,8 @@ const CircleX = createLucideIcon("circle-x", __iconNode$Q);
3005
3070
  */
3006
3071
 
3007
3072
 
3008
- const __iconNode$P = [["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }]];
3009
- const Circle = createLucideIcon("circle", __iconNode$P);
3073
+ const __iconNode$$ = [["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }]];
3074
+ const Circle = createLucideIcon("circle", __iconNode$$);
3010
3075
 
3011
3076
  /**
3012
3077
  * @license lucide-react v0.539.0 - ISC
@@ -3016,11 +3081,11 @@ const Circle = createLucideIcon("circle", __iconNode$P);
3016
3081
  */
3017
3082
 
3018
3083
 
3019
- const __iconNode$O = [
3084
+ const __iconNode$_ = [
3020
3085
  ["path", { d: "M12 6v6l4 2", key: "mmk7yg" }],
3021
3086
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }]
3022
3087
  ];
3023
- const Clock = createLucideIcon("clock", __iconNode$O);
3088
+ const Clock = createLucideIcon("clock", __iconNode$_);
3024
3089
 
3025
3090
  /**
3026
3091
  * @license lucide-react v0.539.0 - ISC
@@ -3030,11 +3095,11 @@ const Clock = createLucideIcon("clock", __iconNode$O);
3030
3095
  */
3031
3096
 
3032
3097
 
3033
- const __iconNode$N = [
3098
+ const __iconNode$Z = [
3034
3099
  ["rect", { width: "14", height: "14", x: "8", y: "8", rx: "2", ry: "2", key: "17jyea" }],
3035
3100
  ["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" }]
3036
3101
  ];
3037
- const Copy = createLucideIcon("copy", __iconNode$N);
3102
+ const Copy = createLucideIcon("copy", __iconNode$Z);
3038
3103
 
3039
3104
  /**
3040
3105
  * @license lucide-react v0.539.0 - ISC
@@ -3044,11 +3109,11 @@ const Copy = createLucideIcon("copy", __iconNode$N);
3044
3109
  */
3045
3110
 
3046
3111
 
3047
- const __iconNode$M = [
3112
+ const __iconNode$Y = [
3048
3113
  ["path", { d: "M6 2v14a2 2 0 0 0 2 2h14", key: "ron5a4" }],
3049
3114
  ["path", { d: "M18 22V8a2 2 0 0 0-2-2H2", key: "7s9ehn" }]
3050
3115
  ];
3051
- const Crop = createLucideIcon("crop", __iconNode$M);
3116
+ const Crop = createLucideIcon("crop", __iconNode$Y);
3052
3117
 
3053
3118
  /**
3054
3119
  * @license lucide-react v0.539.0 - ISC
@@ -3058,12 +3123,12 @@ const Crop = createLucideIcon("crop", __iconNode$M);
3058
3123
  */
3059
3124
 
3060
3125
 
3061
- const __iconNode$L = [
3126
+ const __iconNode$X = [
3062
3127
  ["path", { d: "M12 15V3", key: "m9g1x1" }],
3063
3128
  ["path", { d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4", key: "ih7n3h" }],
3064
3129
  ["path", { d: "m7 10 5 5 5-5", key: "brsn70" }]
3065
3130
  ];
3066
- const Download = createLucideIcon("download", __iconNode$L);
3131
+ const Download = createLucideIcon("download", __iconNode$X);
3067
3132
 
3068
3133
  /**
3069
3134
  * @license lucide-react v0.539.0 - ISC
@@ -3073,12 +3138,12 @@ const Download = createLucideIcon("download", __iconNode$L);
3073
3138
  */
3074
3139
 
3075
3140
 
3076
- const __iconNode$K = [
3141
+ const __iconNode$W = [
3077
3142
  ["circle", { cx: "12", cy: "12", r: "1", key: "41hilf" }],
3078
3143
  ["circle", { cx: "12", cy: "5", r: "1", key: "gxeob9" }],
3079
3144
  ["circle", { cx: "12", cy: "19", r: "1", key: "lyex9k" }]
3080
3145
  ];
3081
- const EllipsisVertical = createLucideIcon("ellipsis-vertical", __iconNode$K);
3146
+ const EllipsisVertical = createLucideIcon("ellipsis-vertical", __iconNode$W);
3082
3147
 
3083
3148
  /**
3084
3149
  * @license lucide-react v0.539.0 - ISC
@@ -3088,12 +3153,12 @@ const EllipsisVertical = createLucideIcon("ellipsis-vertical", __iconNode$K);
3088
3153
  */
3089
3154
 
3090
3155
 
3091
- const __iconNode$J = [
3156
+ const __iconNode$V = [
3092
3157
  ["circle", { cx: "12", cy: "12", r: "1", key: "41hilf" }],
3093
3158
  ["circle", { cx: "19", cy: "12", r: "1", key: "1wjl8i" }],
3094
3159
  ["circle", { cx: "5", cy: "12", r: "1", key: "1pcz8c" }]
3095
3160
  ];
3096
- const Ellipsis = createLucideIcon("ellipsis", __iconNode$J);
3161
+ const Ellipsis = createLucideIcon("ellipsis", __iconNode$V);
3097
3162
 
3098
3163
  /**
3099
3164
  * @license lucide-react v0.539.0 - ISC
@@ -3103,12 +3168,12 @@ const Ellipsis = createLucideIcon("ellipsis", __iconNode$J);
3103
3168
  */
3104
3169
 
3105
3170
 
3106
- const __iconNode$I = [
3171
+ const __iconNode$U = [
3107
3172
  ["path", { d: "M15 3h6v6", key: "1q9fwt" }],
3108
3173
  ["path", { d: "M10 14 21 3", key: "gplh6r" }],
3109
3174
  ["path", { d: "M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6", key: "a6xqqp" }]
3110
3175
  ];
3111
- const ExternalLink = createLucideIcon("external-link", __iconNode$I);
3176
+ const ExternalLink = createLucideIcon("external-link", __iconNode$U);
3112
3177
 
3113
3178
  /**
3114
3179
  * @license lucide-react v0.539.0 - ISC
@@ -3118,7 +3183,7 @@ const ExternalLink = createLucideIcon("external-link", __iconNode$I);
3118
3183
  */
3119
3184
 
3120
3185
 
3121
- const __iconNode$H = [
3186
+ const __iconNode$T = [
3122
3187
  [
3123
3188
  "path",
3124
3189
  {
@@ -3128,7 +3193,7 @@ const __iconNode$H = [
3128
3193
  ],
3129
3194
  ["circle", { cx: "12", cy: "12", r: "3", key: "1v7zrd" }]
3130
3195
  ];
3131
- const Eye = createLucideIcon("eye", __iconNode$H);
3196
+ const Eye = createLucideIcon("eye", __iconNode$T);
3132
3197
 
3133
3198
  /**
3134
3199
  * @license lucide-react v0.539.0 - ISC
@@ -3138,13 +3203,13 @@ const Eye = createLucideIcon("eye", __iconNode$H);
3138
3203
  */
3139
3204
 
3140
3205
 
3141
- const __iconNode$G = [
3206
+ const __iconNode$S = [
3142
3207
  [
3143
3208
  "path",
3144
3209
  { d: "M18 2h-3a5 5 0 0 0-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 0 1 1-1h3z", key: "1jg4f8" }
3145
3210
  ]
3146
3211
  ];
3147
- const Facebook = createLucideIcon("facebook", __iconNode$G);
3212
+ const Facebook = createLucideIcon("facebook", __iconNode$S);
3148
3213
 
3149
3214
  /**
3150
3215
  * @license lucide-react v0.539.0 - ISC
@@ -3154,7 +3219,7 @@ const Facebook = createLucideIcon("facebook", __iconNode$G);
3154
3219
  */
3155
3220
 
3156
3221
 
3157
- const __iconNode$F = [
3222
+ const __iconNode$R = [
3158
3223
  ["path", { d: "M12 22h6a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v3.072", key: "n6s66f" }],
3159
3224
  ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }],
3160
3225
  [
@@ -3166,7 +3231,7 @@ const __iconNode$F = [
3166
3231
  ],
3167
3232
  ["circle", { cx: "5", cy: "14", r: "3", key: "ufru5t" }]
3168
3233
  ];
3169
- const FileBadge = createLucideIcon("file-badge", __iconNode$F);
3234
+ const FileBadge = createLucideIcon("file-badge", __iconNode$R);
3170
3235
 
3171
3236
  /**
3172
3237
  * @license lucide-react v0.539.0 - ISC
@@ -3176,14 +3241,29 @@ const FileBadge = createLucideIcon("file-badge", __iconNode$F);
3176
3241
  */
3177
3242
 
3178
3243
 
3179
- const __iconNode$E = [
3244
+ const __iconNode$Q = [
3245
+ ["path", { d: "M4 22h14a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v4", key: "1pf5j1" }],
3246
+ ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }],
3247
+ ["path", { d: "m3 15 2 2 4-4", key: "1lhrkk" }]
3248
+ ];
3249
+ const FileCheck2 = createLucideIcon("file-check-2", __iconNode$Q);
3250
+
3251
+ /**
3252
+ * @license lucide-react v0.539.0 - ISC
3253
+ *
3254
+ * This source code is licensed under the ISC license.
3255
+ * See the LICENSE file in the root directory of this source tree.
3256
+ */
3257
+
3258
+
3259
+ const __iconNode$P = [
3180
3260
  ["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }],
3181
3261
  ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }],
3182
3262
  ["path", { d: "M10 9H8", key: "b1mrlr" }],
3183
3263
  ["path", { d: "M16 13H8", key: "t4e002" }],
3184
3264
  ["path", { d: "M16 17H8", key: "z1uh3a" }]
3185
3265
  ];
3186
- const FileText = createLucideIcon("file-text", __iconNode$E);
3266
+ const FileText = createLucideIcon("file-text", __iconNode$P);
3187
3267
 
3188
3268
  /**
3189
3269
  * @license lucide-react v0.539.0 - ISC
@@ -3193,7 +3273,7 @@ const FileText = createLucideIcon("file-text", __iconNode$E);
3193
3273
  */
3194
3274
 
3195
3275
 
3196
- const __iconNode$D = [
3276
+ const __iconNode$O = [
3197
3277
  [
3198
3278
  "path",
3199
3279
  {
@@ -3202,7 +3282,7 @@ const __iconNode$D = [
3202
3282
  }
3203
3283
  ]
3204
3284
  ];
3205
- const Funnel = createLucideIcon("funnel", __iconNode$D);
3285
+ const Funnel = createLucideIcon("funnel", __iconNode$O);
3206
3286
 
3207
3287
  /**
3208
3288
  * @license lucide-react v0.539.0 - ISC
@@ -3212,7 +3292,7 @@ const Funnel = createLucideIcon("funnel", __iconNode$D);
3212
3292
  */
3213
3293
 
3214
3294
 
3215
- const __iconNode$C = [
3295
+ const __iconNode$N = [
3216
3296
  ["circle", { cx: "12", cy: "9", r: "1", key: "124mty" }],
3217
3297
  ["circle", { cx: "19", cy: "9", r: "1", key: "1ruzo2" }],
3218
3298
  ["circle", { cx: "5", cy: "9", r: "1", key: "1a8b28" }],
@@ -3220,7 +3300,7 @@ const __iconNode$C = [
3220
3300
  ["circle", { cx: "19", cy: "15", r: "1", key: "1a92ep" }],
3221
3301
  ["circle", { cx: "5", cy: "15", r: "1", key: "5r1jwy" }]
3222
3302
  ];
3223
- const GripHorizontal = createLucideIcon("grip-horizontal", __iconNode$C);
3303
+ const GripHorizontal = createLucideIcon("grip-horizontal", __iconNode$N);
3224
3304
 
3225
3305
  /**
3226
3306
  * @license lucide-react v0.539.0 - ISC
@@ -3230,7 +3310,7 @@ const GripHorizontal = createLucideIcon("grip-horizontal", __iconNode$C);
3230
3310
  */
3231
3311
 
3232
3312
 
3233
- const __iconNode$B = [
3313
+ const __iconNode$M = [
3234
3314
  ["circle", { cx: "9", cy: "12", r: "1", key: "1vctgf" }],
3235
3315
  ["circle", { cx: "9", cy: "5", r: "1", key: "hp0tcf" }],
3236
3316
  ["circle", { cx: "9", cy: "19", r: "1", key: "fkjjf6" }],
@@ -3238,7 +3318,7 @@ const __iconNode$B = [
3238
3318
  ["circle", { cx: "15", cy: "5", r: "1", key: "19l28e" }],
3239
3319
  ["circle", { cx: "15", cy: "19", r: "1", key: "f4zoj3" }]
3240
3320
  ];
3241
- const GripVertical = createLucideIcon("grip-vertical", __iconNode$B);
3321
+ const GripVertical = createLucideIcon("grip-vertical", __iconNode$M);
3242
3322
 
3243
3323
  /**
3244
3324
  * @license lucide-react v0.539.0 - ISC
@@ -3248,13 +3328,29 @@ const GripVertical = createLucideIcon("grip-vertical", __iconNode$B);
3248
3328
  */
3249
3329
 
3250
3330
 
3251
- const __iconNode$A = [
3331
+ const __iconNode$L = [
3332
+ ["line", { x1: "4", x2: "20", y1: "9", y2: "9", key: "4lhtct" }],
3333
+ ["line", { x1: "4", x2: "20", y1: "15", y2: "15", key: "vyu0kd" }],
3334
+ ["line", { x1: "10", x2: "8", y1: "3", y2: "21", key: "1ggp8o" }],
3335
+ ["line", { x1: "16", x2: "14", y1: "3", y2: "21", key: "weycgp" }]
3336
+ ];
3337
+ const Hash = createLucideIcon("hash", __iconNode$L);
3338
+
3339
+ /**
3340
+ * @license lucide-react v0.539.0 - ISC
3341
+ *
3342
+ * This source code is licensed under the ISC license.
3343
+ * See the LICENSE file in the root directory of this source tree.
3344
+ */
3345
+
3346
+
3347
+ const __iconNode$K = [
3252
3348
  ["path", { d: "M4 12h8", key: "17cfdx" }],
3253
3349
  ["path", { d: "M4 18V6", key: "1rz3zl" }],
3254
3350
  ["path", { d: "M12 18V6", key: "zqpxq5" }],
3255
3351
  ["path", { d: "m17 12 3-2v8", key: "1hhhft" }]
3256
3352
  ];
3257
- const Heading1 = createLucideIcon("heading-1", __iconNode$A);
3353
+ const Heading1 = createLucideIcon("heading-1", __iconNode$K);
3258
3354
 
3259
3355
  /**
3260
3356
  * @license lucide-react v0.539.0 - ISC
@@ -3264,13 +3360,13 @@ const Heading1 = createLucideIcon("heading-1", __iconNode$A);
3264
3360
  */
3265
3361
 
3266
3362
 
3267
- const __iconNode$z = [
3363
+ const __iconNode$J = [
3268
3364
  ["path", { d: "M4 12h8", key: "17cfdx" }],
3269
3365
  ["path", { d: "M4 18V6", key: "1rz3zl" }],
3270
3366
  ["path", { d: "M12 18V6", key: "zqpxq5" }],
3271
3367
  ["path", { d: "M21 18h-4c0-4 4-3 4-6 0-1.5-2-2.5-4-1", key: "9jr5yi" }]
3272
3368
  ];
3273
- const Heading2 = createLucideIcon("heading-2", __iconNode$z);
3369
+ const Heading2 = createLucideIcon("heading-2", __iconNode$J);
3274
3370
 
3275
3371
  /**
3276
3372
  * @license lucide-react v0.539.0 - ISC
@@ -3280,14 +3376,14 @@ const Heading2 = createLucideIcon("heading-2", __iconNode$z);
3280
3376
  */
3281
3377
 
3282
3378
 
3283
- const __iconNode$y = [
3379
+ const __iconNode$I = [
3284
3380
  ["path", { d: "M4 12h8", key: "17cfdx" }],
3285
3381
  ["path", { d: "M4 18V6", key: "1rz3zl" }],
3286
3382
  ["path", { d: "M12 18V6", key: "zqpxq5" }],
3287
3383
  ["path", { d: "M17.5 10.5c1.7-1 3.5 0 3.5 1.5a2 2 0 0 1-2 2", key: "68ncm8" }],
3288
3384
  ["path", { d: "M17 17.5c2 1.5 4 .3 4-1.5a2 2 0 0 0-2-2", key: "1ejuhz" }]
3289
3385
  ];
3290
- const Heading3 = createLucideIcon("heading-3", __iconNode$y);
3386
+ const Heading3 = createLucideIcon("heading-3", __iconNode$I);
3291
3387
 
3292
3388
  /**
3293
3389
  * @license lucide-react v0.539.0 - ISC
@@ -3297,12 +3393,12 @@ const Heading3 = createLucideIcon("heading-3", __iconNode$y);
3297
3393
  */
3298
3394
 
3299
3395
 
3300
- const __iconNode$x = [
3396
+ const __iconNode$H = [
3301
3397
  ["path", { d: "M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8", key: "1357e3" }],
3302
3398
  ["path", { d: "M3 3v5h5", key: "1xhq8a" }],
3303
3399
  ["path", { d: "M12 7v5l4 2", key: "1fdv2h" }]
3304
3400
  ];
3305
- const History = createLucideIcon("history", __iconNode$x);
3401
+ const History = createLucideIcon("history", __iconNode$H);
3306
3402
 
3307
3403
  /**
3308
3404
  * @license lucide-react v0.539.0 - ISC
@@ -3312,12 +3408,12 @@ const History = createLucideIcon("history", __iconNode$x);
3312
3408
  */
3313
3409
 
3314
3410
 
3315
- const __iconNode$w = [
3411
+ const __iconNode$G = [
3316
3412
  ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", ry: "2", key: "1m3agn" }],
3317
3413
  ["circle", { cx: "9", cy: "9", r: "2", key: "af1f0g" }],
3318
3414
  ["path", { d: "m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21", key: "1xmnt7" }]
3319
3415
  ];
3320
- const Image$1 = createLucideIcon("image", __iconNode$w);
3416
+ const Image$1 = createLucideIcon("image", __iconNode$G);
3321
3417
 
3322
3418
  /**
3323
3419
  * @license lucide-react v0.539.0 - ISC
@@ -3327,12 +3423,12 @@ const Image$1 = createLucideIcon("image", __iconNode$w);
3327
3423
  */
3328
3424
 
3329
3425
 
3330
- const __iconNode$v = [
3426
+ const __iconNode$F = [
3331
3427
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
3332
3428
  ["path", { d: "M12 16v-4", key: "1dtifu" }],
3333
3429
  ["path", { d: "M12 8h.01", key: "e9boi3" }]
3334
3430
  ];
3335
- const Info = createLucideIcon("info", __iconNode$v);
3431
+ const Info = createLucideIcon("info", __iconNode$F);
3336
3432
 
3337
3433
  /**
3338
3434
  * @license lucide-react v0.539.0 - ISC
@@ -3342,12 +3438,12 @@ const Info = createLucideIcon("info", __iconNode$v);
3342
3438
  */
3343
3439
 
3344
3440
 
3345
- const __iconNode$u = [
3441
+ const __iconNode$E = [
3346
3442
  ["line", { x1: "19", x2: "10", y1: "4", y2: "4", key: "15jd3p" }],
3347
3443
  ["line", { x1: "14", x2: "5", y1: "20", y2: "20", key: "bu0au3" }],
3348
3444
  ["line", { x1: "15", x2: "9", y1: "4", y2: "20", key: "uljnxc" }]
3349
3445
  ];
3350
- const Italic$1 = createLucideIcon("italic", __iconNode$u);
3446
+ const Italic$1 = createLucideIcon("italic", __iconNode$E);
3351
3447
 
3352
3448
  /**
3353
3449
  * @license lucide-react v0.539.0 - ISC
@@ -3357,12 +3453,32 @@ const Italic$1 = createLucideIcon("italic", __iconNode$u);
3357
3453
  */
3358
3454
 
3359
3455
 
3360
- const __iconNode$t = [
3456
+ const __iconNode$D = [
3457
+ [
3458
+ "path",
3459
+ {
3460
+ 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",
3461
+ key: "1s6t7t"
3462
+ }
3463
+ ],
3464
+ ["circle", { cx: "16.5", cy: "7.5", r: ".5", fill: "currentColor", key: "w0ekpg" }]
3465
+ ];
3466
+ const KeyRound = createLucideIcon("key-round", __iconNode$D);
3467
+
3468
+ /**
3469
+ * @license lucide-react v0.539.0 - ISC
3470
+ *
3471
+ * This source code is licensed under the ISC license.
3472
+ * See the LICENSE file in the root directory of this source tree.
3473
+ */
3474
+
3475
+
3476
+ const __iconNode$C = [
3361
3477
  ["path", { d: "M9 17H7A5 5 0 0 1 7 7h2", key: "8i5ue5" }],
3362
3478
  ["path", { d: "M15 7h2a5 5 0 1 1 0 10h-2", key: "1b9ql8" }],
3363
3479
  ["line", { x1: "8", x2: "16", y1: "12", y2: "12", key: "1jonct" }]
3364
3480
  ];
3365
- const Link2 = createLucideIcon("link-2", __iconNode$t);
3481
+ const Link2 = createLucideIcon("link-2", __iconNode$C);
3366
3482
 
3367
3483
  /**
3368
3484
  * @license lucide-react v0.539.0 - ISC
@@ -3372,7 +3488,24 @@ const Link2 = createLucideIcon("link-2", __iconNode$t);
3372
3488
  */
3373
3489
 
3374
3490
 
3375
- const __iconNode$s = [
3491
+ const __iconNode$B = [
3492
+ ["path", { d: "m3 17 2 2 4-4", key: "1jhpwq" }],
3493
+ ["path", { d: "m3 7 2 2 4-4", key: "1obspn" }],
3494
+ ["path", { d: "M13 6h8", key: "15sg57" }],
3495
+ ["path", { d: "M13 12h8", key: "h98zly" }],
3496
+ ["path", { d: "M13 18h8", key: "oe0vm4" }]
3497
+ ];
3498
+ const ListChecks = createLucideIcon("list-checks", __iconNode$B);
3499
+
3500
+ /**
3501
+ * @license lucide-react v0.539.0 - ISC
3502
+ *
3503
+ * This source code is licensed under the ISC license.
3504
+ * See the LICENSE file in the root directory of this source tree.
3505
+ */
3506
+
3507
+
3508
+ const __iconNode$A = [
3376
3509
  ["path", { d: "M10 12h11", key: "6m4ad9" }],
3377
3510
  ["path", { d: "M10 18h11", key: "11hvi2" }],
3378
3511
  ["path", { d: "M10 6h11", key: "c7qv1k" }],
@@ -3380,7 +3513,7 @@ const __iconNode$s = [
3380
3513
  ["path", { d: "M4 6h1v4", key: "cnovpq" }],
3381
3514
  ["path", { d: "M6 18H4c0-1 2-2 2-3s-1-1.5-2-1", key: "m9a95d" }]
3382
3515
  ];
3383
- const ListOrdered = createLucideIcon("list-ordered", __iconNode$s);
3516
+ const ListOrdered = createLucideIcon("list-ordered", __iconNode$A);
3384
3517
 
3385
3518
  /**
3386
3519
  * @license lucide-react v0.539.0 - ISC
@@ -3390,7 +3523,7 @@ const ListOrdered = createLucideIcon("list-ordered", __iconNode$s);
3390
3523
  */
3391
3524
 
3392
3525
 
3393
- const __iconNode$r = [
3526
+ const __iconNode$z = [
3394
3527
  ["path", { d: "M3 12h.01", key: "nlz23k" }],
3395
3528
  ["path", { d: "M3 18h.01", key: "1tta3j" }],
3396
3529
  ["path", { d: "M3 6h.01", key: "1rqtza" }],
@@ -3398,7 +3531,7 @@ const __iconNode$r = [
3398
3531
  ["path", { d: "M8 18h13", key: "1lx6n3" }],
3399
3532
  ["path", { d: "M8 6h13", key: "ik3vkj" }]
3400
3533
  ];
3401
- const List = createLucideIcon("list", __iconNode$r);
3534
+ const List = createLucideIcon("list", __iconNode$z);
3402
3535
 
3403
3536
  /**
3404
3537
  * @license lucide-react v0.539.0 - ISC
@@ -3408,8 +3541,8 @@ const List = createLucideIcon("list", __iconNode$r);
3408
3541
  */
3409
3542
 
3410
3543
 
3411
- const __iconNode$q = [["path", { d: "M21 12a9 9 0 1 1-6.219-8.56", key: "13zald" }]];
3412
- const LoaderCircle = createLucideIcon("loader-circle", __iconNode$q);
3544
+ const __iconNode$y = [["path", { d: "M21 12a9 9 0 1 1-6.219-8.56", key: "13zald" }]];
3545
+ const LoaderCircle = createLucideIcon("loader-circle", __iconNode$y);
3413
3546
 
3414
3547
  /**
3415
3548
  * @license lucide-react v0.539.0 - ISC
@@ -3419,7 +3552,7 @@ const LoaderCircle = createLucideIcon("loader-circle", __iconNode$q);
3419
3552
  */
3420
3553
 
3421
3554
 
3422
- const __iconNode$p = [
3555
+ const __iconNode$x = [
3423
3556
  ["path", { d: "M12 2v4", key: "3427ic" }],
3424
3557
  ["path", { d: "m16.2 7.8 2.9-2.9", key: "r700ao" }],
3425
3558
  ["path", { d: "M18 12h4", key: "wj9ykh" }],
@@ -3429,7 +3562,7 @@ const __iconNode$p = [
3429
3562
  ["path", { d: "M2 12h4", key: "j09sii" }],
3430
3563
  ["path", { d: "m4.9 4.9 2.9 2.9", key: "giyufr" }]
3431
3564
  ];
3432
- const Loader = createLucideIcon("loader", __iconNode$p);
3565
+ const Loader = createLucideIcon("loader", __iconNode$x);
3433
3566
 
3434
3567
  /**
3435
3568
  * @license lucide-react v0.539.0 - ISC
@@ -3439,12 +3572,12 @@ const Loader = createLucideIcon("loader", __iconNode$p);
3439
3572
  */
3440
3573
 
3441
3574
 
3442
- const __iconNode$o = [
3575
+ const __iconNode$w = [
3443
3576
  ["path", { d: "m16 17 5-5-5-5", key: "1bji2h" }],
3444
3577
  ["path", { d: "M21 12H9", key: "dn1m92" }],
3445
3578
  ["path", { d: "M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4", key: "1uf3rs" }]
3446
3579
  ];
3447
- const LogOut = createLucideIcon("log-out", __iconNode$o);
3580
+ const LogOut = createLucideIcon("log-out", __iconNode$w);
3448
3581
 
3449
3582
  /**
3450
3583
  * @license lucide-react v0.539.0 - ISC
@@ -3454,12 +3587,26 @@ const LogOut = createLucideIcon("log-out", __iconNode$o);
3454
3587
  */
3455
3588
 
3456
3589
 
3457
- const __iconNode$n = [
3590
+ const __iconNode$v = [
3591
+ ["path", { d: "m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7", key: "132q7q" }],
3592
+ ["rect", { x: "2", y: "4", width: "20", height: "16", rx: "2", key: "izxlao" }]
3593
+ ];
3594
+ const Mail = createLucideIcon("mail", __iconNode$v);
3595
+
3596
+ /**
3597
+ * @license lucide-react v0.539.0 - ISC
3598
+ *
3599
+ * This source code is licensed under the ISC license.
3600
+ * See the LICENSE file in the root directory of this source tree.
3601
+ */
3602
+
3603
+
3604
+ const __iconNode$u = [
3458
3605
  ["path", { d: "M4 12h16", key: "1lakjw" }],
3459
3606
  ["path", { d: "M4 18h16", key: "19g7jn" }],
3460
3607
  ["path", { d: "M4 6h16", key: "1o0s65" }]
3461
3608
  ];
3462
- const Menu = createLucideIcon("menu", __iconNode$n);
3609
+ const Menu = createLucideIcon("menu", __iconNode$u);
3463
3610
 
3464
3611
  /**
3465
3612
  * @license lucide-react v0.539.0 - ISC
@@ -3469,7 +3616,7 @@ const Menu = createLucideIcon("menu", __iconNode$n);
3469
3616
  */
3470
3617
 
3471
3618
 
3472
- const __iconNode$m = [
3619
+ const __iconNode$t = [
3473
3620
  [
3474
3621
  "path",
3475
3622
  {
@@ -3478,7 +3625,7 @@ const __iconNode$m = [
3478
3625
  }
3479
3626
  ]
3480
3627
  ];
3481
- const Moon = createLucideIcon("moon", __iconNode$m);
3628
+ const Moon = createLucideIcon("moon", __iconNode$t);
3482
3629
 
3483
3630
  /**
3484
3631
  * @license lucide-react v0.539.0 - ISC
@@ -3488,7 +3635,7 @@ const Moon = createLucideIcon("moon", __iconNode$m);
3488
3635
  */
3489
3636
 
3490
3637
 
3491
- const __iconNode$l = [
3638
+ const __iconNode$s = [
3492
3639
  [
3493
3640
  "path",
3494
3641
  {
@@ -3501,7 +3648,7 @@ const __iconNode$l = [
3501
3648
  ["circle", { cx: "6.5", cy: "12.5", r: ".5", fill: "currentColor", key: "qy21gx" }],
3502
3649
  ["circle", { cx: "8.5", cy: "7.5", r: ".5", fill: "currentColor", key: "fotxhn" }]
3503
3650
  ];
3504
- const Palette = createLucideIcon("palette", __iconNode$l);
3651
+ const Palette = createLucideIcon("palette", __iconNode$s);
3505
3652
 
3506
3653
  /**
3507
3654
  * @license lucide-react v0.539.0 - ISC
@@ -3511,12 +3658,12 @@ const Palette = createLucideIcon("palette", __iconNode$l);
3511
3658
  */
3512
3659
 
3513
3660
 
3514
- const __iconNode$k = [
3661
+ const __iconNode$r = [
3515
3662
  ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }],
3516
3663
  ["path", { d: "M9 3v18", key: "fh3hqa" }],
3517
3664
  ["path", { d: "m16 15-3-3 3-3", key: "14y99z" }]
3518
3665
  ];
3519
- const PanelLeftClose = createLucideIcon("panel-left-close", __iconNode$k);
3666
+ const PanelLeftClose = createLucideIcon("panel-left-close", __iconNode$r);
3520
3667
 
3521
3668
  /**
3522
3669
  * @license lucide-react v0.539.0 - ISC
@@ -3526,7 +3673,26 @@ const PanelLeftClose = createLucideIcon("panel-left-close", __iconNode$k);
3526
3673
  */
3527
3674
 
3528
3675
 
3529
- const __iconNode$j = [
3676
+ const __iconNode$q = [
3677
+ [
3678
+ "path",
3679
+ {
3680
+ 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",
3681
+ key: "1miecu"
3682
+ }
3683
+ ]
3684
+ ];
3685
+ const Paperclip = createLucideIcon("paperclip", __iconNode$q);
3686
+
3687
+ /**
3688
+ * @license lucide-react v0.539.0 - ISC
3689
+ *
3690
+ * This source code is licensed under the ISC license.
3691
+ * See the LICENSE file in the root directory of this source tree.
3692
+ */
3693
+
3694
+
3695
+ const __iconNode$p = [
3530
3696
  [
3531
3697
  "path",
3532
3698
  {
@@ -3536,7 +3702,7 @@ const __iconNode$j = [
3536
3702
  ],
3537
3703
  ["path", { d: "m15 5 4 4", key: "1mk7zo" }]
3538
3704
  ];
3539
- const Pencil = createLucideIcon("pencil", __iconNode$j);
3705
+ const Pencil = createLucideIcon("pencil", __iconNode$p);
3540
3706
 
3541
3707
  /**
3542
3708
  * @license lucide-react v0.539.0 - ISC
@@ -3546,7 +3712,26 @@ const Pencil = createLucideIcon("pencil", __iconNode$j);
3546
3712
  */
3547
3713
 
3548
3714
 
3549
- const __iconNode$i = [
3715
+ const __iconNode$o = [
3716
+ [
3717
+ "path",
3718
+ {
3719
+ 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",
3720
+ key: "9njp5v"
3721
+ }
3722
+ ]
3723
+ ];
3724
+ const Phone = createLucideIcon("phone", __iconNode$o);
3725
+
3726
+ /**
3727
+ * @license lucide-react v0.539.0 - ISC
3728
+ *
3729
+ * This source code is licensed under the ISC license.
3730
+ * See the LICENSE file in the root directory of this source tree.
3731
+ */
3732
+
3733
+
3734
+ const __iconNode$n = [
3550
3735
  [
3551
3736
  "path",
3552
3737
  {
@@ -3555,7 +3740,7 @@ const __iconNode$i = [
3555
3740
  }
3556
3741
  ]
3557
3742
  ];
3558
- const Play = createLucideIcon("play", __iconNode$i);
3743
+ const Play = createLucideIcon("play", __iconNode$n);
3559
3744
 
3560
3745
  /**
3561
3746
  * @license lucide-react v0.539.0 - ISC
@@ -3565,11 +3750,11 @@ const Play = createLucideIcon("play", __iconNode$i);
3565
3750
  */
3566
3751
 
3567
3752
 
3568
- const __iconNode$h = [
3753
+ const __iconNode$m = [
3569
3754
  ["path", { d: "M5 12h14", key: "1ays0h" }],
3570
3755
  ["path", { d: "M12 5v14", key: "s699le" }]
3571
3756
  ];
3572
- const Plus = createLucideIcon("plus", __iconNode$h);
3757
+ const Plus = createLucideIcon("plus", __iconNode$m);
3573
3758
 
3574
3759
  /**
3575
3760
  * @license lucide-react v0.539.0 - ISC
@@ -3579,10 +3764,10 @@ const Plus = createLucideIcon("plus", __iconNode$h);
3579
3764
  */
3580
3765
 
3581
3766
 
3582
- const __iconNode$g = [
3767
+ const __iconNode$l = [
3583
3768
  ["rect", { width: "20", height: "12", x: "2", y: "6", rx: "2", key: "9lu3g6" }]
3584
3769
  ];
3585
- const RectangleHorizontal = createLucideIcon("rectangle-horizontal", __iconNode$g);
3770
+ const RectangleHorizontal = createLucideIcon("rectangle-horizontal", __iconNode$l);
3586
3771
 
3587
3772
  /**
3588
3773
  * @license lucide-react v0.539.0 - ISC
@@ -3592,11 +3777,11 @@ const RectangleHorizontal = createLucideIcon("rectangle-horizontal", __iconNode$
3592
3777
  */
3593
3778
 
3594
3779
 
3595
- const __iconNode$f = [
3780
+ const __iconNode$k = [
3596
3781
  ["path", { d: "M21 7v6h-6", key: "3ptur4" }],
3597
3782
  ["path", { d: "M3 17a9 9 0 0 1 9-9 9 9 0 0 1 6 2.3l3 2.7", key: "1kgawr" }]
3598
3783
  ];
3599
- const Redo = createLucideIcon("redo", __iconNode$f);
3784
+ const Redo = createLucideIcon("redo", __iconNode$k);
3600
3785
 
3601
3786
  /**
3602
3787
  * @license lucide-react v0.539.0 - ISC
@@ -3606,13 +3791,13 @@ const Redo = createLucideIcon("redo", __iconNode$f);
3606
3791
  */
3607
3792
 
3608
3793
 
3609
- const __iconNode$e = [
3794
+ const __iconNode$j = [
3610
3795
  ["path", { d: "M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8", key: "v9h5vc" }],
3611
3796
  ["path", { d: "M21 3v5h-5", key: "1q7to0" }],
3612
3797
  ["path", { d: "M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16", key: "3uifl3" }],
3613
3798
  ["path", { d: "M8 16H3v5", key: "1cv678" }]
3614
3799
  ];
3615
- const RefreshCw = createLucideIcon("refresh-cw", __iconNode$e);
3800
+ const RefreshCw = createLucideIcon("refresh-cw", __iconNode$j);
3616
3801
 
3617
3802
  /**
3618
3803
  * @license lucide-react v0.539.0 - ISC
@@ -3622,14 +3807,14 @@ const RefreshCw = createLucideIcon("refresh-cw", __iconNode$e);
3622
3807
  */
3623
3808
 
3624
3809
 
3625
- const __iconNode$d = [
3810
+ const __iconNode$i = [
3626
3811
  ["path", { d: "M4 7V4h16v3", key: "9msm58" }],
3627
3812
  ["path", { d: "M5 20h6", key: "1h6pxn" }],
3628
3813
  ["path", { d: "M13 4 8 20", key: "kqq6aj" }],
3629
3814
  ["path", { d: "m15 15 5 5", key: "me55sn" }],
3630
3815
  ["path", { d: "m20 15-5 5", key: "11p7ol" }]
3631
3816
  ];
3632
- const RemoveFormatting = createLucideIcon("remove-formatting", __iconNode$d);
3817
+ const RemoveFormatting = createLucideIcon("remove-formatting", __iconNode$i);
3633
3818
 
3634
3819
  /**
3635
3820
  * @license lucide-react v0.539.0 - ISC
@@ -3639,14 +3824,14 @@ const RemoveFormatting = createLucideIcon("remove-formatting", __iconNode$d);
3639
3824
  */
3640
3825
 
3641
3826
 
3642
- const __iconNode$c = [
3827
+ const __iconNode$h = [
3643
3828
  ["circle", { cx: "6", cy: "6", r: "3", key: "1lh9wr" }],
3644
3829
  ["path", { d: "M8.12 8.12 12 12", key: "1alkpv" }],
3645
3830
  ["path", { d: "M20 4 8.12 15.88", key: "xgtan2" }],
3646
3831
  ["circle", { cx: "6", cy: "18", r: "3", key: "fqmcym" }],
3647
3832
  ["path", { d: "M14.8 14.8 20 20", key: "ptml3r" }]
3648
3833
  ];
3649
- const Scissors = createLucideIcon("scissors", __iconNode$c);
3834
+ const Scissors = createLucideIcon("scissors", __iconNode$h);
3650
3835
 
3651
3836
  /**
3652
3837
  * @license lucide-react v0.539.0 - ISC
@@ -3656,11 +3841,11 @@ const Scissors = createLucideIcon("scissors", __iconNode$c);
3656
3841
  */
3657
3842
 
3658
3843
 
3659
- const __iconNode$b = [
3844
+ const __iconNode$g = [
3660
3845
  ["path", { d: "m21 21-4.34-4.34", key: "14j7rj" }],
3661
3846
  ["circle", { cx: "11", cy: "11", r: "8", key: "4ej97u" }]
3662
3847
  ];
3663
- const Search = createLucideIcon("search", __iconNode$b);
3848
+ const Search = createLucideIcon("search", __iconNode$g);
3664
3849
 
3665
3850
  /**
3666
3851
  * @license lucide-react v0.539.0 - ISC
@@ -3670,14 +3855,14 @@ const Search = createLucideIcon("search", __iconNode$b);
3670
3855
  */
3671
3856
 
3672
3857
 
3673
- const __iconNode$a = [
3858
+ const __iconNode$f = [
3674
3859
  ["circle", { cx: "18", cy: "5", r: "3", key: "gq8acd" }],
3675
3860
  ["circle", { cx: "6", cy: "12", r: "3", key: "w7nqdw" }],
3676
3861
  ["circle", { cx: "18", cy: "19", r: "3", key: "1xt0gg" }],
3677
3862
  ["line", { x1: "8.59", x2: "15.42", y1: "13.51", y2: "17.49", key: "47mynk" }],
3678
3863
  ["line", { x1: "15.41", x2: "8.59", y1: "6.51", y2: "10.49", key: "1n3mei" }]
3679
3864
  ];
3680
- const Share2 = createLucideIcon("share-2", __iconNode$a);
3865
+ const Share2 = createLucideIcon("share-2", __iconNode$f);
3681
3866
 
3682
3867
  /**
3683
3868
  * @license lucide-react v0.539.0 - ISC
@@ -3687,10 +3872,47 @@ const Share2 = createLucideIcon("share-2", __iconNode$a);
3687
3872
  */
3688
3873
 
3689
3874
 
3690
- const __iconNode$9 = [
3875
+ const __iconNode$e = [
3876
+ [
3877
+ "path",
3878
+ {
3879
+ 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",
3880
+ key: "oel41y"
3881
+ }
3882
+ ],
3883
+ ["path", { d: "m9 12 2 2 4-4", key: "dzmm74" }]
3884
+ ];
3885
+ const ShieldCheck = createLucideIcon("shield-check", __iconNode$e);
3886
+
3887
+ /**
3888
+ * @license lucide-react v0.539.0 - ISC
3889
+ *
3890
+ * This source code is licensed under the ISC license.
3891
+ * See the LICENSE file in the root directory of this source tree.
3892
+ */
3893
+
3894
+
3895
+ const __iconNode$d = [
3896
+ [
3897
+ "path",
3898
+ { 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" }
3899
+ ],
3900
+ ["path", { d: "m9 11 3 3L22 4", key: "1pflzl" }]
3901
+ ];
3902
+ const SquareCheckBig = createLucideIcon("square-check-big", __iconNode$d);
3903
+
3904
+ /**
3905
+ * @license lucide-react v0.539.0 - ISC
3906
+ *
3907
+ * This source code is licensed under the ISC license.
3908
+ * See the LICENSE file in the root directory of this source tree.
3909
+ */
3910
+
3911
+
3912
+ const __iconNode$c = [
3691
3913
  ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }]
3692
3914
  ];
3693
- const Square = createLucideIcon("square", __iconNode$9);
3915
+ const Square = createLucideIcon("square", __iconNode$c);
3694
3916
 
3695
3917
  /**
3696
3918
  * @license lucide-react v0.539.0 - ISC
@@ -3700,12 +3922,12 @@ const Square = createLucideIcon("square", __iconNode$9);
3700
3922
  */
3701
3923
 
3702
3924
 
3703
- const __iconNode$8 = [
3925
+ const __iconNode$b = [
3704
3926
  ["path", { d: "M16 4H9a3 3 0 0 0-2.83 4", key: "43sutm" }],
3705
3927
  ["path", { d: "M14 12a4 4 0 0 1 0 8H6", key: "nlfj13" }],
3706
3928
  ["line", { x1: "4", x2: "20", y1: "12", y2: "12", key: "1e0a9i" }]
3707
3929
  ];
3708
- const Strikethrough = createLucideIcon("strikethrough", __iconNode$8);
3930
+ const Strikethrough = createLucideIcon("strikethrough", __iconNode$b);
3709
3931
 
3710
3932
  /**
3711
3933
  * @license lucide-react v0.539.0 - ISC
@@ -3715,7 +3937,7 @@ const Strikethrough = createLucideIcon("strikethrough", __iconNode$8);
3715
3937
  */
3716
3938
 
3717
3939
 
3718
- const __iconNode$7 = [
3940
+ const __iconNode$a = [
3719
3941
  ["circle", { cx: "12", cy: "12", r: "4", key: "4exip2" }],
3720
3942
  ["path", { d: "M12 2v2", key: "tus03m" }],
3721
3943
  ["path", { d: "M12 20v2", key: "1lh1kg" }],
@@ -3726,7 +3948,7 @@ const __iconNode$7 = [
3726
3948
  ["path", { d: "m6.34 17.66-1.41 1.41", key: "1m8zz5" }],
3727
3949
  ["path", { d: "m19.07 4.93-1.41 1.41", key: "1shlcs" }]
3728
3950
  ];
3729
- const Sun = createLucideIcon("sun", __iconNode$7);
3951
+ const Sun = createLucideIcon("sun", __iconNode$a);
3730
3952
 
3731
3953
  /**
3732
3954
  * @license lucide-react v0.539.0 - ISC
@@ -3736,14 +3958,28 @@ const Sun = createLucideIcon("sun", __iconNode$7);
3736
3958
  */
3737
3959
 
3738
3960
 
3739
- const __iconNode$6 = [
3961
+ const __iconNode$9 = [
3962
+ ["circle", { cx: "9", cy: "12", r: "3", key: "u3jwor" }],
3963
+ ["rect", { width: "20", height: "14", x: "2", y: "5", rx: "7", key: "g7kal2" }]
3964
+ ];
3965
+ const ToggleLeft = createLucideIcon("toggle-left", __iconNode$9);
3966
+
3967
+ /**
3968
+ * @license lucide-react v0.539.0 - ISC
3969
+ *
3970
+ * This source code is licensed under the ISC license.
3971
+ * See the LICENSE file in the root directory of this source tree.
3972
+ */
3973
+
3974
+
3975
+ const __iconNode$8 = [
3740
3976
  ["path", { d: "M10 11v6", key: "nco0om" }],
3741
3977
  ["path", { d: "M14 11v6", key: "outv1u" }],
3742
3978
  ["path", { d: "M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6", key: "miytrc" }],
3743
3979
  ["path", { d: "M3 6h18", key: "d0wm0j" }],
3744
3980
  ["path", { d: "M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2", key: "e791ji" }]
3745
3981
  ];
3746
- const Trash2 = createLucideIcon("trash-2", __iconNode$6);
3982
+ const Trash2 = createLucideIcon("trash-2", __iconNode$8);
3747
3983
 
3748
3984
  /**
3749
3985
  * @license lucide-react v0.539.0 - ISC
@@ -3753,7 +3989,7 @@ const Trash2 = createLucideIcon("trash-2", __iconNode$6);
3753
3989
  */
3754
3990
 
3755
3991
 
3756
- const __iconNode$5 = [
3992
+ const __iconNode$7 = [
3757
3993
  [
3758
3994
  "path",
3759
3995
  {
@@ -3764,7 +4000,7 @@ const __iconNode$5 = [
3764
4000
  ["path", { d: "M12 9v4", key: "juzpu7" }],
3765
4001
  ["path", { d: "M12 17h.01", key: "p32p05" }]
3766
4002
  ];
3767
- const TriangleAlert = createLucideIcon("triangle-alert", __iconNode$5);
4003
+ const TriangleAlert = createLucideIcon("triangle-alert", __iconNode$7);
3768
4004
 
3769
4005
  /**
3770
4006
  * @license lucide-react v0.539.0 - ISC
@@ -3774,11 +4010,26 @@ const TriangleAlert = createLucideIcon("triangle-alert", __iconNode$5);
3774
4010
  */
3775
4011
 
3776
4012
 
3777
- const __iconNode$4 = [
4013
+ const __iconNode$6 = [
4014
+ ["path", { d: "M12 4v16", key: "1654pz" }],
4015
+ ["path", { d: "M4 7V5a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v2", key: "e0r10z" }],
4016
+ ["path", { d: "M9 20h6", key: "s66wpe" }]
4017
+ ];
4018
+ const Type = createLucideIcon("type", __iconNode$6);
4019
+
4020
+ /**
4021
+ * @license lucide-react v0.539.0 - ISC
4022
+ *
4023
+ * This source code is licensed under the ISC license.
4024
+ * See the LICENSE file in the root directory of this source tree.
4025
+ */
4026
+
4027
+
4028
+ const __iconNode$5 = [
3778
4029
  ["path", { d: "M6 4v6a6 6 0 0 0 12 0V4", key: "9kb039" }],
3779
4030
  ["line", { x1: "4", x2: "20", y1: "20", y2: "20", key: "nun2al" }]
3780
4031
  ];
3781
- const Underline$1 = createLucideIcon("underline", __iconNode$4);
4032
+ const Underline$1 = createLucideIcon("underline", __iconNode$5);
3782
4033
 
3783
4034
  /**
3784
4035
  * @license lucide-react v0.539.0 - ISC
@@ -3788,11 +4039,11 @@ const Underline$1 = createLucideIcon("underline", __iconNode$4);
3788
4039
  */
3789
4040
 
3790
4041
 
3791
- const __iconNode$3 = [
4042
+ const __iconNode$4 = [
3792
4043
  ["path", { d: "M3 7v6h6", key: "1v2h90" }],
3793
4044
  ["path", { d: "M21 17a9 9 0 0 0-9-9 9 9 0 0 0-6 2.3L3 13", key: "1r6uu6" }]
3794
4045
  ];
3795
- const Undo = createLucideIcon("undo", __iconNode$3);
4046
+ const Undo = createLucideIcon("undo", __iconNode$4);
3796
4047
 
3797
4048
  /**
3798
4049
  * @license lucide-react v0.539.0 - ISC
@@ -3802,12 +4053,28 @@ const Undo = createLucideIcon("undo", __iconNode$3);
3802
4053
  */
3803
4054
 
3804
4055
 
3805
- const __iconNode$2 = [
4056
+ const __iconNode$3 = [
3806
4057
  ["path", { d: "M12 3v12", key: "1x0j5s" }],
3807
4058
  ["path", { d: "m17 8-5-5-5 5", key: "7q97r8" }],
3808
4059
  ["path", { d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4", key: "ih7n3h" }]
3809
4060
  ];
3810
- const Upload = createLucideIcon("upload", __iconNode$2);
4061
+ const Upload = createLucideIcon("upload", __iconNode$3);
4062
+
4063
+ /**
4064
+ * @license lucide-react v0.539.0 - ISC
4065
+ *
4066
+ * This source code is licensed under the ISC license.
4067
+ * See the LICENSE file in the root directory of this source tree.
4068
+ */
4069
+
4070
+
4071
+ const __iconNode$2 = [
4072
+ ["path", { d: "M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2", key: "1yyitq" }],
4073
+ ["circle", { cx: "9", cy: "7", r: "4", key: "nufk8" }],
4074
+ ["line", { x1: "19", x2: "19", y1: "8", y2: "14", key: "1bvyxn" }],
4075
+ ["line", { x1: "22", x2: "16", y1: "11", y2: "11", key: "1shjgl" }]
4076
+ ];
4077
+ const UserPlus = createLucideIcon("user-plus", __iconNode$2);
3811
4078
 
3812
4079
  /**
3813
4080
  * @license lucide-react v0.539.0 - ISC
@@ -20817,7 +21084,7 @@ const DATE_FORMAT$1 = 'DD-MM-YYYY';
20817
21084
  */
20818
21085
  const DEFAULT_INVENTORY_THUMBNAIL = '/default%20thumbnail.png';
20819
21086
 
20820
- const formatDate$2 = (iso) => {
21087
+ const formatDate$3 = (iso) => {
20821
21088
  if (!iso)
20822
21089
  return '-';
20823
21090
  try {
@@ -20834,7 +21101,7 @@ const InfoCard = ({ info, title, refundToWallet, onRefundChange, }) => {
20834
21101
  if (React.isValidElement(info))
20835
21102
  return jsxRuntime.jsx("div", { className: "mt-3", children: info });
20836
21103
  const i = info;
20837
- return (jsxRuntime.jsx("div", { className: "mt-1 rounded-lg border bg-muted p-3 shadow-sm", children: jsxRuntime.jsxs("div", { className: "flex flex-col gap-1", children: [jsxRuntime.jsxs("div", { className: "flex items-start gap-3", children: [jsxRuntime.jsx("div", { className: "w-36 text-sm text-muted-foreground", children: "Date" }), jsxRuntime.jsx("div", { children: formatDate$2(i.invoiceDate) })] }), jsxRuntime.jsxs("div", { className: "flex items-start gap-3", children: [jsxRuntime.jsx("div", { className: "w-36 text-sm text-muted-foreground", children: "Total" }), jsxRuntime.jsx("div", { className: "font-medium text-foreground", children: formatCurrencyWithTenantSymbol(i.totalAmount) })] }), i.paidAmount !== undefined && (jsxRuntime.jsxs("div", { className: "flex items-start gap-3", children: [jsxRuntime.jsx("div", { className: "w-36 text-sm text-muted-foreground", children: "Paid" }), jsxRuntime.jsx("div", { className: "font-medium text-primary", children: formatCurrencyWithTenantSymbol(i.paidAmount) })] })), i.outstandingAmount !== undefined && (jsxRuntime.jsxs("div", { className: "flex items-start gap-3", children: [jsxRuntime.jsx("div", { className: "w-36 text-sm text-muted-foreground", children: "Outstanding" }), jsxRuntime.jsx("div", { className: "font-medium text-muted-foreground", children: formatCurrencyWithTenantSymbol(i.outstandingAmount) })] })), title === 'Cancel Invoice' &&
21104
+ return (jsxRuntime.jsx("div", { className: "mt-1 rounded-lg border bg-muted p-3 shadow-sm", children: jsxRuntime.jsxs("div", { className: "flex flex-col gap-1", children: [jsxRuntime.jsxs("div", { className: "flex items-start gap-3", children: [jsxRuntime.jsx("div", { className: "w-36 text-sm text-muted-foreground", children: "Date" }), jsxRuntime.jsx("div", { children: formatDate$3(i.invoiceDate) })] }), jsxRuntime.jsxs("div", { className: "flex items-start gap-3", children: [jsxRuntime.jsx("div", { className: "w-36 text-sm text-muted-foreground", children: "Total" }), jsxRuntime.jsx("div", { className: "font-medium text-foreground", children: formatCurrencyWithTenantSymbol(i.totalAmount) })] }), i.paidAmount !== undefined && (jsxRuntime.jsxs("div", { className: "flex items-start gap-3", children: [jsxRuntime.jsx("div", { className: "w-36 text-sm text-muted-foreground", children: "Paid" }), jsxRuntime.jsx("div", { className: "font-medium text-primary", children: formatCurrencyWithTenantSymbol(i.paidAmount) })] })), i.outstandingAmount !== undefined && (jsxRuntime.jsxs("div", { className: "flex items-start gap-3", children: [jsxRuntime.jsx("div", { className: "w-36 text-sm text-muted-foreground", children: "Outstanding" }), jsxRuntime.jsx("div", { className: "font-medium text-muted-foreground", children: formatCurrencyWithTenantSymbol(i.outstandingAmount) })] })), title === 'Cancel Invoice' &&
20838
21105
  !React.isValidElement(info) &&
20839
21106
  (i?.paidAmount ?? 0) > 0 && (jsxRuntime.jsxs("div", { className: "flex items-start gap-3", children: [jsxRuntime.jsx("div", { className: "w-36 whitespace-nowrap text-sm text-muted-foreground", children: "Refund to Wallet" }), jsxRuntime.jsx(Checkbox, { checked: !!refundToWallet, onCheckedChange: (v) => onRefundChange?.(Boolean(v)), className: "bg-card" })] })), (i.customerName || i.email) && (jsxRuntime.jsxs("div", { className: "mt-1 rounded bg-card p-2", children: [i.customerName && (jsxRuntime.jsx("div", { className: "text-sm font-medium", children: i.customerName })), i.email && (jsxRuntime.jsx("div", { className: "text-sm text-muted-foreground", children: i.email }))] }))] }) }));
20840
21107
  };
@@ -22005,7 +22272,7 @@ function normalizeDates(context, ...dates) {
22005
22272
  * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))
22006
22273
  * //=> Tue Sep 02 2014 00:00:00
22007
22274
  */
22008
- function startOfDay(date, options) {
22275
+ function startOfDay$1(date, options) {
22009
22276
  const _date = toDate(date, options?.in);
22010
22277
  _date.setHours(0, 0, 0, 0);
22011
22278
  return _date;
@@ -22053,8 +22320,8 @@ function differenceInCalendarDays(laterDate, earlierDate, options) {
22053
22320
  earlierDate,
22054
22321
  );
22055
22322
 
22056
- const laterStartOfDay = startOfDay(laterDate_);
22057
- const earlierStartOfDay = startOfDay(earlierDate_);
22323
+ const laterStartOfDay = startOfDay$1(laterDate_);
22324
+ const earlierStartOfDay = startOfDay$1(earlierDate_);
22058
22325
 
22059
22326
  const laterTimestamp =
22060
22327
  +laterStartOfDay - getTimezoneOffsetInMilliseconds(laterStartOfDay);
@@ -22385,7 +22652,7 @@ function isSameDay$1(laterDate, earlierDate, options) {
22385
22652
  laterDate,
22386
22653
  earlierDate,
22387
22654
  );
22388
- return +startOfDay(dateLeft_) === +startOfDay(dateRight_);
22655
+ return +startOfDay$1(dateLeft_) === +startOfDay$1(dateRight_);
22389
22656
  }
22390
22657
 
22391
22658
  /**
@@ -31321,7 +31588,7 @@ function parseDate(value, dateFormat, locale, strictParsing, refDate) {
31321
31588
  var parsedDate = parse(value, format_1, refDate, {
31322
31589
  locale: localeObject});
31323
31590
  if (isValid(parsedDate) &&
31324
- (!strictParsing || value === formatDate$1(parsedDate, format_1, locale))) {
31591
+ (!strictParsing || value === formatDate$2(parsedDate, format_1, locale))) {
31325
31592
  return parsedDate;
31326
31593
  }
31327
31594
  }
@@ -31349,7 +31616,7 @@ function isValid(date, minDate) {
31349
31616
  * @param locale - The locale.
31350
31617
  * @returns - The formatted date.
31351
31618
  */
31352
- function formatDate$1(date, formatStr, locale) {
31619
+ function formatDate$2(date, formatStr, locale) {
31353
31620
  if (locale === "en") {
31354
31621
  return format(date, formatStr, {
31355
31622
  useAdditionalWeekYearTokens: true,
@@ -31379,7 +31646,7 @@ function safeDateFormat(date, _a) {
31379
31646
  var formatStr = (Array.isArray(dateFormat) && dateFormat.length > 0
31380
31647
  ? dateFormat[0]
31381
31648
  : dateFormat); // Cast to string because it's impossible to get `string | string[] | undefined` here and typescript doesn't know that
31382
- return (date && formatDate$1(date, formatStr, locale)) || "";
31649
+ return (date && formatDate$2(date, formatStr, locale)) || "";
31383
31650
  }
31384
31651
  /**
31385
31652
  * Used as a delimiter to separate two dates when formatting a date range
@@ -31453,7 +31720,7 @@ function getWeek(date) {
31453
31720
  * @returns - The day of the week code.
31454
31721
  */
31455
31722
  function getDayOfWeekCode(day, locale) {
31456
- return formatDate$1(day, "ddd", locale);
31723
+ return formatDate$2(day, "ddd", locale);
31457
31724
  }
31458
31725
  // *** Start of ***
31459
31726
  /**
@@ -31463,7 +31730,7 @@ function getDayOfWeekCode(day, locale) {
31463
31730
  * @returns - The start of the day.
31464
31731
  */
31465
31732
  function getStartOfDay(date) {
31466
- return startOfDay(date);
31733
+ return startOfDay$1(date);
31467
31734
  }
31468
31735
  /**
31469
31736
  * Gets the start of the week for a given date.
@@ -31515,7 +31782,7 @@ function getStartOfQuarter(date) {
31515
31782
  * @returns - The start of today.
31516
31783
  */
31517
31784
  function getStartOfToday() {
31518
- return startOfDay(newDate());
31785
+ return startOfDay$1(newDate());
31519
31786
  }
31520
31787
  // *** End of ***
31521
31788
  /**
@@ -31630,7 +31897,7 @@ function isEqual(date1, date2) {
31630
31897
  */
31631
31898
  function isDayInRange(day, startDate, endDate) {
31632
31899
  var valid;
31633
- var start = startOfDay(startDate);
31900
+ var start = startOfDay$1(startDate);
31634
31901
  var end = endOfDay(endDate);
31635
31902
  try {
31636
31903
  valid = isWithinInterval(day, { start: start, end: end });
@@ -31676,7 +31943,7 @@ function getLocaleObject(localeSpec) {
31676
31943
  * @returns - The formatted weekday.
31677
31944
  */
31678
31945
  function getFormattedWeekdayInLocale(date, formatFunc, locale) {
31679
- return formatFunc(formatDate$1(date, "EEEE", locale));
31946
+ return formatFunc(formatDate$2(date, "EEEE", locale));
31680
31947
  }
31681
31948
  /**
31682
31949
  * Gets the minimum weekday in a given locale.
@@ -31686,7 +31953,7 @@ function getFormattedWeekdayInLocale(date, formatFunc, locale) {
31686
31953
  * @returns - The minimum weekday.
31687
31954
  */
31688
31955
  function getWeekdayMinInLocale(date, locale) {
31689
- return formatDate$1(date, "EEEEEE", locale);
31956
+ return formatDate$2(date, "EEEEEE", locale);
31690
31957
  }
31691
31958
  /**
31692
31959
  * Gets the short weekday in a given locale.
@@ -31696,7 +31963,7 @@ function getWeekdayMinInLocale(date, locale) {
31696
31963
  * @returns - The short weekday.
31697
31964
  */
31698
31965
  function getWeekdayShortInLocale(date, locale) {
31699
- return formatDate$1(date, "EEE", locale);
31966
+ return formatDate$2(date, "EEE", locale);
31700
31967
  }
31701
31968
  /**
31702
31969
  * Gets the month in a given locale.
@@ -31706,7 +31973,7 @@ function getWeekdayShortInLocale(date, locale) {
31706
31973
  * @returns - The month.
31707
31974
  */
31708
31975
  function getMonthInLocale(month, locale) {
31709
- return formatDate$1(setMonth(newDate(), month), "LLLL", locale);
31976
+ return formatDate$2(setMonth(newDate(), month), "LLLL", locale);
31710
31977
  }
31711
31978
  /**
31712
31979
  * Gets the short month in a given locale.
@@ -31716,7 +31983,7 @@ function getMonthInLocale(month, locale) {
31716
31983
  * @returns - The short month.
31717
31984
  */
31718
31985
  function getMonthShortInLocale(month, locale) {
31719
- return formatDate$1(setMonth(newDate(), month), "LLL", locale);
31986
+ return formatDate$2(setMonth(newDate(), month), "LLL", locale);
31720
31987
  }
31721
31988
  /**
31722
31989
  * Gets the short quarter in a given locale.
@@ -31726,7 +31993,7 @@ function getMonthShortInLocale(month, locale) {
31726
31993
  * @returns - The short quarter.
31727
31994
  */
31728
31995
  function getQuarterShortInLocale(quarter, locale) {
31729
- return formatDate$1(setQuarter(newDate(), quarter), "QQQ", locale);
31996
+ return formatDate$2(setQuarter(newDate(), quarter), "QQQ", locale);
31730
31997
  }
31731
31998
  /**
31732
31999
  * Checks if a day is disabled.
@@ -32056,7 +32323,7 @@ function getHighLightDaysMap(highlightDates, defaultClassName) {
32056
32323
  for (var i = 0, len = highlightDates.length; i < len; i++) {
32057
32324
  var obj = highlightDates[i];
32058
32325
  if (isDate(obj)) {
32059
- var key = formatDate$1(obj, "MM.dd.yyyy");
32326
+ var key = formatDate$2(obj, "MM.dd.yyyy");
32060
32327
  var classNamesArr = dateClasses.get(key) || [];
32061
32328
  if (!classNamesArr.includes(defaultClassName)) {
32062
32329
  classNamesArr.push(defaultClassName);
@@ -32071,7 +32338,7 @@ function getHighLightDaysMap(highlightDates, defaultClassName) {
32071
32338
  for (var k = 0, len_1 = arrOfDates.length; k < len_1; k++) {
32072
32339
  var dateK = arrOfDates[k];
32073
32340
  if (dateK) {
32074
- var key = formatDate$1(dateK, "MM.dd.yyyy");
32341
+ var key = formatDate$2(dateK, "MM.dd.yyyy");
32075
32342
  var classNamesArr = dateClasses.get(key) || [];
32076
32343
  if (!classNamesArr.includes(className)) {
32077
32344
  classNamesArr.push(className);
@@ -32111,7 +32378,7 @@ function getHolidaysMap(holidayDates, defaultClassName) {
32111
32378
  if (!isDate(dateObj)) {
32112
32379
  return;
32113
32380
  }
32114
- var key = formatDate$1(dateObj, "MM.dd.yyyy");
32381
+ var key = formatDate$2(dateObj, "MM.dd.yyyy");
32115
32382
  var classNamesObj = dateClasses.get(key) || {
32116
32383
  className: "",
32117
32384
  holidayNames: [],
@@ -32485,7 +32752,7 @@ var Day = /** @class */ (function (_super) {
32485
32752
  return false;
32486
32753
  }
32487
32754
  // Looking for className in the Map of {'day string, 'className'}
32488
- var dayStr = formatDate$1(day, "MM.dd.yyyy");
32755
+ var dayStr = formatDate$2(day, "MM.dd.yyyy");
32489
32756
  return highlightDates.get(dayStr);
32490
32757
  };
32491
32758
  // Function to return the array containing className associated to the date
@@ -32496,7 +32763,7 @@ var Day = /** @class */ (function (_super) {
32496
32763
  // For type consistency no other reasons
32497
32764
  return [undefined];
32498
32765
  }
32499
- var dayStr = formatDate$1(day, "MM.dd.yyyy");
32766
+ var dayStr = formatDate$2(day, "MM.dd.yyyy");
32500
32767
  // Looking for className in the Map of {day string: {className, holidayName}}
32501
32768
  if (holidays.has(dayStr)) {
32502
32769
  return [(_a = holidays.get(dayStr)) === null || _a === void 0 ? void 0 : _a.className];
@@ -32637,12 +32904,12 @@ var Day = /** @class */ (function (_super) {
32637
32904
  var prefix = _this.isDisabled() || _this.isExcluded()
32638
32905
  ? ariaLabelPrefixWhenDisabled
32639
32906
  : ariaLabelPrefixWhenEnabled;
32640
- return "".concat(prefix, " ").concat(formatDate$1(day, "PPPP", _this.props.locale));
32907
+ return "".concat(prefix, " ").concat(formatDate$2(day, "PPPP", _this.props.locale));
32641
32908
  };
32642
32909
  // A function to return the holiday's name as title's content
32643
32910
  _this.getTitle = function () {
32644
32911
  var _a = _this.props, day = _a.day, _b = _a.holidays, holidays = _b === void 0 ? new Map() : _b, excludeDates = _a.excludeDates;
32645
- var compareDt = formatDate$1(day, "MM.dd.yyyy");
32912
+ var compareDt = formatDate$2(day, "MM.dd.yyyy");
32646
32913
  var titles = [];
32647
32914
  if (holidays.has(compareDt)) {
32648
32915
  titles.push.apply(titles, holidays.get(compareDt).holidayNames);
@@ -33568,7 +33835,7 @@ var Month = /** @class */ (function (_super) {
33568
33835
  var prefix = _this.isDisabled(labelDate) || _this.isExcluded(labelDate)
33569
33836
  ? disabledDayAriaLabelPrefix
33570
33837
  : chooseDayAriaLabelPrefix;
33571
- return "".concat(prefix, " ").concat(formatDate$1(labelDate, "MMMM yyyy", locale));
33838
+ return "".concat(prefix, " ").concat(formatDate$2(labelDate, "MMMM yyyy", locale));
33572
33839
  };
33573
33840
  _this.getQuarterClassNames = function (q) {
33574
33841
  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;
@@ -33670,7 +33937,7 @@ var Month = /** @class */ (function (_super) {
33670
33937
  : "";
33671
33938
  // Format aria-label, return empty string if date is invalid
33672
33939
  var formattedAriaLabel = isValid(day)
33673
- ? "".concat(formattedAriaLabelPrefix).concat(formatDate$1(day, "MMMM, yyyy", this.props.locale))
33940
+ ? "".concat(formattedAriaLabelPrefix).concat(formatDate$2(day, "MMMM, yyyy", this.props.locale))
33674
33941
  : "";
33675
33942
  var shouldUseListboxRole = showMonthYearPicker || showQuarterYearPicker;
33676
33943
  if (shouldUseListboxRole) {
@@ -33813,7 +34080,7 @@ var MonthYearDropdownOptions = /** @class */ (function (_super) {
33813
34080
  ? "react-datepicker__month-year-option--selected_month-year"
33814
34081
  : "react-datepicker__month-year-option", key: monthYearPoint, onClick: _this.onChange.bind(_this, monthYearPoint), "aria-selected": isSameMonthYear ? "true" : undefined },
33815
34082
  isSameMonthYear ? (React.createElement("span", { className: "react-datepicker__month-year-option--selected" }, "\u2713")) : (""),
33816
- formatDate$1(monthYear, _this.props.dateFormat, _this.props.locale)));
34083
+ formatDate$2(monthYear, _this.props.dateFormat, _this.props.locale)));
33817
34084
  });
33818
34085
  };
33819
34086
  _this.onChange = function (monthYear) { return _this.props.onChange(monthYear); };
@@ -33848,7 +34115,7 @@ var MonthYearDropdown = /** @class */ (function (_super) {
33848
34115
  var options = [];
33849
34116
  while (!isAfter$1(currDate, lastDate)) {
33850
34117
  var timePoint = getTime(currDate);
33851
- options.push(React.createElement("option", { key: timePoint, value: timePoint }, formatDate$1(currDate, _this.props.dateFormat, _this.props.locale)));
34118
+ options.push(React.createElement("option", { key: timePoint, value: timePoint }, formatDate$2(currDate, _this.props.dateFormat, _this.props.locale)));
33852
34119
  currDate = addMonths(currDate, 1);
33853
34120
  }
33854
34121
  return options;
@@ -33858,7 +34125,7 @@ var MonthYearDropdown = /** @class */ (function (_super) {
33858
34125
  };
33859
34126
  _this.renderSelectMode = function () { return (React.createElement("select", { value: getTime(getStartOfMonth(_this.props.date)), className: "react-datepicker__month-year-select", onChange: _this.onSelectChange }, _this.renderSelectOptions())); };
33860
34127
  _this.renderReadView = function (visible) {
33861
- var yearMonth = formatDate$1(_this.props.date, _this.props.dateFormat, _this.props.locale);
34128
+ var yearMonth = formatDate$2(_this.props.date, _this.props.dateFormat, _this.props.locale);
33862
34129
  return (React.createElement("div", { key: "read", style: { visibility: visible ? "visible" : "hidden" }, className: "react-datepicker__month-year-read-view", onClick: _this.toggleDropdown },
33863
34130
  React.createElement("span", { className: "react-datepicker__month-year-read-view--down-arrow" }),
33864
34131
  React.createElement("span", { className: "react-datepicker__month-year-read-view--selected-month-year" }, yearMonth)));
@@ -34027,7 +34294,7 @@ var Time = /** @class */ (function (_super) {
34027
34294
  }
34028
34295
  }, onKeyDown: function (event) {
34029
34296
  _this.handleOnKeyDown(event, time);
34030
- }, 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)));
34297
+ }, 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)));
34031
34298
  });
34032
34299
  };
34033
34300
  _this.renderTimeCaption = function () {
@@ -34798,7 +35065,7 @@ var Calendar = /** @class */ (function (_super) {
34798
35065
  ? _this.props.weekDayClassName(day)
34799
35066
  : undefined;
34800
35067
  return (React.createElement("div", { key: offset, role: "columnheader", className: clsx("react-datepicker__day-name", weekDayClassName, disabled ? "react-datepicker__day-name--disabled" : "") },
34801
- React.createElement("span", { className: "react-datepicker__sr-only" }, formatDate$1(day, "EEEE", _this.props.locale)),
35068
+ React.createElement("span", { className: "react-datepicker__sr-only" }, formatDate$2(day, "EEEE", _this.props.locale)),
34802
35069
  React.createElement("span", { "aria-hidden": "true" }, weekDayName)));
34803
35070
  }));
34804
35071
  };
@@ -34978,7 +35245,7 @@ var Calendar = /** @class */ (function (_super) {
34978
35245
  classes.push("react-datepicker__current-month--hasMonthYearDropdown");
34979
35246
  }
34980
35247
  return (React.createElement("h2", { className: classes.join(" ") }, isValid(date)
34981
- ? formatDate$1(date, _this.props.dateFormat, _this.props.locale)
35248
+ ? formatDate$2(date, _this.props.dateFormat, _this.props.locale)
34982
35249
  : ""));
34983
35250
  };
34984
35251
  _this.renderYearDropdown = function (overrideHide) {
@@ -35962,7 +36229,7 @@ var DatePicker = /** @class */ (function (_super) {
35962
36229
  var newMinutes = Math.min(maxMinutes, currentMinutes + timeIntervals);
35963
36230
  newTime = addMinutes(baseDate, newMinutes);
35964
36231
  }
35965
- var formattedTime = formatDate$1(newTime, formatStr || DatePicker.defaultProps.dateFormat, _this.props.locale);
36232
+ var formattedTime = formatDate$2(newTime, formatStr || DatePicker.defaultProps.dateFormat, _this.props.locale);
35966
36233
  _this.setState({
35967
36234
  preSelection: newTime,
35968
36235
  inputValue: formattedTime,
@@ -36576,7 +36843,7 @@ function computeDateBounds(min, max) {
36576
36843
  maxYear: maxDate ? moment(maxDate, BOUND_FORMAT).year() : undefined,
36577
36844
  };
36578
36845
  }
36579
- function formatDate(value) {
36846
+ function formatDate$1(value) {
36580
36847
  return value ? moment(value).format(DATE_FORMAT) : '';
36581
36848
  }
36582
36849
  function toBoundDate(bound) {
@@ -36650,7 +36917,7 @@ function useDateInput({ value, onChange, onBlur, min, max, disabled, }) {
36650
36917
  const inputRef = React.useRef(null);
36651
36918
  const caretRef = React.useRef(null);
36652
36919
  const bounds = computeDateBounds(min, max);
36653
- const formatted = formatDate(value);
36920
+ const formatted = formatDate$1(value);
36654
36921
  const [text, setText] = React.useState(formatted);
36655
36922
  const [syncedValue, setSyncedValue] = React.useState(formatted);
36656
36923
  // Adopt `value` whenever it changes from the outside — a form reset, a
@@ -36684,7 +36951,7 @@ function useDateInput({ value, onChange, onBlur, min, max, disabled, }) {
36684
36951
  }
36685
36952
  };
36686
36953
  const commit = (date) => {
36687
- const next = formatDate(date);
36954
+ const next = formatDate$1(date);
36688
36955
  setText(next);
36689
36956
  setSyncedValue(next);
36690
36957
  onChange(date);
@@ -36961,6 +37228,348 @@ const FilterSelect = ({ label, value, onValueChange, options, resetValue = 'all'
36961
37228
  return (jsxRuntime.jsxs(Select, { value: value, onValueChange: onValueChange, keepOpenOnSelect: true, children: [jsxRuntime.jsxs(SelectTrigger, { className: cn(TRIGGER_BASE, active && TRIGGER_ACTIVE, triggerClassName), children: [jsxRuntime.jsx(Funnel, { className: cn('h-4 w-4 shrink-0', active ? 'text-primary' : 'text-muted-foreground'), "aria-hidden": "true" }), jsxRuntime.jsxs("span", { className: "flex items-center gap-1", children: [jsxRuntime.jsx(SelectValue, { placeholder: label }), active && (jsxRuntime.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 }))] })] }), jsxRuntime.jsxs(SelectContent, { className: cn(CONTENT_BASE, contentClassName), searchable: searchable, children: [jsxRuntime.jsx(SelectItem, { value: resetValue, withCheckbox: true, children: label }), options.map((opt) => (jsxRuntime.jsx(SelectItem, { value: opt.value, searchValue: opt.searchValue, withCheckbox: true, children: opt.label }, opt.value)))] })] }));
36962
37229
  };
36963
37230
 
37231
+ /**
37232
+ * Horizontal row of option cards behaving as a radio group.
37233
+ * Selected option highlights with primary border + light green background + filled dot.
37234
+ * Unselected options have an empty circle indicator.
37235
+ */
37236
+ function RadioCardGroup({ value, onChange, options, className, disabled, name, ariaLabel, iconSize = 'sm', }) {
37237
+ const iconSizeClasses = iconSize === 'xl'
37238
+ ? '[&_svg]:h-10 [&_svg]:w-10'
37239
+ : iconSize === 'lg'
37240
+ ? '[&_svg]:h-6 [&_svg]:w-6'
37241
+ : '[&_svg]:h-4 [&_svg]:w-4';
37242
+ return (jsxRuntime.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) => {
37243
+ const selected = value === opt.value;
37244
+ const isDisabled = disabled || opt.disabled;
37245
+ return (jsxRuntime.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
37246
+ ? 'min-h-14 items-start py-2 text-left'
37247
+ : 'h-9 items-center py-1.5', selected
37248
+ ? 'border-primary bg-primary/10 text-primary'
37249
+ : 'border-transparent bg-[#FAFAFA] text-foreground dark:bg-[#262626]', isDisabled && 'cursor-not-allowed opacity-50'), children: [jsxRuntime.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 && (jsxRuntime.jsx("span", { className: "block h-2 w-2 rounded-full bg-primary" })) }), jsxRuntime.jsxs("span", { className: "flex min-w-0 flex-1 flex-col items-start", children: [jsxRuntime.jsx("span", { className: "truncate", children: opt.label }), opt.description && (jsxRuntime.jsx("span", { className: cn('mt-0.5 text-xs font-normal', selected ? 'text-primary/80' : 'text-label'), children: opt.description }))] }), opt.icon && (jsxRuntime.jsx("span", { "aria-hidden": "true", className: cn('inline-flex shrink-0 items-center', iconSizeClasses, selected ? 'text-primary' : 'text-label'), children: opt.icon }))] }, opt.value));
37250
+ }) }));
37251
+ }
37252
+
37253
+ /**
37254
+ * One scrolling column of the picker (hours, minutes or period). The selected
37255
+ * row is scrolled into view whenever it changes, so reopening the popover lands
37256
+ * on the current value instead of at midnight.
37257
+ */
37258
+ function TimeColumn({ label, options, selected, onSelect, }) {
37259
+ const listRef = React.useRef(null);
37260
+ const activeRef = React.useRef(null);
37261
+ React.useEffect(() => {
37262
+ const list = listRef.current;
37263
+ const active = activeRef.current;
37264
+ if (!list || !active)
37265
+ return;
37266
+ // `scrollIntoView` would scroll the page as well as the column.
37267
+ list.scrollTop =
37268
+ active.offsetTop - list.clientHeight / 2 + active.clientHeight / 2;
37269
+ }, [selected]);
37270
+ return (jsxRuntime.jsxs("div", { className: "flex min-w-0 flex-col", children: [jsxRuntime.jsx("span", { className: "px-1 pb-1.5 text-center text-[11px] font-medium uppercase tracking-wide text-muted-foreground", children: label }), jsxRuntime.jsx("div", { ref: listRef, role: "listbox", "aria-label": label, className: "scrollbar-thin h-[184px] overflow-y-auto px-1", children: jsxRuntime.jsx("div", { className: "flex flex-col gap-0.5", children: options.map((option) => {
37271
+ const isSelected = option.value === selected;
37272
+ return (jsxRuntime.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
37273
+ ? 'bg-primary text-primary-foreground'
37274
+ : 'text-foreground hover:bg-muted'), children: option.label }, option.value));
37275
+ }) }) })] }));
37276
+ }
37277
+
37278
+ const TIME_PATTERN = /^(\d{1,2}):(\d{2})(?::\d{2})?$/;
37279
+ const pad = (n) => String(n).padStart(2, '0');
37280
+ /** Reads `HH:mm` / `HH:mm:ss`. Returns null for anything out of range. */
37281
+ function parseTimeValue(value) {
37282
+ const match = TIME_PATTERN.exec((value ?? '').trim());
37283
+ if (!match)
37284
+ return null;
37285
+ const hour = Number(match[1]);
37286
+ const minute = Number(match[2]);
37287
+ if (hour > 23 || minute > 59)
37288
+ return null;
37289
+ return { hour, minute };
37290
+ }
37291
+ /** The stored form — always 24-hour, whatever the display format. */
37292
+ function toTimeValue(hour, minute) {
37293
+ return `${pad(hour)}:${pad(minute)}`;
37294
+ }
37295
+ function formatTimeDisplay(time, use24Hour) {
37296
+ if (use24Hour)
37297
+ return toTimeValue(time.hour, time.minute);
37298
+ // 0 and 12 both map to 12 — midnight is 12 AM, noon is 12 PM.
37299
+ const hour12 = time.hour % 12 === 0 ? 12 : time.hour % 12;
37300
+ const period = time.hour < 12 ? 'AM' : 'PM';
37301
+ return `${pad(hour12)}:${pad(time.minute)} ${period}`;
37302
+ }
37303
+ function buildHourOptions(use24Hour) {
37304
+ if (use24Hour) {
37305
+ return Array.from({ length: 24 }, (_, hour) => ({
37306
+ value: hour,
37307
+ label: pad(hour),
37308
+ }));
37309
+ }
37310
+ // 12 first, matching how a clock reads.
37311
+ return Array.from({ length: 12 }, (_, index) => {
37312
+ const hour12 = index === 0 ? 12 : index;
37313
+ return { value: hour12, label: pad(hour12) };
37314
+ });
37315
+ }
37316
+ function buildMinuteOptions(step) {
37317
+ const safeStep = Number.isFinite(step) && step > 0 ? Math.floor(step) : 1;
37318
+ const options = [];
37319
+ for (let minute = 0; minute < 60; minute += safeStep) {
37320
+ options.push({ value: minute, label: pad(minute) });
37321
+ }
37322
+ return options;
37323
+ }
37324
+ /** The hour as the 12-hour column shows it (12, 1…11). */
37325
+ function toHour12(hour) {
37326
+ return hour % 12 === 0 ? 12 : hour % 12;
37327
+ }
37328
+ /** Rebuilds a 24-hour hour from a 12-hour column value and its period. */
37329
+ function fromHour12(hour12, period) {
37330
+ const base = hour12 % 12;
37331
+ return period === 'PM' ? base + 12 : base;
37332
+ }
37333
+ function periodOf(hour) {
37334
+ return hour < 12 ? 'AM' : 'PM';
37335
+ }
37336
+
37337
+ // Only one TimePicker popover should be open at a time — same coordination the
37338
+ // DateInput uses, for the same reason: each is its own `modal` Radix Popover, so
37339
+ // opening a second does not dismiss the first by outside-click.
37340
+ const TIMEPICKER_OPEN_EVENT = 'caratlogic:timepicker-open';
37341
+ const PERIOD_OPTIONS = [
37342
+ { value: 0, label: 'AM' },
37343
+ { value: 1, label: 'PM' },
37344
+ ];
37345
+ function TimePicker({ value, onChange, onBlur, name, className, disabled, placeholder = 'Select time', use24Hour = false, minuteStep = 1, hideFooter = false, }) {
37346
+ const [open, setOpen] = React.useState(false);
37347
+ const instanceId = React.useId();
37348
+ const parsed = parseTimeValue(value);
37349
+ React.useEffect(() => {
37350
+ const onOtherOpen = (e) => {
37351
+ if (e.detail !== instanceId)
37352
+ setOpen(false);
37353
+ };
37354
+ window.addEventListener(TIMEPICKER_OPEN_EVENT, onOtherOpen);
37355
+ return () => window.removeEventListener(TIMEPICKER_OPEN_EVENT, onOtherOpen);
37356
+ }, [instanceId]);
37357
+ const handleOpenChange = (next) => {
37358
+ setOpen(next);
37359
+ if (next) {
37360
+ window.dispatchEvent(new CustomEvent(TIMEPICKER_OPEN_EVENT, { detail: instanceId }));
37361
+ }
37362
+ };
37363
+ /** Picking one column before the others commits against a 00:00 baseline. */
37364
+ const commit = (hour, minute) => {
37365
+ onChange(toTimeValue(hour, minute));
37366
+ };
37367
+ const handleHour = (picked) => {
37368
+ const minute = parsed?.minute ?? 0;
37369
+ if (use24Hour) {
37370
+ commit(picked, minute);
37371
+ return;
37372
+ }
37373
+ commit(fromHour12(picked, parsed ? periodOf(parsed.hour) : 'AM'), minute);
37374
+ };
37375
+ const handleMinute = (picked) => {
37376
+ commit(parsed?.hour ?? 0, picked);
37377
+ };
37378
+ const handlePeriod = (picked) => {
37379
+ const period = picked === 0 ? 'AM' : 'PM';
37380
+ const hour12 = parsed ? toHour12(parsed.hour) : 12;
37381
+ commit(fromHour12(hour12, period), parsed?.minute ?? 0);
37382
+ };
37383
+ const selectedHour = parsed
37384
+ ? use24Hour
37385
+ ? parsed.hour
37386
+ : toHour12(parsed.hour)
37387
+ : null;
37388
+ // NOTE: `open` is driven from the button's onClick rather than
37389
+ // <PopoverTrigger>, matching DateInput — inside a modal <SlideOut> the
37390
+ // trigger's built-in toggle does not fire in Safari. <PopoverAnchor> is pure
37391
+ // positioning, so a single controlled toggle stays the only source of truth.
37392
+ return (jsxRuntime.jsxs(Popover, { open: open, onOpenChange: handleOpenChange, modal: true, children: [jsxRuntime.jsx(PopoverAnchor, { asChild: true, children: jsxRuntime.jsxs("button", { type: "button", name: name, onBlur: onBlur, disabled: disabled, "aria-haspopup": "dialog", "aria-expanded": open, onClick: () => {
37393
+ if (!disabled)
37394
+ handleOpenChange(!open);
37395
+ }, "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: [jsxRuntime.jsx("span", { className: cn('truncate text-sm md:text-sm', parsed ? 'text-foreground' : 'text-placeholder'), children: parsed ? formatTimeDisplay(parsed, use24Hour) : placeholder }), jsxRuntime.jsx("span", { className: "inline-flex h-4 w-4 shrink-0 items-center justify-center text-muted-foreground", children: jsxRuntime.jsx(Clock, { className: "h-4 w-4 stroke-[1.75]" }) })] }) }), jsxRuntime.jsxs(PopoverContent, { align: "start", className: "w-auto p-3", children: [jsxRuntime.jsxs("div", { className: "flex gap-1", children: [jsxRuntime.jsx(TimeColumn, { label: "Hour", options: buildHourOptions(use24Hour), selected: selectedHour, onSelect: handleHour }), jsxRuntime.jsx(TimeColumn, { label: "Min", options: buildMinuteOptions(minuteStep), selected: parsed?.minute ?? null, onSelect: handleMinute }), !use24Hour && (jsxRuntime.jsx(TimeColumn, { label: "AM/PM", options: PERIOD_OPTIONS, selected: parsed ? (periodOf(parsed.hour) === 'AM' ? 0 : 1) : null, onSelect: handlePeriod }))] }), !hideFooter && (jsxRuntime.jsxs("div", { className: "mt-2 flex items-center justify-between gap-2 border-t border-border pt-2", children: [jsxRuntime.jsx("button", { type: "button", onClick: () => {
37396
+ onChange(undefined);
37397
+ setOpen(false);
37398
+ }, 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" }), jsxRuntime.jsx("button", { type: "button", onClick: () => {
37399
+ const now = new Date();
37400
+ commit(now.getHours(), now.getMinutes());
37401
+ setOpen(false);
37402
+ }, 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" })] }))] })] }));
37403
+ }
37404
+
37405
+ const Textarea = ({ label, error, className, ...props }) => {
37406
+ return (jsxRuntime.jsxs("div", { className: "flex flex-col gap-1 w-full text-xs", children: [label && (jsxRuntime.jsx("label", { className: " font-medium text-foreground text-xs", children: label })), jsxRuntime.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
37407
+ disabled:cursor-not-allowed disabled:bg-muted/50 disabled:text-label
37408
+ focus:ring-2 focus:ring-input focus:border-input
37409
+ ${error ? 'border-destructive focus:border-destructive focus:ring-destructive/20' : 'border-input-border'}
37410
+ ${className || ''}
37411
+ `, ...props }), error && jsxRuntime.jsx("p", { className: "text-xs text-destructive", children: error })] }));
37412
+ };
37413
+
37414
+ /** Shown in a read-only control whose value was never filled in. */
37415
+ const NOT_CAPTURED = 'Not captured';
37416
+ const asText = (value) => typeof value === 'string' ? value : '';
37417
+ const asList = (value) => Array.isArray(value)
37418
+ ? value.filter((v) => typeof v === 'string')
37419
+ : [];
37420
+ /** Blank for display purposes — a number `0` is a real value, not blank. */
37421
+ const isBlank = (value) => value === null || value === undefined || asText(value).trim() === '';
37422
+ /** Treats blank strings, empty arrays and empty upload objects as uncaptured. */
37423
+ function isValueEmpty(value) {
37424
+ if (value === null || value === undefined)
37425
+ return true;
37426
+ if (typeof value === 'string')
37427
+ return value.trim() === '';
37428
+ // multiSelect stores an array; uploads store an object.
37429
+ if (Array.isArray(value))
37430
+ return value.length === 0;
37431
+ if (typeof value === 'object')
37432
+ return Object.keys(value).length === 0;
37433
+ return false;
37434
+ }
37435
+
37436
+ /** A snapshotted option field whose list was never filled in. */
37437
+ const NoOptions = () => (jsxRuntime.jsx("p", { className: "py-1.5 text-sm text-muted-foreground", children: "No options configured." }));
37438
+ /**
37439
+ * Renders one control for a field described by `type` and its option metadata.
37440
+ *
37441
+ * Covers the field types shared by every custom-field surface. Types specific
37442
+ * to one feature stay with that feature, which handles them before delegating.
37443
+ */
37444
+ function CustomFieldInput({ field, value, disabled, invalid, onChange, renderUpload, }) {
37445
+ // Read-only fields render even when blank, so say why they are blank rather
37446
+ // than leaving an unexplained empty box.
37447
+ const placeholder = disabled && isBlank(value) ? NOT_CAPTURED : undefined;
37448
+ switch (field.type) {
37449
+ case 'dropdown':
37450
+ case 'radio': {
37451
+ const options = field.options ?? [];
37452
+ if (field.type === 'radio') {
37453
+ if (options.length === 0)
37454
+ return jsxRuntime.jsx(NoOptions, {});
37455
+ return (jsxRuntime.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 })) }));
37456
+ }
37457
+ return (jsxRuntime.jsxs(Select, { disabled: disabled, value: asText(value), onValueChange: (v) => onChange(v), children: [jsxRuntime.jsx(SelectTrigger, { id: field.id, "aria-invalid": invalid, className: "h-9 w-full", children: jsxRuntime.jsx(SelectValue, { placeholder: disabled ? NOT_CAPTURED : (field.placeholder ?? 'Select an option') }) }), jsxRuntime.jsx(SelectContent, { children: options.map((option) => (jsxRuntime.jsx(SelectItem, { value: option, children: option }, option))) })] }));
37458
+ }
37459
+ case 'multiSelect': {
37460
+ const options = field.options ?? [];
37461
+ if (options.length === 0)
37462
+ return jsxRuntime.jsx(NoOptions, {});
37463
+ const selected = asList(value);
37464
+ // Read-only has no trigger to disable, so show the picked values plainly.
37465
+ if (disabled) {
37466
+ return (jsxRuntime.jsx("p", { className: "py-1.5 text-sm text-foreground", children: selected.length > 0 ? selected.join(', ') : NOT_CAPTURED }));
37467
+ }
37468
+ return (jsxRuntime.jsx(FilterMultiSelect, { label: field.placeholder ?? 'Select options', value: selected, onChange: (next) => onChange(next), options: options.map((option) => ({ value: option, label: option })), triggerClassName: "w-full" }));
37469
+ }
37470
+ case 'toggle':
37471
+ return (jsxRuntime.jsx("div", { className: "flex h-9 items-center", children: jsxRuntime.jsx(ToggleSwitch, { checked: value === true, disabled: disabled, onCheckedChange: (checked) => onChange(checked) }) }));
37472
+ case 'time':
37473
+ return (jsxRuntime.jsx(TimePicker, { name: field.id, disabled: disabled, placeholder: disabled ? NOT_CAPTURED : (field.placeholder ?? 'Select time'), value: asText(value), onChange: (next) => onChange(next ?? null) }));
37474
+ case 'email':
37475
+ case 'phone':
37476
+ return (jsxRuntime.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) }));
37477
+ case 'image':
37478
+ case 'file':
37479
+ case 'docsWithExpiry':
37480
+ return (renderUpload?.({
37481
+ id: field.id,
37482
+ variant: field.type,
37483
+ value,
37484
+ expiryDateLabel: field.expiryDateLabel,
37485
+ disabled,
37486
+ onChange,
37487
+ }) ?? null);
37488
+ case 'textarea':
37489
+ return (jsxRuntime.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) }));
37490
+ case 'number':
37491
+ // The unit is carried by the label, so the input keeps its full width.
37492
+ return (jsxRuntime.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" }));
37493
+ case 'date':
37494
+ return (jsxRuntime.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) }));
37495
+ case 'checkbox':
37496
+ return (jsxRuntime.jsxs("label", { className: "flex h-9 cursor-pointer select-none items-center gap-2", children: [jsxRuntime.jsx(Checkbox, { id: field.id, disabled: disabled, checked: value === true, onCheckedChange: (checked) => onChange(checked === true) }), jsxRuntime.jsx("span", { className: "text-sm text-muted-foreground", children: disabled ? (value === true ? 'Yes' : 'No') : 'Yes' })] }));
37497
+ default:
37498
+ return (jsxRuntime.jsx(Input, { id: field.id, disabled: disabled, placeholder: placeholder ?? field.placeholder, "aria-invalid": invalid, value: asText(value), onChange: (e) => onChange(e.target.value) }));
37499
+ }
37500
+ }
37501
+
37502
+ const formatDate = (iso) => {
37503
+ const date = new Date(iso);
37504
+ return Number.isNaN(date.getTime())
37505
+ ? iso
37506
+ : date.toLocaleDateString(undefined, {
37507
+ day: '2-digit',
37508
+ month: 'short',
37509
+ year: 'numeric',
37510
+ });
37511
+ };
37512
+ const isUpload = (value) => !!value && typeof value === 'object' && 'key' in value;
37513
+ const FileLink = ({ file }) => file.url ? (jsxRuntime.jsxs("a", { href: file.url, target: "_blank", rel: "noreferrer", className: "inline-flex items-center gap-1.5 text-primary hover:underline", children: [jsxRuntime.jsx(FileText, { className: "h-3.5 w-3.5 shrink-0", "aria-hidden": true }), file.name] })) : (jsxRuntime.jsxs("span", { className: "inline-flex items-center gap-1.5", children: [jsxRuntime.jsx(FileText, { className: "h-3.5 w-3.5 shrink-0 text-muted-foreground", "aria-hidden": true }), file.name] }));
37514
+ /** Muted dash, so an uncaptured field reads as blank rather than as a value. */
37515
+ const EmptyValue = () => (jsxRuntime.jsx("span", { className: "text-muted-foreground/60", children: "\u2014" }));
37516
+ /**
37517
+ * A captured value rendered for reading rather than editing. Edit forms use
37518
+ * real inputs; a disabled input full of placeholders is much harder to scan
37519
+ * than plain text, and reads as broken rather than empty.
37520
+ */
37521
+ function CustomFieldValue({ type, value, unit, }) {
37522
+ if (isValueEmpty(value))
37523
+ return jsxRuntime.jsx(EmptyValue, {});
37524
+ switch (type) {
37525
+ case 'checkbox':
37526
+ case 'toggle':
37527
+ return jsxRuntime.jsx("span", { children: value === true ? 'Yes' : 'No' });
37528
+ case 'date':
37529
+ return jsxRuntime.jsx("span", { children: typeof value === 'string' ? formatDate(value) : '—' });
37530
+ case 'multiSelect':
37531
+ return (jsxRuntime.jsx("span", { children: Array.isArray(value) ? value.join(', ') : String(value) }));
37532
+ case 'image':
37533
+ case 'file':
37534
+ return isUpload(value) ? jsxRuntime.jsx(FileLink, { file: value }) : jsxRuntime.jsx(EmptyValue, {});
37535
+ case 'docsWithExpiry': {
37536
+ const doc = value;
37537
+ if (!isUpload(doc.file))
37538
+ return jsxRuntime.jsx(EmptyValue, {});
37539
+ return (jsxRuntime.jsxs("span", { className: "flex flex-col gap-0.5", children: [jsxRuntime.jsx(FileLink, { file: doc.file }), doc.expiryDate && (jsxRuntime.jsxs("span", { className: "text-xs text-muted-foreground", children: ["Expires ", formatDate(doc.expiryDate)] }))] }));
37540
+ }
37541
+ case 'number': {
37542
+ const text = typeof value === 'number' ? value.toLocaleString() : String(value);
37543
+ return (jsxRuntime.jsx("span", { className: "tabular-nums", children: unit ? `${text} ${unit}` : text }));
37544
+ }
37545
+ default:
37546
+ return (jsxRuntime.jsx("span", { className: "whitespace-pre-wrap break-words", children: String(value) }));
37547
+ }
37548
+ }
37549
+
37550
+ const FIELD_TYPE_ICONS = {
37551
+ text: Type,
37552
+ textarea: AlignLeft,
37553
+ email: Mail,
37554
+ phone: Phone,
37555
+ number: Hash,
37556
+ date: Calendar$1,
37557
+ time: Clock,
37558
+ dropdown: CircleChevronDown,
37559
+ radio: CircleDot,
37560
+ checkbox: SquareCheckBig,
37561
+ multiSelect: ListChecks,
37562
+ toggle: ToggleLeft,
37563
+ boolean: ToggleLeft,
37564
+ image: Image$1,
37565
+ file: Paperclip,
37566
+ docsWithExpiry: Paperclip,
37567
+ };
37568
+ /** Glyph for a field type, so a list of fields is scannable at a glance. */
37569
+ function fieldTypeIcon(type) {
37570
+ return FIELD_TYPE_ICONS[type] ?? Type;
37571
+ }
37572
+
36964
37573
  /**
36965
37574
  * Compact "time ago" label, e.g. "5m ago". Falls back to a locale date past a
36966
37575
  * week so older entries stay scannable.
@@ -37992,28 +38601,6 @@ function PurchaseOrderComboBox({ selectedItem, onSelect, fetchPurchaseOrders, se
37992
38601
  : '', fetchPage: fetchPage, resolveById: resolveById, preSelectedId: preSelectedId, searchPlaceholder: searchPlaceholder, emptyMessage: "No purchase orders found.", disabled: disabled, className: className, align: align }));
37993
38602
  }
37994
38603
 
37995
- /**
37996
- * Horizontal row of option cards behaving as a radio group.
37997
- * Selected option highlights with primary border + light green background + filled dot.
37998
- * Unselected options have an empty circle indicator.
37999
- */
38000
- function RadioCardGroup({ value, onChange, options, className, disabled, name, ariaLabel, iconSize = 'sm', }) {
38001
- const iconSizeClasses = iconSize === 'xl'
38002
- ? '[&_svg]:h-10 [&_svg]:w-10'
38003
- : iconSize === 'lg'
38004
- ? '[&_svg]:h-6 [&_svg]:w-6'
38005
- : '[&_svg]:h-4 [&_svg]:w-4';
38006
- return (jsxRuntime.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) => {
38007
- const selected = value === opt.value;
38008
- const isDisabled = disabled || opt.disabled;
38009
- return (jsxRuntime.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
38010
- ? 'min-h-14 items-start py-2 text-left'
38011
- : 'h-9 items-center py-1.5', selected
38012
- ? 'border-primary bg-primary/10 text-primary'
38013
- : 'border-transparent bg-[#FAFAFA] text-foreground dark:bg-[#262626]', isDisabled && 'cursor-not-allowed opacity-50'), children: [jsxRuntime.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 && (jsxRuntime.jsx("span", { className: "block h-2 w-2 rounded-full bg-primary" })) }), jsxRuntime.jsxs("span", { className: "flex min-w-0 flex-1 flex-col items-start", children: [jsxRuntime.jsx("span", { className: "truncate", children: opt.label }), opt.description && (jsxRuntime.jsx("span", { className: cn('mt-0.5 text-xs font-normal', selected ? 'text-primary/80' : 'text-label'), children: opt.description }))] }), opt.icon && (jsxRuntime.jsx("span", { "aria-hidden": "true", className: cn('inline-flex shrink-0 items-center', iconSizeClasses, selected ? 'text-primary' : 'text-label'), children: opt.icon }))] }, opt.value));
38014
- }) }));
38015
- }
38016
-
38017
38604
  // ::- Persistent data structure representing an ordered mapping from
38018
38605
  // strings to values, with some convenient update methods.
38019
38606
  function OrderedMap(content) {
@@ -66702,158 +67289,6 @@ function TagsInput({ value, onChange, placeholder, helperText, uppercase = false
66702
67289
  return (jsxRuntime.jsxs("div", { className: "w-full", children: [jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [jsxRuntime.jsx(Input, { value: input, onChange: onInputChange, onKeyDown: onInputKeyDown, placeholder: placeholder || 'Type and Press Enter', className: "flex-1 bg-formInput" }), jsxRuntime.jsxs(Button$1, { type: "button", onClick: addTag, disabled: addDisabled, className: "h-9 gap-1.5 disabled:opacity-50", children: [jsxRuntime.jsx(Plus, { className: "h-4 w-4" }), "Add"] })] }), helperText && (jsxRuntime.jsx("p", { className: "mt-1.5 text-xs text-muted-foreground", children: helperText })), value.length > 0 && (jsxRuntime.jsx("div", { className: "mt-3 flex flex-wrap gap-2", children: value.map((tag, idx) => (jsxRuntime.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, jsxRuntime.jsx("button", { type: "button", onClick: () => removeTag(idx), "aria-label": `Remove ${tag}`, className: "cursor-pointer text-muted-foreground transition-colors hover:text-foreground", children: jsxRuntime.jsx(X$2, { className: "h-3 w-3" }) })] }, idx))) }))] }));
66703
67290
  }
66704
67291
 
66705
- /**
66706
- * One scrolling column of the picker (hours, minutes or period). The selected
66707
- * row is scrolled into view whenever it changes, so reopening the popover lands
66708
- * on the current value instead of at midnight.
66709
- */
66710
- function TimeColumn({ label, options, selected, onSelect, }) {
66711
- const listRef = React.useRef(null);
66712
- const activeRef = React.useRef(null);
66713
- React.useEffect(() => {
66714
- const list = listRef.current;
66715
- const active = activeRef.current;
66716
- if (!list || !active)
66717
- return;
66718
- // `scrollIntoView` would scroll the page as well as the column.
66719
- list.scrollTop =
66720
- active.offsetTop - list.clientHeight / 2 + active.clientHeight / 2;
66721
- }, [selected]);
66722
- return (jsxRuntime.jsxs("div", { className: "flex min-w-0 flex-col", children: [jsxRuntime.jsx("span", { className: "px-1 pb-1.5 text-center text-[11px] font-medium uppercase tracking-wide text-muted-foreground", children: label }), jsxRuntime.jsx("div", { ref: listRef, role: "listbox", "aria-label": label, className: "scrollbar-thin h-[184px] overflow-y-auto px-1", children: jsxRuntime.jsx("div", { className: "flex flex-col gap-0.5", children: options.map((option) => {
66723
- const isSelected = option.value === selected;
66724
- return (jsxRuntime.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
66725
- ? 'bg-primary text-primary-foreground'
66726
- : 'text-foreground hover:bg-muted'), children: option.label }, option.value));
66727
- }) }) })] }));
66728
- }
66729
-
66730
- const TIME_PATTERN = /^(\d{1,2}):(\d{2})(?::\d{2})?$/;
66731
- const pad = (n) => String(n).padStart(2, '0');
66732
- /** Reads `HH:mm` / `HH:mm:ss`. Returns null for anything out of range. */
66733
- function parseTimeValue(value) {
66734
- const match = TIME_PATTERN.exec((value ?? '').trim());
66735
- if (!match)
66736
- return null;
66737
- const hour = Number(match[1]);
66738
- const minute = Number(match[2]);
66739
- if (hour > 23 || minute > 59)
66740
- return null;
66741
- return { hour, minute };
66742
- }
66743
- /** The stored form — always 24-hour, whatever the display format. */
66744
- function toTimeValue(hour, minute) {
66745
- return `${pad(hour)}:${pad(minute)}`;
66746
- }
66747
- function formatTimeDisplay(time, use24Hour) {
66748
- if (use24Hour)
66749
- return toTimeValue(time.hour, time.minute);
66750
- // 0 and 12 both map to 12 — midnight is 12 AM, noon is 12 PM.
66751
- const hour12 = time.hour % 12 === 0 ? 12 : time.hour % 12;
66752
- const period = time.hour < 12 ? 'AM' : 'PM';
66753
- return `${pad(hour12)}:${pad(time.minute)} ${period}`;
66754
- }
66755
- function buildHourOptions(use24Hour) {
66756
- if (use24Hour) {
66757
- return Array.from({ length: 24 }, (_, hour) => ({
66758
- value: hour,
66759
- label: pad(hour),
66760
- }));
66761
- }
66762
- // 12 first, matching how a clock reads.
66763
- return Array.from({ length: 12 }, (_, index) => {
66764
- const hour12 = index === 0 ? 12 : index;
66765
- return { value: hour12, label: pad(hour12) };
66766
- });
66767
- }
66768
- function buildMinuteOptions(step) {
66769
- const safeStep = Number.isFinite(step) && step > 0 ? Math.floor(step) : 1;
66770
- const options = [];
66771
- for (let minute = 0; minute < 60; minute += safeStep) {
66772
- options.push({ value: minute, label: pad(minute) });
66773
- }
66774
- return options;
66775
- }
66776
- /** The hour as the 12-hour column shows it (12, 1…11). */
66777
- function toHour12(hour) {
66778
- return hour % 12 === 0 ? 12 : hour % 12;
66779
- }
66780
- /** Rebuilds a 24-hour hour from a 12-hour column value and its period. */
66781
- function fromHour12(hour12, period) {
66782
- const base = hour12 % 12;
66783
- return period === 'PM' ? base + 12 : base;
66784
- }
66785
- function periodOf(hour) {
66786
- return hour < 12 ? 'AM' : 'PM';
66787
- }
66788
-
66789
- // Only one TimePicker popover should be open at a time — same coordination the
66790
- // DateInput uses, for the same reason: each is its own `modal` Radix Popover, so
66791
- // opening a second does not dismiss the first by outside-click.
66792
- const TIMEPICKER_OPEN_EVENT = 'caratlogic:timepicker-open';
66793
- const PERIOD_OPTIONS = [
66794
- { value: 0, label: 'AM' },
66795
- { value: 1, label: 'PM' },
66796
- ];
66797
- function TimePicker({ value, onChange, onBlur, name, className, disabled, placeholder = 'Select time', use24Hour = false, minuteStep = 1, hideFooter = false, }) {
66798
- const [open, setOpen] = React.useState(false);
66799
- const instanceId = React.useId();
66800
- const parsed = parseTimeValue(value);
66801
- React.useEffect(() => {
66802
- const onOtherOpen = (e) => {
66803
- if (e.detail !== instanceId)
66804
- setOpen(false);
66805
- };
66806
- window.addEventListener(TIMEPICKER_OPEN_EVENT, onOtherOpen);
66807
- return () => window.removeEventListener(TIMEPICKER_OPEN_EVENT, onOtherOpen);
66808
- }, [instanceId]);
66809
- const handleOpenChange = (next) => {
66810
- setOpen(next);
66811
- if (next) {
66812
- window.dispatchEvent(new CustomEvent(TIMEPICKER_OPEN_EVENT, { detail: instanceId }));
66813
- }
66814
- };
66815
- /** Picking one column before the others commits against a 00:00 baseline. */
66816
- const commit = (hour, minute) => {
66817
- onChange(toTimeValue(hour, minute));
66818
- };
66819
- const handleHour = (picked) => {
66820
- const minute = parsed?.minute ?? 0;
66821
- if (use24Hour) {
66822
- commit(picked, minute);
66823
- return;
66824
- }
66825
- commit(fromHour12(picked, parsed ? periodOf(parsed.hour) : 'AM'), minute);
66826
- };
66827
- const handleMinute = (picked) => {
66828
- commit(parsed?.hour ?? 0, picked);
66829
- };
66830
- const handlePeriod = (picked) => {
66831
- const period = picked === 0 ? 'AM' : 'PM';
66832
- const hour12 = parsed ? toHour12(parsed.hour) : 12;
66833
- commit(fromHour12(hour12, period), parsed?.minute ?? 0);
66834
- };
66835
- const selectedHour = parsed
66836
- ? use24Hour
66837
- ? parsed.hour
66838
- : toHour12(parsed.hour)
66839
- : null;
66840
- // NOTE: `open` is driven from the button's onClick rather than
66841
- // <PopoverTrigger>, matching DateInput — inside a modal <SlideOut> the
66842
- // trigger's built-in toggle does not fire in Safari. <PopoverAnchor> is pure
66843
- // positioning, so a single controlled toggle stays the only source of truth.
66844
- return (jsxRuntime.jsxs(Popover, { open: open, onOpenChange: handleOpenChange, modal: true, children: [jsxRuntime.jsx(PopoverAnchor, { asChild: true, children: jsxRuntime.jsxs("button", { type: "button", name: name, onBlur: onBlur, disabled: disabled, "aria-haspopup": "dialog", "aria-expanded": open, onClick: () => {
66845
- if (!disabled)
66846
- handleOpenChange(!open);
66847
- }, "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: [jsxRuntime.jsx("span", { className: cn('truncate text-sm md:text-sm', parsed ? 'text-foreground' : 'text-placeholder'), children: parsed ? formatTimeDisplay(parsed, use24Hour) : placeholder }), jsxRuntime.jsx("span", { className: "inline-flex h-4 w-4 shrink-0 items-center justify-center text-muted-foreground", children: jsxRuntime.jsx(Clock, { className: "h-4 w-4 stroke-[1.75]" }) })] }) }), jsxRuntime.jsxs(PopoverContent, { align: "start", className: "w-auto p-3", children: [jsxRuntime.jsxs("div", { className: "flex gap-1", children: [jsxRuntime.jsx(TimeColumn, { label: "Hour", options: buildHourOptions(use24Hour), selected: selectedHour, onSelect: handleHour }), jsxRuntime.jsx(TimeColumn, { label: "Min", options: buildMinuteOptions(minuteStep), selected: parsed?.minute ?? null, onSelect: handleMinute }), !use24Hour && (jsxRuntime.jsx(TimeColumn, { label: "AM/PM", options: PERIOD_OPTIONS, selected: parsed ? (periodOf(parsed.hour) === 'AM' ? 0 : 1) : null, onSelect: handlePeriod }))] }), !hideFooter && (jsxRuntime.jsxs("div", { className: "mt-2 flex items-center justify-between gap-2 border-t border-border pt-2", children: [jsxRuntime.jsx("button", { type: "button", onClick: () => {
66848
- onChange(undefined);
66849
- setOpen(false);
66850
- }, 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" }), jsxRuntime.jsx("button", { type: "button", onClick: () => {
66851
- const now = new Date();
66852
- commit(now.getHours(), now.getMinutes());
66853
- setOpen(false);
66854
- }, 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" })] }))] })] }));
66855
- }
66856
-
66857
67292
  function mapToItem(w, separator) {
66858
67293
  const id = w.id || w.warehouseId || '';
66859
67294
  if (!id)
@@ -67229,6 +67664,236 @@ function ZoomSplitViewer({ src, alt = 'Preview', zoom = 2, lensSize = 160, paneO
67229
67664
  }) })), isTouchDevice && (jsxRuntime.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' }))] }));
67230
67665
  }
67231
67666
 
67667
+ /**
67668
+ * Categories carry both a colour and a distinct icon — the colour alone never
67669
+ * distinguishes them, so the feed stays readable without relying on hue.
67670
+ */
67671
+ const ACTIVITY_CATEGORY_META = {
67672
+ customer: {
67673
+ label: 'Customer',
67674
+ icon: UserPlus,
67675
+ iconClassName: 'bg-secondary text-secondary-foreground',
67676
+ dotClassName: 'bg-secondary-foreground',
67677
+ },
67678
+ form: {
67679
+ label: 'Form',
67680
+ icon: FileCheck2,
67681
+ iconClassName: 'bg-primary/10 text-primary',
67682
+ dotClassName: 'bg-primary',
67683
+ },
67684
+ communication: {
67685
+ label: 'Communication',
67686
+ icon: BellRing,
67687
+ iconClassName: 'bg-warning/10 text-warning',
67688
+ dotClassName: 'bg-warning',
67689
+ },
67690
+ verification: {
67691
+ label: 'Verification',
67692
+ icon: KeyRound,
67693
+ iconClassName: 'bg-info/10 text-info',
67694
+ dotClassName: 'bg-info',
67695
+ },
67696
+ status: {
67697
+ label: 'Status',
67698
+ icon: ShieldCheck,
67699
+ iconClassName: 'bg-success/10 text-success',
67700
+ dotClassName: 'bg-success',
67701
+ },
67702
+ };
67703
+ const ACTIVITY_CATEGORIES = Object.keys(ACTIVITY_CATEGORY_META);
67704
+ /** Feed grid: time gutter, icon rail, content, expand control. */
67705
+ const ACTIVITY_ROW_GRID = 'grid grid-cols-[52px_32px_minmax(0,1fr)_36px] gap-x-3';
67706
+
67707
+ const ACTIVITY_FEED_ARIA = {
67708
+ feedLabel: 'Activity feed',
67709
+ expandRow: (summary) => `Show details for: ${summary}`,
67710
+ collapseRow: (summary) => `Hide details for: ${summary}`,
67711
+ expandAutomatedGroup: (count) => `Show ${count} automated ${count === 1 ? 'entry' : 'entries'}`,
67712
+ collapseAutomatedGroup: (count) => `Hide ${count} automated ${count === 1 ? 'entry' : 'entries'}`,
67713
+ copyReference: 'Copy reference',
67714
+ changesTable: 'Fields changed by this entry',
67715
+ };
67716
+
67717
+ function formatActivityTime(iso) {
67718
+ const date = new Date(iso);
67719
+ if (Number.isNaN(date.getTime()))
67720
+ return '';
67721
+ return date.toLocaleTimeString('en-GB', {
67722
+ hour: '2-digit',
67723
+ minute: '2-digit',
67724
+ hour12: false,
67725
+ });
67726
+ }
67727
+ function startOfDay(date) {
67728
+ return new Date(date.getFullYear(), date.getMonth(), date.getDate()).getTime();
67729
+ }
67730
+ /** "Today" / "Yesterday" / the weekday, so a reader can place an entry at a glance. */
67731
+ function relativeDayLabel(date, today) {
67732
+ const dayMs = 24 * 60 * 60 * 1000;
67733
+ const diff = Math.round((startOfDay(today) - startOfDay(date)) / dayMs);
67734
+ if (diff === 0)
67735
+ return 'Today';
67736
+ if (diff === 1)
67737
+ return 'Yesterday';
67738
+ return date.toLocaleDateString('en-GB', { weekday: 'long' });
67739
+ }
67740
+ function fullDateLabel(date) {
67741
+ return date.toLocaleDateString('en-GB', {
67742
+ weekday: 'long',
67743
+ day: 'numeric',
67744
+ month: 'short',
67745
+ year: 'numeric',
67746
+ });
67747
+ }
67748
+ /**
67749
+ * Collapse runs of consecutive automated entries into one row. Only runs of two
67750
+ * or more are worth collapsing — hiding a single reminder behind a toggle costs
67751
+ * a click and saves nothing.
67752
+ */
67753
+ function collapseAutomated(entries, groupKey) {
67754
+ const rows = [];
67755
+ let run = [];
67756
+ const flush = () => {
67757
+ if (run.length === 0)
67758
+ return;
67759
+ if (run.length === 1)
67760
+ rows.push({ kind: 'entry', entry: run[0] });
67761
+ else
67762
+ rows.push({
67763
+ kind: 'automated-group',
67764
+ id: `${groupKey}-auto-${rows.length}`,
67765
+ entries: run,
67766
+ });
67767
+ run = [];
67768
+ };
67769
+ for (const entry of entries) {
67770
+ if (entry.actor.kind === 'system') {
67771
+ run.push(entry);
67772
+ continue;
67773
+ }
67774
+ flush();
67775
+ rows.push({ kind: 'entry', entry });
67776
+ }
67777
+ flush();
67778
+ return rows;
67779
+ }
67780
+ /**
67781
+ * Bucket entries by calendar day, preserving the order they arrive in so the
67782
+ * caller keeps control of newest-first vs oldest-first.
67783
+ */
67784
+ function groupActivityByDay(entries, groupAutomated, now = new Date()) {
67785
+ const buckets = new Map();
67786
+ for (const entry of entries) {
67787
+ const date = new Date(entry.createdAt);
67788
+ const key = Number.isNaN(date.getTime())
67789
+ ? 'unknown'
67790
+ : String(startOfDay(date));
67791
+ const bucket = buckets.get(key);
67792
+ if (bucket)
67793
+ bucket.entries.push(entry);
67794
+ else
67795
+ buckets.set(key, { date, entries: [entry] });
67796
+ }
67797
+ return Array.from(buckets.entries()).map(([key, bucket]) => {
67798
+ const valid = !Number.isNaN(bucket.date.getTime());
67799
+ return {
67800
+ key,
67801
+ label: valid ? relativeDayLabel(bucket.date, now) : 'Unknown date',
67802
+ dateLabel: valid ? fullDateLabel(bucket.date) : '',
67803
+ count: bucket.entries.length,
67804
+ rows: groupAutomated
67805
+ ? collapseAutomated(bucket.entries, key)
67806
+ : bucket.entries.map((entry) => ({ kind: 'entry', entry })),
67807
+ };
67808
+ });
67809
+ }
67810
+ /** Initials for the contact avatar, capped at two letters. */
67811
+ function initialsOf(name) {
67812
+ const parts = name.trim().split(/\s+/).filter(Boolean);
67813
+ if (parts.length === 0)
67814
+ return '?';
67815
+ return parts
67816
+ .slice(0, 2)
67817
+ .map((part) => part[0])
67818
+ .join('')
67819
+ .toUpperCase();
67820
+ }
67821
+ /** Shortens a correlation id so it never pushes the footer's actions off-row. */
67822
+ function truncateReference(reference, max = 28) {
67823
+ return reference.length > max ? `${reference.slice(0, max)}…` : reference;
67824
+ }
67825
+
67826
+ function ActivityDayHeader({ group, }) {
67827
+ return (jsxRuntime.jsxs("div", { className: "flex items-baseline justify-between gap-3 border-b border-border bg-muted/40 px-5 py-3", children: [jsxRuntime.jsxs("div", { className: "flex items-baseline gap-2", children: [jsxRuntime.jsx("h3", { className: "text-sm font-semibold text-foreground", children: group.label }), jsxRuntime.jsx("span", { className: "text-xs text-muted-foreground", children: group.dateLabel })] }), jsxRuntime.jsxs("span", { className: "text-xs text-muted-foreground", children: [group.count, " ", group.count === 1 ? 'event' : 'events'] })] }));
67828
+ }
67829
+ function StatusChip({ status, tone, }) {
67830
+ return (jsxRuntime.jsx(Badge, { appearance: "soft", color: tone, size: "sm", children: status }));
67831
+ }
67832
+ function CategoryIcon({ entry, showRail, }) {
67833
+ const meta = ACTIVITY_CATEGORY_META[entry.category];
67834
+ const Icon = meta.icon;
67835
+ return (jsxRuntime.jsxs("div", { className: "relative self-stretch", children: [jsxRuntime.jsx("span", { className: cn('relative z-10 flex size-8 items-center justify-center rounded-full', meta.iconClassName), children: jsxRuntime.jsx(Icon, { className: "size-4", "aria-hidden": "true" }) }), showRail && (jsxRuntime.jsx("span", { "aria-hidden": "true", className: "absolute top-9 -bottom-4 left-1/2 w-px -translate-x-1/2 bg-border" }))] }));
67836
+ }
67837
+ function ChangesTable({ changes, }) {
67838
+ return (jsxRuntime.jsxs("div", { className: "overflow-hidden rounded-lg border border-border bg-card", children: [jsxRuntime.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 ? (jsxRuntime.jsx("p", { className: "px-3 py-2.5 text-xs text-muted-foreground", children: "No field detail was recorded for this entry." })) : (jsxRuntime.jsxs("table", { className: "w-full text-sm", "aria-label": ACTIVITY_FEED_ARIA.changesTable, children: [jsxRuntime.jsx("thead", { children: jsxRuntime.jsxs("tr", { className: "bg-muted/40 text-left text-xs text-muted-foreground", children: [jsxRuntime.jsx("th", { scope: "col", className: "px-3 py-1.5 font-normal", children: "Field" }), jsxRuntime.jsx("th", { scope: "col", className: "px-3 py-1.5 font-normal", children: "Before" }), jsxRuntime.jsx("th", { scope: "col", className: "px-3 py-1.5 font-normal", children: "After" })] }) }), jsxRuntime.jsx("tbody", { children: changes.map((change) => (jsxRuntime.jsxs("tr", { className: "border-t border-border align-top", children: [jsxRuntime.jsx("th", { scope: "row", className: "px-3 py-2 text-left text-xs font-normal text-secondary-foreground", children: change.field }), jsxRuntime.jsx("td", { className: "px-3 py-2 text-xs text-muted-foreground line-through", children: change.before ?? 'Not set' }), jsxRuntime.jsx("td", { className: "px-3 py-2 text-xs font-medium text-foreground", children: change.after ?? 'Not set' })] }, change.field))) })] }))] }));
67839
+ }
67840
+ function ContactCard({ contact, }) {
67841
+ const name = contact.name || contact.company || contact.email || 'Unknown contact';
67842
+ const secondary = [
67843
+ contact.company === name ? undefined : contact.company,
67844
+ contact.email,
67845
+ ]
67846
+ .filter(Boolean)
67847
+ .join(' · ');
67848
+ return (jsxRuntime.jsxs("div", { className: "overflow-hidden rounded-lg border border-border bg-card", children: [jsxRuntime.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" }), jsxRuntime.jsxs("div", { className: "flex flex-col gap-2.5 px-3 py-2.5", children: [jsxRuntime.jsxs("div", { className: "flex items-center gap-2.5", children: [jsxRuntime.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) }), jsxRuntime.jsxs("div", { className: "min-w-0", children: [jsxRuntime.jsx("p", { className: "truncate text-sm font-semibold text-foreground", children: name }), secondary && (jsxRuntime.jsx("p", { className: "truncate text-xs text-muted-foreground", children: secondary }))] })] }), (contact.roles?.length || contact.isActive !== undefined) && (jsxRuntime.jsxs("div", { className: "flex flex-wrap gap-1", children: [contact.roles?.map((role) => (jsxRuntime.jsx(Badge, { appearance: "soft", color: "secondary", size: "sm", children: role }, role))), contact.isActive !== undefined && (jsxRuntime.jsx(Badge, { appearance: "soft", color: contact.isActive ? 'success' : 'secondary', size: "sm", children: contact.isActive ? 'Active' : 'Inactive' }))] }))] })] }));
67849
+ }
67850
+ function ActivityDetail({ entry }) {
67851
+ const showChanges = entry.changes.length > 0 || entry.changesExpected === true;
67852
+ return (jsxRuntime.jsxs("div", { className: "flex flex-col gap-3 pt-1", children: [(showChanges || entry.contact) && (jsxRuntime.jsxs("div", { className: cn('grid gap-3', showChanges && entry.contact
67853
+ ? 'lg:grid-cols-[minmax(0,1.4fr)_minmax(0,1fr)]'
67854
+ : 'grid-cols-1'), children: [showChanges && jsxRuntime.jsx(ChangesTable, { changes: entry.changes }), entry.contact && jsxRuntime.jsx(ContactCard, { contact: entry.contact })] })), entry.notes && (jsxRuntime.jsxs("div", { className: "rounded-lg border border-border bg-card px-3 py-2", children: [jsxRuntime.jsx("p", { className: "text-[0.625rem] font-semibold tracking-wide text-muted-foreground uppercase", children: "Notes" }), jsxRuntime.jsx("p", { className: "mt-1 text-sm text-foreground", children: entry.notes })] })), jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center justify-between gap-3", children: [jsxRuntime.jsxs("div", { className: "flex items-center gap-1.5 text-xs text-muted-foreground", children: [jsxRuntime.jsx("span", { children: "Ref" }), jsxRuntime.jsx("code", { className: "rounded bg-secondary px-1.5 py-0.5 font-mono text-[0.6875rem] text-secondary-foreground", children: truncateReference(entry.reference) }), jsxRuntime.jsx(CopyButton, { value: entry.reference })] }), !!entry.links?.length && (jsxRuntime.jsx("div", { className: "flex flex-wrap items-center gap-4", children: entry.links.map((link) => (jsxRuntime.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))) }))] })] }));
67855
+ }
67856
+ function ActivityRow({ entry, showRail, statusColors, }) {
67857
+ const [open, setOpen] = React.useState(false);
67858
+ const sentence = `${entry.actor.name} ${entry.action}${entry.subject ? ` ${entry.subject.label}` : ''}`;
67859
+ const tone = (status) => statusColors[status] ?? 'secondary';
67860
+ return (jsxRuntime.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: [jsxRuntime.jsx("time", { dateTime: entry.createdAt, className: "pt-1.5 font-mono text-xs text-muted-foreground", children: formatActivityTime(entry.createdAt) }), jsxRuntime.jsx(CategoryIcon, { entry: entry, showRail: showRail }), jsxRuntime.jsxs("div", { className: "flex min-w-0 flex-col gap-1.5", children: [jsxRuntime.jsxs("p", { className: "pt-1 text-sm leading-5 text-foreground", children: [jsxRuntime.jsx("span", { className: "font-semibold", children: entry.actor.name }), ' ', entry.action, entry.subject && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [' ', jsxRuntime.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) && (jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center gap-1.5", children: [entry.statusFrom && (jsxRuntime.jsx(StatusChip, { status: entry.statusFrom, tone: tone(entry.statusFrom) })), entry.statusFrom && entry.statusTo && (jsxRuntime.jsx(ArrowRight, { className: "size-3.5 shrink-0 text-muted-foreground", "aria-hidden": "true" })), entry.statusTo && (jsxRuntime.jsx(StatusChip, { status: entry.statusTo, tone: tone(entry.statusTo) }))] })), entry.detail && (jsxRuntime.jsx("p", { className: "text-xs text-muted-foreground", children: entry.detail })), open && jsxRuntime.jsx(ActivityDetail, { entry: entry })] }), jsxRuntime.jsx("button", { type: "button", onClick: () => setOpen((value) => !value), "aria-expanded": open, "aria-label": open
67861
+ ? ACTIVITY_FEED_ARIA.collapseRow(sentence)
67862
+ : 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: jsxRuntime.jsx(ChevronDown, { className: cn('size-4 transition-transform', open && 'rotate-180'), "aria-hidden": "true" }) })] }));
67863
+ }
67864
+ /**
67865
+ * A run of automated entries folded into one line. Scheduled reminders are the
67866
+ * bulk of a busy day and rarely the thing a reader came for.
67867
+ */
67868
+ function ActivityAutomatedGroupRow({ entries, statusColors, }) {
67869
+ const [open, setOpen] = React.useState(false);
67870
+ const count = entries.length;
67871
+ const preview = entries
67872
+ .map((entry) => entry.detail || entry.action)
67873
+ .slice(0, 2)
67874
+ .join(' · ');
67875
+ return (jsxRuntime.jsxs("div", { className: "border-b border-border last:border-b-0", children: [jsxRuntime.jsxs("div", { className: cn(ACTIVITY_ROW_GRID, 'items-start px-5 py-3.5'), children: [jsxRuntime.jsx("time", { dateTime: entries[0].createdAt, className: "pt-1.5 font-mono text-xs text-muted-foreground", children: formatActivityTime(entries[0].createdAt) }), jsxRuntime.jsx(CategoryIcon, { entry: entries[0], showRail: false }), jsxRuntime.jsxs("div", { className: "flex min-w-0 flex-col gap-1", children: [jsxRuntime.jsxs("p", { className: "pt-1 text-sm leading-5 text-foreground", children: [jsxRuntime.jsx("span", { className: "font-semibold", children: "System" }), " sent ", count, " automatic", ' ', count === 1 ? 'entry' : 'entries'] }), preview && (jsxRuntime.jsx("p", { className: "truncate text-xs text-muted-foreground", children: preview }))] }), jsxRuntime.jsx(Button$1, { variant: "outline", size: "sm", onClick: () => setOpen((value) => !value), "aria-expanded": open, "aria-label": open
67876
+ ? ACTIVITY_FEED_ARIA.collapseAutomatedGroup(count)
67877
+ : ACTIVITY_FEED_ARIA.expandAutomatedGroup(count), className: "h-8 justify-self-end px-2 text-xs font-medium", children: open ? 'Hide' : `Show ${count}` })] }), open && (jsxRuntime.jsx("div", { className: "border-t border-border bg-muted/20", children: entries.map((entry, index) => (jsxRuntime.jsx(ActivityRow, { entry: entry, showRail: index < entries.length - 1, statusColors: statusColors }, entry.id))) }))] }));
67878
+ }
67879
+
67880
+ function FeedSkeleton() {
67881
+ return (jsxRuntime.jsx("div", { className: "flex flex-col gap-2 p-4", "aria-hidden": "true", children: Array.from({ length: 6 }).map((_, index) => (jsxRuntime.jsx(SquareSkeleton, { height: 56, className: "w-full", rounded: "md" }, index))) }));
67882
+ }
67883
+ /**
67884
+ * Day-grouped activity feed: a time gutter, a category icon on a connecting
67885
+ * rail, a one-sentence description, and per-row details on demand.
67886
+ *
67887
+ * Presentational by design — it fetches nothing and knows no domain vocabulary.
67888
+ * The host maps its records to `ActivityEntry` and owns paging via `onLoadMore`.
67889
+ */
67890
+ function ActivityFeed({ entries, isLoading = false, hasMore = false, isLoadingMore = false, onLoadMore, groupAutomated = true, fill = false, statusColors = {}, emptyMessage = 'No activity recorded yet.', className, }) {
67891
+ const groups = React.useMemo(() => groupActivityByDay(entries, groupAutomated), [entries, groupAutomated]);
67892
+ return (jsxRuntime.jsxs("div", { className: cn('flex flex-col gap-4', fill && 'flex-1', className), children: [jsxRuntime.jsx("section", { "aria-label": ACTIVITY_FEED_ARIA.feedLabel, className: cn('overflow-hidden rounded-xl border border-border bg-card', fill && 'flex-1'), children: isLoading ? (jsxRuntime.jsx(FeedSkeleton, {})) : groups.length === 0 ? (jsxRuntime.jsxs("div", { className: "flex flex-col items-center gap-2 py-16", children: [jsxRuntime.jsx(History, { className: "size-8 text-muted-foreground/40", "aria-hidden": "true" }), jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground", children: emptyMessage })] })) : (groups.map((group) => (jsxRuntime.jsxs("div", { children: [jsxRuntime.jsx(ActivityDayHeader, { group: group }), group.rows.map((row, index) => row.kind === 'entry' ? (jsxRuntime.jsx(ActivityRow, { entry: row.entry,
67893
+ // The rail links a row to the next one, so the last in a day stops.
67894
+ showRail: index < group.rows.length - 1, statusColors: statusColors }, row.entry.id)) : (jsxRuntime.jsx(ActivityAutomatedGroupRow, { entries: row.entries, statusColors: statusColors }, row.id)))] }, group.key)))) }), !isLoading && groups.length > 0 && (jsxRuntime.jsx("div", { className: "flex justify-center", children: hasMore && onLoadMore ? (jsxRuntime.jsx(Button$1, { variant: "outline", onClick: onLoadMore, disabled: isLoadingMore, children: isLoadingMore ? 'Loading…' : 'Load earlier activity' })) : (jsxRuntime.jsx("p", { className: "text-xs text-muted-foreground", children: "You've reached the end of the activity log." })) }))] }));
67895
+ }
67896
+
67232
67897
  /** 1px border on the track, and the gap between thumb and track. */
67233
67898
  const TRACK_BORDER = 1;
67234
67899
  const THUMB_INSET = 2;
@@ -76979,8 +77644,11 @@ var RichTextAreaImpl = /*#__PURE__*/Object.freeze({
76979
77644
  RichTextarea: RichTextarea
76980
77645
  });
76981
77646
 
77647
+ exports.ACTIVITY_CATEGORIES = ACTIVITY_CATEGORIES;
77648
+ exports.ACTIVITY_CATEGORY_META = ACTIVITY_CATEGORY_META;
76982
77649
  exports.ActionBadge = ActionBadge;
76983
77650
  exports.ActionButtonWithTooltip = ActionButtonWithTooltip;
77651
+ exports.ActivityFeed = ActivityFeed;
76984
77652
  exports.AdvancedSearchDrawer = AdvancedSearchDrawer;
76985
77653
  exports.Alert = Alert;
76986
77654
  exports.ApiComboBox = ApiComboBox;
@@ -77010,6 +77678,8 @@ exports.CurrencyDisplayTabs = CurrencyDisplayTabs;
77010
77678
  exports.CurrencyInput = CurrencyInput;
77011
77679
  exports.CurrencyToggle = CurrencyToggle;
77012
77680
  exports.CustomCombobox = CustomCombobox;
77681
+ exports.CustomFieldInput = CustomFieldInput;
77682
+ exports.CustomFieldValue = CustomFieldValue;
77013
77683
  exports.CustomTable = CustomTable;
77014
77684
  exports.CustomizeColumnsDrawer = CustomizeColumnsDrawer;
77015
77685
  exports.DIAMOND_AUDIT_CONFIG = DIAMOND_AUDIT_CONFIG;
@@ -77035,6 +77705,7 @@ exports.DropdownMenuSub = DropdownMenuSub;
77035
77705
  exports.DropdownMenuSubContent = DropdownMenuSubContent;
77036
77706
  exports.DropdownMenuSubTrigger = DropdownMenuSubTrigger;
77037
77707
  exports.DropdownMenuTrigger = DropdownMenuTrigger;
77708
+ exports.EmptyValue = EmptyValue;
77038
77709
  exports.EntityHeader = EntityHeader;
77039
77710
  exports.Field = Field;
77040
77711
  exports.FieldSkeleton = FieldSkeleton;
@@ -77071,6 +77742,7 @@ exports.MetricTile = MetricTile;
77071
77742
  exports.Modal = Modal;
77072
77743
  exports.MoreInfoPanel = MoreInfoPanel;
77073
77744
  exports.MoreInfoTrigger = MoreInfoTrigger;
77745
+ exports.NOT_CAPTURED = NOT_CAPTURED;
77074
77746
  exports.Navbar = Navbar;
77075
77747
  exports.NavbarActions = NavbarActions;
77076
77748
  exports.NavbarAvatar = NavbarAvatar;
@@ -77157,6 +77829,8 @@ exports.TruncateTooltip = TruncateTooltip;
77157
77829
  exports.WarehouseComboBox = WarehouseComboBox;
77158
77830
  exports.WarehouseFilter = WarehouseFilter;
77159
77831
  exports.ZoomSplitViewer = ZoomSplitViewer;
77832
+ exports.asList = asList;
77833
+ exports.asText = asText;
77160
77834
  exports.badgeVariants = badgeVariants;
77161
77835
  exports.buildBulkShareTitle = buildBulkShareTitle;
77162
77836
  exports.buildInventoryPublicUrl = buildInventoryPublicUrl;
@@ -77169,6 +77843,7 @@ exports.countries = countries;
77169
77843
  exports.countryByCode = countryByCode;
77170
77844
  exports.createVideoMediaItem = createVideoMediaItem;
77171
77845
  exports.dropdownMenuItemDestructiveClass = dropdownMenuItemDestructiveClass;
77846
+ exports.fieldTypeIcon = fieldTypeIcon;
77172
77847
  exports.findRegion = findRegion;
77173
77848
  exports.flagEmoji = flagEmoji;
77174
77849
  exports.formatAddressLocation = formatAddressLocation;
@@ -77183,10 +77858,12 @@ exports.getStatesOfCountry = getStatesOfCountry;
77183
77858
  exports.iconButtonVariants = iconButtonVariants;
77184
77859
  exports.inAppNotificationCardA11y = inAppNotificationCardA11y;
77185
77860
  exports.inAppNotificationsPanelA11y = inAppNotificationsPanelA11y;
77861
+ exports.isBlank = isBlank;
77186
77862
  exports.isIndiaCountry = isIndiaCountry;
77187
77863
  exports.isKnownRegion = isKnownRegion;
77188
77864
  exports.isPathActive = isPathActive;
77189
77865
  exports.isValidAlpha2CountryCode = isValidAlpha2CountryCode;
77866
+ exports.isValueEmpty = isValueEmpty;
77190
77867
  exports.notify = notify;
77191
77868
  exports.releaseStaleOverlayBodyLock = releaseStaleOverlayBodyLock;
77192
77869
  exports.renderBadge = renderBadge;