@caratlogic/design-system 0.1.30 → 0.1.32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/dist/components/atoms/NumberInput/NumberInput.d.ts.map +1 -1
  2. package/dist/components/atoms/NumberInput/NumberInput.types.d.ts +4 -0
  3. package/dist/components/atoms/NumberInput/NumberInput.types.d.ts.map +1 -1
  4. package/dist/components/molecules/ConfirmDialog/ConfirmDialog.d.ts.map +1 -1
  5. package/dist/components/molecules/ConfirmDialog/ConfirmDialog.parts.d.ts +1 -0
  6. package/dist/components/molecules/ConfirmDialog/ConfirmDialog.parts.d.ts.map +1 -1
  7. package/dist/components/molecules/ConfirmDialog/ConfirmDialog.types.d.ts +5 -11
  8. package/dist/components/molecules/ConfirmDialog/ConfirmDialog.types.d.ts.map +1 -1
  9. package/dist/components/molecules/DocumentDeleteDialog/DocumentDeleteDialog.d.ts +1 -1
  10. package/dist/components/molecules/DocumentDeleteDialog/DocumentDeleteDialog.d.ts.map +1 -1
  11. package/dist/components/molecules/DocumentHero/DocumentHero.d.ts +4 -4
  12. package/dist/components/molecules/DocumentHero/DocumentHero.d.ts.map +1 -1
  13. package/dist/components/molecules/DocumentHero/DocumentHero.types.d.ts +48 -41
  14. package/dist/components/molecules/DocumentHero/DocumentHero.types.d.ts.map +1 -1
  15. package/dist/components/molecules/DocumentHero/DocumentHero.utils.d.ts +7 -16
  16. package/dist/components/molecules/DocumentHero/DocumentHero.utils.d.ts.map +1 -1
  17. package/dist/components/molecules/DocumentHero/index.d.ts +1 -1
  18. package/dist/components/molecules/DocumentHero/index.d.ts.map +1 -1
  19. package/dist/components/molecules/Modal/Modal.d.ts +1 -1
  20. package/dist/components/molecules/Modal/Modal.d.ts.map +1 -1
  21. package/dist/components/molecules/Modal/Modal.types.d.ts +9 -3
  22. package/dist/components/molecules/Modal/Modal.types.d.ts.map +1 -1
  23. package/dist/components/molecules/Skeletons/Skeletons.d.ts +1 -1
  24. package/dist/components/molecules/Skeletons/Skeletons.d.ts.map +1 -1
  25. package/dist/components/organisms/FileUploader/ImageCropModal.d.ts.map +1 -1
  26. package/dist/components/ui/button.d.ts.map +1 -1
  27. package/dist/components/ui/dialog.d.ts +23 -2
  28. package/dist/components/ui/dialog.d.ts.map +1 -1
  29. package/dist/index.cjs.js +310 -251
  30. package/dist/index.cjs.js.map +1 -1
  31. package/dist/index.esm.js +311 -252
  32. package/dist/index.esm.js.map +1 -1
  33. package/dist/ui.cjs.js +60 -14
  34. package/dist/ui.cjs.js.map +1 -1
  35. package/dist/ui.esm.js +59 -15
  36. package/dist/ui.esm.js.map +1 -1
  37. package/package.json +1 -1
  38. package/dist/components/molecules/ConfirmDialog/ConfirmDialog.hooks.d.ts +0 -3
  39. package/dist/components/molecules/ConfirmDialog/ConfirmDialog.hooks.d.ts.map +0 -1
