@pactor-app/ui 1.3.0 → 1.8.0

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.
@@ -51,6 +51,7 @@ __export(components_exports, {
51
51
  Content: () => Content,
52
52
  ContextMenu: () => ContextMenu2,
53
53
  DataTable: () => DataTable,
54
+ DatePicker: () => DatePicker,
54
55
  Dialog: () => Dialog2,
55
56
  Drawer: () => Drawer2,
56
57
  DropdownMenu: () => DropdownMenu2,
@@ -903,11 +904,11 @@ function Calendar({
903
904
  defaultClassNames.day_button
904
905
  ),
905
906
  selected: cn(
906
- "[&>button]:bg-(--calendar-selected-background) [&>button]:text-(--calendar-selected-foreground) [&>button]:hover:bg-(--calendar-selected-background)",
907
+ "[&>button]:bg-(--calendar-selected-background) [&>button]:text-(--calendar-selected-foreground) [&>button]:hover:bg-(--calendar-selected-background) [&>button]:hover:text-(--calendar-selected-foreground)",
907
908
  defaultClassNames.selected
908
909
  ),
909
910
  today: cn(
910
- "[&>button]:bg-(--calendar-today-background) [&>button]:text-(--calendar-today-foreground)",
911
+ "[&>button]:bg-(--calendar-today-background) [&>button]:text-(--calendar-today-foreground) [&>button]:hover:bg-(--calendar-today-background) [&>button]:hover:text-(--calendar-today-foreground) [&>button]:border [&>button]:border-(--calendar-today-border)",
911
912
  defaultClassNames.today
912
913
  ),
913
914
  outside: cn(
@@ -1011,13 +1012,27 @@ function Calendar2({
1011
1012
 
1012
1013
  // src/ui/card.tsx
1013
1014
  var import_jsx_runtime22 = require("react/jsx-runtime");
1014
- function Card({ className, ...props }) {
1015
+ var cardRoundedClasses = {
1016
+ none: "rounded-none",
1017
+ sm: "rounded-sm",
1018
+ md: "rounded-md",
1019
+ lg: "rounded-lg",
1020
+ xl: "rounded-xl",
1021
+ "2xl": "rounded-2xl",
1022
+ "3xl": "rounded-3xl"
1023
+ };
1024
+ function Card({
1025
+ className,
1026
+ rounded = "lg",
1027
+ ...props
1028
+ }) {
1015
1029
  return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
1016
1030
  "div",
1017
1031
  {
1018
1032
  "data-slot": "card",
1019
1033
  className: cn(
1020
- "flex flex-col gap-6 rounded-xl border border-border bg-card py-6 text-card-foreground shadow-(--card-shadow)",
1034
+ "flex flex-col gap-6 border border-border bg-card py-6 text-card-foreground shadow-(--card-shadow)",
1035
+ cardRoundedClasses[rounded],
1021
1036
  className
1022
1037
  ),
1023
1038
  ...props
@@ -1060,10 +1075,11 @@ function CardContent({ className, ...props }) {
1060
1075
 
1061
1076
  // src/components/components/Card/index.tsx
1062
1077
  var import_jsx_runtime23 = require("react/jsx-runtime");
1063
- function Card2({ title, bordered = true, className, style, children }) {
1078
+ function Card2({ title, bordered = true, rounded, className, style, children }) {
1064
1079
  return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
1065
1080
  Card,
1066
1081
  {
1082
+ rounded,
1067
1083
  className: cn("gap-4 py-4", !bordered && "border-transparent shadow-none", className),
1068
1084
  style,
1069
1085
  children: [
@@ -2550,34 +2566,323 @@ function DataTable({
2550
2566
  ] });
2551
2567
  }
2552
2568
 
2553
- // src/components/components/Dialog/index.tsx
2569
+ // src/components/components/DatePicker/index.tsx
2554
2570
  var import_runtime7 = require("@pactor-app/runtime");
2571
+ var import_date_fns2 = require("date-fns");
2572
+ var import_locale = require("date-fns/locale");
2573
+ var import_lucide_react13 = require("lucide-react");
2555
2574
  var import_react11 = require("react");
2575
+ var import_jsx_runtime46 = require("react/jsx-runtime");
2576
+ function toDateFnsLocale(locale) {
2577
+ switch (locale) {
2578
+ case "zh-CN":
2579
+ return import_locale.zhCN;
2580
+ case "en-US":
2581
+ return import_locale.enUS;
2582
+ default:
2583
+ return import_locale.enUS;
2584
+ }
2585
+ }
2586
+ function parseDate(value) {
2587
+ if (typeof value !== "string" || value === "") return void 0;
2588
+ const date = (0, import_date_fns2.parseISO)(value);
2589
+ return (0, import_date_fns2.isValid)(date) ? date : void 0;
2590
+ }
2591
+ function parseRange(value) {
2592
+ if (typeof value !== "object" || value === null) return void 0;
2593
+ const { start, end } = value;
2594
+ const from = parseDate(start);
2595
+ const to = parseDate(end);
2596
+ return from && to ? { from, to } : void 0;
2597
+ }
2598
+ var RANGE_ENDPOINT_CLASSES = "[&>button]:bg-(--calendar-selected-background) [&>button]:text-(--calendar-selected-foreground) [&>button]:hover:bg-(--calendar-selected-background) [&>button]:hover:text-(--calendar-selected-foreground)";
2599
+ var IN_RANGE_CLASSES = "[&>button]:bg-(--calendar-range-background) [&>button]:text-(--calendar-range-foreground) [&>button]:rounded-none";
2600
+ function DatePicker(props) {
2601
+ const {
2602
+ name,
2603
+ label,
2604
+ rules,
2605
+ placeholder,
2606
+ disabled,
2607
+ presets,
2608
+ className,
2609
+ style
2610
+ } = props;
2611
+ const mode = props.mode ?? "single";
2612
+ const isRange = mode === "range";
2613
+ const value = props.value;
2614
+ const onChange = props.onChange;
2615
+ const form = useFormContext();
2616
+ const { locale, t } = (0, import_runtime7.useI18n)();
2617
+ const dfLocale = toDateFnsLocale(locale);
2618
+ const controlId = (0, import_react11.useId)();
2619
+ const inForm = form?.inForm === true && typeof name === "string" && name !== "";
2620
+ const [open, setOpen] = (0, import_react11.useState)(false);
2621
+ (0, import_react11.useEffect)(() => {
2622
+ if (inForm && form && name) {
2623
+ form.registerField(name, rules, value);
2624
+ return () => form.unregisterField(name);
2625
+ }
2626
+ return void 0;
2627
+ });
2628
+ const [innerValue, setInnerValue] = (0, import_react11.useState)(value);
2629
+ (0, import_react11.useEffect)(() => {
2630
+ if (!inForm) setInnerValue(value);
2631
+ }, [inForm, value]);
2632
+ const [pendingStart, setPendingStart] = (0, import_react11.useState)();
2633
+ const [startMonth, setStartMonth] = (0, import_react11.useState)(
2634
+ () => (0, import_date_fns2.startOfMonth)(/* @__PURE__ */ new Date())
2635
+ );
2636
+ const [endMonth, setEndMonth] = (0, import_react11.useState)(
2637
+ () => (0, import_date_fns2.startOfMonth)((0, import_date_fns2.addMonths)(/* @__PURE__ */ new Date(), 1))
2638
+ );
2639
+ const current = inForm && form && name ? form.values[name] : innerValue;
2640
+ const setPanelMonths = (start, end) => {
2641
+ const s = (0, import_date_fns2.startOfMonth)(start);
2642
+ const e = (0, import_date_fns2.startOfMonth)(end);
2643
+ setStartMonth(s);
2644
+ setEndMonth((0, import_date_fns2.isBefore)(e, (0, import_date_fns2.addMonths)(s, 1)) ? (0, import_date_fns2.addMonths)(s, 1) : e);
2645
+ };
2646
+ const handleStartMonthChange = (month) => {
2647
+ const s = (0, import_date_fns2.startOfMonth)(month);
2648
+ setStartMonth(s);
2649
+ setEndMonth((prev) => (0, import_date_fns2.isBefore)(s, prev) ? prev : (0, import_date_fns2.addMonths)(s, 1));
2650
+ };
2651
+ const handleEndMonthChange = (month) => {
2652
+ const e = (0, import_date_fns2.startOfMonth)(month);
2653
+ setEndMonth(e);
2654
+ setStartMonth((prev) => (0, import_date_fns2.isBefore)(prev, e) ? prev : (0, import_date_fns2.subMonths)(e, 1));
2655
+ };
2656
+ (0, import_react11.useEffect)(() => {
2657
+ if (!isRange) return;
2658
+ const parsed = parseRange(current);
2659
+ setPendingStart(void 0);
2660
+ setPanelMonths(
2661
+ parsed?.from ?? /* @__PURE__ */ new Date(),
2662
+ parsed?.to ?? (0, import_date_fns2.addMonths)(/* @__PURE__ */ new Date(), 1)
2663
+ );
2664
+ }, [isRange, current]);
2665
+ const commit = (next) => {
2666
+ if (inForm && form && name) {
2667
+ form.setValue(name, next);
2668
+ } else {
2669
+ setInnerValue(next);
2670
+ }
2671
+ onChange?.(next);
2672
+ };
2673
+ const commitRange = (from, to) => {
2674
+ commit({ start: (0, import_date_fns2.format)(from, "yyyy-MM-dd"), end: (0, import_date_fns2.format)(to, "yyyy-MM-dd") });
2675
+ };
2676
+ const handleSingleSelect = (date) => {
2677
+ commit(date ? (0, import_date_fns2.format)(date, "yyyy-MM-dd") : void 0);
2678
+ };
2679
+ const parsedRange = isRange ? parseRange(current) : void 0;
2680
+ const rangeStart = pendingStart ?? parsedRange?.from;
2681
+ const rangeEnd = pendingStart !== void 0 ? void 0 : parsedRange?.to;
2682
+ const handleRangeDaySelect = (date) => {
2683
+ if (!date) return;
2684
+ const day = (0, import_date_fns2.startOfDay)(date);
2685
+ if (pendingStart) {
2686
+ if ((0, import_date_fns2.isBefore)(day, pendingStart)) {
2687
+ setPendingStart(day);
2688
+ } else {
2689
+ commitRange(pendingStart, day);
2690
+ }
2691
+ } else {
2692
+ setPendingStart(day);
2693
+ }
2694
+ };
2695
+ const presetList = presets === false ? [] : presets ?? (isRange ? [{ key: "today" }, { key: "thisWeek" }, { key: "thisMonth" }] : []);
2696
+ const resolvePreset = (preset) => {
2697
+ const now = /* @__PURE__ */ new Date();
2698
+ if ("key" in preset) {
2699
+ const key = preset.key;
2700
+ const label2 = preset.label ?? t(`pactor.datePicker.${key}`);
2701
+ if (key === "today") return { label: label2, from: now, to: now };
2702
+ if (key === "thisWeek") {
2703
+ return {
2704
+ label: label2,
2705
+ from: (0, import_date_fns2.startOfWeek)(now, { locale: dfLocale }),
2706
+ to: (0, import_date_fns2.endOfWeek)(now, { locale: dfLocale })
2707
+ };
2708
+ }
2709
+ return { label: label2, from: (0, import_date_fns2.startOfMonth)(now), to: (0, import_date_fns2.endOfMonth)(now) };
2710
+ }
2711
+ if ("days" in preset) {
2712
+ return { label: preset.label, from: (0, import_date_fns2.subDays)(now, preset.days - 1), to: now };
2713
+ }
2714
+ return {
2715
+ label: preset.label,
2716
+ from: parseDate(preset.range.start) ?? now,
2717
+ to: parseDate(preset.range.end) ?? now
2718
+ };
2719
+ };
2720
+ const handlePresetClick = (preset, from, to) => {
2721
+ if ("key" in preset && preset.key === "today") {
2722
+ const today = (0, import_date_fns2.startOfDay)(/* @__PURE__ */ new Date());
2723
+ if (isRange) {
2724
+ setPendingStart(today);
2725
+ setPanelMonths(today, (0, import_date_fns2.addMonths)(today, 1));
2726
+ } else {
2727
+ commit((0, import_date_fns2.format)(today, "yyyy-MM-dd"));
2728
+ }
2729
+ return;
2730
+ }
2731
+ commitRange(from, to);
2732
+ };
2733
+ const singleDate = isRange ? void 0 : parseDate(current);
2734
+ const hasInnerRange = isRange && rangeStart !== void 0 && rangeEnd !== void 0 && (0, import_date_fns2.isBefore)((0, import_date_fns2.startOfDay)(rangeStart), (0, import_date_fns2.startOfDay)(rangeEnd));
2735
+ const rangeModifiers = isRange ? {
2736
+ ...rangeStart ? { rangeStart } : {},
2737
+ ...rangeEnd ? { rangeEnd } : {},
2738
+ ...hasInnerRange ? { inRange: { after: rangeStart, before: rangeEnd } } : {}
2739
+ } : void 0;
2740
+ const rangeModifierClassNames = rangeModifiers ? {
2741
+ ...rangeStart ? { rangeStart: RANGE_ENDPOINT_CLASSES } : {},
2742
+ ...rangeEnd ? { rangeEnd: RANGE_ENDPOINT_CLASSES } : {},
2743
+ ...hasInnerRange ? { inRange: IN_RANGE_CLASSES } : {}
2744
+ } : void 0;
2745
+ const displayText = isRange ? typeof current === "object" && current !== null ? `${current.start} ~ ${current.end}` : "" : typeof current === "string" ? current : "";
2746
+ const placeholderText = placeholder ?? t(isRange ? "pactor.datePicker.placeholderRange" : "pactor.datePicker.placeholder");
2747
+ const calendar = isRange ? /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("div", { className: "flex", children: [
2748
+ /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
2749
+ "div",
2750
+ {
2751
+ "data-slot": "datepicker-start-panel",
2752
+ className: "border-r border-border",
2753
+ children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
2754
+ Calendar,
2755
+ {
2756
+ mode: "single",
2757
+ month: startMonth,
2758
+ onMonthChange: handleStartMonthChange,
2759
+ onSelect: handleRangeDaySelect,
2760
+ modifiers: rangeModifiers,
2761
+ modifiersClassNames: rangeModifierClassNames,
2762
+ locale: dfLocale
2763
+ }
2764
+ )
2765
+ }
2766
+ ),
2767
+ /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("div", { "data-slot": "datepicker-end-panel", children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
2768
+ Calendar,
2769
+ {
2770
+ mode: "single",
2771
+ month: endMonth,
2772
+ onMonthChange: handleEndMonthChange,
2773
+ onSelect: handleRangeDaySelect,
2774
+ modifiers: rangeModifiers,
2775
+ modifiersClassNames: rangeModifierClassNames,
2776
+ locale: dfLocale
2777
+ }
2778
+ ) })
2779
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
2780
+ Calendar,
2781
+ {
2782
+ mode: "single",
2783
+ selected: singleDate,
2784
+ onSelect: handleSingleSelect,
2785
+ locale: dfLocale
2786
+ }
2787
+ );
2788
+ const control = /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(Popover, { open, onOpenChange: setOpen, children: [
2789
+ /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(
2790
+ PopoverTrigger,
2791
+ {
2792
+ id: controlId,
2793
+ type: "button",
2794
+ disabled,
2795
+ "data-slot": "datepicker-trigger",
2796
+ className: cn(
2797
+ "flex h-9 w-full min-w-0 cursor-pointer items-center justify-between gap-2 rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-xs transition-colors outline-none hover:bg-accent focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50",
2798
+ displayText === "" && "text-muted-foreground",
2799
+ !inForm && className
2800
+ ),
2801
+ style: inForm ? void 0 : style,
2802
+ children: [
2803
+ /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("span", { className: "min-w-0 flex-1 truncate text-left", children: displayText === "" ? placeholderText : displayText }),
2804
+ /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_lucide_react13.Calendar, { className: "size-4 shrink-0 opacity-50" })
2805
+ ]
2806
+ }
2807
+ ),
2808
+ /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(PopoverContent, { className: "w-auto p-0", children: presetList.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("div", { className: "flex", children: [
2809
+ /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
2810
+ "div",
2811
+ {
2812
+ "data-slot": "datepicker-presets",
2813
+ className: "flex flex-col gap-1 border-r border-border p-3",
2814
+ children: presetList.map((preset, index) => {
2815
+ const resolved = resolvePreset(preset);
2816
+ return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
2817
+ "button",
2818
+ {
2819
+ type: "button",
2820
+ className: "cursor-pointer rounded-md px-3 py-1.5 text-left text-sm whitespace-nowrap hover:bg-accent hover:text-accent-foreground",
2821
+ onClick: () => handlePresetClick(preset, resolved.from, resolved.to),
2822
+ children: resolved.label
2823
+ },
2824
+ `${resolved.label}-${index}`
2825
+ );
2826
+ })
2827
+ }
2828
+ ),
2829
+ calendar
2830
+ ] }) : calendar })
2831
+ ] });
2832
+ if (inForm && form && name) {
2833
+ const error = form.errors[name];
2834
+ return /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(
2835
+ "div",
2836
+ {
2837
+ "data-slot": "form-item",
2838
+ className: cn(formItemClass(form.layout), className),
2839
+ style,
2840
+ children: [
2841
+ label ? /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
2842
+ "label",
2843
+ {
2844
+ htmlFor: controlId,
2845
+ className: "shrink-0 text-sm leading-none font-medium whitespace-nowrap",
2846
+ children: label
2847
+ }
2848
+ ) : null,
2849
+ control,
2850
+ error ? /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("div", { "data-slot": "form-error", className: "text-sm text-destructive", children: error }) : null
2851
+ ]
2852
+ }
2853
+ );
2854
+ }
2855
+ return control;
2856
+ }
2857
+
2858
+ // src/components/components/Dialog/index.tsx
2859
+ var import_runtime8 = require("@pactor-app/runtime");
2860
+ var import_react12 = require("react");
2556
2861
 
2557
2862
  // src/ui/dialog.tsx
2558
2863
  var import_dialog = require("@base-ui/react/dialog");
2559
- var import_lucide_react13 = require("lucide-react");
2560
- var import_jsx_runtime46 = require("react/jsx-runtime");
2864
+ var import_lucide_react14 = require("lucide-react");
2865
+ var import_jsx_runtime47 = require("react/jsx-runtime");
2561
2866
  function Dialog({
2562
2867
  ...props
2563
2868
  }) {
2564
- return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_dialog.Dialog.Root, { "data-slot": "dialog", ...props });
2869
+ return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_dialog.Dialog.Root, { "data-slot": "dialog", ...props });
2565
2870
  }
2566
2871
  function DialogTrigger({
2567
2872
  ...props
2568
2873
  }) {
2569
- return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_dialog.Dialog.Trigger, { "data-slot": "dialog-trigger", ...props });
2874
+ return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_dialog.Dialog.Trigger, { "data-slot": "dialog-trigger", ...props });
2570
2875
  }
2571
2876
  function DialogPortal({
2572
2877
  ...props
2573
2878
  }) {
2574
- return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_dialog.Dialog.Portal, { "data-slot": "dialog-portal", ...props });
2879
+ return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_dialog.Dialog.Portal, { "data-slot": "dialog-portal", ...props });
2575
2880
  }
2576
2881
  function DialogOverlay({
2577
2882
  className,
2578
2883
  ...props
2579
2884
  }) {
2580
- return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
2885
+ return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
2581
2886
  import_dialog.Dialog.Backdrop,
2582
2887
  {
2583
2888
  "data-slot": "dialog-overlay",
@@ -2595,9 +2900,9 @@ function DialogContent({
2595
2900
  showCloseButton = true,
2596
2901
  ...props
2597
2902
  }) {
2598
- return /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(DialogPortal, { "data-slot": "dialog-portal", children: [
2599
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(DialogOverlay, {}),
2600
- /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(
2903
+ return /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)(DialogPortal, { "data-slot": "dialog-portal", children: [
2904
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(DialogOverlay, {}),
2905
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)(
2601
2906
  import_dialog.Dialog.Popup,
2602
2907
  {
2603
2908
  "data-slot": "dialog-content",
@@ -2608,11 +2913,11 @@ function DialogContent({
2608
2913
  ...props,
2609
2914
  children: [
2610
2915
  children,
2611
- showCloseButton && /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(
2916
+ showCloseButton && /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)(
2612
2917
  import_dialog.Dialog.Close,
2613
2918
  {
2614
2919
  "data-slot": "dialog-close",
2615
- render: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
2920
+ render: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
2616
2921
  "button",
2617
2922
  {
2618
2923
  type: "button",
@@ -2620,8 +2925,8 @@ function DialogContent({
2620
2925
  }
2621
2926
  ),
2622
2927
  children: [
2623
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_lucide_react13.XIcon, {}),
2624
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("span", { className: "sr-only", children: "Close" })
2928
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_lucide_react14.XIcon, {}),
2929
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("span", { className: "sr-only", children: "Close" })
2625
2930
  ]
2626
2931
  }
2627
2932
  )
@@ -2631,7 +2936,7 @@ function DialogContent({
2631
2936
  ] });
2632
2937
  }
2633
2938
  function DialogHeader({ className, ...props }) {
2634
- return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
2939
+ return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
2635
2940
  "div",
2636
2941
  {
2637
2942
  "data-slot": "dialog-header",
@@ -2644,7 +2949,7 @@ function DialogTitle({
2644
2949
  className,
2645
2950
  ...props
2646
2951
  }) {
2647
- return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
2952
+ return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
2648
2953
  import_dialog.Dialog.Title,
2649
2954
  {
2650
2955
  "data-slot": "dialog-title",
@@ -2657,7 +2962,7 @@ function DialogDescription({
2657
2962
  className,
2658
2963
  ...props
2659
2964
  }) {
2660
- return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
2965
+ return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
2661
2966
  import_dialog.Dialog.Description,
2662
2967
  {
2663
2968
  "data-slot": "dialog-description",
@@ -2668,7 +2973,7 @@ function DialogDescription({
2668
2973
  }
2669
2974
 
2670
2975
  // src/components/components/Dialog/index.tsx
2671
- var import_jsx_runtime47 = require("react/jsx-runtime");
2976
+ var import_jsx_runtime48 = require("react/jsx-runtime");
2672
2977
  function Dialog2({
2673
2978
  title,
2674
2979
  description,
@@ -2679,11 +2984,11 @@ function Dialog2({
2679
2984
  className,
2680
2985
  style
2681
2986
  }) {
2682
- const { renderChildren } = (0, import_runtime7.useRenderer)();
2683
- const [innerOpen, setInnerOpen] = (0, import_react11.useState)(false);
2987
+ const { renderChildren } = (0, import_runtime8.useRenderer)();
2988
+ const [innerOpen, setInnerOpen] = (0, import_react12.useState)(false);
2684
2989
  const controlled = open !== void 0;
2685
2990
  const visible = controlled ? open : innerOpen;
2686
- return /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)(
2991
+ return /* @__PURE__ */ (0, import_jsx_runtime48.jsxs)(
2687
2992
  Dialog,
2688
2993
  {
2689
2994
  open: visible,
@@ -2696,7 +3001,7 @@ function Dialog2({
2696
3001
  }
2697
3002
  },
2698
3003
  children: [
2699
- trigger ? /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
3004
+ trigger ? /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(
2700
3005
  DialogTrigger,
2701
3006
  {
2702
3007
  nativeButton: false,
@@ -2704,10 +3009,10 @@ function Dialog2({
2704
3009
  children: renderChildren([trigger])
2705
3010
  }
2706
3011
  ) : null,
2707
- /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)(DialogContent, { className, style, children: [
2708
- title || description ? /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)(DialogHeader, { children: [
2709
- title ? /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(DialogTitle, { children: title }) : null,
2710
- description ? /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(DialogDescription, { children: description }) : null
3012
+ /* @__PURE__ */ (0, import_jsx_runtime48.jsxs)(DialogContent, { className, style, children: [
3013
+ title || description ? /* @__PURE__ */ (0, import_jsx_runtime48.jsxs)(DialogHeader, { children: [
3014
+ title ? /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(DialogTitle, { children: title }) : null,
3015
+ description ? /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(DialogDescription, { children: description }) : null
2711
3016
  ] }) : null,
2712
3017
  children
2713
3018
  ] })
@@ -2718,22 +3023,22 @@ function Dialog2({
2718
3023
 
2719
3024
  // src/ui/drawer.tsx
2720
3025
  var import_vaul = require("vaul");
2721
- var import_jsx_runtime48 = require("react/jsx-runtime");
3026
+ var import_jsx_runtime49 = require("react/jsx-runtime");
2722
3027
  function Drawer({
2723
3028
  ...props
2724
3029
  }) {
2725
- return /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(import_vaul.Drawer.Root, { "data-slot": "drawer", ...props });
3030
+ return /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_vaul.Drawer.Root, { "data-slot": "drawer", ...props });
2726
3031
  }
2727
3032
  function DrawerPortal({
2728
3033
  ...props
2729
3034
  }) {
2730
- return /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(import_vaul.Drawer.Portal, { "data-slot": "drawer-portal", ...props });
3035
+ return /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_vaul.Drawer.Portal, { "data-slot": "drawer-portal", ...props });
2731
3036
  }
2732
3037
  function DrawerOverlay({
2733
3038
  className,
2734
3039
  ...props
2735
3040
  }) {
2736
- return /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(
3041
+ return /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
2737
3042
  import_vaul.Drawer.Overlay,
2738
3043
  {
2739
3044
  "data-slot": "drawer-overlay",
@@ -2747,9 +3052,9 @@ function DrawerContent({
2747
3052
  children,
2748
3053
  ...props
2749
3054
  }) {
2750
- return /* @__PURE__ */ (0, import_jsx_runtime48.jsxs)(DrawerPortal, { "data-slot": "drawer-portal", children: [
2751
- /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(DrawerOverlay, {}),
2752
- /* @__PURE__ */ (0, import_jsx_runtime48.jsxs)(
3055
+ return /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(DrawerPortal, { "data-slot": "drawer-portal", children: [
3056
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(DrawerOverlay, {}),
3057
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(
2753
3058
  import_vaul.Drawer.Content,
2754
3059
  {
2755
3060
  "data-slot": "drawer-content",
@@ -2763,7 +3068,7 @@ function DrawerContent({
2763
3068
  ),
2764
3069
  ...props,
2765
3070
  children: [
2766
- /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("div", { className: "mx-auto mt-4 hidden h-2 w-[100px] shrink-0 rounded-full bg-muted group-data-[vaul-drawer-direction=bottom]/drawer-content:block" }),
3071
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("div", { className: "mx-auto mt-4 hidden h-2 w-[100px] shrink-0 rounded-full bg-muted group-data-[vaul-drawer-direction=bottom]/drawer-content:block" }),
2767
3072
  children
2768
3073
  ]
2769
3074
  }
@@ -2771,7 +3076,7 @@ function DrawerContent({
2771
3076
  ] });
2772
3077
  }
2773
3078
  function DrawerHeader({ className, ...props }) {
2774
- return /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(
3079
+ return /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
2775
3080
  "div",
2776
3081
  {
2777
3082
  "data-slot": "drawer-header",
@@ -2784,7 +3089,7 @@ function DrawerTitle({
2784
3089
  className,
2785
3090
  ...props
2786
3091
  }) {
2787
- return /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(
3092
+ return /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
2788
3093
  import_vaul.Drawer.Title,
2789
3094
  {
2790
3095
  "data-slot": "drawer-title",
@@ -2795,7 +3100,7 @@ function DrawerTitle({
2795
3100
  }
2796
3101
 
2797
3102
  // src/components/components/Drawer/index.tsx
2798
- var import_jsx_runtime49 = require("react/jsx-runtime");
3103
+ var import_jsx_runtime50 = require("react/jsx-runtime");
2799
3104
  function Drawer2({
2800
3105
  title,
2801
3106
  open,
@@ -2805,7 +3110,7 @@ function Drawer2({
2805
3110
  className,
2806
3111
  style
2807
3112
  }) {
2808
- return /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
3113
+ return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
2809
3114
  Drawer,
2810
3115
  {
2811
3116
  direction: placement,
@@ -2815,9 +3120,9 @@ function Drawer2({
2815
3120
  onClose?.();
2816
3121
  }
2817
3122
  },
2818
- children: /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(DrawerContent, { className, style, children: [
2819
- title ? /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(DrawerHeader, { children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(DrawerTitle, { children: title }) }) : null,
2820
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("div", { className: "flex-1 overflow-auto p-4", children })
3123
+ children: /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(DrawerContent, { className, style, children: [
3124
+ title ? /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(DrawerHeader, { children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(DrawerTitle, { children: title }) }) : null,
3125
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("div", { className: "flex-1 overflow-auto p-4", children })
2821
3126
  ] })
2822
3127
  }
2823
3128
  );
@@ -2825,17 +3130,17 @@ function Drawer2({
2825
3130
 
2826
3131
  // src/ui/dropdown-menu.tsx
2827
3132
  var import_menu = require("@base-ui/react/menu");
2828
- var import_lucide_react14 = require("lucide-react");
2829
- var import_jsx_runtime50 = require("react/jsx-runtime");
3133
+ var import_lucide_react15 = require("lucide-react");
3134
+ var import_jsx_runtime51 = require("react/jsx-runtime");
2830
3135
  function DropdownMenu({
2831
3136
  ...props
2832
3137
  }) {
2833
- return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_menu.Menu.Root, { "data-slot": "dropdown-menu", ...props });
3138
+ return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_menu.Menu.Root, { "data-slot": "dropdown-menu", ...props });
2834
3139
  }
2835
3140
  function DropdownMenuTrigger({
2836
3141
  ...props
2837
3142
  }) {
2838
- return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_menu.Menu.Trigger, { "data-slot": "dropdown-menu-trigger", ...props });
3143
+ return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_menu.Menu.Trigger, { "data-slot": "dropdown-menu-trigger", ...props });
2839
3144
  }
2840
3145
  function DropdownMenuContent({
2841
3146
  className,
@@ -2844,14 +3149,14 @@ function DropdownMenuContent({
2844
3149
  sideOffset = 4,
2845
3150
  ...props
2846
3151
  }) {
2847
- return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_menu.Menu.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
3152
+ return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_menu.Menu.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
2848
3153
  import_menu.Menu.Positioner,
2849
3154
  {
2850
3155
  align,
2851
3156
  side,
2852
3157
  sideOffset,
2853
3158
  className: "isolate z-50",
2854
- children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
3159
+ children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
2855
3160
  import_menu.Menu.Popup,
2856
3161
  {
2857
3162
  "data-slot": "dropdown-menu-content",
@@ -2870,7 +3175,7 @@ function DropdownMenuItem({
2870
3175
  variant = "default",
2871
3176
  ...props
2872
3177
  }) {
2873
- return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
3178
+ return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
2874
3179
  import_menu.Menu.Item,
2875
3180
  {
2876
3181
  "data-slot": "dropdown-menu-item",
@@ -2886,14 +3191,14 @@ function DropdownMenuItem({
2886
3191
  function DropdownMenuSub({
2887
3192
  ...props
2888
3193
  }) {
2889
- return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_menu.Menu.SubmenuRoot, { "data-slot": "dropdown-menu-sub", ...props });
3194
+ return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_menu.Menu.SubmenuRoot, { "data-slot": "dropdown-menu-sub", ...props });
2890
3195
  }
2891
3196
  function DropdownMenuSubTrigger({
2892
3197
  className,
2893
3198
  children,
2894
3199
  ...props
2895
3200
  }) {
2896
- return /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(
3201
+ return /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(
2897
3202
  import_menu.Menu.SubmenuTrigger,
2898
3203
  {
2899
3204
  "data-slot": "dropdown-menu-sub-trigger",
@@ -2904,7 +3209,7 @@ function DropdownMenuSubTrigger({
2904
3209
  ...props,
2905
3210
  children: [
2906
3211
  children,
2907
- /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_lucide_react14.ChevronRightIcon, { className: "ml-auto" })
3212
+ /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react15.ChevronRightIcon, { className: "ml-auto" })
2908
3213
  ]
2909
3214
  }
2910
3215
  );
@@ -2914,7 +3219,7 @@ function DropdownMenuSubContent({
2914
3219
  sideOffset = 2,
2915
3220
  ...props
2916
3221
  }) {
2917
- return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_menu.Menu.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_menu.Menu.Positioner, { sideOffset, className: "isolate z-50", children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
3222
+ return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_menu.Menu.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_menu.Menu.Positioner, { sideOffset, className: "isolate z-50", children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
2918
3223
  import_menu.Menu.Popup,
2919
3224
  {
2920
3225
  "data-slot": "dropdown-menu-sub-content",
@@ -2928,7 +3233,7 @@ function DropdownMenuSubContent({
2928
3233
  }
2929
3234
 
2930
3235
  // src/components/components/DropdownMenu/index.tsx
2931
- var import_jsx_runtime51 = require("react/jsx-runtime");
3236
+ var import_jsx_runtime52 = require("react/jsx-runtime");
2932
3237
  function DropdownMenu2({
2933
3238
  items = [],
2934
3239
  onSelect,
@@ -2936,8 +3241,8 @@ function DropdownMenu2({
2936
3241
  className,
2937
3242
  style
2938
3243
  }) {
2939
- return /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(DropdownMenu, { children: [
2940
- /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
3244
+ return /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(DropdownMenu, { children: [
3245
+ /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
2941
3246
  DropdownMenuTrigger,
2942
3247
  {
2943
3248
  nativeButton: false,
@@ -2945,14 +3250,14 @@ function DropdownMenu2({
2945
3250
  children
2946
3251
  }
2947
3252
  ),
2948
- /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(DropdownMenuContent, { className, style, children: items.map((item) => /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(
3253
+ /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(DropdownMenuContent, { className, style, children: items.map((item) => /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(
2949
3254
  DropdownMenuItem,
2950
3255
  {
2951
3256
  variant: item.danger ? "destructive" : "default",
2952
3257
  disabled: item.disabled,
2953
3258
  onClick: () => onSelect?.(item.value),
2954
3259
  children: [
2955
- item.icon ? /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(Icon, { name: item.icon, size: "sm" }) : null,
3260
+ item.icon ? /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(Icon, { name: item.icon, size: "sm" }) : null,
2956
3261
  item.label
2957
3262
  ]
2958
3263
  },
@@ -2962,9 +3267,9 @@ function DropdownMenu2({
2962
3267
  }
2963
3268
 
2964
3269
  // src/ui/empty.tsx
2965
- var import_jsx_runtime52 = require("react/jsx-runtime");
3270
+ var import_jsx_runtime53 = require("react/jsx-runtime");
2966
3271
  function Empty({ className, ...props }) {
2967
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
3272
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
2968
3273
  "div",
2969
3274
  {
2970
3275
  "data-slot": "empty",
@@ -2977,7 +3282,7 @@ function Empty({ className, ...props }) {
2977
3282
  );
2978
3283
  }
2979
3284
  function EmptyHeader({ className, ...props }) {
2980
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
3285
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
2981
3286
  "div",
2982
3287
  {
2983
3288
  "data-slot": "empty-header",
@@ -2987,7 +3292,7 @@ function EmptyHeader({ className, ...props }) {
2987
3292
  );
2988
3293
  }
2989
3294
  function EmptyTitle({ className, ...props }) {
2990
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
3295
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
2991
3296
  "div",
2992
3297
  {
2993
3298
  "data-slot": "empty-title",
@@ -2997,7 +3302,7 @@ function EmptyTitle({ className, ...props }) {
2997
3302
  );
2998
3303
  }
2999
3304
  function EmptyDescription({ className, ...props }) {
3000
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
3305
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
3001
3306
  "p",
3002
3307
  {
3003
3308
  "data-slot": "empty-description",
@@ -3007,7 +3312,7 @@ function EmptyDescription({ className, ...props }) {
3007
3312
  );
3008
3313
  }
3009
3314
  function EmptyContent({ className, ...props }) {
3010
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
3315
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
3011
3316
  "div",
3012
3317
  {
3013
3318
  "data-slot": "empty-content",
@@ -3021,22 +3326,22 @@ function EmptyContent({ className, ...props }) {
3021
3326
  }
3022
3327
 
3023
3328
  // src/components/components/Empty/index.tsx
3024
- var import_jsx_runtime53 = require("react/jsx-runtime");
3329
+ var import_jsx_runtime54 = require("react/jsx-runtime");
3025
3330
  function Empty2({ title, description, children, className, style }) {
3026
- return /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(Empty, { className, style, children: [
3027
- /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(EmptyHeader, { children: [
3028
- title ? /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(EmptyTitle, { children: title }) : null,
3029
- description ? /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(EmptyDescription, { children: description }) : null
3331
+ return /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(Empty, { className, style, children: [
3332
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(EmptyHeader, { children: [
3333
+ title ? /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(EmptyTitle, { children: title }) : null,
3334
+ description ? /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(EmptyDescription, { children: description }) : null
3030
3335
  ] }),
3031
- children ? /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(EmptyContent, { children }) : null
3336
+ children ? /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(EmptyContent, { children }) : null
3032
3337
  ] });
3033
3338
  }
3034
3339
 
3035
3340
  // src/ui/field.tsx
3036
3341
  var import_field = require("@base-ui/react/field");
3037
- var import_jsx_runtime54 = require("react/jsx-runtime");
3342
+ var import_jsx_runtime55 = require("react/jsx-runtime");
3038
3343
  function Field({ className, ...props }) {
3039
- return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
3344
+ return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
3040
3345
  import_field.Field.Root,
3041
3346
  {
3042
3347
  "data-slot": "field",
@@ -3046,7 +3351,7 @@ function Field({ className, ...props }) {
3046
3351
  );
3047
3352
  }
3048
3353
  function FieldLabel({ className, ...props }) {
3049
- return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
3354
+ return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
3050
3355
  import_field.Field.Label,
3051
3356
  {
3052
3357
  "data-slot": "field-label",
@@ -3056,7 +3361,7 @@ function FieldLabel({ className, ...props }) {
3056
3361
  );
3057
3362
  }
3058
3363
  function FieldDescription({ className, ...props }) {
3059
- return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
3364
+ return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
3060
3365
  import_field.Field.Description,
3061
3366
  {
3062
3367
  "data-slot": "field-description",
@@ -3066,7 +3371,7 @@ function FieldDescription({ className, ...props }) {
3066
3371
  );
3067
3372
  }
3068
3373
  function FieldError({ className, ...props }) {
3069
- return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
3374
+ return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
3070
3375
  import_field.Field.Error,
3071
3376
  {
3072
3377
  "data-slot": "field-error",
@@ -3077,18 +3382,18 @@ function FieldError({ className, ...props }) {
3077
3382
  }
3078
3383
 
3079
3384
  // src/components/components/Field/index.tsx
3080
- var import_jsx_runtime55 = require("react/jsx-runtime");
3385
+ var import_jsx_runtime56 = require("react/jsx-runtime");
3081
3386
  function Field2({ label, description, error, children, className, style }) {
3082
- return /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(Field, { className, style, children: [
3083
- label ? /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(FieldLabel, { children: label }) : null,
3387
+ return /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(Field, { className, style, children: [
3388
+ label ? /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(FieldLabel, { children: label }) : null,
3084
3389
  children,
3085
- description ? /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(FieldDescription, { children: description }) : null,
3086
- error ? /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(FieldError, { match: true, children: error }) : null
3390
+ description ? /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(FieldDescription, { children: description }) : null,
3391
+ error ? /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(FieldError, { match: true, children: error }) : null
3087
3392
  ] });
3088
3393
  }
3089
3394
 
3090
3395
  // src/components/components/Flex/index.tsx
3091
- var import_jsx_runtime56 = require("react/jsx-runtime");
3396
+ var import_jsx_runtime57 = require("react/jsx-runtime");
3092
3397
  var gapClass = {
3093
3398
  small: "gap-(--flex-gap-sm)",
3094
3399
  middle: "gap-(--flex-gap-md)",
@@ -3118,7 +3423,7 @@ function Flex({
3118
3423
  style,
3119
3424
  children
3120
3425
  }) {
3121
- return /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
3426
+ return /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
3122
3427
  "div",
3123
3428
  {
3124
3429
  "data-slot": "flex",
@@ -3138,9 +3443,9 @@ function Flex({
3138
3443
  }
3139
3444
 
3140
3445
  // src/components/components/Footer/index.tsx
3141
- var import_jsx_runtime57 = require("react/jsx-runtime");
3446
+ var import_jsx_runtime58 = require("react/jsx-runtime");
3142
3447
  function Footer({ className, style, children }) {
3143
- return /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
3448
+ return /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
3144
3449
  "footer",
3145
3450
  {
3146
3451
  "data-slot": "layout-footer",
@@ -3155,9 +3460,9 @@ function Footer({ className, style, children }) {
3155
3460
  }
3156
3461
 
3157
3462
  // src/components/components/Form/index.tsx
3158
- var import_runtime8 = require("@pactor-app/runtime");
3159
- var import_react12 = require("react");
3160
- var import_jsx_runtime58 = require("react/jsx-runtime");
3463
+ var import_runtime9 = require("@pactor-app/runtime");
3464
+ var import_react13 = require("react");
3465
+ var import_jsx_runtime59 = require("react/jsx-runtime");
3161
3466
  function isEmpty(value) {
3162
3467
  return value === void 0 || value === null || value === "";
3163
3468
  }
@@ -3171,23 +3476,23 @@ function Form({
3171
3476
  onSubmit,
3172
3477
  onValuesChange
3173
3478
  }) {
3174
- const { context } = (0, import_runtime8.useRenderer)();
3175
- const [values, setValues] = (0, import_react12.useState)(() => ({
3479
+ const { context } = (0, import_runtime9.useRenderer)();
3480
+ const [values, setValues] = (0, import_react13.useState)(() => ({
3176
3481
  ...initialValues
3177
3482
  }));
3178
- const [errors, setErrors] = (0, import_react12.useState)({});
3179
- const fieldRulesRef = (0, import_react12.useRef)(/* @__PURE__ */ new Map());
3180
- const mergedInitialFieldsRef = (0, import_react12.useRef)(/* @__PURE__ */ new Set());
3181
- const setValuesBatch = (0, import_react12.useCallback)((partial) => {
3483
+ const [errors, setErrors] = (0, import_react13.useState)({});
3484
+ const fieldRulesRef = (0, import_react13.useRef)(/* @__PURE__ */ new Map());
3485
+ const mergedInitialFieldsRef = (0, import_react13.useRef)(/* @__PURE__ */ new Set());
3486
+ const setValuesBatch = (0, import_react13.useCallback)((partial) => {
3182
3487
  setValues((prev) => ({ ...prev, ...partial }));
3183
3488
  }, []);
3184
- (0, import_react12.useEffect)(() => {
3489
+ (0, import_react13.useEffect)(() => {
3185
3490
  context.forms.register(name, { setValues: setValuesBatch });
3186
3491
  return () => {
3187
3492
  context.forms.unregister(name);
3188
3493
  };
3189
3494
  }, [context, name, setValuesBatch]);
3190
- const formContext = (0, import_react12.useMemo)(
3495
+ const formContext = (0, import_react13.useMemo)(
3191
3496
  () => ({
3192
3497
  inForm: true,
3193
3498
  layout,
@@ -3238,7 +3543,7 @@ function Form({
3238
3543
  context.state.set("form", values);
3239
3544
  onSubmit?.(values);
3240
3545
  };
3241
- return /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(FormContextProvider, { value: formContext, children: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
3546
+ return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(FormContextProvider, { value: formContext, children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
3242
3547
  "form",
3243
3548
  {
3244
3549
  "data-slot": "form",
@@ -3251,11 +3556,11 @@ function Form({
3251
3556
  }
3252
3557
 
3253
3558
  // src/components/components/Grid/index.tsx
3254
- var import_react13 = require("react");
3255
- var import_jsx_runtime59 = require("react/jsx-runtime");
3559
+ var import_react14 = require("react");
3560
+ var import_jsx_runtime60 = require("react/jsx-runtime");
3256
3561
  function Grid({ columns = 1, gap, className, style, children }) {
3257
3562
  const cols = Math.max(1, columns);
3258
- return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
3563
+ return /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
3259
3564
  "div",
3260
3565
  {
3261
3566
  "data-slot": "grid",
@@ -3266,15 +3571,15 @@ function Grid({ columns = 1, gap, className, style, children }) {
3266
3571
  ...gap !== void 0 ? { gap } : {},
3267
3572
  ...style
3268
3573
  },
3269
- children: import_react13.Children.map(children, (child, index) => /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("div", { "data-slot": "grid-item", children: child }, index))
3574
+ children: import_react14.Children.map(children, (child, index) => /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("div", { "data-slot": "grid-item", children: child }, index))
3270
3575
  }
3271
3576
  );
3272
3577
  }
3273
3578
 
3274
3579
  // src/components/components/Header/index.tsx
3275
- var import_runtime9 = require("@pactor-app/runtime");
3276
- var import_lucide_react15 = require("lucide-react");
3277
- var import_jsx_runtime60 = require("react/jsx-runtime");
3580
+ var import_runtime10 = require("@pactor-app/runtime");
3581
+ var import_lucide_react16 = require("lucide-react");
3582
+ var import_jsx_runtime61 = require("react/jsx-runtime");
3278
3583
  var menuItemClass = "flex items-center gap-1 rounded-md px-3 py-2 text-sm transition-colors text-muted-foreground hover:bg-accent/50 hover:text-foreground";
3279
3584
  function Header({
3280
3585
  logo,
@@ -3305,10 +3610,10 @@ function Header({
3305
3610
  className
3306
3611
  );
3307
3612
  if (!hasBrand && !dropdown && !hasMenu && !hasUser && !hasLocales) {
3308
- return /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("header", { "data-slot": "layout-header", className: rootClass, style, children });
3613
+ return /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("header", { "data-slot": "layout-header", className: rootClass, style, children });
3309
3614
  }
3310
- const brandNode = hasBrand && /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)("div", { "data-slot": "header-brand", className: "flex items-center gap-2", children: [
3311
- logo !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
3615
+ const brandNode = hasBrand && /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)("div", { "data-slot": "header-brand", className: "flex items-center gap-2", children: [
3616
+ logo !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
3312
3617
  "img",
3313
3618
  {
3314
3619
  "data-slot": "header-brand-logo",
@@ -3317,23 +3622,23 @@ function Header({
3317
3622
  className: "h-8 w-8 shrink-0 object-contain"
3318
3623
  }
3319
3624
  ),
3320
- title !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("span", { "data-slot": "header-brand-title", className: "text-base font-semibold", children: title })
3625
+ title !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("span", { "data-slot": "header-brand-title", className: "text-base font-semibold", children: title })
3321
3626
  ] });
3322
- const dropdownNode = dropdown !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(HeaderDropdownArea, { dropdown, onSelect: onDropdownSelect });
3627
+ const dropdownNode = dropdown !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(HeaderDropdownArea, { dropdown, onSelect: onDropdownSelect });
3323
3628
  const showLeft = brandLeft || dropdownLeft || hasMenu;
3324
3629
  const showRight = dropdownRight || brandRight || hasLocales || hasUser;
3325
- return /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)("header", { "data-slot": "layout-header", className: rootClass, style, children: [
3326
- showLeft && /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)("div", { "data-slot": "header-left", className: "flex items-center gap-4", children: [
3630
+ return /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)("header", { "data-slot": "layout-header", className: rootClass, style, children: [
3631
+ showLeft && /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)("div", { "data-slot": "header-left", className: "flex items-center gap-4", children: [
3327
3632
  brandLeft && brandNode,
3328
3633
  dropdownLeft && dropdownNode,
3329
- hasMenu && /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(HeaderMenuArea, { items: menu, onSelect: onMenuSelect })
3634
+ hasMenu && /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(HeaderMenuArea, { items: menu, onSelect: onMenuSelect })
3330
3635
  ] }),
3331
- /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("div", { "data-slot": "header-center", className: "flex flex-1 items-center gap-4", children }),
3332
- showRight && /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)("div", { "data-slot": "header-right", className: "flex items-center gap-4", children: [
3636
+ /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("div", { "data-slot": "header-center", className: "flex flex-1 items-center gap-4", children }),
3637
+ showRight && /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)("div", { "data-slot": "header-right", className: "flex items-center gap-4", children: [
3333
3638
  dropdownRight && dropdownNode,
3334
3639
  brandRight && brandNode,
3335
- hasLocales && /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(HeaderLocalesArea, { locales, onSelect: onLocaleChange }),
3336
- hasUser && /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(HeaderUserArea, { user, onSelect: onUserSelect })
3640
+ hasLocales && /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(HeaderLocalesArea, { locales, onSelect: onLocaleChange }),
3641
+ hasUser && /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(HeaderUserArea, { user, onSelect: onUserSelect })
3337
3642
  ] })
3338
3643
  ] });
3339
3644
  }
@@ -3341,25 +3646,25 @@ function HeaderDropdownArea({
3341
3646
  dropdown,
3342
3647
  onSelect
3343
3648
  }) {
3344
- return /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(DropdownMenu, { children: [
3345
- /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(
3649
+ return /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(DropdownMenu, { children: [
3650
+ /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(
3346
3651
  DropdownMenuTrigger,
3347
3652
  {
3348
3653
  "data-slot": "header-dropdown",
3349
3654
  className: cn(menuItemClass, "outline-hidden cursor-pointer"),
3350
3655
  children: [
3351
3656
  dropdown.label,
3352
- /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(import_lucide_react15.ChevronDownIcon, { className: "size-3.5", "aria-hidden": "true" })
3657
+ /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_lucide_react16.ChevronDownIcon, { className: "size-3.5", "aria-hidden": "true" })
3353
3658
  ]
3354
3659
  }
3355
3660
  ),
3356
- /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(DropdownMenuContent, { children: dropdown.items.map((item) => /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(
3661
+ /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(DropdownMenuContent, { children: dropdown.items.map((item) => /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(
3357
3662
  DropdownMenuItem,
3358
3663
  {
3359
3664
  disabled: item.disabled,
3360
3665
  onClick: () => onSelect?.(item.value),
3361
3666
  children: [
3362
- item.icon ? /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(Icon, { name: item.icon, size: "sm" }) : null,
3667
+ item.icon ? /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(Icon, { name: item.icon, size: "sm" }) : null,
3363
3668
  item.label
3364
3669
  ]
3365
3670
  },
@@ -3371,23 +3676,23 @@ function HeaderMenuArea({
3371
3676
  items,
3372
3677
  onSelect
3373
3678
  }) {
3374
- return /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("nav", { "data-slot": "header-menu", className: "flex items-center gap-1", children: items.map(
3375
- (item) => item.children !== void 0 && item.children.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(DropdownMenu, { children: [
3376
- /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(
3679
+ return /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("nav", { "data-slot": "header-menu", className: "flex items-center gap-1", children: items.map(
3680
+ (item) => item.children !== void 0 && item.children.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(DropdownMenu, { children: [
3681
+ /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(
3377
3682
  DropdownMenuTrigger,
3378
3683
  {
3379
3684
  "data-slot": "header-menu-item",
3380
3685
  "data-key": item.key,
3381
3686
  className: cn(menuItemClass, "outline-hidden cursor-pointer"),
3382
3687
  children: [
3383
- item.icon ? /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(Icon, { name: item.icon, size: "sm" }) : null,
3688
+ item.icon ? /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(Icon, { name: item.icon, size: "sm" }) : null,
3384
3689
  item.label,
3385
- /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(import_lucide_react15.ChevronDownIcon, { className: "size-3.5", "aria-hidden": "true" })
3690
+ /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_lucide_react16.ChevronDownIcon, { className: "size-3.5", "aria-hidden": "true" })
3386
3691
  ]
3387
3692
  }
3388
3693
  ),
3389
- /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(DropdownMenuContent, { children: item.children.map((child) => /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(HeaderMenuEntry, { item: child, onSelect }, child.key)) })
3390
- ] }, item.key) : /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(
3694
+ /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(DropdownMenuContent, { children: item.children.map((child) => /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(HeaderMenuEntry, { item: child, onSelect }, child.key)) })
3695
+ ] }, item.key) : /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(
3391
3696
  "button",
3392
3697
  {
3393
3698
  type: "button",
@@ -3396,7 +3701,7 @@ function HeaderMenuArea({
3396
3701
  className: menuItemClass,
3397
3702
  onClick: () => onSelect?.(item.key),
3398
3703
  children: [
3399
- item.icon ? /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(Icon, { name: item.icon, size: "sm" }) : null,
3704
+ item.icon ? /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(Icon, { name: item.icon, size: "sm" }) : null,
3400
3705
  item.label
3401
3706
  ]
3402
3707
  },
@@ -3409,16 +3714,16 @@ function HeaderMenuEntry({
3409
3714
  onSelect
3410
3715
  }) {
3411
3716
  if (item.children !== void 0 && item.children.length > 0) {
3412
- return /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(DropdownMenuSub, { children: [
3413
- /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(DropdownMenuSubTrigger, { "data-key": item.key, className: "cursor-pointer", children: [
3414
- item.icon ? /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(Icon, { name: item.icon, size: "sm" }) : null,
3717
+ return /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(DropdownMenuSub, { children: [
3718
+ /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(DropdownMenuSubTrigger, { "data-key": item.key, className: "cursor-pointer", children: [
3719
+ item.icon ? /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(Icon, { name: item.icon, size: "sm" }) : null,
3415
3720
  item.label
3416
3721
  ] }),
3417
- /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(DropdownMenuSubContent, { children: item.children.map((child) => /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(HeaderMenuEntry, { item: child, onSelect }, child.key)) })
3722
+ /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(DropdownMenuSubContent, { children: item.children.map((child) => /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(HeaderMenuEntry, { item: child, onSelect }, child.key)) })
3418
3723
  ] });
3419
3724
  }
3420
- return /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(DropdownMenuItem, { "data-key": item.key, onClick: () => onSelect?.(item.key), children: [
3421
- item.icon ? /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(Icon, { name: item.icon, size: "sm" }) : null,
3725
+ return /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(DropdownMenuItem, { "data-key": item.key, onClick: () => onSelect?.(item.key), children: [
3726
+ item.icon ? /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(Icon, { name: item.icon, size: "sm" }) : null,
3422
3727
  item.label
3423
3728
  ] });
3424
3729
  }
@@ -3426,18 +3731,18 @@ function HeaderUserArea({
3426
3731
  user,
3427
3732
  onSelect
3428
3733
  }) {
3429
- const identity = /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(import_jsx_runtime60.Fragment, { children: [
3430
- /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(Avatar, { className: "size-7", children: [
3431
- user.avatar !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(AvatarImage, { src: user.avatar, alt: user.name }),
3432
- /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(AvatarFallback, { children: user.name.charAt(0) })
3734
+ const identity = /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(import_jsx_runtime61.Fragment, { children: [
3735
+ /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(Avatar, { className: "size-7", children: [
3736
+ user.avatar !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(AvatarImage, { src: user.avatar, alt: user.name }),
3737
+ /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(AvatarFallback, { children: user.name.charAt(0) })
3433
3738
  ] }),
3434
- /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("span", { className: "text-sm", children: user.name })
3739
+ /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("span", { className: "text-sm", children: user.name })
3435
3740
  ] });
3436
3741
  if (user.items === void 0 || user.items.length === 0) {
3437
- return /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("div", { "data-slot": "header-user", className: "flex items-center gap-2", children: identity });
3742
+ return /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("div", { "data-slot": "header-user", className: "flex items-center gap-2", children: identity });
3438
3743
  }
3439
- return /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(DropdownMenu, { children: [
3440
- /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
3744
+ return /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(DropdownMenu, { children: [
3745
+ /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
3441
3746
  DropdownMenuTrigger,
3442
3747
  {
3443
3748
  "data-slot": "header-user",
@@ -3445,8 +3750,8 @@ function HeaderUserArea({
3445
3750
  children: identity
3446
3751
  }
3447
3752
  ),
3448
- /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(DropdownMenuContent, { align: "end", children: user.items.map((item) => /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(DropdownMenuItem, { onClick: () => onSelect?.(item.value), children: [
3449
- item.icon ? /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(Icon, { name: item.icon, size: "sm" }) : null,
3753
+ /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(DropdownMenuContent, { align: "end", children: user.items.map((item) => /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(DropdownMenuItem, { onClick: () => onSelect?.(item.value), children: [
3754
+ item.icon ? /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(Icon, { name: item.icon, size: "sm" }) : null,
3450
3755
  item.label
3451
3756
  ] }, item.value)) })
3452
3757
  ] });
@@ -3455,21 +3760,21 @@ function HeaderLocalesArea({
3455
3760
  locales,
3456
3761
  onSelect
3457
3762
  }) {
3458
- const { locale } = (0, import_runtime9.useI18n)();
3763
+ const { locale } = (0, import_runtime10.useI18n)();
3459
3764
  const current = locales.find((option) => option.value === locale);
3460
- return /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(DropdownMenu, { children: [
3461
- /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(
3765
+ return /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(DropdownMenu, { children: [
3766
+ /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(
3462
3767
  DropdownMenuTrigger,
3463
3768
  {
3464
3769
  "data-slot": "header-locales",
3465
3770
  className: cn(menuItemClass, "outline-hidden cursor-pointer"),
3466
3771
  children: [
3467
3772
  current?.label ?? locale,
3468
- /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(import_lucide_react15.ChevronDownIcon, { className: "size-3.5", "aria-hidden": "true" })
3773
+ /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_lucide_react16.ChevronDownIcon, { className: "size-3.5", "aria-hidden": "true" })
3469
3774
  ]
3470
3775
  }
3471
3776
  ),
3472
- /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(DropdownMenuContent, { align: "end", children: locales.map((option) => /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
3777
+ /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(DropdownMenuContent, { align: "end", children: locales.map((option) => /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
3473
3778
  DropdownMenuItem,
3474
3779
  {
3475
3780
  onClick: () => onSelect?.(option.value),
@@ -3481,20 +3786,20 @@ function HeaderLocalesArea({
3481
3786
  }
3482
3787
 
3483
3788
  // src/components/components/HoverCard/index.tsx
3484
- var import_runtime10 = require("@pactor-app/runtime");
3789
+ var import_runtime11 = require("@pactor-app/runtime");
3485
3790
 
3486
3791
  // src/ui/hover-card.tsx
3487
3792
  var import_preview_card = require("@base-ui/react/preview-card");
3488
- var import_jsx_runtime61 = require("react/jsx-runtime");
3793
+ var import_jsx_runtime62 = require("react/jsx-runtime");
3489
3794
  function HoverCard({
3490
3795
  ...props
3491
3796
  }) {
3492
- return /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_preview_card.PreviewCard.Root, { "data-slot": "hover-card", ...props });
3797
+ return /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_preview_card.PreviewCard.Root, { "data-slot": "hover-card", ...props });
3493
3798
  }
3494
3799
  function HoverCardTrigger({
3495
3800
  ...props
3496
3801
  }) {
3497
- return /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_preview_card.PreviewCard.Trigger, { "data-slot": "hover-card-trigger", ...props });
3802
+ return /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_preview_card.PreviewCard.Trigger, { "data-slot": "hover-card-trigger", ...props });
3498
3803
  }
3499
3804
  function HoverCardContent({
3500
3805
  className,
@@ -3503,14 +3808,14 @@ function HoverCardContent({
3503
3808
  sideOffset = 4,
3504
3809
  ...props
3505
3810
  }) {
3506
- return /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_preview_card.PreviewCard.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
3811
+ return /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_preview_card.PreviewCard.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
3507
3812
  import_preview_card.PreviewCard.Positioner,
3508
3813
  {
3509
3814
  align,
3510
3815
  side,
3511
3816
  sideOffset,
3512
3817
  className: "isolate z-50",
3513
- children: /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
3818
+ children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
3514
3819
  import_preview_card.PreviewCard.Popup,
3515
3820
  {
3516
3821
  "data-slot": "hover-card-content",
@@ -3526,21 +3831,21 @@ function HoverCardContent({
3526
3831
  }
3527
3832
 
3528
3833
  // src/components/components/HoverCard/index.tsx
3529
- var import_jsx_runtime62 = require("react/jsx-runtime");
3834
+ var import_jsx_runtime63 = require("react/jsx-runtime");
3530
3835
  function isDslNode2(value) {
3531
3836
  return typeof value === "object" && value !== null && typeof value.type === "string";
3532
3837
  }
3533
3838
  function HoverCard2({ content, children, className, style }) {
3534
- const { renderChildren } = (0, import_runtime10.useRenderer)();
3535
- return /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(HoverCard, { children: [
3536
- /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(HoverCardTrigger, { render: triggerWrapper("hover-card-trigger-wrap"), children }),
3537
- /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(HoverCardContent, { className, style, children: isDslNode2(content) ? renderChildren([content]) : content })
3839
+ const { renderChildren } = (0, import_runtime11.useRenderer)();
3840
+ return /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(HoverCard, { children: [
3841
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(HoverCardTrigger, { render: triggerWrapper("hover-card-trigger-wrap"), children }),
3842
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(HoverCardContent, { className, style, children: isDslNode2(content) ? renderChildren([content]) : content })
3538
3843
  ] });
3539
3844
  }
3540
3845
 
3541
3846
  // src/components/components/Input/index.tsx
3542
- var import_react14 = require("react");
3543
- var import_jsx_runtime63 = require("react/jsx-runtime");
3847
+ var import_react15 = require("react");
3848
+ var import_jsx_runtime64 = require("react/jsx-runtime");
3544
3849
  function Input2({
3545
3850
  name,
3546
3851
  label,
@@ -3554,9 +3859,9 @@ function Input2({
3554
3859
  style
3555
3860
  }) {
3556
3861
  const form = useFormContext();
3557
- const controlId = (0, import_react14.useId)();
3862
+ const controlId = (0, import_react15.useId)();
3558
3863
  const inForm = form?.inForm === true && typeof name === "string" && name !== "";
3559
- (0, import_react14.useEffect)(() => {
3864
+ (0, import_react15.useEffect)(() => {
3560
3865
  if (inForm && form && name) {
3561
3866
  form.registerField(name, rules, value);
3562
3867
  return () => form.unregisterField(name);
@@ -3566,14 +3871,14 @@ function Input2({
3566
3871
  if (inForm && form && name) {
3567
3872
  const fieldValue = form.values[name];
3568
3873
  const error = form.errors[name];
3569
- return /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(
3874
+ return /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(
3570
3875
  "div",
3571
3876
  {
3572
3877
  "data-slot": "form-item",
3573
3878
  className: cn(formItemClass(form.layout), className),
3574
3879
  style,
3575
3880
  children: [
3576
- label ? /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
3881
+ label ? /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
3577
3882
  "label",
3578
3883
  {
3579
3884
  htmlFor: controlId,
@@ -3581,7 +3886,7 @@ function Input2({
3581
3886
  children: label
3582
3887
  }
3583
3888
  ) : null,
3584
- /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
3889
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
3585
3890
  Input,
3586
3891
  {
3587
3892
  id: controlId,
@@ -3595,12 +3900,12 @@ function Input2({
3595
3900
  }
3596
3901
  }
3597
3902
  ),
3598
- error ? /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { "data-slot": "form-error", className: "text-sm text-destructive", children: error }) : null
3903
+ error ? /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("div", { "data-slot": "form-error", className: "text-sm text-destructive", children: error }) : null
3599
3904
  ]
3600
3905
  }
3601
3906
  );
3602
3907
  }
3603
- return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
3908
+ return /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
3604
3909
  Input,
3605
3910
  {
3606
3911
  type,
@@ -3615,9 +3920,9 @@ function Input2({
3615
3920
  }
3616
3921
 
3617
3922
  // src/ui/input-group.tsx
3618
- var import_jsx_runtime64 = require("react/jsx-runtime");
3923
+ var import_jsx_runtime65 = require("react/jsx-runtime");
3619
3924
  function InputGroup({ className, ...props }) {
3620
- return /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
3925
+ return /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
3621
3926
  "div",
3622
3927
  {
3623
3928
  "data-slot": "input-group",
@@ -3636,25 +3941,25 @@ function InputGroup({ className, ...props }) {
3636
3941
  }
3637
3942
 
3638
3943
  // src/components/components/InputGroup/index.tsx
3639
- var import_jsx_runtime65 = require("react/jsx-runtime");
3944
+ var import_jsx_runtime66 = require("react/jsx-runtime");
3640
3945
  function InputGroup2({ className, style, children }) {
3641
- return /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(InputGroup, { className, style, children });
3946
+ return /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(InputGroup, { className, style, children });
3642
3947
  }
3643
3948
 
3644
3949
  // src/components/components/InputOTP/index.tsx
3645
- var import_react15 = require("react");
3950
+ var import_react16 = require("react");
3646
3951
 
3647
3952
  // src/ui/input-otp.tsx
3648
3953
  var import_input_otp = require("input-otp");
3649
- var import_lucide_react16 = require("lucide-react");
3954
+ var import_lucide_react17 = require("lucide-react");
3650
3955
  var React3 = __toESM(require("react"), 1);
3651
- var import_jsx_runtime66 = require("react/jsx-runtime");
3956
+ var import_jsx_runtime67 = require("react/jsx-runtime");
3652
3957
  function InputOTP({
3653
3958
  className,
3654
3959
  containerClassName,
3655
3960
  ...props
3656
3961
  }) {
3657
- return /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
3962
+ return /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
3658
3963
  import_input_otp.OTPInput,
3659
3964
  {
3660
3965
  "data-slot": "input-otp",
@@ -3668,7 +3973,7 @@ function InputOTP({
3668
3973
  );
3669
3974
  }
3670
3975
  function InputOTPGroup({ className, ...props }) {
3671
- return /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
3976
+ return /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
3672
3977
  "div",
3673
3978
  {
3674
3979
  "data-slot": "input-otp-group",
@@ -3684,7 +3989,7 @@ function InputOTPSlot({
3684
3989
  }) {
3685
3990
  const inputOTPContext = React3.useContext(import_input_otp.OTPInputContext);
3686
3991
  const { char, hasFakeCaret, isActive } = inputOTPContext?.slots[index] ?? {};
3687
- return /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(
3992
+ return /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(
3688
3993
  "div",
3689
3994
  {
3690
3995
  "data-slot": "input-otp-slot",
@@ -3696,14 +4001,14 @@ function InputOTPSlot({
3696
4001
  ...props,
3697
4002
  children: [
3698
4003
  char,
3699
- hasFakeCaret ? /* @__PURE__ */ (0, import_jsx_runtime66.jsx)("div", { className: "pointer-events-none absolute inset-0 flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)("div", { className: "h-4 w-px animate-caret-blink bg-foreground duration-1000" }) }) : null
4004
+ hasFakeCaret ? /* @__PURE__ */ (0, import_jsx_runtime67.jsx)("div", { className: "pointer-events-none absolute inset-0 flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)("div", { className: "h-4 w-px animate-caret-blink bg-foreground duration-1000" }) }) : null
3700
4005
  ]
3701
4006
  }
3702
4007
  );
3703
4008
  }
3704
4009
 
3705
4010
  // src/components/components/InputOTP/index.tsx
3706
- var import_jsx_runtime67 = require("react/jsx-runtime");
4011
+ var import_jsx_runtime68 = require("react/jsx-runtime");
3707
4012
  function InputOTP2({
3708
4013
  name,
3709
4014
  label,
@@ -3718,15 +4023,15 @@ function InputOTP2({
3718
4023
  }) {
3719
4024
  const form = useFormContext();
3720
4025
  const inForm = form?.inForm === true && typeof name === "string" && name !== "";
3721
- (0, import_react15.useEffect)(() => {
4026
+ (0, import_react16.useEffect)(() => {
3722
4027
  if (inForm && form && name) {
3723
4028
  form.registerField(name, rules, value);
3724
4029
  return () => form.unregisterField(name);
3725
4030
  }
3726
4031
  return void 0;
3727
4032
  });
3728
- const [innerValue, setInnerValue] = (0, import_react15.useState)(typeof value === "string" ? value : "");
3729
- (0, import_react15.useEffect)(() => {
4033
+ const [innerValue, setInnerValue] = (0, import_react16.useState)(typeof value === "string" ? value : "");
4034
+ (0, import_react16.useEffect)(() => {
3730
4035
  if (!inForm) setInnerValue(typeof value === "string" ? value : "");
3731
4036
  }, [inForm, value]);
3732
4037
  const current = inForm && form && name ? typeof form.values[name] === "string" ? form.values[name] : "" : innerValue;
@@ -3741,42 +4046,42 @@ function InputOTP2({
3741
4046
  onComplete?.(next);
3742
4047
  }
3743
4048
  };
3744
- const control = /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
4049
+ const control = /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
3745
4050
  InputOTP,
3746
4051
  {
3747
4052
  maxLength: length,
3748
4053
  value: current,
3749
4054
  onChange: handleChange,
3750
4055
  disabled,
3751
- children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(InputOTPGroup, { children: Array.from({ length }, (_, index) => /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(InputOTPSlot, { index }, index)) })
4056
+ children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(InputOTPGroup, { children: Array.from({ length }, (_, index) => /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(InputOTPSlot, { index }, index)) })
3752
4057
  }
3753
4058
  );
3754
4059
  if (inForm && form && name) {
3755
4060
  const error = form.errors[name];
3756
- return /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(
4061
+ return /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)(
3757
4062
  "div",
3758
4063
  {
3759
4064
  "data-slot": "form-item",
3760
4065
  className: cn(formItemClass(form.layout), className),
3761
4066
  style,
3762
4067
  children: [
3763
- label ? /* @__PURE__ */ (0, import_jsx_runtime67.jsx)("label", { className: "shrink-0 text-sm leading-none font-medium whitespace-nowrap", children: label }) : null,
4068
+ label ? /* @__PURE__ */ (0, import_jsx_runtime68.jsx)("label", { className: "shrink-0 text-sm leading-none font-medium whitespace-nowrap", children: label }) : null,
3764
4069
  control,
3765
- error ? /* @__PURE__ */ (0, import_jsx_runtime67.jsx)("div", { "data-slot": "form-error", className: "text-sm text-destructive", children: error }) : null
4070
+ error ? /* @__PURE__ */ (0, import_jsx_runtime68.jsx)("div", { "data-slot": "form-error", className: "text-sm text-destructive", children: error }) : null
3766
4071
  ]
3767
4072
  }
3768
4073
  );
3769
4074
  }
3770
- return /* @__PURE__ */ (0, import_jsx_runtime67.jsx)("div", { "data-slot": "input-otp-field", className: cn("inline-block", className), style, children: control });
4075
+ return /* @__PURE__ */ (0, import_jsx_runtime68.jsx)("div", { "data-slot": "input-otp-field", className: cn("inline-block", className), style, children: control });
3771
4076
  }
3772
4077
 
3773
4078
  // src/components/components/Item/index.tsx
3774
- var import_runtime11 = require("@pactor-app/runtime");
4079
+ var import_runtime12 = require("@pactor-app/runtime");
3775
4080
 
3776
4081
  // src/ui/item.tsx
3777
- var import_jsx_runtime68 = require("react/jsx-runtime");
4082
+ var import_jsx_runtime69 = require("react/jsx-runtime");
3778
4083
  function Item({ className, ...props }) {
3779
- return /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
4084
+ return /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
3780
4085
  "div",
3781
4086
  {
3782
4087
  "data-slot": "item",
@@ -3789,7 +4094,7 @@ function Item({ className, ...props }) {
3789
4094
  );
3790
4095
  }
3791
4096
  function ItemMedia({ className, ...props }) {
3792
- return /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
4097
+ return /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
3793
4098
  "div",
3794
4099
  {
3795
4100
  "data-slot": "item-media",
@@ -3802,7 +4107,7 @@ function ItemMedia({ className, ...props }) {
3802
4107
  );
3803
4108
  }
3804
4109
  function ItemContent({ className, ...props }) {
3805
- return /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
4110
+ return /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
3806
4111
  "div",
3807
4112
  {
3808
4113
  "data-slot": "item-content",
@@ -3812,7 +4117,7 @@ function ItemContent({ className, ...props }) {
3812
4117
  );
3813
4118
  }
3814
4119
  function ItemTitle({ className, ...props }) {
3815
- return /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
4120
+ return /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
3816
4121
  "div",
3817
4122
  {
3818
4123
  "data-slot": "item-title",
@@ -3822,7 +4127,7 @@ function ItemTitle({ className, ...props }) {
3822
4127
  );
3823
4128
  }
3824
4129
  function ItemDescription({ className, ...props }) {
3825
- return /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
4130
+ return /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
3826
4131
  "p",
3827
4132
  {
3828
4133
  "data-slot": "item-description",
@@ -3832,7 +4137,7 @@ function ItemDescription({ className, ...props }) {
3832
4137
  );
3833
4138
  }
3834
4139
  function ItemActions({ className, ...props }) {
3835
- return /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
4140
+ return /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
3836
4141
  "div",
3837
4142
  {
3838
4143
  "data-slot": "item-actions",
@@ -3843,7 +4148,7 @@ function ItemActions({ className, ...props }) {
3843
4148
  }
3844
4149
 
3845
4150
  // src/components/components/Item/index.tsx
3846
- var import_jsx_runtime69 = require("react/jsx-runtime");
4151
+ var import_jsx_runtime70 = require("react/jsx-runtime");
3847
4152
  function Item2({
3848
4153
  title,
3849
4154
  description,
@@ -3852,22 +4157,22 @@ function Item2({
3852
4157
  className,
3853
4158
  style
3854
4159
  }) {
3855
- const { renderChildren } = (0, import_runtime11.useRenderer)();
4160
+ const { renderChildren } = (0, import_runtime12.useRenderer)();
3856
4161
  const mediaNodes = media === void 0 ? [] : Array.isArray(media) ? media : [media];
3857
- return /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)(Item, { className, style, children: [
3858
- mediaNodes.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(ItemMedia, { children: renderChildren(mediaNodes) }) : null,
3859
- /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)(ItemContent, { children: [
3860
- title ? /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(ItemTitle, { children: title }) : null,
3861
- description ? /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(ItemDescription, { children: description }) : null
4162
+ return /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)(Item, { className, style, children: [
4163
+ mediaNodes.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(ItemMedia, { children: renderChildren(mediaNodes) }) : null,
4164
+ /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)(ItemContent, { children: [
4165
+ title ? /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(ItemTitle, { children: title }) : null,
4166
+ description ? /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(ItemDescription, { children: description }) : null
3862
4167
  ] }),
3863
- actions && actions.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(ItemActions, { children: renderChildren(actions) }) : null
4168
+ actions && actions.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(ItemActions, { children: renderChildren(actions) }) : null
3864
4169
  ] });
3865
4170
  }
3866
4171
 
3867
4172
  // src/ui/kbd.tsx
3868
- var import_jsx_runtime70 = require("react/jsx-runtime");
4173
+ var import_jsx_runtime71 = require("react/jsx-runtime");
3869
4174
  function Kbd({ className, ...props }) {
3870
- return /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
4175
+ return /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(
3871
4176
  "kbd",
3872
4177
  {
3873
4178
  "data-slot": "kbd",
@@ -3881,18 +4186,18 @@ function Kbd({ className, ...props }) {
3881
4186
  }
3882
4187
 
3883
4188
  // src/components/components/Kbd/index.tsx
3884
- var import_jsx_runtime71 = require("react/jsx-runtime");
4189
+ var import_jsx_runtime72 = require("react/jsx-runtime");
3885
4190
  function Kbd2({ text, className, style }) {
3886
- return /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(Kbd, { className, style, children: text });
4191
+ return /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(Kbd, { className, style, children: text });
3887
4192
  }
3888
4193
 
3889
4194
  // src/ui/label.tsx
3890
- var import_jsx_runtime72 = require("react/jsx-runtime");
4195
+ var import_jsx_runtime73 = require("react/jsx-runtime");
3891
4196
  function Label({
3892
4197
  className,
3893
4198
  ...props
3894
4199
  }) {
3895
- return /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(
4200
+ return /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(
3896
4201
  "label",
3897
4202
  {
3898
4203
  "data-slot": "label",
@@ -3906,22 +4211,22 @@ function Label({
3906
4211
  }
3907
4212
 
3908
4213
  // src/components/components/Label/index.tsx
3909
- var import_jsx_runtime73 = require("react/jsx-runtime");
4214
+ var import_jsx_runtime74 = require("react/jsx-runtime");
3910
4215
  function Label2({ text, htmlFor, className, style }) {
3911
- return /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(Label, { htmlFor, className, style, children: text });
4216
+ return /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(Label, { htmlFor, className, style, children: text });
3912
4217
  }
3913
4218
 
3914
4219
  // src/components/components/Layout/index.tsx
3915
4220
  var import_core = require("@pactor-app/core");
3916
- var import_runtime12 = require("@pactor-app/runtime");
3917
- var import_jsx_runtime74 = require("react/jsx-runtime");
4221
+ var import_runtime13 = require("@pactor-app/runtime");
4222
+ var import_jsx_runtime75 = require("react/jsx-runtime");
3918
4223
  function Layout({ direction, className, style, dslChildren }) {
3919
- const { renderChildren, context } = (0, import_runtime12.useRenderer)();
4224
+ const { renderChildren, context } = (0, import_runtime13.useRenderer)();
3920
4225
  const hasSider = Array.isArray(dslChildren) ? dslChildren.some(
3921
4226
  (child) => !(0, import_core.isDslSourceRef)(child) && resolveRootType(child, context) === "Sider"
3922
4227
  ) : false;
3923
4228
  const dir = direction ?? (hasSider ? "horizontal" : "vertical");
3924
- return /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(
4229
+ return /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(
3925
4230
  "div",
3926
4231
  {
3927
4232
  "data-slot": "layout",
@@ -3945,9 +4250,9 @@ function resolveRootType(node, context) {
3945
4250
  }
3946
4251
 
3947
4252
  // src/components/components/Link/index.tsx
3948
- var import_jsx_runtime75 = require("react/jsx-runtime");
4253
+ var import_jsx_runtime76 = require("react/jsx-runtime");
3949
4254
  function Link2({ href, text, target, className, style, children }) {
3950
- return /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(
4255
+ return /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(
3951
4256
  "a",
3952
4257
  {
3953
4258
  "data-slot": "link",
@@ -3961,14 +4266,17 @@ function Link2({ href, text, target, className, style, children }) {
3961
4266
  );
3962
4267
  }
3963
4268
 
4269
+ // src/components/components/Menu/index.tsx
4270
+ var import_react19 = require("react");
4271
+
3964
4272
  // src/ui/tooltip.tsx
3965
4273
  var import_tooltip = require("@base-ui/react/tooltip");
3966
- var import_jsx_runtime76 = require("react/jsx-runtime");
4274
+ var import_jsx_runtime77 = require("react/jsx-runtime");
3967
4275
  function TooltipProvider({
3968
4276
  delay = 0,
3969
4277
  ...props
3970
4278
  }) {
3971
- return /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(
4279
+ return /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(
3972
4280
  import_tooltip.Tooltip.Provider,
3973
4281
  {
3974
4282
  "data-slot": "tooltip-provider",
@@ -3980,12 +4288,12 @@ function TooltipProvider({
3980
4288
  function Tooltip2({
3981
4289
  ...props
3982
4290
  }) {
3983
- return /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(TooltipProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(import_tooltip.Tooltip.Root, { "data-slot": "tooltip", ...props }) });
4291
+ return /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(TooltipProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(import_tooltip.Tooltip.Root, { "data-slot": "tooltip", ...props }) });
3984
4292
  }
3985
4293
  function TooltipTrigger({
3986
4294
  ...props
3987
4295
  }) {
3988
- return /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(import_tooltip.Tooltip.Trigger, { "data-slot": "tooltip-trigger", ...props });
4296
+ return /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(import_tooltip.Tooltip.Trigger, { "data-slot": "tooltip-trigger", ...props });
3989
4297
  }
3990
4298
  function TooltipContent({
3991
4299
  className,
@@ -3995,14 +4303,14 @@ function TooltipContent({
3995
4303
  children,
3996
4304
  ...props
3997
4305
  }) {
3998
- return /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(import_tooltip.Tooltip.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(
4306
+ return /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(import_tooltip.Tooltip.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(
3999
4307
  import_tooltip.Tooltip.Positioner,
4000
4308
  {
4001
4309
  align,
4002
4310
  side,
4003
4311
  sideOffset,
4004
4312
  className: "isolate z-50",
4005
- children: /* @__PURE__ */ (0, import_jsx_runtime76.jsxs)(
4313
+ children: /* @__PURE__ */ (0, import_jsx_runtime77.jsxs)(
4006
4314
  import_tooltip.Tooltip.Popup,
4007
4315
  {
4008
4316
  "data-slot": "tooltip-content",
@@ -4013,7 +4321,7 @@ function TooltipContent({
4013
4321
  ...props,
4014
4322
  children: [
4015
4323
  children,
4016
- /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(import_tooltip.Tooltip.Arrow, { className: "z-50 size-2.5 rotate-45 rounded-[2px] bg-primary fill-primary data-[side=top]:-bottom-1 data-[side=bottom]:-top-1 data-[side=left]:-right-1 data-[side=right]:-left-1" })
4324
+ /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(import_tooltip.Tooltip.Arrow, { className: "z-50 size-2.5 rotate-45 rounded-[2px] bg-primary fill-primary data-[side=top]:-bottom-1 data-[side=bottom]:-top-1 data-[side=left]:-right-1 data-[side=right]:-left-1" })
4017
4325
  ]
4018
4326
  }
4019
4327
  )
@@ -4022,34 +4330,34 @@ function TooltipContent({
4022
4330
  }
4023
4331
 
4024
4332
  // src/components/components/Sidebar/rail-tooltip.tsx
4025
- var import_jsx_runtime77 = require("react/jsx-runtime");
4333
+ var import_jsx_runtime78 = require("react/jsx-runtime");
4026
4334
  function RailTooltip({
4027
4335
  label,
4028
4336
  children
4029
4337
  }) {
4030
- return /* @__PURE__ */ (0, import_jsx_runtime77.jsxs)(Tooltip2, { children: [
4031
- /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(TooltipTrigger, { render: children }),
4032
- /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(TooltipContent, { side: "right", sideOffset: 8, children: label })
4338
+ return /* @__PURE__ */ (0, import_jsx_runtime78.jsxs)(Tooltip2, { children: [
4339
+ /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(TooltipTrigger, { render: children }),
4340
+ /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(TooltipContent, { side: "right", sideOffset: 8, children: label })
4033
4341
  ] });
4034
4342
  }
4035
4343
 
4036
4344
  // src/components/components/Sidebar/index.tsx
4037
- var import_runtime13 = require("@pactor-app/runtime");
4038
- var import_react17 = require("react");
4345
+ var import_runtime14 = require("@pactor-app/runtime");
4346
+ var import_react18 = require("react");
4039
4347
 
4040
4348
  // src/ui/sidebar.tsx
4041
4349
  var React4 = __toESM(require("react"), 1);
4042
4350
  var import_class_variance_authority5 = require("class-variance-authority");
4043
- var import_lucide_react18 = require("lucide-react");
4351
+ var import_lucide_react19 = require("lucide-react");
4044
4352
 
4045
4353
  // src/hooks/use-mobile.ts
4046
- var import_react16 = require("react");
4354
+ var import_react17 = require("react");
4047
4355
  var MOBILE_MEDIA_QUERY = "(max-width: 767px)";
4048
4356
  function useIsMobile() {
4049
- const [isMobile, setIsMobile] = (0, import_react16.useState)(
4357
+ const [isMobile, setIsMobile] = (0, import_react17.useState)(
4050
4358
  () => typeof window !== "undefined" && typeof window.matchMedia === "function" && window.matchMedia(MOBILE_MEDIA_QUERY).matches
4051
4359
  );
4052
- (0, import_react16.useEffect)(() => {
4360
+ (0, import_react17.useEffect)(() => {
4053
4361
  if (typeof window.matchMedia !== "function") {
4054
4362
  return;
4055
4363
  }
@@ -4066,14 +4374,14 @@ function useIsMobile() {
4066
4374
 
4067
4375
  // src/ui/separator.tsx
4068
4376
  var import_separator = require("@base-ui/react/separator");
4069
- var import_jsx_runtime78 = require("react/jsx-runtime");
4377
+ var import_jsx_runtime79 = require("react/jsx-runtime");
4070
4378
  function Separator({
4071
4379
  className,
4072
4380
  orientation = "horizontal",
4073
4381
  decorative: _decorative,
4074
4382
  ...props
4075
4383
  }) {
4076
- return /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(
4384
+ return /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(
4077
4385
  import_separator.Separator,
4078
4386
  {
4079
4387
  "data-slot": "separator",
@@ -4089,24 +4397,24 @@ function Separator({
4089
4397
 
4090
4398
  // src/ui/sheet.tsx
4091
4399
  var import_dialog3 = require("@base-ui/react/dialog");
4092
- var import_lucide_react17 = require("lucide-react");
4400
+ var import_lucide_react18 = require("lucide-react");
4093
4401
  var import_class_variance_authority4 = require("class-variance-authority");
4094
- var import_jsx_runtime79 = require("react/jsx-runtime");
4402
+ var import_jsx_runtime80 = require("react/jsx-runtime");
4095
4403
  function Sheet({
4096
4404
  ...props
4097
4405
  }) {
4098
- return /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(import_dialog3.Dialog.Root, { "data-slot": "sheet", ...props });
4406
+ return /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(import_dialog3.Dialog.Root, { "data-slot": "sheet", ...props });
4099
4407
  }
4100
4408
  function SheetPortal({
4101
4409
  ...props
4102
4410
  }) {
4103
- return /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(import_dialog3.Dialog.Portal, { "data-slot": "sheet-portal", ...props });
4411
+ return /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(import_dialog3.Dialog.Portal, { "data-slot": "sheet-portal", ...props });
4104
4412
  }
4105
4413
  function SheetOverlay({
4106
4414
  className,
4107
4415
  ...props
4108
4416
  }) {
4109
- return /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(
4417
+ return /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(
4110
4418
  import_dialog3.Dialog.Backdrop,
4111
4419
  {
4112
4420
  "data-slot": "sheet-overlay",
@@ -4140,9 +4448,9 @@ function SheetContent({
4140
4448
  side = "right",
4141
4449
  ...props
4142
4450
  }) {
4143
- return /* @__PURE__ */ (0, import_jsx_runtime79.jsxs)(SheetPortal, { "data-slot": "sheet-portal", children: [
4144
- /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(SheetOverlay, {}),
4145
- /* @__PURE__ */ (0, import_jsx_runtime79.jsxs)(
4451
+ return /* @__PURE__ */ (0, import_jsx_runtime80.jsxs)(SheetPortal, { "data-slot": "sheet-portal", children: [
4452
+ /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(SheetOverlay, {}),
4453
+ /* @__PURE__ */ (0, import_jsx_runtime80.jsxs)(
4146
4454
  import_dialog3.Dialog.Popup,
4147
4455
  {
4148
4456
  "data-slot": "sheet-content",
@@ -4150,11 +4458,11 @@ function SheetContent({
4150
4458
  ...props,
4151
4459
  children: [
4152
4460
  children,
4153
- /* @__PURE__ */ (0, import_jsx_runtime79.jsxs)(
4461
+ /* @__PURE__ */ (0, import_jsx_runtime80.jsxs)(
4154
4462
  import_dialog3.Dialog.Close,
4155
4463
  {
4156
4464
  "data-slot": "sheet-close",
4157
- render: /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(
4465
+ render: /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(
4158
4466
  "button",
4159
4467
  {
4160
4468
  type: "button",
@@ -4162,8 +4470,8 @@ function SheetContent({
4162
4470
  }
4163
4471
  ),
4164
4472
  children: [
4165
- /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(import_lucide_react17.XIcon, {}),
4166
- /* @__PURE__ */ (0, import_jsx_runtime79.jsx)("span", { className: "sr-only", children: "Close" })
4473
+ /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(import_lucide_react18.XIcon, {}),
4474
+ /* @__PURE__ */ (0, import_jsx_runtime80.jsx)("span", { className: "sr-only", children: "Close" })
4167
4475
  ]
4168
4476
  }
4169
4477
  )
@@ -4173,7 +4481,7 @@ function SheetContent({
4173
4481
  ] });
4174
4482
  }
4175
4483
  function SheetHeader({ className, ...props }) {
4176
- return /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(
4484
+ return /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(
4177
4485
  "div",
4178
4486
  {
4179
4487
  "data-slot": "sheet-header",
@@ -4186,7 +4494,7 @@ function SheetTitle({
4186
4494
  className,
4187
4495
  ...props
4188
4496
  }) {
4189
- return /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(
4497
+ return /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(
4190
4498
  import_dialog3.Dialog.Title,
4191
4499
  {
4192
4500
  "data-slot": "sheet-title",
@@ -4199,7 +4507,7 @@ function SheetDescription({
4199
4507
  className,
4200
4508
  ...props
4201
4509
  }) {
4202
- return /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(
4510
+ return /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(
4203
4511
  import_dialog3.Dialog.Description,
4204
4512
  {
4205
4513
  "data-slot": "sheet-description",
@@ -4210,9 +4518,9 @@ function SheetDescription({
4210
4518
  }
4211
4519
 
4212
4520
  // src/ui/skeleton.tsx
4213
- var import_jsx_runtime80 = require("react/jsx-runtime");
4521
+ var import_jsx_runtime81 = require("react/jsx-runtime");
4214
4522
  function Skeleton({ className, ...props }) {
4215
- return /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(
4523
+ return /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(
4216
4524
  "div",
4217
4525
  {
4218
4526
  "data-slot": "skeleton",
@@ -4223,7 +4531,7 @@ function Skeleton({ className, ...props }) {
4223
4531
  }
4224
4532
 
4225
4533
  // src/ui/sidebar.tsx
4226
- var import_jsx_runtime81 = require("react/jsx-runtime");
4534
+ var import_jsx_runtime82 = require("react/jsx-runtime");
4227
4535
  var SIDEBAR_COOKIE_NAME = "sidebar_state";
4228
4536
  var SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;
4229
4537
  var SIDEBAR_WIDTH = "16rem";
@@ -4289,7 +4597,7 @@ function SidebarProvider({
4289
4597
  }),
4290
4598
  [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]
4291
4599
  );
4292
- return /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(SidebarContext.Provider, { value: contextValue, children: /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(TooltipProvider, { delay: 0, children: /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(
4600
+ return /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(SidebarContext.Provider, { value: contextValue, children: /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(TooltipProvider, { delay: 0, children: /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(
4293
4601
  "div",
4294
4602
  {
4295
4603
  "data-slot": "sidebar-wrapper",
@@ -4317,7 +4625,7 @@ function SidebarRoot({
4317
4625
  }) {
4318
4626
  const { isMobile, state, openMobile, setOpenMobile } = useSidebar();
4319
4627
  if (collapsible === "none") {
4320
- return /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(
4628
+ return /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(
4321
4629
  "div",
4322
4630
  {
4323
4631
  "data-slot": "sidebar",
@@ -4331,7 +4639,7 @@ function SidebarRoot({
4331
4639
  );
4332
4640
  }
4333
4641
  if (isMobile) {
4334
- return /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(Sheet, { open: openMobile, onOpenChange: setOpenMobile, ...props, children: /* @__PURE__ */ (0, import_jsx_runtime81.jsxs)(
4642
+ return /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(Sheet, { open: openMobile, onOpenChange: setOpenMobile, ...props, children: /* @__PURE__ */ (0, import_jsx_runtime82.jsxs)(
4335
4643
  SheetContent,
4336
4644
  {
4337
4645
  "data-sidebar": "sidebar",
@@ -4343,16 +4651,16 @@ function SidebarRoot({
4343
4651
  },
4344
4652
  side,
4345
4653
  children: [
4346
- /* @__PURE__ */ (0, import_jsx_runtime81.jsxs)(SheetHeader, { className: "sr-only", children: [
4347
- /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(SheetTitle, { children: "Sidebar" }),
4348
- /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(SheetDescription, { children: "Displays the mobile sidebar." })
4654
+ /* @__PURE__ */ (0, import_jsx_runtime82.jsxs)(SheetHeader, { className: "sr-only", children: [
4655
+ /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(SheetTitle, { children: "Sidebar" }),
4656
+ /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(SheetDescription, { children: "Displays the mobile sidebar." })
4349
4657
  ] }),
4350
- /* @__PURE__ */ (0, import_jsx_runtime81.jsx)("div", { className: "flex h-full w-full flex-col", children })
4658
+ /* @__PURE__ */ (0, import_jsx_runtime82.jsx)("div", { className: "flex h-full w-full flex-col", children })
4351
4659
  ]
4352
4660
  }
4353
4661
  ) });
4354
4662
  }
4355
- return /* @__PURE__ */ (0, import_jsx_runtime81.jsxs)(
4663
+ return /* @__PURE__ */ (0, import_jsx_runtime82.jsxs)(
4356
4664
  "div",
4357
4665
  {
4358
4666
  className: "group peer hidden text-sidebar-foreground md:block",
@@ -4362,7 +4670,7 @@ function SidebarRoot({
4362
4670
  "data-side": side,
4363
4671
  "data-slot": "sidebar",
4364
4672
  children: [
4365
- /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(
4673
+ /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(
4366
4674
  "div",
4367
4675
  {
4368
4676
  "data-slot": "sidebar-gap",
@@ -4374,7 +4682,7 @@ function SidebarRoot({
4374
4682
  )
4375
4683
  }
4376
4684
  ),
4377
- /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(
4685
+ /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(
4378
4686
  "div",
4379
4687
  {
4380
4688
  "data-slot": "sidebar-container",
@@ -4385,7 +4693,7 @@ function SidebarRoot({
4385
4693
  className
4386
4694
  ),
4387
4695
  ...props,
4388
- children: /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(
4696
+ children: /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(
4389
4697
  "div",
4390
4698
  {
4391
4699
  "data-sidebar": "sidebar",
@@ -4401,7 +4709,7 @@ function SidebarRoot({
4401
4709
  );
4402
4710
  }
4403
4711
  function SidebarInset({ className, ...props }) {
4404
- return /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(
4712
+ return /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(
4405
4713
  "main",
4406
4714
  {
4407
4715
  "data-slot": "sidebar-inset",
@@ -4415,7 +4723,7 @@ function SidebarInset({ className, ...props }) {
4415
4723
  );
4416
4724
  }
4417
4725
  function SidebarHeader({ className, ...props }) {
4418
- return /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(
4726
+ return /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(
4419
4727
  "div",
4420
4728
  {
4421
4729
  "data-slot": "sidebar-header",
@@ -4426,7 +4734,7 @@ function SidebarHeader({ className, ...props }) {
4426
4734
  );
4427
4735
  }
4428
4736
  function SidebarFooter({ className, ...props }) {
4429
- return /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(
4737
+ return /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(
4430
4738
  "div",
4431
4739
  {
4432
4740
  "data-slot": "sidebar-footer",
@@ -4437,7 +4745,7 @@ function SidebarFooter({ className, ...props }) {
4437
4745
  );
4438
4746
  }
4439
4747
  function SidebarContent({ className, ...props }) {
4440
- return /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(
4748
+ return /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(
4441
4749
  "div",
4442
4750
  {
4443
4751
  "data-slot": "sidebar-content",
@@ -4464,7 +4772,7 @@ function renderAsChild(children, dataSlot, className, rest) {
4464
4772
  });
4465
4773
  }
4466
4774
  function SidebarMenu({ className, ...props }) {
4467
- return /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(
4775
+ return /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(
4468
4776
  "ul",
4469
4777
  {
4470
4778
  "data-slot": "sidebar-menu",
@@ -4475,7 +4783,7 @@ function SidebarMenu({ className, ...props }) {
4475
4783
  );
4476
4784
  }
4477
4785
  function SidebarMenuItem({ className, ...props }) {
4478
- return /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(
4786
+ return /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(
4479
4787
  "li",
4480
4788
  {
4481
4789
  "data-slot": "sidebar-menu-item",
@@ -4522,7 +4830,7 @@ function SidebarMenuButton({
4522
4830
  "data-size": size,
4523
4831
  "data-active": isActive,
4524
4832
  ...props
4525
- }) : /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(
4833
+ }) : /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(
4526
4834
  "button",
4527
4835
  {
4528
4836
  "data-slot": "sidebar-menu-button",
@@ -4542,9 +4850,9 @@ function SidebarMenuButton({
4542
4850
  children: tooltip
4543
4851
  };
4544
4852
  }
4545
- return /* @__PURE__ */ (0, import_jsx_runtime81.jsxs)(Tooltip2, { children: [
4546
- /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(TooltipTrigger, { render: button }),
4547
- /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(
4853
+ return /* @__PURE__ */ (0, import_jsx_runtime82.jsxs)(Tooltip2, { children: [
4854
+ /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(TooltipTrigger, { render: button }),
4855
+ /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(
4548
4856
  TooltipContent,
4549
4857
  {
4550
4858
  side: "right",
@@ -4557,7 +4865,7 @@ function SidebarMenuButton({
4557
4865
  }
4558
4866
 
4559
4867
  // src/components/components/Sidebar/index.tsx
4560
- var import_jsx_runtime82 = require("react/jsx-runtime");
4868
+ var import_jsx_runtime83 = require("react/jsx-runtime");
4561
4869
  function useSidebarDrawer() {
4562
4870
  try {
4563
4871
  const ctx = useSidebar();
@@ -4571,7 +4879,7 @@ function useSidebarDrawer() {
4571
4879
  }
4572
4880
  function useOptionalRenderer() {
4573
4881
  try {
4574
- return (0, import_runtime13.useRenderer)();
4882
+ return (0, import_runtime14.useRenderer)();
4575
4883
  } catch {
4576
4884
  return null;
4577
4885
  }
@@ -4579,9 +4887,9 @@ function useOptionalRenderer() {
4579
4887
  function SidebarContentSlot({ content }) {
4580
4888
  const renderer = useOptionalRenderer();
4581
4889
  if (renderer !== null && typeof content === "object" && content !== null && !("$$typeof" in content) && "type" in content) {
4582
- return /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(import_jsx_runtime82.Fragment, { children: renderer.renderChildren([content]) });
4890
+ return /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(import_jsx_runtime83.Fragment, { children: renderer.renderChildren([content]) });
4583
4891
  }
4584
- return /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(import_jsx_runtime82.Fragment, { children: content });
4892
+ return /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(import_jsx_runtime83.Fragment, { children: content });
4585
4893
  }
4586
4894
  function isBrandObject(brand) {
4587
4895
  return typeof brand === "object" && brand !== null && !("$$typeof" in brand) && "title" in brand;
@@ -4591,8 +4899,8 @@ function BrandNode({ brand, collapsed }) {
4591
4899
  return null;
4592
4900
  }
4593
4901
  if (isBrandObject(brand)) {
4594
- return /* @__PURE__ */ (0, import_jsx_runtime82.jsxs)(import_jsx_runtime82.Fragment, { children: [
4595
- brand.logo ? /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(
4902
+ return /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)(import_jsx_runtime83.Fragment, { children: [
4903
+ brand.logo ? /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(
4596
4904
  "img",
4597
4905
  {
4598
4906
  "data-slot": "sidebar-brand-logo",
@@ -4601,27 +4909,27 @@ function BrandNode({ brand, collapsed }) {
4601
4909
  className: "size-6 shrink-0"
4602
4910
  }
4603
4911
  ) : null,
4604
- collapsed ? null : /* @__PURE__ */ (0, import_jsx_runtime82.jsx)("span", { className: "truncate text-sm font-semibold", children: brand.title })
4912
+ collapsed ? null : /* @__PURE__ */ (0, import_jsx_runtime83.jsx)("span", { className: "truncate text-sm font-semibold", children: brand.title })
4605
4913
  ] });
4606
4914
  }
4607
- return /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(import_jsx_runtime82.Fragment, { children: brand });
4915
+ return /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(import_jsx_runtime83.Fragment, { children: brand });
4608
4916
  }
4609
4917
  function SidebarNavItems({ items }) {
4610
- return /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(SidebarMenu, { children: items.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(SidebarNavEntry, { item, depth: 0 }, item.href ?? item.label ?? index)) });
4918
+ return /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(SidebarMenu, { children: items.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(SidebarNavEntry, { item, depth: 0 }, item.href ?? item.label ?? index)) });
4611
4919
  }
4612
4920
  function SidebarNavEntry({ item, depth }) {
4613
- const iconNode = item.icon ? /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(Icon, { name: item.icon, size: "sm" }) : null;
4921
+ const iconNode = item.icon ? /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(Icon, { name: item.icon, size: "sm" }) : null;
4614
4922
  const labelNode = item.label;
4615
- const button = item.href ? /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(SidebarMenuButton, { asChild: true, tooltip: item.label, children: /* @__PURE__ */ (0, import_jsx_runtime82.jsxs)("a", { href: item.href, children: [
4923
+ const button = item.href ? /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(SidebarMenuButton, { asChild: true, tooltip: item.label, children: /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)("a", { href: item.href, children: [
4616
4924
  iconNode,
4617
- /* @__PURE__ */ (0, import_jsx_runtime82.jsx)("span", { children: labelNode })
4618
- ] }) }) : /* @__PURE__ */ (0, import_jsx_runtime82.jsxs)(SidebarMenuButton, { tooltip: item.label, children: [
4925
+ /* @__PURE__ */ (0, import_jsx_runtime83.jsx)("span", { children: labelNode })
4926
+ ] }) }) : /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)(SidebarMenuButton, { tooltip: item.label, children: [
4619
4927
  iconNode,
4620
- /* @__PURE__ */ (0, import_jsx_runtime82.jsx)("span", { children: labelNode })
4928
+ /* @__PURE__ */ (0, import_jsx_runtime83.jsx)("span", { children: labelNode })
4621
4929
  ] });
4622
- return /* @__PURE__ */ (0, import_jsx_runtime82.jsxs)(SidebarMenuItem, { children: [
4930
+ return /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)(SidebarMenuItem, { children: [
4623
4931
  button,
4624
- item.children && item.children.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime82.jsx)("div", { className: cn("ml-4"), children: item.children.map((child, index) => /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(
4932
+ item.children && item.children.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime83.jsx)("div", { className: cn("ml-4"), children: item.children.map((child, index) => /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(
4625
4933
  SidebarNavEntry,
4626
4934
  {
4627
4935
  item: child,
@@ -4644,13 +4952,13 @@ function Sidebar({
4644
4952
  style,
4645
4953
  children
4646
4954
  }) {
4647
- return /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(
4955
+ return /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(
4648
4956
  SidebarProvider,
4649
4957
  {
4650
4958
  defaultOpen: true,
4651
4959
  className,
4652
4960
  style,
4653
- children: /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(
4961
+ children: /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(
4654
4962
  SidebarInner,
4655
4963
  {
4656
4964
  brand,
@@ -4678,32 +4986,32 @@ function SidebarInner({
4678
4986
  drawer = true,
4679
4987
  children
4680
4988
  }) {
4681
- const { t } = (0, import_runtime13.useI18n)();
4989
+ const { t } = (0, import_runtime14.useI18n)();
4682
4990
  const isMobile = useIsMobile();
4683
4991
  const { state, setOpenMobile, toggleSidebar } = useSidebar();
4684
4992
  const collapsed = state === "collapsed";
4685
- const prevCollapsed = (0, import_react17.useRef)(collapsed);
4686
- (0, import_react17.useEffect)(() => {
4993
+ const prevCollapsed = (0, import_react18.useRef)(collapsed);
4994
+ (0, import_react18.useEffect)(() => {
4687
4995
  if (prevCollapsed.current !== collapsed) {
4688
4996
  prevCollapsed.current = collapsed;
4689
4997
  onCollapse?.(collapsed);
4690
4998
  }
4691
4999
  }, [collapsed, onCollapse]);
4692
- (0, import_react17.useEffect)(() => {
5000
+ (0, import_react18.useEffect)(() => {
4693
5001
  if (locationKey !== void 0) {
4694
5002
  setOpenMobile(false);
4695
5003
  }
4696
5004
  }, [locationKey, setOpenMobile]);
4697
5005
  const collapsedEffective = collapsible === true && collapsed && !isMobile;
4698
- const brandNode = /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(BrandNode, { brand, collapsed: collapsedEffective });
4699
- const sidebarContent = content !== void 0 && content !== null ? /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(SidebarContentSlot, { content }) : items.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(SidebarNavItems, { items }) : null;
4700
- return /* @__PURE__ */ (0, import_jsx_runtime82.jsxs)(import_jsx_runtime82.Fragment, { children: [
4701
- /* @__PURE__ */ (0, import_jsx_runtime82.jsxs)(
5006
+ const brandNode = /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(BrandNode, { brand, collapsed: collapsedEffective });
5007
+ const sidebarContent = content !== void 0 && content !== null ? /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(SidebarContentSlot, { content }) : items.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(SidebarNavItems, { items }) : null;
5008
+ return /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)(import_jsx_runtime83.Fragment, { children: [
5009
+ /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)(
4702
5010
  SidebarRoot,
4703
5011
  {
4704
5012
  collapsible: collapsible ? "icon" : "offcanvas",
4705
5013
  children: [
4706
- (brand !== void 0 || collapsible) && /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(SidebarHeader, { children: /* @__PURE__ */ (0, import_jsx_runtime82.jsxs)(
5014
+ (brand !== void 0 || collapsible) && /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(SidebarHeader, { children: /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)(
4707
5015
  "div",
4708
5016
  {
4709
5017
  "data-slot": "sidebar-brand",
@@ -4712,8 +5020,8 @@ function SidebarInner({
4712
5020
  collapsedEffective && "justify-center px-0"
4713
5021
  ),
4714
5022
  children: [
4715
- collapsedEffective ? null : /* @__PURE__ */ (0, import_jsx_runtime82.jsx)("div", { className: "flex min-w-0 flex-1 items-center gap-2", children: brandNode }),
4716
- collapsible && !isMobile && /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(
5023
+ collapsedEffective ? null : /* @__PURE__ */ (0, import_jsx_runtime83.jsx)("div", { className: "flex min-w-0 flex-1 items-center gap-2", children: brandNode }),
5024
+ collapsible && !isMobile && /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(
4717
5025
  "button",
4718
5026
  {
4719
5027
  type: "button",
@@ -4722,25 +5030,25 @@ function SidebarInner({
4722
5030
  "aria-expanded": !collapsedEffective,
4723
5031
  className: "flex size-8 shrink-0 cursor-pointer items-center justify-center rounded-md text-sidebar-foreground/60 transition-colors hover:bg-sidebar-accent hover:text-sidebar-foreground",
4724
5032
  onClick: toggleSidebar,
4725
- children: /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(Icon, { name: collapsedEffective ? "chevron-right" : "chevron-left", size: 16 })
5033
+ children: /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(Icon, { name: collapsedEffective ? "chevron-right" : "chevron-left", size: 16 })
4726
5034
  }
4727
5035
  )
4728
5036
  ]
4729
5037
  }
4730
5038
  ) }),
4731
- /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(SidebarContent, { children: sidebarContent }),
4732
- sidebarFooter !== void 0 && sidebarFooter !== null && !collapsedEffective && /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(SidebarFooter, { children: sidebarFooter })
5039
+ /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(SidebarContent, { children: sidebarContent }),
5040
+ sidebarFooter !== void 0 && sidebarFooter !== null && !collapsedEffective && /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(SidebarFooter, { children: sidebarFooter })
4733
5041
  ]
4734
5042
  }
4735
5043
  ),
4736
- /* @__PURE__ */ (0, import_jsx_runtime82.jsxs)(SidebarInset, { children: [
4737
- drawer && /* @__PURE__ */ (0, import_jsx_runtime82.jsxs)(
5044
+ /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)(SidebarInset, { children: [
5045
+ drawer && /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)(
4738
5046
  "div",
4739
5047
  {
4740
5048
  "data-slot": "sidebar-topbar",
4741
5049
  className: "flex h-14 items-center gap-2 border-b border-sidebar-border bg-sidebar px-3 md:hidden",
4742
5050
  children: [
4743
- /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(
5051
+ /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(
4744
5052
  "button",
4745
5053
  {
4746
5054
  type: "button",
@@ -4748,7 +5056,7 @@ function SidebarInner({
4748
5056
  "aria-label": t("pactor.layout.openNavigation"),
4749
5057
  className: "flex size-8 items-center justify-center rounded-md text-sidebar-foreground/60 transition-colors hover:bg-sidebar-accent hover:text-sidebar-foreground",
4750
5058
  onClick: toggleSidebar,
4751
- children: /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(Icon, { name: "menu", size: 18 })
5059
+ children: /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(Icon, { name: "menu", size: 18 })
4752
5060
  }
4753
5061
  ),
4754
5062
  brandNode
@@ -4761,19 +5069,52 @@ function SidebarInner({
4761
5069
  }
4762
5070
 
4763
5071
  // src/components/components/Menu/index.tsx
4764
- var import_jsx_runtime83 = require("react/jsx-runtime");
5072
+ var import_jsx_runtime84 = require("react/jsx-runtime");
5073
+ function collectAncestors(items, target, into, trail = []) {
5074
+ for (const item of items) {
5075
+ if (item.key === target) {
5076
+ for (const key of trail) into.add(key);
5077
+ return true;
5078
+ }
5079
+ if (item.children?.length && collectAncestors(item.children, target, into, [...trail, item.key])) {
5080
+ return true;
5081
+ }
5082
+ }
5083
+ return false;
5084
+ }
4765
5085
  function Menu2({
4766
5086
  items = [],
4767
5087
  mode = "inline",
4768
5088
  selectedKey,
5089
+ collapsible = false,
5090
+ defaultExpandedKeys,
4769
5091
  onSelect,
4770
5092
  className,
4771
5093
  style
4772
5094
  }) {
4773
5095
  const drawer = useSidebarDrawer();
4774
5096
  const collapsed = mode === "inline" && drawer?.collapsed === true;
5097
+ const collapsibleOn = collapsible && mode === "inline" && !collapsed;
5098
+ const [expandedKeys, setExpandedKeys] = (0, import_react19.useState)(() => {
5099
+ const initial = new Set(defaultExpandedKeys ?? []);
5100
+ if (selectedKey !== void 0) {
5101
+ collectAncestors(items, selectedKey, initial);
5102
+ }
5103
+ return initial;
5104
+ });
5105
+ const toggleExpanded = (key) => {
5106
+ setExpandedKeys((prev) => {
5107
+ const next = new Set(prev);
5108
+ if (next.has(key)) {
5109
+ next.delete(key);
5110
+ } else {
5111
+ next.add(key);
5112
+ }
5113
+ return next;
5114
+ });
5115
+ };
4775
5116
  let previousGroup;
4776
- return /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(
5117
+ return /* @__PURE__ */ (0, import_jsx_runtime84.jsx)(
4777
5118
  "nav",
4778
5119
  {
4779
5120
  "data-slot": "menu",
@@ -4790,8 +5131,8 @@ function Menu2({
4790
5131
  groupLabel = item.group;
4791
5132
  }
4792
5133
  previousGroup = item.group;
4793
- return /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)("div", { "data-slot": "menu-group-entry", children: [
4794
- groupLabel !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(
5134
+ return /* @__PURE__ */ (0, import_jsx_runtime84.jsxs)("div", { "data-slot": "menu-group-entry", children: [
5135
+ groupLabel !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime84.jsx)(
4795
5136
  "div",
4796
5137
  {
4797
5138
  "data-slot": "menu-group",
@@ -4799,7 +5140,7 @@ function Menu2({
4799
5140
  children: groupLabel
4800
5141
  }
4801
5142
  ),
4802
- /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(
5143
+ /* @__PURE__ */ (0, import_jsx_runtime84.jsx)(
4803
5144
  MenuEntry,
4804
5145
  {
4805
5146
  item,
@@ -4807,7 +5148,10 @@ function Menu2({
4807
5148
  depth: 0,
4808
5149
  selectedKey,
4809
5150
  onSelect,
4810
- collapsed
5151
+ collapsed,
5152
+ collapsible: collapsibleOn,
5153
+ expandedKeys,
5154
+ onToggle: toggleExpanded
4811
5155
  }
4812
5156
  )
4813
5157
  ] }, item.key);
@@ -4821,15 +5165,34 @@ function MenuEntry({
4821
5165
  depth,
4822
5166
  selectedKey,
4823
5167
  onSelect,
4824
- collapsed = false
5168
+ collapsed = false,
5169
+ collapsible = false,
5170
+ expandedKeys,
5171
+ onToggle
4825
5172
  }) {
4826
5173
  const selected = item.key === selectedKey;
4827
- const button = /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)(
5174
+ const hasChildren = (item.children?.length ?? 0) > 0;
5175
+ const isDirectory = collapsible && hasChildren;
5176
+ const expanded = isDirectory && expandedKeys?.has(item.key) === true;
5177
+ const railDirectory = collapsed && hasChildren;
5178
+ const [flyoutOpen, setFlyoutOpen] = (0, import_react19.useState)(false);
5179
+ const flyoutTimer = (0, import_react19.useRef)(void 0);
5180
+ const flyoutOpenNow = () => {
5181
+ window.clearTimeout(flyoutTimer.current);
5182
+ setFlyoutOpen(true);
5183
+ };
5184
+ const flyoutCloseLater = () => {
5185
+ window.clearTimeout(flyoutTimer.current);
5186
+ flyoutTimer.current = window.setTimeout(() => setFlyoutOpen(false), 200);
5187
+ };
5188
+ (0, import_react19.useEffect)(() => () => window.clearTimeout(flyoutTimer.current), []);
5189
+ const button = /* @__PURE__ */ (0, import_jsx_runtime84.jsxs)(
4828
5190
  "button",
4829
5191
  {
4830
5192
  type: "button",
4831
5193
  "data-slot": "menu-item",
4832
5194
  "aria-current": selected ? "page" : void 0,
5195
+ "aria-expanded": isDirectory ? expanded : railDirectory ? flyoutOpen : void 0,
4833
5196
  disabled: item.disabled,
4834
5197
  className: cn(
4835
5198
  "flex w-full items-center gap-2 rounded-md text-sm transition-colors",
@@ -4839,29 +5202,80 @@ function MenuEntry({
4839
5202
  item.disabled && "cursor-not-allowed opacity-50 hover:bg-transparent hover:text-muted-foreground"
4840
5203
  ),
4841
5204
  style: mode === "inline" && depth > 0 && !collapsed ? { paddingLeft: 12 + depth * 16 } : void 0,
5205
+ onMouseEnter: railDirectory ? flyoutOpenNow : void 0,
5206
+ onMouseLeave: railDirectory ? flyoutCloseLater : void 0,
4842
5207
  onClick: () => {
4843
- if (!item.disabled) {
5208
+ if (item.disabled) return;
5209
+ if (railDirectory) return;
5210
+ if (isDirectory) {
5211
+ onToggle?.(item.key);
5212
+ } else {
4844
5213
  onSelect?.(item.key);
4845
5214
  }
4846
5215
  },
4847
5216
  children: [
4848
- item.icon ? /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(Icon, { name: item.icon, size: "sm" }) : null,
4849
- collapsed ? null : /* @__PURE__ */ (0, import_jsx_runtime83.jsx)("span", { className: "min-w-0 flex-1 truncate text-left", children: item.label }),
4850
- item.dot && !collapsed ? /* @__PURE__ */ (0, import_jsx_runtime83.jsx)("span", { "data-slot": "menu-item-dot", className: "size-1.5 shrink-0 rounded-full bg-destructive" }) : null,
4851
- item.badge !== void 0 && !collapsed ? /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(
5217
+ item.icon ? /* @__PURE__ */ (0, import_jsx_runtime84.jsx)(Icon, { name: item.icon, size: "sm" }) : null,
5218
+ collapsed ? null : /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("span", { className: "min-w-0 flex-1 truncate text-left", children: item.label }),
5219
+ item.dot && !collapsed ? /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("span", { "data-slot": "menu-item-dot", className: "size-1.5 shrink-0 rounded-full bg-destructive" }) : null,
5220
+ item.badge !== void 0 && !collapsed ? /* @__PURE__ */ (0, import_jsx_runtime84.jsx)(
4852
5221
  "span",
4853
5222
  {
4854
5223
  "data-slot": "menu-item-badge",
4855
5224
  className: "shrink-0 rounded-full bg-muted px-1.5 py-0.5 text-xs text-muted-foreground",
4856
5225
  children: item.badge
4857
5226
  }
5227
+ ) : null,
5228
+ isDirectory ? /* @__PURE__ */ (0, import_jsx_runtime84.jsx)(
5229
+ "span",
5230
+ {
5231
+ "data-slot": "menu-item-chevron",
5232
+ className: cn(
5233
+ "shrink-0 transition-transform",
5234
+ expanded && "rotate-180"
5235
+ ),
5236
+ children: /* @__PURE__ */ (0, import_jsx_runtime84.jsx)(Icon, { name: "chevron-down", size: "sm" })
5237
+ }
4858
5238
  ) : null
4859
5239
  ]
4860
5240
  }
4861
5241
  );
4862
- return /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)("div", { "data-slot": "menu-entry", "data-key": item.key, children: [
4863
- collapsed ? /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(RailTooltip, { label: item.label, children: button }) : button,
4864
- item.children?.map((child) => /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(
5242
+ return /* @__PURE__ */ (0, import_jsx_runtime84.jsxs)("div", { "data-slot": "menu-entry", "data-key": item.key, children: [
5243
+ railDirectory ? /* @__PURE__ */ (0, import_jsx_runtime84.jsxs)(Popover, { open: flyoutOpen, onOpenChange: setFlyoutOpen, children: [
5244
+ /* @__PURE__ */ (0, import_jsx_runtime84.jsx)(PopoverTrigger, { render: button }),
5245
+ /* @__PURE__ */ (0, import_jsx_runtime84.jsxs)(
5246
+ PopoverContent,
5247
+ {
5248
+ "data-slot": "menu-flyout",
5249
+ side: "right",
5250
+ align: "start",
5251
+ sideOffset: 8,
5252
+ className: "max-h-[70vh] w-48 overflow-auto p-1",
5253
+ initialFocus: false,
5254
+ onMouseEnter: flyoutOpenNow,
5255
+ onMouseLeave: flyoutCloseLater,
5256
+ onClick: (event) => {
5257
+ if (event.target.closest("[data-slot=menu-item]")) {
5258
+ setFlyoutOpen(false);
5259
+ }
5260
+ },
5261
+ children: [
5262
+ /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("div", { className: "px-3 pt-2 pb-1 text-xs font-semibold text-muted-foreground", children: item.label }),
5263
+ item.children?.map((child) => /* @__PURE__ */ (0, import_jsx_runtime84.jsx)(
5264
+ MenuEntry,
5265
+ {
5266
+ item: child,
5267
+ mode: "inline",
5268
+ depth: 0,
5269
+ selectedKey,
5270
+ onSelect
5271
+ },
5272
+ child.key
5273
+ ))
5274
+ ]
5275
+ }
5276
+ )
5277
+ ] }) : collapsed ? /* @__PURE__ */ (0, import_jsx_runtime84.jsx)(RailTooltip, { label: item.label, children: button }) : button,
5278
+ railDirectory || isDirectory && !expanded ? null : item.children?.map((child) => /* @__PURE__ */ (0, import_jsx_runtime84.jsx)(
4865
5279
  MenuEntry,
4866
5280
  {
4867
5281
  item: child,
@@ -4869,7 +5283,10 @@ function MenuEntry({
4869
5283
  depth: depth + 1,
4870
5284
  selectedKey,
4871
5285
  onSelect,
4872
- collapsed
5286
+ collapsed,
5287
+ collapsible,
5288
+ expandedKeys,
5289
+ onToggle
4873
5290
  },
4874
5291
  child.key
4875
5292
  ))
@@ -4879,12 +5296,12 @@ function MenuEntry({
4879
5296
  // src/ui/menubar.tsx
4880
5297
  var import_menu2 = require("@base-ui/react/menu");
4881
5298
  var import_menubar = require("@base-ui/react/menubar");
4882
- var import_jsx_runtime84 = require("react/jsx-runtime");
5299
+ var import_jsx_runtime85 = require("react/jsx-runtime");
4883
5300
  function Menubar({
4884
5301
  className,
4885
5302
  ...props
4886
5303
  }) {
4887
- return /* @__PURE__ */ (0, import_jsx_runtime84.jsx)(
5304
+ return /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(
4888
5305
  import_menubar.Menubar,
4889
5306
  {
4890
5307
  "data-slot": "menubar",
@@ -4899,13 +5316,13 @@ function Menubar({
4899
5316
  function MenubarMenu({
4900
5317
  ...props
4901
5318
  }) {
4902
- return /* @__PURE__ */ (0, import_jsx_runtime84.jsx)(import_menu2.Menu.Root, { "data-slot": "menubar-menu", ...props });
5319
+ return /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(import_menu2.Menu.Root, { "data-slot": "menubar-menu", ...props });
4903
5320
  }
4904
5321
  function MenubarTrigger({
4905
5322
  className,
4906
5323
  ...props
4907
5324
  }) {
4908
- return /* @__PURE__ */ (0, import_jsx_runtime84.jsx)(
5325
+ return /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(
4909
5326
  import_menu2.Menu.Trigger,
4910
5327
  {
4911
5328
  "data-slot": "menubar-trigger",
@@ -4924,14 +5341,14 @@ function MenubarContent({
4924
5341
  sideOffset = 8,
4925
5342
  ...props
4926
5343
  }) {
4927
- return /* @__PURE__ */ (0, import_jsx_runtime84.jsx)(import_menu2.Menu.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime84.jsx)(
5344
+ return /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(import_menu2.Menu.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(
4928
5345
  import_menu2.Menu.Positioner,
4929
5346
  {
4930
5347
  align,
4931
5348
  side,
4932
5349
  sideOffset,
4933
5350
  className: "isolate z-50",
4934
- children: /* @__PURE__ */ (0, import_jsx_runtime84.jsx)(
5351
+ children: /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(
4935
5352
  import_menu2.Menu.Popup,
4936
5353
  {
4937
5354
  "data-slot": "menubar-content",
@@ -4950,7 +5367,7 @@ function MenubarItem({
4950
5367
  variant = "default",
4951
5368
  ...props
4952
5369
  }) {
4953
- return /* @__PURE__ */ (0, import_jsx_runtime84.jsx)(
5370
+ return /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(
4954
5371
  import_menu2.Menu.Item,
4955
5372
  {
4956
5373
  "data-slot": "menubar-item",
@@ -4965,17 +5382,17 @@ function MenubarItem({
4965
5382
  }
4966
5383
 
4967
5384
  // src/components/components/Menubar/index.tsx
4968
- var import_jsx_runtime85 = require("react/jsx-runtime");
5385
+ var import_jsx_runtime86 = require("react/jsx-runtime");
4969
5386
  function Menubar2({ menus = [], onSelect, className, style }) {
4970
- return /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(Menubar, { className, style, children: menus.map((menu) => /* @__PURE__ */ (0, import_jsx_runtime85.jsxs)(MenubarMenu, { children: [
4971
- /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(MenubarTrigger, { children: menu.label }),
4972
- /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(MenubarContent, { children: menu.items.map((item) => /* @__PURE__ */ (0, import_jsx_runtime85.jsxs)(
5387
+ return /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(Menubar, { className, style, children: menus.map((menu) => /* @__PURE__ */ (0, import_jsx_runtime86.jsxs)(MenubarMenu, { children: [
5388
+ /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(MenubarTrigger, { children: menu.label }),
5389
+ /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(MenubarContent, { children: menu.items.map((item) => /* @__PURE__ */ (0, import_jsx_runtime86.jsxs)(
4973
5390
  MenubarItem,
4974
5391
  {
4975
5392
  disabled: item.disabled,
4976
5393
  onClick: () => onSelect?.(item.value),
4977
5394
  children: [
4978
- item.icon ? /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(Icon, { name: item.icon, size: "sm" }) : null,
5395
+ item.icon ? /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(Icon, { name: item.icon, size: "sm" }) : null,
4979
5396
  item.label
4980
5397
  ]
4981
5398
  },
@@ -4986,15 +5403,15 @@ function Menubar2({ menus = [], onSelect, className, style }) {
4986
5403
 
4987
5404
  // src/ui/navigation-menu.tsx
4988
5405
  var import_navigation_menu = require("@base-ui/react/navigation-menu");
4989
- var import_lucide_react19 = require("lucide-react");
5406
+ var import_lucide_react20 = require("lucide-react");
4990
5407
  var import_class_variance_authority6 = require("class-variance-authority");
4991
- var import_jsx_runtime86 = require("react/jsx-runtime");
5408
+ var import_jsx_runtime87 = require("react/jsx-runtime");
4992
5409
  function NavigationMenu({
4993
5410
  className,
4994
5411
  children,
4995
5412
  ...props
4996
5413
  }) {
4997
- return /* @__PURE__ */ (0, import_jsx_runtime86.jsxs)(
5414
+ return /* @__PURE__ */ (0, import_jsx_runtime87.jsxs)(
4998
5415
  import_navigation_menu.NavigationMenu.Root,
4999
5416
  {
5000
5417
  "data-slot": "navigation-menu",
@@ -5002,7 +5419,7 @@ function NavigationMenu({
5002
5419
  ...props,
5003
5420
  children: [
5004
5421
  children,
5005
- /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(NavigationMenuViewport, {})
5422
+ /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(NavigationMenuViewport, {})
5006
5423
  ]
5007
5424
  }
5008
5425
  );
@@ -5011,7 +5428,7 @@ function NavigationMenuList({
5011
5428
  className,
5012
5429
  ...props
5013
5430
  }) {
5014
- return /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(
5431
+ return /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(
5015
5432
  import_navigation_menu.NavigationMenu.List,
5016
5433
  {
5017
5434
  "data-slot": "navigation-menu-list",
@@ -5024,7 +5441,7 @@ function NavigationMenuItem({
5024
5441
  className,
5025
5442
  ...props
5026
5443
  }) {
5027
- return /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(
5444
+ return /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(
5028
5445
  import_navigation_menu.NavigationMenu.Item,
5029
5446
  {
5030
5447
  "data-slot": "navigation-menu-item",
@@ -5041,7 +5458,7 @@ function NavigationMenuTrigger({
5041
5458
  children,
5042
5459
  ...props
5043
5460
  }) {
5044
- return /* @__PURE__ */ (0, import_jsx_runtime86.jsxs)(
5461
+ return /* @__PURE__ */ (0, import_jsx_runtime87.jsxs)(
5045
5462
  import_navigation_menu.NavigationMenu.Trigger,
5046
5463
  {
5047
5464
  "data-slot": "navigation-menu-trigger",
@@ -5049,8 +5466,8 @@ function NavigationMenuTrigger({
5049
5466
  ...props,
5050
5467
  children: [
5051
5468
  children,
5052
- /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(
5053
- import_lucide_react19.ChevronDownIcon,
5469
+ /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(
5470
+ import_lucide_react20.ChevronDownIcon,
5054
5471
  {
5055
5472
  className: "relative top-px ml-1 size-3 transition-transform duration-200 group-data-open/navigation-menu-trigger:rotate-180",
5056
5473
  "aria-hidden": "true"
@@ -5064,7 +5481,7 @@ function NavigationMenuContent({
5064
5481
  className,
5065
5482
  ...props
5066
5483
  }) {
5067
- return /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(
5484
+ return /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(
5068
5485
  import_navigation_menu.NavigationMenu.Content,
5069
5486
  {
5070
5487
  "data-slot": "navigation-menu-content",
@@ -5077,13 +5494,13 @@ function NavigationMenuContent({
5077
5494
  );
5078
5495
  }
5079
5496
  function NavigationMenuViewport({ className }) {
5080
- return /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(import_navigation_menu.NavigationMenu.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(
5497
+ return /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(import_navigation_menu.NavigationMenu.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(
5081
5498
  import_navigation_menu.NavigationMenu.Positioner,
5082
5499
  {
5083
5500
  side: "bottom",
5084
5501
  align: "start",
5085
5502
  className: "isolate z-50",
5086
- children: /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(
5503
+ children: /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(
5087
5504
  import_navigation_menu.NavigationMenu.Popup,
5088
5505
  {
5089
5506
  "data-slot": "navigation-menu-popup",
@@ -5091,7 +5508,7 @@ function NavigationMenuViewport({ className }) {
5091
5508
  "origin-(--transform-origin) overflow-hidden rounded-md border border-border bg-popover text-popover-foreground shadow-md shadow-(color:--shadow-color) duration-200 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",
5092
5509
  className
5093
5510
  ),
5094
- children: /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(import_navigation_menu.NavigationMenu.Viewport, { "data-slot": "navigation-menu-viewport" })
5511
+ children: /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(import_navigation_menu.NavigationMenu.Viewport, { "data-slot": "navigation-menu-viewport" })
5095
5512
  }
5096
5513
  )
5097
5514
  }
@@ -5101,7 +5518,7 @@ function NavigationMenuLink({
5101
5518
  className,
5102
5519
  ...props
5103
5520
  }) {
5104
- return /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(
5521
+ return /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(
5105
5522
  import_navigation_menu.NavigationMenu.Link,
5106
5523
  {
5107
5524
  "data-slot": "navigation-menu-link",
@@ -5115,33 +5532,33 @@ function NavigationMenuLink({
5115
5532
  }
5116
5533
 
5117
5534
  // src/components/components/NavigationMenu/index.tsx
5118
- var import_jsx_runtime87 = require("react/jsx-runtime");
5535
+ var import_jsx_runtime88 = require("react/jsx-runtime");
5119
5536
  function NavigationMenu2({ items = [], className, style }) {
5120
- return /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(NavigationMenu, { className, style, children: /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(NavigationMenuList, { children: items.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(NavigationMenuItem, { value: `item-${index}`, children: item.children && item.children.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime87.jsxs)(import_jsx_runtime87.Fragment, { children: [
5121
- /* @__PURE__ */ (0, import_jsx_runtime87.jsxs)(
5537
+ return /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(NavigationMenu, { className, style, children: /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(NavigationMenuList, { children: items.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(NavigationMenuItem, { value: `item-${index}`, children: item.children && item.children.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)(import_jsx_runtime88.Fragment, { children: [
5538
+ /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)(
5122
5539
  NavigationMenuTrigger,
5123
5540
  {
5124
5541
  className: item.icon !== void 0 ? "gap-2" : void 0,
5125
5542
  children: [
5126
- item.icon ? /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(Icon, { name: item.icon, size: "sm" }) : null,
5543
+ item.icon ? /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(Icon, { name: item.icon, size: "sm" }) : null,
5127
5544
  item.label
5128
5545
  ]
5129
5546
  }
5130
5547
  ),
5131
- /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(NavigationMenuContent, { children: /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("ul", { className: "grid w-64 gap-1", children: item.children.map((child) => /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime87.jsxs)(NavigationMenuLink, { href: child.href, children: [
5132
- /* @__PURE__ */ (0, import_jsx_runtime87.jsxs)(
5548
+ /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(NavigationMenuContent, { children: /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("ul", { className: "grid w-64 gap-1", children: item.children.map((child) => /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)(NavigationMenuLink, { href: child.href, children: [
5549
+ /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)(
5133
5550
  "span",
5134
5551
  {
5135
5552
  className: child.icon !== void 0 ? "flex items-center gap-2 font-medium" : "font-medium",
5136
5553
  children: [
5137
- child.icon ? /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(Icon, { name: child.icon, size: "sm" }) : null,
5554
+ child.icon ? /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(Icon, { name: child.icon, size: "sm" }) : null,
5138
5555
  child.label
5139
5556
  ]
5140
5557
  }
5141
5558
  ),
5142
- child.description ? /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("span", { className: "text-muted-foreground", children: child.description }) : null
5559
+ child.description ? /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("span", { className: "text-muted-foreground", children: child.description }) : null
5143
5560
  ] }) }, child.href)) }) })
5144
- ] }) : /* @__PURE__ */ (0, import_jsx_runtime87.jsxs)(
5561
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)(
5145
5562
  NavigationMenuLink,
5146
5563
  {
5147
5564
  href: item.href,
@@ -5150,7 +5567,7 @@ function NavigationMenu2({ items = [], className, style }) {
5150
5567
  item.icon !== void 0 && "gap-2"
5151
5568
  ),
5152
5569
  children: [
5153
- item.icon ? /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(Icon, { name: item.icon, size: "sm" }) : null,
5570
+ item.icon ? /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(Icon, { name: item.icon, size: "sm" }) : null,
5154
5571
  item.label
5155
5572
  ]
5156
5573
  }
@@ -5158,22 +5575,22 @@ function NavigationMenu2({ items = [], className, style }) {
5158
5575
  }
5159
5576
 
5160
5577
  // src/components/components/Page/index.tsx
5161
- var import_jsx_runtime88 = require("react/jsx-runtime");
5578
+ var import_jsx_runtime89 = require("react/jsx-runtime");
5162
5579
  function Page({ title, className, style, children }) {
5163
- return /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)("div", { "data-slot": "page", className: cn("p-6", className), style, children: [
5164
- title ? /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("h2", { "data-slot": "page-title", className: "mb-5 text-xl font-semibold", children: title }) : null,
5165
- /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("div", { "data-slot": "page-content", className: "space-y-5", children })
5580
+ return /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)("div", { "data-slot": "page", className: cn("p-6", className), style, children: [
5581
+ title ? /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("h2", { "data-slot": "page-title", className: "mb-5 text-xl font-semibold", children: title }) : null,
5582
+ /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("div", { "data-slot": "page-content", className: "space-y-5", children })
5166
5583
  ] });
5167
5584
  }
5168
5585
 
5169
5586
  // src/components/components/Pagination/index.tsx
5170
- var import_react18 = require("react");
5587
+ var import_react20 = require("react");
5171
5588
 
5172
5589
  // src/ui/pagination.tsx
5173
- var import_lucide_react20 = require("lucide-react");
5174
- var import_jsx_runtime89 = require("react/jsx-runtime");
5590
+ var import_lucide_react21 = require("lucide-react");
5591
+ var import_jsx_runtime90 = require("react/jsx-runtime");
5175
5592
  function Pagination({ className, ...props }) {
5176
- return /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(
5593
+ return /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(
5177
5594
  "nav",
5178
5595
  {
5179
5596
  role: "navigation",
@@ -5185,7 +5602,7 @@ function Pagination({ className, ...props }) {
5185
5602
  );
5186
5603
  }
5187
5604
  function PaginationContent({ className, ...props }) {
5188
- return /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(
5605
+ return /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(
5189
5606
  "ul",
5190
5607
  {
5191
5608
  "data-slot": "pagination-content",
@@ -5195,7 +5612,7 @@ function PaginationContent({ className, ...props }) {
5195
5612
  );
5196
5613
  }
5197
5614
  function PaginationItem({ ...props }) {
5198
- return /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("li", { "data-slot": "pagination-item", ...props });
5615
+ return /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("li", { "data-slot": "pagination-item", ...props });
5199
5616
  }
5200
5617
  function PaginationLink({
5201
5618
  className,
@@ -5203,7 +5620,7 @@ function PaginationLink({
5203
5620
  disabled,
5204
5621
  ...props
5205
5622
  }) {
5206
- return /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(
5623
+ return /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(
5207
5624
  "a",
5208
5625
  {
5209
5626
  "aria-current": isActive ? "page" : void 0,
@@ -5227,15 +5644,15 @@ function PaginationPrevious({
5227
5644
  className,
5228
5645
  ...props
5229
5646
  }) {
5230
- return /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)(
5647
+ return /* @__PURE__ */ (0, import_jsx_runtime90.jsxs)(
5231
5648
  PaginationLink,
5232
5649
  {
5233
5650
  "aria-label": "Go to previous page",
5234
5651
  className: cn("gap-1 px-2.5 sm:pl-2.5", className),
5235
5652
  ...props,
5236
5653
  children: [
5237
- /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(import_lucide_react20.ChevronLeftIcon, {}),
5238
- /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("span", { className: "hidden sm:block", children: "Previous" })
5654
+ /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(import_lucide_react21.ChevronLeftIcon, {}),
5655
+ /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("span", { className: "hidden sm:block", children: "Previous" })
5239
5656
  ]
5240
5657
  }
5241
5658
  );
@@ -5244,21 +5661,21 @@ function PaginationNext({
5244
5661
  className,
5245
5662
  ...props
5246
5663
  }) {
5247
- return /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)(
5664
+ return /* @__PURE__ */ (0, import_jsx_runtime90.jsxs)(
5248
5665
  PaginationLink,
5249
5666
  {
5250
5667
  "aria-label": "Go to next page",
5251
5668
  className: cn("gap-1 px-2.5 sm:pr-2.5", className),
5252
5669
  ...props,
5253
5670
  children: [
5254
- /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("span", { className: "hidden sm:block", children: "Next" }),
5255
- /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(import_lucide_react20.ChevronRightIcon, {})
5671
+ /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("span", { className: "hidden sm:block", children: "Next" }),
5672
+ /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(import_lucide_react21.ChevronRightIcon, {})
5256
5673
  ]
5257
5674
  }
5258
5675
  );
5259
5676
  }
5260
5677
  function PaginationEllipsis({ className, ...props }) {
5261
- return /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)(
5678
+ return /* @__PURE__ */ (0, import_jsx_runtime90.jsxs)(
5262
5679
  "span",
5263
5680
  {
5264
5681
  "aria-hidden": true,
@@ -5266,15 +5683,15 @@ function PaginationEllipsis({ className, ...props }) {
5266
5683
  className: cn("flex size-9 items-center justify-center", className),
5267
5684
  ...props,
5268
5685
  children: [
5269
- /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(import_lucide_react20.MoreHorizontalIcon, { className: "size-4" }),
5270
- /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("span", { className: "sr-only", children: "More pages" })
5686
+ /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(import_lucide_react21.MoreHorizontalIcon, { className: "size-4" }),
5687
+ /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("span", { className: "sr-only", children: "More pages" })
5271
5688
  ]
5272
5689
  }
5273
5690
  );
5274
5691
  }
5275
5692
 
5276
5693
  // src/components/components/Pagination/index.tsx
5277
- var import_jsx_runtime90 = require("react/jsx-runtime");
5694
+ var import_jsx_runtime91 = require("react/jsx-runtime");
5278
5695
  function pageItems(current, count) {
5279
5696
  if (count <= 7) {
5280
5697
  return Array.from({ length: count }, (_, i) => i + 1);
@@ -5295,7 +5712,7 @@ function Pagination2({
5295
5712
  className,
5296
5713
  style
5297
5714
  }) {
5298
- const [innerPage, setInnerPage] = (0, import_react18.useState)(1);
5715
+ const [innerPage, setInnerPage] = (0, import_react20.useState)(1);
5299
5716
  const pageCount = Math.max(1, Math.ceil(total / Math.max(1, pageSize)));
5300
5717
  const current = Math.min(Math.max(1, page ?? innerPage), pageCount);
5301
5718
  const goTo = (next) => {
@@ -5308,8 +5725,8 @@ function Pagination2({
5308
5725
  }
5309
5726
  onChange?.(target);
5310
5727
  };
5311
- return /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(Pagination, { className, style, children: /* @__PURE__ */ (0, import_jsx_runtime90.jsxs)(PaginationContent, { children: [
5312
- /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(PaginationItem, { children: /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(
5728
+ return /* @__PURE__ */ (0, import_jsx_runtime91.jsx)(Pagination, { className, style, children: /* @__PURE__ */ (0, import_jsx_runtime91.jsxs)(PaginationContent, { children: [
5729
+ /* @__PURE__ */ (0, import_jsx_runtime91.jsx)(PaginationItem, { children: /* @__PURE__ */ (0, import_jsx_runtime91.jsx)(
5313
5730
  PaginationPrevious,
5314
5731
  {
5315
5732
  href: "#",
@@ -5320,7 +5737,7 @@ function Pagination2({
5320
5737
  }
5321
5738
  }
5322
5739
  ) }),
5323
- pageItems(current, pageCount).map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(PaginationItem, { children: item === "ellipsis" ? /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(PaginationEllipsis, {}) : /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(
5740
+ pageItems(current, pageCount).map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime91.jsx)(PaginationItem, { children: item === "ellipsis" ? /* @__PURE__ */ (0, import_jsx_runtime91.jsx)(PaginationEllipsis, {}) : /* @__PURE__ */ (0, import_jsx_runtime91.jsx)(
5324
5741
  PaginationLink,
5325
5742
  {
5326
5743
  href: "#",
@@ -5332,7 +5749,7 @@ function Pagination2({
5332
5749
  children: item
5333
5750
  }
5334
5751
  ) }, item === "ellipsis" ? `ellipsis-${index}` : item)),
5335
- /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(PaginationItem, { children: /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(
5752
+ /* @__PURE__ */ (0, import_jsx_runtime91.jsx)(PaginationItem, { children: /* @__PURE__ */ (0, import_jsx_runtime91.jsx)(
5336
5753
  PaginationNext,
5337
5754
  {
5338
5755
  href: "#",
@@ -5347,15 +5764,15 @@ function Pagination2({
5347
5764
  }
5348
5765
 
5349
5766
  // src/components/components/Popover/index.tsx
5350
- var import_runtime14 = require("@pactor-app/runtime");
5351
- var import_jsx_runtime91 = require("react/jsx-runtime");
5767
+ var import_runtime15 = require("@pactor-app/runtime");
5768
+ var import_jsx_runtime92 = require("react/jsx-runtime");
5352
5769
  function isDslNode3(value) {
5353
5770
  return typeof value === "object" && value !== null && typeof value.type === "string";
5354
5771
  }
5355
5772
  function Popover2({ content, children, className, style }) {
5356
- const { renderChildren } = (0, import_runtime14.useRenderer)();
5357
- return /* @__PURE__ */ (0, import_jsx_runtime91.jsxs)(Popover, { children: [
5358
- /* @__PURE__ */ (0, import_jsx_runtime91.jsx)(
5773
+ const { renderChildren } = (0, import_runtime15.useRenderer)();
5774
+ return /* @__PURE__ */ (0, import_jsx_runtime92.jsxs)(Popover, { children: [
5775
+ /* @__PURE__ */ (0, import_jsx_runtime92.jsx)(
5359
5776
  PopoverTrigger,
5360
5777
  {
5361
5778
  nativeButton: false,
@@ -5363,15 +5780,15 @@ function Popover2({ content, children, className, style }) {
5363
5780
  children
5364
5781
  }
5365
5782
  ),
5366
- /* @__PURE__ */ (0, import_jsx_runtime91.jsx)(PopoverContent, { className, style, children: isDslNode3(content) ? renderChildren([content]) : content })
5783
+ /* @__PURE__ */ (0, import_jsx_runtime92.jsx)(PopoverContent, { className, style, children: isDslNode3(content) ? renderChildren([content]) : content })
5367
5784
  ] });
5368
5785
  }
5369
5786
 
5370
5787
  // src/ui/progress.tsx
5371
5788
  var import_progress = require("@base-ui/react/progress");
5372
- var import_jsx_runtime92 = require("react/jsx-runtime");
5789
+ var import_jsx_runtime93 = require("react/jsx-runtime");
5373
5790
  function Progress({ className, ...props }) {
5374
- return /* @__PURE__ */ (0, import_jsx_runtime92.jsx)(
5791
+ return /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
5375
5792
  import_progress.Progress.Root,
5376
5793
  {
5377
5794
  "data-slot": "progress",
@@ -5381,7 +5798,7 @@ function Progress({ className, ...props }) {
5381
5798
  );
5382
5799
  }
5383
5800
  function ProgressTrack({ className, ...props }) {
5384
- return /* @__PURE__ */ (0, import_jsx_runtime92.jsx)(
5801
+ return /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
5385
5802
  import_progress.Progress.Track,
5386
5803
  {
5387
5804
  "data-slot": "progress-track",
@@ -5394,7 +5811,7 @@ function ProgressIndicator({
5394
5811
  className,
5395
5812
  ...props
5396
5813
  }) {
5397
- return /* @__PURE__ */ (0, import_jsx_runtime92.jsx)(
5814
+ return /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
5398
5815
  import_progress.Progress.Indicator,
5399
5816
  {
5400
5817
  "data-slot": "progress-indicator",
@@ -5408,21 +5825,21 @@ function ProgressIndicator({
5408
5825
  }
5409
5826
 
5410
5827
  // src/components/components/Progress/index.tsx
5411
- var import_jsx_runtime93 = require("react/jsx-runtime");
5828
+ var import_jsx_runtime94 = require("react/jsx-runtime");
5412
5829
  function Progress2({ value, className, style }) {
5413
5830
  const resolved = typeof value === "number" && Number.isFinite(value) ? Math.min(100, Math.max(0, value)) : null;
5414
- return /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Progress, { value: resolved, className, style, children: /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(ProgressTrack, { children: /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(ProgressIndicator, {}) }) });
5831
+ return /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(Progress, { value: resolved, className, style, children: /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(ProgressTrack, { children: /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(ProgressIndicator, {}) }) });
5415
5832
  }
5416
5833
 
5417
5834
  // src/components/components/RadioGroup/index.tsx
5418
- var import_react19 = require("react");
5835
+ var import_react21 = require("react");
5419
5836
 
5420
5837
  // src/ui/radio-group.tsx
5421
5838
  var import_radio = require("@base-ui/react/radio");
5422
5839
  var import_radio_group = require("@base-ui/react/radio-group");
5423
- var import_jsx_runtime94 = require("react/jsx-runtime");
5840
+ var import_jsx_runtime95 = require("react/jsx-runtime");
5424
5841
  function RadioGroup({ className, ...props }) {
5425
- return /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(
5842
+ return /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(
5426
5843
  import_radio_group.RadioGroup,
5427
5844
  {
5428
5845
  "data-slot": "radio-group",
@@ -5432,7 +5849,7 @@ function RadioGroup({ className, ...props }) {
5432
5849
  );
5433
5850
  }
5434
5851
  function RadioGroupItem({ className, ...props }) {
5435
- return /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(
5852
+ return /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(
5436
5853
  import_radio.Radio.Root,
5437
5854
  {
5438
5855
  "data-slot": "radio-group-item",
@@ -5441,12 +5858,12 @@ function RadioGroupItem({ className, ...props }) {
5441
5858
  className
5442
5859
  ),
5443
5860
  ...props,
5444
- children: /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(
5861
+ children: /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(
5445
5862
  import_radio.Radio.Indicator,
5446
5863
  {
5447
5864
  "data-slot": "radio-group-indicator",
5448
5865
  className: "flex items-center justify-center",
5449
- children: /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("span", { className: "size-2 rounded-full bg-(--radio-checked)" })
5866
+ children: /* @__PURE__ */ (0, import_jsx_runtime95.jsx)("span", { className: "size-2 rounded-full bg-(--radio-checked)" })
5450
5867
  }
5451
5868
  )
5452
5869
  }
@@ -5454,7 +5871,7 @@ function RadioGroupItem({ className, ...props }) {
5454
5871
  }
5455
5872
 
5456
5873
  // src/components/components/Form/form-item.tsx
5457
- var import_jsx_runtime95 = require("react/jsx-runtime");
5874
+ var import_jsx_runtime96 = require("react/jsx-runtime");
5458
5875
  function FieldShell({
5459
5876
  layout,
5460
5877
  label,
@@ -5464,14 +5881,14 @@ function FieldShell({
5464
5881
  style,
5465
5882
  children
5466
5883
  }) {
5467
- return /* @__PURE__ */ (0, import_jsx_runtime95.jsxs)(
5884
+ return /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)(
5468
5885
  "div",
5469
5886
  {
5470
5887
  "data-slot": "form-item",
5471
5888
  className: cn(formItemClass(layout), className),
5472
5889
  style,
5473
5890
  children: [
5474
- label ? /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(
5891
+ label ? /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(
5475
5892
  "label",
5476
5893
  {
5477
5894
  htmlFor,
@@ -5480,14 +5897,14 @@ function FieldShell({
5480
5897
  }
5481
5898
  ) : null,
5482
5899
  children,
5483
- error ? /* @__PURE__ */ (0, import_jsx_runtime95.jsx)("div", { "data-slot": "form-error", className: "text-sm text-destructive", children: error }) : null
5900
+ error ? /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("div", { "data-slot": "form-error", className: "text-sm text-destructive", children: error }) : null
5484
5901
  ]
5485
5902
  }
5486
5903
  );
5487
5904
  }
5488
5905
 
5489
5906
  // src/components/components/RadioGroup/index.tsx
5490
- var import_jsx_runtime96 = require("react/jsx-runtime");
5907
+ var import_jsx_runtime97 = require("react/jsx-runtime");
5491
5908
  function RadioGroup2({
5492
5909
  name,
5493
5910
  label,
@@ -5500,9 +5917,9 @@ function RadioGroup2({
5500
5917
  style
5501
5918
  }) {
5502
5919
  const form = useFormContext();
5503
- const controlId = (0, import_react19.useId)();
5920
+ const controlId = (0, import_react21.useId)();
5504
5921
  const inForm = form?.inForm === true && typeof name === "string" && name !== "";
5505
- (0, import_react19.useEffect)(() => {
5922
+ (0, import_react21.useEffect)(() => {
5506
5923
  if (inForm && form && name) {
5507
5924
  form.registerField(name, rules, value);
5508
5925
  return () => form.unregisterField(name);
@@ -5517,7 +5934,7 @@ function RadioGroup2({
5517
5934
  onChange?.(next);
5518
5935
  };
5519
5936
  const groupValue = current ?? "";
5520
- const group = /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(
5937
+ const group = /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
5521
5938
  RadioGroup,
5522
5939
  {
5523
5940
  value: groupValue,
@@ -5528,8 +5945,8 @@ function RadioGroup2({
5528
5945
  style: inForm ? void 0 : style,
5529
5946
  children: options.map((option, index) => {
5530
5947
  const optionId = `${controlId}-${index}`;
5531
- return /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)("span", { className: "inline-flex items-center gap-2", children: [
5532
- /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(
5948
+ return /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)("span", { className: "inline-flex items-center gap-2", children: [
5949
+ /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
5533
5950
  RadioGroupItem,
5534
5951
  {
5535
5952
  id: optionId,
@@ -5537,13 +5954,13 @@ function RadioGroup2({
5537
5954
  disabled: option.disabled
5538
5955
  }
5539
5956
  ),
5540
- /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("label", { htmlFor: optionId, className: "text-sm leading-none font-medium", children: option.label })
5957
+ /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("label", { htmlFor: optionId, className: "text-sm leading-none font-medium", children: option.label })
5541
5958
  ] }, String(option.value));
5542
5959
  })
5543
5960
  }
5544
5961
  );
5545
5962
  if (inForm && form && name) {
5546
- return /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(
5963
+ return /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
5547
5964
  FieldShell,
5548
5965
  {
5549
5966
  layout: form.layout,
@@ -5559,18 +5976,18 @@ function RadioGroup2({
5559
5976
  }
5560
5977
 
5561
5978
  // src/components/components/Resizable/index.tsx
5562
- var import_runtime15 = require("@pactor-app/runtime");
5563
- var import_react20 = require("react");
5979
+ var import_runtime16 = require("@pactor-app/runtime");
5980
+ var import_react22 = require("react");
5564
5981
 
5565
5982
  // src/ui/resizable.tsx
5566
- var import_lucide_react21 = require("lucide-react");
5983
+ var import_lucide_react22 = require("lucide-react");
5567
5984
  var import_react_resizable_panels = require("react-resizable-panels");
5568
- var import_jsx_runtime97 = require("react/jsx-runtime");
5985
+ var import_jsx_runtime98 = require("react/jsx-runtime");
5569
5986
  function PanelGroup({
5570
5987
  className,
5571
5988
  ...props
5572
5989
  }) {
5573
- return /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
5990
+ return /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(
5574
5991
  import_react_resizable_panels.Group,
5575
5992
  {
5576
5993
  "data-slot": "resizable-panel-group",
@@ -5583,14 +6000,14 @@ function PanelGroup({
5583
6000
  );
5584
6001
  }
5585
6002
  function Panel({ ...props }) {
5586
- return /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(import_react_resizable_panels.Panel, { "data-slot": "resizable-panel", ...props });
6003
+ return /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(import_react_resizable_panels.Panel, { "data-slot": "resizable-panel", ...props });
5587
6004
  }
5588
6005
  function ResizableHandle({
5589
6006
  withHandle,
5590
6007
  className,
5591
6008
  ...props
5592
6009
  }) {
5593
- return /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
6010
+ return /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(
5594
6011
  import_react_resizable_panels.Separator,
5595
6012
  {
5596
6013
  "data-slot": "resizable-handle",
@@ -5599,23 +6016,23 @@ function ResizableHandle({
5599
6016
  className
5600
6017
  ),
5601
6018
  ...props,
5602
- children: withHandle ? /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("div", { className: "z-10 flex h-4 w-3 items-center justify-center rounded-xs border border-border bg-border", children: /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(import_lucide_react21.GripVerticalIcon, { className: "size-2.5" }) }) : null
6019
+ children: withHandle ? /* @__PURE__ */ (0, import_jsx_runtime98.jsx)("div", { className: "z-10 flex h-4 w-3 items-center justify-center rounded-xs border border-border bg-border", children: /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(import_lucide_react22.GripVerticalIcon, { className: "size-2.5" }) }) : null
5603
6020
  }
5604
6021
  );
5605
6022
  }
5606
6023
 
5607
6024
  // src/components/components/Resizable/index.tsx
5608
- var import_jsx_runtime98 = require("react/jsx-runtime");
6025
+ var import_jsx_runtime99 = require("react/jsx-runtime");
5609
6026
  function Resizable({
5610
6027
  panels = [],
5611
6028
  direction = "horizontal",
5612
6029
  className,
5613
6030
  style
5614
6031
  }) {
5615
- const { renderChildren } = (0, import_runtime15.useRenderer)();
5616
- return /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(PanelGroup, { orientation: direction, className, style, children: panels.map((panel, index) => /* @__PURE__ */ (0, import_jsx_runtime98.jsxs)(import_react20.Fragment, { children: [
5617
- index > 0 ? /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(ResizableHandle, { withHandle: true }) : null,
5618
- /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(
6032
+ const { renderChildren } = (0, import_runtime16.useRenderer)();
6033
+ return /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(PanelGroup, { orientation: direction, className, style, children: panels.map((panel, index) => /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(import_react22.Fragment, { children: [
6034
+ index > 0 ? /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(ResizableHandle, { withHandle: true }) : null,
6035
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
5619
6036
  Panel,
5620
6037
  {
5621
6038
  defaultSize: typeof panel.defaultSizePx === "number" ? `${panel.defaultSizePx}px` : typeof panel.defaultSize === "number" ? `${panel.defaultSize}%` : void 0,
@@ -5629,20 +6046,20 @@ function Resizable({
5629
6046
 
5630
6047
  // src/ui/scroll-area.tsx
5631
6048
  var import_scroll_area = require("@base-ui/react/scroll-area");
5632
- var import_jsx_runtime99 = require("react/jsx-runtime");
6049
+ var import_jsx_runtime100 = require("react/jsx-runtime");
5633
6050
  function ScrollArea({
5634
6051
  className,
5635
6052
  children,
5636
6053
  ...props
5637
6054
  }) {
5638
- return /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(
6055
+ return /* @__PURE__ */ (0, import_jsx_runtime100.jsxs)(
5639
6056
  import_scroll_area.ScrollArea.Root,
5640
6057
  {
5641
6058
  "data-slot": "scroll-area",
5642
6059
  className: cn("relative overflow-hidden", className),
5643
6060
  ...props,
5644
6061
  children: [
5645
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
6062
+ /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(
5646
6063
  import_scroll_area.ScrollArea.Viewport,
5647
6064
  {
5648
6065
  "data-slot": "scroll-area-viewport",
@@ -5650,8 +6067,8 @@ function ScrollArea({
5650
6067
  children
5651
6068
  }
5652
6069
  ),
5653
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(ScrollBar, {}),
5654
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_scroll_area.ScrollArea.Corner, {})
6070
+ /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(ScrollBar, {}),
6071
+ /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(import_scroll_area.ScrollArea.Corner, {})
5655
6072
  ]
5656
6073
  }
5657
6074
  );
@@ -5661,7 +6078,7 @@ function ScrollBar({
5661
6078
  orientation = "vertical",
5662
6079
  ...props
5663
6080
  }) {
5664
- return /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
6081
+ return /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(
5665
6082
  import_scroll_area.ScrollArea.Scrollbar,
5666
6083
  {
5667
6084
  "data-slot": "scroll-area-scrollbar",
@@ -5673,7 +6090,7 @@ function ScrollBar({
5673
6090
  className
5674
6091
  ),
5675
6092
  ...props,
5676
- children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
6093
+ children: /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(
5677
6094
  import_scroll_area.ScrollArea.Thumb,
5678
6095
  {
5679
6096
  "data-slot": "scroll-area-thumb",
@@ -5685,7 +6102,7 @@ function ScrollBar({
5685
6102
  }
5686
6103
 
5687
6104
  // src/components/components/ScrollArea/index.tsx
5688
- var import_jsx_runtime100 = require("react/jsx-runtime");
6105
+ var import_jsx_runtime101 = require("react/jsx-runtime");
5689
6106
  function ScrollArea2({
5690
6107
  maxHeight,
5691
6108
  maxWidth,
@@ -5693,7 +6110,7 @@ function ScrollArea2({
5693
6110
  style,
5694
6111
  children
5695
6112
  }) {
5696
- return /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(
6113
+ return /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(
5697
6114
  ScrollArea,
5698
6115
  {
5699
6116
  className,
@@ -5704,18 +6121,18 @@ function ScrollArea2({
5704
6121
  }
5705
6122
 
5706
6123
  // src/components/components/Select/index.tsx
5707
- var import_runtime16 = require("@pactor-app/runtime");
5708
- var import_react21 = require("react");
6124
+ var import_runtime17 = require("@pactor-app/runtime");
6125
+ var import_react23 = require("react");
5709
6126
 
5710
6127
  // src/ui/select.tsx
5711
6128
  var import_select = require("@base-ui/react/select");
5712
- var import_lucide_react22 = require("lucide-react");
5713
- var import_jsx_runtime101 = require("react/jsx-runtime");
6129
+ var import_lucide_react23 = require("lucide-react");
6130
+ var import_jsx_runtime102 = require("react/jsx-runtime");
5714
6131
  var Select = import_select.Select.Root;
5715
6132
  function SelectValue({
5716
6133
  ...props
5717
6134
  }) {
5718
- return /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(import_select.Select.Value, { "data-slot": "select-value", ...props });
6135
+ return /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(import_select.Select.Value, { "data-slot": "select-value", ...props });
5719
6136
  }
5720
6137
  function SelectTrigger({
5721
6138
  className,
@@ -5723,7 +6140,7 @@ function SelectTrigger({
5723
6140
  children,
5724
6141
  ...props
5725
6142
  }) {
5726
- return /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)(
6143
+ return /* @__PURE__ */ (0, import_jsx_runtime102.jsxs)(
5727
6144
  import_select.Select.Trigger,
5728
6145
  {
5729
6146
  "data-slot": "select-trigger",
@@ -5735,10 +6152,10 @@ function SelectTrigger({
5735
6152
  ...props,
5736
6153
  children: [
5737
6154
  children,
5738
- /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(
6155
+ /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(
5739
6156
  import_select.Select.Icon,
5740
6157
  {
5741
- render: /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(import_lucide_react22.ChevronDownIcon, { className: "size-4 opacity-50" })
6158
+ render: /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(import_lucide_react23.ChevronDownIcon, { className: "size-4 opacity-50" })
5742
6159
  }
5743
6160
  )
5744
6161
  ]
@@ -5754,7 +6171,7 @@ function SelectContent({
5754
6171
  alignItemWithTrigger = false,
5755
6172
  ...props
5756
6173
  }) {
5757
- return /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(import_select.Select.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(
6174
+ return /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(import_select.Select.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(
5758
6175
  import_select.Select.Positioner,
5759
6176
  {
5760
6177
  side,
@@ -5762,7 +6179,7 @@ function SelectContent({
5762
6179
  align,
5763
6180
  alignItemWithTrigger,
5764
6181
  className: "isolate z-50",
5765
- children: /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)(
6182
+ children: /* @__PURE__ */ (0, import_jsx_runtime102.jsxs)(
5766
6183
  import_select.Select.Popup,
5767
6184
  {
5768
6185
  "data-slot": "select-content",
@@ -5772,9 +6189,9 @@ function SelectContent({
5772
6189
  ),
5773
6190
  ...props,
5774
6191
  children: [
5775
- /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(SelectScrollUpButton, {}),
5776
- /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(import_select.Select.List, { className: "p-1", children }),
5777
- /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(SelectScrollDownButton, {})
6192
+ /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(SelectScrollUpButton, {}),
6193
+ /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(import_select.Select.List, { className: "p-1", children }),
6194
+ /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(SelectScrollDownButton, {})
5778
6195
  ]
5779
6196
  }
5780
6197
  )
@@ -5786,7 +6203,7 @@ function SelectItem({
5786
6203
  children,
5787
6204
  ...props
5788
6205
  }) {
5789
- return /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)(
6206
+ return /* @__PURE__ */ (0, import_jsx_runtime102.jsxs)(
5790
6207
  import_select.Select.Item,
5791
6208
  {
5792
6209
  "data-slot": "select-item",
@@ -5796,8 +6213,8 @@ function SelectItem({
5796
6213
  ),
5797
6214
  ...props,
5798
6215
  children: [
5799
- /* @__PURE__ */ (0, import_jsx_runtime101.jsx)("span", { className: "absolute right-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(import_select.Select.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(import_lucide_react22.CheckIcon, { className: "size-4" }) }) }),
5800
- /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(import_select.Select.ItemText, { children })
6216
+ /* @__PURE__ */ (0, import_jsx_runtime102.jsx)("span", { className: "absolute right-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(import_select.Select.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(import_lucide_react23.CheckIcon, { className: "size-4" }) }) }),
6217
+ /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(import_select.Select.ItemText, { children })
5801
6218
  ]
5802
6219
  }
5803
6220
  );
@@ -5806,7 +6223,7 @@ function SelectScrollUpButton({
5806
6223
  className,
5807
6224
  ...props
5808
6225
  }) {
5809
- return /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(
6226
+ return /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(
5810
6227
  import_select.Select.ScrollUpArrow,
5811
6228
  {
5812
6229
  "data-slot": "select-scroll-up-button",
@@ -5815,7 +6232,7 @@ function SelectScrollUpButton({
5815
6232
  className
5816
6233
  ),
5817
6234
  ...props,
5818
- children: /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(import_lucide_react22.ChevronUpIcon, { className: "size-4" })
6235
+ children: /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(import_lucide_react23.ChevronUpIcon, { className: "size-4" })
5819
6236
  }
5820
6237
  );
5821
6238
  }
@@ -5823,7 +6240,7 @@ function SelectScrollDownButton({
5823
6240
  className,
5824
6241
  ...props
5825
6242
  }) {
5826
- return /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(
6243
+ return /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(
5827
6244
  import_select.Select.ScrollDownArrow,
5828
6245
  {
5829
6246
  "data-slot": "select-scroll-down-button",
@@ -5832,13 +6249,13 @@ function SelectScrollDownButton({
5832
6249
  className
5833
6250
  ),
5834
6251
  ...props,
5835
- children: /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(import_lucide_react22.ChevronDownIcon, { className: "size-4" })
6252
+ children: /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(import_lucide_react23.ChevronDownIcon, { className: "size-4" })
5836
6253
  }
5837
6254
  );
5838
6255
  }
5839
6256
 
5840
6257
  // src/components/components/Select/index.tsx
5841
- var import_jsx_runtime102 = require("react/jsx-runtime");
6258
+ var import_jsx_runtime103 = require("react/jsx-runtime");
5842
6259
  function Select2({
5843
6260
  name,
5844
6261
  label,
@@ -5853,10 +6270,10 @@ function Select2({
5853
6270
  style
5854
6271
  }) {
5855
6272
  const form = useFormContext();
5856
- const { t } = (0, import_runtime16.useI18n)();
5857
- const controlId = (0, import_react21.useId)();
6273
+ const { t } = (0, import_runtime17.useI18n)();
6274
+ const controlId = (0, import_react23.useId)();
5858
6275
  const inForm = form?.inForm === true && typeof name === "string" && name !== "";
5859
- (0, import_react21.useEffect)(() => {
6276
+ (0, import_react23.useEffect)(() => {
5860
6277
  if (inForm && form && name) {
5861
6278
  form.registerField(name, rules, value);
5862
6279
  return () => form.unregisterField(name);
@@ -5872,13 +6289,13 @@ function Select2({
5872
6289
  onChange?.(next ?? void 0);
5873
6290
  };
5874
6291
  const inFormRoot = inForm === true;
5875
- const select = /* @__PURE__ */ (0, import_jsx_runtime102.jsxs)(
6292
+ const select = /* @__PURE__ */ (0, import_jsx_runtime103.jsxs)(
5876
6293
  "span",
5877
6294
  {
5878
6295
  className: cn("inline-flex items-center gap-1", !inFormRoot && className),
5879
6296
  style: inFormRoot ? void 0 : style,
5880
6297
  children: [
5881
- /* @__PURE__ */ (0, import_jsx_runtime102.jsxs)(
6298
+ /* @__PURE__ */ (0, import_jsx_runtime103.jsxs)(
5882
6299
  Select,
5883
6300
  {
5884
6301
  items: options,
@@ -5887,8 +6304,8 @@ function Select2({
5887
6304
  disabled,
5888
6305
  name: inForm ? name : void 0,
5889
6306
  children: [
5890
- /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(SelectTrigger, { id: controlId, children: /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(SelectValue, { placeholder }) }),
5891
- /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(SelectContent, { children: options.map((option) => /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(
6307
+ /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(SelectTrigger, { id: controlId, children: /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(SelectValue, { placeholder }) }),
6308
+ /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(SelectContent, { children: options.map((option) => /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(
5892
6309
  SelectItem,
5893
6310
  {
5894
6311
  value: option.value,
@@ -5900,7 +6317,7 @@ function Select2({
5900
6317
  ]
5901
6318
  }
5902
6319
  ),
5903
- allowClear && selectedValue !== null && !disabled ? /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(
6320
+ allowClear && selectedValue !== null && !disabled ? /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(
5904
6321
  "button",
5905
6322
  {
5906
6323
  type: "button",
@@ -5920,14 +6337,14 @@ function Select2({
5920
6337
  );
5921
6338
  if (inForm && form && name) {
5922
6339
  const error = form.errors[name];
5923
- return /* @__PURE__ */ (0, import_jsx_runtime102.jsxs)(
6340
+ return /* @__PURE__ */ (0, import_jsx_runtime103.jsxs)(
5924
6341
  "div",
5925
6342
  {
5926
6343
  "data-slot": "form-item",
5927
6344
  className: cn(formItemClass(form.layout), className),
5928
6345
  style,
5929
6346
  children: [
5930
- label ? /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(
6347
+ label ? /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(
5931
6348
  "label",
5932
6349
  {
5933
6350
  htmlFor: controlId,
@@ -5936,7 +6353,7 @@ function Select2({
5936
6353
  }
5937
6354
  ) : null,
5938
6355
  select,
5939
- error ? /* @__PURE__ */ (0, import_jsx_runtime102.jsx)("div", { "data-slot": "form-error", className: "text-sm text-destructive", children: error }) : null
6356
+ error ? /* @__PURE__ */ (0, import_jsx_runtime103.jsx)("div", { "data-slot": "form-error", className: "text-sm text-destructive", children: error }) : null
5940
6357
  ]
5941
6358
  }
5942
6359
  );
@@ -5945,13 +6362,13 @@ function Select2({
5945
6362
  }
5946
6363
 
5947
6364
  // src/components/components/Separator/index.tsx
5948
- var import_jsx_runtime103 = require("react/jsx-runtime");
6365
+ var import_jsx_runtime104 = require("react/jsx-runtime");
5949
6366
  function Separator2({ orientation = "horizontal", className, style }) {
5950
- return /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(Separator, { orientation, className, style });
6367
+ return /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(Separator, { orientation, className, style });
5951
6368
  }
5952
6369
 
5953
6370
  // src/components/components/Sheet/index.tsx
5954
- var import_jsx_runtime104 = require("react/jsx-runtime");
6371
+ var import_jsx_runtime105 = require("react/jsx-runtime");
5955
6372
  function Sheet2({
5956
6373
  title,
5957
6374
  open,
@@ -5961,7 +6378,7 @@ function Sheet2({
5961
6378
  className,
5962
6379
  style
5963
6380
  }) {
5964
- return /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(
6381
+ return /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(
5965
6382
  Sheet,
5966
6383
  {
5967
6384
  open: open ?? false,
@@ -5970,17 +6387,17 @@ function Sheet2({
5970
6387
  onClose?.();
5971
6388
  }
5972
6389
  },
5973
- children: /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(SheetContent, { side, className, style, children: [
5974
- title ? /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(SheetHeader, { children: /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(SheetTitle, { children: title }) }) : null,
5975
- /* @__PURE__ */ (0, import_jsx_runtime104.jsx)("div", { className: "flex-1 overflow-auto px-4", children })
6390
+ children: /* @__PURE__ */ (0, import_jsx_runtime105.jsxs)(SheetContent, { side, className, style, children: [
6391
+ title ? /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(SheetHeader, { children: /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(SheetTitle, { children: title }) }) : null,
6392
+ /* @__PURE__ */ (0, import_jsx_runtime105.jsx)("div", { className: "flex-1 overflow-auto px-4", children })
5976
6393
  ] })
5977
6394
  }
5978
6395
  );
5979
6396
  }
5980
6397
 
5981
6398
  // src/components/components/Sider/index.tsx
5982
- var import_lucide_react23 = require("lucide-react");
5983
- var import_jsx_runtime105 = require("react/jsx-runtime");
6399
+ var import_lucide_react24 = require("lucide-react");
6400
+ var import_jsx_runtime106 = require("react/jsx-runtime");
5984
6401
  function Sider({
5985
6402
  width = 200,
5986
6403
  collapsible,
@@ -5992,7 +6409,7 @@ function Sider({
5992
6409
  children
5993
6410
  }) {
5994
6411
  const current = collapsed ? collapsedWidth : width;
5995
- return /* @__PURE__ */ (0, import_jsx_runtime105.jsxs)(
6412
+ return /* @__PURE__ */ (0, import_jsx_runtime106.jsxs)(
5996
6413
  "aside",
5997
6414
  {
5998
6415
  "data-slot": "layout-sider",
@@ -6003,15 +6420,15 @@ function Sider({
6003
6420
  ),
6004
6421
  style: { width: current, ...style },
6005
6422
  children: [
6006
- /* @__PURE__ */ (0, import_jsx_runtime105.jsx)("div", { className: "min-h-0 flex-1 overflow-auto", children }),
6007
- collapsible ? /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(
6423
+ /* @__PURE__ */ (0, import_jsx_runtime106.jsx)("div", { className: "min-h-0 flex-1 overflow-auto", children }),
6424
+ collapsible ? /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(
6008
6425
  "button",
6009
6426
  {
6010
6427
  type: "button",
6011
6428
  "aria-label": collapsed ? "expand sider" : "collapse sider",
6012
6429
  className: "flex h-10 shrink-0 items-center justify-center border-t text-muted-foreground hover:text-foreground",
6013
6430
  onClick: () => onCollapse?.(!collapsed),
6014
- children: collapsed ? /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(import_lucide_react23.ChevronRight, { "aria-hidden": true, className: "size-4" }) : /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(import_lucide_react23.ChevronLeft, { "aria-hidden": true, className: "size-4" })
6431
+ children: collapsed ? /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(import_lucide_react24.ChevronRight, { "aria-hidden": true, className: "size-4" }) : /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(import_lucide_react24.ChevronLeft, { "aria-hidden": true, className: "size-4" })
6015
6432
  }
6016
6433
  ) : null
6017
6434
  ]
@@ -6020,7 +6437,7 @@ function Sider({
6020
6437
  }
6021
6438
 
6022
6439
  // src/components/components/Skeleton/index.tsx
6023
- var import_jsx_runtime106 = require("react/jsx-runtime");
6440
+ var import_jsx_runtime107 = require("react/jsx-runtime");
6024
6441
  var shapeDefaults = {
6025
6442
  line: { className: "h-4 w-full", style: {} },
6026
6443
  circle: { className: "rounded-full", style: { width: 40, height: 40 } },
@@ -6031,7 +6448,7 @@ function toSize(value) {
6031
6448
  }
6032
6449
  function Skeleton2({ shape = "line", width, height, className, style }) {
6033
6450
  const defaults = shapeDefaults[shape];
6034
- return /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(
6451
+ return /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(
6035
6452
  Skeleton,
6036
6453
  {
6037
6454
  className: cn(defaults.className, className),
@@ -6046,13 +6463,13 @@ function Skeleton2({ shape = "line", width, height, className, style }) {
6046
6463
  }
6047
6464
 
6048
6465
  // src/components/components/Slider/index.tsx
6049
- var import_react22 = require("react");
6466
+ var import_react24 = require("react");
6050
6467
 
6051
6468
  // src/ui/slider.tsx
6052
6469
  var import_slider = require("@base-ui/react/slider");
6053
- var import_jsx_runtime107 = require("react/jsx-runtime");
6470
+ var import_jsx_runtime108 = require("react/jsx-runtime");
6054
6471
  function Slider({ className, ...props }) {
6055
- return /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(
6472
+ return /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(
6056
6473
  import_slider.Slider.Root,
6057
6474
  {
6058
6475
  "data-slot": "slider",
@@ -6065,7 +6482,7 @@ function Slider({ className, ...props }) {
6065
6482
  );
6066
6483
  }
6067
6484
  function SliderControl({ className, ...props }) {
6068
- return /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(
6485
+ return /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(
6069
6486
  import_slider.Slider.Control,
6070
6487
  {
6071
6488
  "data-slot": "slider-control",
@@ -6075,7 +6492,7 @@ function SliderControl({ className, ...props }) {
6075
6492
  );
6076
6493
  }
6077
6494
  function SliderTrack({ className, ...props }) {
6078
- return /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(
6495
+ return /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(
6079
6496
  import_slider.Slider.Track,
6080
6497
  {
6081
6498
  "data-slot": "slider-track",
@@ -6088,7 +6505,7 @@ function SliderTrack({ className, ...props }) {
6088
6505
  );
6089
6506
  }
6090
6507
  function SliderIndicator({ className, ...props }) {
6091
- return /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(
6508
+ return /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(
6092
6509
  import_slider.Slider.Indicator,
6093
6510
  {
6094
6511
  "data-slot": "slider-indicator",
@@ -6098,7 +6515,7 @@ function SliderIndicator({ className, ...props }) {
6098
6515
  );
6099
6516
  }
6100
6517
  function SliderThumb({ className, ...props }) {
6101
- return /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(
6518
+ return /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(
6102
6519
  import_slider.Slider.Thumb,
6103
6520
  {
6104
6521
  "data-slot": "slider-thumb",
@@ -6112,7 +6529,7 @@ function SliderThumb({ className, ...props }) {
6112
6529
  }
6113
6530
 
6114
6531
  // src/components/components/Slider/index.tsx
6115
- var import_jsx_runtime108 = require("react/jsx-runtime");
6532
+ var import_jsx_runtime109 = require("react/jsx-runtime");
6116
6533
  function Slider2({
6117
6534
  name,
6118
6535
  label,
@@ -6128,7 +6545,7 @@ function Slider2({
6128
6545
  }) {
6129
6546
  const form = useFormContext();
6130
6547
  const inForm = form?.inForm === true && typeof name === "string" && name !== "";
6131
- (0, import_react22.useEffect)(() => {
6548
+ (0, import_react24.useEffect)(() => {
6132
6549
  if (inForm && form && name) {
6133
6550
  form.registerField(name, rules, value);
6134
6551
  return () => form.unregisterField(name);
@@ -6143,7 +6560,7 @@ function Slider2({
6143
6560
  }
6144
6561
  onChange?.(next);
6145
6562
  };
6146
- const slider = /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(
6563
+ const slider = /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(
6147
6564
  Slider,
6148
6565
  {
6149
6566
  value: numberValue,
@@ -6155,14 +6572,14 @@ function Slider2({
6155
6572
  onValueChange: handleChange,
6156
6573
  className: inForm ? void 0 : className,
6157
6574
  style: inForm ? void 0 : style,
6158
- children: /* @__PURE__ */ (0, import_jsx_runtime108.jsxs)(SliderControl, { children: [
6159
- /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(SliderTrack, { children: /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(SliderIndicator, {}) }),
6160
- /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(SliderThumb, {})
6575
+ children: /* @__PURE__ */ (0, import_jsx_runtime109.jsxs)(SliderControl, { children: [
6576
+ /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(SliderTrack, { children: /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(SliderIndicator, {}) }),
6577
+ /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(SliderThumb, {})
6161
6578
  ] })
6162
6579
  }
6163
6580
  );
6164
6581
  if (inForm && form && name) {
6165
- return /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(
6582
+ return /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(
6166
6583
  FieldShell,
6167
6584
  {
6168
6585
  layout: form.layout,
@@ -6178,13 +6595,13 @@ function Slider2({
6178
6595
  }
6179
6596
 
6180
6597
  // src/components/components/Sonner/index.tsx
6181
- var import_runtime17 = require("@pactor-app/runtime");
6182
- var import_react23 = require("react");
6598
+ var import_runtime18 = require("@pactor-app/runtime");
6599
+ var import_react25 = require("react");
6183
6600
 
6184
6601
  // src/ui/toast.tsx
6185
6602
  var import_toast = require("@base-ui/react/toast");
6186
- var import_lucide_react24 = require("lucide-react");
6187
- var import_jsx_runtime109 = require("react/jsx-runtime");
6603
+ var import_lucide_react25 = require("lucide-react");
6604
+ var import_jsx_runtime110 = require("react/jsx-runtime");
6188
6605
  var toastManager = import_toast.Toast.createToastManager();
6189
6606
  function toast(message, options = {}) {
6190
6607
  return toastManager.add({
@@ -6200,7 +6617,7 @@ var toastVariantClass = {
6200
6617
  };
6201
6618
  function ToasterViewport({ className }) {
6202
6619
  const { toasts } = import_toast.Toast.useToastManager();
6203
- return /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(import_toast.Toast.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(
6620
+ return /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(import_toast.Toast.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(
6204
6621
  import_toast.Toast.Viewport,
6205
6622
  {
6206
6623
  "data-slot": "toast-viewport",
@@ -6208,7 +6625,7 @@ function ToasterViewport({ className }) {
6208
6625
  "fixed top-4 right-4 z-[100] flex w-80 flex-col gap-2 outline-none",
6209
6626
  className
6210
6627
  ),
6211
- children: toasts.map((item) => /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(
6628
+ children: toasts.map((item) => /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(
6212
6629
  import_toast.Toast.Root,
6213
6630
  {
6214
6631
  toast: item,
@@ -6218,16 +6635,16 @@ function ToasterViewport({ className }) {
6218
6635
  "rounded-md border border-border bg-popover px-4 py-3 text-sm text-popover-foreground shadow-md shadow-(color:--shadow-color) transition-[opacity,transform] duration-200 data-ending-style:animate-toast-out data-starting-style:animate-toast-in",
6219
6636
  toastVariantClass[item.type ?? "info"] ?? toastVariantClass.info
6220
6637
  ),
6221
- children: /* @__PURE__ */ (0, import_jsx_runtime109.jsxs)(import_toast.Toast.Content, { className: "flex items-start justify-between gap-2", children: [
6222
- /* @__PURE__ */ (0, import_jsx_runtime109.jsxs)("div", { className: "grid gap-0.5", children: [
6223
- /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(
6638
+ children: /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)(import_toast.Toast.Content, { className: "flex items-start justify-between gap-2", children: [
6639
+ /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)("div", { className: "grid gap-0.5", children: [
6640
+ /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(
6224
6641
  import_toast.Toast.Title,
6225
6642
  {
6226
6643
  "data-slot": "toast-title",
6227
6644
  className: "font-medium"
6228
6645
  }
6229
6646
  ),
6230
- /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(
6647
+ /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(
6231
6648
  import_toast.Toast.Description,
6232
6649
  {
6233
6650
  "data-slot": "toast-description",
@@ -6235,13 +6652,13 @@ function ToasterViewport({ className }) {
6235
6652
  }
6236
6653
  )
6237
6654
  ] }),
6238
- /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(
6655
+ /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(
6239
6656
  import_toast.Toast.Close,
6240
6657
  {
6241
6658
  "data-slot": "toast-close",
6242
6659
  "aria-label": "Close",
6243
6660
  className: "cursor-pointer rounded-xs opacity-70 transition-opacity hover:opacity-100 focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-none [&_svg]:size-3.5",
6244
- children: /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(import_lucide_react24.XIcon, {})
6661
+ children: /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(import_lucide_react25.XIcon, {})
6245
6662
  }
6246
6663
  )
6247
6664
  ] })
@@ -6252,14 +6669,14 @@ function ToasterViewport({ className }) {
6252
6669
  ) });
6253
6670
  }
6254
6671
  function Toaster({ className }) {
6255
- return /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(import_toast.Toast.Provider, { toastManager, children: /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(ToasterViewport, { className }) });
6672
+ return /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(import_toast.Toast.Provider, { toastManager, children: /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(ToasterViewport, { className }) });
6256
6673
  }
6257
6674
 
6258
6675
  // src/components/components/Sonner/index.tsx
6259
- var import_jsx_runtime110 = require("react/jsx-runtime");
6676
+ var import_jsx_runtime111 = require("react/jsx-runtime");
6260
6677
  function Sonner({ className, style }) {
6261
- const { context } = (0, import_runtime17.useRenderer)();
6262
- (0, import_react23.useEffect)(() => {
6678
+ const { context } = (0, import_runtime18.useRenderer)();
6679
+ (0, import_react25.useEffect)(() => {
6263
6680
  const { actions } = context;
6264
6681
  if (actions.has("toast")) {
6265
6682
  return;
@@ -6273,15 +6690,15 @@ function Sonner({ className, style }) {
6273
6690
  return { ok: true };
6274
6691
  });
6275
6692
  }, [context]);
6276
- return /* @__PURE__ */ (0, import_jsx_runtime110.jsx)("div", { "data-slot": "sonner", className, style, children: /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(Toaster, {}) });
6693
+ return /* @__PURE__ */ (0, import_jsx_runtime111.jsx)("div", { "data-slot": "sonner", className, style, children: /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(Toaster, {}) });
6277
6694
  }
6278
6695
 
6279
6696
  // src/ui/spinner.tsx
6280
- var import_lucide_react25 = require("lucide-react");
6281
- var import_jsx_runtime111 = require("react/jsx-runtime");
6697
+ var import_lucide_react26 = require("lucide-react");
6698
+ var import_jsx_runtime112 = require("react/jsx-runtime");
6282
6699
  function Spinner({ className, ...props }) {
6283
- return /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(
6284
- import_lucide_react25.Loader2Icon,
6700
+ return /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(
6701
+ import_lucide_react26.Loader2Icon,
6285
6702
  {
6286
6703
  role: "status",
6287
6704
  "aria-label": "Loading",
@@ -6293,37 +6710,37 @@ function Spinner({ className, ...props }) {
6293
6710
  }
6294
6711
 
6295
6712
  // src/components/components/Spinner/index.tsx
6296
- var import_jsx_runtime112 = require("react/jsx-runtime");
6713
+ var import_jsx_runtime113 = require("react/jsx-runtime");
6297
6714
  var sizeClass = {
6298
6715
  sm: "size-3",
6299
6716
  default: "size-4",
6300
6717
  lg: "size-6"
6301
6718
  };
6302
6719
  function Spinner2({ size = "default", className, style }) {
6303
- return /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(Spinner, { className: cn(sizeClass[size], className), style });
6720
+ return /* @__PURE__ */ (0, import_jsx_runtime113.jsx)(Spinner, { className: cn(sizeClass[size], className), style });
6304
6721
  }
6305
6722
 
6306
6723
  // src/components/components/Statistic/index.tsx
6307
- var import_jsx_runtime113 = require("react/jsx-runtime");
6724
+ var import_jsx_runtime114 = require("react/jsx-runtime");
6308
6725
  function Statistic({ title, value, precision, suffix, className, style }) {
6309
6726
  const display = typeof value === "number" && precision !== void 0 ? value.toFixed(precision) : value;
6310
- return /* @__PURE__ */ (0, import_jsx_runtime113.jsxs)("div", { "data-slot": "statistic", className: cn(className), style, children: [
6311
- title ? /* @__PURE__ */ (0, import_jsx_runtime113.jsx)("div", { "data-slot": "statistic-title", className: "text-sm text-muted-foreground", children: title }) : null,
6312
- /* @__PURE__ */ (0, import_jsx_runtime113.jsxs)("div", { "data-slot": "statistic-value", className: "text-2xl font-bold tabular-nums", children: [
6727
+ return /* @__PURE__ */ (0, import_jsx_runtime114.jsxs)("div", { "data-slot": "statistic", className: cn(className), style, children: [
6728
+ title ? /* @__PURE__ */ (0, import_jsx_runtime114.jsx)("div", { "data-slot": "statistic-title", className: "text-sm text-muted-foreground", children: title }) : null,
6729
+ /* @__PURE__ */ (0, import_jsx_runtime114.jsxs)("div", { "data-slot": "statistic-value", className: "text-2xl font-bold tabular-nums", children: [
6313
6730
  display,
6314
- suffix ? /* @__PURE__ */ (0, import_jsx_runtime113.jsx)("span", { className: "ml-1 text-sm font-normal text-muted-foreground", children: suffix }) : null
6731
+ suffix ? /* @__PURE__ */ (0, import_jsx_runtime114.jsx)("span", { className: "ml-1 text-sm font-normal text-muted-foreground", children: suffix }) : null
6315
6732
  ] })
6316
6733
  ] });
6317
6734
  }
6318
6735
 
6319
6736
  // src/components/components/Switch/index.tsx
6320
- var import_react24 = require("react");
6737
+ var import_react26 = require("react");
6321
6738
 
6322
6739
  // src/ui/switch.tsx
6323
6740
  var import_switch = require("@base-ui/react/switch");
6324
- var import_jsx_runtime114 = require("react/jsx-runtime");
6741
+ var import_jsx_runtime115 = require("react/jsx-runtime");
6325
6742
  function Switch({ className, ...props }) {
6326
- return /* @__PURE__ */ (0, import_jsx_runtime114.jsx)(
6743
+ return /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(
6327
6744
  import_switch.Switch.Root,
6328
6745
  {
6329
6746
  "data-slot": "switch",
@@ -6332,7 +6749,7 @@ function Switch({ className, ...props }) {
6332
6749
  className
6333
6750
  ),
6334
6751
  ...props,
6335
- children: /* @__PURE__ */ (0, import_jsx_runtime114.jsx)(
6752
+ children: /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(
6336
6753
  import_switch.Switch.Thumb,
6337
6754
  {
6338
6755
  "data-slot": "switch-thumb",
@@ -6344,7 +6761,7 @@ function Switch({ className, ...props }) {
6344
6761
  }
6345
6762
 
6346
6763
  // src/components/components/Switch/index.tsx
6347
- var import_jsx_runtime115 = require("react/jsx-runtime");
6764
+ var import_jsx_runtime116 = require("react/jsx-runtime");
6348
6765
  function Switch2({
6349
6766
  name,
6350
6767
  label,
@@ -6356,9 +6773,9 @@ function Switch2({
6356
6773
  style
6357
6774
  }) {
6358
6775
  const form = useFormContext();
6359
- const controlId = (0, import_react24.useId)();
6776
+ const controlId = (0, import_react26.useId)();
6360
6777
  const inForm = form?.inForm === true && typeof name === "string" && name !== "";
6361
- (0, import_react24.useEffect)(() => {
6778
+ (0, import_react26.useEffect)(() => {
6362
6779
  if (inForm && form && name) {
6363
6780
  form.registerField(name, rules, value);
6364
6781
  return () => form.unregisterField(name);
@@ -6373,13 +6790,13 @@ function Switch2({
6373
6790
  }
6374
6791
  onChange?.(next);
6375
6792
  };
6376
- const control = /* @__PURE__ */ (0, import_jsx_runtime115.jsxs)(
6793
+ const control = /* @__PURE__ */ (0, import_jsx_runtime116.jsxs)(
6377
6794
  "span",
6378
6795
  {
6379
6796
  className: cn("inline-flex items-center gap-2", !inForm && className),
6380
6797
  style: inForm ? void 0 : style,
6381
6798
  children: [
6382
- /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(
6799
+ /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(
6383
6800
  Switch,
6384
6801
  {
6385
6802
  id: controlId,
@@ -6389,12 +6806,12 @@ function Switch2({
6389
6806
  onCheckedChange: handleChange
6390
6807
  }
6391
6808
  ),
6392
- label ? /* @__PURE__ */ (0, import_jsx_runtime115.jsx)("label", { htmlFor: controlId, className: "text-sm leading-none font-medium", children: label }) : null
6809
+ label ? /* @__PURE__ */ (0, import_jsx_runtime116.jsx)("label", { htmlFor: controlId, className: "text-sm leading-none font-medium", children: label }) : null
6393
6810
  ]
6394
6811
  }
6395
6812
  );
6396
6813
  if (inForm && form && name) {
6397
- return /* @__PURE__ */ (0, import_jsx_runtime115.jsxs)(
6814
+ return /* @__PURE__ */ (0, import_jsx_runtime116.jsxs)(
6398
6815
  "div",
6399
6816
  {
6400
6817
  "data-slot": "form-item",
@@ -6402,7 +6819,7 @@ function Switch2({
6402
6819
  style,
6403
6820
  children: [
6404
6821
  control,
6405
- form.errors[name] ? /* @__PURE__ */ (0, import_jsx_runtime115.jsx)("div", { "data-slot": "form-error", className: "mt-1.5 text-sm text-destructive", children: form.errors[name] }) : null
6822
+ form.errors[name] ? /* @__PURE__ */ (0, import_jsx_runtime116.jsx)("div", { "data-slot": "form-error", className: "mt-1.5 text-sm text-destructive", children: form.errors[name] }) : null
6406
6823
  ]
6407
6824
  }
6408
6825
  );
@@ -6411,9 +6828,9 @@ function Switch2({
6411
6828
  }
6412
6829
 
6413
6830
  // src/components/components/Table/index.tsx
6414
- var import_runtime18 = require("@pactor-app/runtime");
6415
- var import_react25 = require("react");
6416
- var import_jsx_runtime116 = require("react/jsx-runtime");
6831
+ var import_runtime19 = require("@pactor-app/runtime");
6832
+ var import_react27 = require("react");
6833
+ var import_jsx_runtime117 = require("react/jsx-runtime");
6417
6834
  function renderCellValue2(value) {
6418
6835
  if (value === void 0 || value === null) {
6419
6836
  return "";
@@ -6433,9 +6850,9 @@ function Table3({
6433
6850
  className,
6434
6851
  style
6435
6852
  }) {
6436
- const { renderChildren } = (0, import_runtime18.useRenderer)();
6437
- const { t } = (0, import_runtime18.useI18n)();
6438
- const [current, setCurrent] = (0, import_react25.useState)(1);
6853
+ const { renderChildren } = (0, import_runtime19.useRenderer)();
6854
+ const { t } = (0, import_runtime19.useI18n)();
6855
+ const [current, setCurrent] = (0, import_react27.useState)(1);
6439
6856
  const pageSize = pagination === false ? void 0 : pagination?.pageSize;
6440
6857
  const total = dataSource.length;
6441
6858
  const pageCount = pageSize !== void 0 && pageSize > 0 ? Math.max(1, Math.ceil(total / pageSize)) : 1;
@@ -6444,8 +6861,8 @@ function Table3({
6444
6861
  setCurrent(page);
6445
6862
  onChange?.({ current: page, pageSize, total });
6446
6863
  };
6447
- return /* @__PURE__ */ (0, import_jsx_runtime116.jsxs)("div", { "data-slot": "dsl-table", className: cn("relative", className), style, children: [
6448
- loading ? /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(
6864
+ return /* @__PURE__ */ (0, import_jsx_runtime117.jsxs)("div", { "data-slot": "dsl-table", className: cn("relative", className), style, children: [
6865
+ loading ? /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(
6449
6866
  "div",
6450
6867
  {
6451
6868
  "data-slot": "table-loading",
@@ -6453,8 +6870,8 @@ function Table3({
6453
6870
  children: t("pactor.table.loading")
6454
6871
  }
6455
6872
  ) : null,
6456
- /* @__PURE__ */ (0, import_jsx_runtime116.jsxs)(Table2, { children: [
6457
- /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(TableHeader, { children: /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(TableRow, { className: "hover:bg-transparent", children: columns.map((column, index) => /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(
6873
+ /* @__PURE__ */ (0, import_jsx_runtime117.jsxs)(Table2, { children: [
6874
+ /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(TableHeader, { children: /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(TableRow, { className: "hover:bg-transparent", children: columns.map((column, index) => /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(
6458
6875
  TableHead,
6459
6876
  {
6460
6877
  style: column.width !== void 0 ? { width: column.width } : void 0,
@@ -6462,7 +6879,7 @@ function Table3({
6462
6879
  },
6463
6880
  column.dataIndex ?? String(index)
6464
6881
  )) }) }),
6465
- /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(TableBody, { children: pageRows.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(TableRow, { className: "hover:bg-transparent", children: /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(TableCell, { colSpan: Math.max(1, columns.length), children: /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(
6882
+ /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(TableBody, { children: pageRows.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(TableRow, { className: "hover:bg-transparent", children: /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(TableCell, { colSpan: Math.max(1, columns.length), children: /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(
6466
6883
  "div",
6467
6884
  {
6468
6885
  "data-slot": "table-empty",
@@ -6471,10 +6888,10 @@ function Table3({
6471
6888
  }
6472
6889
  ) }) }) : pageRows.map((row, rowIndex) => {
6473
6890
  const key = row[rowKey];
6474
- return /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(
6891
+ return /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(
6475
6892
  TableRow,
6476
6893
  {
6477
- children: columns.map((column, columnIndex) => /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(TableCell, { children: column.cell ? renderChildren([column.cell], { row, rowIndex }) : renderCellValue2(
6894
+ children: columns.map((column, columnIndex) => /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(TableCell, { children: column.cell ? renderChildren([column.cell], { row, rowIndex }) : renderCellValue2(
6478
6895
  column.dataIndex === void 0 ? void 0 : row[column.dataIndex]
6479
6896
  ) }, column.dataIndex ?? String(columnIndex)))
6480
6897
  },
@@ -6482,8 +6899,8 @@ function Table3({
6482
6899
  );
6483
6900
  }) })
6484
6901
  ] }),
6485
- pageSize !== void 0 && pageSize > 0 ? /* @__PURE__ */ (0, import_jsx_runtime116.jsx)("div", { "data-slot": "table-pagination", className: "mt-3 flex justify-end gap-1", children: Array.from({ length: pageCount }, (_, index) => index + 1).map(
6486
- (page) => /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(
6902
+ pageSize !== void 0 && pageSize > 0 ? /* @__PURE__ */ (0, import_jsx_runtime117.jsx)("div", { "data-slot": "table-pagination", className: "mt-3 flex justify-end gap-1", children: Array.from({ length: pageCount }, (_, index) => index + 1).map(
6903
+ (page) => /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(
6487
6904
  Button,
6488
6905
  {
6489
6906
  type: "button",
@@ -6500,16 +6917,16 @@ function Table3({
6500
6917
  }
6501
6918
 
6502
6919
  // src/components/components/Tabs/index.tsx
6503
- var import_runtime19 = require("@pactor-app/runtime");
6920
+ var import_runtime20 = require("@pactor-app/runtime");
6504
6921
 
6505
6922
  // src/ui/tabs.tsx
6506
6923
  var import_tabs = require("@base-ui/react/tabs");
6507
- var import_jsx_runtime117 = require("react/jsx-runtime");
6924
+ var import_jsx_runtime118 = require("react/jsx-runtime");
6508
6925
  function Tabs({
6509
6926
  className,
6510
6927
  ...props
6511
6928
  }) {
6512
- return /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(
6929
+ return /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(
6513
6930
  import_tabs.Tabs.Root,
6514
6931
  {
6515
6932
  "data-slot": "tabs",
@@ -6522,7 +6939,7 @@ function TabsList({
6522
6939
  className,
6523
6940
  ...props
6524
6941
  }) {
6525
- return /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(
6942
+ return /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(
6526
6943
  import_tabs.Tabs.List,
6527
6944
  {
6528
6945
  "data-slot": "tabs-list",
@@ -6538,7 +6955,7 @@ function TabsTrigger({
6538
6955
  className,
6539
6956
  ...props
6540
6957
  }) {
6541
- return /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(
6958
+ return /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(
6542
6959
  import_tabs.Tabs.Tab,
6543
6960
  {
6544
6961
  "data-slot": "tabs-trigger",
@@ -6554,7 +6971,7 @@ function TabsContent({
6554
6971
  className,
6555
6972
  ...props
6556
6973
  }) {
6557
- return /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(
6974
+ return /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(
6558
6975
  import_tabs.Tabs.Panel,
6559
6976
  {
6560
6977
  "data-slot": "tabs-content",
@@ -6565,10 +6982,10 @@ function TabsContent({
6565
6982
  }
6566
6983
 
6567
6984
  // src/components/components/Tabs/index.tsx
6568
- var import_jsx_runtime118 = require("react/jsx-runtime");
6985
+ var import_jsx_runtime119 = require("react/jsx-runtime");
6569
6986
  function Tabs2({ items = [], activeKey, onChange, className, style }) {
6570
- const { renderChildren } = (0, import_runtime19.useRenderer)();
6571
- return /* @__PURE__ */ (0, import_jsx_runtime118.jsxs)(
6987
+ const { renderChildren } = (0, import_runtime20.useRenderer)();
6988
+ return /* @__PURE__ */ (0, import_jsx_runtime119.jsxs)(
6572
6989
  Tabs,
6573
6990
  {
6574
6991
  value: activeKey,
@@ -6577,15 +6994,15 @@ function Tabs2({ items = [], activeKey, onChange, className, style }) {
6577
6994
  className,
6578
6995
  style,
6579
6996
  children: [
6580
- /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(TabsList, { children: items.map((item) => /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(TabsTrigger, { value: item.key, children: item.label }, item.key)) }),
6581
- items.map((item) => /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(TabsContent, { value: item.key, children: renderChildren(item.children) }, item.key))
6997
+ /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(TabsList, { children: items.map((item) => /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(TabsTrigger, { value: item.key, children: item.label }, item.key)) }),
6998
+ items.map((item) => /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(TabsContent, { value: item.key, children: renderChildren(item.children) }, item.key))
6582
6999
  ]
6583
7000
  }
6584
7001
  );
6585
7002
  }
6586
7003
 
6587
7004
  // src/components/components/Text/index.tsx
6588
- var import_jsx_runtime119 = require("react/jsx-runtime");
7005
+ var import_jsx_runtime120 = require("react/jsx-runtime");
6589
7006
  var typeClassMap = {
6590
7007
  default: "",
6591
7008
  secondary: "text-muted-foreground",
@@ -6604,7 +7021,7 @@ function Text({
6604
7021
  style,
6605
7022
  children
6606
7023
  }) {
6607
- return /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(
7024
+ return /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(
6608
7025
  "span",
6609
7026
  {
6610
7027
  "data-slot": "text",
@@ -6624,8 +7041,8 @@ function Text({
6624
7041
  }
6625
7042
 
6626
7043
  // src/components/components/Textarea/index.tsx
6627
- var import_react26 = require("react");
6628
- var import_jsx_runtime120 = require("react/jsx-runtime");
7044
+ var import_react28 = require("react");
7045
+ var import_jsx_runtime121 = require("react/jsx-runtime");
6629
7046
  function Textarea2({
6630
7047
  name,
6631
7048
  label,
@@ -6639,9 +7056,9 @@ function Textarea2({
6639
7056
  style
6640
7057
  }) {
6641
7058
  const form = useFormContext();
6642
- const controlId = (0, import_react26.useId)();
7059
+ const controlId = (0, import_react28.useId)();
6643
7060
  const inForm = form?.inForm === true && typeof name === "string" && name !== "";
6644
- (0, import_react26.useEffect)(() => {
7061
+ (0, import_react28.useEffect)(() => {
6645
7062
  if (inForm && form && name) {
6646
7063
  form.registerField(name, rules, value);
6647
7064
  return () => form.unregisterField(name);
@@ -6650,7 +7067,7 @@ function Textarea2({
6650
7067
  });
6651
7068
  if (inForm && form && name) {
6652
7069
  const fieldValue = form.values[name];
6653
- return /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(
7070
+ return /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(
6654
7071
  FieldShell,
6655
7072
  {
6656
7073
  layout: form.layout,
@@ -6659,7 +7076,7 @@ function Textarea2({
6659
7076
  error: form.errors[name],
6660
7077
  className,
6661
7078
  style,
6662
- children: /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(
7079
+ children: /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(
6663
7080
  Textarea,
6664
7081
  {
6665
7082
  id: controlId,
@@ -6676,7 +7093,7 @@ function Textarea2({
6676
7093
  }
6677
7094
  );
6678
7095
  }
6679
- return /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(
7096
+ return /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(
6680
7097
  Textarea,
6681
7098
  {
6682
7099
  value: value ?? "",
@@ -6693,7 +7110,7 @@ function Textarea2({
6693
7110
  // src/ui/toggle.tsx
6694
7111
  var import_toggle = require("@base-ui/react/toggle");
6695
7112
  var import_class_variance_authority7 = require("class-variance-authority");
6696
- var import_jsx_runtime121 = require("react/jsx-runtime");
7113
+ var import_jsx_runtime122 = require("react/jsx-runtime");
6697
7114
  var toggleVariants = (0, import_class_variance_authority7.cva)(
6698
7115
  "inline-flex cursor-pointer items-center justify-center gap-2 rounded-md text-sm font-medium whitespace-nowrap transition-colors outline-none hover:bg-muted hover:text-muted-foreground focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 data-pressed:bg-accent data-pressed:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
6699
7116
  {
@@ -6720,7 +7137,7 @@ function Toggle({
6720
7137
  size,
6721
7138
  ...props
6722
7139
  }) {
6723
- return /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(
7140
+ return /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(
6724
7141
  import_toggle.Toggle,
6725
7142
  {
6726
7143
  "data-slot": "toggle",
@@ -6731,7 +7148,7 @@ function Toggle({
6731
7148
  }
6732
7149
 
6733
7150
  // src/components/components/Toggle/index.tsx
6734
- var import_jsx_runtime122 = require("react/jsx-runtime");
7151
+ var import_jsx_runtime123 = require("react/jsx-runtime");
6735
7152
  function Toggle2({
6736
7153
  text,
6737
7154
  pressed,
@@ -6742,7 +7159,7 @@ function Toggle2({
6742
7159
  className,
6743
7160
  style
6744
7161
  }) {
6745
- return /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(
7162
+ return /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(
6746
7163
  Toggle,
6747
7164
  {
6748
7165
  pressed,
@@ -6761,7 +7178,7 @@ function Toggle2({
6761
7178
  var import_toggle3 = require("@base-ui/react/toggle");
6762
7179
  var import_toggle_group = require("@base-ui/react/toggle-group");
6763
7180
  var React5 = __toESM(require("react"), 1);
6764
- var import_jsx_runtime123 = require("react/jsx-runtime");
7181
+ var import_jsx_runtime124 = require("react/jsx-runtime");
6765
7182
  var ToggleGroupContext = React5.createContext({
6766
7183
  size: "default",
6767
7184
  variant: "default"
@@ -6773,18 +7190,18 @@ function ToggleGroup({
6773
7190
  children,
6774
7191
  ...props
6775
7192
  }) {
6776
- return /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(
7193
+ return /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
6777
7194
  import_toggle_group.ToggleGroup,
6778
7195
  {
6779
7196
  "data-slot": "toggle-group",
6780
7197
  "data-variant": variant,
6781
7198
  "data-size": size,
6782
7199
  className: cn(
6783
- "group/toggle-group flex w-fit items-center rounded-md [&>[data-slot=toggle]]:rounded-none [&>[data-slot=toggle]]:first:rounded-l-md [&>[data-slot=toggle]]:last:rounded-r-md",
7200
+ "group/toggle-group flex w-fit items-center gap-1 rounded-md",
6784
7201
  className
6785
7202
  ),
6786
7203
  ...props,
6787
- children: /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(ToggleGroupContext.Provider, { value: { variant, size }, children })
7204
+ children: /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(ToggleGroupContext.Provider, { value: { variant, size }, children })
6788
7205
  }
6789
7206
  );
6790
7207
  }
@@ -6796,7 +7213,7 @@ function ToggleGroupItem({
6796
7213
  ...props
6797
7214
  }) {
6798
7215
  const context = React5.useContext(ToggleGroupContext);
6799
- return /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(
7216
+ return /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
6800
7217
  import_toggle3.Toggle,
6801
7218
  {
6802
7219
  "data-slot": "toggle-group-item",
@@ -6817,7 +7234,7 @@ function ToggleGroupItem({
6817
7234
  }
6818
7235
 
6819
7236
  // src/components/components/ToggleGroup/index.tsx
6820
- var import_jsx_runtime124 = require("react/jsx-runtime");
7237
+ var import_jsx_runtime125 = require("react/jsx-runtime");
6821
7238
  function ToggleGroup2({
6822
7239
  options = [],
6823
7240
  value,
@@ -6837,7 +7254,7 @@ function ToggleGroup2({
6837
7254
  onChange?.(added ?? void 0);
6838
7255
  }
6839
7256
  };
6840
- return /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
7257
+ return /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(
6841
7258
  ToggleGroup,
6842
7259
  {
6843
7260
  value: groupValue,
@@ -6846,7 +7263,7 @@ function ToggleGroup2({
6846
7263
  onValueChange: (next) => handleChange(next),
6847
7264
  className,
6848
7265
  style,
6849
- children: options.map((option) => /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
7266
+ children: options.map((option) => /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(
6850
7267
  ToggleGroupItem,
6851
7268
  {
6852
7269
  value: option.value,
@@ -6860,17 +7277,17 @@ function ToggleGroup2({
6860
7277
  }
6861
7278
 
6862
7279
  // src/components/components/Tooltip/index.tsx
6863
- var import_jsx_runtime125 = require("react/jsx-runtime");
7280
+ var import_jsx_runtime126 = require("react/jsx-runtime");
6864
7281
  function Tooltip3({ content, children, className, style }) {
6865
- return /* @__PURE__ */ (0, import_jsx_runtime125.jsxs)(Tooltip2, { children: [
6866
- /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(TooltipTrigger, { render: triggerWrapper("tooltip-trigger-wrap"), children }),
6867
- /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(TooltipContent, { className, style, children: content })
7282
+ return /* @__PURE__ */ (0, import_jsx_runtime126.jsxs)(Tooltip2, { children: [
7283
+ /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(TooltipTrigger, { render: triggerWrapper("tooltip-trigger-wrap"), children }),
7284
+ /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(TooltipContent, { className, style, children: content })
6868
7285
  ] });
6869
7286
  }
6870
7287
 
6871
7288
  // src/ui/typography.tsx
6872
7289
  var import_class_variance_authority8 = require("class-variance-authority");
6873
- var import_jsx_runtime126 = require("react/jsx-runtime");
7290
+ var import_jsx_runtime127 = require("react/jsx-runtime");
6874
7291
  var typographyVariants = (0, import_class_variance_authority8.cva)("", {
6875
7292
  variants: {
6876
7293
  variant: {
@@ -6906,7 +7323,7 @@ var variantTagMap = {
6906
7323
  };
6907
7324
  function Typography({ className, variant = "p", ...props }) {
6908
7325
  const Tag2 = variantTagMap[variant ?? "p"];
6909
- return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
7326
+ return /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(
6910
7327
  Tag2,
6911
7328
  {
6912
7329
  "data-slot": "typography",
@@ -6918,14 +7335,14 @@ function Typography({ className, variant = "p", ...props }) {
6918
7335
  }
6919
7336
 
6920
7337
  // src/components/components/Typography/index.tsx
6921
- var import_jsx_runtime127 = require("react/jsx-runtime");
7338
+ var import_jsx_runtime128 = require("react/jsx-runtime");
6922
7339
  function Typography2({
6923
7340
  variant = "p",
6924
7341
  text,
6925
7342
  className,
6926
7343
  style
6927
7344
  }) {
6928
- return /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(Typography, { variant, className, style, children: text });
7345
+ return /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(Typography, { variant, className, style, children: text });
6929
7346
  }
6930
7347
 
6931
7348
  // src/components/register.ts
@@ -6990,6 +7407,7 @@ var builtinComponents = {
6990
7407
  HoverCard: HoverCard2,
6991
7408
  // 复合类扩展组件(第三批)
6992
7409
  Calendar: Calendar2,
7410
+ DatePicker,
6993
7411
  InputOTP: InputOTP2,
6994
7412
  Combobox: Combobox2,
6995
7413
  Carousel: Carousel2,
@@ -7042,6 +7460,7 @@ function createComponentRegistry() {
7042
7460
  Content,
7043
7461
  ContextMenu,
7044
7462
  DataTable,
7463
+ DatePicker,
7045
7464
  Dialog,
7046
7465
  Drawer,
7047
7466
  DropdownMenu,