@codapet/design-system 0.4.1 → 0.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -2349,35 +2349,354 @@ function DateInput({
2349
2349
  ] }) });
2350
2350
  }
2351
2351
 
2352
+ // src/components/ui/date-range-input.tsx
2353
+ import "class-variance-authority";
2354
+ import { format as dateFnsFormat2, parse as dateFnsParse2, isValid as isValid2 } from "date-fns";
2355
+ import { CalendarDays as CalendarDays2 } from "lucide-react";
2356
+ import * as React21 from "react";
2357
+ import { jsx as jsx23, jsxs as jsxs11 } from "react/jsx-runtime";
2358
+ var DATE_FORMAT_TOKENS2 = {
2359
+ "MM/DD/YYYY": "MM/dd/yyyy",
2360
+ "DD/MM/YYYY": "dd/MM/yyyy",
2361
+ "YYYY-MM-DD": "yyyy-MM-dd",
2362
+ "DD-MM-YYYY": "dd-MM-yyyy",
2363
+ "MM-DD-YYYY": "MM-dd-yyyy",
2364
+ "DD.MM.YYYY": "dd.MM.yyyy",
2365
+ "MMMM D, YYYY": "MMMM d, yyyy",
2366
+ "D MMMM YYYY": "d MMMM yyyy"
2367
+ };
2368
+ var DATE_FORMAT_PLACEHOLDER2 = {
2369
+ "MM/DD/YYYY": "mm/dd/yyyy",
2370
+ "DD/MM/YYYY": "dd/mm/yyyy",
2371
+ "YYYY-MM-DD": "yyyy-mm-dd",
2372
+ "DD-MM-YYYY": "dd-mm-yyyy",
2373
+ "MM-DD-YYYY": "mm-dd-yyyy",
2374
+ "DD.MM.YYYY": "dd.mm.yyyy",
2375
+ "MMMM D, YYYY": "Month d, yyyy",
2376
+ "D MMMM YYYY": "d Month yyyy"
2377
+ };
2378
+ var INPUT_PROP_KEYS2 = /* @__PURE__ */ new Set([
2379
+ "accept",
2380
+ "alt",
2381
+ "autoComplete",
2382
+ "autoFocus",
2383
+ "capture",
2384
+ "checked",
2385
+ "dirName",
2386
+ "form",
2387
+ "formAction",
2388
+ "formEncType",
2389
+ "formMethod",
2390
+ "formNoValidate",
2391
+ "formTarget",
2392
+ "height",
2393
+ "list",
2394
+ "maxLength",
2395
+ "minLength",
2396
+ "multiple",
2397
+ "name",
2398
+ "pattern",
2399
+ "readOnly",
2400
+ "required",
2401
+ "size",
2402
+ "src",
2403
+ "step",
2404
+ "type",
2405
+ "width",
2406
+ "id",
2407
+ "inputMode",
2408
+ "lang",
2409
+ "tabIndex",
2410
+ "title",
2411
+ "role",
2412
+ "style",
2413
+ "onFocus",
2414
+ "onFocusCapture",
2415
+ "onBlurCapture",
2416
+ "onInput",
2417
+ "onInvalid",
2418
+ "onKeyDownCapture",
2419
+ "onKeyPress",
2420
+ "onKeyPressCapture",
2421
+ "onKeyUp",
2422
+ "onKeyUpCapture",
2423
+ "onPaste",
2424
+ "onPasteCapture",
2425
+ "onPointerDown",
2426
+ "onPointerDownCapture",
2427
+ "onPointerUp",
2428
+ "onPointerUpCapture",
2429
+ "onMouseDown",
2430
+ "onMouseDownCapture",
2431
+ "onMouseUp",
2432
+ "onMouseUpCapture",
2433
+ "onCompositionEnd",
2434
+ "onCompositionStart",
2435
+ "onCompositionUpdate"
2436
+ ]);
2437
+ function formatDate2(date, dateFormat = "MM/DD/YYYY") {
2438
+ if (!date || !isValid2(date)) {
2439
+ return "";
2440
+ }
2441
+ return dateFnsFormat2(date, DATE_FORMAT_TOKENS2[dateFormat]);
2442
+ }
2443
+ function formatRange(range, dateFormat = "MM/DD/YYYY") {
2444
+ if (!range) return "";
2445
+ const from = formatDate2(range.from, dateFormat);
2446
+ const to = formatDate2(range.to, dateFormat);
2447
+ if (from && to) return `${from} \u2013 ${to}`;
2448
+ if (from) return `${from} \u2013`;
2449
+ return "";
2450
+ }
2451
+ function parseRange(value, dateFormat = "MM/DD/YYYY") {
2452
+ if (!value) return null;
2453
+ const parts = value.split(/\s*[\u2013\-]\s*/);
2454
+ const fromStr = parts[0]?.trim();
2455
+ if (!fromStr) return null;
2456
+ const fromParsed = dateFnsParse2(fromStr, DATE_FORMAT_TOKENS2[dateFormat], /* @__PURE__ */ new Date());
2457
+ if (!isValid2(fromParsed)) return null;
2458
+ const toStr = parts[1]?.trim();
2459
+ if (!toStr) return { from: fromParsed, to: void 0 };
2460
+ const toParsed = dateFnsParse2(toStr, DATE_FORMAT_TOKENS2[dateFormat], /* @__PURE__ */ new Date());
2461
+ if (!isValid2(toParsed)) return { from: fromParsed, to: void 0 };
2462
+ return { from: fromParsed, to: toParsed };
2463
+ }
2464
+ function rangePlaceholder(dateFormat) {
2465
+ const p = DATE_FORMAT_PLACEHOLDER2[dateFormat];
2466
+ return `${p} \u2013 ${p}`;
2467
+ }
2468
+ function DateRangeInput({
2469
+ dateRange,
2470
+ setDateRange,
2471
+ maxDate,
2472
+ minDate,
2473
+ disableFuture = true,
2474
+ className,
2475
+ inputClassName,
2476
+ calendarClassName,
2477
+ inputDisabled,
2478
+ dateFormat = "MM/DD/YYYY",
2479
+ selected,
2480
+ onSelect,
2481
+ month,
2482
+ onMonthChange,
2483
+ disabled: calendarDisabled,
2484
+ captionLayout = "dropdown",
2485
+ showOutsideDays = false,
2486
+ classNames,
2487
+ placeholder,
2488
+ onBlur,
2489
+ ...restProps
2490
+ }) {
2491
+ const resolvedPlaceholder = placeholder ?? rangePlaceholder(dateFormat);
2492
+ const [open, setOpen] = React21.useState(false);
2493
+ const [monthState, setMonthState] = React21.useState(
2494
+ dateRange?.from ?? null
2495
+ );
2496
+ const [value, setValue] = React21.useState(formatRange(dateRange, dateFormat));
2497
+ const [inputProps, calendarProps] = React21.useMemo(() => {
2498
+ const nextInputProps = {};
2499
+ const nextCalendarProps = {};
2500
+ for (const [key, val] of Object.entries(restProps)) {
2501
+ const isInputProp = INPUT_PROP_KEYS2.has(key) || key.startsWith("aria-") || key.startsWith("data-");
2502
+ if (isInputProp) {
2503
+ nextInputProps[key] = val;
2504
+ } else {
2505
+ nextCalendarProps[key] = val;
2506
+ }
2507
+ }
2508
+ return [
2509
+ nextInputProps,
2510
+ nextCalendarProps
2511
+ ];
2512
+ }, [restProps]);
2513
+ const today = React21.useMemo(() => {
2514
+ const d = /* @__PURE__ */ new Date();
2515
+ d.setHours(0, 0, 0, 0);
2516
+ return d;
2517
+ }, []);
2518
+ const effectiveMaxDate = React21.useMemo(() => {
2519
+ if (disableFuture) {
2520
+ if (maxDate) {
2521
+ const max = new Date(maxDate);
2522
+ max.setHours(0, 0, 0, 0);
2523
+ return max < today ? max : today;
2524
+ }
2525
+ return today;
2526
+ }
2527
+ if (maxDate) {
2528
+ const max = new Date(maxDate);
2529
+ max.setHours(0, 0, 0, 0);
2530
+ return max;
2531
+ }
2532
+ return void 0;
2533
+ }, [maxDate, disableFuture, today]);
2534
+ const effectiveMinDate = React21.useMemo(() => {
2535
+ if (minDate) {
2536
+ const min = new Date(minDate);
2537
+ min.setHours(0, 0, 0, 0);
2538
+ return min;
2539
+ }
2540
+ return null;
2541
+ }, [minDate]);
2542
+ React21.useEffect(() => {
2543
+ setValue(formatRange(dateRange, dateFormat));
2544
+ if (dateRange?.from) {
2545
+ setMonthState(dateRange.from);
2546
+ }
2547
+ }, [dateRange, dateFormat]);
2548
+ const effectiveMonth = month ?? monthState ?? void 0;
2549
+ const effectiveSelected = selected ?? dateRange;
2550
+ const isInputDisabled = inputDisabled ?? (typeof calendarDisabled === "boolean" ? calendarDisabled : false);
2551
+ const isWithinBounds = (d) => {
2552
+ const isAfterMin = !effectiveMinDate || d >= effectiveMinDate;
2553
+ const isBeforeMax = !effectiveMaxDate || d <= effectiveMaxDate;
2554
+ return isAfterMin && isBeforeMax;
2555
+ };
2556
+ const defaultCalendarDisabled = (date) => {
2557
+ const checkDate = new Date(date);
2558
+ checkDate.setHours(0, 0, 0, 0);
2559
+ return !isWithinBounds(checkDate);
2560
+ };
2561
+ const handleCalendarSelect = (range) => {
2562
+ if (onSelect) {
2563
+ onSelect(range);
2564
+ return;
2565
+ }
2566
+ setDateRange(range);
2567
+ };
2568
+ const resolvedCalendarProps = {
2569
+ ...calendarProps,
2570
+ mode: "range",
2571
+ selected: effectiveSelected,
2572
+ captionLayout,
2573
+ month: effectiveMonth,
2574
+ onMonthChange: onMonthChange ?? setMonthState,
2575
+ showOutsideDays,
2576
+ className: cn(
2577
+ "md:w-auto w-[calc(100vw-50px)] mx-auto h-[350px] overflow-y-auto md:h-auto m-2",
2578
+ calendarClassName
2579
+ ),
2580
+ classNames,
2581
+ onSelect: handleCalendarSelect,
2582
+ disabled: calendarDisabled ?? defaultCalendarDisabled
2583
+ };
2584
+ const handleInputChange = (e) => {
2585
+ const inputValue = e.target.value;
2586
+ setValue(inputValue);
2587
+ if (inputValue === "") {
2588
+ setDateRange(void 0);
2589
+ return;
2590
+ }
2591
+ const parsed = parseRange(inputValue, dateFormat);
2592
+ if (!parsed || !parsed.from) return;
2593
+ const from = new Date(parsed.from);
2594
+ from.setHours(0, 0, 0, 0);
2595
+ if (!isWithinBounds(from)) return;
2596
+ if (parsed.to) {
2597
+ const to = new Date(parsed.to);
2598
+ to.setHours(0, 0, 0, 0);
2599
+ if (isWithinBounds(to) && from <= to) {
2600
+ setDateRange(parsed);
2601
+ setMonthState(from);
2602
+ }
2603
+ } else {
2604
+ setDateRange({ from: parsed.from, to: void 0 });
2605
+ setMonthState(from);
2606
+ }
2607
+ };
2608
+ const handleBlur = (e) => {
2609
+ onBlur?.(e);
2610
+ if (value === "") {
2611
+ if (dateRange !== void 0) {
2612
+ setDateRange(void 0);
2613
+ }
2614
+ return;
2615
+ }
2616
+ const parsed = parseRange(value, dateFormat);
2617
+ if (!parsed || !parsed.from) {
2618
+ setValue(formatRange(dateRange, dateFormat));
2619
+ return;
2620
+ }
2621
+ const from = new Date(parsed.from);
2622
+ from.setHours(0, 0, 0, 0);
2623
+ if (!isWithinBounds(from)) {
2624
+ setValue(formatRange(dateRange, dateFormat));
2625
+ return;
2626
+ }
2627
+ if (parsed.to) {
2628
+ const to = new Date(parsed.to);
2629
+ to.setHours(0, 0, 0, 0);
2630
+ if (!isWithinBounds(to) || from > to) {
2631
+ setValue(formatRange(dateRange, dateFormat));
2632
+ }
2633
+ }
2634
+ };
2635
+ return /* @__PURE__ */ jsx23("div", { className: cn("relative flex gap-2", className), children: /* @__PURE__ */ jsxs11(Popover, { open, onOpenChange: setOpen, children: [
2636
+ /* @__PURE__ */ jsx23(PopoverTrigger, { asChild: true, disabled: isInputDisabled, children: /* @__PURE__ */ jsx23("div", { className: "w-full relative", children: /* @__PURE__ */ jsx23(
2637
+ Input,
2638
+ {
2639
+ value,
2640
+ placeholder: resolvedPlaceholder,
2641
+ className: cn("bg-background cursor-pointer", inputClassName),
2642
+ onChange: handleInputChange,
2643
+ onBlur: handleBlur,
2644
+ disabled: isInputDisabled,
2645
+ onKeyDown: (e) => {
2646
+ if (e.key === "ArrowDown" && !isInputDisabled) {
2647
+ e.preventDefault();
2648
+ setOpen(true);
2649
+ }
2650
+ },
2651
+ rightIcon: /* @__PURE__ */ jsx23(CalendarDays2, { className: "h-4 w-4 text-muted-foreground" }),
2652
+ rightIconOnClick: isInputDisabled ? void 0 : () => setOpen(!open),
2653
+ rightIconButtonProps: { disabled: isInputDisabled },
2654
+ ...inputProps
2655
+ }
2656
+ ) }) }),
2657
+ /* @__PURE__ */ jsx23(
2658
+ PopoverContent,
2659
+ {
2660
+ className: "w-auto overflow-hidden p-0",
2661
+ align: "end",
2662
+ alignOffset: -8,
2663
+ sideOffset: 10,
2664
+ side: "top",
2665
+ children: /* @__PURE__ */ jsx23(Calendar, { ...resolvedCalendarProps })
2666
+ }
2667
+ )
2668
+ ] }) });
2669
+ }
2670
+
2352
2671
  // src/components/ui/drawer.tsx
2353
2672
  import "react";
2354
2673
  import { Drawer as DrawerPrimitive } from "vaul";
2355
- import { jsx as jsx23, jsxs as jsxs11 } from "react/jsx-runtime";
2674
+ import { jsx as jsx24, jsxs as jsxs12 } from "react/jsx-runtime";
2356
2675
  function Drawer({
2357
2676
  ...props
2358
2677
  }) {
2359
- return /* @__PURE__ */ jsx23(DrawerPrimitive.Root, { "data-slot": "drawer", ...props, repositionInputs: false });
2678
+ return /* @__PURE__ */ jsx24(DrawerPrimitive.Root, { "data-slot": "drawer", ...props, repositionInputs: false });
2360
2679
  }
2361
2680
  function DrawerTrigger({
2362
2681
  ...props
2363
2682
  }) {
2364
- return /* @__PURE__ */ jsx23(DrawerPrimitive.Trigger, { "data-slot": "drawer-trigger", ...props });
2683
+ return /* @__PURE__ */ jsx24(DrawerPrimitive.Trigger, { "data-slot": "drawer-trigger", ...props });
2365
2684
  }
2366
2685
  function DrawerPortal({
2367
2686
  ...props
2368
2687
  }) {
2369
- return /* @__PURE__ */ jsx23(DrawerPrimitive.Portal, { "data-slot": "drawer-portal", ...props });
2688
+ return /* @__PURE__ */ jsx24(DrawerPrimitive.Portal, { "data-slot": "drawer-portal", ...props });
2370
2689
  }
2371
2690
  function DrawerClose({
2372
2691
  ...props
2373
2692
  }) {
2374
- return /* @__PURE__ */ jsx23(DrawerPrimitive.Close, { "data-slot": "drawer-close", ...props });
2693
+ return /* @__PURE__ */ jsx24(DrawerPrimitive.Close, { "data-slot": "drawer-close", ...props });
2375
2694
  }