package/dist/index.cjs.js CHANGED
@@ -2698,12 +2698,12 @@ const createLucideIcon = (iconName, iconNode) => {
2698
2698
  */
2699
2699
 
2700
2700
 
2701
- const __iconNode$1s = [
2701
+ const __iconNode$1t = [
2702
2702
  ["path", { d: "M15 12H3", key: "6jk70r" }],
2703
2703
  ["path", { d: "M17 18H3", key: "1amg6g" }],
2704
2704
  ["path", { d: "M21 6H3", key: "1jwq7v" }]
2705
2705
  ];
2706
- const AlignLeft = createLucideIcon("align-left", __iconNode$1s);
2706
+ const AlignLeft = createLucideIcon("align-left", __iconNode$1t);
2707
2707
 
2708
2708
  /**
2709
2709
  * @license lucide-react v0.539.0 - ISC
@@ -2713,12 +2713,12 @@ const AlignLeft = createLucideIcon("align-left", __iconNode$1s);
2713
2713
  */
2714
2714
 
2715
2715
 
2716
- const __iconNode$1r = [
2716
+ const __iconNode$1s = [
2717
2717
  ["rect", { width: "20", height: "5", x: "2", y: "3", rx: "1", key: "1wp1u1" }],
2718
2718
  ["path", { d: "M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8", key: "1s80jp" }],
2719
2719
  ["path", { d: "M10 12h4", key: "a56b0p" }]
2720
2720
  ];
2721
- const Archive = createLucideIcon("archive", __iconNode$1r);
2721
+ const Archive = createLucideIcon("archive", __iconNode$1s);
2722
2722
 
2723
2723
  /**
2724
2724
  * @license lucide-react v0.539.0 - ISC
@@ -2728,11 +2728,11 @@ const Archive = createLucideIcon("archive", __iconNode$1r);
2728
2728
  */
2729
2729
 
2730
2730
 
2731
- const __iconNode$1q = [
2731
+ const __iconNode$1r = [
2732
2732
  ["path", { d: "m12 19-7-7 7-7", key: "1l729n" }],
2733
2733
  ["path", { d: "M19 12H5", key: "x3x0zl" }]
2734
2734
  ];
2735
- const ArrowLeft = createLucideIcon("arrow-left", __iconNode$1q);
2735
+ const ArrowLeft = createLucideIcon("arrow-left", __iconNode$1r);
2736
2736
 
2737
2737
  /**
2738
2738
  * @license lucide-react v0.539.0 - ISC
@@ -2742,11 +2742,11 @@ const ArrowLeft = createLucideIcon("arrow-left", __iconNode$1q);
2742
2742
  */
2743
2743
 
2744
2744
 
2745
- const __iconNode$1p = [
2745
+ const __iconNode$1q = [
2746
2746
  ["path", { d: "M5 12h14", key: "1ays0h" }],
2747
2747
  ["path", { d: "m12 5 7 7-7 7", key: "xquz4c" }]
2748
2748
  ];
2749
- const ArrowRight = createLucideIcon("arrow-right", __iconNode$1p);
2749
+ const ArrowRight = createLucideIcon("arrow-right", __iconNode$1q);
2750
2750
 
2751
2751
  /**
2752
2752
  * @license lucide-react v0.539.0 - ISC
@@ -2756,11 +2756,11 @@ const ArrowRight = createLucideIcon("arrow-right", __iconNode$1p);
2756
2756
  */
2757
2757
 
2758
2758
 
2759
- const __iconNode$1o = [
2759
+ const __iconNode$1p = [
2760
2760
  ["path", { d: "M4.929 4.929 19.07 19.071", key: "196cmz" }],
2761
2761
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }]
2762
2762
  ];
2763
- const Ban = createLucideIcon("ban", __iconNode$1o);
2763
+ const Ban = createLucideIcon("ban", __iconNode$1p);
2764
2764
 
2765
2765
  /**
2766
2766
  * @license lucide-react v0.539.0 - ISC
@@ -2770,7 +2770,7 @@ const Ban = createLucideIcon("ban", __iconNode$1o);
2770
2770
  */
2771
2771
 
2772
2772
 
2773
- const __iconNode$1n = [
2773
+ const __iconNode$1o = [
2774
2774
  ["path", { d: "M10.268 21a2 2 0 0 0 3.464 0", key: "vwvbt9" }],
2775
2775
  [
2776
2776
  "path",
@@ -2781,7 +2781,7 @@ const __iconNode$1n = [
2781
2781
  ],
2782
2782
  ["circle", { cx: "18", cy: "8", r: "3", key: "1g0gzu" }]
2783
2783
  ];
2784
- const BellDot = createLucideIcon("bell-dot", __iconNode$1n);
2784
+ const BellDot = createLucideIcon("bell-dot", __iconNode$1o);
2785
2785
 
2786
2786
  /**
2787
2787
  * @license lucide-react v0.539.0 - ISC
@@ -2791,7 +2791,7 @@ const BellDot = createLucideIcon("bell-dot", __iconNode$1n);
2791
2791
  */
2792
2792
 
2793
2793
 
2794
- const __iconNode$1m = [
2794
+ const __iconNode$1n = [
2795
2795
  ["path", { d: "M10.268 21a2 2 0 0 0 3.464 0", key: "vwvbt9" }],
2796
2796
  ["path", { d: "M22 8c0-2.3-.8-4.3-2-6", key: "5bb3ad" }],
2797
2797
  [
@@ -2803,7 +2803,7 @@ const __iconNode$1m = [
2803
2803
  ],
2804
2804
  ["path", { d: "M4 2C2.8 3.7 2 5.7 2 8", key: "tap9e0" }]
2805
2805
  ];
2806
- const BellRing = createLucideIcon("bell-ring", __iconNode$1m);
2806
+ const BellRing = createLucideIcon("bell-ring", __iconNode$1n);
2807
2807
 
2808
2808
  /**
2809
2809
  * @license lucide-react v0.539.0 - ISC
@@ -2813,7 +2813,7 @@ const BellRing = createLucideIcon("bell-ring", __iconNode$1m);
2813
2813
  */
2814
2814
 
2815
2815
 
2816
- const __iconNode$1l = [
2816
+ const __iconNode$1m = [
2817
2817
  ["path", { d: "M10.268 21a2 2 0 0 0 3.464 0", key: "vwvbt9" }],
2818
2818
  [
2819
2819
  "path",
@@ -2823,7 +2823,7 @@ const __iconNode$1l = [
2823
2823
  }
2824
2824
  ]
2825
2825
  ];
2826
- const Bell = createLucideIcon("bell", __iconNode$1l);
2826
+ const Bell = createLucideIcon("bell", __iconNode$1m);
2827
2827
 
2828
2828
  /**
2829
2829
  * @license lucide-react v0.539.0 - ISC
@@ -2833,13 +2833,13 @@ const Bell = createLucideIcon("bell", __iconNode$1l);
2833
2833
  */
2834
2834
 
2835
2835
 
2836
- const __iconNode$1k = [
2836
+ const __iconNode$1l = [
2837
2837
  [
2838
2838
  "path",
2839
2839
  { d: "M6 12h9a4 4 0 0 1 0 8H7a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h7a4 4 0 0 1 0 8", key: "mg9rjx" }
2840
2840
  ]
2841
2841
  ];
2842
- const Bold$1 = createLucideIcon("bold", __iconNode$1k);
2842
+ const Bold$1 = createLucideIcon("bold", __iconNode$1l);
2843
2843
 
2844
2844
  /**
2845
2845
  * @license lucide-react v0.539.0 - ISC
@@ -2849,7 +2849,7 @@ const Bold$1 = createLucideIcon("bold", __iconNode$1k);
2849
2849
  */
2850
2850
 
2851
2851
 
2852
- const __iconNode$1j = [
2852
+ const __iconNode$1k = [
2853
2853
  [
2854
2854
  "path",
2855
2855
  {
@@ -2860,7 +2860,7 @@ const __iconNode$1j = [
2860
2860
  ["path", { d: "m3.3 7 8.7 5 8.7-5", key: "g66t2b" }],
2861
2861
  ["path", { d: "M12 22V12", key: "d0xqtd" }]
2862
2862
  ];
2863
- const Box = createLucideIcon("box", __iconNode$1j);
2863
+ const Box = createLucideIcon("box", __iconNode$1k);
2864
2864
 
2865
2865
  /**
2866
2866
  * @license lucide-react v0.539.0 - ISC
@@ -2870,7 +2870,7 @@ const Box = createLucideIcon("box", __iconNode$1j);
2870
2870
  */
2871
2871
 
2872
2872
 
2873
- const __iconNode$1i = [
2873
+ const __iconNode$1j = [
2874
2874
  ["path", { d: "M6 22V4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v18Z", key: "1b4qmf" }],
2875
2875
  ["path", { d: "M6 12H4a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h2", key: "i71pzd" }],
2876
2876
  ["path", { d: "M18 9h2a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2h-2", key: "10jefs" }],
@@ -2879,7 +2879,7 @@ const __iconNode$1i = [
2879
2879
  ["path", { d: "M10 14h4", key: "kelpxr" }],
2880
2880
  ["path", { d: "M10 18h4", key: "1ulq68" }]
2881
2881
  ];
2882
- const Building2 = createLucideIcon("building-2", __iconNode$1i);
2882
+ const Building2 = createLucideIcon("building-2", __iconNode$1j);
2883
2883
 
2884
2884
  /**
2885
2885
  * @license lucide-react v0.539.0 - ISC
@@ -2889,7 +2889,7 @@ const Building2 = createLucideIcon("building-2", __iconNode$1i);
2889
2889
  */
2890
2890
 
2891
2891
 
2892
- const __iconNode$1h = [
2892
+ const __iconNode$1i = [
2893
2893
  ["path", { d: "M8 2v4", key: "1cmpym" }],
2894
2894
  ["path", { d: "M16 2v4", key: "4m81vk" }],
2895
2895
  ["rect", { width: "18", height: "18", x: "3", y: "4", rx: "2", key: "1hopcy" }],
@@ -2901,7 +2901,7 @@ const __iconNode$1h = [
2901
2901
  ["path", { d: "M12 18h.01", key: "mhygvu" }],
2902
2902
  ["path", { d: "M16 18h.01", key: "kzsmim" }]
2903
2903
  ];
2904
- const CalendarDays = createLucideIcon("calendar-days", __iconNode$1h);
2904
+ const CalendarDays = createLucideIcon("calendar-days", __iconNode$1i);
2905
2905
 
2906
2906
  /**
2907
2907
  * @license lucide-react v0.539.0 - ISC
@@ -2911,13 +2911,13 @@ const CalendarDays = createLucideIcon("calendar-days", __iconNode$1h);
2911
2911
  */
2912
2912
 
2913
2913
 
2914
- const __iconNode$1g = [
2914
+ const __iconNode$1h = [
2915
2915
  ["path", { d: "M8 2v4", key: "1cmpym" }],
2916
2916
  ["path", { d: "M16 2v4", key: "4m81vk" }],
2917
2917
  ["rect", { width: "18", height: "18", x: "3", y: "4", rx: "2", key: "1hopcy" }],
2918
2918
  ["path", { d: "M3 10h18", key: "8toen8" }]
2919
2919
  ];
2920
- const Calendar$1 = createLucideIcon("calendar", __iconNode$1g);
2920
+ const Calendar$1 = createLucideIcon("calendar", __iconNode$1h);
2921
2921
 
2922
2922
  /**
2923
2923
  * @license lucide-react v0.539.0 - ISC
@@ -2927,11 +2927,11 @@ const Calendar$1 = createLucideIcon("calendar", __iconNode$1g);
2927
2927
  */
2928
2928
 
2929
2929
 
2930
- const __iconNode$1f = [
2930
+ const __iconNode$1g = [
2931
2931
  ["path", { d: "M18 6 7 17l-5-5", key: "116fxf" }],
2932
2932
  ["path", { d: "m22 10-7.5 7.5L13 16", key: "ke71qq" }]
2933
2933
  ];
2934
- const CheckCheck = createLucideIcon("check-check", __iconNode$1f);
2934
+ const CheckCheck = createLucideIcon("check-check", __iconNode$1g);
2935
2935
 
2936
2936
  /**
2937
2937
  * @license lucide-react v0.539.0 - ISC
@@ -2941,8 +2941,8 @@ const CheckCheck = createLucideIcon("check-check", __iconNode$1f);
2941
2941
  */
2942
2942
 
2943
2943
 
2944
- const __iconNode$1e = [["path", { d: "M20 6 9 17l-5-5", key: "1gmf2c" }]];
2945
- const Check = createLucideIcon("check", __iconNode$1e);
2944
+ const __iconNode$1f = [["path", { d: "M20 6 9 17l-5-5", key: "1gmf2c" }]];
2945
+ const Check = createLucideIcon("check", __iconNode$1f);
2946
2946
 
2947
2947
  /**
2948
2948
  * @license lucide-react v0.539.0 - ISC
@@ -2952,8 +2952,8 @@ const Check = createLucideIcon("check", __iconNode$1e);
2952
2952
  */
2953
2953
 
2954
2954
 
2955
- const __iconNode$1d = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]];
2956
- const ChevronDown = createLucideIcon("chevron-down", __iconNode$1d);
2955
+ const __iconNode$1e = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]];
2956
+ const ChevronDown = createLucideIcon("chevron-down", __iconNode$1e);
2957
2957
 
2958
2958
  /**
2959
2959
  * @license lucide-react v0.539.0 - ISC
@@ -2963,8 +2963,8 @@ const ChevronDown = createLucideIcon("chevron-down", __iconNode$1d);
2963
2963
  */
2964
2964
 
2965
2965
 
2966
- const __iconNode$1c = [["path", { d: "m15 18-6-6 6-6", key: "1wnfg3" }]];
2967
- const ChevronLeft = createLucideIcon("chevron-left", __iconNode$1c);
2966
+ const __iconNode$1d = [["path", { d: "m15 18-6-6 6-6", key: "1wnfg3" }]];
2967
+ const ChevronLeft = createLucideIcon("chevron-left", __iconNode$1d);
2968
2968
 
2969
2969
  /**
2970
2970
  * @license lucide-react v0.539.0 - ISC
@@ -2974,8 +2974,8 @@ const ChevronLeft = createLucideIcon("chevron-left", __iconNode$1c);
2974
2974
  */
2975
2975
 
2976
2976
 
2977
- const __iconNode$1b = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]];
2978
- const ChevronRight = createLucideIcon("chevron-right", __iconNode$1b);
2977
+ const __iconNode$1c = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]];
2978
+ const ChevronRight = createLucideIcon("chevron-right", __iconNode$1c);
2979
2979
 
2980
2980
  /**
2981
2981
  * @license lucide-react v0.539.0 - ISC
@@ -2985,8 +2985,8 @@ const ChevronRight = createLucideIcon("chevron-right", __iconNode$1b);
2985
2985
  */
2986
2986
 
2987
2987
 
2988
- const __iconNode$1a = [["path", { d: "m18 15-6-6-6 6", key: "153udz" }]];
2989
- const ChevronUp = createLucideIcon("chevron-up", __iconNode$1a);
2988
+ const __iconNode$1b = [["path", { d: "m18 15-6-6-6 6", key: "153udz" }]];
2989
+ const ChevronUp = createLucideIcon("chevron-up", __iconNode$1b);
2990
2990
 
2991
2991
  /**
2992
2992
  * @license lucide-react v0.539.0 - ISC
@@ -2996,11 +2996,11 @@ const ChevronUp = createLucideIcon("chevron-up", __iconNode$1a);
2996
2996
  */
2997
2997
 
2998
2998
 
2999
- const __iconNode$19 = [
2999
+ const __iconNode$1a = [
3000
3000
  ["path", { d: "m11 17-5-5 5-5", key: "13zhaf" }],
3001
3001
  ["path", { d: "m18 17-5-5 5-5", key: "h8a8et" }]
3002
3002
  ];
3003
- const ChevronsLeft = createLucideIcon("chevrons-left", __iconNode$19);
3003
+ const ChevronsLeft = createLucideIcon("chevrons-left", __iconNode$1a);
3004
3004
 
3005
3005
  /**
3006
3006
  * @license lucide-react v0.539.0 - ISC
@@ -3010,11 +3010,11 @@ const ChevronsLeft = createLucideIcon("chevrons-left", __iconNode$19);
3010
3010
  */
3011
3011
 
3012
3012
 
3013
- const __iconNode$18 = [
3013
+ const __iconNode$19 = [
3014
3014
  ["path", { d: "m6 17 5-5-5-5", key: "xnjwq" }],
3015
3015
  ["path", { d: "m13 17 5-5-5-5", key: "17xmmf" }]
3016
3016
  ];
3017
- const ChevronsRight = createLucideIcon("chevrons-right", __iconNode$18);
3017
+ const ChevronsRight = createLucideIcon("chevrons-right", __iconNode$19);
3018
3018
 
3019
3019
  /**
3020
3020
  * @license lucide-react v0.539.0 - ISC
@@ -3024,12 +3024,12 @@ const ChevronsRight = createLucideIcon("chevrons-right", __iconNode$18);
3024
3024
  */
3025
3025
 
3026
3026
 
3027
- const __iconNode$17 = [
3027
+ const __iconNode$18 = [
3028
3028
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
3029
3029
  ["line", { x1: "12", x2: "12", y1: "8", y2: "12", key: "1pkeuh" }],
3030
3030
  ["line", { x1: "12", x2: "12.01", y1: "16", y2: "16", key: "4dfq90" }]
3031
3031
  ];
3032
- const CircleAlert = createLucideIcon("circle-alert", __iconNode$17);
3032
+ const CircleAlert = createLucideIcon("circle-alert", __iconNode$18);
3033
3033
 
3034
3034
  /**
3035
3035
  * @license lucide-react v0.539.0 - ISC
@@ -3039,11 +3039,11 @@ const CircleAlert = createLucideIcon("circle-alert", __iconNode$17);
3039
3039
  */
3040
3040
 
3041
3041
 
3042
- const __iconNode$16 = [
3042
+ const __iconNode$17 = [
3043
3043
  ["path", { d: "M21.801 10A10 10 0 1 1 17 3.335", key: "yps3ct" }],
3044
3044
  ["path", { d: "m9 11 3 3L22 4", key: "1pflzl" }]
3045
3045
  ];
3046
- const CircleCheckBig = createLucideIcon("circle-check-big", __iconNode$16);
3046
+ const CircleCheckBig = createLucideIcon("circle-check-big", __iconNode$17);
3047
3047
 
3048
3048
  /**
3049
3049
  * @license lucide-react v0.539.0 - ISC
@@ -3053,11 +3053,11 @@ const CircleCheckBig = createLucideIcon("circle-check-big", __iconNode$16);
3053
3053
  */
3054
3054
 
3055
3055
 
3056
- const __iconNode$15 = [
3056
+ const __iconNode$16 = [
3057
3057
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
3058
3058
  ["path", { d: "m9 12 2 2 4-4", key: "dzmm74" }]
3059
3059
  ];
3060
- const CircleCheck = createLucideIcon("circle-check", __iconNode$15);
3060
+ const CircleCheck = createLucideIcon("circle-check", __iconNode$16);
3061
3061
 
3062
3062
  /**
3063
3063
  * @license lucide-react v0.539.0 - ISC
@@ -3067,11 +3067,11 @@ const CircleCheck = createLucideIcon("circle-check", __iconNode$15);
3067
3067
  */
3068
3068
 
3069
3069
 
3070
- const __iconNode$14 = [
3070
+ const __iconNode$15 = [
3071
3071
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
3072
3072
  ["path", { d: "m16 10-4 4-4-4", key: "894hmk" }]
3073
3073
  ];
3074
- const CircleChevronDown = createLucideIcon("circle-chevron-down", __iconNode$14);
3074
+ const CircleChevronDown = createLucideIcon("circle-chevron-down", __iconNode$15);
3075
3075
 
3076
3076
  /**
3077
3077
  * @license lucide-react v0.539.0 - ISC
@@ -3081,11 +3081,11 @@ const CircleChevronDown = createLucideIcon("circle-chevron-down", __iconNode$14)
3081
3081
  */
3082
3082
 
3083
3083
 
3084
- const __iconNode$13 = [
3084
+ const __iconNode$14 = [
3085
3085
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
3086
3086
  ["circle", { cx: "12", cy: "12", r: "1", key: "41hilf" }]
3087
3087
  ];
3088
- const CircleDot = createLucideIcon("circle-dot", __iconNode$13);
3088
+ const CircleDot = createLucideIcon("circle-dot", __iconNode$14);
3089
3089
 
3090
3090
  /**
3091
3091
  * @license lucide-react v0.539.0 - ISC
@@ -3095,12 +3095,12 @@ const CircleDot = createLucideIcon("circle-dot", __iconNode$13);
3095
3095
  */
3096
3096
 
3097
3097
 
3098
- const __iconNode$12 = [
3098
+ const __iconNode$13 = [
3099
3099
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
3100
3100
  ["path", { d: "m15 9-6 6", key: "1uzhvr" }],
3101
3101
  ["path", { d: "m9 9 6 6", key: "z0biqf" }]
3102
3102
  ];
3103
- const CircleX = createLucideIcon("circle-x", __iconNode$12);
3103
+ const CircleX = createLucideIcon("circle-x", __iconNode$13);
3104
3104
 
3105
3105
  /**
3106
3106
  * @license lucide-react v0.539.0 - ISC
@@ -3110,8 +3110,8 @@ const CircleX = createLucideIcon("circle-x", __iconNode$12);
3110
3110
  */
3111
3111
 
3112
3112
 
3113
- const __iconNode$11 = [["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }]];
3114
- const Circle = createLucideIcon("circle", __iconNode$11);
3113
+ const __iconNode$12 = [["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }]];
3114
+ const Circle = createLucideIcon("circle", __iconNode$12);
3115
3115
 
3116
3116
  /**
3117
3117
  * @license lucide-react v0.539.0 - ISC
@@ -3121,11 +3121,11 @@ const Circle = createLucideIcon("circle", __iconNode$11);
3121
3121
  */
3122
3122
 
3123
3123
 
3124
- const __iconNode$10 = [
3124
+ const __iconNode$11 = [
3125
3125
  ["path", { d: "M12 6v6l4 2", key: "mmk7yg" }],
3126
3126
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }]
3127
3127
  ];
3128
- const Clock = createLucideIcon("clock", __iconNode$10);
3128
+ const Clock = createLucideIcon("clock", __iconNode$11);
3129
3129
 
3130
3130
  /**
3131
3131
  * @license lucide-react v0.539.0 - ISC
@@ -3135,11 +3135,11 @@ const Clock = createLucideIcon("clock", __iconNode$10);
3135
3135
  */
3136
3136
 
3137
3137
 
3138
- const __iconNode$$ = [
3138
+ const __iconNode$10 = [
3139
3139
  ["rect", { width: "14", height: "14", x: "8", y: "8", rx: "2", ry: "2", key: "17jyea" }],
3140
3140
  ["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" }]
3141
3141
  ];
3142
- const Copy = createLucideIcon("copy", __iconNode$$);
3142
+ const Copy = createLucideIcon("copy", __iconNode$10);
3143
3143
 
3144
3144
  /**
3145
3145
  * @license lucide-react v0.539.0 - ISC
@@ -3149,11 +3149,11 @@ const Copy = createLucideIcon("copy", __iconNode$$);
3149
3149
  */
3150
3150
 
3151
3151
 
3152
- const __iconNode$_ = [
3152
+ const __iconNode$$ = [
3153
3153
  ["path", { d: "M6 2v14a2 2 0 0 0 2 2h14", key: "ron5a4" }],
3154
3154
  ["path", { d: "M18 22V8a2 2 0 0 0-2-2H2", key: "7s9ehn" }]
3155
3155
  ];
3156
- const Crop = createLucideIcon("crop", __iconNode$_);
3156
+ const Crop = createLucideIcon("crop", __iconNode$$);
3157
3157
 
3158
3158
  /**
3159
3159
  * @license lucide-react v0.539.0 - ISC
@@ -3163,12 +3163,12 @@ const Crop = createLucideIcon("crop", __iconNode$_);
3163
3163
  */
3164
3164
 
3165
3165
 
3166
- const __iconNode$Z = [
3166
+ const __iconNode$_ = [
3167
3167
  ["path", { d: "M12 15V3", key: "m9g1x1" }],
3168
3168
  ["path", { d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4", key: "ih7n3h" }],
3169
3169
  ["path", { d: "m7 10 5 5 5-5", key: "brsn70" }]
3170
3170
  ];
3171
- const Download = createLucideIcon("download", __iconNode$Z);
3171
+ const Download = createLucideIcon("download", __iconNode$_);
3172
3172
 
3173
3173
  /**
3174
3174
  * @license lucide-react v0.539.0 - ISC
@@ -3178,12 +3178,12 @@ const Download = createLucideIcon("download", __iconNode$Z);
3178
3178
  */
3179
3179
 
3180
3180
 
3181
- const __iconNode$Y = [
3181
+ const __iconNode$Z = [
3182
3182
  ["circle", { cx: "12", cy: "12", r: "1", key: "41hilf" }],
3183
3183
  ["circle", { cx: "12", cy: "5", r: "1", key: "gxeob9" }],
3184
3184
  ["circle", { cx: "12", cy: "19", r: "1", key: "lyex9k" }]
3185
3185
  ];
3186
- const EllipsisVertical = createLucideIcon("ellipsis-vertical", __iconNode$Y);
3186
+ const EllipsisVertical = createLucideIcon("ellipsis-vertical", __iconNode$Z);
3187
3187
 
3188
3188
  /**
3189
3189
  * @license lucide-react v0.539.0 - ISC
@@ -3193,12 +3193,12 @@ const EllipsisVertical = createLucideIcon("ellipsis-vertical", __iconNode$Y);
3193
3193
  */
3194
3194
 
3195
3195
 
3196
- const __iconNode$X = [
3196
+ const __iconNode$Y = [
3197
3197
  ["circle", { cx: "12", cy: "12", r: "1", key: "41hilf" }],
3198
3198
  ["circle", { cx: "19", cy: "12", r: "1", key: "1wjl8i" }],
3199
3199
  ["circle", { cx: "5", cy: "12", r: "1", key: "1pcz8c" }]
3200
3200
  ];
3201
- const Ellipsis = createLucideIcon("ellipsis", __iconNode$X);
3201
+ const Ellipsis = createLucideIcon("ellipsis", __iconNode$Y);
3202
3202
 
3203
3203
  /**
3204
3204
  * @license lucide-react v0.539.0 - ISC
@@ -3208,12 +3208,12 @@ const Ellipsis = createLucideIcon("ellipsis", __iconNode$X);
3208
3208
  */
3209
3209
 
3210
3210
 
3211
- const __iconNode$W = [
3211
+ const __iconNode$X = [
3212
3212
  ["path", { d: "M15 3h6v6", key: "1q9fwt" }],
3213
3213
  ["path", { d: "M10 14 21 3", key: "gplh6r" }],
3214
3214
  ["path", { d: "M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6", key: "a6xqqp" }]
3215
3215
  ];
3216
- const ExternalLink = createLucideIcon("external-link", __iconNode$W);
3216
+ const ExternalLink = createLucideIcon("external-link", __iconNode$X);
3217
3217
 
3218
3218
  /**
3219
3219
  * @license lucide-react v0.539.0 - ISC
@@ -3223,7 +3223,7 @@ const ExternalLink = createLucideIcon("external-link", __iconNode$W);
3223
3223
  */
3224
3224
 
3225
3225
 
3226
- const __iconNode$V = [
3226
+ const __iconNode$W = [
3227
3227
  [
3228
3228
  "path",
3229
3229
  {
@@ -3233,7 +3233,7 @@ const __iconNode$V = [
3233
3233
  ],
3234
3234
  ["circle", { cx: "12", cy: "12", r: "3", key: "1v7zrd" }]
3235
3235
  ];
3236
- const Eye = createLucideIcon("eye", __iconNode$V);
3236
+ const Eye = createLucideIcon("eye", __iconNode$W);
3237
3237
 
3238
3238
  /**
3239
3239
  * @license lucide-react v0.539.0 - ISC
@@ -3243,13 +3243,13 @@ const Eye = createLucideIcon("eye", __iconNode$V);
3243
3243
  */
3244
3244
 
3245
3245
 
3246
- const __iconNode$U = [
3246
+ const __iconNode$V = [
3247
3247
  [
3248
3248
  "path",
3249
3249
  { d: "M18 2h-3a5 5 0 0 0-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 0 1 1-1h3z", key: "1jg4f8" }
3250
3250
  ]
3251
3251
  ];
3252
- const Facebook = createLucideIcon("facebook", __iconNode$U);
3252
+ const Facebook = createLucideIcon("facebook", __iconNode$V);
3253
3253
 
3254
3254
  /**
3255
3255
  * @license lucide-react v0.539.0 - ISC
@@ -3259,7 +3259,7 @@ const Facebook = createLucideIcon("facebook", __iconNode$U);
3259
3259
  */
3260
3260
 
3261
3261
 
3262
- const __iconNode$T = [
3262
+ const __iconNode$U = [
3263
3263
  ["path", { d: "M12 22h6a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v3.072", key: "n6s66f" }],
3264
3264
  ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }],
3265
3265
  [
@@ -3271,7 +3271,7 @@ const __iconNode$T = [
3271
3271
  ],
3272
3272
  ["circle", { cx: "5", cy: "14", r: "3", key: "ufru5t" }]
3273
3273
  ];
3274
- const FileBadge = createLucideIcon("file-badge", __iconNode$T);
3274
+ const FileBadge = createLucideIcon("file-badge", __iconNode$U);
3275
3275
 
3276
3276
  /**
3277
3277
  * @license lucide-react v0.539.0 - ISC
@@ -3281,12 +3281,12 @@ const FileBadge = createLucideIcon("file-badge", __iconNode$T);
3281
3281
  */
3282
3282
 
3283
3283
 
3284
- const __iconNode$S = [
3284
+ const __iconNode$T = [
3285
3285
  ["path", { d: "M4 22h14a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v4", key: "1pf5j1" }],
3286
3286
  ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }],
3287
3287
  ["path", { d: "m3 15 2 2 4-4", key: "1lhrkk" }]
3288
3288
  ];
3289
- const FileCheck2 = createLucideIcon("file-check-2", __iconNode$S);
3289
+ const FileCheck2 = createLucideIcon("file-check-2", __iconNode$T);
3290
3290
 
3291
3291
  /**
3292
3292
  * @license lucide-react v0.539.0 - ISC
@@ -3296,14 +3296,14 @@ const FileCheck2 = createLucideIcon("file-check-2", __iconNode$S);
3296
3296
  */
3297
3297
 
3298
3298
 
3299
- const __iconNode$R = [
3299
+ const __iconNode$S = [
3300
3300
  ["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }],
3301
3301
  ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }],
3302
3302
  ["path", { d: "M10 9H8", key: "b1mrlr" }],
3303
3303
  ["path", { d: "M16 13H8", key: "t4e002" }],
3304
3304
  ["path", { d: "M16 17H8", key: "z1uh3a" }]
3305
3305
  ];
3306
- const FileText = createLucideIcon("file-text", __iconNode$R);
3306
+ const FileText = createLucideIcon("file-text", __iconNode$S);
3307
3307
 
3308
3308
  /**
3309
3309
  * @license lucide-react v0.539.0 - ISC
@@ -3313,7 +3313,7 @@ const FileText = createLucideIcon("file-text", __iconNode$R);
3313
3313
  */
3314
3314
 
3315
3315
 
3316
- const __iconNode$Q = [
3316
+ const __iconNode$R = [
3317
3317
  [
3318
3318
  "path",
3319
3319
  {
@@ -3322,7 +3322,7 @@ const __iconNode$Q = [
3322
3322
  }
3323
3323
  ]
3324
3324
  ];
3325
- const Funnel = createLucideIcon("funnel", __iconNode$Q);
3325
+ const Funnel = createLucideIcon("funnel", __iconNode$R);
3326
3326
 
3327
3327
  /**
3328
3328
  * @license lucide-react v0.539.0 - ISC
@@ -3332,7 +3332,7 @@ const Funnel = createLucideIcon("funnel", __iconNode$Q);
3332
3332
  */
3333
3333
 
3334
3334
 
3335
- const __iconNode$P = [
3335
+ const __iconNode$Q = [
3336
3336
  ["path", { d: "M10.5 3 8 9l4 13 4-13-2.5-6", key: "b3dvk1" }],
3337
3337
  [
3338
3338
  "path",
@@ -3343,7 +3343,7 @@ const __iconNode$P = [
3343
3343
  ],
3344
3344
  ["path", { d: "M2 9h20", key: "16fsjt" }]
3345
3345
  ];
3346
- const Gem = createLucideIcon("gem", __iconNode$P);
3346
+ const Gem = createLucideIcon("gem", __iconNode$Q);
3347
3347
 
3348
3348
  /**
3349
3349
  * @license lucide-react v0.539.0 - ISC
@@ -3353,7 +3353,7 @@ const Gem = createLucideIcon("gem", __iconNode$P);
3353
3353
  */
3354
3354
 
3355
3355
 
3356
- const __iconNode$O = [
3356
+ const __iconNode$P = [
3357
3357
  ["circle", { cx: "12", cy: "9", r: "1", key: "124mty" }],
3358
3358
  ["circle", { cx: "19", cy: "9", r: "1", key: "1ruzo2" }],
3359
3359
  ["circle", { cx: "5", cy: "9", r: "1", key: "1a8b28" }],
@@ -3361,7 +3361,7 @@ const __iconNode$O = [
3361
3361
  ["circle", { cx: "19", cy: "15", r: "1", key: "1a92ep" }],
3362
3362
  ["circle", { cx: "5", cy: "15", r: "1", key: "5r1jwy" }]
3363
3363
  ];
3364
- const GripHorizontal = createLucideIcon("grip-horizontal", __iconNode$O);
3364
+ const GripHorizontal = createLucideIcon("grip-horizontal", __iconNode$P);
3365
3365
 
3366
3366
  /**
3367
3367
  * @license lucide-react v0.539.0 - ISC
@@ -3371,7 +3371,7 @@ const GripHorizontal = createLucideIcon("grip-horizontal", __iconNode$O);
3371
3371
  */
3372
3372
 
3373
3373
 
3374
- const __iconNode$N = [
3374
+ const __iconNode$O = [
3375
3375
  ["circle", { cx: "9", cy: "12", r: "1", key: "1vctgf" }],
3376
3376
  ["circle", { cx: "9", cy: "5", r: "1", key: "hp0tcf" }],
3377
3377
  ["circle", { cx: "9", cy: "19", r: "1", key: "fkjjf6" }],
@@ -3379,7 +3379,7 @@ const __iconNode$N = [
3379
3379
  ["circle", { cx: "15", cy: "5", r: "1", key: "19l28e" }],
3380
3380
  ["circle", { cx: "15", cy: "19", r: "1", key: "f4zoj3" }]
3381
3381
  ];
3382
- const GripVertical = createLucideIcon("grip-vertical", __iconNode$N);
3382
+ const GripVertical = createLucideIcon("grip-vertical", __iconNode$O);
3383
3383
 
3384
3384
  /**
3385
3385
  * @license lucide-react v0.539.0 - ISC
@@ -3389,13 +3389,13 @@ const GripVertical = createLucideIcon("grip-vertical", __iconNode$N);
3389
3389
  */
3390
3390
 
3391
3391
 
3392
- const __iconNode$M = [
3392
+ const __iconNode$N = [
3393
3393
  ["line", { x1: "4", x2: "20", y1: "9", y2: "9", key: "4lhtct" }],
3394
3394
  ["line", { x1: "4", x2: "20", y1: "15", y2: "15", key: "vyu0kd" }],
3395
3395
  ["line", { x1: "10", x2: "8", y1: "3", y2: "21", key: "1ggp8o" }],
3396
3396
  ["line", { x1: "16", x2: "14", y1: "3", y2: "21", key: "weycgp" }]
3397
3397
  ];
3398
- const Hash = createLucideIcon("hash", __iconNode$M);
3398
+ const Hash = createLucideIcon("hash", __iconNode$N);
3399
3399
 
3400
3400
  /**
3401
3401
  * @license lucide-react v0.539.0 - ISC
@@ -3405,13 +3405,13 @@ const Hash = createLucideIcon("hash", __iconNode$M);
3405
3405
  */
3406
3406
 
3407
3407
 
3408
- const __iconNode$L = [
3408
+ const __iconNode$M = [
3409
3409
  ["path", { d: "M4 12h8", key: "17cfdx" }],
3410
3410
  ["path", { d: "M4 18V6", key: "1rz3zl" }],
3411
3411
  ["path", { d: "M12 18V6", key: "zqpxq5" }],
3412
3412
  ["path", { d: "m17 12 3-2v8", key: "1hhhft" }]
3413
3413
  ];
3414
- const Heading1 = createLucideIcon("heading-1", __iconNode$L);
3414
+ const Heading1 = createLucideIcon("heading-1", __iconNode$M);
3415
3415
 
3416
3416
  /**
3417
3417
  * @license lucide-react v0.539.0 - ISC
@@ -3421,13 +3421,13 @@ const Heading1 = createLucideIcon("heading-1", __iconNode$L);
3421
3421
  */
3422
3422
 
3423
3423
 
3424
- const __iconNode$K = [
3424
+ const __iconNode$L = [
3425
3425
  ["path", { d: "M4 12h8", key: "17cfdx" }],
3426
3426
  ["path", { d: "M4 18V6", key: "1rz3zl" }],
3427
3427
  ["path", { d: "M12 18V6", key: "zqpxq5" }],
3428
3428
  ["path", { d: "M21 18h-4c0-4 4-3 4-6 0-1.5-2-2.5-4-1", key: "9jr5yi" }]
3429
3429
  ];
3430
- const Heading2 = createLucideIcon("heading-2", __iconNode$K);
3430
+ const Heading2 = createLucideIcon("heading-2", __iconNode$L);
3431
3431
 
3432
3432
  /**
3433
3433
  * @license lucide-react v0.539.0 - ISC
@@ -3437,14 +3437,14 @@ const Heading2 = createLucideIcon("heading-2", __iconNode$K);
3437
3437
  */
3438
3438
 
3439
3439
 
3440
- const __iconNode$J = [
3440
+ const __iconNode$K = [
3441
3441
  ["path", { d: "M4 12h8", key: "17cfdx" }],
3442
3442
  ["path", { d: "M4 18V6", key: "1rz3zl" }],
3443
3443
  ["path", { d: "M12 18V6", key: "zqpxq5" }],
3444
3444
  ["path", { d: "M17.5 10.5c1.7-1 3.5 0 3.5 1.5a2 2 0 0 1-2 2", key: "68ncm8" }],
3445
3445
  ["path", { d: "M17 17.5c2 1.5 4 .3 4-1.5a2 2 0 0 0-2-2", key: "1ejuhz" }]
3446
3446
  ];
3447
- const Heading3 = createLucideIcon("heading-3", __iconNode$J);
3447
+ const Heading3 = createLucideIcon("heading-3", __iconNode$K);
3448
3448
 
3449
3449
  /**
3450
3450
  * @license lucide-react v0.539.0 - ISC
@@ -3454,12 +3454,12 @@ const Heading3 = createLucideIcon("heading-3", __iconNode$J);
3454
3454
  */
3455
3455
 
3456
3456
 
3457
- const __iconNode$I = [
3457
+ const __iconNode$J = [
3458
3458
  ["path", { d: "M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8", key: "1357e3" }],
3459
3459
  ["path", { d: "M3 3v5h5", key: "1xhq8a" }],
3460
3460
  ["path", { d: "M12 7v5l4 2", key: "1fdv2h" }]
3461
3461
  ];
3462
- const History = createLucideIcon("history", __iconNode$I);
3462
+ const History = createLucideIcon("history", __iconNode$J);
3463
3463
 
3464
3464
  /**
3465
3465
  * @license lucide-react v0.539.0 - ISC
@@ -3469,12 +3469,12 @@ const History = createLucideIcon("history", __iconNode$I);
3469
3469
  */
3470
3470
 
3471
3471
 
3472
- const __iconNode$H = [
3472
+ const __iconNode$I = [
3473
3473
  ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", ry: "2", key: "1m3agn" }],
3474
3474
  ["circle", { cx: "9", cy: "9", r: "2", key: "af1f0g" }],
3475
3475
  ["path", { d: "m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21", key: "1xmnt7" }]
3476
3476
  ];
3477
- const Image$1 = createLucideIcon("image", __iconNode$H);
3477
+ const Image$1 = createLucideIcon("image", __iconNode$I);
3478
3478
 
3479
3479
  /**
3480
3480
  * @license lucide-react v0.539.0 - ISC
@@ -3484,12 +3484,12 @@ const Image$1 = createLucideIcon("image", __iconNode$H);
3484
3484
  */
3485
3485
 
3486
3486
 
3487
- const __iconNode$G = [
3487
+ const __iconNode$H = [
3488
3488
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
3489
3489
  ["path", { d: "M12 16v-4", key: "1dtifu" }],
3490
3490
  ["path", { d: "M12 8h.01", key: "e9boi3" }]
3491
3491
  ];
3492
- const Info = createLucideIcon("info", __iconNode$G);
3492
+ const Info = createLucideIcon("info", __iconNode$H);
3493
3493
 
3494
3494
  /**
3495
3495
  * @license lucide-react v0.539.0 - ISC
@@ -3499,12 +3499,12 @@ const Info = createLucideIcon("info", __iconNode$G);
3499
3499
  */
3500
3500
 
3501
3501
 
3502
- const __iconNode$F = [
3502
+ const __iconNode$G = [
3503
3503
  ["line", { x1: "19", x2: "10", y1: "4", y2: "4", key: "15jd3p" }],
3504
3504
  ["line", { x1: "14", x2: "5", y1: "20", y2: "20", key: "bu0au3" }],
3505
3505
  ["line", { x1: "15", x2: "9", y1: "4", y2: "20", key: "uljnxc" }]
3506
3506
  ];
3507
- const Italic$1 = createLucideIcon("italic", __iconNode$F);
3507
+ const Italic$1 = createLucideIcon("italic", __iconNode$G);
3508
3508
 
3509
3509
  /**
3510
3510
  * @license lucide-react v0.539.0 - ISC
@@ -3514,7 +3514,7 @@ const Italic$1 = createLucideIcon("italic", __iconNode$F);
3514
3514
  */
3515
3515
 
3516
3516
 
3517
- const __iconNode$E = [
3517
+ const __iconNode$F = [
3518
3518
  [
3519
3519
  "path",
3520
3520
  {
@@ -3524,7 +3524,7 @@ const __iconNode$E = [
3524
3524
  ],
3525
3525
  ["circle", { cx: "16.5", cy: "7.5", r: ".5", fill: "currentColor", key: "w0ekpg" }]
3526
3526
  ];
3527
- const KeyRound = createLucideIcon("key-round", __iconNode$E);
3527
+ const KeyRound = createLucideIcon("key-round", __iconNode$F);
3528
3528
 
3529
3529
  /**
3530
3530
  * @license lucide-react v0.539.0 - ISC
@@ -3534,12 +3534,12 @@ const KeyRound = createLucideIcon("key-round", __iconNode$E);
3534
3534
  */
3535
3535
 
3536
3536
 
3537
- const __iconNode$D = [
3537
+ const __iconNode$E = [
3538
3538
  ["path", { d: "M9 17H7A5 5 0 0 1 7 7h2", key: "8i5ue5" }],
3539
3539
  ["path", { d: "M15 7h2a5 5 0 1 1 0 10h-2", key: "1b9ql8" }],
3540
3540
  ["line", { x1: "8", x2: "16", y1: "12", y2: "12", key: "1jonct" }]
3541
3541
  ];
3542
- const Link2 = createLucideIcon("link-2", __iconNode$D);
3542
+ const Link2 = createLucideIcon("link-2", __iconNode$E);
3543
3543
 
3544
3544
  /**
3545
3545
  * @license lucide-react v0.539.0 - ISC
@@ -3549,14 +3549,14 @@ const Link2 = createLucideIcon("link-2", __iconNode$D);
3549
3549
  */
3550
3550
 
3551
3551
 
3552
- const __iconNode$C = [
3552
+ const __iconNode$D = [
3553
3553
  ["path", { d: "m3 17 2 2 4-4", key: "1jhpwq" }],
3554
3554
  ["path", { d: "m3 7 2 2 4-4", key: "1obspn" }],
3555
3555
  ["path", { d: "M13 6h8", key: "15sg57" }],
3556
3556
  ["path", { d: "M13 12h8", key: "h98zly" }],
3557
3557
  ["path", { d: "M13 18h8", key: "oe0vm4" }]
3558
3558
  ];
3559
- const ListChecks = createLucideIcon("list-checks", __iconNode$C);
3559
+ const ListChecks = createLucideIcon("list-checks", __iconNode$D);
3560
3560
 
3561
3561
  /**
3562
3562
  * @license lucide-react v0.539.0 - ISC
@@ -3566,7 +3566,7 @@ const ListChecks = createLucideIcon("list-checks", __iconNode$C);
3566
3566
  */
3567
3567
 
3568
3568
 
3569
- const __iconNode$B = [
3569
+ const __iconNode$C = [
3570
3570
  ["path", { d: "M10 12h11", key: "6m4ad9" }],
3571
3571
  ["path", { d: "M10 18h11", key: "11hvi2" }],
3572
3572
  ["path", { d: "M10 6h11", key: "c7qv1k" }],
@@ -3574,7 +3574,7 @@ const __iconNode$B = [
3574
3574
  ["path", { d: "M4 6h1v4", key: "cnovpq" }],
3575
3575
  ["path", { d: "M6 18H4c0-1 2-2 2-3s-1-1.5-2-1", key: "m9a95d" }]
3576
3576
  ];
3577
- const ListOrdered = createLucideIcon("list-ordered", __iconNode$B);
3577
+ const ListOrdered = createLucideIcon("list-ordered", __iconNode$C);
3578
3578
 
3579
3579
  /**
3580
3580
  * @license lucide-react v0.539.0 - ISC
@@ -3584,7 +3584,7 @@ const ListOrdered = createLucideIcon("list-ordered", __iconNode$B);
3584
3584
  */
3585
3585
 
3586
3586
 
3587
- const __iconNode$A = [
3587
+ const __iconNode$B = [
3588
3588
  ["path", { d: "M3 12h.01", key: "nlz23k" }],
3589
3589
  ["path", { d: "M3 18h.01", key: "1tta3j" }],
3590
3590
  ["path", { d: "M3 6h.01", key: "1rqtza" }],
@@ -3592,7 +3592,7 @@ const __iconNode$A = [
3592
3592
  ["path", { d: "M8 18h13", key: "1lx6n3" }],
3593
3593
  ["path", { d: "M8 6h13", key: "ik3vkj" }]
3594
3594
  ];
3595
- const List = createLucideIcon("list", __iconNode$A);
3595
+ const List = createLucideIcon("list", __iconNode$B);
3596
3596
 
3597
3597
  /**
3598
3598
  * @license lucide-react v0.539.0 - ISC
@@ -3602,8 +3602,8 @@ const List = createLucideIcon("list", __iconNode$A);
3602
3602
  */
3603
3603
 
3604
3604
 
3605
- const __iconNode$z = [["path", { d: "M21 12a9 9 0 1 1-6.219-8.56", key: "13zald" }]];
3606
- const LoaderCircle = createLucideIcon("loader-circle", __iconNode$z);
3605
+ const __iconNode$A = [["path", { d: "M21 12a9 9 0 1 1-6.219-8.56", key: "13zald" }]];
3606
+ const LoaderCircle = createLucideIcon("loader-circle", __iconNode$A);
3607
3607
 
3608
3608
  /**
3609
3609
  * @license lucide-react v0.539.0 - ISC
@@ -3613,7 +3613,7 @@ const LoaderCircle = createLucideIcon("loader-circle", __iconNode$z);
3613
3613
  */
3614
3614
 
3615
3615
 
3616
- const __iconNode$y = [
3616
+ const __iconNode$z = [
3617
3617
  ["path", { d: "M12 2v4", key: "3427ic" }],
3618
3618
  ["path", { d: "m16.2 7.8 2.9-2.9", key: "r700ao" }],
3619
3619
  ["path", { d: "M18 12h4", key: "wj9ykh" }],
@@ -3623,7 +3623,7 @@ const __iconNode$y = [
3623
3623
  ["path", { d: "M2 12h4", key: "j09sii" }],
3624
3624
  ["path", { d: "m4.9 4.9 2.9 2.9", key: "giyufr" }]
3625
3625
  ];
3626
- const Loader = createLucideIcon("loader", __iconNode$y);
3626
+ const Loader = createLucideIcon("loader", __iconNode$z);
3627
3627
 
3628
3628
  /**
3629
3629
  * @license lucide-react v0.539.0 - ISC
@@ -3633,12 +3633,12 @@ const Loader = createLucideIcon("loader", __iconNode$y);
3633
3633
  */
3634
3634
 
3635
3635
 
3636
- const __iconNode$x = [
3636
+ const __iconNode$y = [
3637
3637
  ["path", { d: "m16 17 5-5-5-5", key: "1bji2h" }],
3638
3638
  ["path", { d: "M21 12H9", key: "dn1m92" }],
3639
3639
  ["path", { d: "M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4", key: "1uf3rs" }]
3640
3640
  ];
3641
- const LogOut = createLucideIcon("log-out", __iconNode$x);
3641
+ const LogOut = createLucideIcon("log-out", __iconNode$y);
3642
3642
 
3643
3643
  /**
3644
3644
  * @license lucide-react v0.539.0 - ISC
@@ -3648,11 +3648,11 @@ const LogOut = createLucideIcon("log-out", __iconNode$x);
3648
3648
  */
3649
3649
 
3650
3650
 
3651
- const __iconNode$w = [
3651
+ const __iconNode$x = [
3652
3652
  ["path", { d: "m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7", key: "132q7q" }],
3653
3653
  ["rect", { x: "2", y: "4", width: "20", height: "16", rx: "2", key: "izxlao" }]
3654
3654
  ];
3655
- const Mail = createLucideIcon("mail", __iconNode$w);
3655
+ const Mail = createLucideIcon("mail", __iconNode$x);
3656
3656
 
3657
3657
  /**
3658
3658
  * @license lucide-react v0.539.0 - ISC
@@ -3662,12 +3662,23 @@ const Mail = createLucideIcon("mail", __iconNode$w);
3662
3662
  */
3663
3663
 
3664
3664
 
3665
- const __iconNode$v = [
3665
+ const __iconNode$w = [
3666
3666
  ["path", { d: "M4 12h16", key: "1lakjw" }],
3667
3667
  ["path", { d: "M4 18h16", key: "19g7jn" }],
3668
3668
  ["path", { d: "M4 6h16", key: "1o0s65" }]
3669
3669
  ];
3670
- const Menu = createLucideIcon("menu", __iconNode$v);
3670
+ const Menu = createLucideIcon("menu", __iconNode$w);
3671
+
3672
+ /**
3673
+ * @license lucide-react v0.539.0 - ISC
3674
+ *
3675
+ * This source code is licensed under the ISC license.
3676
+ * See the LICENSE file in the root directory of this source tree.
3677
+ */
3678
+
3679
+
3680
+ const __iconNode$v = [["path", { d: "M5 12h14", key: "1ays0h" }]];
3681
+ const Minus = createLucideIcon("minus", __iconNode$v);
3671
3682
 
3672
3683
  /**
3673
3684
  * @license lucide-react v0.539.0 - ISC
@@ -4684,7 +4695,7 @@ const buttonVariants$1 = cva("inline-flex items-center justify-center gap-2 whit
4684
4695
  });
4685
4696
  function Button$1({ className, variant, size, asChild = false, ...props }) {
4686
4697
  const Comp = asChild ? reactSlot.Slot : 'button';
4687
- return (jsxRuntime.jsx(Comp, { "data-slot": "button", className: cn(buttonVariants$1({ variant, size, className })), ...props }));
4698
+ return (jsxRuntime.jsx(Comp, { "data-slot": "button", "data-variant": variant ?? 'default', className: cn(buttonVariants$1({ variant, size, className })), ...props }));
4688
4699
  }
4689
4700
 
4690
4701
  const VARIANT_BY_KIND = {
@@ -14342,7 +14353,7 @@ function useNumberInput({ value, onChange, precision, min, max, emptyFallback, e
14342
14353
  return { raw, handleChange, handleFocus, handleBlur };
14343
14354
  }
14344
14355
 
14345
- const NumberInput = React__namespace.forwardRef(({ value, onChange, precision, min, max, step, className, emptyFallback = 0, emitUndefinedOnEmpty = false, trimTrailingZeros = false, ...rest }, ref) => {
14356
+ const NumberInput = React__namespace.forwardRef(({ value, onChange, precision, min, max, step, className, emptyFallback = 0, emitUndefinedOnEmpty = false, trimTrailingZeros = false, suffix, stepper = false, ...rest }, ref) => {
14346
14357
  const { onFocus: onFocusProp, onBlur: onBlurProp, ...inputRest } = rest;
14347
14358
  const { raw, handleChange, handleFocus, handleBlur } = useNumberInput({
14348
14359
  value,
@@ -14356,7 +14367,22 @@ const NumberInput = React__namespace.forwardRef(({ value, onChange, precision, m
14356
14367
  onFocusProp,
14357
14368
  onBlurProp,
14358
14369
  });
14359
- return (jsxRuntime.jsx(Input, { ref: ref, type: "text", inputMode: "decimal", className: className, value: raw, onChange: handleChange, onFocus: handleFocus, onBlur: handleBlur, step: step, ...inputRest }));
14370
+ const input = (jsxRuntime.jsx(Input, { ref: ref, type: "text", inputMode: "decimal", className: cn(className, suffix != null && !stepper && 'pr-10', stepper && 'h-full border-0 bg-transparent px-1 text-center shadow-none focus-visible:ring-0'), value: raw, onChange: handleChange, onFocus: handleFocus, onBlur: handleBlur, step: step, ...inputRest }));
14371
+ if (stepper) {
14372
+ const current = Number(value);
14373
+ const delta = step ?? 1;
14374
+ const at = Number.isFinite(current) ? current : (min ?? 0);
14375
+ const nudge = (direction) => {
14376
+ const next = at + direction * delta;
14377
+ onChange?.(Math.min(max ?? next, Math.max(min ?? next, next)));
14378
+ };
14379
+ const stepButton = 'flex size-7 shrink-0 items-center justify-center rounded-md bg-muted text-muted-foreground transition-colors hover:bg-muted/70 hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-40';
14380
+ return (jsxRuntime.jsxs("div", { "aria-invalid": inputRest['aria-invalid'], className: cn('flex h-10 w-full items-center gap-1 rounded-md border border-input-border px-1.5 dark:bg-input/30', 'focus-within:border-ring focus-within:ring-[3px] focus-within:ring-ring/50', 'aria-invalid:border-destructive aria-invalid:ring-destructive/20'), children: [jsxRuntime.jsx("button", { type: "button", "aria-label": "Decrease", className: stepButton, disabled: inputRest.disabled || (min !== undefined && at <= min), onClick: () => nudge(-1), children: jsxRuntime.jsx(Minus, { className: "size-3.5" }) }), input, jsxRuntime.jsx("button", { type: "button", "aria-label": "Increase", className: stepButton, disabled: inputRest.disabled || (max !== undefined && at >= max), onClick: () => nudge(1), children: jsxRuntime.jsx(Plus, { className: "size-3.5" }) })] }));
14381
+ }
14382
+ if (suffix != null) {
14383
+ return (jsxRuntime.jsxs("div", { className: "relative w-full", children: [input, jsxRuntime.jsx("span", { className: "pointer-events-none absolute inset-y-0 right-3 flex items-center text-sm text-muted-foreground", children: suffix })] }));
14384
+ }
14385
+ return input;
14360
14386
  });
14361
14387
  NumberInput.displayName = 'NumberInput';
14362
14388
 
@@ -14898,30 +14924,74 @@ const DialogOverlay = React__namespace.forwardRef(({ className, ...props }, ref)
14898
14924
  'data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 ' +
14899
14925
  'fixed inset-0 z-50 bg-black/50', className), ...props })));
14900
14926
  DialogOverlay.displayName = DialogPrimitive__namespace.Overlay.displayName;
14901
- const DialogContent = React__namespace.forwardRef(({ className, children, hideCloseButton, ...props }, ref) => (jsxRuntime.jsxs(DialogPortal, { "data-slot": "dialog-portal", children: [jsxRuntime.jsx(DialogOverlay, {}), jsxRuntime.jsxs(DialogPrimitive__namespace.Content, { ref: ref, "data-slot": "dialog-content", className: cn('bg-background fixed top-[50%] left-[50%] z-50 grid ' +
14902
- 'w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] ' +
14903
- 'gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg ' +
14927
+ const DIALOG_WIDTH = {
14928
+ default: '32rem',
14929
+ wide: '50rem',
14930
+ };
14931
+ /** Every dialog stops growing here; taller content scrolls inside it. */
14932
+ const DIALOG_MAX_HEIGHT = 'min(85vh, 45rem)';
14933
+ const DialogContent = React__namespace.forwardRef(({ className, children, hideCloseButton, size = 'default', style, ...props }, ref) => (jsxRuntime.jsxs(DialogPortal, { "data-slot": "dialog-portal", children: [jsxRuntime.jsx(DialogOverlay, {}), jsxRuntime.jsxs(DialogPrimitive__namespace.Content, { ref: ref, "data-slot": "dialog-content", className: cn('bg-card fixed top-[50%] left-[50%] z-50 grid ' +
14934
+ 'translate-x-[-50%] translate-y-[-50%] ' +
14935
+ 'gap-4 overflow-y-auto overscroll-contain rounded-2xl border border-border p-6 shadow-xl duration-200 ' +
14936
+ // A footer closes the panel itself; sticky can't sit in the padding a negative margin would bleed into.
14937
+ 'has-[[data-slot=dialog-footer]]:pb-0 ' +
14904
14938
  'data-[state=open]:animate-in data-[state=closed]:animate-out ' +
14905
14939
  'data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 ' +
14906
- 'data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95', className), ...props, children: [children, !hideCloseButton && (jsxRuntime.jsxs(DialogPrimitive__namespace.Close, { className: cn('absolute top-4 right-4 rounded-xs opacity-70 transition-opacity ' +
14907
- 'hover:opacity-100 focus:outline-hidden focus:ring-2 focus:ring-ring ' +
14908
- 'focus:ring-offset-2 ring-offset-background disabled:pointer-events-none ' +
14909
- '[&_svg]:pointer-events-none [&_svg]:shrink-0 ' +
14940
+ 'data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95', className), style: {
14941
+ ...style,
14942
+ width: 'calc(100vw - 2rem)',
14943
+ maxWidth: DIALOG_WIDTH[size],
14944
+ maxHeight: DIALOG_MAX_HEIGHT,
14945
+ }, ...props, children: [children, !hideCloseButton && (jsxRuntime.jsxs(DialogPrimitive__namespace.Close, { className: cn('absolute top-5 right-5 inline-flex size-7 items-center justify-center rounded-md ' +
14946
+ 'text-muted-foreground transition-colors hover:bg-muted hover:text-foreground ' +
14947
+ 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring ' +
14948
+ 'disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 ' +
14910
14949
  "[&_svg:not([class*='size-'])]:size-4"), children: [jsxRuntime.jsx(X$2, {}), jsxRuntime.jsx("span", { className: "sr-only", children: "Close" })] }))] })] })));
14911
14950
  DialogContent.displayName = DialogPrimitive__namespace.Content.displayName;
14912
- // Header
14913
- function DialogHeader({ className, ...props }) {
14914
- return (jsxRuntime.jsx("div", { "data-slot": "dialog-header", className: cn('flex flex-col gap-2 text-center sm:text-left', className), ...props }));
14951
+ const DIALOG_ICON_TONE = {
14952
+ primary: 'bg-primary/10 text-primary dark:bg-primary/20',
14953
+ neutral: 'bg-muted text-muted-foreground',
14954
+ warning: 'bg-badge-amber-bg text-badge-amber-text',
14955
+ destructive: 'bg-badge-destructive-bg text-destructive',
14956
+ };
14957
+ /** The tinted tile that names a dialog's action; shared by every dialog header. */
14958
+ function DialogIcon({ tone = 'primary', className, children, }) {
14959
+ return (jsxRuntime.jsx("span", { "aria-hidden": true, className: cn(
14960
+ // 44px = the title's 24px line + the subtitle's 20px line, so the tile spans both.
14961
+ 'flex size-11 shrink-0 items-center justify-center rounded-lg [&_svg]:size-5', DIALOG_ICON_TONE[tone], className), children: children }));
14962
+ }
14963
+ function DialogHeader({ className, icon, iconTone, children, ...props }) {
14964
+ if (icon) {
14965
+ return (jsxRuntime.jsxs("div", { "data-slot": "dialog-header",
14966
+ // A lone title centres on the icon; with a subtitle the pair starts at the icon's top.
14967
+ className: cn('flex flex-row items-center gap-3.5 pr-8 text-left has-[[data-slot=dialog-description]]:items-start', className), ...props, children: [jsxRuntime.jsx(DialogIcon, { tone: iconTone, children: icon }), jsxRuntime.jsx("div", { className: "flex min-w-0 flex-1 flex-col", children: children })] }));
14968
+ }
14969
+ return (jsxRuntime.jsx("div", { "data-slot": "dialog-header", className: cn('flex flex-col pr-8 text-left', className), ...props, children: children }));
14915
14970
  }
14916
14971
  // Footer
14972
+ /** Neutral footer buttons get the card surface so they stand out from the tinted footer band. */
14973
+ const DIALOG_FOOTER_BUTTONS = '[&_[data-slot=button]:is([data-variant=outline],[data-variant=ghost],[data-variant=secondary])]:border ' +
14974
+ '[&_[data-slot=button]:is([data-variant=outline],[data-variant=ghost],[data-variant=secondary])]:border-border ' +
14975
+ '[&_[data-slot=button]:is([data-variant=outline],[data-variant=ghost],[data-variant=secondary])]:bg-card ' +
14976
+ '[&_[data-slot=button]:is([data-variant=outline],[data-variant=ghost],[data-variant=secondary])]:shadow-xs ' +
14977
+ '[&_[data-slot=button]:is([data-variant=outline],[data-variant=ghost],[data-variant=secondary])]:hover:bg-muted ' +
14978
+ // The outline variant forces its own dark fill; keep every footer secondary button on the same card surface.
14979
+ 'dark:[&_[data-slot=button]:is([data-variant=outline],[data-variant=ghost],[data-variant=secondary])]:!bg-card ' +
14980
+ 'dark:[&_[data-slot=button]:is([data-variant=outline],[data-variant=ghost],[data-variant=secondary])]:!border-border ' +
14981
+ 'dark:[&_[data-slot=button]:is([data-variant=outline],[data-variant=ghost],[data-variant=secondary])]:hover:!bg-muted';
14917
14982
  function DialogFooter({ className, ...props }) {
14918
- return (jsxRuntime.jsx("div", { "data-slot": "dialog-footer", className: cn('flex flex-col-reverse gap-2 sm:flex-row sm:justify-end', className), ...props }));
14983
+ return (jsxRuntime.jsx("div", { "data-slot": "dialog-footer",
14984
+ // Bleeds to the dialog's side edges as a tinted band; dialogs that drop the default p-6 reset the margins.
14985
+ className: cn(
14986
+ // Sticky so the actions stay in view while a long body scrolls.
14987
+ 'sticky bottom-0 z-10 -mx-6 mt-1 flex shrink-0 flex-col-reverse gap-2 border-t border-border bg-[color-mix(in_srgb,var(--muted)_40%,var(--card))] px-6 py-4 ' +
14988
+ 'sm:flex-row sm:items-center sm:justify-end', DIALOG_FOOTER_BUTTONS, className), ...props }));
14919
14989
  }
14920
14990
  // Title
14921
- const DialogTitle = React__namespace.forwardRef(({ className, ...props }, ref) => (jsxRuntime.jsx(DialogPrimitive__namespace.Title, { ref: ref, "data-slot": "dialog-title", className: cn('text-lg font-semibold leading-none', className), ...props })));
14991
+ const DialogTitle = React__namespace.forwardRef(({ className, ...props }, ref) => (jsxRuntime.jsx(DialogPrimitive__namespace.Title, { ref: ref, "data-slot": "dialog-title", className: cn('text-lg font-semibold leading-6 text-foreground', className), ...props })));
14922
14992
  DialogTitle.displayName = DialogPrimitive__namespace.Title.displayName;
14923
14993
  // Description
14924
- const DialogDescription = React__namespace.forwardRef(({ className, ...props }, ref) => (jsxRuntime.jsx(DialogPrimitive__namespace.Description, { ref: ref, "data-slot": "dialog-description", className: cn('text-sm text-muted-foreground', className), ...props })));
14994
+ const DialogDescription = React__namespace.forwardRef(({ className, ...props }, ref) => (jsxRuntime.jsx(DialogPrimitive__namespace.Description, { ref: ref, "data-slot": "dialog-description", className: cn('text-sm leading-5 text-muted-foreground', className), ...props })));
14925
14995
  DialogDescription.displayName = DialogPrimitive__namespace.Description.displayName;
14926
14996
 
14927
14997
  // ---------- Command Wrapper ----------
@@ -15473,7 +15543,7 @@ const CollapsibleCard = ({ title, subtitle, icon, headerActions, defaultOpen = t
15473
15543
 
15474
15544
  /** A titled card on a document detail page: payments, customer, items, notes… */
15475
15545
  function DetailSection({ icon, title, count, actions, children, className, bodyClassName, }) {
15476
- return (jsxRuntime.jsxs("section", { className: cn('overflow-hidden rounded-2xl border border-border bg-card', className), children: [jsxRuntime.jsxs("header", { className: "flex flex-wrap items-center gap-2.5 border-b border-border px-4 py-3", children: [jsxRuntime.jsx("span", { "aria-hidden": true, className: "flex size-7 shrink-0 items-center justify-center rounded-lg bg-primary/10 text-primary dark:bg-primary/20 [&_svg]:size-4", children: icon }), jsxRuntime.jsx("h3", { className: "m-0 text-base font-semibold text-foreground", children: title }), typeof count === 'string' || typeof count === 'number' ? (jsxRuntime.jsx(Badge, { appearance: "soft", color: "secondary", shape: "pill", size: "sm", children: count })) : (count), actions ? jsxRuntime.jsx("div", { className: "ml-auto flex flex-wrap items-center gap-2.5", children: actions }) : null] }), children != null ? jsxRuntime.jsx("div", { className: bodyClassName, children: children }) : null] }));
15546
+ return (jsxRuntime.jsxs("section", { className: cn('overflow-hidden rounded-2xl border border-border bg-card', className), children: [jsxRuntime.jsxs("header", { className: "flex flex-wrap items-center gap-2.5 border-b border-border bg-section-header px-4 py-3", children: [jsxRuntime.jsx("span", { "aria-hidden": true, className: "flex size-7 shrink-0 items-center justify-center rounded-lg bg-primary/10 text-primary dark:bg-primary/20 [&_svg]:size-4", children: icon }), jsxRuntime.jsx("h3", { className: "m-0 text-base font-semibold text-foreground", children: title }), typeof count === 'string' || typeof count === 'number' ? (jsxRuntime.jsx(Badge, { appearance: "soft", color: "secondary", shape: "pill", size: "sm", children: count })) : (count), actions ? jsxRuntime.jsx("div", { className: "ml-auto flex flex-wrap items-center gap-2.5", children: actions }) : null] }), children != null ? jsxRuntime.jsx("div", { className: bodyClassName, children: children }) : null] }));
15477
15547
  }
15478
15548
 
15479
15549
  const HEADER_TONE_CLASSES = {
@@ -21241,37 +21311,30 @@ const formatDate$3 = (iso) => {
21241
21311
  }
21242
21312
  };
21243
21313
 
21244
- const InfoCard = ({ info, title, refundToWallet, onRefundChange, }) => {
21314
+ /** The document the dialog acts on: number, customer, total and date, plus paid / outstanding when known. */
21315
+ const InfoCard = ({ info }) => {
21245
21316
  if (!info)
21246
21317
  return null;
21247
21318
  if (React.isValidElement(info))
21248
- return jsxRuntime.jsx("div", { className: "mt-3", children: info });
21319
+ return jsxRuntime.jsx("div", { children: info });
21249
21320
  const i = info;
21250
- return (jsxRuntime.jsx("div", { className: "mt-1 rounded-lg border bg-muted p-3 shadow-sm", children: jsxRuntime.jsxs("div", { className: "flex flex-col gap-1", children: [jsxRuntime.jsxs("div", { className: "flex items-start gap-3", children: [jsxRuntime.jsx("div", { className: "w-36 text-sm text-muted-foreground", children: "Date" }), jsxRuntime.jsx("div", { children: formatDate$3(i.invoiceDate) })] }), jsxRuntime.jsxs("div", { className: "flex items-start gap-3", children: [jsxRuntime.jsx("div", { className: "w-36 text-sm text-muted-foreground", children: "Total" }), jsxRuntime.jsx("div", { className: "font-medium text-foreground", children: formatCurrencyWithTenantSymbol(i.totalAmount) })] }), i.paidAmount !== undefined && (jsxRuntime.jsxs("div", { className: "flex items-start gap-3", children: [jsxRuntime.jsx("div", { className: "w-36 text-sm text-muted-foreground", children: "Paid" }), jsxRuntime.jsx("div", { className: "font-medium text-primary", children: formatCurrencyWithTenantSymbol(i.paidAmount) })] })), i.outstandingAmount !== undefined && (jsxRuntime.jsxs("div", { className: "flex items-start gap-3", children: [jsxRuntime.jsx("div", { className: "w-36 text-sm text-muted-foreground", children: "Outstanding" }), jsxRuntime.jsx("div", { className: "font-medium text-muted-foreground", children: formatCurrencyWithTenantSymbol(i.outstandingAmount) })] })), title === 'Cancel Invoice' &&
21251
- !React.isValidElement(info) &&
21252
- (i?.paidAmount ?? 0) > 0 && (jsxRuntime.jsxs("div", { className: "flex items-start gap-3", children: [jsxRuntime.jsx("div", { className: "w-36 whitespace-nowrap text-sm text-muted-foreground", children: "Refund to Wallet" }), jsxRuntime.jsx(Checkbox, { checked: !!refundToWallet, onCheckedChange: (v) => onRefundChange?.(Boolean(v)), className: "bg-card" })] })), (i.customerName || i.email) && (jsxRuntime.jsxs("div", { className: "mt-1 rounded bg-card p-2", children: [i.customerName && (jsxRuntime.jsx("div", { className: "text-sm font-medium", children: i.customerName })), i.email && (jsxRuntime.jsx("div", { className: "text-sm text-muted-foreground", children: i.email }))] }))] }) }));
21321
+ const party = [i.customerName, i.email].filter(Boolean).join(' · ');
21322
+ const hasBalance = i.paidAmount !== undefined || i.outstandingAmount !== undefined;
21323
+ return (jsxRuntime.jsxs("div", { className: "rounded-xl border border-border bg-muted/30 p-3.5", children: [jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [jsxRuntime.jsx("span", { "aria-hidden": true, className: "flex size-9 shrink-0 items-center justify-center rounded-lg bg-muted text-muted-foreground", children: jsxRuntime.jsx(FileText, { className: "size-4" }) }), jsxRuntime.jsxs("div", { className: "min-w-0 flex-1", children: [i.invoiceNumber && (jsxRuntime.jsx("p", { className: "m-0 truncate text-sm font-semibold text-foreground", children: i.invoiceNumber })), party && jsxRuntime.jsx("p", { className: "m-0 truncate text-xs text-muted-foreground", children: party })] }), jsxRuntime.jsxs("div", { className: "shrink-0 text-right", children: [i.totalAmount !== undefined && (jsxRuntime.jsx("p", { className: "m-0 text-sm font-semibold tabular-nums text-foreground", children: formatCurrencyWithTenantSymbol(i.totalAmount) })), i.invoiceDate && jsxRuntime.jsx("p", { className: "m-0 text-xs text-muted-foreground", children: formatDate$3(i.invoiceDate) })] })] }), hasBalance && (jsxRuntime.jsxs("dl", { className: "m-0 mt-3 grid gap-1.5 border-t border-border pt-3 text-sm", children: [i.paidAmount !== undefined && (jsxRuntime.jsxs("div", { className: "flex items-center justify-between gap-3", children: [jsxRuntime.jsx("dt", { className: "text-muted-foreground", children: "Paid" }), jsxRuntime.jsx("dd", { className: "m-0 font-medium tabular-nums text-amount-paid", children: formatCurrencyWithTenantSymbol(i.paidAmount) })] })), i.outstandingAmount !== undefined && (jsxRuntime.jsxs("div", { className: "flex items-center justify-between gap-3", children: [jsxRuntime.jsx("dt", { className: "text-muted-foreground", children: "Outstanding" }), jsxRuntime.jsx("dd", { className: "m-0 font-medium tabular-nums text-foreground", children: formatCurrencyWithTenantSymbol(i.outstandingAmount) })] }))] }))] }));
21253
21324
  };
21254
21325
 
21255
- function useRefundToWallet(open) {
21256
- const [refundToWallet, setRefundToWallet] = React.useState(true);
21257
- React.useEffect(() => {
21258
- if (open)
21259
- setRefundToWallet(true);
21260
- }, [open]);
21261
- return { refundToWallet, setRefundToWallet };
21262
- }
21263
-
21264
- const ConfirmDialog = ({ open, onOpenChange, title, description, info, confirmLabel = 'Yes', cancelLabel = 'Cancel', confirmVariant = 'default', icon: Icon = Trash2, disabled = false, onConfirm, onCancel, }) => {
21265
- const { refundToWallet, setRefundToWallet } = useRefundToWallet(open);
21326
+ const ConfirmDialog = ({ open, onOpenChange, title, description, info, confirmLabel = 'Yes', cancelLabel = 'Cancel', confirmVariant = 'default', icon, disabled = false, onConfirm, onCancel, children, }) => {
21266
21327
  // Opened from a modal menu row, two dismissable layers overlap and Radix
21267
21328
  // restores `pointer-events: none` to <body> on close, freezing the page.
21268
21329
  useOverlayBodyLockRelease(open);
21269
- return (jsxRuntime.jsx(Dialog, { open: open, onOpenChange: onOpenChange, children: jsxRuntime.jsxs(DialogContent, { className: "gap-3 p-5", children: [jsxRuntime.jsxs(DialogHeader, { className: "gap-1.5", children: [jsxRuntime.jsxs(DialogTitle, { className: "flex items-center gap-2", children: [confirmVariant === 'destructive' && (jsxRuntime.jsx("span", { className: "inline-flex h-7 w-7 shrink-0 items-center justify-center rounded-full bg-destructive/10", children: jsxRuntime.jsx(Icon, { className: "h-3.5 w-3.5 text-destructive" }) })), jsxRuntime.jsx("span", { children: title })] }), description && jsxRuntime.jsx(DialogDescription, { children: description }), info && (jsxRuntime.jsx(InfoCard, { info: info, title: title, refundToWallet: refundToWallet, onRefundChange: setRefundToWallet }))] }), jsxRuntime.jsxs(DialogFooter, { className: "mt-1", children: [jsxRuntime.jsx(Button$1, { variant: "outline", onClick: () => {
21330
+ const destructive = confirmVariant === 'destructive';
21331
+ const Icon = icon ?? (destructive ? Trash2 : undefined);
21332
+ return (jsxRuntime.jsx(Dialog, { open: open, onOpenChange: onOpenChange, children: jsxRuntime.jsxs(DialogContent, { children: [jsxRuntime.jsxs(DialogHeader, { icon: Icon ? jsxRuntime.jsx(Icon, {}) : undefined, iconTone: destructive ? 'destructive' : 'primary', children: [jsxRuntime.jsx(DialogTitle, { children: title }), description && jsxRuntime.jsx(DialogDescription, { children: description })] }), info && jsxRuntime.jsx(InfoCard, { info: info }), children, jsxRuntime.jsxs(DialogFooter, { children: [jsxRuntime.jsx(Button$1, { variant: "outline", onClick: () => {
21270
21333
  onCancel?.();
21271
21334
  onOpenChange(false);
21272
- }, disabled: disabled, children: cancelLabel }), jsxRuntime.jsxs(Button$1, { variant: confirmVariant, onClick: async () => {
21273
- await onConfirm(title === 'Cancel Invoice' ? refundToWallet : undefined);
21274
- }, disabled: disabled, children: [confirmVariant === 'destructive' && (jsxRuntime.jsx(Icon, { className: "h-4 w-4", "aria-hidden": true })), disabled ? 'Please wait...' : confirmLabel] })] })] }) }));
21335
+ }, disabled: disabled, children: cancelLabel }), jsxRuntime.jsx(Button$1, { variant: confirmVariant, onClick: async () => {
21336
+ await onConfirm();
21337
+ }, disabled: disabled, children: disabled ? 'Please wait...' : confirmLabel })] })] }) }));
21275
21338
  };
21276
21339
 
21277
21340
  function matchesSearch(haystack, search) {
@@ -37234,7 +37297,11 @@ function DateInput({ value, onChange, onBlur, name, id, className, min, max, dis
37234
37297
 
37235
37298
  /** The permanent-delete confirmation for a document (quotation, memo, proforma…). */
37236
37299
  function DocumentDeleteDialog({ open, onOpenChange, documentLabel, documentNumber, info, busy, onConfirm, }) {
37237
- return (jsxRuntime.jsx(ConfirmDialog, { open: open, onOpenChange: onOpenChange, title: `Delete ${documentLabel}`, description: jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsxs("span", { children: ["Are you sure you want to permanently delete ", documentLabel, documentNumber ? (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [' ', jsxRuntime.jsx("span", { className: "font-semibold", children: documentNumber })] })) : null, "?"] }), jsxRuntime.jsx("div", { className: "mt-1", children: "This action cannot be undone." })] }), info: info, confirmLabel: `Yes, Delete ${documentLabel}`, cancelLabel: "No, Keep It", confirmVariant: "destructive", disabled: busy, onConfirm: onConfirm }));
37300
+ const noun = documentLabel.toLowerCase();
37301
+ const summary = info == null || (typeof info === 'object' && !React.isValidElement(info))
37302
+ ? { invoiceNumber: documentNumber, ...(info ?? {}) }
37303
+ : info;
37304
+ return (jsxRuntime.jsx(ConfirmDialog, { open: open, onOpenChange: onOpenChange, title: `Delete ${noun}?`, info: summary, confirmLabel: "Delete", cancelLabel: "Cancel", confirmVariant: "destructive", disabled: busy, onConfirm: onConfirm }));
37238
37305
  }
37239
37306
 
37240
37307
  function clampPercent$1(value) {
@@ -37242,26 +37309,63 @@ function clampPercent$1(value) {
37242
37309
  return 0;
37243
37310
  return Math.min(100, Math.max(0, value));
37244
37311
  }
37245
- const CAPTION_TONE = {
37246
- default: 'text-muted-foreground',
37312
+ const LABEL_TONE = {
37313
+ default: 'text-secondary-foreground',
37247
37314
  success: 'text-amount-paid',
37315
+ info: 'text-info',
37316
+ warning: 'text-badge-amber-text',
37248
37317
  destructive: 'text-amount-outstanding',
37318
+ muted: 'text-secondary-foreground',
37249
37319
  };
37250
- function getCaptionClassName(tone) {
37251
- return CAPTION_TONE[tone];
37320
+ function getLabelClassName(tone) {
37321
+ return LABEL_TONE[tone];
37252
37322
  }
37253
- const BAR_TONE = {
37254
- primary: 'bg-primary',
37255
- success: 'bg-success',
37256
- info: 'bg-info',
37323
+ /** The lightest wash of the status colour, matching the document's status pill. */
37324
+ const PANEL_TONE = {
37325
+ default: 'bg-muted/40',
37326
+ success: 'bg-primary/5 dark:bg-primary/10',
37327
+ info: 'bg-info/5 dark:bg-info/10',
37328
+ warning: 'bg-warning/5 dark:bg-warning/10',
37329
+ destructive: 'bg-destructive/5 dark:bg-destructive/10',
37330
+ muted: 'bg-muted/40',
37331
+ };
37332
+ function getFactsPanelClassName(tone) {
37333
+ return PANEL_TONE[tone];
37334
+ }
37335
+ const TRACK_TONE = {
37336
+ default: 'bg-progress-track',
37337
+ success: 'bg-progress-track',
37338
+ info: 'bg-info/15',
37339
+ warning: 'bg-warning/15',
37340
+ destructive: 'bg-destructive/15',
37341
+ muted: 'bg-progress-track',
37342
+ };
37343
+ function getProgressTrackClassName(tone) {
37344
+ return TRACK_TONE[tone];
37345
+ }
37346
+ const FACT_ICON_TONE = {
37347
+ default: 'bg-muted text-muted-foreground',
37348
+ success: 'bg-badge-green-bg text-amount-paid',
37349
+ warning: 'bg-badge-amber-bg text-badge-amber-text',
37350
+ destructive: 'bg-badge-destructive-bg text-amount-outstanding',
37351
+ };
37352
+ function getFactIconClassName(tone) {
37353
+ return FACT_ICON_TONE[tone];
37354
+ }
37355
+ const FACT_NOTE_TONE = {
37356
+ default: 'text-muted-foreground',
37357
+ success: 'text-amount-paid',
37358
+ warning: 'text-badge-amber-text',
37359
+ destructive: 'text-amount-outstanding',
37257
37360
  };
37258
- function getBarClassName(tone) {
37259
- return BAR_TONE[tone];
37361
+ function getFactNoteClassName(tone) {
37362
+ return FACT_NOTE_TONE[tone];
37260
37363
  }
37261
37364
  const SEGMENT_TONE = {
37262
37365
  success: 'bg-success',
37263
37366
  info: 'bg-info',
37264
37367
  primary: 'bg-primary',
37368
+ 'primary-soft': 'bg-primary/40',
37265
37369
  warning: 'bg-warning',
37266
37370
  remaining: 'bg-progress-track',
37267
37371
  };
@@ -37270,82 +37374,47 @@ function getSegmentClassName$1(tone) {
37270
37374
  }
37271
37375
  /** Each segment's width in percent of the segments' sum; all 0 when there's nothing to split. */
37272
37376
  function getSegmentPercents(segments) {
37273
- const amounts = segments.map((segment) => (Number.isFinite(segment.amount) ? Math.max(0, segment.amount) : 0));
37377
+ const amounts = segments.map((segment) => Number.isFinite(segment.amount) ? Math.max(0, segment.amount) : 0);
37274
37378
  const whole = amounts.reduce((sum, amount) => sum + amount, 0);
37275
37379
  return amounts.map((amount) => (whole > 0 ? (amount / whole) * 100 : 0));
37276
37380
  }
37277
- /** A complete payment uses the brand green; a partial one the "paid" green. */
37278
- function getProgressFillClassName(percent) {
37279
- return percent >= 100 ? 'bg-primary' : 'bg-amount-paid';
37280
- }
37281
- /** The lightest wash of the status colour, so the panel reads like the header pill without shouting. */
37282
- const STATUS_TINT = {
37283
- neutral: '',
37284
- success: 'bg-success/5 dark:bg-success/10',
37285
- info: 'bg-info/5 dark:bg-info/10',
37286
- warning: 'bg-warning/5 dark:bg-warning/10',
37287
- destructive: 'bg-destructive/5 dark:bg-destructive/10',
37288
- muted: 'bg-muted/40',
37289
- };
37290
- /** Background tint for the status area (the side panel, or the whole card without one). */
37291
- function getStatusTintClassName(tone) {
37292
- return STATUS_TINT[tone];
37293
- }
37294
- /** The panel beside the total only takes a colour when the status has one. */
37295
- function getAsidePanelClassName(tone) {
37296
- return STATUS_TINT[tone];
37297
- }
37298
37381
  /** No value to show: blank, or the "—" placeholder apps pass. */
37299
- function isEmptyMetaValue(value) {
37300
- return value == null || (typeof value === 'string' && (value.trim() === '' || value.trim() === '—'));
37301
- }
37302
- function getProgressTrackClassName(tone) {
37303
- return tone === 'destructive' ? 'bg-destructive/15' : 'bg-progress-track';
37304
- }
37305
- /** Up to four meta cells per row from `md`, two on phones. */
37306
- function getMetaColumns(count) {
37307
- return Math.min(4, Math.max(1, count));
37308
- }
37309
- const MD_COLS = {
37310
- 1: 'md:grid-cols-1',
37311
- 2: 'md:grid-cols-2',
37312
- 3: 'md:grid-cols-3',
37313
- 4: 'md:grid-cols-4',
37314
- };
37315
- function getMetaGridClassName(count) {
37316
- return `grid grid-cols-2 ${MD_COLS[getMetaColumns(count)]}`;
37317
- }
37318
- /** Hairlines by position, so they're right whether two or `cols` cells share a row. */
37319
- function getMetaCellClassName(index, count) {
37320
- const cols = getMetaColumns(count);
37321
- return [
37322
- 'min-w-0 border-border px-5 py-3',
37323
- index % 2 === 1 ? 'border-l' : '',
37324
- index >= 2 ? 'border-t' : '',
37325
- index % cols === 0 ? 'md:border-l-0' : 'md:border-l',
37326
- index >= cols ? 'md:border-t' : 'md:border-t-0',
37327
- ]
37328
- .filter(Boolean)
37329
- .join(' ');
37382
+ function isEmptyFactValue(value) {
37383
+ return (value == null ||
37384
+ (typeof value === 'string' && (value.trim() === '' || value.trim() === '—')));
37330
37385
  }
37331
37386
 
37332
- function BreakdownPanel({ breakdown }) {
37387
+ function ProgressBar({ progress, tone, name, }) {
37388
+ const percent = clampPercent$1(progress.percent);
37389
+ return (jsxRuntime.jsxs("div", { className: "mt-4 w-full max-w-xl", children: [jsxRuntime.jsx("div", { role: "progressbar", "aria-label": name, "aria-valuemin": 0, "aria-valuemax": 100, "aria-valuenow": percent, className: cn('h-2 overflow-hidden rounded-full', getProgressTrackClassName(tone)), children: jsxRuntime.jsx("div", { className: "h-full rounded-full bg-primary", style: { width: `${percent}%` } }) }), progress.value != null ||
37390
+ progress.label != null ||
37391
+ progress.trailing != null ? (jsxRuntime.jsxs("div", { className: "mt-2 flex items-center justify-between gap-3 text-xs", children: [jsxRuntime.jsxs("span", { className: "text-secondary-foreground", children: [progress.value != null ? (jsxRuntime.jsx("span", { className: "font-semibold tabular-nums text-amount-paid", children: progress.value })) : null, progress.value != null && progress.label != null ? ' ' : null, progress.label] }), progress.trailing != null ? (jsxRuntime.jsx("span", { className: "text-right tabular-nums text-secondary-foreground", children: progress.trailing })) : null] })) : null] }));
37392
+ }
37393
+ function BreakdownBar({ breakdown, }) {
37333
37394
  const percents = getSegmentPercents(breakdown.segments);
37334
- return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("dl", { className: "m-0 grid grid-flow-col auto-cols-fr gap-4", children: breakdown.segments.map((segment) => (jsxRuntime.jsxs("div", { className: "min-w-0", children: [jsxRuntime.jsxs("dt", { className: "flex items-center gap-1.5 text-xs text-label-subtle", children: [jsxRuntime.jsx("span", { "aria-hidden": true, className: cn('size-2 shrink-0 rounded-full', getSegmentClassName$1(segment.tone)) }), segment.label] }), jsxRuntime.jsx("dd", { className: "m-0 text-lg font-semibold tabular-nums text-foreground", children: segment.value })] }, segment.label))) }), jsxRuntime.jsx("div", { role: "img", "aria-label": `${breakdown.label}: ${breakdown.segments
37395
+ return (jsxRuntime.jsxs("div", { className: "mt-4 w-full max-w-xl", children: [jsxRuntime.jsx("dl", { className: "m-0 grid grid-flow-col auto-cols-fr gap-4", children: breakdown.segments.map((segment) => (jsxRuntime.jsxs("div", { className: "min-w-0", children: [jsxRuntime.jsxs("dt", { className: "flex items-center gap-1.5 text-xs text-muted-foreground", children: [jsxRuntime.jsx("span", { "aria-hidden": true, className: cn('h-1.5 w-3 shrink-0 rounded-full', getSegmentClassName$1(segment.tone), segment.tone === 'remaining' &&
37396
+ 'ring-1 ring-inset ring-border') }), segment.label] }), jsxRuntime.jsx("dd", { className: "m-0 text-base font-semibold tabular-nums text-foreground", children: segment.value })] }, segment.label))) }), jsxRuntime.jsx("div", { role: "img", "aria-label": `${breakdown.label}: ${breakdown.segments
37335
37397
  .map((segment, index) => `${segment.label} ${Math.round(percents[index])}%`)
37336
- .join(', ')}`, className: "mb-2 mt-3 flex h-2 overflow-hidden rounded-full bg-progress-track", children: breakdown.segments.map((segment, index) => segment.tone === 'remaining' || percents[index] === 0 ? null : (jsxRuntime.jsx("div", { className: cn('h-full', getSegmentClassName$1(segment.tone)), style: { width: `${percents[index]}%` } }, segment.label))) }), breakdown.caption ? jsxRuntime.jsx("p", { className: "m-0 text-xs text-muted-foreground", children: breakdown.caption }) : null] }));
37398
+ .join(', ')}`, className: "mt-3 flex h-2 overflow-hidden rounded-full bg-progress-track", children: breakdown.segments.map((segment, index) => segment.tone === 'remaining' || percents[index] === 0 ? null : (jsxRuntime.jsx("div", { className: cn('h-full', getSegmentClassName$1(segment.tone)), style: { width: `${percents[index]}%` } }, segment.label))) }), breakdown.caption ? (jsxRuntime.jsx("p", { className: "m-0 mt-2 text-xs text-secondary-foreground", children: breakdown.caption })) : null] }));
37399
+ }
37400
+ function FactRow({ fact }) {
37401
+ const tone = fact.tone ?? 'default';
37402
+ const empty = isEmptyFactValue(fact.value);
37403
+ return (jsxRuntime.jsxs("div", { className: "flex min-h-10 items-center gap-3 border-b border-border py-1.5 last:border-b-0", children: [jsxRuntime.jsx("span", { "aria-hidden": true, className: cn('flex size-6 shrink-0 items-center justify-center rounded-md text-xs font-semibold [&_svg]:size-3.5', getFactIconClassName(tone)), children: fact.icon }), jsxRuntime.jsx("dt", { className: "min-w-0 flex-1 text-sm text-secondary-foreground", children: fact.label }), jsxRuntime.jsxs("dd", { className: "m-0 flex min-w-0 flex-wrap items-baseline justify-end gap-x-2 text-right", children: [empty ? (jsxRuntime.jsx("span", { className: "text-sm font-medium text-muted-foreground", children: fact.emptyLabel ?? 'Not provided' })) : (jsxRuntime.jsx("span", { className: cn('break-words text-sm font-semibold tabular-nums', tone === 'success' ? 'text-amount-paid' : 'text-foreground'), children: fact.value })), fact.note ? (jsxRuntime.jsx("span", { className: cn('text-xs font-medium', getFactNoteClassName(tone)), children: fact.note })) : null, fact.onAction ? (jsxRuntime.jsx("button", { type: "button", onClick: fact.onAction, className: "text-xs font-medium text-primary underline-offset-2 hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring", children: fact.actionLabel ?? 'View' })) : null] })] }));
37337
37404
  }
37338
37405
  /**
37339
- * The top of a document detail page: its total, how much of it is settled
37340
- * (paid, or carats returned/sold) and its key dates. Data-only.
37406
+ * The top of a document detail page: the headline amount (balance, total, value),
37407
+ * how much of it is settled, and the key dates and facts beside it. Data-only.
37341
37408
  */
37342
- function DocumentHero({ label, total, caption, captionTone = 'default', payment, bars, breakdown, meta = [], statusTone = 'neutral', className, }) {
37343
- const hasAside = !!payment || !!breakdown || (bars?.length ?? 0) > 0;
37344
- const percent = payment ? clampPercent$1(payment.percent) : 0;
37345
- return (jsxRuntime.jsxs("section", { className: cn('overflow-hidden rounded-2xl border border-border bg-card', className), children: [jsxRuntime.jsxs("div", { className: cn('grid grid-cols-1', hasAside ? 'md:grid-cols-[1fr_1.25fr]' : getStatusTintClassName(statusTone)), children: [jsxRuntime.jsxs("div", { className: "min-w-0 px-5 py-4", children: [jsxRuntime.jsx("p", { className: "m-0 text-xs text-label-subtle", children: label }), jsxRuntime.jsx("p", { className: "m-0 mt-1 break-words text-4xl font-semibold leading-none tracking-tight tabular-nums text-foreground", children: total }), caption ? jsxRuntime.jsx("p", { className: cn('m-0 mt-2 text-xs', getCaptionClassName(captionTone)), children: caption }) : null] }), payment ? (jsxRuntime.jsxs("div", { className: cn('min-w-0 border-t border-border px-5 py-4 md:border-l md:border-t-0', getAsidePanelClassName(statusTone)), children: [jsxRuntime.jsxs("div", { className: "flex items-baseline justify-between gap-4", children: [jsxRuntime.jsxs("div", { className: "min-w-0", children: [jsxRuntime.jsx("span", { className: "text-xs text-label-subtle", children: payment.paidLabel ?? 'Amount paid' }), jsxRuntime.jsx("p", { className: "m-0 text-lg font-semibold tabular-nums text-amount-paid", children: payment.paid })] }), jsxRuntime.jsxs("div", { className: "min-w-0 text-right", children: [jsxRuntime.jsx("span", { className: "text-xs text-label-subtle", children: payment.outstandingLabel ?? 'Outstanding' }), jsxRuntime.jsx("p", { className: "m-0 text-lg font-semibold tabular-nums text-amount-outstanding", children: payment.outstanding })] })] }), jsxRuntime.jsx("div", { role: "progressbar", "aria-label": payment.paidLabel ?? 'Amount paid', "aria-valuemin": 0, "aria-valuemax": 100, "aria-valuenow": percent, className: cn('mb-2 mt-3 h-2 overflow-hidden rounded-full', getProgressTrackClassName(statusTone)), children: jsxRuntime.jsx("div", { className: cn('h-full rounded-full', getProgressFillClassName(percent)), style: { width: `${percent}%` } }) }), payment.caption ? jsxRuntime.jsx("p", { className: "m-0 text-xs text-muted-foreground", children: payment.caption }) : null] })) : breakdown ? (jsxRuntime.jsx("div", { className: cn('min-w-0 border-t border-border px-5 py-4 md:border-l md:border-t-0', getAsidePanelClassName(statusTone)), children: jsxRuntime.jsx(BreakdownPanel, { breakdown: breakdown }) })) : bars && bars.length > 0 ? (jsxRuntime.jsx("div", { className: cn('flex min-w-0 flex-col gap-3 border-t border-border px-5 py-4 md:border-l md:border-t-0', getAsidePanelClassName(statusTone)), children: bars.map((bar) => {
37346
- const barPercent = clampPercent$1(bar.percent);
37347
- return (jsxRuntime.jsxs("div", { children: [jsxRuntime.jsxs("div", { className: "mb-1 flex justify-between gap-3 text-xs", children: [jsxRuntime.jsx("span", { className: "text-muted-foreground", children: bar.label }), jsxRuntime.jsx("span", { className: "font-medium tabular-nums text-foreground", children: bar.value })] }), jsxRuntime.jsx("div", { role: "progressbar", "aria-label": bar.label, "aria-valuemin": 0, "aria-valuemax": 100, "aria-valuenow": barPercent, className: "h-2 overflow-hidden rounded-full bg-muted", children: jsxRuntime.jsx("div", { className: cn('h-full rounded-full', getBarClassName(bar.tone ?? 'primary')), style: { width: `${barPercent}%` } }) })] }, bar.label));
37348
- }) })) : null] }), meta.length > 0 ? (jsxRuntime.jsx("dl", { className: cn('m-0 border-t border-border', getMetaGridClassName(meta.length)), children: meta.map((item, index) => (jsxRuntime.jsxs("div", { className: getMetaCellClassName(index, meta.length), children: [jsxRuntime.jsx("dt", { className: cn('text-xs font-semibold uppercase tracking-wider', item.danger ? 'text-amount-outstanding' : 'text-label-subtle'), children: item.label }), isEmptyMetaValue(item.value) ? (jsxRuntime.jsx("dd", { className: "m-0 mt-1 text-sm italic text-muted-foreground", children: item.emptyLabel ?? 'Not provided' })) : (jsxRuntime.jsx("dd", { className: cn('m-0 mt-1 break-words text-sm font-medium', item.danger ? 'text-amount-outstanding' : 'text-foreground'), children: item.value }))] }, item.label))) })) : null] }));
37409
+ function DocumentHero({ label, labelIcon, tone = 'default', amount, amountNote, progress, breakdown, facts = [], details = [], detailsLabel, detailsIcon, className, }) {
37410
+ return (jsxRuntime.jsxs("section", { className: cn('overflow-hidden rounded-2xl border border-border bg-card', className), children: [jsxRuntime.jsxs("div", { className: cn('grid grid-cols-1', facts.length > 0 && 'md:grid-cols-[minmax(0,1.4fr)_minmax(0,1fr)]'), children: [jsxRuntime.jsxs("div", { className: "flex min-w-0 flex-col justify-center px-5 py-4 sm:px-7 sm:py-4", children: [jsxRuntime.jsxs("p", { className: cn('m-0 flex items-center gap-1.5 text-xs font-semibold uppercase tracking-wider [&_svg]:size-3.5', getLabelClassName(tone)), children: [labelIcon, label] }), jsxRuntime.jsxs("div", { className: "mt-1.5 flex flex-wrap items-baseline gap-x-3 gap-y-1", children: [jsxRuntime.jsx("span", { className: "break-all text-4xl font-semibold leading-none tracking-tight tabular-nums text-foreground sm:text-[2.75rem]", children: amount }), amountNote ? (jsxRuntime.jsx("span", { className: "text-sm text-secondary-foreground", children: amountNote })) : null] }), breakdown ? (jsxRuntime.jsx(BreakdownBar, { breakdown: breakdown })) : progress ? (jsxRuntime.jsx(ProgressBar, { progress: progress, tone: tone, name: label })) : null] }), facts.length > 0 ? (jsxRuntime.jsx("dl", { className: cn('m-0 flex min-w-0 flex-col justify-center border-t border-border px-5 py-2 md:border-l md:border-t-0', getFactsPanelClassName(tone)), children: facts.map((fact) => (jsxRuntime.jsx(FactRow, { fact: fact }, fact.label))) })) : null] }), details.length > 0 ? (jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center gap-x-3 gap-y-1.5 border-t border-border px-5 py-2.5 text-xs sm:px-7", children: [detailsLabel ? (jsxRuntime.jsxs("span", { className: "inline-flex shrink-0 items-center gap-1 rounded bg-muted px-1.5 py-0.5 font-semibold text-secondary-foreground [&_svg]:size-3", children: [detailsIcon, detailsLabel] })) : null, jsxRuntime.jsx("dl", { className: "m-0 flex min-w-0 flex-wrap items-center gap-x-3 gap-y-1.5", children: details.map((detail, index) => {
37411
+ const empty = isEmptyFactValue(detail.value);
37412
+ return (jsxRuntime.jsxs("div", { className: "flex min-w-0 items-center gap-x-3", children: [index > 0 ? (jsxRuntime.jsx("span", { "aria-hidden": true, className: "h-3 w-px shrink-0 bg-border" })) : null, jsxRuntime.jsxs("div", { className: "flex min-w-0 items-baseline gap-1.5", children: [jsxRuntime.jsx("dt", { className: "whitespace-nowrap text-muted-foreground", children: detail.label }), jsxRuntime.jsx("dd", { className: cn('m-0 break-words', empty
37413
+ ? 'italic text-label-subtle'
37414
+ : 'font-medium text-foreground'), children: empty
37415
+ ? (detail.emptyLabel ?? 'Not provided')
37416
+ : detail.value })] })] }, detail.label));
37417
+ }) })] })) : null] }));
37349
37418
  }
37350
37419
 
37351
37420
  const DropdownMenu = DropdownMenuPrimitive__namespace.Root;
@@ -38471,25 +38540,15 @@ const TONE_ICON_BG = {
38471
38540
  };
38472
38541
  const MetricTile = ({ label, value, sub, icon, tone, className, }) => (jsxRuntime.jsxs("div", { className: cn('flex min-w-0 items-center gap-3 rounded-xl border px-4 py-3', TONE_TILE_BG[tone], className), children: [jsxRuntime.jsx("span", { "aria-hidden": "true", className: cn('inline-flex h-10 w-10 shrink-0 items-center justify-center rounded-md [&_svg]:h-5 [&_svg]:w-5', TONE_ICON_BG[tone]), children: icon }), jsxRuntime.jsxs("div", { className: "flex min-w-0 flex-col", children: [jsxRuntime.jsx("span", { className: "truncate text-xs text-muted-foreground", children: label }), jsxRuntime.jsx("span", { className: "truncate text-lg font-semibold text-foreground", children: value }), sub && (jsxRuntime.jsx("span", { className: "truncate text-xs text-muted-foreground", children: sub }))] })] }));
38473
38542
 
38474
- const SIZE_WIDTH = {
38475
- sm: 480,
38476
- md: 640,
38477
- lg: 760,
38478
- xl: 960,
38479
- };
38480
38543
  /**
38481
38544
  * App-wide modal wrapper with a fixed header / body / footer layout.
38482
38545
  * Built on top of shadcn DialogContent, so it inherits viewport-centered
38483
38546
  * positioning, focus trapping, portal rendering, and overlay handling.
38484
38547
  */
38485
- function Modal({ open, onClose, title, icon, children, footer, size = 'md', hideCloseButton = false, className, bodyClassName, }) {
38486
- const maxWidth = SIZE_WIDTH[size];
38548
+ function Modal({ open, onClose, title, description, icon, children, footer, size = 'default', hideCloseButton = false, className, bodyClassName, }) {
38487
38549
  // See ConfirmDialog: overlapping dismissable layers leak the <body> lock.
38488
38550
  useOverlayBodyLockRelease(open);
38489
- return (jsxRuntime.jsx(Dialog, { open: open, onOpenChange: (o) => !o && onClose(), children: jsxRuntime.jsxs(DialogContent, { hideCloseButton: true, style: {
38490
- width: `min(${maxWidth}px, calc(100vw - 2rem))`,
38491
- maxWidth: `${maxWidth}px`,
38492
- }, className: cn('flex max-h-[calc(100vh-2rem)] flex-col gap-0 overflow-hidden p-0 sm:max-w-none', className), children: [jsxRuntime.jsxs("header", { className: "flex items-center justify-between gap-4 border-b border-border px-6 py-4", children: [jsxRuntime.jsx(DialogPrimitive__namespace.Title, { asChild: true, children: jsxRuntime.jsxs("div", { className: "flex items-center gap-2 text-base font-medium text-foreground", children: [icon, jsxRuntime.jsx("span", { children: title })] }) }), !hideCloseButton && (jsxRuntime.jsx(DialogPrimitive__namespace.Close, { "aria-label": "Close", className: "inline-flex h-8 w-8 items-center justify-center rounded-md text-label transition-colors hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30", children: jsxRuntime.jsx(X$2, { className: "h-4 w-4" }) }))] }), jsxRuntime.jsx("div", { className: cn('flex-1 overflow-y-auto', bodyClassName), children: children }), footer && (jsxRuntime.jsx("footer", { className: "flex items-center justify-end gap-3 border-t border-border px-6 py-4", children: footer }))] }) }));
38551
+ return (jsxRuntime.jsx(Dialog, { open: open, onOpenChange: (o) => !o && onClose(), children: jsxRuntime.jsxs(DialogContent, { hideCloseButton: true, size: size === 'wide' ? 'wide' : 'default', className: cn('flex flex-col gap-0 overflow-hidden p-0', className), children: [jsxRuntime.jsxs("header", { className: "flex shrink-0 items-start justify-between gap-4 px-6 pt-5 pb-4", children: [jsxRuntime.jsxs("div", { className: cn('flex min-w-0 gap-3.5', description ? 'items-start' : 'items-center'), children: [icon ? jsxRuntime.jsx(DialogIcon, { children: icon }) : null, jsxRuntime.jsxs("div", { className: "flex min-w-0 flex-col", children: [jsxRuntime.jsx(DialogPrimitive__namespace.Title, { className: "m-0 text-lg font-semibold leading-6 text-foreground", children: title }), description ? (jsxRuntime.jsx(DialogPrimitive__namespace.Description, { className: "m-0 text-sm leading-5 text-muted-foreground", children: description })) : null] })] }), !hideCloseButton && (jsxRuntime.jsx(DialogPrimitive__namespace.Close, { "aria-label": "Close", className: "-mr-1.5 inline-flex size-7 shrink-0 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring", children: jsxRuntime.jsx(X$2, { className: "h-4 w-4" }) }))] }), jsxRuntime.jsx("div", { className: cn('flex-1 overflow-y-auto', bodyClassName), children: children }), footer && (jsxRuntime.jsx("footer", { className: cn('flex items-center justify-end gap-3 border-t border-border bg-[color-mix(in_srgb,var(--muted)_40%,var(--card))] px-6 py-4', DIALOG_FOOTER_BUTTONS), children: footer }))] }) }));
38493
38552
  }
38494
38553
 
38495
38554
  /**
@@ -67516,7 +67575,7 @@ function DetailPageSkeleton({ sections = 3, }) {
67516
67575
  }
67517
67576
  /** Document detail page (invoice, memo…): header, `DocumentHero` and `DetailSection` placeholders. */
67518
67577
  function DocumentDetailSkeleton({ aside = 'payment', sections = 3, label = 'Loading document', }) {
67519
- return (jsxRuntime.jsxs("div", { role: "status", "aria-busy": "true", "aria-label": label, className: "space-y-4", children: [jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center justify-between gap-3", children: [jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [jsxRuntime.jsx(SquareSkeleton, { height: 14, width: 80, rounded: "full" }), jsxRuntime.jsx("span", { className: "h-5 w-px bg-border" }), jsxRuntime.jsx(SquareSkeleton, { height: 28, width: 200, rounded: "md" }), jsxRuntime.jsx(SquareSkeleton, { height: 22, width: 72, rounded: "full" })] }), jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [jsxRuntime.jsx(SquareSkeleton, { height: 36, width: 112, rounded: "lg" }), jsxRuntime.jsx(SquareSkeleton, { height: 36, width: 80, rounded: "lg" }), jsxRuntime.jsx(SquareSkeleton, { height: 36, width: 128, rounded: "lg" }), jsxRuntime.jsx(SquareSkeleton, { height: 36, width: 36, rounded: "lg" })] })] }), jsxRuntime.jsxs("section", { "aria-hidden": "true", className: "overflow-hidden rounded-2xl border border-border bg-card", children: [jsxRuntime.jsxs("div", { className: cn('grid grid-cols-1', aside !== 'none' && 'md:grid-cols-[1fr_1.25fr]'), children: [jsxRuntime.jsxs("div", { className: "space-y-3 px-5 py-4", children: [jsxRuntime.jsx(SquareSkeleton, { height: 12, width: 96, rounded: "full" }), jsxRuntime.jsx(SquareSkeleton, { height: 36, width: 180, rounded: "md" }), jsxRuntime.jsx(SquareSkeleton, { height: 12, width: 200, rounded: "full" })] }), aside === 'payment' && (jsxRuntime.jsxs("div", { className: "space-y-3 border-t border-border px-5 py-4 md:border-l md:border-t-0", children: [jsxRuntime.jsxs("div", { className: "flex justify-between gap-4", children: [jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [jsxRuntime.jsx(SquareSkeleton, { height: 11, width: 80, rounded: "full" }), jsxRuntime.jsx(SquareSkeleton, { height: 20, width: 104, rounded: "md" })] }), jsxRuntime.jsxs("div", { className: "flex flex-col items-end space-y-1.5", children: [jsxRuntime.jsx(SquareSkeleton, { height: 11, width: 80, rounded: "full" }), jsxRuntime.jsx(SquareSkeleton, { height: 20, width: 104, rounded: "md" })] })] }), jsxRuntime.jsx(SquareSkeleton, { height: 8, className: "w-full", rounded: "full" }), jsxRuntime.jsx(SquareSkeleton, { height: 11, width: 160, rounded: "full" })] })), aside === 'bars' && (jsxRuntime.jsx("div", { className: "space-y-3 border-t border-border px-5 py-4 md:border-l md:border-t-0", children: [0, 1, 2].map((i) => (jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [jsxRuntime.jsxs("div", { className: "flex justify-between", children: [jsxRuntime.jsx(SquareSkeleton, { height: 11, width: 96, rounded: "full" }), jsxRuntime.jsx(SquareSkeleton, { height: 11, width: 56, rounded: "full" })] }), jsxRuntime.jsx(SquareSkeleton, { height: 8, className: "w-full", rounded: "full" })] }, i))) }))] }), jsxRuntime.jsx("div", { className: "grid grid-cols-2 border-t border-border md:grid-cols-4", children: [0, 1, 2, 3].map((i) => (jsxRuntime.jsxs("div", { className: "space-y-2 border-border px-5 py-3 even:border-l [&:nth-child(n+3)]:border-t md:border-l md:first:border-l-0 md:[&:nth-child(n+3)]:border-t-0", children: [jsxRuntime.jsx(SquareSkeleton, { height: 10, width: 56, rounded: "full" }), jsxRuntime.jsx(SquareSkeleton, { height: 14, width: 96, rounded: "full" })] }, i))) })] }), Array.from({ length: sections }).map((_, s) => (jsxRuntime.jsxs("section", { "aria-hidden": "true", className: "overflow-hidden rounded-2xl border border-border bg-card", children: [jsxRuntime.jsxs("div", { className: "flex items-center gap-2.5 border-b border-border px-4 py-3", children: [jsxRuntime.jsx(SquareSkeleton, { height: 28, width: 28, rounded: "lg" }), jsxRuntime.jsx(SquareSkeleton, { height: 15, width: 128, rounded: "full" })] }), jsxRuntime.jsx("div", { className: "space-y-3 p-4", children: Array.from({ length: s === 1 ? 4 : 2 }).map((__, row) => (jsxRuntime.jsx(SquareSkeleton, { height: s === 1 ? 36 : 14, className: row % 2 ? 'w-3/4' : 'w-full', rounded: "md" }, row))) })] }, s))), jsxRuntime.jsx("span", { className: "sr-only", children: label })] }));
67578
+ return (jsxRuntime.jsxs("div", { role: "status", "aria-busy": "true", "aria-label": label, className: "space-y-4", children: [jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center justify-between gap-3", children: [jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [jsxRuntime.jsx(SquareSkeleton, { height: 14, width: 80, rounded: "full" }), jsxRuntime.jsx("span", { className: "h-5 w-px bg-border" }), jsxRuntime.jsx(SquareSkeleton, { height: 28, width: 200, rounded: "md" }), jsxRuntime.jsx(SquareSkeleton, { height: 22, width: 72, rounded: "full" })] }), jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [jsxRuntime.jsx(SquareSkeleton, { height: 36, width: 112, rounded: "lg" }), jsxRuntime.jsx(SquareSkeleton, { height: 36, width: 80, rounded: "lg" }), jsxRuntime.jsx(SquareSkeleton, { height: 36, width: 128, rounded: "lg" }), jsxRuntime.jsx(SquareSkeleton, { height: 36, width: 36, rounded: "lg" })] })] }), jsxRuntime.jsxs("section", { "aria-hidden": "true", className: "grid grid-cols-1 overflow-hidden rounded-2xl border border-border bg-card md:grid-cols-[minmax(0,1.4fr)_minmax(0,1fr)]", children: [jsxRuntime.jsxs("div", { className: "flex flex-col justify-center space-y-3 px-5 py-4 sm:px-7 sm:py-4", children: [jsxRuntime.jsx(SquareSkeleton, { height: 12, width: 96, rounded: "full" }), jsxRuntime.jsx(SquareSkeleton, { height: 40, width: 220, rounded: "md" }), aside !== 'none' && (jsxRuntime.jsxs("div", { className: "w-full max-w-xl space-y-2 pt-1", children: [jsxRuntime.jsx(SquareSkeleton, { height: 8, className: "w-full", rounded: "full" }), jsxRuntime.jsxs("div", { className: "flex justify-between", children: [jsxRuntime.jsx(SquareSkeleton, { height: 11, width: 88, rounded: "full" }), jsxRuntime.jsx(SquareSkeleton, { height: 11, width: 40, rounded: "full" })] })] }))] }), jsxRuntime.jsx("div", { className: "border-t border-border bg-muted/40 px-5 py-2 md:border-l md:border-t-0", children: [0, 1, 2, 3].map((i) => (jsxRuntime.jsxs("div", { className: "flex min-h-10 items-center gap-3 border-b border-border py-1.5 last:border-b-0", children: [jsxRuntime.jsx(SquareSkeleton, { height: 24, width: 24, rounded: "md" }), jsxRuntime.jsx(SquareSkeleton, { height: 12, width: 72, rounded: "full" }), jsxRuntime.jsx(SquareSkeleton, { height: 12, width: 88, rounded: "full", className: "ml-auto" })] }, i))) })] }), Array.from({ length: sections }).map((_, s) => (jsxRuntime.jsxs("section", { "aria-hidden": "true", className: "overflow-hidden rounded-2xl border border-border bg-card", children: [jsxRuntime.jsxs("div", { className: "flex items-center gap-2.5 border-b border-border px-4 py-3", children: [jsxRuntime.jsx(SquareSkeleton, { height: 28, width: 28, rounded: "lg" }), jsxRuntime.jsx(SquareSkeleton, { height: 15, width: 128, rounded: "full" })] }), jsxRuntime.jsx("div", { className: "space-y-3 p-4", children: Array.from({ length: s === 1 ? 4 : 2 }).map((__, row) => (jsxRuntime.jsx(SquareSkeleton, { height: s === 1 ? 36 : 14, className: row % 2 ? 'w-3/4' : 'w-full', rounded: "md" }, row))) })] }, s))), jsxRuntime.jsx("span", { className: "sr-only", children: label })] }));
67520
67579
  }
67521
67580
 
67522
67581
  const SlideOut = ({ open, onOpenChange, ...props }) => {
@@ -75330,7 +75389,7 @@ function ImageCropModal({ open, imageUrl, fileType, onCancel, onConfirm, }) {
75330
75389
  const blob = await getCroppedBlob(imgRef.current, completedCrop, fileType);
75331
75390
  onConfirm(blob);
75332
75391
  };
75333
- return (jsxRuntime.jsxs(Modal, { open: open, onClose: onCancel, size: "lg", icon: jsxRuntime.jsx(Scissors, { className: "h-5 w-5 text-foreground", strokeWidth: 1.5 }), title: "Crop Image", footer: jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(Button$1, { type: "button", variant: "outline", onClick: onCancel, className: "border-border bg-muted text-foreground hover:bg-muted/80", children: "Cancel" }), jsxRuntime.jsx(Button$1, { type: "button", onClick: handleConfirm, className: "bg-primary text-primary-foreground hover:bg-hover", children: "Crop & Add" })] }), children: [jsxRuntime.jsxs("div", { className: "space-y-3 px-6 py-4", children: [jsxRuntime.jsx("p", { className: "text-[13px] text-label", children: "Aspect ratio" }), jsxRuntime.jsx("div", { className: "grid grid-cols-5 gap-3", children: ASPECTS.map((a) => {
75392
+ return (jsxRuntime.jsxs(Modal, { open: open, onClose: onCancel, size: "wide", icon: jsxRuntime.jsx(Scissors, { className: "h-5 w-5 text-foreground", strokeWidth: 1.5 }), title: "Crop Image", footer: jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(Button$1, { type: "button", variant: "outline", onClick: onCancel, children: "Cancel" }), jsxRuntime.jsx(Button$1, { type: "button", onClick: handleConfirm, className: "bg-primary text-primary-foreground hover:bg-hover", children: "Crop & Add" })] }), children: [jsxRuntime.jsxs("div", { className: "space-y-3 px-6 pb-4", children: [jsxRuntime.jsx("p", { className: "text-[13px] text-label", children: "Aspect ratio" }), jsxRuntime.jsx("div", { className: "grid grid-cols-5 gap-3", children: ASPECTS.map((a) => {
75334
75393
  const selected = aspectKey === a.key;
75335
75394
  return (jsxRuntime.jsxs("button", { type: "button", onClick: () => setAspectKey(a.key), className: cn('flex cursor-pointer flex-col items-center justify-center gap-1 rounded-lg border px-3 py-3 text-xs transition-colors', selected
75336
75395
  ? 'border-primary bg-primary/10 text-primary'