@caratlogic/design-system 0.1.13 → 0.1.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.esm.js CHANGED
@@ -2668,12 +2668,27 @@ const createLucideIcon = (iconName, iconNode) => {
2668
2668
  */
2669
2669
 
2670
2670
 
2671
- const __iconNode$18 = [
2671
+ const __iconNode$1j = [
2672
+ ["path", { d: "M15 12H3", key: "6jk70r" }],
2673
+ ["path", { d: "M17 18H3", key: "1amg6g" }],
2674
+ ["path", { d: "M21 6H3", key: "1jwq7v" }]
2675
+ ];
2676
+ const AlignLeft = createLucideIcon("align-left", __iconNode$1j);
2677
+
2678
+ /**
2679
+ * @license lucide-react v0.539.0 - ISC
2680
+ *
2681
+ * This source code is licensed under the ISC license.
2682
+ * See the LICENSE file in the root directory of this source tree.
2683
+ */
2684
+
2685
+
2686
+ const __iconNode$1i = [
2672
2687
  ["rect", { width: "20", height: "5", x: "2", y: "3", rx: "1", key: "1wp1u1" }],
2673
2688
  ["path", { d: "M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8", key: "1s80jp" }],
2674
2689
  ["path", { d: "M10 12h4", key: "a56b0p" }]
2675
2690
  ];
2676
- const Archive = createLucideIcon("archive", __iconNode$18);
2691
+ const Archive = createLucideIcon("archive", __iconNode$1i);
2677
2692
 
2678
2693
  /**
2679
2694
  * @license lucide-react v0.539.0 - ISC
@@ -2683,11 +2698,11 @@ const Archive = createLucideIcon("archive", __iconNode$18);
2683
2698
  */
2684
2699
 
2685
2700
 
2686
- const __iconNode$17 = [
2701
+ const __iconNode$1h = [
2687
2702
  ["path", { d: "m12 19-7-7 7-7", key: "1l729n" }],
2688
2703
  ["path", { d: "M19 12H5", key: "x3x0zl" }]
2689
2704
  ];
2690
- const ArrowLeft = createLucideIcon("arrow-left", __iconNode$17);
2705
+ const ArrowLeft = createLucideIcon("arrow-left", __iconNode$1h);
2691
2706
 
2692
2707
  /**
2693
2708
  * @license lucide-react v0.539.0 - ISC
@@ -2697,11 +2712,11 @@ const ArrowLeft = createLucideIcon("arrow-left", __iconNode$17);
2697
2712
  */
2698
2713
 
2699
2714
 
2700
- const __iconNode$16 = [
2715
+ const __iconNode$1g = [
2701
2716
  ["path", { d: "M5 12h14", key: "1ays0h" }],
2702
2717
  ["path", { d: "m12 5 7 7-7 7", key: "xquz4c" }]
2703
2718
  ];
2704
- const ArrowRight = createLucideIcon("arrow-right", __iconNode$16);
2719
+ const ArrowRight = createLucideIcon("arrow-right", __iconNode$1g);
2705
2720
 
2706
2721
  /**
2707
2722
  * @license lucide-react v0.539.0 - ISC
@@ -2711,11 +2726,11 @@ const ArrowRight = createLucideIcon("arrow-right", __iconNode$16);
2711
2726
  */
2712
2727
 
2713
2728
 
2714
- const __iconNode$15 = [
2729
+ const __iconNode$1f = [
2715
2730
  ["path", { d: "M4.929 4.929 19.07 19.071", key: "196cmz" }],
2716
2731
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }]
2717
2732
  ];
2718
- const Ban = createLucideIcon("ban", __iconNode$15);
2733
+ const Ban = createLucideIcon("ban", __iconNode$1f);
2719
2734
 
2720
2735
  /**
2721
2736
  * @license lucide-react v0.539.0 - ISC
@@ -2725,7 +2740,7 @@ const Ban = createLucideIcon("ban", __iconNode$15);
2725
2740
  */
2726
2741
 
2727
2742
 
2728
- const __iconNode$14 = [
2743
+ const __iconNode$1e = [
2729
2744
  ["path", { d: "M10.268 21a2 2 0 0 0 3.464 0", key: "vwvbt9" }],
2730
2745
  [
2731
2746
  "path",
@@ -2736,7 +2751,7 @@ const __iconNode$14 = [
2736
2751
  ],
2737
2752
  ["circle", { cx: "18", cy: "8", r: "3", key: "1g0gzu" }]
2738
2753
  ];
2739
- const BellDot = createLucideIcon("bell-dot", __iconNode$14);
2754
+ const BellDot = createLucideIcon("bell-dot", __iconNode$1e);
2740
2755
 
2741
2756
  /**
2742
2757
  * @license lucide-react v0.539.0 - ISC
@@ -2746,7 +2761,7 @@ const BellDot = createLucideIcon("bell-dot", __iconNode$14);
2746
2761
  */
2747
2762
 
2748
2763
 
2749
- const __iconNode$13 = [
2764
+ const __iconNode$1d = [
2750
2765
  ["path", { d: "M10.268 21a2 2 0 0 0 3.464 0", key: "vwvbt9" }],
2751
2766
  [
2752
2767
  "path",
@@ -2756,7 +2771,7 @@ const __iconNode$13 = [
2756
2771
  }
2757
2772
  ]
2758
2773
  ];
2759
- const Bell = createLucideIcon("bell", __iconNode$13);
2774
+ const Bell = createLucideIcon("bell", __iconNode$1d);
2760
2775
 
2761
2776
  /**
2762
2777
  * @license lucide-react v0.539.0 - ISC
@@ -2766,13 +2781,13 @@ const Bell = createLucideIcon("bell", __iconNode$13);
2766
2781
  */
2767
2782
 
2768
2783
 
2769
- const __iconNode$12 = [
2784
+ const __iconNode$1c = [
2770
2785
  [
2771
2786
  "path",
2772
2787
  { d: "M6 12h9a4 4 0 0 1 0 8H7a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h7a4 4 0 0 1 0 8", key: "mg9rjx" }
2773
2788
  ]
2774
2789
  ];
2775
- const Bold$1 = createLucideIcon("bold", __iconNode$12);
2790
+ const Bold$1 = createLucideIcon("bold", __iconNode$1c);
2776
2791
 
2777
2792
  /**
2778
2793
  * @license lucide-react v0.539.0 - ISC
@@ -2782,7 +2797,7 @@ const Bold$1 = createLucideIcon("bold", __iconNode$12);
2782
2797
  */
2783
2798
 
2784
2799
 
2785
- const __iconNode$11 = [
2800
+ const __iconNode$1b = [
2786
2801
  ["path", { d: "M8 2v4", key: "1cmpym" }],
2787
2802
  ["path", { d: "M16 2v4", key: "4m81vk" }],
2788
2803
  ["rect", { width: "18", height: "18", x: "3", y: "4", rx: "2", key: "1hopcy" }],
@@ -2794,7 +2809,7 @@ const __iconNode$11 = [
2794
2809
  ["path", { d: "M12 18h.01", key: "mhygvu" }],
2795
2810
  ["path", { d: "M16 18h.01", key: "kzsmim" }]
2796
2811
  ];
2797
- const CalendarDays = createLucideIcon("calendar-days", __iconNode$11);
2812
+ const CalendarDays = createLucideIcon("calendar-days", __iconNode$1b);
2798
2813
 
2799
2814
  /**
2800
2815
  * @license lucide-react v0.539.0 - ISC
@@ -2804,13 +2819,13 @@ const CalendarDays = createLucideIcon("calendar-days", __iconNode$11);
2804
2819
  */
2805
2820
 
2806
2821
 
2807
- const __iconNode$10 = [
2822
+ const __iconNode$1a = [
2808
2823
  ["path", { d: "M8 2v4", key: "1cmpym" }],
2809
2824
  ["path", { d: "M16 2v4", key: "4m81vk" }],
2810
2825
  ["rect", { width: "18", height: "18", x: "3", y: "4", rx: "2", key: "1hopcy" }],
2811
2826
  ["path", { d: "M3 10h18", key: "8toen8" }]
2812
2827
  ];
2813
- const Calendar$1 = createLucideIcon("calendar", __iconNode$10);
2828
+ const Calendar$1 = createLucideIcon("calendar", __iconNode$1a);
2814
2829
 
2815
2830
  /**
2816
2831
  * @license lucide-react v0.539.0 - ISC
@@ -2820,11 +2835,11 @@ const Calendar$1 = createLucideIcon("calendar", __iconNode$10);
2820
2835
  */
2821
2836
 
2822
2837
 
2823
- const __iconNode$$ = [
2838
+ const __iconNode$19 = [
2824
2839
  ["path", { d: "M18 6 7 17l-5-5", key: "116fxf" }],
2825
2840
  ["path", { d: "m22 10-7.5 7.5L13 16", key: "ke71qq" }]
2826
2841
  ];
2827
- const CheckCheck = createLucideIcon("check-check", __iconNode$$);
2842
+ const CheckCheck = createLucideIcon("check-check", __iconNode$19);
2828
2843
 
2829
2844
  /**
2830
2845
  * @license lucide-react v0.539.0 - ISC
@@ -2834,8 +2849,8 @@ const CheckCheck = createLucideIcon("check-check", __iconNode$$);
2834
2849
  */
2835
2850
 
2836
2851
 
2837
- const __iconNode$_ = [["path", { d: "M20 6 9 17l-5-5", key: "1gmf2c" }]];
2838
- const Check = createLucideIcon("check", __iconNode$_);
2852
+ const __iconNode$18 = [["path", { d: "M20 6 9 17l-5-5", key: "1gmf2c" }]];
2853
+ const Check = createLucideIcon("check", __iconNode$18);
2839
2854
 
2840
2855
  /**
2841
2856
  * @license lucide-react v0.539.0 - ISC
@@ -2845,8 +2860,8 @@ const Check = createLucideIcon("check", __iconNode$_);
2845
2860
  */
2846
2861
 
2847
2862
 
2848
- const __iconNode$Z = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]];
2849
- const ChevronDown = createLucideIcon("chevron-down", __iconNode$Z);
2863
+ const __iconNode$17 = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]];
2864
+ const ChevronDown = createLucideIcon("chevron-down", __iconNode$17);
2850
2865
 
2851
2866
  /**
2852
2867
  * @license lucide-react v0.539.0 - ISC
@@ -2856,8 +2871,8 @@ const ChevronDown = createLucideIcon("chevron-down", __iconNode$Z);
2856
2871
  */
2857
2872
 
2858
2873
 
2859
- const __iconNode$Y = [["path", { d: "m15 18-6-6 6-6", key: "1wnfg3" }]];
2860
- const ChevronLeft = createLucideIcon("chevron-left", __iconNode$Y);
2874
+ const __iconNode$16 = [["path", { d: "m15 18-6-6 6-6", key: "1wnfg3" }]];
2875
+ const ChevronLeft = createLucideIcon("chevron-left", __iconNode$16);
2861
2876
 
2862
2877
  /**
2863
2878
  * @license lucide-react v0.539.0 - ISC
@@ -2867,8 +2882,8 @@ const ChevronLeft = createLucideIcon("chevron-left", __iconNode$Y);
2867
2882
  */
2868
2883
 
2869
2884
 
2870
- const __iconNode$X = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]];
2871
- const ChevronRight = createLucideIcon("chevron-right", __iconNode$X);
2885
+ const __iconNode$15 = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]];
2886
+ const ChevronRight = createLucideIcon("chevron-right", __iconNode$15);
2872
2887
 
2873
2888
  /**
2874
2889
  * @license lucide-react v0.539.0 - ISC
@@ -2878,8 +2893,8 @@ const ChevronRight = createLucideIcon("chevron-right", __iconNode$X);
2878
2893
  */
2879
2894
 
2880
2895
 
2881
- const __iconNode$W = [["path", { d: "m18 15-6-6-6 6", key: "153udz" }]];
2882
- const ChevronUp = createLucideIcon("chevron-up", __iconNode$W);
2896
+ const __iconNode$14 = [["path", { d: "m18 15-6-6-6 6", key: "153udz" }]];
2897
+ const ChevronUp = createLucideIcon("chevron-up", __iconNode$14);
2883
2898
 
2884
2899
  /**
2885
2900
  * @license lucide-react v0.539.0 - ISC
@@ -2889,11 +2904,11 @@ const ChevronUp = createLucideIcon("chevron-up", __iconNode$W);
2889
2904
  */
2890
2905
 
2891
2906
 
2892
- const __iconNode$V = [
2907
+ const __iconNode$13 = [
2893
2908
  ["path", { d: "m11 17-5-5 5-5", key: "13zhaf" }],
2894
2909
  ["path", { d: "m18 17-5-5 5-5", key: "h8a8et" }]
2895
2910
  ];
2896
- const ChevronsLeft = createLucideIcon("chevrons-left", __iconNode$V);
2911
+ const ChevronsLeft = createLucideIcon("chevrons-left", __iconNode$13);
2897
2912
 
2898
2913
  /**
2899
2914
  * @license lucide-react v0.539.0 - ISC
@@ -2903,11 +2918,11 @@ const ChevronsLeft = createLucideIcon("chevrons-left", __iconNode$V);
2903
2918
  */
2904
2919
 
2905
2920
 
2906
- const __iconNode$U = [
2921
+ const __iconNode$12 = [
2907
2922
  ["path", { d: "m6 17 5-5-5-5", key: "xnjwq" }],
2908
2923
  ["path", { d: "m13 17 5-5-5-5", key: "17xmmf" }]
2909
2924
  ];
2910
- const ChevronsRight = createLucideIcon("chevrons-right", __iconNode$U);
2925
+ const ChevronsRight = createLucideIcon("chevrons-right", __iconNode$12);
2911
2926
 
2912
2927
  /**
2913
2928
  * @license lucide-react v0.539.0 - ISC
@@ -2917,12 +2932,12 @@ const ChevronsRight = createLucideIcon("chevrons-right", __iconNode$U);
2917
2932
  */
2918
2933
 
2919
2934
 
2920
- const __iconNode$T = [
2935
+ const __iconNode$11 = [
2921
2936
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
2922
2937
  ["line", { x1: "12", x2: "12", y1: "8", y2: "12", key: "1pkeuh" }],
2923
2938
  ["line", { x1: "12", x2: "12.01", y1: "16", y2: "16", key: "4dfq90" }]
2924
2939
  ];
2925
- const CircleAlert = createLucideIcon("circle-alert", __iconNode$T);
2940
+ const CircleAlert = createLucideIcon("circle-alert", __iconNode$11);
2926
2941
 
2927
2942
  /**
2928
2943
  * @license lucide-react v0.539.0 - ISC
@@ -2932,11 +2947,11 @@ const CircleAlert = createLucideIcon("circle-alert", __iconNode$T);
2932
2947
  */
2933
2948
 
2934
2949
 
2935
- const __iconNode$S = [
2950
+ const __iconNode$10 = [
2936
2951
  ["path", { d: "M21.801 10A10 10 0 1 1 17 3.335", key: "yps3ct" }],
2937
2952
  ["path", { d: "m9 11 3 3L22 4", key: "1pflzl" }]
2938
2953
  ];
2939
- const CircleCheckBig = createLucideIcon("circle-check-big", __iconNode$S);
2954
+ const CircleCheckBig = createLucideIcon("circle-check-big", __iconNode$10);
2940
2955
 
2941
2956
  /**
2942
2957
  * @license lucide-react v0.539.0 - ISC
@@ -2946,11 +2961,11 @@ const CircleCheckBig = createLucideIcon("circle-check-big", __iconNode$S);
2946
2961
  */
2947
2962
 
2948
2963
 
2949
- const __iconNode$R = [
2964
+ const __iconNode$$ = [
2950
2965
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
2951
2966
  ["path", { d: "m9 12 2 2 4-4", key: "dzmm74" }]
2952
2967
  ];
2953
- const CircleCheck = createLucideIcon("circle-check", __iconNode$R);
2968
+ const CircleCheck = createLucideIcon("circle-check", __iconNode$$);
2954
2969
 
2955
2970
  /**
2956
2971
  * @license lucide-react v0.539.0 - ISC
@@ -2960,12 +2975,40 @@ const CircleCheck = createLucideIcon("circle-check", __iconNode$R);
2960
2975
  */
2961
2976
 
2962
2977
 
2963
- const __iconNode$Q = [
2978
+ const __iconNode$_ = [
2979
+ ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
2980
+ ["path", { d: "m16 10-4 4-4-4", key: "894hmk" }]
2981
+ ];
2982
+ const CircleChevronDown = createLucideIcon("circle-chevron-down", __iconNode$_);
2983
+
2984
+ /**
2985
+ * @license lucide-react v0.539.0 - ISC
2986
+ *
2987
+ * This source code is licensed under the ISC license.
2988
+ * See the LICENSE file in the root directory of this source tree.
2989
+ */
2990
+
2991
+
2992
+ const __iconNode$Z = [
2993
+ ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
2994
+ ["circle", { cx: "12", cy: "12", r: "1", key: "41hilf" }]
2995
+ ];
2996
+ const CircleDot = createLucideIcon("circle-dot", __iconNode$Z);
2997
+
2998
+ /**
2999
+ * @license lucide-react v0.539.0 - ISC
3000
+ *
3001
+ * This source code is licensed under the ISC license.
3002
+ * See the LICENSE file in the root directory of this source tree.
3003
+ */
3004
+
3005
+
3006
+ const __iconNode$Y = [
2964
3007
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
2965
3008
  ["path", { d: "m15 9-6 6", key: "1uzhvr" }],
2966
3009
  ["path", { d: "m9 9 6 6", key: "z0biqf" }]
2967
3010
  ];
2968
- const CircleX = createLucideIcon("circle-x", __iconNode$Q);
3011
+ const CircleX = createLucideIcon("circle-x", __iconNode$Y);
2969
3012
 
2970
3013
  /**
2971
3014
  * @license lucide-react v0.539.0 - ISC
@@ -2975,8 +3018,8 @@ const CircleX = createLucideIcon("circle-x", __iconNode$Q);
2975
3018
  */
2976
3019
 
2977
3020
 
2978
- const __iconNode$P = [["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }]];
2979
- const Circle = createLucideIcon("circle", __iconNode$P);
3021
+ const __iconNode$X = [["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }]];
3022
+ const Circle = createLucideIcon("circle", __iconNode$X);
2980
3023
 
2981
3024
  /**
2982
3025
  * @license lucide-react v0.539.0 - ISC
@@ -2986,11 +3029,11 @@ const Circle = createLucideIcon("circle", __iconNode$P);
2986
3029
  */
2987
3030
 
2988
3031
 
2989
- const __iconNode$O = [
3032
+ const __iconNode$W = [
2990
3033
  ["path", { d: "M12 6v6l4 2", key: "mmk7yg" }],
2991
3034
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }]
2992
3035
  ];
2993
- const Clock = createLucideIcon("clock", __iconNode$O);
3036
+ const Clock = createLucideIcon("clock", __iconNode$W);
2994
3037
 
2995
3038
  /**
2996
3039
  * @license lucide-react v0.539.0 - ISC
@@ -3000,11 +3043,11 @@ const Clock = createLucideIcon("clock", __iconNode$O);
3000
3043
  */
3001
3044
 
3002
3045
 
3003
- const __iconNode$N = [
3046
+ const __iconNode$V = [
3004
3047
  ["rect", { width: "14", height: "14", x: "8", y: "8", rx: "2", ry: "2", key: "17jyea" }],
3005
3048
  ["path", { d: "M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2", key: "zix9uf" }]
3006
3049
  ];
3007
- const Copy = createLucideIcon("copy", __iconNode$N);
3050
+ const Copy = createLucideIcon("copy", __iconNode$V);
3008
3051
 
3009
3052
  /**
3010
3053
  * @license lucide-react v0.539.0 - ISC
@@ -3014,11 +3057,11 @@ const Copy = createLucideIcon("copy", __iconNode$N);
3014
3057
  */
3015
3058
 
3016
3059
 
3017
- const __iconNode$M = [
3060
+ const __iconNode$U = [
3018
3061
  ["path", { d: "M6 2v14a2 2 0 0 0 2 2h14", key: "ron5a4" }],
3019
3062
  ["path", { d: "M18 22V8a2 2 0 0 0-2-2H2", key: "7s9ehn" }]
3020
3063
  ];
3021
- const Crop = createLucideIcon("crop", __iconNode$M);
3064
+ const Crop = createLucideIcon("crop", __iconNode$U);
3022
3065
 
3023
3066
  /**
3024
3067
  * @license lucide-react v0.539.0 - ISC
@@ -3028,12 +3071,12 @@ const Crop = createLucideIcon("crop", __iconNode$M);
3028
3071
  */
3029
3072
 
3030
3073
 
3031
- const __iconNode$L = [
3074
+ const __iconNode$T = [
3032
3075
  ["path", { d: "M12 15V3", key: "m9g1x1" }],
3033
3076
  ["path", { d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4", key: "ih7n3h" }],
3034
3077
  ["path", { d: "m7 10 5 5 5-5", key: "brsn70" }]
3035
3078
  ];
3036
- const Download = createLucideIcon("download", __iconNode$L);
3079
+ const Download = createLucideIcon("download", __iconNode$T);
3037
3080
 
3038
3081
  /**
3039
3082
  * @license lucide-react v0.539.0 - ISC
@@ -3043,12 +3086,12 @@ const Download = createLucideIcon("download", __iconNode$L);
3043
3086
  */
3044
3087
 
3045
3088
 
3046
- const __iconNode$K = [
3089
+ const __iconNode$S = [
3047
3090
  ["circle", { cx: "12", cy: "12", r: "1", key: "41hilf" }],
3048
3091
  ["circle", { cx: "12", cy: "5", r: "1", key: "gxeob9" }],
3049
3092
  ["circle", { cx: "12", cy: "19", r: "1", key: "lyex9k" }]
3050
3093
  ];
3051
- const EllipsisVertical = createLucideIcon("ellipsis-vertical", __iconNode$K);
3094
+ const EllipsisVertical = createLucideIcon("ellipsis-vertical", __iconNode$S);
3052
3095
 
3053
3096
  /**
3054
3097
  * @license lucide-react v0.539.0 - ISC
@@ -3058,12 +3101,12 @@ const EllipsisVertical = createLucideIcon("ellipsis-vertical", __iconNode$K);
3058
3101
  */
3059
3102
 
3060
3103
 
3061
- const __iconNode$J = [
3104
+ const __iconNode$R = [
3062
3105
  ["circle", { cx: "12", cy: "12", r: "1", key: "41hilf" }],
3063
3106
  ["circle", { cx: "19", cy: "12", r: "1", key: "1wjl8i" }],
3064
3107
  ["circle", { cx: "5", cy: "12", r: "1", key: "1pcz8c" }]
3065
3108
  ];
3066
- const Ellipsis = createLucideIcon("ellipsis", __iconNode$J);
3109
+ const Ellipsis = createLucideIcon("ellipsis", __iconNode$R);
3067
3110
 
3068
3111
  /**
3069
3112
  * @license lucide-react v0.539.0 - ISC
@@ -3073,12 +3116,12 @@ const Ellipsis = createLucideIcon("ellipsis", __iconNode$J);
3073
3116
  */
3074
3117
 
3075
3118
 
3076
- const __iconNode$I = [
3119
+ const __iconNode$Q = [
3077
3120
  ["path", { d: "M15 3h6v6", key: "1q9fwt" }],
3078
3121
  ["path", { d: "M10 14 21 3", key: "gplh6r" }],
3079
3122
  ["path", { d: "M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6", key: "a6xqqp" }]
3080
3123
  ];
3081
- const ExternalLink = createLucideIcon("external-link", __iconNode$I);
3124
+ const ExternalLink = createLucideIcon("external-link", __iconNode$Q);
3082
3125
 
3083
3126
  /**
3084
3127
  * @license lucide-react v0.539.0 - ISC
@@ -3088,7 +3131,7 @@ const ExternalLink = createLucideIcon("external-link", __iconNode$I);
3088
3131
  */
3089
3132
 
3090
3133
 
3091
- const __iconNode$H = [
3134
+ const __iconNode$P = [
3092
3135
  [
3093
3136
  "path",
3094
3137
  {
@@ -3098,7 +3141,7 @@ const __iconNode$H = [
3098
3141
  ],
3099
3142
  ["circle", { cx: "12", cy: "12", r: "3", key: "1v7zrd" }]
3100
3143
  ];
3101
- const Eye = createLucideIcon("eye", __iconNode$H);
3144
+ const Eye = createLucideIcon("eye", __iconNode$P);
3102
3145
 
3103
3146
  /**
3104
3147
  * @license lucide-react v0.539.0 - ISC
@@ -3108,13 +3151,13 @@ const Eye = createLucideIcon("eye", __iconNode$H);
3108
3151
  */
3109
3152
 
3110
3153
 
3111
- const __iconNode$G = [
3154
+ const __iconNode$O = [
3112
3155
  [
3113
3156
  "path",
3114
3157
  { d: "M18 2h-3a5 5 0 0 0-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 0 1 1-1h3z", key: "1jg4f8" }
3115
3158
  ]
3116
3159
  ];
3117
- const Facebook = createLucideIcon("facebook", __iconNode$G);
3160
+ const Facebook = createLucideIcon("facebook", __iconNode$O);
3118
3161
 
3119
3162
  /**
3120
3163
  * @license lucide-react v0.539.0 - ISC
@@ -3124,7 +3167,7 @@ const Facebook = createLucideIcon("facebook", __iconNode$G);
3124
3167
  */
3125
3168
 
3126
3169
 
3127
- const __iconNode$F = [
3170
+ const __iconNode$N = [
3128
3171
  ["path", { d: "M12 22h6a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v3.072", key: "n6s66f" }],
3129
3172
  ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }],
3130
3173
  [
@@ -3136,7 +3179,7 @@ const __iconNode$F = [
3136
3179
  ],
3137
3180
  ["circle", { cx: "5", cy: "14", r: "3", key: "ufru5t" }]
3138
3181
  ];
3139
- const FileBadge = createLucideIcon("file-badge", __iconNode$F);
3182
+ const FileBadge = createLucideIcon("file-badge", __iconNode$N);
3140
3183
 
3141
3184
  /**
3142
3185
  * @license lucide-react v0.539.0 - ISC
@@ -3146,14 +3189,14 @@ const FileBadge = createLucideIcon("file-badge", __iconNode$F);
3146
3189
  */
3147
3190
 
3148
3191
 
3149
- const __iconNode$E = [
3192
+ const __iconNode$M = [
3150
3193
  ["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }],
3151
3194
  ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }],
3152
3195
  ["path", { d: "M10 9H8", key: "b1mrlr" }],
3153
3196
  ["path", { d: "M16 13H8", key: "t4e002" }],
3154
3197
  ["path", { d: "M16 17H8", key: "z1uh3a" }]
3155
3198
  ];
3156
- const FileText = createLucideIcon("file-text", __iconNode$E);
3199
+ const FileText = createLucideIcon("file-text", __iconNode$M);
3157
3200
 
3158
3201
  /**
3159
3202
  * @license lucide-react v0.539.0 - ISC
@@ -3163,7 +3206,7 @@ const FileText = createLucideIcon("file-text", __iconNode$E);
3163
3206
  */
3164
3207
 
3165
3208
 
3166
- const __iconNode$D = [
3209
+ const __iconNode$L = [
3167
3210
  [
3168
3211
  "path",
3169
3212
  {
@@ -3172,7 +3215,7 @@ const __iconNode$D = [
3172
3215
  }
3173
3216
  ]
3174
3217
  ];
3175
- const Funnel = createLucideIcon("funnel", __iconNode$D);
3218
+ const Funnel = createLucideIcon("funnel", __iconNode$L);
3176
3219
 
3177
3220
  /**
3178
3221
  * @license lucide-react v0.539.0 - ISC
@@ -3182,7 +3225,7 @@ const Funnel = createLucideIcon("funnel", __iconNode$D);
3182
3225
  */
3183
3226
 
3184
3227
 
3185
- const __iconNode$C = [
3228
+ const __iconNode$K = [
3186
3229
  ["circle", { cx: "12", cy: "9", r: "1", key: "124mty" }],
3187
3230
  ["circle", { cx: "19", cy: "9", r: "1", key: "1ruzo2" }],
3188
3231
  ["circle", { cx: "5", cy: "9", r: "1", key: "1a8b28" }],
@@ -3190,7 +3233,7 @@ const __iconNode$C = [
3190
3233
  ["circle", { cx: "19", cy: "15", r: "1", key: "1a92ep" }],
3191
3234
  ["circle", { cx: "5", cy: "15", r: "1", key: "5r1jwy" }]
3192
3235
  ];
3193
- const GripHorizontal = createLucideIcon("grip-horizontal", __iconNode$C);
3236
+ const GripHorizontal = createLucideIcon("grip-horizontal", __iconNode$K);
3194
3237
 
3195
3238
  /**
3196
3239
  * @license lucide-react v0.539.0 - ISC
@@ -3200,7 +3243,7 @@ const GripHorizontal = createLucideIcon("grip-horizontal", __iconNode$C);
3200
3243
  */
3201
3244
 
3202
3245
 
3203
- const __iconNode$B = [
3246
+ const __iconNode$J = [
3204
3247
  ["circle", { cx: "9", cy: "12", r: "1", key: "1vctgf" }],
3205
3248
  ["circle", { cx: "9", cy: "5", r: "1", key: "hp0tcf" }],
3206
3249
  ["circle", { cx: "9", cy: "19", r: "1", key: "fkjjf6" }],
@@ -3208,7 +3251,7 @@ const __iconNode$B = [
3208
3251
  ["circle", { cx: "15", cy: "5", r: "1", key: "19l28e" }],
3209
3252
  ["circle", { cx: "15", cy: "19", r: "1", key: "f4zoj3" }]
3210
3253
  ];
3211
- const GripVertical = createLucideIcon("grip-vertical", __iconNode$B);
3254
+ const GripVertical = createLucideIcon("grip-vertical", __iconNode$J);
3212
3255
 
3213
3256
  /**
3214
3257
  * @license lucide-react v0.539.0 - ISC
@@ -3218,13 +3261,29 @@ const GripVertical = createLucideIcon("grip-vertical", __iconNode$B);
3218
3261
  */
3219
3262
 
3220
3263
 
3221
- const __iconNode$A = [
3264
+ const __iconNode$I = [
3265
+ ["line", { x1: "4", x2: "20", y1: "9", y2: "9", key: "4lhtct" }],
3266
+ ["line", { x1: "4", x2: "20", y1: "15", y2: "15", key: "vyu0kd" }],
3267
+ ["line", { x1: "10", x2: "8", y1: "3", y2: "21", key: "1ggp8o" }],
3268
+ ["line", { x1: "16", x2: "14", y1: "3", y2: "21", key: "weycgp" }]
3269
+ ];
3270
+ const Hash = createLucideIcon("hash", __iconNode$I);
3271
+
3272
+ /**
3273
+ * @license lucide-react v0.539.0 - ISC
3274
+ *
3275
+ * This source code is licensed under the ISC license.
3276
+ * See the LICENSE file in the root directory of this source tree.
3277
+ */
3278
+
3279
+
3280
+ const __iconNode$H = [
3222
3281
  ["path", { d: "M4 12h8", key: "17cfdx" }],
3223
3282
  ["path", { d: "M4 18V6", key: "1rz3zl" }],
3224
3283
  ["path", { d: "M12 18V6", key: "zqpxq5" }],
3225
3284
  ["path", { d: "m17 12 3-2v8", key: "1hhhft" }]
3226
3285
  ];
3227
- const Heading1 = createLucideIcon("heading-1", __iconNode$A);
3286
+ const Heading1 = createLucideIcon("heading-1", __iconNode$H);
3228
3287
 
3229
3288
  /**
3230
3289
  * @license lucide-react v0.539.0 - ISC
@@ -3234,13 +3293,13 @@ const Heading1 = createLucideIcon("heading-1", __iconNode$A);
3234
3293
  */
3235
3294
 
3236
3295
 
3237
- const __iconNode$z = [
3296
+ const __iconNode$G = [
3238
3297
  ["path", { d: "M4 12h8", key: "17cfdx" }],
3239
3298
  ["path", { d: "M4 18V6", key: "1rz3zl" }],
3240
3299
  ["path", { d: "M12 18V6", key: "zqpxq5" }],
3241
3300
  ["path", { d: "M21 18h-4c0-4 4-3 4-6 0-1.5-2-2.5-4-1", key: "9jr5yi" }]
3242
3301
  ];
3243
- const Heading2 = createLucideIcon("heading-2", __iconNode$z);
3302
+ const Heading2 = createLucideIcon("heading-2", __iconNode$G);
3244
3303
 
3245
3304
  /**
3246
3305
  * @license lucide-react v0.539.0 - ISC
@@ -3250,14 +3309,14 @@ const Heading2 = createLucideIcon("heading-2", __iconNode$z);
3250
3309
  */
3251
3310
 
3252
3311
 
3253
- const __iconNode$y = [
3312
+ const __iconNode$F = [
3254
3313
  ["path", { d: "M4 12h8", key: "17cfdx" }],
3255
3314
  ["path", { d: "M4 18V6", key: "1rz3zl" }],
3256
3315
  ["path", { d: "M12 18V6", key: "zqpxq5" }],
3257
3316
  ["path", { d: "M17.5 10.5c1.7-1 3.5 0 3.5 1.5a2 2 0 0 1-2 2", key: "68ncm8" }],
3258
3317
  ["path", { d: "M17 17.5c2 1.5 4 .3 4-1.5a2 2 0 0 0-2-2", key: "1ejuhz" }]
3259
3318
  ];
3260
- const Heading3 = createLucideIcon("heading-3", __iconNode$y);
3319
+ const Heading3 = createLucideIcon("heading-3", __iconNode$F);
3261
3320
 
3262
3321
  /**
3263
3322
  * @license lucide-react v0.539.0 - ISC
@@ -3267,12 +3326,12 @@ const Heading3 = createLucideIcon("heading-3", __iconNode$y);
3267
3326
  */
3268
3327
 
3269
3328
 
3270
- const __iconNode$x = [
3329
+ const __iconNode$E = [
3271
3330
  ["path", { d: "M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8", key: "1357e3" }],
3272
3331
  ["path", { d: "M3 3v5h5", key: "1xhq8a" }],
3273
3332
  ["path", { d: "M12 7v5l4 2", key: "1fdv2h" }]
3274
3333
  ];
3275
- const History = createLucideIcon("history", __iconNode$x);
3334
+ const History = createLucideIcon("history", __iconNode$E);
3276
3335
 
3277
3336
  /**
3278
3337
  * @license lucide-react v0.539.0 - ISC
@@ -3282,12 +3341,12 @@ const History = createLucideIcon("history", __iconNode$x);
3282
3341
  */
3283
3342
 
3284
3343
 
3285
- const __iconNode$w = [
3344
+ const __iconNode$D = [
3286
3345
  ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", ry: "2", key: "1m3agn" }],
3287
3346
  ["circle", { cx: "9", cy: "9", r: "2", key: "af1f0g" }],
3288
3347
  ["path", { d: "m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21", key: "1xmnt7" }]
3289
3348
  ];
3290
- const Image$1 = createLucideIcon("image", __iconNode$w);
3349
+ const Image$1 = createLucideIcon("image", __iconNode$D);
3291
3350
 
3292
3351
  /**
3293
3352
  * @license lucide-react v0.539.0 - ISC
@@ -3297,12 +3356,12 @@ const Image$1 = createLucideIcon("image", __iconNode$w);
3297
3356
  */
3298
3357
 
3299
3358
 
3300
- const __iconNode$v = [
3359
+ const __iconNode$C = [
3301
3360
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
3302
3361
  ["path", { d: "M12 16v-4", key: "1dtifu" }],
3303
3362
  ["path", { d: "M12 8h.01", key: "e9boi3" }]
3304
3363
  ];
3305
- const Info = createLucideIcon("info", __iconNode$v);
3364
+ const Info = createLucideIcon("info", __iconNode$C);
3306
3365
 
3307
3366
  /**
3308
3367
  * @license lucide-react v0.539.0 - ISC
@@ -3312,12 +3371,12 @@ const Info = createLucideIcon("info", __iconNode$v);
3312
3371
  */
3313
3372
 
3314
3373
 
3315
- const __iconNode$u = [
3374
+ const __iconNode$B = [
3316
3375
  ["line", { x1: "19", x2: "10", y1: "4", y2: "4", key: "15jd3p" }],
3317
3376
  ["line", { x1: "14", x2: "5", y1: "20", y2: "20", key: "bu0au3" }],
3318
3377
  ["line", { x1: "15", x2: "9", y1: "4", y2: "20", key: "uljnxc" }]
3319
3378
  ];
3320
- const Italic$1 = createLucideIcon("italic", __iconNode$u);
3379
+ const Italic$1 = createLucideIcon("italic", __iconNode$B);
3321
3380
 
3322
3381
  /**
3323
3382
  * @license lucide-react v0.539.0 - ISC
@@ -3327,12 +3386,12 @@ const Italic$1 = createLucideIcon("italic", __iconNode$u);
3327
3386
  */
3328
3387
 
3329
3388
 
3330
- const __iconNode$t = [
3389
+ const __iconNode$A = [
3331
3390
  ["path", { d: "M9 17H7A5 5 0 0 1 7 7h2", key: "8i5ue5" }],
3332
3391
  ["path", { d: "M15 7h2a5 5 0 1 1 0 10h-2", key: "1b9ql8" }],
3333
3392
  ["line", { x1: "8", x2: "16", y1: "12", y2: "12", key: "1jonct" }]
3334
3393
  ];
3335
- const Link2 = createLucideIcon("link-2", __iconNode$t);
3394
+ const Link2 = createLucideIcon("link-2", __iconNode$A);
3336
3395
 
3337
3396
  /**
3338
3397
  * @license lucide-react v0.539.0 - ISC
@@ -3342,7 +3401,24 @@ const Link2 = createLucideIcon("link-2", __iconNode$t);
3342
3401
  */
3343
3402
 
3344
3403
 
3345
- const __iconNode$s = [
3404
+ const __iconNode$z = [
3405
+ ["path", { d: "m3 17 2 2 4-4", key: "1jhpwq" }],
3406
+ ["path", { d: "m3 7 2 2 4-4", key: "1obspn" }],
3407
+ ["path", { d: "M13 6h8", key: "15sg57" }],
3408
+ ["path", { d: "M13 12h8", key: "h98zly" }],
3409
+ ["path", { d: "M13 18h8", key: "oe0vm4" }]
3410
+ ];
3411
+ const ListChecks = createLucideIcon("list-checks", __iconNode$z);
3412
+
3413
+ /**
3414
+ * @license lucide-react v0.539.0 - ISC
3415
+ *
3416
+ * This source code is licensed under the ISC license.
3417
+ * See the LICENSE file in the root directory of this source tree.
3418
+ */
3419
+
3420
+
3421
+ const __iconNode$y = [
3346
3422
  ["path", { d: "M10 12h11", key: "6m4ad9" }],
3347
3423
  ["path", { d: "M10 18h11", key: "11hvi2" }],
3348
3424
  ["path", { d: "M10 6h11", key: "c7qv1k" }],
@@ -3350,7 +3426,7 @@ const __iconNode$s = [
3350
3426
  ["path", { d: "M4 6h1v4", key: "cnovpq" }],
3351
3427
  ["path", { d: "M6 18H4c0-1 2-2 2-3s-1-1.5-2-1", key: "m9a95d" }]
3352
3428
  ];
3353
- const ListOrdered = createLucideIcon("list-ordered", __iconNode$s);
3429
+ const ListOrdered = createLucideIcon("list-ordered", __iconNode$y);
3354
3430
 
3355
3431
  /**
3356
3432
  * @license lucide-react v0.539.0 - ISC
@@ -3360,7 +3436,7 @@ const ListOrdered = createLucideIcon("list-ordered", __iconNode$s);
3360
3436
  */
3361
3437
 
3362
3438
 
3363
- const __iconNode$r = [
3439
+ const __iconNode$x = [
3364
3440
  ["path", { d: "M3 12h.01", key: "nlz23k" }],
3365
3441
  ["path", { d: "M3 18h.01", key: "1tta3j" }],
3366
3442
  ["path", { d: "M3 6h.01", key: "1rqtza" }],
@@ -3368,7 +3444,7 @@ const __iconNode$r = [
3368
3444
  ["path", { d: "M8 18h13", key: "1lx6n3" }],
3369
3445
  ["path", { d: "M8 6h13", key: "ik3vkj" }]
3370
3446
  ];
3371
- const List = createLucideIcon("list", __iconNode$r);
3447
+ const List = createLucideIcon("list", __iconNode$x);
3372
3448
 
3373
3449
  /**
3374
3450
  * @license lucide-react v0.539.0 - ISC
@@ -3378,8 +3454,8 @@ const List = createLucideIcon("list", __iconNode$r);
3378
3454
  */
3379
3455
 
3380
3456
 
3381
- const __iconNode$q = [["path", { d: "M21 12a9 9 0 1 1-6.219-8.56", key: "13zald" }]];
3382
- const LoaderCircle = createLucideIcon("loader-circle", __iconNode$q);
3457
+ const __iconNode$w = [["path", { d: "M21 12a9 9 0 1 1-6.219-8.56", key: "13zald" }]];
3458
+ const LoaderCircle = createLucideIcon("loader-circle", __iconNode$w);
3383
3459
 
3384
3460
  /**
3385
3461
  * @license lucide-react v0.539.0 - ISC
@@ -3389,7 +3465,7 @@ const LoaderCircle = createLucideIcon("loader-circle", __iconNode$q);
3389
3465
  */
3390
3466
 
3391
3467
 
3392
- const __iconNode$p = [
3468
+ const __iconNode$v = [
3393
3469
  ["path", { d: "M12 2v4", key: "3427ic" }],
3394
3470
  ["path", { d: "m16.2 7.8 2.9-2.9", key: "r700ao" }],
3395
3471
  ["path", { d: "M18 12h4", key: "wj9ykh" }],
@@ -3399,7 +3475,7 @@ const __iconNode$p = [
3399
3475
  ["path", { d: "M2 12h4", key: "j09sii" }],
3400
3476
  ["path", { d: "m4.9 4.9 2.9 2.9", key: "giyufr" }]
3401
3477
  ];
3402
- const Loader = createLucideIcon("loader", __iconNode$p);
3478
+ const Loader = createLucideIcon("loader", __iconNode$v);
3403
3479
 
3404
3480
  /**
3405
3481
  * @license lucide-react v0.539.0 - ISC
@@ -3409,12 +3485,12 @@ const Loader = createLucideIcon("loader", __iconNode$p);
3409
3485
  */
3410
3486
 
3411
3487
 
3412
- const __iconNode$o = [
3488
+ const __iconNode$u = [
3413
3489
  ["path", { d: "m16 17 5-5-5-5", key: "1bji2h" }],
3414
3490
  ["path", { d: "M21 12H9", key: "dn1m92" }],
3415
3491
  ["path", { d: "M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4", key: "1uf3rs" }]
3416
3492
  ];
3417
- const LogOut = createLucideIcon("log-out", __iconNode$o);
3493
+ const LogOut = createLucideIcon("log-out", __iconNode$u);
3418
3494
 
3419
3495
  /**
3420
3496
  * @license lucide-react v0.539.0 - ISC
@@ -3424,12 +3500,26 @@ const LogOut = createLucideIcon("log-out", __iconNode$o);
3424
3500
  */
3425
3501
 
3426
3502
 
3427
- const __iconNode$n = [
3503
+ const __iconNode$t = [
3504
+ ["path", { d: "m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7", key: "132q7q" }],
3505
+ ["rect", { x: "2", y: "4", width: "20", height: "16", rx: "2", key: "izxlao" }]
3506
+ ];
3507
+ const Mail = createLucideIcon("mail", __iconNode$t);
3508
+
3509
+ /**
3510
+ * @license lucide-react v0.539.0 - ISC
3511
+ *
3512
+ * This source code is licensed under the ISC license.
3513
+ * See the LICENSE file in the root directory of this source tree.
3514
+ */
3515
+
3516
+
3517
+ const __iconNode$s = [
3428
3518
  ["path", { d: "M4 12h16", key: "1lakjw" }],
3429
3519
  ["path", { d: "M4 18h16", key: "19g7jn" }],
3430
3520
  ["path", { d: "M4 6h16", key: "1o0s65" }]
3431
3521
  ];
3432
- const Menu = createLucideIcon("menu", __iconNode$n);
3522
+ const Menu = createLucideIcon("menu", __iconNode$s);
3433
3523
 
3434
3524
  /**
3435
3525
  * @license lucide-react v0.539.0 - ISC
@@ -3439,7 +3529,7 @@ const Menu = createLucideIcon("menu", __iconNode$n);
3439
3529
  */
3440
3530
 
3441
3531
 
3442
- const __iconNode$m = [
3532
+ const __iconNode$r = [
3443
3533
  [
3444
3534
  "path",
3445
3535
  {
@@ -3448,7 +3538,7 @@ const __iconNode$m = [
3448
3538
  }
3449
3539
  ]
3450
3540
  ];
3451
- const Moon = createLucideIcon("moon", __iconNode$m);
3541
+ const Moon = createLucideIcon("moon", __iconNode$r);
3452
3542
 
3453
3543
  /**
3454
3544
  * @license lucide-react v0.539.0 - ISC
@@ -3458,7 +3548,7 @@ const Moon = createLucideIcon("moon", __iconNode$m);
3458
3548
  */
3459
3549
 
3460
3550
 
3461
- const __iconNode$l = [
3551
+ const __iconNode$q = [
3462
3552
  [
3463
3553
  "path",
3464
3554
  {
@@ -3471,7 +3561,7 @@ const __iconNode$l = [
3471
3561
  ["circle", { cx: "6.5", cy: "12.5", r: ".5", fill: "currentColor", key: "qy21gx" }],
3472
3562
  ["circle", { cx: "8.5", cy: "7.5", r: ".5", fill: "currentColor", key: "fotxhn" }]
3473
3563
  ];
3474
- const Palette = createLucideIcon("palette", __iconNode$l);
3564
+ const Palette = createLucideIcon("palette", __iconNode$q);
3475
3565
 
3476
3566
  /**
3477
3567
  * @license lucide-react v0.539.0 - ISC
@@ -3481,12 +3571,12 @@ const Palette = createLucideIcon("palette", __iconNode$l);
3481
3571
  */
3482
3572
 
3483
3573
 
3484
- const __iconNode$k = [
3574
+ const __iconNode$p = [
3485
3575
  ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }],
3486
3576
  ["path", { d: "M9 3v18", key: "fh3hqa" }],
3487
3577
  ["path", { d: "m16 15-3-3 3-3", key: "14y99z" }]
3488
3578
  ];
3489
- const PanelLeftClose = createLucideIcon("panel-left-close", __iconNode$k);
3579
+ const PanelLeftClose = createLucideIcon("panel-left-close", __iconNode$p);
3490
3580
 
3491
3581
  /**
3492
3582
  * @license lucide-react v0.539.0 - ISC
@@ -3496,7 +3586,26 @@ const PanelLeftClose = createLucideIcon("panel-left-close", __iconNode$k);
3496
3586
  */
3497
3587
 
3498
3588
 
3499
- const __iconNode$j = [
3589
+ const __iconNode$o = [
3590
+ [
3591
+ "path",
3592
+ {
3593
+ 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",
3594
+ key: "1miecu"
3595
+ }
3596
+ ]
3597
+ ];
3598
+ const Paperclip = createLucideIcon("paperclip", __iconNode$o);
3599
+
3600
+ /**
3601
+ * @license lucide-react v0.539.0 - ISC
3602
+ *
3603
+ * This source code is licensed under the ISC license.
3604
+ * See the LICENSE file in the root directory of this source tree.
3605
+ */
3606
+
3607
+
3608
+ const __iconNode$n = [
3500
3609
  [
3501
3610
  "path",
3502
3611
  {
@@ -3506,7 +3615,7 @@ const __iconNode$j = [
3506
3615
  ],
3507
3616
  ["path", { d: "m15 5 4 4", key: "1mk7zo" }]
3508
3617
  ];
3509
- const Pencil = createLucideIcon("pencil", __iconNode$j);
3618
+ const Pencil = createLucideIcon("pencil", __iconNode$n);
3510
3619
 
3511
3620
  /**
3512
3621
  * @license lucide-react v0.539.0 - ISC
@@ -3516,7 +3625,26 @@ const Pencil = createLucideIcon("pencil", __iconNode$j);
3516
3625
  */
3517
3626
 
3518
3627
 
3519
- const __iconNode$i = [
3628
+ const __iconNode$m = [
3629
+ [
3630
+ "path",
3631
+ {
3632
+ 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",
3633
+ key: "9njp5v"
3634
+ }
3635
+ ]
3636
+ ];
3637
+ const Phone = createLucideIcon("phone", __iconNode$m);
3638
+
3639
+ /**
3640
+ * @license lucide-react v0.539.0 - ISC
3641
+ *
3642
+ * This source code is licensed under the ISC license.
3643
+ * See the LICENSE file in the root directory of this source tree.
3644
+ */
3645
+
3646
+
3647
+ const __iconNode$l = [
3520
3648
  [
3521
3649
  "path",
3522
3650
  {
@@ -3525,7 +3653,7 @@ const __iconNode$i = [
3525
3653
  }
3526
3654
  ]
3527
3655
  ];
3528
- const Play = createLucideIcon("play", __iconNode$i);
3656
+ const Play = createLucideIcon("play", __iconNode$l);
3529
3657
 
3530
3658
  /**
3531
3659
  * @license lucide-react v0.539.0 - ISC
@@ -3535,11 +3663,11 @@ const Play = createLucideIcon("play", __iconNode$i);
3535
3663
  */
3536
3664
 
3537
3665
 
3538
- const __iconNode$h = [
3666
+ const __iconNode$k = [
3539
3667
  ["path", { d: "M5 12h14", key: "1ays0h" }],
3540
3668
  ["path", { d: "M12 5v14", key: "s699le" }]
3541
3669
  ];
3542
- const Plus = createLucideIcon("plus", __iconNode$h);
3670
+ const Plus = createLucideIcon("plus", __iconNode$k);
3543
3671
 
3544
3672
  /**
3545
3673
  * @license lucide-react v0.539.0 - ISC
@@ -3549,10 +3677,10 @@ const Plus = createLucideIcon("plus", __iconNode$h);
3549
3677
  */
3550
3678
 
3551
3679
 
3552
- const __iconNode$g = [
3680
+ const __iconNode$j = [
3553
3681
  ["rect", { width: "20", height: "12", x: "2", y: "6", rx: "2", key: "9lu3g6" }]
3554
3682
  ];
3555
- const RectangleHorizontal = createLucideIcon("rectangle-horizontal", __iconNode$g);
3683
+ const RectangleHorizontal = createLucideIcon("rectangle-horizontal", __iconNode$j);
3556
3684
 
3557
3685
  /**
3558
3686
  * @license lucide-react v0.539.0 - ISC
@@ -3562,11 +3690,11 @@ const RectangleHorizontal = createLucideIcon("rectangle-horizontal", __iconNode$
3562
3690
  */
3563
3691
 
3564
3692
 
3565
- const __iconNode$f = [
3693
+ const __iconNode$i = [
3566
3694
  ["path", { d: "M21 7v6h-6", key: "3ptur4" }],
3567
3695
  ["path", { d: "M3 17a9 9 0 0 1 9-9 9 9 0 0 1 6 2.3l3 2.7", key: "1kgawr" }]
3568
3696
  ];
3569
- const Redo = createLucideIcon("redo", __iconNode$f);
3697
+ const Redo = createLucideIcon("redo", __iconNode$i);
3570
3698
 
3571
3699
  /**
3572
3700
  * @license lucide-react v0.539.0 - ISC
@@ -3576,13 +3704,13 @@ const Redo = createLucideIcon("redo", __iconNode$f);
3576
3704
  */
3577
3705
 
3578
3706
 
3579
- const __iconNode$e = [
3707
+ const __iconNode$h = [
3580
3708
  ["path", { d: "M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8", key: "v9h5vc" }],
3581
3709
  ["path", { d: "M21 3v5h-5", key: "1q7to0" }],
3582
3710
  ["path", { d: "M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16", key: "3uifl3" }],
3583
3711
  ["path", { d: "M8 16H3v5", key: "1cv678" }]
3584
3712
  ];
3585
- const RefreshCw = createLucideIcon("refresh-cw", __iconNode$e);
3713
+ const RefreshCw = createLucideIcon("refresh-cw", __iconNode$h);
3586
3714
 
3587
3715
  /**
3588
3716
  * @license lucide-react v0.539.0 - ISC
@@ -3592,14 +3720,14 @@ const RefreshCw = createLucideIcon("refresh-cw", __iconNode$e);
3592
3720
  */
3593
3721
 
3594
3722
 
3595
- const __iconNode$d = [
3723
+ const __iconNode$g = [
3596
3724
  ["path", { d: "M4 7V4h16v3", key: "9msm58" }],
3597
3725
  ["path", { d: "M5 20h6", key: "1h6pxn" }],
3598
3726
  ["path", { d: "M13 4 8 20", key: "kqq6aj" }],
3599
3727
  ["path", { d: "m15 15 5 5", key: "me55sn" }],
3600
3728
  ["path", { d: "m20 15-5 5", key: "11p7ol" }]
3601
3729
  ];
3602
- const RemoveFormatting = createLucideIcon("remove-formatting", __iconNode$d);
3730
+ const RemoveFormatting = createLucideIcon("remove-formatting", __iconNode$g);
3603
3731
 
3604
3732
  /**
3605
3733
  * @license lucide-react v0.539.0 - ISC
@@ -3609,14 +3737,14 @@ const RemoveFormatting = createLucideIcon("remove-formatting", __iconNode$d);
3609
3737
  */
3610
3738
 
3611
3739
 
3612
- const __iconNode$c = [
3740
+ const __iconNode$f = [
3613
3741
  ["circle", { cx: "6", cy: "6", r: "3", key: "1lh9wr" }],
3614
3742
  ["path", { d: "M8.12 8.12 12 12", key: "1alkpv" }],
3615
3743
  ["path", { d: "M20 4 8.12 15.88", key: "xgtan2" }],
3616
3744
  ["circle", { cx: "6", cy: "18", r: "3", key: "fqmcym" }],
3617
3745
  ["path", { d: "M14.8 14.8 20 20", key: "ptml3r" }]
3618
3746
  ];
3619
- const Scissors = createLucideIcon("scissors", __iconNode$c);
3747
+ const Scissors = createLucideIcon("scissors", __iconNode$f);
3620
3748
 
3621
3749
  /**
3622
3750
  * @license lucide-react v0.539.0 - ISC
@@ -3626,11 +3754,11 @@ const Scissors = createLucideIcon("scissors", __iconNode$c);
3626
3754
  */
3627
3755
 
3628
3756
 
3629
- const __iconNode$b = [
3757
+ const __iconNode$e = [
3630
3758
  ["path", { d: "m21 21-4.34-4.34", key: "14j7rj" }],
3631
3759
  ["circle", { cx: "11", cy: "11", r: "8", key: "4ej97u" }]
3632
3760
  ];
3633
- const Search = createLucideIcon("search", __iconNode$b);
3761
+ const Search = createLucideIcon("search", __iconNode$e);
3634
3762
 
3635
3763
  /**
3636
3764
  * @license lucide-react v0.539.0 - ISC
@@ -3640,14 +3768,14 @@ const Search = createLucideIcon("search", __iconNode$b);
3640
3768
  */
3641
3769
 
3642
3770
 
3643
- const __iconNode$a = [
3771
+ const __iconNode$d = [
3644
3772
  ["circle", { cx: "18", cy: "5", r: "3", key: "gq8acd" }],
3645
3773
  ["circle", { cx: "6", cy: "12", r: "3", key: "w7nqdw" }],
3646
3774
  ["circle", { cx: "18", cy: "19", r: "3", key: "1xt0gg" }],
3647
3775
  ["line", { x1: "8.59", x2: "15.42", y1: "13.51", y2: "17.49", key: "47mynk" }],
3648
3776
  ["line", { x1: "15.41", x2: "8.59", y1: "6.51", y2: "10.49", key: "1n3mei" }]
3649
3777
  ];
3650
- const Share2 = createLucideIcon("share-2", __iconNode$a);
3778
+ const Share2 = createLucideIcon("share-2", __iconNode$d);
3651
3779
 
3652
3780
  /**
3653
3781
  * @license lucide-react v0.539.0 - ISC
@@ -3657,10 +3785,27 @@ const Share2 = createLucideIcon("share-2", __iconNode$a);
3657
3785
  */
3658
3786
 
3659
3787
 
3660
- const __iconNode$9 = [
3788
+ const __iconNode$c = [
3789
+ [
3790
+ "path",
3791
+ { 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" }
3792
+ ],
3793
+ ["path", { d: "m9 11 3 3L22 4", key: "1pflzl" }]
3794
+ ];
3795
+ const SquareCheckBig = createLucideIcon("square-check-big", __iconNode$c);
3796
+
3797
+ /**
3798
+ * @license lucide-react v0.539.0 - ISC
3799
+ *
3800
+ * This source code is licensed under the ISC license.
3801
+ * See the LICENSE file in the root directory of this source tree.
3802
+ */
3803
+
3804
+
3805
+ const __iconNode$b = [
3661
3806
  ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }]
3662
3807
  ];
3663
- const Square = createLucideIcon("square", __iconNode$9);
3808
+ const Square = createLucideIcon("square", __iconNode$b);
3664
3809
 
3665
3810
  /**
3666
3811
  * @license lucide-react v0.539.0 - ISC
@@ -3670,12 +3815,12 @@ const Square = createLucideIcon("square", __iconNode$9);
3670
3815
  */
3671
3816
 
3672
3817
 
3673
- const __iconNode$8 = [
3818
+ const __iconNode$a = [
3674
3819
  ["path", { d: "M16 4H9a3 3 0 0 0-2.83 4", key: "43sutm" }],
3675
3820
  ["path", { d: "M14 12a4 4 0 0 1 0 8H6", key: "nlfj13" }],
3676
3821
  ["line", { x1: "4", x2: "20", y1: "12", y2: "12", key: "1e0a9i" }]
3677
3822
  ];
3678
- const Strikethrough = createLucideIcon("strikethrough", __iconNode$8);
3823
+ const Strikethrough = createLucideIcon("strikethrough", __iconNode$a);
3679
3824
 
3680
3825
  /**
3681
3826
  * @license lucide-react v0.539.0 - ISC
@@ -3685,7 +3830,7 @@ const Strikethrough = createLucideIcon("strikethrough", __iconNode$8);
3685
3830
  */
3686
3831
 
3687
3832
 
3688
- const __iconNode$7 = [
3833
+ const __iconNode$9 = [
3689
3834
  ["circle", { cx: "12", cy: "12", r: "4", key: "4exip2" }],
3690
3835
  ["path", { d: "M12 2v2", key: "tus03m" }],
3691
3836
  ["path", { d: "M12 20v2", key: "1lh1kg" }],
@@ -3696,7 +3841,7 @@ const __iconNode$7 = [
3696
3841
  ["path", { d: "m6.34 17.66-1.41 1.41", key: "1m8zz5" }],
3697
3842
  ["path", { d: "m19.07 4.93-1.41 1.41", key: "1shlcs" }]
3698
3843
  ];
3699
- const Sun = createLucideIcon("sun", __iconNode$7);
3844
+ const Sun = createLucideIcon("sun", __iconNode$9);
3700
3845
 
3701
3846
  /**
3702
3847
  * @license lucide-react v0.539.0 - ISC
@@ -3706,14 +3851,28 @@ const Sun = createLucideIcon("sun", __iconNode$7);
3706
3851
  */
3707
3852
 
3708
3853
 
3709
- const __iconNode$6 = [
3854
+ const __iconNode$8 = [
3855
+ ["circle", { cx: "9", cy: "12", r: "3", key: "u3jwor" }],
3856
+ ["rect", { width: "20", height: "14", x: "2", y: "5", rx: "7", key: "g7kal2" }]
3857
+ ];
3858
+ const ToggleLeft = createLucideIcon("toggle-left", __iconNode$8);
3859
+
3860
+ /**
3861
+ * @license lucide-react v0.539.0 - ISC
3862
+ *
3863
+ * This source code is licensed under the ISC license.
3864
+ * See the LICENSE file in the root directory of this source tree.
3865
+ */
3866
+
3867
+
3868
+ const __iconNode$7 = [
3710
3869
  ["path", { d: "M10 11v6", key: "nco0om" }],
3711
3870
  ["path", { d: "M14 11v6", key: "outv1u" }],
3712
3871
  ["path", { d: "M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6", key: "miytrc" }],
3713
3872
  ["path", { d: "M3 6h18", key: "d0wm0j" }],
3714
3873
  ["path", { d: "M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2", key: "e791ji" }]
3715
3874
  ];
3716
- const Trash2 = createLucideIcon("trash-2", __iconNode$6);
3875
+ const Trash2 = createLucideIcon("trash-2", __iconNode$7);
3717
3876
 
3718
3877
  /**
3719
3878
  * @license lucide-react v0.539.0 - ISC
@@ -3723,7 +3882,7 @@ const Trash2 = createLucideIcon("trash-2", __iconNode$6);
3723
3882
  */
3724
3883
 
3725
3884
 
3726
- const __iconNode$5 = [
3885
+ const __iconNode$6 = [
3727
3886
  [
3728
3887
  "path",
3729
3888
  {
@@ -3734,7 +3893,22 @@ const __iconNode$5 = [
3734
3893
  ["path", { d: "M12 9v4", key: "juzpu7" }],
3735
3894
  ["path", { d: "M12 17h.01", key: "p32p05" }]
3736
3895
  ];
3737
- const TriangleAlert = createLucideIcon("triangle-alert", __iconNode$5);
3896
+ const TriangleAlert = createLucideIcon("triangle-alert", __iconNode$6);
3897
+
3898
+ /**
3899
+ * @license lucide-react v0.539.0 - ISC
3900
+ *
3901
+ * This source code is licensed under the ISC license.
3902
+ * See the LICENSE file in the root directory of this source tree.
3903
+ */
3904
+
3905
+
3906
+ const __iconNode$5 = [
3907
+ ["path", { d: "M12 4v16", key: "1654pz" }],
3908
+ ["path", { d: "M4 7V5a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v2", key: "e0r10z" }],
3909
+ ["path", { d: "M9 20h6", key: "s66wpe" }]
3910
+ ];
3911
+ const Type = createLucideIcon("type", __iconNode$5);
3738
3912
 
3739
3913
  /**
3740
3914
  * @license lucide-react v0.539.0 - ISC
@@ -20787,7 +20961,7 @@ const DATE_FORMAT$1 = 'DD-MM-YYYY';
20787
20961
  */
20788
20962
  const DEFAULT_INVENTORY_THUMBNAIL = '/default%20thumbnail.png';
20789
20963
 
20790
- const formatDate$2 = (iso) => {
20964
+ const formatDate$3 = (iso) => {
20791
20965
  if (!iso)
20792
20966
  return '-';
20793
20967
  try {
@@ -20804,7 +20978,7 @@ const InfoCard = ({ info, title, refundToWallet, onRefundChange, }) => {
20804
20978
  if (React__default.isValidElement(info))
20805
20979
  return jsx("div", { className: "mt-3", children: info });
20806
20980
  const i = info;
20807
- return (jsx("div", { className: "mt-1 rounded-lg border bg-muted p-3 shadow-sm", children: jsxs("div", { className: "flex flex-col gap-1", children: [jsxs("div", { className: "flex items-start gap-3", children: [jsx("div", { className: "w-36 text-sm text-muted-foreground", children: "Date" }), jsx("div", { children: formatDate$2(i.invoiceDate) })] }), jsxs("div", { className: "flex items-start gap-3", children: [jsx("div", { className: "w-36 text-sm text-muted-foreground", children: "Total" }), jsx("div", { className: "font-medium text-foreground", children: formatCurrencyWithTenantSymbol(i.totalAmount) })] }), i.paidAmount !== undefined && (jsxs("div", { className: "flex items-start gap-3", children: [jsx("div", { className: "w-36 text-sm text-muted-foreground", children: "Paid" }), jsx("div", { className: "font-medium text-primary", children: formatCurrencyWithTenantSymbol(i.paidAmount) })] })), i.outstandingAmount !== undefined && (jsxs("div", { className: "flex items-start gap-3", children: [jsx("div", { className: "w-36 text-sm text-muted-foreground", children: "Outstanding" }), jsx("div", { className: "font-medium text-muted-foreground", children: formatCurrencyWithTenantSymbol(i.outstandingAmount) })] })), title === 'Cancel Invoice' &&
20981
+ return (jsx("div", { className: "mt-1 rounded-lg border bg-muted p-3 shadow-sm", children: jsxs("div", { className: "flex flex-col gap-1", children: [jsxs("div", { className: "flex items-start gap-3", children: [jsx("div", { className: "w-36 text-sm text-muted-foreground", children: "Date" }), jsx("div", { children: formatDate$3(i.invoiceDate) })] }), jsxs("div", { className: "flex items-start gap-3", children: [jsx("div", { className: "w-36 text-sm text-muted-foreground", children: "Total" }), jsx("div", { className: "font-medium text-foreground", children: formatCurrencyWithTenantSymbol(i.totalAmount) })] }), i.paidAmount !== undefined && (jsxs("div", { className: "flex items-start gap-3", children: [jsx("div", { className: "w-36 text-sm text-muted-foreground", children: "Paid" }), jsx("div", { className: "font-medium text-primary", children: formatCurrencyWithTenantSymbol(i.paidAmount) })] })), i.outstandingAmount !== undefined && (jsxs("div", { className: "flex items-start gap-3", children: [jsx("div", { className: "w-36 text-sm text-muted-foreground", children: "Outstanding" }), jsx("div", { className: "font-medium text-muted-foreground", children: formatCurrencyWithTenantSymbol(i.outstandingAmount) })] })), title === 'Cancel Invoice' &&
20808
20982
  !React__default.isValidElement(info) &&
20809
20983
  (i?.paidAmount ?? 0) > 0 && (jsxs("div", { className: "flex items-start gap-3", children: [jsx("div", { className: "w-36 whitespace-nowrap text-sm text-muted-foreground", children: "Refund to Wallet" }), jsx(Checkbox, { checked: !!refundToWallet, onCheckedChange: (v) => onRefundChange?.(Boolean(v)), className: "bg-card" })] })), (i.customerName || i.email) && (jsxs("div", { className: "mt-1 rounded bg-card p-2", children: [i.customerName && (jsx("div", { className: "text-sm font-medium", children: i.customerName })), i.email && (jsx("div", { className: "text-sm text-muted-foreground", children: i.email }))] }))] }) }));
20810
20984
  };
@@ -31291,7 +31465,7 @@ function parseDate(value, dateFormat, locale, strictParsing, refDate) {
31291
31465
  var parsedDate = parse(value, format_1, refDate, {
31292
31466
  locale: localeObject});
31293
31467
  if (isValid(parsedDate) &&
31294
- (!strictParsing || value === formatDate$1(parsedDate, format_1, locale))) {
31468
+ (!strictParsing || value === formatDate$2(parsedDate, format_1, locale))) {
31295
31469
  return parsedDate;
31296
31470
  }
31297
31471
  }
@@ -31319,7 +31493,7 @@ function isValid(date, minDate) {
31319
31493
  * @param locale - The locale.
31320
31494
  * @returns - The formatted date.
31321
31495
  */
31322
- function formatDate$1(date, formatStr, locale) {
31496
+ function formatDate$2(date, formatStr, locale) {
31323
31497
  if (locale === "en") {
31324
31498
  return format(date, formatStr, {
31325
31499
  useAdditionalWeekYearTokens: true,
@@ -31349,7 +31523,7 @@ function safeDateFormat(date, _a) {
31349
31523
  var formatStr = (Array.isArray(dateFormat) && dateFormat.length > 0
31350
31524
  ? dateFormat[0]
31351
31525
  : dateFormat); // Cast to string because it's impossible to get `string | string[] | undefined` here and typescript doesn't know that
31352
- return (date && formatDate$1(date, formatStr, locale)) || "";
31526
+ return (date && formatDate$2(date, formatStr, locale)) || "";
31353
31527
  }
31354
31528
  /**
31355
31529
  * Used as a delimiter to separate two dates when formatting a date range
@@ -31423,7 +31597,7 @@ function getWeek(date) {
31423
31597
  * @returns - The day of the week code.
31424
31598
  */
31425
31599
  function getDayOfWeekCode(day, locale) {
31426
- return formatDate$1(day, "ddd", locale);
31600
+ return formatDate$2(day, "ddd", locale);
31427
31601
  }
31428
31602
  // *** Start of ***
31429
31603
  /**
@@ -31646,7 +31820,7 @@ function getLocaleObject(localeSpec) {
31646
31820
  * @returns - The formatted weekday.
31647
31821
  */
31648
31822
  function getFormattedWeekdayInLocale(date, formatFunc, locale) {
31649
- return formatFunc(formatDate$1(date, "EEEE", locale));
31823
+ return formatFunc(formatDate$2(date, "EEEE", locale));
31650
31824
  }
31651
31825
  /**
31652
31826
  * Gets the minimum weekday in a given locale.
@@ -31656,7 +31830,7 @@ function getFormattedWeekdayInLocale(date, formatFunc, locale) {
31656
31830
  * @returns - The minimum weekday.
31657
31831
  */
31658
31832
  function getWeekdayMinInLocale(date, locale) {
31659
- return formatDate$1(date, "EEEEEE", locale);
31833
+ return formatDate$2(date, "EEEEEE", locale);
31660
31834
  }
31661
31835
  /**
31662
31836
  * Gets the short weekday in a given locale.
@@ -31666,7 +31840,7 @@ function getWeekdayMinInLocale(date, locale) {
31666
31840
  * @returns - The short weekday.
31667
31841
  */
31668
31842
  function getWeekdayShortInLocale(date, locale) {
31669
- return formatDate$1(date, "EEE", locale);
31843
+ return formatDate$2(date, "EEE", locale);
31670
31844
  }
31671
31845
  /**
31672
31846
  * Gets the month in a given locale.
@@ -31676,7 +31850,7 @@ function getWeekdayShortInLocale(date, locale) {
31676
31850
  * @returns - The month.
31677
31851
  */
31678
31852
  function getMonthInLocale(month, locale) {
31679
- return formatDate$1(setMonth(newDate(), month), "LLLL", locale);
31853
+ return formatDate$2(setMonth(newDate(), month), "LLLL", locale);
31680
31854
  }
31681
31855
  /**
31682
31856
  * Gets the short month in a given locale.
@@ -31686,7 +31860,7 @@ function getMonthInLocale(month, locale) {
31686
31860
  * @returns - The short month.
31687
31861
  */
31688
31862
  function getMonthShortInLocale(month, locale) {
31689
- return formatDate$1(setMonth(newDate(), month), "LLL", locale);
31863
+ return formatDate$2(setMonth(newDate(), month), "LLL", locale);
31690
31864
  }
31691
31865
  /**
31692
31866
  * Gets the short quarter in a given locale.
@@ -31696,7 +31870,7 @@ function getMonthShortInLocale(month, locale) {
31696
31870
  * @returns - The short quarter.
31697
31871
  */
31698
31872
  function getQuarterShortInLocale(quarter, locale) {
31699
- return formatDate$1(setQuarter(newDate(), quarter), "QQQ", locale);
31873
+ return formatDate$2(setQuarter(newDate(), quarter), "QQQ", locale);
31700
31874
  }
31701
31875
  /**
31702
31876
  * Checks if a day is disabled.
@@ -32026,7 +32200,7 @@ function getHighLightDaysMap(highlightDates, defaultClassName) {
32026
32200
  for (var i = 0, len = highlightDates.length; i < len; i++) {
32027
32201
  var obj = highlightDates[i];
32028
32202
  if (isDate(obj)) {
32029
- var key = formatDate$1(obj, "MM.dd.yyyy");
32203
+ var key = formatDate$2(obj, "MM.dd.yyyy");
32030
32204
  var classNamesArr = dateClasses.get(key) || [];
32031
32205
  if (!classNamesArr.includes(defaultClassName)) {
32032
32206
  classNamesArr.push(defaultClassName);
@@ -32041,7 +32215,7 @@ function getHighLightDaysMap(highlightDates, defaultClassName) {
32041
32215
  for (var k = 0, len_1 = arrOfDates.length; k < len_1; k++) {
32042
32216
  var dateK = arrOfDates[k];
32043
32217
  if (dateK) {
32044
- var key = formatDate$1(dateK, "MM.dd.yyyy");
32218
+ var key = formatDate$2(dateK, "MM.dd.yyyy");
32045
32219
  var classNamesArr = dateClasses.get(key) || [];
32046
32220
  if (!classNamesArr.includes(className)) {
32047
32221
  classNamesArr.push(className);
@@ -32081,7 +32255,7 @@ function getHolidaysMap(holidayDates, defaultClassName) {
32081
32255
  if (!isDate(dateObj)) {
32082
32256
  return;
32083
32257
  }
32084
- var key = formatDate$1(dateObj, "MM.dd.yyyy");
32258
+ var key = formatDate$2(dateObj, "MM.dd.yyyy");
32085
32259
  var classNamesObj = dateClasses.get(key) || {
32086
32260
  className: "",
32087
32261
  holidayNames: [],
@@ -32455,7 +32629,7 @@ var Day = /** @class */ (function (_super) {
32455
32629
  return false;
32456
32630
  }
32457
32631
  // Looking for className in the Map of {'day string, 'className'}
32458
- var dayStr = formatDate$1(day, "MM.dd.yyyy");
32632
+ var dayStr = formatDate$2(day, "MM.dd.yyyy");
32459
32633
  return highlightDates.get(dayStr);
32460
32634
  };
32461
32635
  // Function to return the array containing className associated to the date
@@ -32466,7 +32640,7 @@ var Day = /** @class */ (function (_super) {
32466
32640
  // For type consistency no other reasons
32467
32641
  return [undefined];
32468
32642
  }
32469
- var dayStr = formatDate$1(day, "MM.dd.yyyy");
32643
+ var dayStr = formatDate$2(day, "MM.dd.yyyy");
32470
32644
  // Looking for className in the Map of {day string: {className, holidayName}}
32471
32645
  if (holidays.has(dayStr)) {
32472
32646
  return [(_a = holidays.get(dayStr)) === null || _a === void 0 ? void 0 : _a.className];
@@ -32607,12 +32781,12 @@ var Day = /** @class */ (function (_super) {
32607
32781
  var prefix = _this.isDisabled() || _this.isExcluded()
32608
32782
  ? ariaLabelPrefixWhenDisabled
32609
32783
  : ariaLabelPrefixWhenEnabled;
32610
- return "".concat(prefix, " ").concat(formatDate$1(day, "PPPP", _this.props.locale));
32784
+ return "".concat(prefix, " ").concat(formatDate$2(day, "PPPP", _this.props.locale));
32611
32785
  };
32612
32786
  // A function to return the holiday's name as title's content
32613
32787
  _this.getTitle = function () {
32614
32788
  var _a = _this.props, day = _a.day, _b = _a.holidays, holidays = _b === void 0 ? new Map() : _b, excludeDates = _a.excludeDates;
32615
- var compareDt = formatDate$1(day, "MM.dd.yyyy");
32789
+ var compareDt = formatDate$2(day, "MM.dd.yyyy");
32616
32790
  var titles = [];
32617
32791
  if (holidays.has(compareDt)) {
32618
32792
  titles.push.apply(titles, holidays.get(compareDt).holidayNames);
@@ -33538,7 +33712,7 @@ var Month = /** @class */ (function (_super) {
33538
33712
  var prefix = _this.isDisabled(labelDate) || _this.isExcluded(labelDate)
33539
33713
  ? disabledDayAriaLabelPrefix
33540
33714
  : chooseDayAriaLabelPrefix;
33541
- return "".concat(prefix, " ").concat(formatDate$1(labelDate, "MMMM yyyy", locale));
33715
+ return "".concat(prefix, " ").concat(formatDate$2(labelDate, "MMMM yyyy", locale));
33542
33716
  };
33543
33717
  _this.getQuarterClassNames = function (q) {
33544
33718
  var _a = _this.props, day = _a.day, startDate = _a.startDate, endDate = _a.endDate, minDate = _a.minDate, maxDate = _a.maxDate, excludeDates = _a.excludeDates, includeDates = _a.includeDates, filterDate = _a.filterDate, preSelection = _a.preSelection, disabledKeyboardNavigation = _a.disabledKeyboardNavigation, disabled = _a.disabled;
@@ -33640,7 +33814,7 @@ var Month = /** @class */ (function (_super) {
33640
33814
  : "";
33641
33815
  // Format aria-label, return empty string if date is invalid
33642
33816
  var formattedAriaLabel = isValid(day)
33643
- ? "".concat(formattedAriaLabelPrefix).concat(formatDate$1(day, "MMMM, yyyy", this.props.locale))
33817
+ ? "".concat(formattedAriaLabelPrefix).concat(formatDate$2(day, "MMMM, yyyy", this.props.locale))
33644
33818
  : "";
33645
33819
  var shouldUseListboxRole = showMonthYearPicker || showQuarterYearPicker;
33646
33820
  if (shouldUseListboxRole) {
@@ -33783,7 +33957,7 @@ var MonthYearDropdownOptions = /** @class */ (function (_super) {
33783
33957
  ? "react-datepicker__month-year-option--selected_month-year"
33784
33958
  : "react-datepicker__month-year-option", key: monthYearPoint, onClick: _this.onChange.bind(_this, monthYearPoint), "aria-selected": isSameMonthYear ? "true" : undefined },
33785
33959
  isSameMonthYear ? (React__default.createElement("span", { className: "react-datepicker__month-year-option--selected" }, "\u2713")) : (""),
33786
- formatDate$1(monthYear, _this.props.dateFormat, _this.props.locale)));
33960
+ formatDate$2(monthYear, _this.props.dateFormat, _this.props.locale)));
33787
33961
  });
33788
33962
  };
33789
33963
  _this.onChange = function (monthYear) { return _this.props.onChange(monthYear); };
@@ -33818,7 +33992,7 @@ var MonthYearDropdown = /** @class */ (function (_super) {
33818
33992
  var options = [];
33819
33993
  while (!isAfter$1(currDate, lastDate)) {
33820
33994
  var timePoint = getTime(currDate);
33821
- options.push(React__default.createElement("option", { key: timePoint, value: timePoint }, formatDate$1(currDate, _this.props.dateFormat, _this.props.locale)));
33995
+ options.push(React__default.createElement("option", { key: timePoint, value: timePoint }, formatDate$2(currDate, _this.props.dateFormat, _this.props.locale)));
33822
33996
  currDate = addMonths(currDate, 1);
33823
33997
  }
33824
33998
  return options;
@@ -33828,7 +34002,7 @@ var MonthYearDropdown = /** @class */ (function (_super) {
33828
34002
  };
33829
34003
  _this.renderSelectMode = function () { return (React__default.createElement("select", { value: getTime(getStartOfMonth(_this.props.date)), className: "react-datepicker__month-year-select", onChange: _this.onSelectChange }, _this.renderSelectOptions())); };
33830
34004
  _this.renderReadView = function (visible) {
33831
- var yearMonth = formatDate$1(_this.props.date, _this.props.dateFormat, _this.props.locale);
34005
+ var yearMonth = formatDate$2(_this.props.date, _this.props.dateFormat, _this.props.locale);
33832
34006
  return (React__default.createElement("div", { key: "read", style: { visibility: visible ? "visible" : "hidden" }, className: "react-datepicker__month-year-read-view", onClick: _this.toggleDropdown },
33833
34007
  React__default.createElement("span", { className: "react-datepicker__month-year-read-view--down-arrow" }),
33834
34008
  React__default.createElement("span", { className: "react-datepicker__month-year-read-view--selected-month-year" }, yearMonth)));
@@ -33997,7 +34171,7 @@ var Time = /** @class */ (function (_super) {
33997
34171
  }
33998
34172
  }, onKeyDown: function (event) {
33999
34173
  _this.handleOnKeyDown(event, time);
34000
- }, tabIndex: time === timeToFocus ? 0 : -1, role: "option", "aria-selected": _this.isSelectedTime(time) ? "true" : undefined, "aria-disabled": _this.isDisabledTime(time) ? "true" : undefined }, formatDate$1(time, format, _this.props.locale)));
34174
+ }, tabIndex: time === timeToFocus ? 0 : -1, role: "option", "aria-selected": _this.isSelectedTime(time) ? "true" : undefined, "aria-disabled": _this.isDisabledTime(time) ? "true" : undefined }, formatDate$2(time, format, _this.props.locale)));
34001
34175
  });
34002
34176
  };
34003
34177
  _this.renderTimeCaption = function () {
@@ -34768,7 +34942,7 @@ var Calendar = /** @class */ (function (_super) {
34768
34942
  ? _this.props.weekDayClassName(day)
34769
34943
  : undefined;
34770
34944
  return (React__default.createElement("div", { key: offset, role: "columnheader", className: clsx("react-datepicker__day-name", weekDayClassName, disabled ? "react-datepicker__day-name--disabled" : "") },
34771
- React__default.createElement("span", { className: "react-datepicker__sr-only" }, formatDate$1(day, "EEEE", _this.props.locale)),
34945
+ React__default.createElement("span", { className: "react-datepicker__sr-only" }, formatDate$2(day, "EEEE", _this.props.locale)),
34772
34946
  React__default.createElement("span", { "aria-hidden": "true" }, weekDayName)));
34773
34947
  }));
34774
34948
  };
@@ -34948,7 +35122,7 @@ var Calendar = /** @class */ (function (_super) {
34948
35122
  classes.push("react-datepicker__current-month--hasMonthYearDropdown");
34949
35123
  }
34950
35124
  return (React__default.createElement("h2", { className: classes.join(" ") }, isValid(date)
34951
- ? formatDate$1(date, _this.props.dateFormat, _this.props.locale)
35125
+ ? formatDate$2(date, _this.props.dateFormat, _this.props.locale)
34952
35126
  : ""));
34953
35127
  };
34954
35128
  _this.renderYearDropdown = function (overrideHide) {
@@ -35932,7 +36106,7 @@ var DatePicker = /** @class */ (function (_super) {
35932
36106
  var newMinutes = Math.min(maxMinutes, currentMinutes + timeIntervals);
35933
36107
  newTime = addMinutes(baseDate, newMinutes);
35934
36108
  }
35935
- var formattedTime = formatDate$1(newTime, formatStr || DatePicker.defaultProps.dateFormat, _this.props.locale);
36109
+ var formattedTime = formatDate$2(newTime, formatStr || DatePicker.defaultProps.dateFormat, _this.props.locale);
35936
36110
  _this.setState({
35937
36111
  preSelection: newTime,
35938
36112
  inputValue: formattedTime,
@@ -36546,7 +36720,7 @@ function computeDateBounds(min, max) {
36546
36720
  maxYear: maxDate ? moment(maxDate, BOUND_FORMAT).year() : undefined,
36547
36721
  };
36548
36722
  }
36549
- function formatDate(value) {
36723
+ function formatDate$1(value) {
36550
36724
  return value ? moment(value).format(DATE_FORMAT) : '';
36551
36725
  }
36552
36726
  function toBoundDate(bound) {
@@ -36620,7 +36794,7 @@ function useDateInput({ value, onChange, onBlur, min, max, disabled, }) {
36620
36794
  const inputRef = useRef(null);
36621
36795
  const caretRef = useRef(null);
36622
36796
  const bounds = computeDateBounds(min, max);
36623
- const formatted = formatDate(value);
36797
+ const formatted = formatDate$1(value);
36624
36798
  const [text, setText] = useState(formatted);
36625
36799
  const [syncedValue, setSyncedValue] = useState(formatted);
36626
36800
  // Adopt `value` whenever it changes from the outside — a form reset, a
@@ -36654,7 +36828,7 @@ function useDateInput({ value, onChange, onBlur, min, max, disabled, }) {
36654
36828
  }
36655
36829
  };
36656
36830
  const commit = (date) => {
36657
- const next = formatDate(date);
36831
+ const next = formatDate$1(date);
36658
36832
  setText(next);
36659
36833
  setSyncedValue(next);
36660
36834
  onChange(date);
@@ -36931,6 +37105,348 @@ const FilterSelect = ({ label, value, onValueChange, options, resetValue = 'all'
36931
37105
  return (jsxs(Select, { value: value, onValueChange: onValueChange, keepOpenOnSelect: true, children: [jsxs(SelectTrigger, { className: cn(TRIGGER_BASE, active && TRIGGER_ACTIVE, triggerClassName), children: [jsx(Funnel, { className: cn('h-4 w-4 shrink-0', active ? 'text-primary' : 'text-muted-foreground'), "aria-hidden": "true" }), jsxs("span", { className: "flex items-center gap-1", children: [jsx(SelectValue, { placeholder: label }), active && (jsx("span", { className: "ml-1 inline-flex h-4 min-w-4 items-center justify-center rounded bg-primary/10 px-1 text-[10px] font-semibold leading-none text-primary", children: activeCount }))] })] }), jsxs(SelectContent, { className: cn(CONTENT_BASE, contentClassName), searchable: searchable, children: [jsx(SelectItem, { value: resetValue, withCheckbox: true, children: label }), options.map((opt) => (jsx(SelectItem, { value: opt.value, searchValue: opt.searchValue, withCheckbox: true, children: opt.label }, opt.value)))] })] }));
36932
37106
  };
36933
37107
 
37108
+ /**
37109
+ * Horizontal row of option cards behaving as a radio group.
37110
+ * Selected option highlights with primary border + light green background + filled dot.
37111
+ * Unselected options have an empty circle indicator.
37112
+ */
37113
+ function RadioCardGroup({ value, onChange, options, className, disabled, name, ariaLabel, iconSize = 'sm', }) {
37114
+ const iconSizeClasses = iconSize === 'xl'
37115
+ ? '[&_svg]:h-10 [&_svg]:w-10'
37116
+ : iconSize === 'lg'
37117
+ ? '[&_svg]:h-6 [&_svg]:w-6'
37118
+ : '[&_svg]:h-4 [&_svg]:w-4';
37119
+ return (jsx("div", { role: "radiogroup", "aria-label": ariaLabel, className: cn('grid w-full grid-cols-2 gap-3 sm:grid-cols-4', className), children: options.map((opt) => {
37120
+ const selected = value === opt.value;
37121
+ const isDisabled = disabled || opt.disabled;
37122
+ return (jsxs("button", { type: "button", role: "radio", "aria-checked": selected, disabled: isDisabled, "data-state": selected ? 'checked' : 'unchecked', onClick: () => !isDisabled && onChange(opt.value), name: name, className: cn('flex w-full cursor-pointer gap-3 rounded-md border px-3 text-sm font-medium shadow-[0_1px_2px_0_rgba(0,0,0,0.05)] transition-colors disabled:cursor-not-allowed', 'outline-none focus-visible:ring-2 focus-visible:ring-primary/30', opt.description
37123
+ ? 'min-h-14 items-start py-2 text-left'
37124
+ : 'h-9 items-center py-1.5', selected
37125
+ ? 'border-primary bg-primary/10 text-primary'
37126
+ : 'border-transparent bg-[#FAFAFA] text-foreground dark:bg-[#262626]', isDisabled && 'cursor-not-allowed opacity-50'), children: [jsx("span", { "aria-hidden": "true", className: cn('relative inline-flex h-4 w-4 shrink-0 items-center justify-center rounded-full border', opt.description && 'mt-[3px]', selected ? 'border-primary' : 'border-gray-300'), children: selected && (jsx("span", { className: "block h-2 w-2 rounded-full bg-primary" })) }), jsxs("span", { className: "flex min-w-0 flex-1 flex-col items-start", children: [jsx("span", { className: "truncate", children: opt.label }), opt.description && (jsx("span", { className: cn('mt-0.5 text-xs font-normal', selected ? 'text-primary/80' : 'text-label'), children: opt.description }))] }), opt.icon && (jsx("span", { "aria-hidden": "true", className: cn('inline-flex shrink-0 items-center', iconSizeClasses, selected ? 'text-primary' : 'text-label'), children: opt.icon }))] }, opt.value));
37127
+ }) }));
37128
+ }
37129
+
37130
+ /**
37131
+ * One scrolling column of the picker (hours, minutes or period). The selected
37132
+ * row is scrolled into view whenever it changes, so reopening the popover lands
37133
+ * on the current value instead of at midnight.
37134
+ */
37135
+ function TimeColumn({ label, options, selected, onSelect, }) {
37136
+ const listRef = useRef(null);
37137
+ const activeRef = useRef(null);
37138
+ useEffect(() => {
37139
+ const list = listRef.current;
37140
+ const active = activeRef.current;
37141
+ if (!list || !active)
37142
+ return;
37143
+ // `scrollIntoView` would scroll the page as well as the column.
37144
+ list.scrollTop =
37145
+ active.offsetTop - list.clientHeight / 2 + active.clientHeight / 2;
37146
+ }, [selected]);
37147
+ return (jsxs("div", { className: "flex min-w-0 flex-col", children: [jsx("span", { className: "px-1 pb-1.5 text-center text-[11px] font-medium uppercase tracking-wide text-muted-foreground", children: label }), jsx("div", { ref: listRef, role: "listbox", "aria-label": label, className: "scrollbar-thin h-[184px] overflow-y-auto px-1", children: jsx("div", { className: "flex flex-col gap-0.5", children: options.map((option) => {
37148
+ const isSelected = option.value === selected;
37149
+ return (jsx("button", { ref: isSelected ? activeRef : undefined, type: "button", role: "option", "aria-selected": isSelected, onClick: () => onSelect(option.value), className: cn('rounded-md px-3 py-1.5 text-center text-sm tabular-nums transition-colors', 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring', isSelected
37150
+ ? 'bg-primary text-primary-foreground'
37151
+ : 'text-foreground hover:bg-muted'), children: option.label }, option.value));
37152
+ }) }) })] }));
37153
+ }
37154
+
37155
+ const TIME_PATTERN = /^(\d{1,2}):(\d{2})(?::\d{2})?$/;
37156
+ const pad = (n) => String(n).padStart(2, '0');
37157
+ /** Reads `HH:mm` / `HH:mm:ss`. Returns null for anything out of range. */
37158
+ function parseTimeValue(value) {
37159
+ const match = TIME_PATTERN.exec((value ?? '').trim());
37160
+ if (!match)
37161
+ return null;
37162
+ const hour = Number(match[1]);
37163
+ const minute = Number(match[2]);
37164
+ if (hour > 23 || minute > 59)
37165
+ return null;
37166
+ return { hour, minute };
37167
+ }
37168
+ /** The stored form — always 24-hour, whatever the display format. */
37169
+ function toTimeValue(hour, minute) {
37170
+ return `${pad(hour)}:${pad(minute)}`;
37171
+ }
37172
+ function formatTimeDisplay(time, use24Hour) {
37173
+ if (use24Hour)
37174
+ return toTimeValue(time.hour, time.minute);
37175
+ // 0 and 12 both map to 12 — midnight is 12 AM, noon is 12 PM.
37176
+ const hour12 = time.hour % 12 === 0 ? 12 : time.hour % 12;
37177
+ const period = time.hour < 12 ? 'AM' : 'PM';
37178
+ return `${pad(hour12)}:${pad(time.minute)} ${period}`;
37179
+ }
37180
+ function buildHourOptions(use24Hour) {
37181
+ if (use24Hour) {
37182
+ return Array.from({ length: 24 }, (_, hour) => ({
37183
+ value: hour,
37184
+ label: pad(hour),
37185
+ }));
37186
+ }
37187
+ // 12 first, matching how a clock reads.
37188
+ return Array.from({ length: 12 }, (_, index) => {
37189
+ const hour12 = index === 0 ? 12 : index;
37190
+ return { value: hour12, label: pad(hour12) };
37191
+ });
37192
+ }
37193
+ function buildMinuteOptions(step) {
37194
+ const safeStep = Number.isFinite(step) && step > 0 ? Math.floor(step) : 1;
37195
+ const options = [];
37196
+ for (let minute = 0; minute < 60; minute += safeStep) {
37197
+ options.push({ value: minute, label: pad(minute) });
37198
+ }
37199
+ return options;
37200
+ }
37201
+ /** The hour as the 12-hour column shows it (12, 1…11). */
37202
+ function toHour12(hour) {
37203
+ return hour % 12 === 0 ? 12 : hour % 12;
37204
+ }
37205
+ /** Rebuilds a 24-hour hour from a 12-hour column value and its period. */
37206
+ function fromHour12(hour12, period) {
37207
+ const base = hour12 % 12;
37208
+ return period === 'PM' ? base + 12 : base;
37209
+ }
37210
+ function periodOf(hour) {
37211
+ return hour < 12 ? 'AM' : 'PM';
37212
+ }
37213
+
37214
+ // Only one TimePicker popover should be open at a time — same coordination the
37215
+ // DateInput uses, for the same reason: each is its own `modal` Radix Popover, so
37216
+ // opening a second does not dismiss the first by outside-click.
37217
+ const TIMEPICKER_OPEN_EVENT = 'caratlogic:timepicker-open';
37218
+ const PERIOD_OPTIONS = [
37219
+ { value: 0, label: 'AM' },
37220
+ { value: 1, label: 'PM' },
37221
+ ];
37222
+ function TimePicker({ value, onChange, onBlur, name, className, disabled, placeholder = 'Select time', use24Hour = false, minuteStep = 1, hideFooter = false, }) {
37223
+ const [open, setOpen] = useState(false);
37224
+ const instanceId = useId$2();
37225
+ const parsed = parseTimeValue(value);
37226
+ useEffect(() => {
37227
+ const onOtherOpen = (e) => {
37228
+ if (e.detail !== instanceId)
37229
+ setOpen(false);
37230
+ };
37231
+ window.addEventListener(TIMEPICKER_OPEN_EVENT, onOtherOpen);
37232
+ return () => window.removeEventListener(TIMEPICKER_OPEN_EVENT, onOtherOpen);
37233
+ }, [instanceId]);
37234
+ const handleOpenChange = (next) => {
37235
+ setOpen(next);
37236
+ if (next) {
37237
+ window.dispatchEvent(new CustomEvent(TIMEPICKER_OPEN_EVENT, { detail: instanceId }));
37238
+ }
37239
+ };
37240
+ /** Picking one column before the others commits against a 00:00 baseline. */
37241
+ const commit = (hour, minute) => {
37242
+ onChange(toTimeValue(hour, minute));
37243
+ };
37244
+ const handleHour = (picked) => {
37245
+ const minute = parsed?.minute ?? 0;
37246
+ if (use24Hour) {
37247
+ commit(picked, minute);
37248
+ return;
37249
+ }
37250
+ commit(fromHour12(picked, parsed ? periodOf(parsed.hour) : 'AM'), minute);
37251
+ };
37252
+ const handleMinute = (picked) => {
37253
+ commit(parsed?.hour ?? 0, picked);
37254
+ };
37255
+ const handlePeriod = (picked) => {
37256
+ const period = picked === 0 ? 'AM' : 'PM';
37257
+ const hour12 = parsed ? toHour12(parsed.hour) : 12;
37258
+ commit(fromHour12(hour12, period), parsed?.minute ?? 0);
37259
+ };
37260
+ const selectedHour = parsed
37261
+ ? use24Hour
37262
+ ? parsed.hour
37263
+ : toHour12(parsed.hour)
37264
+ : null;
37265
+ // NOTE: `open` is driven from the button's onClick rather than
37266
+ // <PopoverTrigger>, matching DateInput — inside a modal <SlideOut> the
37267
+ // trigger's built-in toggle does not fire in Safari. <PopoverAnchor> is pure
37268
+ // positioning, so a single controlled toggle stays the only source of truth.
37269
+ return (jsxs(Popover, { open: open, onOpenChange: handleOpenChange, modal: true, children: [jsx(PopoverAnchor, { asChild: true, children: jsxs("button", { type: "button", name: name, onBlur: onBlur, disabled: disabled, "aria-haspopup": "dialog", "aria-expanded": open, onClick: () => {
37270
+ if (!disabled)
37271
+ handleOpenChange(!open);
37272
+ }, "data-slot": "input", "data-empty": !parsed || undefined, className: cn('border-input-border flex h-9 w-full min-w-0 cursor-pointer items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-1 text-left shadow-[0_1px_2px_0_#0000000d] transition-[color,box-shadow] outline-none', 'focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]', 'aria-invalid:ring-destructive/20 aria-invalid:border-destructive', disabled && 'cursor-not-allowed bg-muted/50 text-label', className), children: [jsx("span", { className: cn('truncate text-sm md:text-sm', parsed ? 'text-foreground' : 'text-placeholder'), children: parsed ? formatTimeDisplay(parsed, use24Hour) : placeholder }), jsx("span", { className: "inline-flex h-4 w-4 shrink-0 items-center justify-center text-muted-foreground", children: jsx(Clock, { className: "h-4 w-4 stroke-[1.75]" }) })] }) }), jsxs(PopoverContent, { align: "start", className: "w-auto p-3", children: [jsxs("div", { className: "flex gap-1", children: [jsx(TimeColumn, { label: "Hour", options: buildHourOptions(use24Hour), selected: selectedHour, onSelect: handleHour }), jsx(TimeColumn, { label: "Min", options: buildMinuteOptions(minuteStep), selected: parsed?.minute ?? null, onSelect: handleMinute }), !use24Hour && (jsx(TimeColumn, { label: "AM/PM", options: PERIOD_OPTIONS, selected: parsed ? (periodOf(parsed.hour) === 'AM' ? 0 : 1) : null, onSelect: handlePeriod }))] }), !hideFooter && (jsxs("div", { className: "mt-2 flex items-center justify-between gap-2 border-t border-border pt-2", children: [jsx("button", { type: "button", onClick: () => {
37273
+ onChange(undefined);
37274
+ setOpen(false);
37275
+ }, className: "rounded-md px-2 py-1 text-xs font-medium text-muted-foreground transition-colors hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring", children: "Clear" }), jsx("button", { type: "button", onClick: () => {
37276
+ const now = new Date();
37277
+ commit(now.getHours(), now.getMinutes());
37278
+ setOpen(false);
37279
+ }, 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" })] }))] })] }));
37280
+ }
37281
+
37282
+ const Textarea = ({ label, error, className, ...props }) => {
37283
+ return (jsxs("div", { className: "flex flex-col gap-1 w-full text-xs", children: [label && (jsx("label", { className: " font-medium text-foreground text-xs", children: label })), jsx("textarea", { "aria-invalid": error ? true : undefined, className: `w-full text-xs rounded-lg border px-3 py-2 placeholder:text-placeholder placeholder:text-sm shadow-[0_1px_2px_0_rgba(0,0,0,0.05)] outline-none resize-y
37284
+ disabled:cursor-not-allowed disabled:bg-muted/50 disabled:text-label
37285
+ focus:ring-2 focus:ring-input focus:border-input
37286
+ ${error ? 'border-destructive focus:border-destructive focus:ring-destructive/20' : 'border-input-border'}
37287
+ ${className || ''}
37288
+ `, ...props }), error && jsx("p", { className: "text-xs text-destructive", children: error })] }));
37289
+ };
37290
+
37291
+ /** Shown in a read-only control whose value was never filled in. */
37292
+ const NOT_CAPTURED = 'Not captured';
37293
+ const asText = (value) => typeof value === 'string' ? value : '';
37294
+ const asList = (value) => Array.isArray(value)
37295
+ ? value.filter((v) => typeof v === 'string')
37296
+ : [];
37297
+ /** Blank for display purposes — a number `0` is a real value, not blank. */
37298
+ const isBlank = (value) => value === null || value === undefined || asText(value).trim() === '';
37299
+ /** Treats blank strings, empty arrays and empty upload objects as uncaptured. */
37300
+ function isValueEmpty(value) {
37301
+ if (value === null || value === undefined)
37302
+ return true;
37303
+ if (typeof value === 'string')
37304
+ return value.trim() === '';
37305
+ // multiSelect stores an array; uploads store an object.
37306
+ if (Array.isArray(value))
37307
+ return value.length === 0;
37308
+ if (typeof value === 'object')
37309
+ return Object.keys(value).length === 0;
37310
+ return false;
37311
+ }
37312
+
37313
+ /** A snapshotted option field whose list was never filled in. */
37314
+ const NoOptions = () => (jsx("p", { className: "py-1.5 text-sm text-muted-foreground", children: "No options configured." }));
37315
+ /**
37316
+ * Renders one control for a field described by `type` and its option metadata.
37317
+ *
37318
+ * Covers the field types shared by every custom-field surface. Types specific
37319
+ * to one feature stay with that feature, which handles them before delegating.
37320
+ */
37321
+ function CustomFieldInput({ field, value, disabled, invalid, onChange, renderUpload, }) {
37322
+ // Read-only fields render even when blank, so say why they are blank rather
37323
+ // than leaving an unexplained empty box.
37324
+ const placeholder = disabled && isBlank(value) ? NOT_CAPTURED : undefined;
37325
+ switch (field.type) {
37326
+ case 'dropdown':
37327
+ case 'radio': {
37328
+ const options = field.options ?? [];
37329
+ if (field.type === 'radio') {
37330
+ if (options.length === 0)
37331
+ return jsx(NoOptions, {});
37332
+ return (jsx(RadioCardGroup, { name: field.id, ariaLabel: field.label, disabled: disabled, value: asText(value), onChange: (next) => onChange(next), options: options.map((option) => ({ value: option, label: option })) }));
37333
+ }
37334
+ return (jsxs(Select, { disabled: disabled, value: asText(value), onValueChange: (v) => onChange(v), children: [jsx(SelectTrigger, { id: field.id, "aria-invalid": invalid, className: "h-9 w-full", children: jsx(SelectValue, { placeholder: disabled ? NOT_CAPTURED : (field.placeholder ?? 'Select an option') }) }), jsx(SelectContent, { children: options.map((option) => (jsx(SelectItem, { value: option, children: option }, option))) })] }));
37335
+ }
37336
+ case 'multiSelect': {
37337
+ const options = field.options ?? [];
37338
+ if (options.length === 0)
37339
+ return jsx(NoOptions, {});
37340
+ const selected = asList(value);
37341
+ // Read-only has no trigger to disable, so show the picked values plainly.
37342
+ if (disabled) {
37343
+ return (jsx("p", { className: "py-1.5 text-sm text-foreground", children: selected.length > 0 ? selected.join(', ') : NOT_CAPTURED }));
37344
+ }
37345
+ return (jsx(FilterMultiSelect, { label: field.placeholder ?? 'Select options', value: selected, onChange: (next) => onChange(next), options: options.map((option) => ({ value: option, label: option })), triggerClassName: "w-full" }));
37346
+ }
37347
+ case 'toggle':
37348
+ return (jsx("div", { className: "flex h-9 items-center", children: jsx(ToggleSwitch, { checked: value === true, disabled: disabled, onCheckedChange: (checked) => onChange(checked) }) }));
37349
+ case 'time':
37350
+ return (jsx(TimePicker, { name: field.id, disabled: disabled, placeholder: disabled ? NOT_CAPTURED : (field.placeholder ?? 'Select time'), value: asText(value), onChange: (next) => onChange(next ?? null) }));
37351
+ case 'email':
37352
+ case 'phone':
37353
+ return (jsx(Input, { id: field.id, type: field.type === 'email' ? 'email' : 'tel', inputMode: field.type === 'phone' ? 'tel' : undefined, disabled: disabled, placeholder: placeholder ?? field.placeholder, "aria-invalid": invalid, value: asText(value), onChange: (e) => onChange(e.target.value) }));
37354
+ case 'image':
37355
+ case 'file':
37356
+ case 'docsWithExpiry':
37357
+ return (renderUpload?.({
37358
+ id: field.id,
37359
+ variant: field.type,
37360
+ value,
37361
+ expiryDateLabel: field.expiryDateLabel,
37362
+ disabled,
37363
+ onChange,
37364
+ }) ?? null);
37365
+ case 'textarea':
37366
+ return (jsx(Textarea, { id: field.id, rows: 3, disabled: disabled, placeholder: placeholder ?? field.placeholder, "aria-invalid": invalid, value: asText(value), onChange: (e) => onChange(e.target.value) }));
37367
+ case 'number':
37368
+ // The unit is carried by the label, so the input keeps its full width.
37369
+ return (jsx(NumberInput, { id: field.id, disabled: disabled, placeholder: placeholder ?? field.placeholder, "aria-invalid": invalid, value: typeof value === 'number' ? value : '', emitUndefinedOnEmpty: true, onChange: (v) => onChange(v ?? null), className: "h-9 w-full" }));
37370
+ case 'date':
37371
+ return (jsx(DateInput, { name: field.id, disabled: disabled, placeholder: placeholder ?? field.placeholder, max: field.maxDate, value: typeof value === 'string' && value ? new Date(value) : undefined, onChange: (date) => onChange(date ? date.toISOString() : null) }));
37372
+ case 'checkbox':
37373
+ return (jsxs("label", { className: "flex h-9 cursor-pointer select-none items-center gap-2", children: [jsx(Checkbox, { id: field.id, disabled: disabled, checked: value === true, onCheckedChange: (checked) => onChange(checked === true) }), jsx("span", { className: "text-sm text-muted-foreground", children: disabled ? (value === true ? 'Yes' : 'No') : 'Yes' })] }));
37374
+ default:
37375
+ return (jsx(Input, { id: field.id, disabled: disabled, placeholder: placeholder ?? field.placeholder, "aria-invalid": invalid, value: asText(value), onChange: (e) => onChange(e.target.value) }));
37376
+ }
37377
+ }
37378
+
37379
+ const formatDate = (iso) => {
37380
+ const date = new Date(iso);
37381
+ return Number.isNaN(date.getTime())
37382
+ ? iso
37383
+ : date.toLocaleDateString(undefined, {
37384
+ day: '2-digit',
37385
+ month: 'short',
37386
+ year: 'numeric',
37387
+ });
37388
+ };
37389
+ const isUpload = (value) => !!value && typeof value === 'object' && 'key' in value;
37390
+ const FileLink = ({ file }) => file.url ? (jsxs("a", { href: file.url, target: "_blank", rel: "noreferrer", className: "inline-flex items-center gap-1.5 text-primary hover:underline", children: [jsx(FileText, { className: "h-3.5 w-3.5 shrink-0", "aria-hidden": true }), file.name] })) : (jsxs("span", { className: "inline-flex items-center gap-1.5", children: [jsx(FileText, { className: "h-3.5 w-3.5 shrink-0 text-muted-foreground", "aria-hidden": true }), file.name] }));
37391
+ /** Muted dash, so an uncaptured field reads as blank rather than as a value. */
37392
+ const EmptyValue = () => (jsx("span", { className: "text-muted-foreground/60", children: "\u2014" }));
37393
+ /**
37394
+ * A captured value rendered for reading rather than editing. Edit forms use
37395
+ * real inputs; a disabled input full of placeholders is much harder to scan
37396
+ * than plain text, and reads as broken rather than empty.
37397
+ */
37398
+ function CustomFieldValue({ type, value, unit, }) {
37399
+ if (isValueEmpty(value))
37400
+ return jsx(EmptyValue, {});
37401
+ switch (type) {
37402
+ case 'checkbox':
37403
+ case 'toggle':
37404
+ return jsx("span", { children: value === true ? 'Yes' : 'No' });
37405
+ case 'date':
37406
+ return jsx("span", { children: typeof value === 'string' ? formatDate(value) : '—' });
37407
+ case 'multiSelect':
37408
+ return (jsx("span", { children: Array.isArray(value) ? value.join(', ') : String(value) }));
37409
+ case 'image':
37410
+ case 'file':
37411
+ return isUpload(value) ? jsx(FileLink, { file: value }) : jsx(EmptyValue, {});
37412
+ case 'docsWithExpiry': {
37413
+ const doc = value;
37414
+ if (!isUpload(doc.file))
37415
+ return jsx(EmptyValue, {});
37416
+ return (jsxs("span", { className: "flex flex-col gap-0.5", children: [jsx(FileLink, { file: doc.file }), doc.expiryDate && (jsxs("span", { className: "text-xs text-muted-foreground", children: ["Expires ", formatDate(doc.expiryDate)] }))] }));
37417
+ }
37418
+ case 'number': {
37419
+ const text = typeof value === 'number' ? value.toLocaleString() : String(value);
37420
+ return (jsx("span", { className: "tabular-nums", children: unit ? `${text} ${unit}` : text }));
37421
+ }
37422
+ default:
37423
+ return (jsx("span", { className: "whitespace-pre-wrap break-words", children: String(value) }));
37424
+ }
37425
+ }
37426
+
37427
+ const FIELD_TYPE_ICONS = {
37428
+ text: Type,
37429
+ textarea: AlignLeft,
37430
+ email: Mail,
37431
+ phone: Phone,
37432
+ number: Hash,
37433
+ date: Calendar$1,
37434
+ time: Clock,
37435
+ dropdown: CircleChevronDown,
37436
+ radio: CircleDot,
37437
+ checkbox: SquareCheckBig,
37438
+ multiSelect: ListChecks,
37439
+ toggle: ToggleLeft,
37440
+ boolean: ToggleLeft,
37441
+ image: Image$1,
37442
+ file: Paperclip,
37443
+ docsWithExpiry: Paperclip,
37444
+ };
37445
+ /** Glyph for a field type, so a list of fields is scannable at a glance. */
37446
+ function fieldTypeIcon(type) {
37447
+ return FIELD_TYPE_ICONS[type] ?? Type;
37448
+ }
37449
+
36934
37450
  /**
36935
37451
  * Compact "time ago" label, e.g. "5m ago". Falls back to a locale date past a
36936
37452
  * week so older entries stay scannable.
@@ -37962,28 +38478,6 @@ function PurchaseOrderComboBox({ selectedItem, onSelect, fetchPurchaseOrders, se
37962
38478
  : '', fetchPage: fetchPage, resolveById: resolveById, preSelectedId: preSelectedId, searchPlaceholder: searchPlaceholder, emptyMessage: "No purchase orders found.", disabled: disabled, className: className, align: align }));
37963
38479
  }
37964
38480
 
37965
- /**
37966
- * Horizontal row of option cards behaving as a radio group.
37967
- * Selected option highlights with primary border + light green background + filled dot.
37968
- * Unselected options have an empty circle indicator.
37969
- */
37970
- function RadioCardGroup({ value, onChange, options, className, disabled, name, ariaLabel, iconSize = 'sm', }) {
37971
- const iconSizeClasses = iconSize === 'xl'
37972
- ? '[&_svg]:h-10 [&_svg]:w-10'
37973
- : iconSize === 'lg'
37974
- ? '[&_svg]:h-6 [&_svg]:w-6'
37975
- : '[&_svg]:h-4 [&_svg]:w-4';
37976
- return (jsx("div", { role: "radiogroup", "aria-label": ariaLabel, className: cn('grid w-full grid-cols-2 gap-3 sm:grid-cols-4', className), children: options.map((opt) => {
37977
- const selected = value === opt.value;
37978
- const isDisabled = disabled || opt.disabled;
37979
- return (jsxs("button", { type: "button", role: "radio", "aria-checked": selected, disabled: isDisabled, "data-state": selected ? 'checked' : 'unchecked', onClick: () => !isDisabled && onChange(opt.value), name: name, className: cn('flex w-full cursor-pointer gap-3 rounded-md border px-3 text-sm font-medium shadow-[0_1px_2px_0_rgba(0,0,0,0.05)] transition-colors disabled:cursor-not-allowed', 'outline-none focus-visible:ring-2 focus-visible:ring-primary/30', opt.description
37980
- ? 'min-h-14 items-start py-2 text-left'
37981
- : 'h-9 items-center py-1.5', selected
37982
- ? 'border-primary bg-primary/10 text-primary'
37983
- : 'border-transparent bg-[#FAFAFA] text-foreground dark:bg-[#262626]', isDisabled && 'cursor-not-allowed opacity-50'), children: [jsx("span", { "aria-hidden": "true", className: cn('relative inline-flex h-4 w-4 shrink-0 items-center justify-center rounded-full border', opt.description && 'mt-[3px]', selected ? 'border-primary' : 'border-gray-300'), children: selected && (jsx("span", { className: "block h-2 w-2 rounded-full bg-primary" })) }), jsxs("span", { className: "flex min-w-0 flex-1 flex-col items-start", children: [jsx("span", { className: "truncate", children: opt.label }), opt.description && (jsx("span", { className: cn('mt-0.5 text-xs font-normal', selected ? 'text-primary/80' : 'text-label'), children: opt.description }))] }), opt.icon && (jsx("span", { "aria-hidden": "true", className: cn('inline-flex shrink-0 items-center', iconSizeClasses, selected ? 'text-primary' : 'text-label'), children: opt.icon }))] }, opt.value));
37984
- }) }));
37985
- }
37986
-
37987
38481
  // ::- Persistent data structure representing an ordered mapping from
37988
38482
  // strings to values, with some convenient update methods.
37989
38483
  function OrderedMap(content) {
@@ -66672,158 +67166,6 @@ function TagsInput({ value, onChange, placeholder, helperText, uppercase = false
66672
67166
  return (jsxs("div", { className: "w-full", children: [jsxs("div", { className: "flex items-center gap-2", children: [jsx(Input, { value: input, onChange: onInputChange, onKeyDown: onInputKeyDown, placeholder: placeholder || 'Type and Press Enter', className: "flex-1 bg-formInput" }), jsxs(Button$1, { type: "button", onClick: addTag, disabled: addDisabled, className: "h-9 gap-1.5 disabled:opacity-50", children: [jsx(Plus, { className: "h-4 w-4" }), "Add"] })] }), helperText && (jsx("p", { className: "mt-1.5 text-xs text-muted-foreground", children: helperText })), value.length > 0 && (jsx("div", { className: "mt-3 flex flex-wrap gap-2", children: value.map((tag, idx) => (jsxs("span", { className: "inline-flex items-center gap-1.5 rounded-md border border-border bg-secondary px-2 py-1 text-xs font-medium text-foreground", children: [tag, jsx("button", { type: "button", onClick: () => removeTag(idx), "aria-label": `Remove ${tag}`, className: "cursor-pointer text-muted-foreground transition-colors hover:text-foreground", children: jsx(X$2, { className: "h-3 w-3" }) })] }, idx))) }))] }));
66673
67167
  }
66674
67168
 
66675
- /**
66676
- * One scrolling column of the picker (hours, minutes or period). The selected
66677
- * row is scrolled into view whenever it changes, so reopening the popover lands
66678
- * on the current value instead of at midnight.
66679
- */
66680
- function TimeColumn({ label, options, selected, onSelect, }) {
66681
- const listRef = useRef(null);
66682
- const activeRef = useRef(null);
66683
- useEffect(() => {
66684
- const list = listRef.current;
66685
- const active = activeRef.current;
66686
- if (!list || !active)
66687
- return;
66688
- // `scrollIntoView` would scroll the page as well as the column.
66689
- list.scrollTop =
66690
- active.offsetTop - list.clientHeight / 2 + active.clientHeight / 2;
66691
- }, [selected]);
66692
- return (jsxs("div", { className: "flex min-w-0 flex-col", children: [jsx("span", { className: "px-1 pb-1.5 text-center text-[11px] font-medium uppercase tracking-wide text-muted-foreground", children: label }), jsx("div", { ref: listRef, role: "listbox", "aria-label": label, className: "scrollbar-thin h-[184px] overflow-y-auto px-1", children: jsx("div", { className: "flex flex-col gap-0.5", children: options.map((option) => {
66693
- const isSelected = option.value === selected;
66694
- return (jsx("button", { ref: isSelected ? activeRef : undefined, type: "button", role: "option", "aria-selected": isSelected, onClick: () => onSelect(option.value), className: cn('rounded-md px-3 py-1.5 text-center text-sm tabular-nums transition-colors', 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring', isSelected
66695
- ? 'bg-primary text-primary-foreground'
66696
- : 'text-foreground hover:bg-muted'), children: option.label }, option.value));
66697
- }) }) })] }));
66698
- }
66699
-
66700
- const TIME_PATTERN = /^(\d{1,2}):(\d{2})(?::\d{2})?$/;
66701
- const pad = (n) => String(n).padStart(2, '0');
66702
- /** Reads `HH:mm` / `HH:mm:ss`. Returns null for anything out of range. */
66703
- function parseTimeValue(value) {
66704
- const match = TIME_PATTERN.exec((value ?? '').trim());
66705
- if (!match)
66706
- return null;
66707
- const hour = Number(match[1]);
66708
- const minute = Number(match[2]);
66709
- if (hour > 23 || minute > 59)
66710
- return null;
66711
- return { hour, minute };
66712
- }
66713
- /** The stored form — always 24-hour, whatever the display format. */
66714
- function toTimeValue(hour, minute) {
66715
- return `${pad(hour)}:${pad(minute)}`;
66716
- }
66717
- function formatTimeDisplay(time, use24Hour) {
66718
- if (use24Hour)
66719
- return toTimeValue(time.hour, time.minute);
66720
- // 0 and 12 both map to 12 — midnight is 12 AM, noon is 12 PM.
66721
- const hour12 = time.hour % 12 === 0 ? 12 : time.hour % 12;
66722
- const period = time.hour < 12 ? 'AM' : 'PM';
66723
- return `${pad(hour12)}:${pad(time.minute)} ${period}`;
66724
- }
66725
- function buildHourOptions(use24Hour) {
66726
- if (use24Hour) {
66727
- return Array.from({ length: 24 }, (_, hour) => ({
66728
- value: hour,
66729
- label: pad(hour),
66730
- }));
66731
- }
66732
- // 12 first, matching how a clock reads.
66733
- return Array.from({ length: 12 }, (_, index) => {
66734
- const hour12 = index === 0 ? 12 : index;
66735
- return { value: hour12, label: pad(hour12) };
66736
- });
66737
- }
66738
- function buildMinuteOptions(step) {
66739
- const safeStep = Number.isFinite(step) && step > 0 ? Math.floor(step) : 1;
66740
- const options = [];
66741
- for (let minute = 0; minute < 60; minute += safeStep) {
66742
- options.push({ value: minute, label: pad(minute) });
66743
- }
66744
- return options;
66745
- }
66746
- /** The hour as the 12-hour column shows it (12, 1…11). */
66747
- function toHour12(hour) {
66748
- return hour % 12 === 0 ? 12 : hour % 12;
66749
- }
66750
- /** Rebuilds a 24-hour hour from a 12-hour column value and its period. */
66751
- function fromHour12(hour12, period) {
66752
- const base = hour12 % 12;
66753
- return period === 'PM' ? base + 12 : base;
66754
- }
66755
- function periodOf(hour) {
66756
- return hour < 12 ? 'AM' : 'PM';
66757
- }
66758
-
66759
- // Only one TimePicker popover should be open at a time — same coordination the
66760
- // DateInput uses, for the same reason: each is its own `modal` Radix Popover, so
66761
- // opening a second does not dismiss the first by outside-click.
66762
- const TIMEPICKER_OPEN_EVENT = 'caratlogic:timepicker-open';
66763
- const PERIOD_OPTIONS = [
66764
- { value: 0, label: 'AM' },
66765
- { value: 1, label: 'PM' },
66766
- ];
66767
- function TimePicker({ value, onChange, onBlur, name, className, disabled, placeholder = 'Select time', use24Hour = false, minuteStep = 1, hideFooter = false, }) {
66768
- const [open, setOpen] = useState(false);
66769
- const instanceId = useId$2();
66770
- const parsed = parseTimeValue(value);
66771
- useEffect(() => {
66772
- const onOtherOpen = (e) => {
66773
- if (e.detail !== instanceId)
66774
- setOpen(false);
66775
- };
66776
- window.addEventListener(TIMEPICKER_OPEN_EVENT, onOtherOpen);
66777
- return () => window.removeEventListener(TIMEPICKER_OPEN_EVENT, onOtherOpen);
66778
- }, [instanceId]);
66779
- const handleOpenChange = (next) => {
66780
- setOpen(next);
66781
- if (next) {
66782
- window.dispatchEvent(new CustomEvent(TIMEPICKER_OPEN_EVENT, { detail: instanceId }));
66783
- }
66784
- };
66785
- /** Picking one column before the others commits against a 00:00 baseline. */
66786
- const commit = (hour, minute) => {
66787
- onChange(toTimeValue(hour, minute));
66788
- };
66789
- const handleHour = (picked) => {
66790
- const minute = parsed?.minute ?? 0;
66791
- if (use24Hour) {
66792
- commit(picked, minute);
66793
- return;
66794
- }
66795
- commit(fromHour12(picked, parsed ? periodOf(parsed.hour) : 'AM'), minute);
66796
- };
66797
- const handleMinute = (picked) => {
66798
- commit(parsed?.hour ?? 0, picked);
66799
- };
66800
- const handlePeriod = (picked) => {
66801
- const period = picked === 0 ? 'AM' : 'PM';
66802
- const hour12 = parsed ? toHour12(parsed.hour) : 12;
66803
- commit(fromHour12(hour12, period), parsed?.minute ?? 0);
66804
- };
66805
- const selectedHour = parsed
66806
- ? use24Hour
66807
- ? parsed.hour
66808
- : toHour12(parsed.hour)
66809
- : null;
66810
- // NOTE: `open` is driven from the button's onClick rather than
66811
- // <PopoverTrigger>, matching DateInput — inside a modal <SlideOut> the
66812
- // trigger's built-in toggle does not fire in Safari. <PopoverAnchor> is pure
66813
- // positioning, so a single controlled toggle stays the only source of truth.
66814
- return (jsxs(Popover, { open: open, onOpenChange: handleOpenChange, modal: true, children: [jsx(PopoverAnchor, { asChild: true, children: jsxs("button", { type: "button", name: name, onBlur: onBlur, disabled: disabled, "aria-haspopup": "dialog", "aria-expanded": open, onClick: () => {
66815
- if (!disabled)
66816
- handleOpenChange(!open);
66817
- }, "data-slot": "input", "data-empty": !parsed || undefined, className: cn('border-input-border flex h-9 w-full min-w-0 cursor-pointer items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-1 text-left shadow-[0_1px_2px_0_#0000000d] transition-[color,box-shadow] outline-none', 'focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]', 'aria-invalid:ring-destructive/20 aria-invalid:border-destructive', disabled && 'cursor-not-allowed bg-muted/50 text-label', className), children: [jsx("span", { className: cn('truncate text-sm md:text-sm', parsed ? 'text-foreground' : 'text-placeholder'), children: parsed ? formatTimeDisplay(parsed, use24Hour) : placeholder }), jsx("span", { className: "inline-flex h-4 w-4 shrink-0 items-center justify-center text-muted-foreground", children: jsx(Clock, { className: "h-4 w-4 stroke-[1.75]" }) })] }) }), jsxs(PopoverContent, { align: "start", className: "w-auto p-3", children: [jsxs("div", { className: "flex gap-1", children: [jsx(TimeColumn, { label: "Hour", options: buildHourOptions(use24Hour), selected: selectedHour, onSelect: handleHour }), jsx(TimeColumn, { label: "Min", options: buildMinuteOptions(minuteStep), selected: parsed?.minute ?? null, onSelect: handleMinute }), !use24Hour && (jsx(TimeColumn, { label: "AM/PM", options: PERIOD_OPTIONS, selected: parsed ? (periodOf(parsed.hour) === 'AM' ? 0 : 1) : null, onSelect: handlePeriod }))] }), !hideFooter && (jsxs("div", { className: "mt-2 flex items-center justify-between gap-2 border-t border-border pt-2", children: [jsx("button", { type: "button", onClick: () => {
66818
- onChange(undefined);
66819
- setOpen(false);
66820
- }, className: "rounded-md px-2 py-1 text-xs font-medium text-muted-foreground transition-colors hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring", children: "Clear" }), jsx("button", { type: "button", onClick: () => {
66821
- const now = new Date();
66822
- commit(now.getHours(), now.getMinutes());
66823
- setOpen(false);
66824
- }, className: "rounded-md px-2 py-1 text-xs font-medium text-primary transition-colors hover:text-hover focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring", children: "Now" })] }))] })] }));
66825
- }
66826
-
66827
67169
  function mapToItem(w, separator) {
66828
67170
  const id = w.id || w.warehouseId || '';
66829
67171
  if (!id)
@@ -76949,5 +77291,5 @@ var RichTextAreaImpl = /*#__PURE__*/Object.freeze({
76949
77291
  RichTextarea: RichTextarea
76950
77292
  });
76951
77293
 
76952
- export { ActionBadge, ActionButtonWithTooltip, AdvancedSearchDrawer, Alert, ApiComboBox, AppSidebar, AuditEntryCard, AuditHistoryPanel, AuditTimeline, AuditTimelineShimmer, Badge, BadgeType, BusinessContactStatusFilter, Button, CUSTOMER_AUDIT_CONFIG, CertificateRowList, ChangePill, Collapsible, CollapsibleCard, CollapsibleContent, CollapsibleTrigger, ConfirmDialog, ContactTypeFilter, CopyButton, CountrySelect, CreateFormPageHeader, CreateFormPageShell, CurrencyDisplayTabs, CurrencyInput, CurrencyToggle, CustomCombobox, CustomTable, CustomizeColumnsDrawer, DIAMOND_AUDIT_CONFIG, DashboardShell, DataEditableTable, DataTable, DateInput, DetailChip, DetailPageLayout, DetailPageSkeleton, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EntityHeader, Field, FieldSkeleton, FileUploader, FilterMultiSelect, FilterSelect, FormSectionCard, FormSectionCardSkeleton, GEM_AUDIT_CONFIG, HistoryEntryCard, HistoryTimeline, HistoryTimelineShimmer, INVOICE_AUDIT_CONFIG, IconButton, IdHyperlinkText, InAppNotificationCard, InAppNotificationsPanel, InfoBanner, InventoryComboBox, InventoryItemCard, InventoryItemRow, InvoiceComboBox, KYCStatusFilter, KeyValueGrid, LAYOUT_AUDIT_CONFIG, LabeledToggle, MEMO_IN_AUDIT_CONFIG, MEMO_OUT_AUDIT_CONFIG, MediaGallery, MemoInComboBox, MetricCard, MetricRow, MetricTile, Modal, MoreInfoPanel, MoreInfoTrigger, Navbar, NavbarActions, NavbarAvatar, NavbarIconButton, NavbarSearch, NavbarTitle, NumberInput, NumberedStepCard, OtpInput, OwnershipFilter, OwnershipSplitCard, PROFORMA_AUDIT_CONFIG, PageHeader, PageTabs, Pagination, PaginationSelect, PartnerShareCard, PriceInput, Protected, PurchaseOrderComboBox, QUOTATION_AUDIT_CONFIG, RadioCardGroup, ReadMoreText, RefreshButton, RichTextarea$1 as RichTextarea, SEARCHABLE_SELECT_PAGE_SIZE, SafeImage, SearchBox, SearchInput, SearchableSelect, SectionCard, SectionIcon, SegmentedControl, ShareDialog, ShareMenu, ShimmerTable, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupLabel, SidebarHeader, SidebarInset, SidebarMenu, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, SlideOut, SlideOutClose, SlideOutContent, SlideOutDescription, SlideOutHeader, SlideOutOverlay, SlideOutPortal, SlideOutTitle, SlideOutTrigger, Slider, SpecList, Spinner, SquareSkeleton, StateSelect, StatusBadge$1 as StatusBadge, StatusFilter, Stepper, StockTypeFilter, TablePagination, TableSkeleton, Tabs, TabsContent, TabsList, TabsTrigger, TagsInput, TextHyperlink, TimePicker, ToggleSwitch, TruncateTooltip, WarehouseComboBox, WarehouseFilter, ZoomSplitViewer, badgeVariants, buildBulkShareTitle, buildInventoryPublicUrl, buildInventoryRowProps, buildInventoryShareTitle, buildWhatsappUrl, buttonVariants, cn, countries, countryByCode, createVideoMediaItem, dropdownMenuItemDestructiveClass, findRegion, flagEmoji, formatAddressLocation, formatFileSize, generateActionDescription, generateTitle, getBadgeTypeForStatus, getChangePills, getCountryName, getInitials, getStatesOfCountry, iconButtonVariants, inAppNotificationCardA11y, inAppNotificationsPanelA11y, isIndiaCountry, isKnownRegion, isPathActive, isValidAlpha2CountryCode, notify, releaseStaleOverlayBodyLock, renderBadge, resolveCountryCode, toAddressFormValues, useAuditShowMore, useBadge, useButton, useDropdownMenu, useInAppNotificationsPanel, useNavbar, useSidebar, videoThumbnailSrc, watchOverlayBodyLock };
77294
+ export { ActionBadge, ActionButtonWithTooltip, AdvancedSearchDrawer, Alert, ApiComboBox, AppSidebar, AuditEntryCard, AuditHistoryPanel, AuditTimeline, AuditTimelineShimmer, Badge, BadgeType, BusinessContactStatusFilter, Button, CUSTOMER_AUDIT_CONFIG, CertificateRowList, ChangePill, Collapsible, CollapsibleCard, CollapsibleContent, CollapsibleTrigger, ConfirmDialog, ContactTypeFilter, CopyButton, CountrySelect, CreateFormPageHeader, CreateFormPageShell, CurrencyDisplayTabs, CurrencyInput, CurrencyToggle, CustomCombobox, CustomFieldInput, CustomFieldValue, CustomTable, CustomizeColumnsDrawer, DIAMOND_AUDIT_CONFIG, DashboardShell, DataEditableTable, DataTable, DateInput, DetailChip, DetailPageLayout, DetailPageSkeleton, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyValue, EntityHeader, Field, FieldSkeleton, FileUploader, FilterMultiSelect, FilterSelect, FormSectionCard, FormSectionCardSkeleton, GEM_AUDIT_CONFIG, HistoryEntryCard, HistoryTimeline, HistoryTimelineShimmer, INVOICE_AUDIT_CONFIG, IconButton, IdHyperlinkText, InAppNotificationCard, InAppNotificationsPanel, InfoBanner, InventoryComboBox, InventoryItemCard, InventoryItemRow, InvoiceComboBox, KYCStatusFilter, KeyValueGrid, LAYOUT_AUDIT_CONFIG, LabeledToggle, MEMO_IN_AUDIT_CONFIG, MEMO_OUT_AUDIT_CONFIG, MediaGallery, MemoInComboBox, MetricCard, MetricRow, MetricTile, Modal, MoreInfoPanel, MoreInfoTrigger, NOT_CAPTURED, Navbar, NavbarActions, NavbarAvatar, NavbarIconButton, NavbarSearch, NavbarTitle, NumberInput, NumberedStepCard, OtpInput, OwnershipFilter, OwnershipSplitCard, PROFORMA_AUDIT_CONFIG, PageHeader, PageTabs, Pagination, PaginationSelect, PartnerShareCard, PriceInput, Protected, PurchaseOrderComboBox, QUOTATION_AUDIT_CONFIG, RadioCardGroup, ReadMoreText, RefreshButton, RichTextarea$1 as RichTextarea, SEARCHABLE_SELECT_PAGE_SIZE, SafeImage, SearchBox, SearchInput, SearchableSelect, SectionCard, SectionIcon, SegmentedControl, ShareDialog, ShareMenu, ShimmerTable, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupLabel, SidebarHeader, SidebarInset, SidebarMenu, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, SlideOut, SlideOutClose, SlideOutContent, SlideOutDescription, SlideOutHeader, SlideOutOverlay, SlideOutPortal, SlideOutTitle, SlideOutTrigger, Slider, SpecList, Spinner, SquareSkeleton, StateSelect, StatusBadge$1 as StatusBadge, StatusFilter, Stepper, StockTypeFilter, TablePagination, TableSkeleton, Tabs, TabsContent, TabsList, TabsTrigger, TagsInput, TextHyperlink, TimePicker, ToggleSwitch, TruncateTooltip, WarehouseComboBox, WarehouseFilter, ZoomSplitViewer, asList, asText, badgeVariants, buildBulkShareTitle, buildInventoryPublicUrl, buildInventoryRowProps, buildInventoryShareTitle, buildWhatsappUrl, buttonVariants, cn, countries, countryByCode, createVideoMediaItem, dropdownMenuItemDestructiveClass, fieldTypeIcon, findRegion, flagEmoji, formatAddressLocation, formatFileSize, generateActionDescription, generateTitle, getBadgeTypeForStatus, getChangePills, getCountryName, getInitials, getStatesOfCountry, iconButtonVariants, inAppNotificationCardA11y, inAppNotificationsPanelA11y, isBlank, isIndiaCountry, isKnownRegion, isPathActive, isValidAlpha2CountryCode, isValueEmpty, notify, releaseStaleOverlayBodyLock, renderBadge, resolveCountryCode, toAddressFormValues, useAuditShowMore, useBadge, useButton, useDropdownMenu, useInAppNotificationsPanel, useNavbar, useSidebar, videoThumbnailSrc, watchOverlayBodyLock };
76953
77295
  //# sourceMappingURL=index.esm.js.map