2376
2695
  function DrawerOverlay({
2377
2696
  className,
2378
2697
  ...props
2379
2698
  }) {
2380
- return /* @__PURE__ */ jsx23(
2699
+ return /* @__PURE__ */ jsx24(
2381
2700
  DrawerPrimitive.Overlay,
2382
2701
  {
2383
2702
  "data-slot": "drawer-overlay",
@@ -2395,9 +2714,9 @@ function DrawerContent({
2395
2714
  withCloseButton = true,
2396
2715
  ...props
2397
2716
  }) {
2398
- return /* @__PURE__ */ jsxs11(DrawerPortal, { "data-slot": "drawer-portal", children: [
2399
- /* @__PURE__ */ jsx23(DrawerOverlay, {}),
2400
- /* @__PURE__ */ jsxs11(
2717
+ return /* @__PURE__ */ jsxs12(DrawerPortal, { "data-slot": "drawer-portal", children: [
2718
+ /* @__PURE__ */ jsx24(DrawerOverlay, {}),
2719
+ /* @__PURE__ */ jsxs12(
2401
2720
  DrawerPrimitive.Content,
2402
2721
  {
2403
2722
  "data-slot": "drawer-content",
@@ -2411,7 +2730,7 @@ function DrawerContent({
2411
2730
  ),
2412
2731
  ...props,
2413
2732
  children: [
2414
- withCloseButton && /* @__PURE__ */ jsx23("div", { className: "bg-muted mx-auto mt-4 hidden h-2 w-[100px] shrink-0 rounded-full group-data-[vaul-drawer-direction=bottom]/drawer-content:block" }),
2733
+ withCloseButton && /* @__PURE__ */ jsx24("div", { className: "bg-muted mx-auto mt-4 hidden h-2 w-[100px] shrink-0 rounded-full group-data-[vaul-drawer-direction=bottom]/drawer-content:block" }),
2415
2734
  children
2416
2735
  ]
2417
2736
  }
@@ -2419,7 +2738,7 @@ function DrawerContent({
2419
2738
  ] });
2420
2739
  }
2421
2740
  function DrawerHeader({ className, ...props }) {
2422
- return /* @__PURE__ */ jsx23(
2741
+ return /* @__PURE__ */ jsx24(
2423
2742
  "div",
2424
2743
  {
2425
2744
  "data-slot": "drawer-header",
@@ -2432,7 +2751,7 @@ function DrawerHeader({ className, ...props }) {
2432
2751
  );
2433
2752
  }
2434
2753
  function DrawerFooter({ className, ...props }) {
2435
- return /* @__PURE__ */ jsx23(
2754
+ return /* @__PURE__ */ jsx24(
2436
2755
  "div",
2437
2756
  {
2438
2757
  "data-slot": "drawer-footer",
@@ -2445,7 +2764,7 @@ function DrawerTitle({
2445
2764
  className,
2446
2765
  ...props
2447
2766
  }) {
2448
- return /* @__PURE__ */ jsx23(
2767
+ return /* @__PURE__ */ jsx24(
2449
2768
  DrawerPrimitive.Title,
2450
2769
  {
2451
2770
  "data-slot": "drawer-title",
@@ -2458,7 +2777,7 @@ function DrawerDescription({
2458
2777
  className,
2459
2778
  ...props
2460
2779
  }) {
2461
- return /* @__PURE__ */ jsx23(
2780
+ return /* @__PURE__ */ jsx24(
2462
2781
  DrawerPrimitive.Description,
2463
2782
  {
2464
2783
  "data-slot": "drawer-description",
@@ -2472,21 +2791,21 @@ function DrawerDescription({
2472
2791
  import "react";
2473
2792
  import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
2474
2793
  import { CheckIcon as CheckIcon2, ChevronRightIcon as ChevronRightIcon3, CircleIcon as CircleIcon2 } from "lucide-react";
2475
- import { jsx as jsx24, jsxs as jsxs12 } from "react/jsx-runtime";
2794
+ import { jsx as jsx25, jsxs as jsxs13 } from "react/jsx-runtime";
2476
2795
  function DropdownMenu({
2477
2796
  ...props
2478
2797
  }) {
2479
- return /* @__PURE__ */ jsx24(DropdownMenuPrimitive.Root, { "data-slot": "dropdown-menu", ...props });
2798
+ return /* @__PURE__ */ jsx25(DropdownMenuPrimitive.Root, { "data-slot": "dropdown-menu", ...props });
2480
2799
  }
2481
2800
  function DropdownMenuPortal({
2482
2801
  ...props
2483
2802
  }) {
2484
- return /* @__PURE__ */ jsx24(DropdownMenuPrimitive.Portal, { "data-slot": "dropdown-menu-portal", ...props });
2803
+ return /* @__PURE__ */ jsx25(DropdownMenuPrimitive.Portal, { "data-slot": "dropdown-menu-portal", ...props });
2485
2804
  }
2486
2805
  function DropdownMenuTrigger({
2487
2806
  ...props
2488
2807
  }) {
2489
- return /* @__PURE__ */ jsx24(
2808
+ return /* @__PURE__ */ jsx25(
2490
2809
  DropdownMenuPrimitive.Trigger,
2491
2810
  {
2492
2811
  "data-slot": "dropdown-menu-trigger",
@@ -2499,7 +2818,7 @@ function DropdownMenuContent({
2499
2818
  sideOffset = 4,
2500
2819
  ...props
2501
2820
  }) {
2502
- return /* @__PURE__ */ jsx24(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx24(
2821
+ return /* @__PURE__ */ jsx25(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx25(
2503
2822
  DropdownMenuPrimitive.Content,
2504
2823
  {
2505
2824
  "data-slot": "dropdown-menu-content",
@@ -2515,7 +2834,7 @@ function DropdownMenuContent({
2515
2834
  function DropdownMenuGroup({
2516
2835
  ...props
2517
2836
  }) {
2518
- return /* @__PURE__ */ jsx24(DropdownMenuPrimitive.Group, { "data-slot": "dropdown-menu-group", ...props });
2837
+ return /* @__PURE__ */ jsx25(DropdownMenuPrimitive.Group, { "data-slot": "dropdown-menu-group", ...props });
2519
2838
  }
2520
2839
  function DropdownMenuItem({
2521
2840
  className,
@@ -2523,7 +2842,7 @@ function DropdownMenuItem({
2523
2842
  variant = "default",
2524
2843
  ...props
2525
2844
  }) {
2526
- return /* @__PURE__ */ jsx24(
2845
+ return /* @__PURE__ */ jsx25(
2527
2846
  DropdownMenuPrimitive.Item,
2528
2847
  {
2529
2848
  "data-slot": "dropdown-menu-item",
@@ -2543,7 +2862,7 @@ function DropdownMenuCheckboxItem({
2543
2862
  checked,
2544
2863
  ...props
2545
2864
  }) {
2546
- return /* @__PURE__ */ jsxs12(
2865
+ return /* @__PURE__ */ jsxs13(
2547
2866
  DropdownMenuPrimitive.CheckboxItem,
2548
2867
  {
2549
2868
  "data-slot": "dropdown-menu-checkbox-item",
@@ -2554,7 +2873,7 @@ function DropdownMenuCheckboxItem({
2554
2873
  checked,
2555
2874
  ...props,
2556
2875
  children: [
2557
- /* @__PURE__ */ jsx24("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx24(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx24(CheckIcon2, { className: "size-4" }) }) }),
2876
+ /* @__PURE__ */ jsx25("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx25(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx25(CheckIcon2, { className: "size-4" }) }) }),
2558
2877
  children
2559
2878
  ]
2560
2879
  }
@@ -2563,7 +2882,7 @@ function DropdownMenuCheckboxItem({
2563
2882
  function DropdownMenuRadioGroup({
2564
2883
  ...props
2565
2884
  }) {
2566
- return /* @__PURE__ */ jsx24(
2885
+ return /* @__PURE__ */ jsx25(
2567
2886
  DropdownMenuPrimitive.RadioGroup,
2568
2887
  {
2569
2888
  "data-slot": "dropdown-menu-radio-group",
@@ -2576,7 +2895,7 @@ function DropdownMenuRadioItem({
2576
2895
  children,
2577
2896
  ...props
2578
2897
  }) {
2579
- return /* @__PURE__ */ jsxs12(
2898
+ return /* @__PURE__ */ jsxs13(
2580
2899
  DropdownMenuPrimitive.RadioItem,
2581
2900
  {
2582
2901
  "data-slot": "dropdown-menu-radio-item",
@@ -2586,7 +2905,7 @@ function DropdownMenuRadioItem({
2586
2905
  ),
2587
2906
  ...props,
2588
2907
  children: [
2589
- /* @__PURE__ */ jsx24("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx24(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx24(CircleIcon2, { className: "size-2 fill-current" }) }) }),
2908
+ /* @__PURE__ */ jsx25("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx25(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx25(CircleIcon2, { className: "size-2 fill-current" }) }) }),
2590
2909
  children
2591
2910
  ]
2592
2911
  }
@@ -2597,7 +2916,7 @@ function DropdownMenuLabel({
2597
2916
  inset,
2598
2917
  ...props
2599
2918
  }) {
2600
- return /* @__PURE__ */ jsx24(
2919
+ return /* @__PURE__ */ jsx25(
2601
2920
  DropdownMenuPrimitive.Label,
2602
2921
  {
2603
2922
  "data-slot": "dropdown-menu-label",
@@ -2614,7 +2933,7 @@ function DropdownMenuSeparator({
2614
2933
  className,
2615
2934
  ...props
2616
2935
  }) {
2617
- return /* @__PURE__ */ jsx24(
2936
+ return /* @__PURE__ */ jsx25(
2618
2937
  DropdownMenuPrimitive.Separator,
2619
2938
  {
2620
2939
  "data-slot": "dropdown-menu-separator",
@@ -2627,7 +2946,7 @@ function DropdownMenuShortcut({
2627
2946
  className,
2628
2947
  ...props
2629
2948
  }) {
2630
- return /* @__PURE__ */ jsx24(
2949
+ return /* @__PURE__ */ jsx25(
2631
2950
  "span",
2632
2951
  {
2633
2952
  "data-slot": "dropdown-menu-shortcut",
@@ -2642,7 +2961,7 @@ function DropdownMenuShortcut({
2642
2961
  function DropdownMenuSub({
2643
2962
  ...props
2644
2963
  }) {
2645
- return /* @__PURE__ */ jsx24(DropdownMenuPrimitive.Sub, { "data-slot": "dropdown-menu-sub", ...props });
2964
+ return /* @__PURE__ */ jsx25(DropdownMenuPrimitive.Sub, { "data-slot": "dropdown-menu-sub", ...props });
2646
2965
  }
2647
2966
  function DropdownMenuSubTrigger({
2648
2967
  className,
@@ -2650,7 +2969,7 @@ function DropdownMenuSubTrigger({
2650
2969
  children,
2651
2970
  ...props
2652
2971
  }) {
2653
- return /* @__PURE__ */ jsxs12(
2972
+ return /* @__PURE__ */ jsxs13(
2654
2973
  DropdownMenuPrimitive.SubTrigger,
2655
2974
  {
2656
2975
  "data-slot": "dropdown-menu-sub-trigger",
@@ -2662,7 +2981,7 @@ function DropdownMenuSubTrigger({
2662
2981
  ...props,
2663
2982
  children: [
2664
2983
  children,
2665
- /* @__PURE__ */ jsx24(ChevronRightIcon3, { className: "ml-auto size-4" })
2984
+ /* @__PURE__ */ jsx25(ChevronRightIcon3, { className: "ml-auto size-4" })
2666
2985
  ]
2667
2986
  }
2668
2987
  );
@@ -2671,7 +2990,7 @@ function DropdownMenuSubContent({
2671
2990
  className,
2672
2991
  ...props
2673
2992
  }) {
2674
- return /* @__PURE__ */ jsx24(
2993
+ return /* @__PURE__ */ jsx25(
2675
2994
  DropdownMenuPrimitive.SubContent,
2676
2995
  {
2677
2996
  "data-slot": "dropdown-menu-sub-content",
@@ -2685,7 +3004,7 @@ function DropdownMenuSubContent({
2685
3004
  }
2686
3005
 
2687
3006
  // src/components/ui/form.tsx
2688
- import * as React24 from "react";
3007
+ import * as React25 from "react";
2689
3008
  import "@radix-ui/react-label";
2690
3009
  import { Slot as Slot5 } from "@radix-ui/react-slot";
2691
3010
  import {
@@ -2699,7 +3018,7 @@ import {
2699
3018
  import { Slot as Slot4 } from "@radix-ui/react-slot";
2700
3019
  import { cva as cva5 } from "class-variance-authority";
2701
3020
  import "react";
2702
- import { jsx as jsx25 } from "react/jsx-runtime";
3021
+ import { jsx as jsx26 } from "react/jsx-runtime";
2703
3022
  var labelTextVariants = cva5("font-sans font-semibold ", {
2704
3023
  variants: {
2705
3024
  size: {
@@ -2720,7 +3039,7 @@ function Label3({
2720
3039
  ...props
2721
3040
  }) {
2722
3041
  const Comp = asChild ? Slot4 : "label";
2723
- return /* @__PURE__ */ jsx25(
3042
+ return /* @__PURE__ */ jsx26(
2724
3043
  Comp,
2725
3044
  {
2726
3045
  "data-slot": "label",
@@ -2731,19 +3050,19 @@ function Label3({
2731
3050
  }
2732
3051
 
2733
3052
  // src/components/ui/form.tsx
2734
- import { jsx as jsx26 } from "react/jsx-runtime";
3053
+ import { jsx as jsx27 } from "react/jsx-runtime";
2735
3054
  var Form = FormProvider;
2736
- var FormFieldContext = React24.createContext(
3055
+ var FormFieldContext = React25.createContext(
2737
3056
  {}
2738
3057
  );
2739
3058
  var FormField = ({
2740
3059
  ...props
2741
3060
  }) => {
2742
- return /* @__PURE__ */ jsx26(FormFieldContext.Provider, { value: { name: props.name }, children: /* @__PURE__ */ jsx26(Controller, { ...props }) });
3061
+ return /* @__PURE__ */ jsx27(FormFieldContext.Provider, { value: { name: props.name }, children: /* @__PURE__ */ jsx27(Controller, { ...props }) });
2743
3062
  };
2744
3063
  var useFormField = () => {
2745
- const fieldContext = React24.useContext(FormFieldContext);
2746
- const itemContext = React24.useContext(FormItemContext);
3064
+ const fieldContext = React25.useContext(FormFieldContext);
3065
+ const itemContext = React25.useContext(FormItemContext);
2747
3066
  const { getFieldState } = useFormContext();
2748
3067
  const formState = useFormState({ name: fieldContext.name });
2749
3068
  const fieldState = getFieldState(fieldContext.name, formState);
@@ -2760,12 +3079,12 @@ var useFormField = () => {
2760
3079
  ...fieldState
2761
3080
  };
2762
3081
  };
2763
- var FormItemContext = React24.createContext(
3082
+ var FormItemContext = React25.createContext(
2764
3083
  {}
2765
3084
  );
2766
3085
  function FormItem({ className, ...props }) {
2767
- const id = React24.useId();
2768
- return /* @__PURE__ */ jsx26(FormItemContext.Provider, { value: { id }, children: /* @__PURE__ */ jsx26(
3086
+ const id = React25.useId();
3087
+ return /* @__PURE__ */ jsx27(FormItemContext.Provider, { value: { id }, children: /* @__PURE__ */ jsx27(
2769
3088
  "div",
2770
3089
  {
2771
3090
  "data-slot": "form-item",
@@ -2779,7 +3098,7 @@ function FormLabel({
2779
3098
  ...props
2780
3099
  }) {
2781
3100
  const { error, formItemId } = useFormField();
2782
- return /* @__PURE__ */ jsx26(
3101
+ return /* @__PURE__ */ jsx27(
2783
3102
  Label3,
2784
3103
  {
2785
3104
  "data-slot": "form-label",
@@ -2792,7 +3111,7 @@ function FormLabel({
2792
3111
  }
2793
3112
  function FormControl({ ...props }) {
2794
3113
  const { error, formItemId, formDescriptionId, formMessageId } = useFormField();
2795
- return /* @__PURE__ */ jsx26(
3114
+ return /* @__PURE__ */ jsx27(
2796
3115
  Slot5,
2797
3116
  {
2798
3117
  "data-slot": "form-control",
@@ -2805,7 +3124,7 @@ function FormControl({ ...props }) {
2805
3124
  }
2806
3125
  function FormDescription({ className, ...props }) {
2807
3126
  const { formDescriptionId } = useFormField();
2808
- return /* @__PURE__ */ jsx26(
3127
+ return /* @__PURE__ */ jsx27(
2809
3128
  "p",
2810
3129
  {
2811
3130
  "data-slot": "form-description",
@@ -2821,7 +3140,7 @@ function FormMessage({ className, ...props }) {
2821
3140
  if (!body) {
2822
3141
  return null;
2823
3142
  }
2824
- return /* @__PURE__ */ jsx26(
3143
+ return /* @__PURE__ */ jsx27(
2825
3144
  "p",
2826
3145
  {
2827
3146
  "data-slot": "form-message",
@@ -2836,16 +3155,16 @@ function FormMessage({ className, ...props }) {
2836
3155
  // src/components/ui/hover-card.tsx
2837
3156
  import "react";
2838
3157
  import * as HoverCardPrimitive from "@radix-ui/react-hover-card";
2839
- import { jsx as jsx27 } from "react/jsx-runtime";
3158
+ import { jsx as jsx28 } from "react/jsx-runtime";
2840
3159
  function HoverCard({
2841
3160
  ...props
2842
3161
  }) {
2843
- return /* @__PURE__ */ jsx27(HoverCardPrimitive.Root, { "data-slot": "hover-card", ...props });
3162
+ return /* @__PURE__ */ jsx28(HoverCardPrimitive.Root, { "data-slot": "hover-card", ...props });
2844
3163
  }
2845
3164
  function HoverCardTrigger({
2846
3165
  ...props
2847
3166
  }) {
2848
- return /* @__PURE__ */ jsx27(HoverCardPrimitive.Trigger, { "data-slot": "hover-card-trigger", ...props });
3167
+ return /* @__PURE__ */ jsx28(HoverCardPrimitive.Trigger, { "data-slot": "hover-card-trigger", ...props });
2849
3168
  }
2850
3169
  function HoverCardContent({
2851
3170
  className,
@@ -2853,7 +3172,7 @@ function HoverCardContent({
2853
3172
  sideOffset = 4,
2854
3173
  ...props
2855
3174
  }) {
2856
- return /* @__PURE__ */ jsx27(HoverCardPrimitive.Portal, { "data-slot": "hover-card-portal", children: /* @__PURE__ */ jsx27(
3175
+ return /* @__PURE__ */ jsx28(HoverCardPrimitive.Portal, { "data-slot": "hover-card-portal", children: /* @__PURE__ */ jsx28(
2857
3176
  HoverCardPrimitive.Content,
2858
3177
  {
2859
3178
  "data-slot": "hover-card-content",
@@ -2869,16 +3188,16 @@ function HoverCardContent({
2869
3188
  }
2870
3189
 
2871
3190
  // src/components/ui/input-otp.tsx
2872
- import * as React26 from "react";
3191
+ import * as React27 from "react";
2873
3192
  import { OTPInput, OTPInputContext } from "input-otp";
2874
3193
  import { MinusIcon } from "lucide-react";
2875
- import { jsx as jsx28, jsxs as jsxs13 } from "react/jsx-runtime";
3194
+ import { jsx as jsx29, jsxs as jsxs14 } from "react/jsx-runtime";
2876
3195
  function InputOTP({
2877
3196
  className,
2878
3197
  containerClassName,
2879
3198
  ...props
2880
3199
  }) {
2881
- return /* @__PURE__ */ jsx28(
3200
+ return /* @__PURE__ */ jsx29(
2882
3201
  OTPInput,
2883
3202
  {
2884
3203
  "data-slot": "input-otp",
@@ -2892,7 +3211,7 @@ function InputOTP({
2892
3211
  );
2893
3212
  }
2894
3213
  function InputOTPGroup({ className, ...props }) {
2895
- return /* @__PURE__ */ jsx28(
3214
+ return /* @__PURE__ */ jsx29(
2896
3215
  "div",
2897
3216
  {
2898
3217
  "data-slot": "input-otp-group",
@@ -2906,9 +3225,9 @@ function InputOTPSlot({
2906
3225
  className,
2907
3226
  ...props
2908
3227
  }) {
2909
- const inputOTPContext = React26.useContext(OTPInputContext);
3228
+ const inputOTPContext = React27.useContext(OTPInputContext);
2910
3229
  const { char, hasFakeCaret, isActive } = inputOTPContext?.slots[index] ?? {};
2911
- return /* @__PURE__ */ jsxs13(
3230
+ return /* @__PURE__ */ jsxs14(
2912
3231
  "div",
2913
3232
  {
2914
3233
  "data-slot": "input-otp-slot",
@@ -2920,25 +3239,25 @@ function InputOTPSlot({
2920
3239
  ...props,
2921
3240
  children: [
2922
3241
  char,
2923
- hasFakeCaret && /* @__PURE__ */ jsx28("div", { className: "pointer-events-none absolute inset-0 flex items-center justify-center", children: /* @__PURE__ */ jsx28("div", { className: "animate-caret-blink bg-foreground h-4 w-px duration-1000" }) })
3242
+ hasFakeCaret && /* @__PURE__ */ jsx29("div", { className: "pointer-events-none absolute inset-0 flex items-center justify-center", children: /* @__PURE__ */ jsx29("div", { className: "animate-caret-blink bg-foreground h-4 w-px duration-1000" }) })
2924
3243
  ]
2925
3244
  }
2926
3245
  );
2927
3246
  }
2928
3247
  function InputOTPSeparator({ ...props }) {
2929
- return /* @__PURE__ */ jsx28("div", { "data-slot": "input-otp-separator", role: "separator", ...props, children: /* @__PURE__ */ jsx28(MinusIcon, {}) });
3248
+ return /* @__PURE__ */ jsx29("div", { "data-slot": "input-otp-separator", role: "separator", ...props, children: /* @__PURE__ */ jsx29(MinusIcon, {}) });
2930
3249
  }
2931
3250
 
2932
3251
  // src/components/ui/menubar.tsx
2933
3252
  import "react";
2934
3253
  import * as MenubarPrimitive from "@radix-ui/react-menubar";
2935
3254
  import { CheckIcon as CheckIcon3, ChevronRightIcon as ChevronRightIcon4, CircleIcon as CircleIcon3 } from "lucide-react";
2936
- import { jsx as jsx29, jsxs as jsxs14 } from "react/jsx-runtime";
3255
+ import { jsx as jsx30, jsxs as jsxs15 } from "react/jsx-runtime";
2937
3256
  function Menubar({
2938
3257
  className,
2939
3258
  ...props
2940
3259
  }) {
2941
- return /* @__PURE__ */ jsx29(
3260
+ return /* @__PURE__ */ jsx30(
2942
3261
  MenubarPrimitive.Root,
2943
3262
  {
2944
3263
  "data-slot": "menubar",
@@ -2953,28 +3272,28 @@ function Menubar({
2953
3272
  function MenubarMenu({
2954
3273
  ...props
2955
3274
  }) {
2956
- return /* @__PURE__ */ jsx29(MenubarPrimitive.Menu, { "data-slot": "menubar-menu", ...props });
3275
+ return /* @__PURE__ */ jsx30(MenubarPrimitive.Menu, { "data-slot": "menubar-menu", ...props });
2957
3276
  }
2958
3277
  function MenubarGroup({
2959
3278
  ...props
2960
3279
  }) {
2961
- return /* @__PURE__ */ jsx29(MenubarPrimitive.Group, { "data-slot": "menubar-group", ...props });
3280
+ return /* @__PURE__ */ jsx30(MenubarPrimitive.Group, { "data-slot": "menubar-group", ...props });
2962
3281
  }
2963
3282
  function MenubarPortal({
2964
3283
  ...props
2965
3284
  }) {
2966
- return /* @__PURE__ */ jsx29(MenubarPrimitive.Portal, { "data-slot": "menubar-portal", ...props });
3285
+ return /* @__PURE__ */ jsx30(MenubarPrimitive.Portal, { "data-slot": "menubar-portal", ...props });
2967
3286
  }
2968
3287
  function MenubarRadioGroup({
2969
3288
  ...props
2970
3289
  }) {
2971
- return /* @__PURE__ */ jsx29(MenubarPrimitive.RadioGroup, { "data-slot": "menubar-radio-group", ...props });
3290
+ return /* @__PURE__ */ jsx30(MenubarPrimitive.RadioGroup, { "data-slot": "menubar-radio-group", ...props });
2972
3291
  }
2973
3292
  function MenubarTrigger({
2974
3293
  className,
2975
3294
  ...props
2976
3295
  }) {
2977
- return /* @__PURE__ */ jsx29(
3296
+ return /* @__PURE__ */ jsx30(
2978
3297
  MenubarPrimitive.Trigger,
2979
3298
  {
2980
3299
  "data-slot": "menubar-trigger",
@@ -2993,7 +3312,7 @@ function MenubarContent({
2993
3312
  sideOffset = 8,
2994
3313
  ...props
2995
3314
  }) {
2996
- return /* @__PURE__ */ jsx29(MenubarPortal, { children: /* @__PURE__ */ jsx29(
3315
+ return /* @__PURE__ */ jsx30(MenubarPortal, { children: /* @__PURE__ */ jsx30(
2997
3316
  MenubarPrimitive.Content,
2998
3317
  {
2999
3318
  "data-slot": "menubar-content",
@@ -3014,7 +3333,7 @@ function MenubarItem({
3014
3333
  variant = "default",
3015
3334
  ...props
3016
3335
  }) {
3017
- return /* @__PURE__ */ jsx29(
3336
+ return /* @__PURE__ */ jsx30(
3018
3337
  MenubarPrimitive.Item,
3019
3338
  {
3020
3339
  "data-slot": "menubar-item",
@@ -3034,7 +3353,7 @@ function MenubarCheckboxItem({
3034
3353
  checked,
3035
3354
  ...props
3036
3355
  }) {
3037
- return /* @__PURE__ */ jsxs14(
3356
+ return /* @__PURE__ */ jsxs15(
3038
3357
  MenubarPrimitive.CheckboxItem,
3039
3358
  {
3040
3359
  "data-slot": "menubar-checkbox-item",
@@ -3045,7 +3364,7 @@ function MenubarCheckboxItem({
3045
3364
  checked,
3046
3365
  ...props,
3047
3366
  children: [
3048
- /* @__PURE__ */ jsx29("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx29(MenubarPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx29(CheckIcon3, { className: "size-4" }) }) }),
3367
+ /* @__PURE__ */ jsx30("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx30(MenubarPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx30(CheckIcon3, { className: "size-4" }) }) }),
3049
3368
  children
3050
3369
  ]
3051
3370
  }
@@ -3056,7 +3375,7 @@ function MenubarRadioItem({
3056
3375
  children,
3057
3376
  ...props
3058
3377
  }) {
3059
- return /* @__PURE__ */ jsxs14(
3378
+ return /* @__PURE__ */ jsxs15(
3060
3379
  MenubarPrimitive.RadioItem,
3061
3380
  {
3062
3381
  "data-slot": "menubar-radio-item",
@@ -3066,7 +3385,7 @@ function MenubarRadioItem({
3066
3385
  ),
3067
3386
  ...props,
3068
3387
  children: [
3069
- /* @__PURE__ */ jsx29("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx29(MenubarPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx29(CircleIcon3, { className: "size-2 fill-current" }) }) }),
3388
+ /* @__PURE__ */ jsx30("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx30(MenubarPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx30(CircleIcon3, { className: "size-2 fill-current" }) }) }),
3070
3389
  children
3071
3390
  ]
3072
3391
  }
@@ -3077,7 +3396,7 @@ function MenubarLabel({
3077
3396
  inset,
3078
3397
  ...props
3079
3398
  }) {
3080
- return /* @__PURE__ */ jsx29(
3399
+ return /* @__PURE__ */ jsx30(
3081
3400
  MenubarPrimitive.Label,
3082
3401
  {
3083
3402
  "data-slot": "menubar-label",
@@ -3094,7 +3413,7 @@ function MenubarSeparator({
3094
3413
  className,
3095
3414
  ...props
3096
3415
  }) {
3097
- return /* @__PURE__ */ jsx29(
3416
+ return /* @__PURE__ */ jsx30(
3098
3417
  MenubarPrimitive.Separator,
3099
3418
  {
3100
3419
  "data-slot": "menubar-separator",
@@ -3107,7 +3426,7 @@ function MenubarShortcut({
3107
3426
  className,
3108
3427
  ...props
3109
3428
  }) {
3110
- return /* @__PURE__ */ jsx29(
3429
+ return /* @__PURE__ */ jsx30(
3111
3430
  "span",
3112
3431
  {
3113
3432
  "data-slot": "menubar-shortcut",
@@ -3122,7 +3441,7 @@ function MenubarShortcut({
3122
3441
  function MenubarSub({
3123
3442
  ...props
3124
3443
  }) {
3125
- return /* @__PURE__ */ jsx29(MenubarPrimitive.Sub, { "data-slot": "menubar-sub", ...props });
3444
+ return /* @__PURE__ */ jsx30(MenubarPrimitive.Sub, { "data-slot": "menubar-sub", ...props });
3126
3445
  }
3127
3446
  function MenubarSubTrigger({
3128
3447
  className,
@@ -3130,7 +3449,7 @@ function MenubarSubTrigger({
3130
3449
  children,
3131
3450
  ...props
3132
3451
  }) {
3133
- return /* @__PURE__ */ jsxs14(
3452
+ return /* @__PURE__ */ jsxs15(
3134
3453
  MenubarPrimitive.SubTrigger,
3135
3454
  {
3136
3455
  "data-slot": "menubar-sub-trigger",
@@ -3142,7 +3461,7 @@ function MenubarSubTrigger({
3142
3461
  ...props,
3143
3462
  children: [
3144
3463
  children,
3145
- /* @__PURE__ */ jsx29(ChevronRightIcon4, { className: "ml-auto h-4 w-4" })
3464
+ /* @__PURE__ */ jsx30(ChevronRightIcon4, { className: "ml-auto h-4 w-4" })
3146
3465
  ]
3147
3466
  }
3148
3467
  );
@@ -3151,7 +3470,7 @@ function MenubarSubContent({
3151
3470
  className,
3152
3471
  ...props
3153
3472
  }) {
3154
- return /* @__PURE__ */ jsx29(
3473
+ return /* @__PURE__ */ jsx30(
3155
3474
  MenubarPrimitive.SubContent,
3156
3475
  {
3157
3476
  "data-slot": "menubar-sub-content",
@@ -3169,14 +3488,14 @@ import "react";
3169
3488
  import * as NavigationMenuPrimitive from "@radix-ui/react-navigation-menu";
3170
3489
  import { cva as cva6 } from "class-variance-authority";
3171
3490
  import { ChevronDownIcon as ChevronDownIcon3 } from "lucide-react";
3172
- import { jsx as jsx30, jsxs as jsxs15 } from "react/jsx-runtime";
3491
+ import { jsx as jsx31, jsxs as jsxs16 } from "react/jsx-runtime";
3173
3492
  function NavigationMenu({
3174
3493
  className,
3175
3494
  children,
3176
3495
  viewport = true,
3177
3496
  ...props
3178
3497
  }) {
3179
- return /* @__PURE__ */ jsxs15(
3498
+ return /* @__PURE__ */ jsxs16(
3180
3499
  NavigationMenuPrimitive.Root,
3181
3500
  {
3182
3501
  "data-slot": "navigation-menu",
@@ -3188,7 +3507,7 @@ function NavigationMenu({
3188
3507
  ...props,
3189
3508
  children: [
3190
3509
  children,
3191
- viewport && /* @__PURE__ */ jsx30(NavigationMenuViewport, {})
3510
+ viewport && /* @__PURE__ */ jsx31(NavigationMenuViewport, {})
3192
3511
  ]
3193
3512
  }
3194
3513
  );
@@ -3197,7 +3516,7 @@ function NavigationMenuList({
3197
3516
  className,
3198
3517
  ...props
3199
3518
  }) {
3200
- return /* @__PURE__ */ jsx30(
3519
+ return /* @__PURE__ */ jsx31(
3201
3520
  NavigationMenuPrimitive.List,
3202
3521
  {
3203
3522
  "data-slot": "navigation-menu-list",
@@ -3213,7 +3532,7 @@ function NavigationMenuItem({
3213
3532
  className,
3214
3533
  ...props
3215
3534
  }) {
3216
- return /* @__PURE__ */ jsx30(
3535
+ return /* @__PURE__ */ jsx31(
3217
3536
  NavigationMenuPrimitive.Item,
3218
3537
  {
3219
3538
  "data-slot": "navigation-menu-item",
@@ -3230,7 +3549,7 @@ function NavigationMenuTrigger({
3230
3549
  children,
3231
3550
  ...props
3232
3551
  }) {
3233
- return /* @__PURE__ */ jsxs15(
3552
+ return /* @__PURE__ */ jsxs16(
3234
3553
  NavigationMenuPrimitive.Trigger,
3235
3554
  {
3236
3555
  "data-slot": "navigation-menu-trigger",
@@ -3239,7 +3558,7 @@ function NavigationMenuTrigger({
3239
3558
  children: [
3240
3559
  children,
3241
3560
  " ",
3242
- /* @__PURE__ */ jsx30(
3561
+ /* @__PURE__ */ jsx31(
3243
3562
  ChevronDownIcon3,
3244
3563
  {
3245
3564
  className: "relative top-[1px] ml-1 size-3 transition duration-400 group-data-[state=open]:rotate-180",
@@ -3254,7 +3573,7 @@ function NavigationMenuContent({
3254
3573
  className,
3255
3574
  ...props
3256
3575
  }) {
3257
- return /* @__PURE__ */ jsx30(
3576
+ return /* @__PURE__ */ jsx31(
3258
3577
  NavigationMenuPrimitive.Content,
3259
3578
  {
3260
3579
  "data-slot": "navigation-menu-content",
@@ -3271,13 +3590,13 @@ function NavigationMenuViewport({
3271
3590
  className,
3272
3591
  ...props
3273
3592
  }) {
3274
- return /* @__PURE__ */ jsx30(
3593
+ return /* @__PURE__ */ jsx31(
3275
3594
  "div",
3276
3595
  {
3277
3596
  className: cn(
3278
3597
  "absolute top-full left-0 isolate z-50 flex justify-center"
3279
3598
  ),
3280
- children: /* @__PURE__ */ jsx30(
3599
+ children: /* @__PURE__ */ jsx31(
3281
3600
  NavigationMenuPrimitive.Viewport,
3282
3601
  {
3283
3602
  "data-slot": "navigation-menu-viewport",
@@ -3295,7 +3614,7 @@ function NavigationMenuLink({
3295
3614
  className,
3296
3615
  ...props
3297
3616
  }) {
3298
- return /* @__PURE__ */ jsx30(
3617
+ return /* @__PURE__ */ jsx31(
3299
3618
  NavigationMenuPrimitive.Link,
3300
3619
  {
3301
3620
  "data-slot": "navigation-menu-link",
@@ -3311,7 +3630,7 @@ function NavigationMenuIndicator({
3311
3630
  className,
3312
3631
  ...props
3313
3632
  }) {
3314
- return /* @__PURE__ */ jsx30(
3633
+ return /* @__PURE__ */ jsx31(
3315
3634
  NavigationMenuPrimitive.Indicator,
3316
3635
  {
3317
3636
  "data-slot": "navigation-menu-indicator",
@@ -3320,7 +3639,7 @@ function NavigationMenuIndicator({
3320
3639
  className
3321
3640
  ),
3322
3641
  ...props,
3323
- children: /* @__PURE__ */ jsx30("div", { className: "bg-border relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm shadow-md" })
3642
+ children: /* @__PURE__ */ jsx31("div", { className: "bg-border relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm shadow-md" })
3324
3643
  }
3325
3644
  );
3326
3645
  }
@@ -3332,9 +3651,9 @@ import {
3332
3651
  ChevronRightIcon as ChevronRightIcon5,
3333
3652
  MoreHorizontalIcon
3334
3653
  } from "lucide-react";
3335
- import { jsx as jsx31, jsxs as jsxs16 } from "react/jsx-runtime";
3654
+ import { jsx as jsx32, jsxs as jsxs17 } from "react/jsx-runtime";
3336
3655
  function Pagination({ className, ...props }) {
3337
- return /* @__PURE__ */ jsx31(
3656
+ return /* @__PURE__ */ jsx32(
3338
3657
  "nav",
3339
3658
  {
3340
3659
  role: "navigation",
@@ -3349,7 +3668,7 @@ function PaginationContent({
3349
3668
  className,
3350
3669
  ...props
3351
3670
  }) {
3352
- return /* @__PURE__ */ jsx31(
3671
+ return /* @__PURE__ */ jsx32(
3353
3672
  "ul",
3354
3673
  {
3355
3674
  "data-slot": "pagination-content",
@@ -3359,7 +3678,7 @@ function PaginationContent({
3359
3678
  );
3360
3679
  }
3361
3680
  function PaginationItem({ ...props }) {
3362
- return /* @__PURE__ */ jsx31("li", { "data-slot": "pagination-item", ...props });
3681
+ return /* @__PURE__ */ jsx32("li", { "data-slot": "pagination-item", ...props });
3363
3682
  }
3364
3683
  function PaginationLink({
3365
3684
  className,
@@ -3367,7 +3686,7 @@ function PaginationLink({
3367
3686
  size = "icon",
3368
3687
  ...props
3369
3688
  }) {
3370
- return /* @__PURE__ */ jsx31(
3689
+ return /* @__PURE__ */ jsx32(
3371
3690
  "a",
3372
3691
  {
3373
3692
  "aria-current": isActive ? "page" : void 0,
@@ -3388,7 +3707,7 @@ function PaginationPrevious({
3388
3707
  className,
3389
3708
  ...props
3390
3709
  }) {
3391
- return /* @__PURE__ */ jsxs16(
3710
+ return /* @__PURE__ */ jsxs17(
3392
3711
  PaginationLink,
3393
3712
  {
3394
3713
  "aria-label": "Go to previous page",
@@ -3396,8 +3715,8 @@ function PaginationPrevious({
3396
3715
  className: cn("gap-1 px-2.5 sm:pl-2.5", className),
3397
3716
  ...props,
3398
3717
  children: [
3399
- /* @__PURE__ */ jsx31(ChevronLeftIcon2, {}),
3400
- /* @__PURE__ */ jsx31("span", { className: "hidden sm:block", children: "Previous" })
3718
+ /* @__PURE__ */ jsx32(ChevronLeftIcon2, {}),
3719
+ /* @__PURE__ */ jsx32("span", { className: "hidden sm:block", children: "Previous" })
3401
3720
  ]
3402
3721
  }
3403
3722
  );
@@ -3406,7 +3725,7 @@ function PaginationNext({
3406
3725
  className,
3407
3726
  ...props
3408
3727
  }) {
3409
- return /* @__PURE__ */ jsxs16(
3728
+ return /* @__PURE__ */ jsxs17(
3410
3729
  PaginationLink,
3411
3730
  {
3412
3731
  "aria-label": "Go to next page",
@@ -3414,8 +3733,8 @@ function PaginationNext({
3414
3733
  className: cn("gap-1 px-2.5 sm:pr-2.5", className),
3415
3734
  ...props,
3416
3735
  children: [
3417
- /* @__PURE__ */ jsx31("span", { className: "hidden sm:block", children: "Next" }),
3418
- /* @__PURE__ */ jsx31(ChevronRightIcon5, {})
3736
+ /* @__PURE__ */ jsx32("span", { className: "hidden sm:block", children: "Next" }),
3737
+ /* @__PURE__ */ jsx32(ChevronRightIcon5, {})
3419
3738
  ]
3420
3739
  }
3421
3740
  );
@@ -3424,7 +3743,7 @@ function PaginationEllipsis({
3424
3743
  className,
3425
3744
  ...props
3426
3745
  }) {
3427
- return /* @__PURE__ */ jsxs16(
3746
+ return /* @__PURE__ */ jsxs17(
3428
3747
  "span",
3429
3748
  {
3430
3749
  "aria-hidden": true,
@@ -3432,8 +3751,8 @@ function PaginationEllipsis({
3432
3751
  className: cn("flex size-9 items-center justify-center", className),
3433
3752
  ...props,
3434
3753
  children: [
3435
- /* @__PURE__ */ jsx31(MoreHorizontalIcon, { className: "size-4" }),
3436
- /* @__PURE__ */ jsx31("span", { className: "sr-only", children: "More pages" })
3754
+ /* @__PURE__ */ jsx32(MoreHorizontalIcon, { className: "size-4" }),
3755
+ /* @__PURE__ */ jsx32("span", { className: "sr-only", children: "More pages" })
3437
3756
  ]
3438
3757
  }
3439
3758
  );
@@ -3442,13 +3761,13 @@ function PaginationEllipsis({
3442
3761
  // src/components/ui/progress.tsx
3443
3762
  import * as ProgressPrimitive from "@radix-ui/react-progress";
3444
3763
  import "react";
3445
- import { jsx as jsx32 } from "react/jsx-runtime";
3764
+ import { jsx as jsx33 } from "react/jsx-runtime";
3446
3765
  function Progress({
3447
3766
  className,
3448
3767
  value,
3449
3768
  ...props
3450
3769
  }) {
3451
- return /* @__PURE__ */ jsx32(
3770
+ return /* @__PURE__ */ jsx33(
3452
3771
  ProgressPrimitive.Root,
3453
3772
  {
3454
3773
  "data-slot": "progress",
@@ -3457,7 +3776,7 @@ function Progress({
3457
3776
  className
3458
3777
  ),
3459
3778
  ...props,
3460
- children: /* @__PURE__ */ jsx32(
3779
+ children: /* @__PURE__ */ jsx33(
3461
3780
  ProgressPrimitive.Indicator,
3462
3781
  {
3463
3782
  "data-slot": "progress-indicator",
@@ -3473,12 +3792,12 @@ function Progress({
3473
3792
  import * as RadioGroupPrimitive from "@radix-ui/react-radio-group";
3474
3793
  import { CircleIcon as CircleIcon4 } from "lucide-react";
3475
3794
  import "react";
3476
- import { jsx as jsx33 } from "react/jsx-runtime";
3795
+ import { jsx as jsx34 } from "react/jsx-runtime";
3477
3796
  function RadioGroup4({
3478
3797
  className,
3479
3798
  ...props
3480
3799
  }) {
3481
- return /* @__PURE__ */ jsx33(
3800
+ return /* @__PURE__ */ jsx34(
3482
3801
  RadioGroupPrimitive.Root,
3483
3802
  {
3484
3803
  "data-slot": "radio-group",
@@ -3491,7 +3810,7 @@ function RadioGroupItem({
3491
3810
  className,
3492
3811
  ...props
3493
3812
  }) {
3494
- return /* @__PURE__ */ jsx33(
3813
+ return /* @__PURE__ */ jsx34(
3495
3814
  RadioGroupPrimitive.Item,
3496
3815
  {
3497
3816
  "data-slot": "radio-group-item",
@@ -3500,12 +3819,12 @@ function RadioGroupItem({
3500
3819
  className
3501
3820
  ),
3502
3821
  ...props,
3503
- children: /* @__PURE__ */ jsx33(
3822
+ children: /* @__PURE__ */ jsx34(
3504
3823
  RadioGroupPrimitive.Indicator,
3505
3824
  {
3506
3825
  "data-slot": "radio-group-indicator",
3507
3826
  className: "relative flex items-center justify-center",
3508
- children: /* @__PURE__ */ jsx33(CircleIcon4, { className: "fill-white absolute top-1/2 left-1/2 size-1.5 -translate-x-1/2 -translate-y-1/2" })
3827
+ children: /* @__PURE__ */ jsx34(CircleIcon4, { className: "fill-white absolute top-1/2 left-1/2 size-1.5 -translate-x-1/2 -translate-y-1/2" })
3509
3828
  }
3510
3829
  )
3511
3830
  }
@@ -3516,12 +3835,12 @@ function RadioGroupItem({
3516
3835
  import "react";
3517
3836
  import { GripVerticalIcon } from "lucide-react";
3518
3837
  import * as ResizablePrimitive from "react-resizable-panels";
3519
- import { jsx as jsx34 } from "react/jsx-runtime";
3838
+ import { jsx as jsx35 } from "react/jsx-runtime";
3520
3839
  function ResizablePanelGroup({
3521
3840
  className,
3522
3841
  ...props
3523
3842
  }) {
3524
- return /* @__PURE__ */ jsx34(
3843
+ return /* @__PURE__ */ jsx35(
3525
3844
  ResizablePrimitive.PanelGroup,
3526
3845
  {
3527
3846
  "data-slot": "resizable-panel-group",
@@ -3536,14 +3855,14 @@ function ResizablePanelGroup({
3536
3855
  function ResizablePanel({
3537
3856
  ...props
3538
3857
  }) {
3539
- return /* @__PURE__ */ jsx34(ResizablePrimitive.Panel, { "data-slot": "resizable-panel", ...props });
3858
+ return /* @__PURE__ */ jsx35(ResizablePrimitive.Panel, { "data-slot": "resizable-panel", ...props });
3540
3859
  }
3541
3860
  function ResizableHandle({
3542
3861
  withHandle,
3543
3862
  className,
3544
3863
  ...props
3545
3864
  }) {
3546
- return /* @__PURE__ */ jsx34(
3865
+ return /* @__PURE__ */ jsx35(
3547
3866
  ResizablePrimitive.PanelResizeHandle,
3548
3867
  {
3549
3868
  "data-slot": "resizable-handle",
@@ -3552,7 +3871,7 @@ function ResizableHandle({
3552
3871
  className
3553
3872
  ),
3554
3873
  ...props,
3555
- children: withHandle && /* @__PURE__ */ jsx34("div", { className: "bg-border z-10 flex h-4 w-3 items-center justify-center rounded-xs border", children: /* @__PURE__ */ jsx34(GripVerticalIcon, { className: "size-2.5" }) })
3874
+ children: withHandle && /* @__PURE__ */ jsx35("div", { className: "bg-border z-10 flex h-4 w-3 items-center justify-center rounded-xs border", children: /* @__PURE__ */ jsx35(GripVerticalIcon, { className: "size-2.5" }) })
3556
3875
  }
3557
3876
  );
3558
3877
  }
@@ -3560,20 +3879,20 @@ function ResizableHandle({
3560
3879
  // src/components/ui/scroll-area.tsx
3561
3880
  import "react";
3562
3881
  import * as ScrollAreaPrimitive from "@radix-ui/react-scroll-area";
3563
- import { jsx as jsx35, jsxs as jsxs17 } from "react/jsx-runtime";
3882
+ import { jsx as jsx36, jsxs as jsxs18 } from "react/jsx-runtime";
3564
3883
  function ScrollArea({
3565
3884
  className,
3566
3885
  children,
3567
3886
  ...props
3568
3887
  }) {
3569
- return /* @__PURE__ */ jsxs17(
3888
+ return /* @__PURE__ */ jsxs18(
3570
3889
  ScrollAreaPrimitive.Root,
3571
3890
  {
3572
3891
  "data-slot": "scroll-area",
3573
3892
  className: cn("relative", className),
3574
3893
  ...props,
3575
3894
  children: [
3576
- /* @__PURE__ */ jsx35(
3895
+ /* @__PURE__ */ jsx36(
3577
3896
  ScrollAreaPrimitive.Viewport,
3578
3897
  {
3579
3898
  "data-slot": "scroll-area-viewport",
@@ -3581,8 +3900,8 @@ function ScrollArea({
3581
3900
  children
3582
3901
  }
3583
3902
  ),
3584
- /* @__PURE__ */ jsx35(ScrollBar, {}),
3585
- /* @__PURE__ */ jsx35(ScrollAreaPrimitive.Corner, {})
3903
+ /* @__PURE__ */ jsx36(ScrollBar, {}),
3904
+ /* @__PURE__ */ jsx36(ScrollAreaPrimitive.Corner, {})
3586
3905
  ]
3587
3906
  }
3588
3907
  );
@@ -3592,7 +3911,7 @@ function ScrollBar({
3592
3911
  orientation = "vertical",
3593
3912
  ...props
3594
3913
  }) {
3595
- return /* @__PURE__ */ jsx35(
3914
+ return /* @__PURE__ */ jsx36(
3596
3915
  ScrollAreaPrimitive.ScrollAreaScrollbar,
3597
3916
  {
3598
3917
  "data-slot": "scroll-area-scrollbar",
@@ -3604,7 +3923,7 @@ function ScrollBar({
3604
3923
  className
3605
3924
  ),
3606
3925
  ...props,
3607
- children: /* @__PURE__ */ jsx35(
3926
+ children: /* @__PURE__ */ jsx36(
3608
3927
  ScrollAreaPrimitive.ScrollAreaThumb,
3609
3928
  {
3610
3929
  "data-slot": "scroll-area-thumb",
@@ -3619,21 +3938,21 @@ function ScrollBar({
3619
3938
  import "react";
3620
3939
  import * as SelectPrimitive from "@radix-ui/react-select";
3621
3940
  import { CheckIcon as CheckIcon4, ChevronDownIcon as ChevronDownIcon4, ChevronUpIcon } from "lucide-react";
3622
- import { jsx as jsx36, jsxs as jsxs18 } from "react/jsx-runtime";
3941
+ import { jsx as jsx37, jsxs as jsxs19 } from "react/jsx-runtime";
3623
3942
  function Select({
3624
3943
  ...props
3625
3944
  }) {
3626
- return /* @__PURE__ */ jsx36(SelectPrimitive.Root, { "data-slot": "select", ...props });
3945
+ return /* @__PURE__ */ jsx37(SelectPrimitive.Root, { "data-slot": "select", ...props });
3627
3946
  }
3628
3947
  function SelectGroup({
3629
3948
  ...props
3630
3949
  }) {
3631
- return /* @__PURE__ */ jsx36(SelectPrimitive.Group, { "data-slot": "select-group", ...props });
3950
+ return /* @__PURE__ */ jsx37(SelectPrimitive.Group, { "data-slot": "select-group", ...props });
3632
3951
  }
3633
3952
  function SelectValue({
3634
3953
  ...props
3635
3954
  }) {
3636
- return /* @__PURE__ */ jsx36(SelectPrimitive.Value, { "data-slot": "select-value", ...props });
3955
+ return /* @__PURE__ */ jsx37(SelectPrimitive.Value, { "data-slot": "select-value", ...props });
3637
3956
  }
3638
3957
  function SelectTrigger({
3639
3958
  className,
@@ -3641,7 +3960,7 @@ function SelectTrigger({
3641
3960
  children,
3642
3961
  ...props
3643
3962
  }) {
3644
- return /* @__PURE__ */ jsxs18(
3963
+ return /* @__PURE__ */ jsxs19(
3645
3964
  SelectPrimitive.Trigger,
3646
3965
  {
3647
3966
  "data-slot": "select-trigger",
@@ -3653,7 +3972,7 @@ function SelectTrigger({
3653
3972
  ...props,
3654
3973
  children: [
3655
3974
  children,
3656
- /* @__PURE__ */ jsx36(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ jsx36(ChevronDownIcon4, { className: "size-4 opacity-50" }) })
3975
+ /* @__PURE__ */ jsx37(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ jsx37(ChevronDownIcon4, { className: "size-4 opacity-50" }) })
3657
3976
  ]
3658
3977
  }
3659
3978
  );
@@ -3664,7 +3983,7 @@ function SelectContent({
3664
3983
  position = "popper",
3665
3984
  ...props
3666
3985
  }) {
3667
- return /* @__PURE__ */ jsx36(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsxs18(
3986
+ return /* @__PURE__ */ jsx37(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsxs19(
3668
3987
  SelectPrimitive.Content,
3669
3988
  {
3670
3989
  "data-slot": "select-content",
@@ -3676,8 +3995,8 @@ function SelectContent({
3676
3995
  position,
3677
3996
  ...props,
3678
3997
  children: [
3679
- /* @__PURE__ */ jsx36(SelectScrollUpButton, {}),
3680
- /* @__PURE__ */ jsx36(
3998
+ /* @__PURE__ */ jsx37(SelectScrollUpButton, {}),
3999
+ /* @__PURE__ */ jsx37(
3681
4000
  SelectPrimitive.Viewport,
3682
4001
  {
3683
4002
  className: cn(
@@ -3687,7 +4006,7 @@ function SelectContent({
3687
4006
  children
3688
4007
  }
3689
4008
  ),
3690
- /* @__PURE__ */ jsx36(SelectScrollDownButton, {})
4009
+ /* @__PURE__ */ jsx37(SelectScrollDownButton, {})
3691
4010
  ]
3692
4011
  }
3693
4012
  ) });
@@ -3696,7 +4015,7 @@ function SelectLabel({
3696
4015
  className,
3697
4016
  ...props
3698
4017
  }) {
3699
- return /* @__PURE__ */ jsx36(
4018
+ return /* @__PURE__ */ jsx37(
3700
4019
  SelectPrimitive.Label,
3701
4020
  {
3702
4021
  "data-slot": "select-label",
@@ -3710,7 +4029,7 @@ function SelectItem({
3710
4029
  children,
3711
4030
  ...props
3712
4031
  }) {
3713
- return /* @__PURE__ */ jsxs18(
4032
+ return /* @__PURE__ */ jsxs19(
3714
4033
  SelectPrimitive.Item,
3715
4034
  {
3716
4035
  "data-slot": "select-item",
@@ -3720,8 +4039,8 @@ function SelectItem({
3720
4039
  ),
3721
4040
  ...props,
3722
4041
  children: [
3723
- /* @__PURE__ */ jsx36("span", { className: "absolute right-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx36(SelectPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx36(CheckIcon4, { className: "size-4" }) }) }),
3724
- /* @__PURE__ */ jsx36(SelectPrimitive.ItemText, { children })
4042
+ /* @__PURE__ */ jsx37("span", { className: "absolute right-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx37(SelectPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx37(CheckIcon4, { className: "size-4" }) }) }),
4043
+ /* @__PURE__ */ jsx37(SelectPrimitive.ItemText, { children })
3725
4044
  ]
3726
4045
  }
3727
4046
  );
@@ -3730,7 +4049,7 @@ function SelectSeparator({
3730
4049
  className,
3731
4050
  ...props
3732
4051
  }) {
3733
- return /* @__PURE__ */ jsx36(
4052
+ return /* @__PURE__ */ jsx37(
3734
4053
  SelectPrimitive.Separator,
3735
4054
  {
3736
4055
  "data-slot": "select-separator",
@@ -3743,7 +4062,7 @@ function SelectScrollUpButton({
3743
4062
  className,
3744
4063
  ...props
3745
4064
  }) {
3746
- return /* @__PURE__ */ jsx36(
4065
+ return /* @__PURE__ */ jsx37(
3747
4066
  SelectPrimitive.ScrollUpButton,
3748
4067
  {
3749
4068
  "data-slot": "select-scroll-up-button",
@@ -3752,7 +4071,7 @@ function SelectScrollUpButton({
3752
4071
  className
3753
4072
  ),
3754
4073
  ...props,
3755
- children: /* @__PURE__ */ jsx36(ChevronUpIcon, { className: "size-4" })
4074
+ children: /* @__PURE__ */ jsx37(ChevronUpIcon, { className: "size-4" })
3756
4075
  }
3757
4076
  );
3758
4077
  }
@@ -3760,7 +4079,7 @@ function SelectScrollDownButton({
3760
4079
  className,
3761
4080
  ...props
3762
4081
  }) {
3763
- return /* @__PURE__ */ jsx36(
4082
+ return /* @__PURE__ */ jsx37(
3764
4083
  SelectPrimitive.ScrollDownButton,
3765
4084
  {
3766
4085
  "data-slot": "select-scroll-down-button",
@@ -3769,7 +4088,7 @@ function SelectScrollDownButton({
3769
4088
  className
3770
4089
  ),
3771
4090
  ...props,
3772
- children: /* @__PURE__ */ jsx36(ChevronDownIcon4, { className: "size-4" })
4091
+ children: /* @__PURE__ */ jsx37(ChevronDownIcon4, { className: "size-4" })
3773
4092
  }
3774
4093
  );
3775
4094
  }
@@ -3777,14 +4096,14 @@ function SelectScrollDownButton({
3777
4096
  // src/components/ui/separator.tsx
3778
4097
  import "react";
3779
4098
  import * as SeparatorPrimitive from "@radix-ui/react-separator";
3780
- import { jsx as jsx37 } from "react/jsx-runtime";
4099
+ import { jsx as jsx38 } from "react/jsx-runtime";
3781
4100
  function Separator5({
3782
4101
  className,
3783
4102
  orientation = "horizontal",
3784
4103
  decorative = true,
3785
4104
  ...props
3786
4105
  }) {
3787
- return /* @__PURE__ */ jsx37(
4106
+ return /* @__PURE__ */ jsx38(
3788
4107
  SeparatorPrimitive.Root,
3789
4108
  {
3790
4109
  "data-slot": "separator",
@@ -3803,30 +4122,30 @@ function Separator5({
3803
4122
  import * as SheetPrimitive from "@radix-ui/react-dialog";
3804
4123
  import { XIcon as XIcon2 } from "lucide-react";
3805
4124
  import "react";
3806
- import { jsx as jsx38, jsxs as jsxs19 } from "react/jsx-runtime";
4125
+ import { jsx as jsx39, jsxs as jsxs20 } from "react/jsx-runtime";
3807
4126
  function Sheet({ ...props }) {
3808
- return /* @__PURE__ */ jsx38(SheetPrimitive.Root, { "data-slot": "sheet", ...props });
4127
+ return /* @__PURE__ */ jsx39(SheetPrimitive.Root, { "data-slot": "sheet", ...props });
3809
4128
  }
3810
4129
  function SheetTrigger({
3811
4130
  ...props
3812
4131
  }) {
3813
- return /* @__PURE__ */ jsx38(SheetPrimitive.Trigger, { "data-slot": "sheet-trigger", ...props });
4132
+ return /* @__PURE__ */ jsx39(SheetPrimitive.Trigger, { "data-slot": "sheet-trigger", ...props });
3814
4133
  }
3815
4134
  function SheetClose({
3816
4135
  ...props
3817
4136
  }) {
3818
- return /* @__PURE__ */ jsx38(SheetPrimitive.Close, { "data-slot": "sheet-close", ...props });
4137
+ return /* @__PURE__ */ jsx39(SheetPrimitive.Close, { "data-slot": "sheet-close", ...props });
3819
4138
  }
3820
4139
  function SheetPortal({
3821
4140
  ...props
3822
4141
  }) {
3823
- return /* @__PURE__ */ jsx38(SheetPrimitive.Portal, { "data-slot": "sheet-portal", ...props });
4142
+ return /* @__PURE__ */ jsx39(SheetPrimitive.Portal, { "data-slot": "sheet-portal", ...props });
3824
4143
  }
3825
4144
  function SheetOverlay({
3826
4145
  className,
3827
4146
  ...props
3828
4147
  }) {
3829
- return /* @__PURE__ */ jsx38(
4148
+ return /* @__PURE__ */ jsx39(
3830
4149
  SheetPrimitive.Overlay,
3831
4150
  {
3832
4151
  "data-slot": "sheet-overlay",
@@ -3845,9 +4164,9 @@ function SheetContent({
3845
4164
  showCloseButton = true,
3846
4165
  ...props
3847
4166
  }) {
3848
- return /* @__PURE__ */ jsxs19(SheetPortal, { children: [
3849
- /* @__PURE__ */ jsx38(SheetOverlay, {}),
3850
- /* @__PURE__ */ jsxs19(
4167
+ return /* @__PURE__ */ jsxs20(SheetPortal, { children: [
4168
+ /* @__PURE__ */ jsx39(SheetOverlay, {}),
4169
+ /* @__PURE__ */ jsxs20(
3851
4170
  SheetPrimitive.Content,
3852
4171
  {
3853
4172
  "data-slot": "sheet-content",
@@ -3862,9 +4181,9 @@ function SheetContent({
3862
4181
  ...props,
3863
4182
  children: [
3864
4183
  children,
3865
- showCloseButton && /* @__PURE__ */ jsxs19(SheetPrimitive.Close, { className: "ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none", children: [
3866
- /* @__PURE__ */ jsx38(XIcon2, { className: "size-4" }),
3867
- /* @__PURE__ */ jsx38("span", { className: "sr-only", children: "Close" })
4184
+ showCloseButton && /* @__PURE__ */ jsxs20(SheetPrimitive.Close, { className: "ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none", children: [
4185
+ /* @__PURE__ */ jsx39(XIcon2, { className: "size-4" }),
4186
+ /* @__PURE__ */ jsx39("span", { className: "sr-only", children: "Close" })
3868
4187
  ] })
3869
4188
  ]
3870
4189
  }
@@ -3872,7 +4191,7 @@ function SheetContent({
3872
4191
  ] });
3873
4192
  }
3874
4193
  function SheetHeader({ className, ...props }) {
3875
- return /* @__PURE__ */ jsx38(
4194
+ return /* @__PURE__ */ jsx39(
3876
4195
  "div",
3877
4196
  {
3878
4197
  "data-slot": "sheet-header",
@@ -3882,7 +4201,7 @@ function SheetHeader({ className, ...props }) {
3882
4201
  );
3883
4202
  }
3884
4203
  function SheetFooter({ className, ...props }) {
3885
- return /* @__PURE__ */ jsx38(
4204
+ return /* @__PURE__ */ jsx39(
3886
4205
  "div",
3887
4206
  {
3888
4207
  "data-slot": "sheet-footer",
@@ -3895,7 +4214,7 @@ function SheetTitle({
3895
4214
  className,
3896
4215
  ...props
3897
4216
  }) {
3898
- return /* @__PURE__ */ jsx38(
4217
+ return /* @__PURE__ */ jsx39(
3899
4218
  SheetPrimitive.Title,
3900
4219
  {
3901
4220
  "data-slot": "sheet-title",
@@ -3908,7 +4227,7 @@ function SheetDescription({
3908
4227
  className,
3909
4228
  ...props
3910
4229
  }) {
3911
- return /* @__PURE__ */ jsx38(
4230
+ return /* @__PURE__ */ jsx39(
3912
4231
  SheetPrimitive.Description,
3913
4232
  {
3914
4233
  "data-slot": "sheet-description",
@@ -3922,12 +4241,12 @@ function SheetDescription({
3922
4241
  import { Slot as Slot6 } from "@radix-ui/react-slot";
3923
4242
  import { cva as cva7 } from "class-variance-authority";
3924
4243
  import { PanelLeftIcon } from "lucide-react";
3925
- import * as React39 from "react";
4244
+ import * as React40 from "react";
3926
4245
 
3927
4246
  // src/components/ui/skeleton.tsx
3928
- import { jsx as jsx39 } from "react/jsx-runtime";
4247
+ import { jsx as jsx40 } from "react/jsx-runtime";
3929
4248
  function Skeleton({ className, ...props }) {
3930
- return /* @__PURE__ */ jsx39(
4249
+ return /* @__PURE__ */ jsx40(
3931
4250
  "div",
3932
4251
  {
3933
4252
  "data-slot": "skeleton",
@@ -3940,12 +4259,12 @@ function Skeleton({ className, ...props }) {
3940
4259
  // src/components/ui/tooltip.tsx
3941
4260
  import "react";
3942
4261
  import * as TooltipPrimitive from "@radix-ui/react-tooltip";
3943
- import { jsx as jsx40, jsxs as jsxs20 } from "react/jsx-runtime";
4262
+ import { jsx as jsx41, jsxs as jsxs21 } from "react/jsx-runtime";
3944
4263
  function TooltipProvider({
3945
4264
  delayDuration = 0,
3946
4265
  ...props
3947
4266
  }) {
3948
- return /* @__PURE__ */ jsx40(
4267
+ return /* @__PURE__ */ jsx41(
3949
4268
  TooltipPrimitive.Provider,
3950
4269
  {
3951
4270
  "data-slot": "tooltip-provider",
@@ -3957,12 +4276,12 @@ function TooltipProvider({
3957
4276
  function Tooltip2({
3958
4277
  ...props
3959
4278
  }) {
3960
- return /* @__PURE__ */ jsx40(TooltipProvider, { children: /* @__PURE__ */ jsx40(TooltipPrimitive.Root, { "data-slot": "tooltip", ...props }) });
4279
+ return /* @__PURE__ */ jsx41(TooltipProvider, { children: /* @__PURE__ */ jsx41(TooltipPrimitive.Root, { "data-slot": "tooltip", ...props }) });
3961
4280
  }
3962
4281
  function TooltipTrigger({
3963
4282
  ...props
3964
4283
  }) {
3965
- return /* @__PURE__ */ jsx40(TooltipPrimitive.Trigger, { "data-slot": "tooltip-trigger", ...props });
4284
+ return /* @__PURE__ */ jsx41(TooltipPrimitive.Trigger, { "data-slot": "tooltip-trigger", ...props });
3966
4285
  }
3967
4286
  function TooltipContent({
3968
4287
  className,
@@ -3970,7 +4289,7 @@ function TooltipContent({
3970
4289
  children,
3971
4290
  ...props
3972
4291
  }) {
3973
- return /* @__PURE__ */ jsx40(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsxs20(
4292
+ return /* @__PURE__ */ jsx41(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsxs21(
3974
4293
  TooltipPrimitive.Content,
3975
4294
  {
3976
4295
  "data-slot": "tooltip-content",
@@ -3982,18 +4301,18 @@ function TooltipContent({
3982
4301
  ...props,
3983
4302
  children: [
3984
4303
  children,
3985
- /* @__PURE__ */ jsx40(TooltipPrimitive.Arrow, { className: "bg-primary fill-primary z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]" })
4304
+ /* @__PURE__ */ jsx41(TooltipPrimitive.Arrow, { className: "bg-primary fill-primary z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]" })
3986
4305
  ]
3987
4306
  }
3988
4307
  ) });
3989
4308
  }
3990
4309
 
3991
4310
  // src/hooks/use-mobile.ts
3992
- import * as React38 from "react";
4311
+ import * as React39 from "react";
3993
4312
  var MOBILE_BREAKPOINT = 768;
3994
4313
  function useIsMobile() {
3995
- const [isMobile, setIsMobile] = React38.useState(void 0);
3996
- React38.useEffect(() => {
4314
+ const [isMobile, setIsMobile] = React39.useState(void 0);
4315
+ React39.useEffect(() => {
3997
4316
  const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);
3998
4317
  const onChange = () => {
3999
4318
  setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
@@ -4006,16 +4325,16 @@ function useIsMobile() {
4006
4325
  }
4007
4326
 
4008
4327
  // src/components/ui/sidebar.tsx
4009
- import { jsx as jsx41, jsxs as jsxs21 } from "react/jsx-runtime";
4328
+ import { jsx as jsx42, jsxs as jsxs22 } from "react/jsx-runtime";
4010
4329
  var SIDEBAR_COOKIE_NAME = "sidebar_state";
4011
4330
  var SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;
4012
4331
  var SIDEBAR_WIDTH = "18rem";
4013
4332
  var SIDEBAR_WIDTH_MOBILE = "18rem";
4014
4333
  var SIDEBAR_WIDTH_ICON = "3rem";
4015
4334
  var SIDEBAR_KEYBOARD_SHORTCUT = "b";
4016
- var SidebarContext = React39.createContext(null);
4335
+ var SidebarContext = React40.createContext(null);
4017
4336
  function useSidebar() {
4018
- const context = React39.useContext(SidebarContext);
4337
+ const context = React40.useContext(SidebarContext);
4019
4338
  if (!context) {
4020
4339
  throw new Error("useSidebar must be used within a SidebarProvider.");
4021
4340
  }
@@ -4031,10 +4350,10 @@ function SidebarProvider({
4031
4350
  ...props
4032
4351
  }) {
4033
4352
  const isMobile = useIsMobile();
4034
- const [openMobile, setOpenMobile] = React39.useState(false);
4035
- const [_open, _setOpen] = React39.useState(defaultOpen);
4353
+ const [openMobile, setOpenMobile] = React40.useState(false);
4354
+ const [_open, _setOpen] = React40.useState(defaultOpen);
4036
4355
  const open = openProp ?? _open;
4037
- const setOpen = React39.useCallback(
4356
+ const setOpen = React40.useCallback(
4038
4357
  (value) => {
4039
4358
  const openState = typeof value === "function" ? value(open) : value;
4040
4359
  if (setOpenProp) {
@@ -4046,10 +4365,10 @@ function SidebarProvider({
4046
4365
  },
4047
4366
  [setOpenProp, open]
4048
4367
  );
4049
- const toggleSidebar = React39.useCallback(() => {
4368
+ const toggleSidebar = React40.useCallback(() => {
4050
4369
  return isMobile ? setOpenMobile((open2) => !open2) : setOpen((open2) => !open2);
4051
4370
  }, [isMobile, setOpen, setOpenMobile]);
4052
- React39.useEffect(() => {
4371
+ React40.useEffect(() => {
4053
4372
  const handleKeyDown = (event) => {
4054
4373
  if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {
4055
4374
  event.preventDefault();
@@ -4060,7 +4379,7 @@ function SidebarProvider({
4060
4379
  return () => window.removeEventListener("keydown", handleKeyDown);
4061
4380
  }, [toggleSidebar]);
4062
4381
  const state = open ? "expanded" : "collapsed";
4063
- const contextValue = React39.useMemo(
4382
+ const contextValue = React40.useMemo(
4064
4383
  () => ({
4065
4384
  state,
4066
4385
  open,
@@ -4072,7 +4391,7 @@ function SidebarProvider({
4072
4391
  }),
4073
4392
  [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]
4074
4393
  );
4075
- return /* @__PURE__ */ jsx41(SidebarContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx41(TooltipProvider, { delayDuration: 0, children: /* @__PURE__ */ jsx41(
4394
+ return /* @__PURE__ */ jsx42(SidebarContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx42(TooltipProvider, { delayDuration: 0, children: /* @__PURE__ */ jsx42(
4076
4395
  "div",
4077
4396
  {
4078
4397
  "data-slot": "sidebar-wrapper",
@@ -4100,7 +4419,7 @@ function Sidebar({
4100
4419
  }) {
4101
4420
  const { isMobile, state, openMobile, setOpenMobile } = useSidebar();
4102
4421
  if (collapsible === "none") {
4103
- return /* @__PURE__ */ jsx41(
4422
+ return /* @__PURE__ */ jsx42(
4104
4423
  "div",
4105
4424
  {
4106
4425
  "data-slot": "sidebar",
@@ -4114,7 +4433,7 @@ function Sidebar({
4114
4433
  );
4115
4434
  }
4116
4435
  if (isMobile) {
4117
- return /* @__PURE__ */ jsx41(Sheet, { open: openMobile, onOpenChange: setOpenMobile, ...props, children: /* @__PURE__ */ jsxs21(
4436
+ return /* @__PURE__ */ jsx42(Sheet, { open: openMobile, onOpenChange: setOpenMobile, ...props, children: /* @__PURE__ */ jsxs22(
4118
4437
  SheetContent,
4119
4438
  {
4120
4439
  "data-sidebar": "sidebar",
@@ -4126,16 +4445,16 @@ function Sidebar({
4126
4445
  },
4127
4446
  side,
4128
4447
  children: [
4129
- /* @__PURE__ */ jsxs21(SheetHeader, { className: "sr-only", children: [
4130
- /* @__PURE__ */ jsx41(SheetTitle, { children: "Sidebar" }),
4131
- /* @__PURE__ */ jsx41(SheetDescription, { children: "Displays the mobile sidebar." })
4448
+ /* @__PURE__ */ jsxs22(SheetHeader, { className: "sr-only", children: [
4449
+ /* @__PURE__ */ jsx42(SheetTitle, { children: "Sidebar" }),
4450
+ /* @__PURE__ */ jsx42(SheetDescription, { children: "Displays the mobile sidebar." })
4132
4451
  ] }),
4133
- /* @__PURE__ */ jsx41("div", { className: "flex h-full w-full flex-col", children })
4452
+ /* @__PURE__ */ jsx42("div", { className: "flex h-full w-full flex-col", children })
4134
4453
  ]
4135
4454
  }
4136
4455
  ) });
4137
4456
  }
4138
- return /* @__PURE__ */ jsxs21(
4457
+ return /* @__PURE__ */ jsxs22(
4139
4458
  "div",
4140
4459
  {
4141
4460
  className: "group peer text-sidebar-foreground hidden md:block",
@@ -4145,7 +4464,7 @@ function Sidebar({
4145
4464
  "data-side": side,
4146
4465
  "data-slot": "sidebar",
4147
4466
  children: [
4148
- /* @__PURE__ */ jsx41(
4467
+ /* @__PURE__ */ jsx42(
4149
4468
  "div",
4150
4469
  {
4151
4470
  "data-slot": "sidebar-gap",
@@ -4157,7 +4476,7 @@ function Sidebar({
4157
4476
  )
4158
4477
  }
4159
4478
  ),
4160
- /* @__PURE__ */ jsx41(
4479
+ /* @__PURE__ */ jsx42(
4161
4480
  "div",
4162
4481
  {
4163
4482
  "data-slot": "sidebar-container",
@@ -4169,7 +4488,7 @@ function Sidebar({
4169
4488
  className
4170
4489
  ),
4171
4490
  ...props,
4172
- children: /* @__PURE__ */ jsx41(
4491
+ children: /* @__PURE__ */ jsx42(
4173
4492
  "div",
4174
4493
  {
4175
4494
  "data-sidebar": "sidebar",
@@ -4190,7 +4509,7 @@ function SidebarTrigger({
4190
4509
  ...props
4191
4510
  }) {
4192
4511
  const { toggleSidebar } = useSidebar();
4193
- return /* @__PURE__ */ jsxs21(
4512
+ return /* @__PURE__ */ jsxs22(
4194
4513
  Button,
4195
4514
  {
4196
4515
  "data-sidebar": "trigger",
@@ -4204,15 +4523,15 @@ function SidebarTrigger({
4204
4523
  },
4205
4524
  ...props,
4206
4525
  children: [
4207
- /* @__PURE__ */ jsx41(PanelLeftIcon, {}),
4208
- /* @__PURE__ */ jsx41("span", { className: "sr-only", children: "Toggle Sidebar" })
4526
+ /* @__PURE__ */ jsx42(PanelLeftIcon, {}),
4527
+ /* @__PURE__ */ jsx42("span", { className: "sr-only", children: "Toggle Sidebar" })
4209
4528
  ]
4210
4529
  }
4211
4530
  );
4212
4531
  }
4213
4532
  function SidebarRail({ className, ...props }) {
4214
4533
  const { toggleSidebar } = useSidebar();
4215
- return /* @__PURE__ */ jsx41(
4534
+ return /* @__PURE__ */ jsx42(
4216
4535
  "button",
4217
4536
  {
4218
4537
  "data-sidebar": "rail",
@@ -4235,7 +4554,7 @@ function SidebarRail({ className, ...props }) {
4235
4554
  );
4236
4555
  }
4237
4556
  function SidebarInset({ className, ...props }) {
4238
- return /* @__PURE__ */ jsx41(
4557
+ return /* @__PURE__ */ jsx42(
4239
4558
  "main",
4240
4559
  {
4241
4560
  "data-slot": "sidebar-inset",
@@ -4252,7 +4571,7 @@ function SidebarInput({
4252
4571
  className,
4253
4572
  ...props
4254
4573
  }) {
4255
- return /* @__PURE__ */ jsx41(
4574
+ return /* @__PURE__ */ jsx42(
4256
4575
  Input,
4257
4576
  {
4258
4577
  "data-slot": "sidebar-input",
@@ -4263,7 +4582,7 @@ function SidebarInput({
4263
4582
  );
4264
4583
  }
4265
4584
  function SidebarHeader({ className, ...props }) {
4266
- return /* @__PURE__ */ jsx41(
4585
+ return /* @__PURE__ */ jsx42(
4267
4586
  "div",
4268
4587
  {
4269
4588
  "data-slot": "sidebar-header",
@@ -4274,7 +4593,7 @@ function SidebarHeader({ className, ...props }) {
4274
4593
  );
4275
4594
  }
4276
4595
  function SidebarFooter({ className, ...props }) {
4277
- return /* @__PURE__ */ jsx41(
4596
+ return /* @__PURE__ */ jsx42(
4278
4597
  "div",
4279
4598
  {
4280
4599
  "data-slot": "sidebar-footer",
@@ -4288,7 +4607,7 @@ function SidebarSeparator({
4288
4607
  className,
4289
4608
  ...props
4290
4609
  }) {
4291
- return /* @__PURE__ */ jsx41(
4610
+ return /* @__PURE__ */ jsx42(
4292
4611
  Separator5,
4293
4612
  {
4294
4613
  "data-slot": "sidebar-separator",
@@ -4299,7 +4618,7 @@ function SidebarSeparator({
4299
4618
  );
4300
4619
  }
4301
4620
  function SidebarContent({ className, ...props }) {
4302
- return /* @__PURE__ */ jsx41(
4621
+ return /* @__PURE__ */ jsx42(
4303
4622
  "div",
4304
4623
  {
4305
4624
  "data-slot": "sidebar-content",
@@ -4313,7 +4632,7 @@ function SidebarContent({ className, ...props }) {
4313
4632
  );
4314
4633
  }
4315
4634
  function SidebarGroup({ className, ...props }) {
4316
- return /* @__PURE__ */ jsx41(
4635
+ return /* @__PURE__ */ jsx42(
4317
4636
  "div",
4318
4637
  {
4319
4638
  "data-slot": "sidebar-group",
@@ -4329,7 +4648,7 @@ function SidebarGroupLabel({
4329
4648
  ...props
4330
4649
  }) {
4331
4650
  const Comp = asChild ? Slot6 : "div";
4332
- return /* @__PURE__ */ jsx41(
4651
+ return /* @__PURE__ */ jsx42(
4333
4652
  Comp,
4334
4653
  {
4335
4654
  "data-slot": "sidebar-group-label",
@@ -4349,7 +4668,7 @@ function SidebarGroupAction({
4349
4668
  ...props
4350
4669
  }) {
4351
4670
  const Comp = asChild ? Slot6 : "button";
4352
- return /* @__PURE__ */ jsx41(
4671
+ return /* @__PURE__ */ jsx42(
4353
4672
  Comp,
4354
4673
  {
4355
4674
  "data-slot": "sidebar-group-action",
@@ -4369,7 +4688,7 @@ function SidebarGroupContent({
4369
4688
  className,
4370
4689
  ...props
4371
4690
  }) {
4372
- return /* @__PURE__ */ jsx41(
4691
+ return /* @__PURE__ */ jsx42(
4373
4692
  "div",
4374
4693
  {
4375
4694
  "data-slot": "sidebar-group-content",
@@ -4380,7 +4699,7 @@ function SidebarGroupContent({
4380
4699
  );
4381
4700
  }
4382
4701
  function SidebarMenu({ className, ...props }) {
4383
- return /* @__PURE__ */ jsx41(
4702
+ return /* @__PURE__ */ jsx42(
4384
4703
  "ul",
4385
4704
  {
4386
4705
  "data-slot": "sidebar-menu",
@@ -4391,7 +4710,7 @@ function SidebarMenu({ className, ...props }) {
4391
4710
  );
4392
4711
  }
4393
4712
  function SidebarMenuItem({ className, ...props }) {
4394
- return /* @__PURE__ */ jsx41(
4713
+ return /* @__PURE__ */ jsx42(
4395
4714
  "li",
4396
4715
  {
4397
4716
  "data-slot": "sidebar-menu-item",
@@ -4432,7 +4751,7 @@ function SidebarMenuButton({
4432
4751
  }) {
4433
4752
  const Comp = asChild ? Slot6 : "button";
4434
4753
  const { isMobile, state } = useSidebar();
4435
- const button = /* @__PURE__ */ jsx41(
4754
+ const button = /* @__PURE__ */ jsx42(
4436
4755
  Comp,
4437
4756
  {
4438
4757
  "data-slot": "sidebar-menu-button",
@@ -4451,9 +4770,9 @@ function SidebarMenuButton({
4451
4770
  children: tooltip
4452
4771
  };
4453
4772
  }
4454
- return /* @__PURE__ */ jsxs21(Tooltip2, { children: [
4455
- /* @__PURE__ */ jsx41(TooltipTrigger, { asChild: true, children: button }),
4456
- /* @__PURE__ */ jsx41(
4773
+ return /* @__PURE__ */ jsxs22(Tooltip2, { children: [
4774
+ /* @__PURE__ */ jsx42(TooltipTrigger, { asChild: true, children: button }),
4775
+ /* @__PURE__ */ jsx42(
4457
4776
  TooltipContent,
4458
4777
  {
4459
4778
  side: "right",
@@ -4471,7 +4790,7 @@ function SidebarMenuAction({
4471
4790
  ...props
4472
4791
  }) {
4473
4792
  const Comp = asChild ? Slot6 : "button";
4474
- return /* @__PURE__ */ jsx41(
4793
+ return /* @__PURE__ */ jsx42(
4475
4794
  Comp,
4476
4795
  {
4477
4796
  "data-slot": "sidebar-menu-action",
@@ -4495,7 +4814,7 @@ function SidebarMenuBadge({
4495
4814
  className,
4496
4815
  ...props
4497
4816
  }) {
4498
- return /* @__PURE__ */ jsx41(
4817
+ return /* @__PURE__ */ jsx42(
4499
4818
  "div",
4500
4819
  {
4501
4820
  "data-slot": "sidebar-menu-badge",
@@ -4518,10 +4837,10 @@ function SidebarMenuSkeleton({
4518
4837
  showIcon = false,
4519
4838
  ...props
4520
4839
  }) {
4521
- const width = React39.useMemo(() => {
4840
+ const width = React40.useMemo(() => {
4522
4841
  return `${Math.floor(Math.random() * 40) + 50}%`;
4523
4842
  }, []);
4524
- return /* @__PURE__ */ jsxs21(
4843
+ return /* @__PURE__ */ jsxs22(
4525
4844
  "div",
4526
4845
  {
4527
4846
  "data-slot": "sidebar-menu-skeleton",
@@ -4529,14 +4848,14 @@ function SidebarMenuSkeleton({
4529
4848
  className: cn("flex h-8 items-center gap-2 rounded-md px-2", className),
4530
4849
  ...props,
4531
4850
  children: [
4532
- showIcon && /* @__PURE__ */ jsx41(
4851
+ showIcon && /* @__PURE__ */ jsx42(
4533
4852
  Skeleton,
4534
4853
  {
4535
4854
  className: "size-4 rounded-md",
4536
4855
  "data-sidebar": "menu-skeleton-icon"
4537
4856
  }
4538
4857
  ),
4539
- /* @__PURE__ */ jsx41(
4858
+ /* @__PURE__ */ jsx42(
4540
4859
  Skeleton,
4541
4860
  {
4542
4861
  className: "h-4 max-w-(--skeleton-width) flex-1",
@@ -4551,7 +4870,7 @@ function SidebarMenuSkeleton({
4551
4870
  );
4552
4871
  }
4553
4872
  function SidebarMenuSub({ className, ...props }) {
4554
- return /* @__PURE__ */ jsx41(
4873
+ return /* @__PURE__ */ jsx42(
4555
4874
  "ul",
4556
4875
  {
4557
4876
  "data-slot": "sidebar-menu-sub",
@@ -4569,7 +4888,7 @@ function SidebarMenuSubItem({
4569
4888
  className,
4570
4889
  ...props
4571
4890
  }) {
4572
- return /* @__PURE__ */ jsx41(
4891
+ return /* @__PURE__ */ jsx42(
4573
4892
  "li",
4574
4893
  {
4575
4894
  "data-slot": "sidebar-menu-sub-item",
@@ -4587,7 +4906,7 @@ function SidebarMenuSubButton({
4587
4906
  ...props
4588
4907
  }) {
4589
4908
  const Comp = asChild ? Slot6 : "a";
4590
- return /* @__PURE__ */ jsx41(
4909
+ return /* @__PURE__ */ jsx42(
4591
4910
  Comp,
4592
4911
  {
4593
4912
  "data-slot": "sidebar-menu-sub-button",
@@ -4608,9 +4927,9 @@ function SidebarMenuSubButton({
4608
4927
  }
4609
4928
 
4610
4929
  // src/components/ui/slider.tsx
4611
- import * as React40 from "react";
4930
+ import * as React41 from "react";
4612
4931
  import * as SliderPrimitive from "@radix-ui/react-slider";
4613
- import { jsx as jsx42, jsxs as jsxs22 } from "react/jsx-runtime";
4932
+ import { jsx as jsx43, jsxs as jsxs23 } from "react/jsx-runtime";
4614
4933
  function Slider({
4615
4934
  className,
4616
4935
  defaultValue,
@@ -4619,11 +4938,11 @@ function Slider({
4619
4938
  max = 100,
4620
4939
  ...props
4621
4940
  }) {
4622
- const _values = React40.useMemo(
4941
+ const _values = React41.useMemo(
4623
4942
  () => Array.isArray(value) ? value : Array.isArray(defaultValue) ? defaultValue : [min, max],
4624
4943
  [value, defaultValue, min, max]
4625
4944
  );
4626
- return /* @__PURE__ */ jsxs22(
4945
+ return /* @__PURE__ */ jsxs23(
4627
4946
  SliderPrimitive.Root,
4628
4947
  {
4629
4948
  "data-slot": "slider",
@@ -4637,14 +4956,14 @@ function Slider({
4637
4956
  ),
4638
4957
  ...props,
4639
4958
  children: [
4640
- /* @__PURE__ */ jsx42(
4959
+ /* @__PURE__ */ jsx43(
4641
4960
  SliderPrimitive.Track,
4642
4961
  {
4643
4962
  "data-slot": "slider-track",
4644
4963
  className: cn(
4645
4964
  "bg-muted relative grow overflow-hidden rounded-full data-[orientation=horizontal]:h-1.5 data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-1.5"
4646
4965
  ),
4647
- children: /* @__PURE__ */ jsx42(
4966
+ children: /* @__PURE__ */ jsx43(
4648
4967
  SliderPrimitive.Range,
4649
4968
  {
4650
4969
  "data-slot": "slider-range",
@@ -4655,7 +4974,7 @@ function Slider({
4655
4974
  )
4656
4975
  }
4657
4976
  ),
4658
- Array.from({ length: _values.length }, (_, index) => /* @__PURE__ */ jsx42(
4977
+ Array.from({ length: _values.length }, (_, index) => /* @__PURE__ */ jsx43(
4659
4978
  SliderPrimitive.Thumb,
4660
4979
  {
4661
4980
  "data-slot": "slider-thumb",
@@ -4672,7 +4991,7 @@ function Slider({
4672
4991
  import "react";
4673
4992
 
4674
4993
  // src/components/ui/useMediaQuery.ts
4675
- import { useEffect as useEffect6, useState as useState5 } from "react";
4994
+ import { useEffect as useEffect7, useState as useState6 } from "react";
4676
4995
  function useMediaQuery(query) {
4677
4996
  const getMatches = (query2) => {
4678
4997
  if (typeof window !== "undefined") {
@@ -4680,11 +4999,11 @@ function useMediaQuery(query) {
4680
4999
  }
4681
5000
  return false;
4682
5001
  };
4683
- const [matches, setMatches] = useState5(getMatches(query));
5002
+ const [matches, setMatches] = useState6(getMatches(query));
4684
5003
  function handleChange() {
4685
5004
  setMatches(getMatches(query));
4686
5005
  }
4687
- useEffect6(() => {
5006
+ useEffect7(() => {
4688
5007
  const matchMedia = window.matchMedia(query);
4689
5008
  handleChange();
4690
5009
  if (matchMedia.addListener) {
@@ -4704,10 +5023,10 @@ function useMediaQuery(query) {
4704
5023
  }
4705
5024
 
4706
5025
  // src/components/ui/smart-dialog-drawer.tsx
4707
- import { Fragment as Fragment3, jsx as jsx43 } from "react/jsx-runtime";
5026
+ import { Fragment as Fragment3, jsx as jsx44 } from "react/jsx-runtime";
4708
5027
  var SmartDialog = ({ children, ...props }) => {
4709
5028
  const isMobile = useMediaQuery("(max-width: 600px)");
4710
- return isMobile ? /* @__PURE__ */ jsx43(Drawer, { ...props, children }) : /* @__PURE__ */ jsx43(Dialog, { ...props, children });
5029
+ return isMobile ? /* @__PURE__ */ jsx44(Drawer, { ...props, children }) : /* @__PURE__ */ jsx44(Dialog, { ...props, children });
4711
5030
  };
4712
5031
  var SmartDialogContent = ({
4713
5032
  children,
@@ -4717,14 +5036,14 @@ var SmartDialogContent = ({
4717
5036
  ...props
4718
5037
  }) => {
4719
5038
  const isMobile = useMediaQuery("(max-width: 600px)");
4720
- return isMobile ? /* @__PURE__ */ jsx43(
5039
+ return isMobile ? /* @__PURE__ */ jsx44(
4721
5040
  DrawerContent,
4722
5041
  {
4723
5042
  ...props,
4724
5043
  withCloseButton: withCloseButton ?? showCloseButton ?? true,
4725
5044
  children
4726
5045
  }
4727
- ) : /* @__PURE__ */ jsx43(
5046
+ ) : /* @__PURE__ */ jsx44(
4728
5047
  DialogContent,
4729
5048
  {
4730
5049
  ...props,
@@ -4739,39 +5058,39 @@ var SmartDialogDescription = ({
4739
5058
  ...props
4740
5059
  }) => {
4741
5060
  const isMobile = useMediaQuery("(max-width: 600px)");
4742
- return isMobile ? /* @__PURE__ */ jsx43(DrawerDescription, { ...props, children }) : /* @__PURE__ */ jsx43(DialogDescription, { ...props, children });
5061
+ return isMobile ? /* @__PURE__ */ jsx44(DrawerDescription, { ...props, children }) : /* @__PURE__ */ jsx44(DialogDescription, { ...props, children });
4743
5062
  };
4744
5063
  var SmartDialogHeader = ({ children, ...props }) => {
4745
5064
  const isMobile = useMediaQuery("(max-width: 600px)");
4746
- return isMobile ? /* @__PURE__ */ jsx43(DrawerHeader, { ...props, children }) : /* @__PURE__ */ jsx43(DialogHeader, { ...props, children });
5065
+ return isMobile ? /* @__PURE__ */ jsx44(DrawerHeader, { ...props, children }) : /* @__PURE__ */ jsx44(DialogHeader, { ...props, children });
4747
5066
  };
4748
5067
  var SmartDialogTitle = ({ children, ...props }) => {
4749
5068
  const isMobile = useMediaQuery("(max-width: 600px)");
4750
- return isMobile ? /* @__PURE__ */ jsx43(DrawerTitle, { ...props, children }) : /* @__PURE__ */ jsx43(DialogTitle, { ...props, children });
5069
+ return isMobile ? /* @__PURE__ */ jsx44(DrawerTitle, { ...props, children }) : /* @__PURE__ */ jsx44(DialogTitle, { ...props, children });
4751
5070
  };
4752
5071
  var SmartDialogTrigger = ({
4753
5072
  children,
4754
5073
  ...props
4755
5074
  }) => {
4756
5075
  const isMobile = useMediaQuery("(max-width: 600px)");
4757
- return isMobile ? /* @__PURE__ */ jsx43(DrawerTrigger, { ...props, children }) : /* @__PURE__ */ jsx43(DialogTrigger, { ...props, children });
5076
+ return isMobile ? /* @__PURE__ */ jsx44(DrawerTrigger, { ...props, children }) : /* @__PURE__ */ jsx44(DialogTrigger, { ...props, children });
4758
5077
  };
4759
5078
  var SmartDialogFooter = ({ children, ...props }) => {
4760
5079
  const isMobile = useMediaQuery("(max-width: 600px)");
4761
- return isMobile ? /* @__PURE__ */ jsx43(DrawerFooter, { ...props, children }) : /* @__PURE__ */ jsx43(DialogFooter, { ...props, children });
5080
+ return isMobile ? /* @__PURE__ */ jsx44(DrawerFooter, { ...props, children }) : /* @__PURE__ */ jsx44(DialogFooter, { ...props, children });
4762
5081
  };
4763
5082
  var SmartDialogClose = ({ children, ...props }) => {
4764
5083
  const isMobile = useMediaQuery("(max-width: 600px)");
4765
- return isMobile ? /* @__PURE__ */ jsx43(Fragment3, { children: /* @__PURE__ */ jsx43(DrawerClose, { ...props, children }) }) : /* @__PURE__ */ jsx43(DialogClose, { ...props, children });
5084
+ return isMobile ? /* @__PURE__ */ jsx44(Fragment3, { children: /* @__PURE__ */ jsx44(DrawerClose, { ...props, children }) }) : /* @__PURE__ */ jsx44(DialogClose, { ...props, children });
4766
5085
  };
4767
5086
 
4768
5087
  // src/components/ui/sonner.tsx
4769
5088
  import { useTheme } from "next-themes";
4770
5089
  import { Toaster as Sonner } from "sonner";
4771
- import { jsx as jsx44 } from "react/jsx-runtime";
5090
+ import { jsx as jsx45 } from "react/jsx-runtime";
4772
5091
  var Toaster = ({ ...props }) => {
4773
5092
  const { theme = "system" } = useTheme();
4774
- return /* @__PURE__ */ jsx44(
5093
+ return /* @__PURE__ */ jsx45(
4775
5094
  Sonner,
4776
5095
  {
4777
5096
  theme,
@@ -4789,12 +5108,12 @@ var Toaster = ({ ...props }) => {
4789
5108
  // src/components/ui/switch.tsx
4790
5109
  import * as SwitchPrimitive from "@radix-ui/react-switch";
4791
5110
  import "react";
4792
- import { jsx as jsx45 } from "react/jsx-runtime";
5111
+ import { jsx as jsx46 } from "react/jsx-runtime";
4793
5112
  function Switch({
4794
5113
  className,
4795
5114
  ...props
4796
5115
  }) {
4797
- return /* @__PURE__ */ jsx45(
5116
+ return /* @__PURE__ */ jsx46(
4798
5117
  SwitchPrimitive.Root,
4799
5118
  {
4800
5119
  "data-slot": "switch",
@@ -4803,7 +5122,7 @@ function Switch({
4803
5122
  className
4804
5123
  ),
4805
5124
  ...props,
4806
- children: /* @__PURE__ */ jsx45(
5125
+ children: /* @__PURE__ */ jsx46(
4807
5126
  SwitchPrimitive.Thumb,
4808
5127
  {
4809
5128
  "data-slot": "switch-thumb",
@@ -4818,14 +5137,14 @@ function Switch({
4818
5137
 
4819
5138
  // src/components/ui/table.tsx
4820
5139
  import "react";
4821
- import { jsx as jsx46 } from "react/jsx-runtime";
5140
+ import { jsx as jsx47 } from "react/jsx-runtime";
4822
5141
  function Table({ className, ...props }) {
4823
- return /* @__PURE__ */ jsx46(
5142
+ return /* @__PURE__ */ jsx47(
4824
5143
  "div",
4825
5144
  {
4826
5145
  "data-slot": "table-container",
4827
5146
  className: "relative w-full overflow-x-auto",
4828
- children: /* @__PURE__ */ jsx46(
5147
+ children: /* @__PURE__ */ jsx47(
4829
5148
  "table",
4830
5149
  {
4831
5150
  "data-slot": "table",
@@ -4837,7 +5156,7 @@ function Table({ className, ...props }) {
4837
5156
  );
4838
5157
  }
4839
5158
  function TableHeader({ className, ...props }) {
4840
- return /* @__PURE__ */ jsx46(
5159
+ return /* @__PURE__ */ jsx47(
4841
5160
  "thead",
4842
5161
  {
4843
5162
  "data-slot": "table-header",
@@ -4847,7 +5166,7 @@ function TableHeader({ className, ...props }) {
4847
5166
  );
4848
5167
  }
4849
5168
  function TableBody({ className, ...props }) {
4850
- return /* @__PURE__ */ jsx46(
5169
+ return /* @__PURE__ */ jsx47(
4851
5170
  "tbody",
4852
5171
  {
4853
5172
  "data-slot": "table-body",
@@ -4857,7 +5176,7 @@ function TableBody({ className, ...props }) {
4857
5176
  );
4858
5177
  }
4859
5178
  function TableFooter({ className, ...props }) {
4860
- return /* @__PURE__ */ jsx46(
5179
+ return /* @__PURE__ */ jsx47(
4861
5180
  "tfoot",
4862
5181
  {
4863
5182
  "data-slot": "table-footer",
@@ -4870,7 +5189,7 @@ function TableFooter({ className, ...props }) {
4870
5189
  );
4871
5190
  }
4872
5191
  function TableRow({ className, ...props }) {
4873
- return /* @__PURE__ */ jsx46(
5192
+ return /* @__PURE__ */ jsx47(
4874
5193
  "tr",
4875
5194
  {
4876
5195
  "data-slot": "table-row",
@@ -4883,7 +5202,7 @@ function TableRow({ className, ...props }) {
4883
5202
  );
4884
5203
  }
4885
5204
  function TableHead({ className, ...props }) {
4886
- return /* @__PURE__ */ jsx46(
5205
+ return /* @__PURE__ */ jsx47(
4887
5206
  "th",
4888
5207
  {
4889
5208
  "data-slot": "table-head",
@@ -4896,7 +5215,7 @@ function TableHead({ className, ...props }) {
4896
5215
  );
4897
5216
  }
4898
5217
  function TableCell({ className, ...props }) {
4899
- return /* @__PURE__ */ jsx46(
5218
+ return /* @__PURE__ */ jsx47(
4900
5219
  "td",
4901
5220
  {
4902
5221
  "data-slot": "table-cell",
@@ -4912,7 +5231,7 @@ function TableCaption({
4912
5231
  className,
4913
5232
  ...props
4914
5233
  }) {
4915
- return /* @__PURE__ */ jsx46(
5234
+ return /* @__PURE__ */ jsx47(
4916
5235
  "caption",
4917
5236
  {
4918
5237
  "data-slot": "table-caption",
@@ -4925,12 +5244,12 @@ function TableCaption({
4925
5244
  // src/components/ui/tabs.tsx
4926
5245
  import * as TabsPrimitive from "@radix-ui/react-tabs";
4927
5246
  import "react";
4928
- import { jsx as jsx47 } from "react/jsx-runtime";
5247
+ import { jsx as jsx48 } from "react/jsx-runtime";
4929
5248
  function Tabs({
4930
5249
  className,
4931
5250
  ...props
4932
5251
  }) {
4933
- return /* @__PURE__ */ jsx47(
5252
+ return /* @__PURE__ */ jsx48(
4934
5253
  TabsPrimitive.Root,
4935
5254
  {
4936
5255
  "data-slot": "tabs",
@@ -4943,7 +5262,7 @@ function TabsList({
4943
5262
  className,
4944
5263
  ...props
4945
5264
  }) {
4946
- return /* @__PURE__ */ jsx47(
5265
+ return /* @__PURE__ */ jsx48(
4947
5266
  TabsPrimitive.List,
4948
5267
  {
4949
5268
  "data-slot": "tabs-list",
@@ -4959,7 +5278,7 @@ function TabsTrigger({
4959
5278
  className,
4960
5279
  ...props
4961
5280
  }) {
4962
- return /* @__PURE__ */ jsx47(
5281
+ return /* @__PURE__ */ jsx48(
4963
5282
  TabsPrimitive.Trigger,
4964
5283
  {
4965
5284
  "data-slot": "tabs-trigger",
@@ -4975,7 +5294,7 @@ function TabsContent({
4975
5294
  className,
4976
5295
  ...props
4977
5296
  }) {
4978
- return /* @__PURE__ */ jsx47(
5297
+ return /* @__PURE__ */ jsx48(
4979
5298
  TabsPrimitive.Content,
4980
5299
  {
4981
5300
  "data-slot": "tabs-content",
@@ -4985,11 +5304,230 @@ function TabsContent({
4985
5304
  );
4986
5305
  }
4987
5306
 
5307
+ // src/components/ui/time-input.tsx
5308
+ import "class-variance-authority";
5309
+ import { Clock } from "lucide-react";
5310
+ import * as React46 from "react";
5311
+ import { jsx as jsx49, jsxs as jsxs24 } from "react/jsx-runtime";
5312
+ function formatTime(time, timeFormat = "12h") {
5313
+ if (!time) return "";
5314
+ if (timeFormat === "24h") {
5315
+ return `${String(time.hours).padStart(2, "0")}:${String(time.minutes).padStart(2, "0")}`;
5316
+ }
5317
+ const period = time.hours >= 12 ? "PM" : "AM";
5318
+ const h12 = time.hours % 12 || 12;
5319
+ return `${String(h12).padStart(2, "0")}:${String(time.minutes).padStart(2, "0")} ${period}`;
5320
+ }
5321
+ function parseTime(value, timeFormat = "12h") {
5322
+ if (!value.trim()) return null;
5323
+ if (timeFormat === "24h") {
5324
+ const match2 = value.trim().match(/^(\d{1,2}):(\d{2})$/);
5325
+ if (!match2) return null;
5326
+ const hours2 = parseInt(match2[1], 10);
5327
+ const minutes2 = parseInt(match2[2], 10);
5328
+ if (hours2 < 0 || hours2 > 23 || minutes2 < 0 || minutes2 > 59) return null;
5329
+ return { hours: hours2, minutes: minutes2 };
5330
+ }
5331
+ const match = value.trim().match(/^(\d{1,2}):(\d{2})\s*(AM|PM|am|pm)$/i);
5332
+ if (!match) return null;
5333
+ let hours = parseInt(match[1], 10);
5334
+ const minutes = parseInt(match[2], 10);
5335
+ const period = match[3].toUpperCase();
5336
+ if (hours < 1 || hours > 12 || minutes < 0 || minutes > 59) return null;
5337
+ if (period === "AM" && hours === 12) hours = 0;
5338
+ else if (period === "PM" && hours !== 12) hours += 12;
5339
+ return { hours, minutes };
5340
+ }
5341
+ function getDisplayHour(hours, timeFormat) {
5342
+ if (timeFormat === "24h") return hours;
5343
+ return hours % 12 || 12;
5344
+ }
5345
+ function getPeriod(hours) {
5346
+ return hours >= 12 ? "PM" : "AM";
5347
+ }
5348
+ function TimeInput({
5349
+ time,
5350
+ setTime,
5351
+ timeFormat = "12h",
5352
+ minuteStep = 1,
5353
+ inputDisabled,
5354
+ className,
5355
+ inputClassName,
5356
+ size,
5357
+ placeholder,
5358
+ onBlur,
5359
+ ...restProps
5360
+ }) {
5361
+ const resolvedPlaceholder = placeholder ?? (timeFormat === "12h" ? "hh:mm AM/PM" : "HH:mm");
5362
+ const [open, setOpen] = React46.useState(false);
5363
+ const [value, setValue] = React46.useState(formatTime(time, timeFormat));
5364
+ const hoursRef = React46.useRef(null);
5365
+ const minutesRef = React46.useRef(null);
5366
+ const periodRef = React46.useRef(null);
5367
+ React46.useEffect(() => {
5368
+ setValue(formatTime(time, timeFormat));
5369
+ }, [time, timeFormat]);
5370
+ const scrollToSelected = React46.useCallback(() => {
5371
+ requestAnimationFrame(() => {
5372
+ for (const ref of [hoursRef, minutesRef, periodRef]) {
5373
+ const container = ref.current;
5374
+ if (!container) continue;
5375
+ const selected = container.querySelector('[data-selected="true"]');
5376
+ if (selected) {
5377
+ selected.scrollIntoView({ block: "center", behavior: "instant" });
5378
+ }
5379
+ }
5380
+ });
5381
+ }, []);
5382
+ React46.useEffect(() => {
5383
+ if (open) {
5384
+ scrollToSelected();
5385
+ }
5386
+ }, [open, scrollToSelected]);
5387
+ const handleInputChange = (e) => {
5388
+ const inputValue = e.target.value;
5389
+ setValue(inputValue);
5390
+ if (inputValue === "") {
5391
+ setTime(null);
5392
+ return;
5393
+ }
5394
+ const parsed = parseTime(inputValue, timeFormat);
5395
+ if (parsed) {
5396
+ setTime(parsed);
5397
+ }
5398
+ };
5399
+ const handleBlur = (e) => {
5400
+ onBlur?.(e);
5401
+ if (value === "") {
5402
+ if (time !== null) setTime(null);
5403
+ return;
5404
+ }
5405
+ const parsed = parseTime(value, timeFormat);
5406
+ if (!parsed) {
5407
+ setValue(formatTime(time, timeFormat));
5408
+ }
5409
+ };
5410
+ const handleHourSelect = (hour) => {
5411
+ let h24;
5412
+ if (timeFormat === "24h") {
5413
+ h24 = hour;
5414
+ } else {
5415
+ const currentPeriod = time ? getPeriod(time.hours) : "AM";
5416
+ if (currentPeriod === "AM") {
5417
+ h24 = hour === 12 ? 0 : hour;
5418
+ } else {
5419
+ h24 = hour === 12 ? 12 : hour + 12;
5420
+ }
5421
+ }
5422
+ setTime({ hours: h24, minutes: time?.minutes ?? 0 });
5423
+ };
5424
+ const handleMinuteSelect = (minute) => {
5425
+ setTime({ hours: time?.hours ?? 0, minutes: minute });
5426
+ };
5427
+ const handlePeriodSelect = (period) => {
5428
+ const currentHours = time?.hours ?? 0;
5429
+ const currentH12 = currentHours % 12;
5430
+ const newHours = period === "AM" ? currentH12 : currentH12 + 12;
5431
+ setTime({ hours: newHours, minutes: time?.minutes ?? 0 });
5432
+ };
5433
+ const hoursList = timeFormat === "12h" ? Array.from({ length: 12 }, (_, i) => i + 1) : Array.from({ length: 24 }, (_, i) => i);
5434
+ const minutesList = Array.from(
5435
+ { length: Math.ceil(60 / minuteStep) },
5436
+ (_, i) => i * minuteStep
5437
+ );
5438
+ const selectedH12 = time ? getDisplayHour(time.hours, timeFormat) : null;
5439
+ const selectedMinute = time?.minutes ?? null;
5440
+ const selectedPeriod = time ? getPeriod(time.hours) : null;
5441
+ return /* @__PURE__ */ jsx49("div", { className: cn("relative flex gap-2", className), children: /* @__PURE__ */ jsxs24(Popover, { open, onOpenChange: setOpen, children: [
5442
+ /* @__PURE__ */ jsx49(PopoverTrigger, { asChild: true, disabled: inputDisabled, children: /* @__PURE__ */ jsx49("div", { className: "w-full relative", children: /* @__PURE__ */ jsx49(
5443
+ Input,
5444
+ {
5445
+ value,
5446
+ placeholder: resolvedPlaceholder,
5447
+ className: cn("bg-background cursor-pointer", inputClassName),
5448
+ onChange: handleInputChange,
5449
+ onBlur: handleBlur,
5450
+ disabled: inputDisabled,
5451
+ size,
5452
+ onClick: () => {
5453
+ if (!inputDisabled) setOpen(true);
5454
+ },
5455
+ onKeyDown: (e) => {
5456
+ if (e.key === "ArrowDown" && !inputDisabled) {
5457
+ e.preventDefault();
5458
+ setOpen(true);
5459
+ }
5460
+ },
5461
+ rightIcon: /* @__PURE__ */ jsx49(Clock, { className: "h-4 w-4 text-muted-foreground" }),
5462
+ ...restProps
5463
+ }
5464
+ ) }) }),
5465
+ /* @__PURE__ */ jsx49(
5466
+ PopoverContent,
5467
+ {
5468
+ className: "w-auto p-0",
5469
+ align: "end",
5470
+ alignOffset: -8,
5471
+ sideOffset: 10,
5472
+ side: "top",
5473
+ onOpenAutoFocus: (e) => e.preventDefault(),
5474
+ children: /* @__PURE__ */ jsxs24("div", { className: "flex divide-x", children: [
5475
+ /* @__PURE__ */ jsx49("div", { className: "h-56 w-16 overflow-y-auto overscroll-contain ", children: /* @__PURE__ */ jsx49("div", { ref: hoursRef, className: "flex flex-col p-1 ", children: hoursList.map((h) => /* @__PURE__ */ jsx49(
5476
+ Button,
5477
+ {
5478
+ variant: "ghost",
5479
+ size: "sm",
5480
+ "data-selected": selectedH12 === h,
5481
+ className: cn(
5482
+ "w-full justify-center font-mono text-sm",
5483
+ selectedH12 === h && "bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground"
5484
+ ),
5485
+ onClick: () => handleHourSelect(h),
5486
+ children: String(h).padStart(2, "0")
5487
+ },
5488
+ h
5489
+ )) }) }),
5490
+ /* @__PURE__ */ jsx49("div", { className: "h-56 w-16 overflow-y-auto overscroll-contain", children: /* @__PURE__ */ jsx49("div", { ref: minutesRef, className: "flex flex-col p-1", children: minutesList.map((m) => /* @__PURE__ */ jsx49(
5491
+ Button,
5492
+ {
5493
+ variant: "ghost",
5494
+ size: "sm",
5495
+ "data-selected": selectedMinute === m,
5496
+ className: cn(
5497
+ "w-full justify-center font-mono text-sm",
5498
+ selectedMinute === m && "bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground"
5499
+ ),
5500
+ onClick: () => handleMinuteSelect(m),
5501
+ children: String(m).padStart(2, "0")
5502
+ },
5503
+ m
5504
+ )) }) }),
5505
+ timeFormat === "12h" && /* @__PURE__ */ jsx49("div", { className: "flex flex-col p-1 justify-center gap-1", children: ["AM", "PM"].map((p) => /* @__PURE__ */ jsx49(
5506
+ Button,
5507
+ {
5508
+ variant: "ghost",
5509
+ size: "sm",
5510
+ "data-selected": selectedPeriod === p,
5511
+ className: cn(
5512
+ "w-14 justify-center text-sm",
5513
+ selectedPeriod === p && "bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground"
5514
+ ),
5515
+ onClick: () => handlePeriodSelect(p),
5516
+ children: p
5517
+ },
5518
+ p
5519
+ )) })
5520
+ ] })
5521
+ }
5522
+ )
5523
+ ] }) });
5524
+ }
5525
+
4988
5526
  // src/components/ui/toggle.tsx
4989
5527
  import "react";
4990
5528
  import * as TogglePrimitive from "@radix-ui/react-toggle";
4991
5529
  import { cva as cva8 } from "class-variance-authority";
4992
- import { jsx as jsx48 } from "react/jsx-runtime";
5530
+ import { jsx as jsx50 } from "react/jsx-runtime";
4993
5531
  var toggleVariants = cva8(
4994
5532
  "inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium hover:bg-muted hover:text-muted-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] outline-none transition-[color,box-shadow] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive whitespace-nowrap",
4995
5533
  {
@@ -5016,7 +5554,7 @@ function Toggle({
5016
5554
  size,
5017
5555
  ...props
5018
5556
  }) {
5019
- return /* @__PURE__ */ jsx48(
5557
+ return /* @__PURE__ */ jsx50(
5020
5558
  TogglePrimitive.Root,
5021
5559
  {
5022
5560
  "data-slot": "toggle",
@@ -5027,11 +5565,11 @@ function Toggle({
5027
5565
  }
5028
5566
 
5029
5567
  // src/components/ui/toggle-group.tsx
5030
- import * as React46 from "react";
5568
+ import * as React48 from "react";
5031
5569
  import * as ToggleGroupPrimitive from "@radix-ui/react-toggle-group";
5032
5570
  import "class-variance-authority";
5033
- import { jsx as jsx49 } from "react/jsx-runtime";
5034
- var ToggleGroupContext = React46.createContext({
5571
+ import { jsx as jsx51 } from "react/jsx-runtime";
5572
+ var ToggleGroupContext = React48.createContext({
5035
5573
  size: "default",
5036
5574
  variant: "default"
5037
5575
  });
@@ -5042,7 +5580,7 @@ function ToggleGroup({
5042
5580
  children,
5043
5581
  ...props
5044
5582
  }) {
5045
- return /* @__PURE__ */ jsx49(
5583
+ return /* @__PURE__ */ jsx51(
5046
5584
  ToggleGroupPrimitive.Root,
5047
5585
  {
5048
5586
  "data-slot": "toggle-group",
@@ -5053,7 +5591,7 @@ function ToggleGroup({
5053
5591
  className
5054
5592
  ),
5055
5593
  ...props,
5056
- children: /* @__PURE__ */ jsx49(ToggleGroupContext.Provider, { value: { variant, size }, children })
5594
+ children: /* @__PURE__ */ jsx51(ToggleGroupContext.Provider, { value: { variant, size }, children })
5057
5595
  }
5058
5596
  );
5059
5597
  }
@@ -5064,8 +5602,8 @@ function ToggleGroupItem({
5064
5602
  size,
5065
5603
  ...props
5066
5604
  }) {
5067
- const context = React46.useContext(ToggleGroupContext);
5068
- return /* @__PURE__ */ jsx49(
5605
+ const context = React48.useContext(ToggleGroupContext);
5606
+ return /* @__PURE__ */ jsx51(
5069
5607
  ToggleGroupPrimitive.Item,
5070
5608
  {
5071
5609
  "data-slot": "toggle-group-item",
@@ -5089,7 +5627,7 @@ function ToggleGroupItem({
5089
5627
  import { Slot as Slot7 } from "@radix-ui/react-slot";
5090
5628
  import { cva as cva9 } from "class-variance-authority";
5091
5629
  import "react";
5092
- import { jsx as jsx50 } from "react/jsx-runtime";
5630
+ import { jsx as jsx52 } from "react/jsx-runtime";
5093
5631
  var displayTextVariants = cva9(
5094
5632
  "tracking-normal font-normal leading-none text-brand-dark font-serif italic",
5095
5633
  {
@@ -5112,7 +5650,7 @@ function DisplayHeading({
5112
5650
  ...props
5113
5651
  }) {
5114
5652
  const Comp = asChild ? Slot7 : "h1";
5115
- return /* @__PURE__ */ jsx50(
5653
+ return /* @__PURE__ */ jsx52(
5116
5654
  Comp,
5117
5655
  {
5118
5656
  "data-slot": "h1",
@@ -5141,7 +5679,7 @@ function Body({
5141
5679
  ...props
5142
5680
  }) {
5143
5681
  const Comp = asChild ? Slot7 : "p";
5144
- return /* @__PURE__ */ jsx50(
5682
+ return /* @__PURE__ */ jsx52(
5145
5683
  Comp,
5146
5684
  {
5147
5685
  "data-slot": "h1",
@@ -5156,7 +5694,7 @@ function HeadingXL({
5156
5694
  ...props
5157
5695
  }) {
5158
5696
  const Comp = asChild ? Slot7 : "h1";
5159
- return /* @__PURE__ */ jsx50(
5697
+ return /* @__PURE__ */ jsx52(
5160
5698
  Comp,
5161
5699
  {
5162
5700
  "data-slot": "h1",
@@ -5174,7 +5712,7 @@ function HeadingL({
5174
5712
  ...props
5175
5713
  }) {
5176
5714
  const Comp = asChild ? Slot7 : "h2";
5177
- return /* @__PURE__ */ jsx50(
5715
+ return /* @__PURE__ */ jsx52(
5178
5716
  Comp,
5179
5717
  {
5180
5718
  "data-slot": "h2",
@@ -5192,7 +5730,7 @@ function HeadingM({
5192
5730
  ...props
5193
5731
  }) {
5194
5732
  const Comp = asChild ? Slot7 : "h3";
5195
- return /* @__PURE__ */ jsx50(
5733
+ return /* @__PURE__ */ jsx52(
5196
5734
  Comp,
5197
5735
  {
5198
5736
  "data-slot": "h3",
@@ -5210,7 +5748,7 @@ function HeadingS({
5210
5748
  ...props
5211
5749
  }) {
5212
5750
  const Comp = asChild ? Slot7 : "h4";
5213
- return /* @__PURE__ */ jsx50(
5751
+ return /* @__PURE__ */ jsx52(
5214
5752
  Comp,
5215
5753
  {
5216
5754
  "data-slot": "h4",
@@ -5228,7 +5766,7 @@ function HeadingXS({
5228
5766
  ...props
5229
5767
  }) {
5230
5768
  const Comp = asChild ? Slot7 : "h5";
5231
- return /* @__PURE__ */ jsx50(
5769
+ return /* @__PURE__ */ jsx52(
5232
5770
  Comp,
5233
5771
  {
5234
5772
  "data-slot": "h5",
@@ -5246,7 +5784,7 @@ function HeadingXXS({
5246
5784
  ...props
5247
5785
  }) {
5248
5786
  const Comp = asChild ? Slot7 : "h6";
5249
- return /* @__PURE__ */ jsx50(
5787
+ return /* @__PURE__ */ jsx52(
5250
5788
  Comp,
5251
5789
  {
5252
5790
  "data-slot": "h5",
@@ -5341,6 +5879,7 @@ export {
5341
5879
  ContextMenuSubTrigger,
5342
5880
  ContextMenuTrigger,
5343
5881
  DateInput,
5882
+ DateRangeInput,
5344
5883
  Dialog,
5345
5884
  DialogClose,
5346
5885
  DialogContent,
@@ -5508,6 +6047,7 @@ export {
5508
6047
  TabsList,
5509
6048
  TabsTrigger,
5510
6049
  Textarea,
6050
+ TimeInput,
5511
6051
  Toaster,
5512
6052
  Toggle,
5513
6053
  ToggleGroup,