@codapet/design-system 0.4.0 → 0.4.2

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
@@ -1886,6 +1886,7 @@ function ContextMenuShortcut({
1886
1886
 
1887
1887
  // src/components/ui/date-input.tsx
1888
1888
  import "class-variance-authority";
1889
+ import { format as dateFnsFormat, parse as dateFnsParse, isValid } from "date-fns";
1889
1890
  import { CalendarDays } from "lucide-react";
1890
1891
  import * as React20 from "react";
1891
1892
 
@@ -2063,6 +2064,26 @@ function PopoverAnchor({
2063
2064
 
2064
2065
  // src/components/ui/date-input.tsx
2065
2066
  import { jsx as jsx22, jsxs as jsxs10 } from "react/jsx-runtime";
2067
+ var DATE_FORMAT_TOKENS = {
2068
+ "MM/DD/YYYY": "MM/dd/yyyy",
2069
+ "DD/MM/YYYY": "dd/MM/yyyy",
2070
+ "YYYY-MM-DD": "yyyy-MM-dd",
2071
+ "DD-MM-YYYY": "dd-MM-yyyy",
2072
+ "MM-DD-YYYY": "MM-dd-yyyy",
2073
+ "DD.MM.YYYY": "dd.MM.yyyy",
2074
+ "MMMM D, YYYY": "MMMM d, yyyy",
2075
+ "D MMMM YYYY": "d MMMM yyyy"
2076
+ };
2077
+ var DATE_FORMAT_PLACEHOLDER = {
2078
+ "MM/DD/YYYY": "mm/dd/yyyy",
2079
+ "DD/MM/YYYY": "dd/mm/yyyy",
2080
+ "YYYY-MM-DD": "yyyy-mm-dd",
2081
+ "DD-MM-YYYY": "dd-mm-yyyy",
2082
+ "MM-DD-YYYY": "mm-dd-yyyy",
2083
+ "DD.MM.YYYY": "dd.mm.yyyy",
2084
+ "MMMM D, YYYY": "Month d, yyyy",
2085
+ "D MMMM YYYY": "d Month yyyy"
2086
+ };
2066
2087
  var INPUT_PROP_KEYS = /* @__PURE__ */ new Set([
2067
2088
  "accept",
2068
2089
  "alt",
@@ -2122,21 +2143,16 @@ var INPUT_PROP_KEYS = /* @__PURE__ */ new Set([
2122
2143
  "onCompositionStart",
2123
2144
  "onCompositionUpdate"
2124
2145
  ]);
2125
- function formatDate(date) {
2126
- if (!date) {
2146
+ function formatDate(date, dateFormat = "MM/DD/YYYY") {
2147
+ if (!date || !isValid(date)) {
2127
2148
  return "";
2128
2149
  }
2129
- return date.toLocaleDateString("en-US", {
2130
- day: "2-digit",
2131
- month: "2-digit",
2132
- year: "numeric"
2133
- });
2134
- }
2135
- function isValidDate(date) {
2136
- if (!date) {
2137
- return false;
2138
- }
2139
- return !isNaN(date.getTime());
2150
+ return dateFnsFormat(date, DATE_FORMAT_TOKENS[dateFormat]);
2151
+ }
2152
+ function parseDate(value, dateFormat = "MM/DD/YYYY") {
2153
+ if (!value) return null;
2154
+ const parsed = dateFnsParse(value, DATE_FORMAT_TOKENS[dateFormat], /* @__PURE__ */ new Date());
2155
+ return isValid(parsed) ? parsed : null;
2140
2156
  }
2141
2157
  function DateInput({
2142
2158
  date,
@@ -2148,6 +2164,7 @@ function DateInput({
2148
2164
  inputClassName,
2149
2165
  calendarClassName,
2150
2166
  inputDisabled,
2167
+ dateFormat = "MM/DD/YYYY",
2151
2168
  mode,
2152
2169
  selected,
2153
2170
  onSelect,
@@ -2157,13 +2174,14 @@ function DateInput({
2157
2174
  captionLayout = "dropdown",
2158
2175
  showOutsideDays = false,
2159
2176
  classNames,
2160
- placeholder = "mm/dd/yyyy",
2177
+ placeholder,
2161
2178
  onBlur,
2162
2179
  ...restProps
2163
2180
  }) {
2181
+ const resolvedPlaceholder = placeholder ?? DATE_FORMAT_PLACEHOLDER[dateFormat];
2164
2182
  const [open, setOpen] = React20.useState(false);
2165
2183
  const [monthState, setMonthState] = React20.useState(date ?? null);
2166
- const [value, setValue] = React20.useState(formatDate(date ?? null));
2184
+ const [value, setValue] = React20.useState(formatDate(date ?? null, dateFormat));
2167
2185
  const [inputProps, calendarProps] = React20.useMemo(() => {
2168
2186
  const nextInputProps = {};
2169
2187
  const nextCalendarProps = {};
@@ -2211,10 +2229,10 @@ function DateInput({
2211
2229
  }, [minDate]);
2212
2230
  React20.useEffect(() => {
2213
2231
  if (date) {
2214
- setValue(formatDate(date));
2232
+ setValue(formatDate(date, dateFormat));
2215
2233
  setMonthState(date);
2216
2234
  }
2217
- }, [date]);
2235
+ }, [date, dateFormat]);
2218
2236
  const effectiveMonth = month ?? monthState ?? void 0;
2219
2237
  const effectiveSelected = selected ?? date ?? void 0;
2220
2238
  const isInputDisabled = inputDisabled ?? (typeof calendarDisabled === "boolean" ? calendarDisabled : false);
@@ -2226,7 +2244,7 @@ function DateInput({
2226
2244
  const isBeforeMax = !effectiveMaxDate || dateObj <= effectiveMaxDate;
2227
2245
  if (isAfterMin && isBeforeMax) {
2228
2246
  setDate(selectedDate);
2229
- setValue(formatDate(selectedDate));
2247
+ setValue(formatDate(selectedDate, dateFormat));
2230
2248
  setOpen(false);
2231
2249
  }
2232
2250
  }
@@ -2257,8 +2275,8 @@ function DateInput({
2257
2275
  const handleInputChange = (e) => {
2258
2276
  const inputValue = e.target.value;
2259
2277
  setValue(inputValue);
2260
- const parsedDate = new Date(inputValue);
2261
- if (isValidDate(parsedDate)) {
2278
+ const parsedDate = parseDate(inputValue, dateFormat);
2279
+ if (parsedDate) {
2262
2280
  const selectedDate = new Date(parsedDate);
2263
2281
  selectedDate.setHours(0, 0, 0, 0);
2264
2282
  const isAfterMin = !effectiveMinDate || selectedDate >= effectiveMinDate;
@@ -2281,16 +2299,16 @@ function DateInput({
2281
2299
  }
2282
2300
  return;
2283
2301
  }
2284
- const parsedDate = new Date(value);
2285
- if (!isValidDate(parsedDate)) {
2286
- setValue(formatDate(date));
2302
+ const parsedDate = parseDate(value, dateFormat);
2303
+ if (!parsedDate) {
2304
+ setValue(formatDate(date, dateFormat));
2287
2305
  } else {
2288
2306
  const selectedDate = new Date(parsedDate);
2289
2307
  selectedDate.setHours(0, 0, 0, 0);
2290
2308
  const isAfterMin = !effectiveMinDate || selectedDate >= effectiveMinDate;
2291
2309
  const isBeforeMax = !effectiveMaxDate || selectedDate <= effectiveMaxDate;
2292
2310
  if (!isAfterMin || !isBeforeMax) {
2293
- setValue(formatDate(date));
2311
+ setValue(formatDate(date, dateFormat));
2294
2312
  }
2295
2313
  }
2296
2314
  };
@@ -2300,7 +2318,7 @@ function DateInput({
2300
2318
  {
2301
2319
  id: "date",
2302
2320
  value,
2303
- placeholder,
2321
+ placeholder: resolvedPlaceholder,
2304
2322
  className: cn("bg-background cursor-pointer", inputClassName),
2305
2323
  onChange: handleInputChange,
2306
2324
  onBlur: handleBlur,
@@ -2331,35 +2349,354 @@ function DateInput({
2331
2349
  ] }) });
2332
2350
  }
2333
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
+
2334
2671
  // src/components/ui/drawer.tsx
2335
2672
  import "react";
2336
2673
  import { Drawer as DrawerPrimitive } from "vaul";
2337
- import { jsx as jsx23, jsxs as jsxs11 } from "react/jsx-runtime";
2674
+ import { jsx as jsx24, jsxs as jsxs12 } from "react/jsx-runtime";
2338
2675
  function Drawer({
2339
2676
  ...props
2340
2677
  }) {
2341
- return /* @__PURE__ */ jsx23(DrawerPrimitive.Root, { "data-slot": "drawer", ...props, repositionInputs: false });
2678
+ return /* @__PURE__ */ jsx24(DrawerPrimitive.Root, { "data-slot": "drawer", ...props, repositionInputs: false });
2342
2679
  }
2343
2680
  function DrawerTrigger({
2344
2681
  ...props
2345
2682
  }) {
2346
- return /* @__PURE__ */ jsx23(DrawerPrimitive.Trigger, { "data-slot": "drawer-trigger", ...props });
2683
+ return /* @__PURE__ */ jsx24(DrawerPrimitive.Trigger, { "data-slot": "drawer-trigger", ...props });
2347
2684
  }
2348
2685
  function DrawerPortal({
2349
2686
  ...props
2350
2687
  }) {
2351
- return /* @__PURE__ */ jsx23(DrawerPrimitive.Portal, { "data-slot": "drawer-portal", ...props });
2688
+ return /* @__PURE__ */ jsx24(DrawerPrimitive.Portal, { "data-slot": "drawer-portal", ...props });
2352
2689
  }
2353
2690
  function DrawerClose({
2354
2691
  ...props
2355
2692
  }) {
2356
- return /* @__PURE__ */ jsx23(DrawerPrimitive.Close, { "data-slot": "drawer-close", ...props });
2693
+ return /* @__PURE__ */ jsx24(DrawerPrimitive.Close, { "data-slot": "drawer-close", ...props });
2357
2694
  }
2358
2695
  function DrawerOverlay({
2359
2696
  className,
2360
2697
  ...props
2361
2698
  }) {
2362
- return /* @__PURE__ */ jsx23(
2699
+ return /* @__PURE__ */ jsx24(
2363
2700
  DrawerPrimitive.Overlay,
2364
2701
  {
2365
2702
  "data-slot": "drawer-overlay",
@@ -2377,9 +2714,9 @@ function DrawerContent({
2377
2714
  withCloseButton = true,
2378
2715
  ...props
2379
2716
  }) {
2380
- return /* @__PURE__ */ jsxs11(DrawerPortal, { "data-slot": "drawer-portal", children: [
2381
- /* @__PURE__ */ jsx23(DrawerOverlay, {}),
2382
- /* @__PURE__ */ jsxs11(
2717
+ return /* @__PURE__ */ jsxs12(DrawerPortal, { "data-slot": "drawer-portal", children: [
2718
+ /* @__PURE__ */ jsx24(DrawerOverlay, {}),
2719
+ /* @__PURE__ */ jsxs12(
2383
2720
  DrawerPrimitive.Content,
2384
2721
  {
2385
2722
  "data-slot": "drawer-content",
@@ -2393,7 +2730,7 @@ function DrawerContent({
2393
2730
  ),
2394
2731
  ...props,
2395
2732
  children: [
2396
- 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" }),
2397
2734
  children
2398
2735
  ]
2399
2736
  }
@@ -2401,7 +2738,7 @@ function DrawerContent({
2401
2738
  ] });
2402
2739
  }
2403
2740
  function DrawerHeader({ className, ...props }) {
2404
- return /* @__PURE__ */ jsx23(
2741
+ return /* @__PURE__ */ jsx24(
2405
2742
  "div",
2406
2743
  {
2407
2744
  "data-slot": "drawer-header",
@@ -2414,7 +2751,7 @@ function DrawerHeader({ className, ...props }) {
2414
2751
  );
2415
2752
  }
2416
2753
  function DrawerFooter({ className, ...props }) {
2417
- return /* @__PURE__ */ jsx23(
2754
+ return /* @__PURE__ */ jsx24(
2418
2755
  "div",
2419
2756
  {
2420
2757
  "data-slot": "drawer-footer",
@@ -2427,7 +2764,7 @@ function DrawerTitle({
2427
2764
  className,
2428
2765
  ...props
2429
2766
  }) {
2430
- return /* @__PURE__ */ jsx23(
2767
+ return /* @__PURE__ */ jsx24(
2431
2768
  DrawerPrimitive.Title,
2432
2769
  {
2433
2770
  "data-slot": "drawer-title",
@@ -2440,7 +2777,7 @@ function DrawerDescription({
2440
2777
  className,
2441
2778
  ...props
2442
2779
  }) {
2443
- return /* @__PURE__ */ jsx23(
2780
+ return /* @__PURE__ */ jsx24(
2444
2781
  DrawerPrimitive.Description,
2445
2782
  {
2446
2783
  "data-slot": "drawer-description",
@@ -2454,21 +2791,21 @@ function DrawerDescription({
2454
2791
  import "react";
2455
2792
  import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
2456
2793
  import { CheckIcon as CheckIcon2, ChevronRightIcon as ChevronRightIcon3, CircleIcon as CircleIcon2 } from "lucide-react";
2457
- import { jsx as jsx24, jsxs as jsxs12 } from "react/jsx-runtime";
2794
+ import { jsx as jsx25, jsxs as jsxs13 } from "react/jsx-runtime";
2458
2795
  function DropdownMenu({
2459
2796
  ...props
2460
2797
  }) {
2461
- return /* @__PURE__ */ jsx24(DropdownMenuPrimitive.Root, { "data-slot": "dropdown-menu", ...props });
2798
+ return /* @__PURE__ */ jsx25(DropdownMenuPrimitive.Root, { "data-slot": "dropdown-menu", ...props });
2462
2799
  }
2463
2800
  function DropdownMenuPortal({
2464
2801
  ...props
2465
2802
  }) {
2466
- return /* @__PURE__ */ jsx24(DropdownMenuPrimitive.Portal, { "data-slot": "dropdown-menu-portal", ...props });
2803
+ return /* @__PURE__ */ jsx25(DropdownMenuPrimitive.Portal, { "data-slot": "dropdown-menu-portal", ...props });
2467
2804
  }
2468
2805
  function DropdownMenuTrigger({
2469
2806
  ...props
2470
2807
  }) {
2471
- return /* @__PURE__ */ jsx24(
2808
+ return /* @__PURE__ */ jsx25(
2472
2809
  DropdownMenuPrimitive.Trigger,
2473
2810
  {
2474
2811
  "data-slot": "dropdown-menu-trigger",
@@ -2481,7 +2818,7 @@ function DropdownMenuContent({
2481
2818
  sideOffset = 4,
2482
2819
  ...props
2483
2820
  }) {
2484
- return /* @__PURE__ */ jsx24(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx24(
2821
+ return /* @__PURE__ */ jsx25(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx25(
2485
2822
  DropdownMenuPrimitive.Content,
2486
2823
  {
2487
2824
  "data-slot": "dropdown-menu-content",
@@ -2497,7 +2834,7 @@ function DropdownMenuContent({
2497
2834
  function DropdownMenuGroup({
2498
2835
  ...props
2499
2836
  }) {
2500
- return /* @__PURE__ */ jsx24(DropdownMenuPrimitive.Group, { "data-slot": "dropdown-menu-group", ...props });
2837
+ return /* @__PURE__ */ jsx25(DropdownMenuPrimitive.Group, { "data-slot": "dropdown-menu-group", ...props });
2501
2838
  }
2502
2839
  function DropdownMenuItem({
2503
2840
  className,
@@ -2505,7 +2842,7 @@ function DropdownMenuItem({
2505
2842
  variant = "default",
2506
2843
  ...props
2507
2844
  }) {
2508
- return /* @__PURE__ */ jsx24(
2845
+ return /* @__PURE__ */ jsx25(
2509
2846
  DropdownMenuPrimitive.Item,
2510
2847
  {
2511
2848
  "data-slot": "dropdown-menu-item",
@@ -2525,7 +2862,7 @@ function DropdownMenuCheckboxItem({
2525
2862
  checked,
2526
2863
  ...props
2527
2864
  }) {
2528
- return /* @__PURE__ */ jsxs12(
2865
+ return /* @__PURE__ */ jsxs13(
2529
2866
  DropdownMenuPrimitive.CheckboxItem,
2530
2867
  {
2531
2868
  "data-slot": "dropdown-menu-checkbox-item",
@@ -2536,7 +2873,7 @@ function DropdownMenuCheckboxItem({
2536
2873
  checked,
2537
2874
  ...props,
2538
2875
  children: [
2539
- /* @__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" }) }) }),
2540
2877
  children
2541
2878
  ]
2542
2879
  }
@@ -2545,7 +2882,7 @@ function DropdownMenuCheckboxItem({
2545
2882
  function DropdownMenuRadioGroup({
2546
2883
  ...props
2547
2884
  }) {
2548
- return /* @__PURE__ */ jsx24(
2885
+ return /* @__PURE__ */ jsx25(
2549
2886
  DropdownMenuPrimitive.RadioGroup,
2550
2887
  {
2551
2888
  "data-slot": "dropdown-menu-radio-group",
@@ -2558,7 +2895,7 @@ function DropdownMenuRadioItem({
2558
2895
  children,
2559
2896
  ...props
2560
2897
  }) {
2561
- return /* @__PURE__ */ jsxs12(
2898
+ return /* @__PURE__ */ jsxs13(
2562
2899
  DropdownMenuPrimitive.RadioItem,
2563
2900
  {
2564
2901
  "data-slot": "dropdown-menu-radio-item",
@@ -2568,7 +2905,7 @@ function DropdownMenuRadioItem({
2568
2905
  ),
2569
2906
  ...props,
2570
2907
  children: [
2571
- /* @__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" }) }) }),
2572
2909
  children
2573
2910
  ]
2574
2911
  }
@@ -2579,7 +2916,7 @@ function DropdownMenuLabel({
2579
2916
  inset,
2580
2917
  ...props
2581
2918
  }) {
2582
- return /* @__PURE__ */ jsx24(
2919
+ return /* @__PURE__ */ jsx25(
2583
2920
  DropdownMenuPrimitive.Label,
2584
2921
  {
2585
2922
  "data-slot": "dropdown-menu-label",
@@ -2596,7 +2933,7 @@ function DropdownMenuSeparator({
2596
2933
  className,
2597
2934
  ...props
2598
2935
  }) {
2599
- return /* @__PURE__ */ jsx24(
2936
+ return /* @__PURE__ */ jsx25(
2600
2937
  DropdownMenuPrimitive.Separator,
2601
2938
  {
2602
2939
  "data-slot": "dropdown-menu-separator",
@@ -2609,7 +2946,7 @@ function DropdownMenuShortcut({
2609
2946
  className,
2610
2947
  ...props
2611
2948
  }) {
2612
- return /* @__PURE__ */ jsx24(
2949
+ return /* @__PURE__ */ jsx25(
2613
2950
  "span",
2614
2951
  {
2615
2952
  "data-slot": "dropdown-menu-shortcut",
@@ -2624,7 +2961,7 @@ function DropdownMenuShortcut({
2624
2961
  function DropdownMenuSub({
2625
2962
  ...props
2626
2963
  }) {
2627
- return /* @__PURE__ */ jsx24(DropdownMenuPrimitive.Sub, { "data-slot": "dropdown-menu-sub", ...props });
2964
+ return /* @__PURE__ */ jsx25(DropdownMenuPrimitive.Sub, { "data-slot": "dropdown-menu-sub", ...props });
2628
2965
  }
2629
2966
  function DropdownMenuSubTrigger({
2630
2967
  className,
@@ -2632,7 +2969,7 @@ function DropdownMenuSubTrigger({
2632
2969
  children,
2633
2970
  ...props
2634
2971
  }) {
2635
- return /* @__PURE__ */ jsxs12(
2972
+ return /* @__PURE__ */ jsxs13(
2636
2973
  DropdownMenuPrimitive.SubTrigger,
2637
2974
  {
2638
2975
  "data-slot": "dropdown-menu-sub-trigger",
@@ -2644,7 +2981,7 @@ function DropdownMenuSubTrigger({
2644
2981
  ...props,
2645
2982
  children: [
2646
2983
  children,
2647
- /* @__PURE__ */ jsx24(ChevronRightIcon3, { className: "ml-auto size-4" })
2984
+ /* @__PURE__ */ jsx25(ChevronRightIcon3, { className: "ml-auto size-4" })
2648
2985
  ]
2649
2986
  }
2650
2987
  );
@@ -2653,7 +2990,7 @@ function DropdownMenuSubContent({
2653
2990
  className,
2654
2991
  ...props
2655
2992
  }) {
2656
- return /* @__PURE__ */ jsx24(
2993
+ return /* @__PURE__ */ jsx25(
2657
2994
  DropdownMenuPrimitive.SubContent,
2658
2995
  {
2659
2996
  "data-slot": "dropdown-menu-sub-content",
@@ -2667,7 +3004,7 @@ function DropdownMenuSubContent({
2667
3004
  }
2668
3005
 
2669
3006
  // src/components/ui/form.tsx
2670
- import * as React24 from "react";
3007
+ import * as React25 from "react";
2671
3008
  import "@radix-ui/react-label";
2672
3009
  import { Slot as Slot5 } from "@radix-ui/react-slot";
2673
3010
  import {
@@ -2681,7 +3018,7 @@ import {
2681
3018
  import { Slot as Slot4 } from "@radix-ui/react-slot";
2682
3019
  import { cva as cva5 } from "class-variance-authority";
2683
3020
  import "react";
2684
- import { jsx as jsx25 } from "react/jsx-runtime";
3021
+ import { jsx as jsx26 } from "react/jsx-runtime";
2685
3022
  var labelTextVariants = cva5("font-sans font-semibold ", {
2686
3023
  variants: {
2687
3024
  size: {
@@ -2702,7 +3039,7 @@ function Label3({
2702
3039
  ...props
2703
3040
  }) {
2704
3041
  const Comp = asChild ? Slot4 : "label";
2705
- return /* @__PURE__ */ jsx25(
3042
+ return /* @__PURE__ */ jsx26(
2706
3043
  Comp,
2707
3044
  {
2708
3045
  "data-slot": "label",
@@ -2713,19 +3050,19 @@ function Label3({
2713
3050
  }
2714
3051
 
2715
3052
  // src/components/ui/form.tsx
2716
- import { jsx as jsx26 } from "react/jsx-runtime";
3053
+ import { jsx as jsx27 } from "react/jsx-runtime";
2717
3054
  var Form = FormProvider;
2718
- var FormFieldContext = React24.createContext(
3055
+ var FormFieldContext = React25.createContext(
2719
3056
  {}
2720
3057
  );
2721
3058
  var FormField = ({
2722
3059
  ...props
2723
3060
  }) => {
2724
- 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 }) });
2725
3062
  };
2726
3063
  var useFormField = () => {
2727
- const fieldContext = React24.useContext(FormFieldContext);
2728
- const itemContext = React24.useContext(FormItemContext);
3064
+ const fieldContext = React25.useContext(FormFieldContext);
3065
+ const itemContext = React25.useContext(FormItemContext);
2729
3066
  const { getFieldState } = useFormContext();
2730
3067
  const formState = useFormState({ name: fieldContext.name });
2731
3068
  const fieldState = getFieldState(fieldContext.name, formState);
@@ -2742,12 +3079,12 @@ var useFormField = () => {
2742
3079
  ...fieldState
2743
3080
  };
2744
3081
  };
2745
- var FormItemContext = React24.createContext(
3082
+ var FormItemContext = React25.createContext(
2746
3083
  {}
2747
3084
  );
2748
3085
  function FormItem({ className, ...props }) {
2749
- const id = React24.useId();
2750
- 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(
2751
3088
  "div",
2752
3089
  {
2753
3090
  "data-slot": "form-item",
@@ -2761,7 +3098,7 @@ function FormLabel({
2761
3098
  ...props
2762
3099
  }) {
2763
3100
  const { error, formItemId } = useFormField();
2764
- return /* @__PURE__ */ jsx26(
3101
+ return /* @__PURE__ */ jsx27(
2765
3102
  Label3,
2766
3103
  {
2767
3104
  "data-slot": "form-label",
@@ -2774,7 +3111,7 @@ function FormLabel({
2774
3111
  }
2775
3112
  function FormControl({ ...props }) {
2776
3113
  const { error, formItemId, formDescriptionId, formMessageId } = useFormField();
2777
- return /* @__PURE__ */ jsx26(
3114
+ return /* @__PURE__ */ jsx27(
2778
3115
  Slot5,
2779
3116
  {
2780
3117
  "data-slot": "form-control",
@@ -2787,7 +3124,7 @@ function FormControl({ ...props }) {
2787
3124
  }
2788
3125
  function FormDescription({ className, ...props }) {
2789
3126
  const { formDescriptionId } = useFormField();
2790
- return /* @__PURE__ */ jsx26(
3127
+ return /* @__PURE__ */ jsx27(
2791
3128
  "p",
2792
3129
  {
2793
3130
  "data-slot": "form-description",
@@ -2803,7 +3140,7 @@ function FormMessage({ className, ...props }) {
2803
3140
  if (!body) {
2804
3141
  return null;
2805
3142
  }
2806
- return /* @__PURE__ */ jsx26(
3143
+ return /* @__PURE__ */ jsx27(
2807
3144
  "p",
2808
3145
  {
2809
3146
  "data-slot": "form-message",
@@ -2818,16 +3155,16 @@ function FormMessage({ className, ...props }) {
2818
3155
  // src/components/ui/hover-card.tsx
2819
3156
  import "react";
2820
3157
  import * as HoverCardPrimitive from "@radix-ui/react-hover-card";
2821
- import { jsx as jsx27 } from "react/jsx-runtime";
3158
+ import { jsx as jsx28 } from "react/jsx-runtime";
2822
3159
  function HoverCard({
2823
3160
  ...props
2824
3161
  }) {
2825
- return /* @__PURE__ */ jsx27(HoverCardPrimitive.Root, { "data-slot": "hover-card", ...props });
3162
+ return /* @__PURE__ */ jsx28(HoverCardPrimitive.Root, { "data-slot": "hover-card", ...props });
2826
3163
  }
2827
3164
  function HoverCardTrigger({
2828
3165
  ...props
2829
3166
  }) {
2830
- return /* @__PURE__ */ jsx27(HoverCardPrimitive.Trigger, { "data-slot": "hover-card-trigger", ...props });
3167
+ return /* @__PURE__ */ jsx28(HoverCardPrimitive.Trigger, { "data-slot": "hover-card-trigger", ...props });
2831
3168
  }
2832
3169
  function HoverCardContent({
2833
3170
  className,
@@ -2835,7 +3172,7 @@ function HoverCardContent({
2835
3172
  sideOffset = 4,
2836
3173
  ...props
2837
3174
  }) {
2838
- 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(
2839
3176
  HoverCardPrimitive.Content,
2840
3177
  {
2841
3178
  "data-slot": "hover-card-content",
@@ -2851,16 +3188,16 @@ function HoverCardContent({
2851
3188
  }
2852
3189
 
2853
3190
  // src/components/ui/input-otp.tsx
2854
- import * as React26 from "react";
3191
+ import * as React27 from "react";
2855
3192
  import { OTPInput, OTPInputContext } from "input-otp";
2856
3193
  import { MinusIcon } from "lucide-react";
2857
- import { jsx as jsx28, jsxs as jsxs13 } from "react/jsx-runtime";
3194
+ import { jsx as jsx29, jsxs as jsxs14 } from "react/jsx-runtime";
2858
3195
  function InputOTP({
2859
3196
  className,
2860
3197
  containerClassName,
2861
3198
  ...props
2862
3199
  }) {
2863
- return /* @__PURE__ */ jsx28(
3200
+ return /* @__PURE__ */ jsx29(
2864
3201
  OTPInput,
2865
3202
  {
2866
3203
  "data-slot": "input-otp",
@@ -2874,7 +3211,7 @@ function InputOTP({
2874
3211
  );
2875
3212
  }
2876
3213
  function InputOTPGroup({ className, ...props }) {
2877
- return /* @__PURE__ */ jsx28(
3214
+ return /* @__PURE__ */ jsx29(
2878
3215
  "div",
2879
3216
  {
2880
3217
  "data-slot": "input-otp-group",
@@ -2888,9 +3225,9 @@ function InputOTPSlot({
2888
3225
  className,
2889
3226
  ...props
2890
3227
  }) {
2891
- const inputOTPContext = React26.useContext(OTPInputContext);
3228
+ const inputOTPContext = React27.useContext(OTPInputContext);
2892
3229
  const { char, hasFakeCaret, isActive } = inputOTPContext?.slots[index] ?? {};
2893
- return /* @__PURE__ */ jsxs13(
3230
+ return /* @__PURE__ */ jsxs14(
2894
3231
  "div",
2895
3232
  {
2896
3233
  "data-slot": "input-otp-slot",
@@ -2902,25 +3239,25 @@ function InputOTPSlot({
2902
3239
  ...props,
2903
3240
  children: [
2904
3241
  char,
2905
- 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" }) })
2906
3243
  ]
2907
3244
  }
2908
3245
  );
2909
3246
  }
2910
3247
  function InputOTPSeparator({ ...props }) {
2911
- 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, {}) });
2912
3249
  }
2913
3250
 
2914
3251
  // src/components/ui/menubar.tsx
2915
3252
  import "react";
2916
3253
  import * as MenubarPrimitive from "@radix-ui/react-menubar";
2917
3254
  import { CheckIcon as CheckIcon3, ChevronRightIcon as ChevronRightIcon4, CircleIcon as CircleIcon3 } from "lucide-react";
2918
- import { jsx as jsx29, jsxs as jsxs14 } from "react/jsx-runtime";
3255
+ import { jsx as jsx30, jsxs as jsxs15 } from "react/jsx-runtime";
2919
3256
  function Menubar({
2920
3257
  className,
2921
3258
  ...props
2922
3259
  }) {
2923
- return /* @__PURE__ */ jsx29(
3260
+ return /* @__PURE__ */ jsx30(
2924
3261
  MenubarPrimitive.Root,
2925
3262
  {
2926
3263
  "data-slot": "menubar",
@@ -2935,28 +3272,28 @@ function Menubar({
2935
3272
  function MenubarMenu({
2936
3273
  ...props
2937
3274
  }) {
2938
- return /* @__PURE__ */ jsx29(MenubarPrimitive.Menu, { "data-slot": "menubar-menu", ...props });
3275
+ return /* @__PURE__ */ jsx30(MenubarPrimitive.Menu, { "data-slot": "menubar-menu", ...props });
2939
3276
  }
2940
3277
  function MenubarGroup({
2941
3278
  ...props
2942
3279
  }) {
2943
- return /* @__PURE__ */ jsx29(MenubarPrimitive.Group, { "data-slot": "menubar-group", ...props });
3280
+ return /* @__PURE__ */ jsx30(MenubarPrimitive.Group, { "data-slot": "menubar-group", ...props });
2944
3281
  }
2945
3282
  function MenubarPortal({
2946
3283
  ...props
2947
3284
  }) {
2948
- return /* @__PURE__ */ jsx29(MenubarPrimitive.Portal, { "data-slot": "menubar-portal", ...props });
3285
+ return /* @__PURE__ */ jsx30(MenubarPrimitive.Portal, { "data-slot": "menubar-portal", ...props });
2949
3286
  }
2950
3287
  function MenubarRadioGroup({
2951
3288
  ...props
2952
3289
  }) {
2953
- return /* @__PURE__ */ jsx29(MenubarPrimitive.RadioGroup, { "data-slot": "menubar-radio-group", ...props });
3290
+ return /* @__PURE__ */ jsx30(MenubarPrimitive.RadioGroup, { "data-slot": "menubar-radio-group", ...props });
2954
3291
  }
2955
3292
  function MenubarTrigger({
2956
3293
  className,
2957
3294
  ...props
2958
3295
  }) {
2959
- return /* @__PURE__ */ jsx29(
3296
+ return /* @__PURE__ */ jsx30(
2960
3297
  MenubarPrimitive.Trigger,
2961
3298
  {
2962
3299
  "data-slot": "menubar-trigger",
@@ -2975,7 +3312,7 @@ function MenubarContent({
2975
3312
  sideOffset = 8,
2976
3313
  ...props
2977
3314
  }) {
2978
- return /* @__PURE__ */ jsx29(MenubarPortal, { children: /* @__PURE__ */ jsx29(
3315
+ return /* @__PURE__ */ jsx30(MenubarPortal, { children: /* @__PURE__ */ jsx30(
2979
3316
  MenubarPrimitive.Content,
2980
3317
  {
2981
3318
  "data-slot": "menubar-content",
@@ -2996,7 +3333,7 @@ function MenubarItem({
2996
3333
  variant = "default",
2997
3334
  ...props
2998
3335
  }) {
2999
- return /* @__PURE__ */ jsx29(
3336
+ return /* @__PURE__ */ jsx30(
3000
3337
  MenubarPrimitive.Item,
3001
3338
  {
3002
3339
  "data-slot": "menubar-item",
@@ -3016,7 +3353,7 @@ function MenubarCheckboxItem({
3016
3353
  checked,
3017
3354
  ...props
3018
3355
  }) {
3019
- return /* @__PURE__ */ jsxs14(
3356
+ return /* @__PURE__ */ jsxs15(
3020
3357
  MenubarPrimitive.CheckboxItem,
3021
3358
  {
3022
3359
  "data-slot": "menubar-checkbox-item",
@@ -3027,7 +3364,7 @@ function MenubarCheckboxItem({
3027
3364
  checked,
3028
3365
  ...props,
3029
3366
  children: [
3030
- /* @__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" }) }) }),
3031
3368
  children
3032
3369
  ]
3033
3370
  }
@@ -3038,7 +3375,7 @@ function MenubarRadioItem({
3038
3375
  children,
3039
3376
  ...props
3040
3377
  }) {
3041
- return /* @__PURE__ */ jsxs14(
3378
+ return /* @__PURE__ */ jsxs15(
3042
3379
  MenubarPrimitive.RadioItem,
3043
3380
  {
3044
3381
  "data-slot": "menubar-radio-item",
@@ -3048,7 +3385,7 @@ function MenubarRadioItem({
3048
3385
  ),
3049
3386
  ...props,
3050
3387
  children: [
3051
- /* @__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" }) }) }),
3052
3389
  children
3053
3390
  ]
3054
3391
  }
@@ -3059,7 +3396,7 @@ function MenubarLabel({
3059
3396
  inset,
3060
3397
  ...props
3061
3398
  }) {
3062
- return /* @__PURE__ */ jsx29(
3399
+ return /* @__PURE__ */ jsx30(
3063
3400
  MenubarPrimitive.Label,
3064
3401
  {
3065
3402
  "data-slot": "menubar-label",
@@ -3076,7 +3413,7 @@ function MenubarSeparator({
3076
3413
  className,
3077
3414
  ...props
3078
3415
  }) {
3079
- return /* @__PURE__ */ jsx29(
3416
+ return /* @__PURE__ */ jsx30(
3080
3417
  MenubarPrimitive.Separator,
3081
3418
  {
3082
3419
  "data-slot": "menubar-separator",
@@ -3089,7 +3426,7 @@ function MenubarShortcut({
3089
3426
  className,
3090
3427
  ...props
3091
3428
  }) {
3092
- return /* @__PURE__ */ jsx29(
3429
+ return /* @__PURE__ */ jsx30(
3093
3430
  "span",
3094
3431
  {
3095
3432
  "data-slot": "menubar-shortcut",
@@ -3104,7 +3441,7 @@ function MenubarShortcut({
3104
3441
  function MenubarSub({
3105
3442
  ...props
3106
3443
  }) {
3107
- return /* @__PURE__ */ jsx29(MenubarPrimitive.Sub, { "data-slot": "menubar-sub", ...props });
3444
+ return /* @__PURE__ */ jsx30(MenubarPrimitive.Sub, { "data-slot": "menubar-sub", ...props });
3108
3445
  }
3109
3446
  function MenubarSubTrigger({
3110
3447
  className,
@@ -3112,7 +3449,7 @@ function MenubarSubTrigger({
3112
3449
  children,
3113
3450
  ...props
3114
3451
  }) {
3115
- return /* @__PURE__ */ jsxs14(
3452
+ return /* @__PURE__ */ jsxs15(
3116
3453
  MenubarPrimitive.SubTrigger,
3117
3454
  {
3118
3455
  "data-slot": "menubar-sub-trigger",
@@ -3124,7 +3461,7 @@ function MenubarSubTrigger({
3124
3461
  ...props,
3125
3462
  children: [
3126
3463
  children,
3127
- /* @__PURE__ */ jsx29(ChevronRightIcon4, { className: "ml-auto h-4 w-4" })
3464
+ /* @__PURE__ */ jsx30(ChevronRightIcon4, { className: "ml-auto h-4 w-4" })
3128
3465
  ]
3129
3466
  }
3130
3467
  );
@@ -3133,7 +3470,7 @@ function MenubarSubContent({
3133
3470
  className,
3134
3471
  ...props
3135
3472
  }) {
3136
- return /* @__PURE__ */ jsx29(
3473
+ return /* @__PURE__ */ jsx30(
3137
3474
  MenubarPrimitive.SubContent,
3138
3475
  {
3139
3476
  "data-slot": "menubar-sub-content",
@@ -3151,14 +3488,14 @@ import "react";
3151
3488
  import * as NavigationMenuPrimitive from "@radix-ui/react-navigation-menu";
3152
3489
  import { cva as cva6 } from "class-variance-authority";
3153
3490
  import { ChevronDownIcon as ChevronDownIcon3 } from "lucide-react";
3154
- import { jsx as jsx30, jsxs as jsxs15 } from "react/jsx-runtime";
3491
+ import { jsx as jsx31, jsxs as jsxs16 } from "react/jsx-runtime";
3155
3492
  function NavigationMenu({
3156
3493
  className,
3157
3494
  children,
3158
3495
  viewport = true,
3159
3496
  ...props
3160
3497
  }) {
3161
- return /* @__PURE__ */ jsxs15(
3498
+ return /* @__PURE__ */ jsxs16(
3162
3499
  NavigationMenuPrimitive.Root,
3163
3500
  {
3164
3501
  "data-slot": "navigation-menu",
@@ -3170,7 +3507,7 @@ function NavigationMenu({
3170
3507
  ...props,
3171
3508
  children: [
3172
3509
  children,
3173
- viewport && /* @__PURE__ */ jsx30(NavigationMenuViewport, {})
3510
+ viewport && /* @__PURE__ */ jsx31(NavigationMenuViewport, {})
3174
3511
  ]
3175
3512
  }
3176
3513
  );
@@ -3179,7 +3516,7 @@ function NavigationMenuList({
3179
3516
  className,
3180
3517
  ...props
3181
3518
  }) {
3182
- return /* @__PURE__ */ jsx30(
3519
+ return /* @__PURE__ */ jsx31(
3183
3520
  NavigationMenuPrimitive.List,
3184
3521
  {
3185
3522
  "data-slot": "navigation-menu-list",
@@ -3195,7 +3532,7 @@ function NavigationMenuItem({
3195
3532
  className,
3196
3533
  ...props
3197
3534
  }) {
3198
- return /* @__PURE__ */ jsx30(
3535
+ return /* @__PURE__ */ jsx31(
3199
3536
  NavigationMenuPrimitive.Item,
3200
3537
  {
3201
3538
  "data-slot": "navigation-menu-item",
@@ -3212,7 +3549,7 @@ function NavigationMenuTrigger({
3212
3549
  children,
3213
3550
  ...props
3214
3551
  }) {
3215
- return /* @__PURE__ */ jsxs15(
3552
+ return /* @__PURE__ */ jsxs16(
3216
3553
  NavigationMenuPrimitive.Trigger,
3217
3554
  {
3218
3555
  "data-slot": "navigation-menu-trigger",
@@ -3221,7 +3558,7 @@ function NavigationMenuTrigger({
3221
3558
  children: [
3222
3559
  children,
3223
3560
  " ",
3224
- /* @__PURE__ */ jsx30(
3561
+ /* @__PURE__ */ jsx31(
3225
3562
  ChevronDownIcon3,
3226
3563
  {
3227
3564
  className: "relative top-[1px] ml-1 size-3 transition duration-400 group-data-[state=open]:rotate-180",
@@ -3236,7 +3573,7 @@ function NavigationMenuContent({
3236
3573
  className,
3237
3574
  ...props
3238
3575
  }) {
3239
- return /* @__PURE__ */ jsx30(
3576
+ return /* @__PURE__ */ jsx31(
3240
3577
  NavigationMenuPrimitive.Content,
3241
3578
  {
3242
3579
  "data-slot": "navigation-menu-content",
@@ -3253,13 +3590,13 @@ function NavigationMenuViewport({
3253
3590
  className,
3254
3591
  ...props
3255
3592
  }) {
3256
- return /* @__PURE__ */ jsx30(
3593
+ return /* @__PURE__ */ jsx31(
3257
3594
  "div",
3258
3595
  {
3259
3596
  className: cn(
3260
3597
  "absolute top-full left-0 isolate z-50 flex justify-center"
3261
3598
  ),
3262
- children: /* @__PURE__ */ jsx30(
3599
+ children: /* @__PURE__ */ jsx31(
3263
3600
  NavigationMenuPrimitive.Viewport,
3264
3601
  {
3265
3602
  "data-slot": "navigation-menu-viewport",
@@ -3277,7 +3614,7 @@ function NavigationMenuLink({
3277
3614
  className,
3278
3615
  ...props
3279
3616
  }) {
3280
- return /* @__PURE__ */ jsx30(
3617
+ return /* @__PURE__ */ jsx31(
3281
3618
  NavigationMenuPrimitive.Link,
3282
3619
  {
3283
3620
  "data-slot": "navigation-menu-link",
@@ -3293,7 +3630,7 @@ function NavigationMenuIndicator({
3293
3630
  className,
3294
3631
  ...props
3295
3632
  }) {
3296
- return /* @__PURE__ */ jsx30(
3633
+ return /* @__PURE__ */ jsx31(
3297
3634
  NavigationMenuPrimitive.Indicator,
3298
3635
  {
3299
3636
  "data-slot": "navigation-menu-indicator",
@@ -3302,7 +3639,7 @@ function NavigationMenuIndicator({
3302
3639
  className
3303
3640
  ),
3304
3641
  ...props,
3305
- 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" })
3306
3643
  }
3307
3644
  );
3308
3645
  }
@@ -3314,9 +3651,9 @@ import {
3314
3651
  ChevronRightIcon as ChevronRightIcon5,
3315
3652
  MoreHorizontalIcon
3316
3653
  } from "lucide-react";
3317
- import { jsx as jsx31, jsxs as jsxs16 } from "react/jsx-runtime";
3654
+ import { jsx as jsx32, jsxs as jsxs17 } from "react/jsx-runtime";
3318
3655
  function Pagination({ className, ...props }) {
3319
- return /* @__PURE__ */ jsx31(
3656
+ return /* @__PURE__ */ jsx32(
3320
3657
  "nav",
3321
3658
  {
3322
3659
  role: "navigation",
@@ -3331,7 +3668,7 @@ function PaginationContent({
3331
3668
  className,
3332
3669
  ...props
3333
3670
  }) {
3334
- return /* @__PURE__ */ jsx31(
3671
+ return /* @__PURE__ */ jsx32(
3335
3672
  "ul",
3336
3673
  {
3337
3674
  "data-slot": "pagination-content",
@@ -3341,7 +3678,7 @@ function PaginationContent({
3341
3678
  );
3342
3679
  }
3343
3680
  function PaginationItem({ ...props }) {
3344
- return /* @__PURE__ */ jsx31("li", { "data-slot": "pagination-item", ...props });
3681
+ return /* @__PURE__ */ jsx32("li", { "data-slot": "pagination-item", ...props });
3345
3682
  }
3346
3683
  function PaginationLink({
3347
3684
  className,
@@ -3349,7 +3686,7 @@ function PaginationLink({
3349
3686
  size = "icon",
3350
3687
  ...props
3351
3688
  }) {
3352
- return /* @__PURE__ */ jsx31(
3689
+ return /* @__PURE__ */ jsx32(
3353
3690
  "a",
3354
3691
  {
3355
3692
  "aria-current": isActive ? "page" : void 0,
@@ -3370,7 +3707,7 @@ function PaginationPrevious({
3370
3707
  className,
3371
3708
  ...props
3372
3709
  }) {
3373
- return /* @__PURE__ */ jsxs16(
3710
+ return /* @__PURE__ */ jsxs17(
3374
3711
  PaginationLink,
3375
3712
  {
3376
3713
  "aria-label": "Go to previous page",
@@ -3378,8 +3715,8 @@ function PaginationPrevious({
3378
3715
  className: cn("gap-1 px-2.5 sm:pl-2.5", className),
3379
3716
  ...props,
3380
3717
  children: [
3381
- /* @__PURE__ */ jsx31(ChevronLeftIcon2, {}),
3382
- /* @__PURE__ */ jsx31("span", { className: "hidden sm:block", children: "Previous" })
3718
+ /* @__PURE__ */ jsx32(ChevronLeftIcon2, {}),
3719
+ /* @__PURE__ */ jsx32("span", { className: "hidden sm:block", children: "Previous" })
3383
3720
  ]
3384
3721
  }
3385
3722
  );
@@ -3388,7 +3725,7 @@ function PaginationNext({
3388
3725
  className,
3389
3726
  ...props
3390
3727
  }) {
3391
- return /* @__PURE__ */ jsxs16(
3728
+ return /* @__PURE__ */ jsxs17(
3392
3729
  PaginationLink,
3393
3730
  {
3394
3731
  "aria-label": "Go to next page",
@@ -3396,8 +3733,8 @@ function PaginationNext({
3396
3733
  className: cn("gap-1 px-2.5 sm:pr-2.5", className),
3397
3734
  ...props,
3398
3735
  children: [
3399
- /* @__PURE__ */ jsx31("span", { className: "hidden sm:block", children: "Next" }),
3400
- /* @__PURE__ */ jsx31(ChevronRightIcon5, {})
3736
+ /* @__PURE__ */ jsx32("span", { className: "hidden sm:block", children: "Next" }),
3737
+ /* @__PURE__ */ jsx32(ChevronRightIcon5, {})
3401
3738
  ]
3402
3739
  }
3403
3740
  );
@@ -3406,7 +3743,7 @@ function PaginationEllipsis({
3406
3743
  className,
3407
3744
  ...props
3408
3745
  }) {
3409
- return /* @__PURE__ */ jsxs16(
3746
+ return /* @__PURE__ */ jsxs17(
3410
3747
  "span",
3411
3748
  {
3412
3749
  "aria-hidden": true,
@@ -3414,8 +3751,8 @@ function PaginationEllipsis({
3414
3751
  className: cn("flex size-9 items-center justify-center", className),
3415
3752
  ...props,
3416
3753
  children: [
3417
- /* @__PURE__ */ jsx31(MoreHorizontalIcon, { className: "size-4" }),
3418
- /* @__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" })
3419
3756
  ]
3420
3757
  }
3421
3758
  );
@@ -3424,13 +3761,13 @@ function PaginationEllipsis({
3424
3761
  // src/components/ui/progress.tsx
3425
3762
  import * as ProgressPrimitive from "@radix-ui/react-progress";
3426
3763
  import "react";
3427
- import { jsx as jsx32 } from "react/jsx-runtime";
3764
+ import { jsx as jsx33 } from "react/jsx-runtime";
3428
3765
  function Progress({
3429
3766
  className,
3430
3767
  value,
3431
3768
  ...props
3432
3769
  }) {
3433
- return /* @__PURE__ */ jsx32(
3770
+ return /* @__PURE__ */ jsx33(
3434
3771
  ProgressPrimitive.Root,
3435
3772
  {
3436
3773
  "data-slot": "progress",
@@ -3439,7 +3776,7 @@ function Progress({
3439
3776
  className
3440
3777
  ),
3441
3778
  ...props,
3442
- children: /* @__PURE__ */ jsx32(
3779
+ children: /* @__PURE__ */ jsx33(
3443
3780
  ProgressPrimitive.Indicator,
3444
3781
  {
3445
3782
  "data-slot": "progress-indicator",
@@ -3455,12 +3792,12 @@ function Progress({
3455
3792
  import * as RadioGroupPrimitive from "@radix-ui/react-radio-group";
3456
3793
  import { CircleIcon as CircleIcon4 } from "lucide-react";
3457
3794
  import "react";
3458
- import { jsx as jsx33 } from "react/jsx-runtime";
3795
+ import { jsx as jsx34 } from "react/jsx-runtime";
3459
3796
  function RadioGroup4({
3460
3797
  className,
3461
3798
  ...props
3462
3799
  }) {
3463
- return /* @__PURE__ */ jsx33(
3800
+ return /* @__PURE__ */ jsx34(
3464
3801
  RadioGroupPrimitive.Root,
3465
3802
  {
3466
3803
  "data-slot": "radio-group",
@@ -3473,7 +3810,7 @@ function RadioGroupItem({
3473
3810
  className,
3474
3811
  ...props
3475
3812
  }) {
3476
- return /* @__PURE__ */ jsx33(
3813
+ return /* @__PURE__ */ jsx34(
3477
3814
  RadioGroupPrimitive.Item,
3478
3815
  {
3479
3816
  "data-slot": "radio-group-item",
@@ -3482,12 +3819,12 @@ function RadioGroupItem({
3482
3819
  className
3483
3820
  ),
3484
3821
  ...props,
3485
- children: /* @__PURE__ */ jsx33(
3822
+ children: /* @__PURE__ */ jsx34(
3486
3823
  RadioGroupPrimitive.Indicator,
3487
3824
  {
3488
3825
  "data-slot": "radio-group-indicator",
3489
3826
  className: "relative flex items-center justify-center",
3490
- 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" })
3491
3828
  }
3492
3829
  )
3493
3830
  }
@@ -3498,12 +3835,12 @@ function RadioGroupItem({
3498
3835
  import "react";
3499
3836
  import { GripVerticalIcon } from "lucide-react";
3500
3837
  import * as ResizablePrimitive from "react-resizable-panels";
3501
- import { jsx as jsx34 } from "react/jsx-runtime";
3838
+ import { jsx as jsx35 } from "react/jsx-runtime";
3502
3839
  function ResizablePanelGroup({
3503
3840
  className,
3504
3841
  ...props
3505
3842
  }) {
3506
- return /* @__PURE__ */ jsx34(
3843
+ return /* @__PURE__ */ jsx35(
3507
3844
  ResizablePrimitive.PanelGroup,
3508
3845
  {
3509
3846
  "data-slot": "resizable-panel-group",
@@ -3518,14 +3855,14 @@ function ResizablePanelGroup({
3518
3855
  function ResizablePanel({
3519
3856
  ...props
3520
3857
  }) {
3521
- return /* @__PURE__ */ jsx34(ResizablePrimitive.Panel, { "data-slot": "resizable-panel", ...props });
3858
+ return /* @__PURE__ */ jsx35(ResizablePrimitive.Panel, { "data-slot": "resizable-panel", ...props });
3522
3859
  }
3523
3860
  function ResizableHandle({
3524
3861
  withHandle,
3525
3862
  className,
3526
3863
  ...props
3527
3864
  }) {
3528
- return /* @__PURE__ */ jsx34(
3865
+ return /* @__PURE__ */ jsx35(
3529
3866
  ResizablePrimitive.PanelResizeHandle,
3530
3867
  {
3531
3868
  "data-slot": "resizable-handle",
@@ -3534,7 +3871,7 @@ function ResizableHandle({
3534
3871
  className
3535
3872
  ),
3536
3873
  ...props,
3537
- 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" }) })
3538
3875
  }
3539
3876
  );
3540
3877
  }
@@ -3542,20 +3879,20 @@ function ResizableHandle({
3542
3879
  // src/components/ui/scroll-area.tsx
3543
3880
  import "react";
3544
3881
  import * as ScrollAreaPrimitive from "@radix-ui/react-scroll-area";
3545
- import { jsx as jsx35, jsxs as jsxs17 } from "react/jsx-runtime";
3882
+ import { jsx as jsx36, jsxs as jsxs18 } from "react/jsx-runtime";
3546
3883
  function ScrollArea({
3547
3884
  className,
3548
3885
  children,
3549
3886
  ...props
3550
3887
  }) {
3551
- return /* @__PURE__ */ jsxs17(
3888
+ return /* @__PURE__ */ jsxs18(
3552
3889
  ScrollAreaPrimitive.Root,
3553
3890
  {
3554
3891
  "data-slot": "scroll-area",
3555
3892
  className: cn("relative", className),
3556
3893
  ...props,
3557
3894
  children: [
3558
- /* @__PURE__ */ jsx35(
3895
+ /* @__PURE__ */ jsx36(
3559
3896
  ScrollAreaPrimitive.Viewport,
3560
3897
  {
3561
3898
  "data-slot": "scroll-area-viewport",
@@ -3563,8 +3900,8 @@ function ScrollArea({
3563
3900
  children
3564
3901
  }
3565
3902
  ),
3566
- /* @__PURE__ */ jsx35(ScrollBar, {}),
3567
- /* @__PURE__ */ jsx35(ScrollAreaPrimitive.Corner, {})
3903
+ /* @__PURE__ */ jsx36(ScrollBar, {}),
3904
+ /* @__PURE__ */ jsx36(ScrollAreaPrimitive.Corner, {})
3568
3905
  ]
3569
3906
  }
3570
3907
  );
@@ -3574,7 +3911,7 @@ function ScrollBar({
3574
3911
  orientation = "vertical",
3575
3912
  ...props
3576
3913
  }) {
3577
- return /* @__PURE__ */ jsx35(
3914
+ return /* @__PURE__ */ jsx36(
3578
3915
  ScrollAreaPrimitive.ScrollAreaScrollbar,
3579
3916
  {
3580
3917
  "data-slot": "scroll-area-scrollbar",
@@ -3586,7 +3923,7 @@ function ScrollBar({
3586
3923
  className
3587
3924
  ),
3588
3925
  ...props,
3589
- children: /* @__PURE__ */ jsx35(
3926
+ children: /* @__PURE__ */ jsx36(
3590
3927
  ScrollAreaPrimitive.ScrollAreaThumb,
3591
3928
  {
3592
3929
  "data-slot": "scroll-area-thumb",
@@ -3601,21 +3938,21 @@ function ScrollBar({
3601
3938
  import "react";
3602
3939
  import * as SelectPrimitive from "@radix-ui/react-select";
3603
3940
  import { CheckIcon as CheckIcon4, ChevronDownIcon as ChevronDownIcon4, ChevronUpIcon } from "lucide-react";
3604
- import { jsx as jsx36, jsxs as jsxs18 } from "react/jsx-runtime";
3941
+ import { jsx as jsx37, jsxs as jsxs19 } from "react/jsx-runtime";
3605
3942
  function Select({
3606
3943
  ...props
3607
3944
  }) {
3608
- return /* @__PURE__ */ jsx36(SelectPrimitive.Root, { "data-slot": "select", ...props });
3945
+ return /* @__PURE__ */ jsx37(SelectPrimitive.Root, { "data-slot": "select", ...props });
3609
3946
  }
3610
3947
  function SelectGroup({
3611
3948
  ...props
3612
3949
  }) {
3613
- return /* @__PURE__ */ jsx36(SelectPrimitive.Group, { "data-slot": "select-group", ...props });
3950
+ return /* @__PURE__ */ jsx37(SelectPrimitive.Group, { "data-slot": "select-group", ...props });
3614
3951
  }
3615
3952
  function SelectValue({
3616
3953
  ...props
3617
3954
  }) {
3618
- return /* @__PURE__ */ jsx36(SelectPrimitive.Value, { "data-slot": "select-value", ...props });
3955
+ return /* @__PURE__ */ jsx37(SelectPrimitive.Value, { "data-slot": "select-value", ...props });
3619
3956
  }
3620
3957
  function SelectTrigger({
3621
3958
  className,
@@ -3623,7 +3960,7 @@ function SelectTrigger({
3623
3960
  children,
3624
3961
  ...props
3625
3962
  }) {
3626
- return /* @__PURE__ */ jsxs18(
3963
+ return /* @__PURE__ */ jsxs19(
3627
3964
  SelectPrimitive.Trigger,
3628
3965
  {
3629
3966
  "data-slot": "select-trigger",
@@ -3635,7 +3972,7 @@ function SelectTrigger({
3635
3972
  ...props,
3636
3973
  children: [
3637
3974
  children,
3638
- /* @__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" }) })
3639
3976
  ]
3640
3977
  }
3641
3978
  );
@@ -3646,7 +3983,7 @@ function SelectContent({
3646
3983
  position = "popper",
3647
3984
  ...props
3648
3985
  }) {
3649
- return /* @__PURE__ */ jsx36(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsxs18(
3986
+ return /* @__PURE__ */ jsx37(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsxs19(
3650
3987
  SelectPrimitive.Content,
3651
3988
  {
3652
3989
  "data-slot": "select-content",
@@ -3658,8 +3995,8 @@ function SelectContent({
3658
3995
  position,
3659
3996
  ...props,
3660
3997
  children: [
3661
- /* @__PURE__ */ jsx36(SelectScrollUpButton, {}),
3662
- /* @__PURE__ */ jsx36(
3998
+ /* @__PURE__ */ jsx37(SelectScrollUpButton, {}),
3999
+ /* @__PURE__ */ jsx37(
3663
4000
  SelectPrimitive.Viewport,
3664
4001
  {
3665
4002
  className: cn(
@@ -3669,7 +4006,7 @@ function SelectContent({
3669
4006
  children
3670
4007
  }
3671
4008
  ),
3672
- /* @__PURE__ */ jsx36(SelectScrollDownButton, {})
4009
+ /* @__PURE__ */ jsx37(SelectScrollDownButton, {})
3673
4010
  ]
3674
4011
  }
3675
4012
  ) });
@@ -3678,7 +4015,7 @@ function SelectLabel({
3678
4015
  className,
3679
4016
  ...props
3680
4017
  }) {
3681
- return /* @__PURE__ */ jsx36(
4018
+ return /* @__PURE__ */ jsx37(
3682
4019
  SelectPrimitive.Label,
3683
4020
  {
3684
4021
  "data-slot": "select-label",
@@ -3692,7 +4029,7 @@ function SelectItem({
3692
4029
  children,
3693
4030
  ...props
3694
4031
  }) {
3695
- return /* @__PURE__ */ jsxs18(
4032
+ return /* @__PURE__ */ jsxs19(
3696
4033
  SelectPrimitive.Item,
3697
4034
  {
3698
4035
  "data-slot": "select-item",
@@ -3702,8 +4039,8 @@ function SelectItem({
3702
4039
  ),
3703
4040
  ...props,
3704
4041
  children: [
3705
- /* @__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" }) }) }),
3706
- /* @__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 })
3707
4044
  ]
3708
4045
  }
3709
4046
  );
@@ -3712,7 +4049,7 @@ function SelectSeparator({
3712
4049
  className,
3713
4050
  ...props
3714
4051
  }) {
3715
- return /* @__PURE__ */ jsx36(
4052
+ return /* @__PURE__ */ jsx37(
3716
4053
  SelectPrimitive.Separator,
3717
4054
  {
3718
4055
  "data-slot": "select-separator",
@@ -3725,7 +4062,7 @@ function SelectScrollUpButton({
3725
4062
  className,
3726
4063
  ...props
3727
4064
  }) {
3728
- return /* @__PURE__ */ jsx36(
4065
+ return /* @__PURE__ */ jsx37(
3729
4066
  SelectPrimitive.ScrollUpButton,
3730
4067
  {
3731
4068
  "data-slot": "select-scroll-up-button",
@@ -3734,7 +4071,7 @@ function SelectScrollUpButton({
3734
4071
  className
3735
4072
  ),
3736
4073
  ...props,
3737
- children: /* @__PURE__ */ jsx36(ChevronUpIcon, { className: "size-4" })
4074
+ children: /* @__PURE__ */ jsx37(ChevronUpIcon, { className: "size-4" })
3738
4075
  }
3739
4076
  );
3740
4077
  }
@@ -3742,7 +4079,7 @@ function SelectScrollDownButton({
3742
4079
  className,
3743
4080
  ...props
3744
4081
  }) {
3745
- return /* @__PURE__ */ jsx36(
4082
+ return /* @__PURE__ */ jsx37(
3746
4083
  SelectPrimitive.ScrollDownButton,
3747
4084
  {
3748
4085
  "data-slot": "select-scroll-down-button",
@@ -3751,7 +4088,7 @@ function SelectScrollDownButton({
3751
4088
  className
3752
4089
  ),
3753
4090
  ...props,
3754
- children: /* @__PURE__ */ jsx36(ChevronDownIcon4, { className: "size-4" })
4091
+ children: /* @__PURE__ */ jsx37(ChevronDownIcon4, { className: "size-4" })
3755
4092
  }
3756
4093
  );
3757
4094
  }
@@ -3759,14 +4096,14 @@ function SelectScrollDownButton({
3759
4096
  // src/components/ui/separator.tsx
3760
4097
  import "react";
3761
4098
  import * as SeparatorPrimitive from "@radix-ui/react-separator";
3762
- import { jsx as jsx37 } from "react/jsx-runtime";
4099
+ import { jsx as jsx38 } from "react/jsx-runtime";
3763
4100
  function Separator5({
3764
4101
  className,
3765
4102
  orientation = "horizontal",
3766
4103
  decorative = true,
3767
4104
  ...props
3768
4105
  }) {
3769
- return /* @__PURE__ */ jsx37(
4106
+ return /* @__PURE__ */ jsx38(
3770
4107
  SeparatorPrimitive.Root,
3771
4108
  {
3772
4109
  "data-slot": "separator",
@@ -3785,30 +4122,30 @@ function Separator5({
3785
4122
  import * as SheetPrimitive from "@radix-ui/react-dialog";
3786
4123
  import { XIcon as XIcon2 } from "lucide-react";
3787
4124
  import "react";
3788
- import { jsx as jsx38, jsxs as jsxs19 } from "react/jsx-runtime";
4125
+ import { jsx as jsx39, jsxs as jsxs20 } from "react/jsx-runtime";
3789
4126
  function Sheet({ ...props }) {
3790
- return /* @__PURE__ */ jsx38(SheetPrimitive.Root, { "data-slot": "sheet", ...props });
4127
+ return /* @__PURE__ */ jsx39(SheetPrimitive.Root, { "data-slot": "sheet", ...props });
3791
4128
  }
3792
4129
  function SheetTrigger({
3793
4130
  ...props
3794
4131
  }) {
3795
- return /* @__PURE__ */ jsx38(SheetPrimitive.Trigger, { "data-slot": "sheet-trigger", ...props });
4132
+ return /* @__PURE__ */ jsx39(SheetPrimitive.Trigger, { "data-slot": "sheet-trigger", ...props });
3796
4133
  }
3797
4134
  function SheetClose({
3798
4135
  ...props
3799
4136
  }) {
3800
- return /* @__PURE__ */ jsx38(SheetPrimitive.Close, { "data-slot": "sheet-close", ...props });
4137
+ return /* @__PURE__ */ jsx39(SheetPrimitive.Close, { "data-slot": "sheet-close", ...props });
3801
4138
  }
3802
4139
  function SheetPortal({
3803
4140
  ...props
3804
4141
  }) {
3805
- return /* @__PURE__ */ jsx38(SheetPrimitive.Portal, { "data-slot": "sheet-portal", ...props });
4142
+ return /* @__PURE__ */ jsx39(SheetPrimitive.Portal, { "data-slot": "sheet-portal", ...props });
3806
4143
  }
3807
4144
  function SheetOverlay({
3808
4145
  className,
3809
4146
  ...props
3810
4147
  }) {
3811
- return /* @__PURE__ */ jsx38(
4148
+ return /* @__PURE__ */ jsx39(
3812
4149
  SheetPrimitive.Overlay,
3813
4150
  {
3814
4151
  "data-slot": "sheet-overlay",
@@ -3827,9 +4164,9 @@ function SheetContent({
3827
4164
  showCloseButton = true,
3828
4165
  ...props
3829
4166
  }) {
3830
- return /* @__PURE__ */ jsxs19(SheetPortal, { children: [
3831
- /* @__PURE__ */ jsx38(SheetOverlay, {}),
3832
- /* @__PURE__ */ jsxs19(
4167
+ return /* @__PURE__ */ jsxs20(SheetPortal, { children: [
4168
+ /* @__PURE__ */ jsx39(SheetOverlay, {}),
4169
+ /* @__PURE__ */ jsxs20(
3833
4170
  SheetPrimitive.Content,
3834
4171
  {
3835
4172
  "data-slot": "sheet-content",
@@ -3844,9 +4181,9 @@ function SheetContent({
3844
4181
  ...props,
3845
4182
  children: [
3846
4183
  children,
3847
- 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: [
3848
- /* @__PURE__ */ jsx38(XIcon2, { className: "size-4" }),
3849
- /* @__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" })
3850
4187
  ] })
3851
4188
  ]
3852
4189
  }
@@ -3854,7 +4191,7 @@ function SheetContent({
3854
4191
  ] });
3855
4192
  }
3856
4193
  function SheetHeader({ className, ...props }) {
3857
- return /* @__PURE__ */ jsx38(
4194
+ return /* @__PURE__ */ jsx39(
3858
4195
  "div",
3859
4196
  {
3860
4197
  "data-slot": "sheet-header",
@@ -3864,7 +4201,7 @@ function SheetHeader({ className, ...props }) {
3864
4201
  );
3865
4202
  }
3866
4203
  function SheetFooter({ className, ...props }) {
3867
- return /* @__PURE__ */ jsx38(
4204
+ return /* @__PURE__ */ jsx39(
3868
4205
  "div",
3869
4206
  {
3870
4207
  "data-slot": "sheet-footer",
@@ -3877,7 +4214,7 @@ function SheetTitle({
3877
4214
  className,
3878
4215
  ...props
3879
4216
  }) {
3880
- return /* @__PURE__ */ jsx38(
4217
+ return /* @__PURE__ */ jsx39(
3881
4218
  SheetPrimitive.Title,
3882
4219
  {
3883
4220
  "data-slot": "sheet-title",
@@ -3890,7 +4227,7 @@ function SheetDescription({
3890
4227
  className,
3891
4228
  ...props
3892
4229
  }) {
3893
- return /* @__PURE__ */ jsx38(
4230
+ return /* @__PURE__ */ jsx39(
3894
4231
  SheetPrimitive.Description,
3895
4232
  {
3896
4233
  "data-slot": "sheet-description",
@@ -3904,12 +4241,12 @@ function SheetDescription({
3904
4241
  import { Slot as Slot6 } from "@radix-ui/react-slot";
3905
4242
  import { cva as cva7 } from "class-variance-authority";
3906
4243
  import { PanelLeftIcon } from "lucide-react";
3907
- import * as React39 from "react";
4244
+ import * as React40 from "react";
3908
4245
 
3909
4246
  // src/components/ui/skeleton.tsx
3910
- import { jsx as jsx39 } from "react/jsx-runtime";
4247
+ import { jsx as jsx40 } from "react/jsx-runtime";
3911
4248
  function Skeleton({ className, ...props }) {
3912
- return /* @__PURE__ */ jsx39(
4249
+ return /* @__PURE__ */ jsx40(
3913
4250
  "div",
3914
4251
  {
3915
4252
  "data-slot": "skeleton",
@@ -3922,12 +4259,12 @@ function Skeleton({ className, ...props }) {
3922
4259
  // src/components/ui/tooltip.tsx
3923
4260
  import "react";
3924
4261
  import * as TooltipPrimitive from "@radix-ui/react-tooltip";
3925
- import { jsx as jsx40, jsxs as jsxs20 } from "react/jsx-runtime";
4262
+ import { jsx as jsx41, jsxs as jsxs21 } from "react/jsx-runtime";
3926
4263
  function TooltipProvider({
3927
4264
  delayDuration = 0,
3928
4265
  ...props
3929
4266
  }) {
3930
- return /* @__PURE__ */ jsx40(
4267
+ return /* @__PURE__ */ jsx41(
3931
4268
  TooltipPrimitive.Provider,
3932
4269
  {
3933
4270
  "data-slot": "tooltip-provider",
@@ -3939,12 +4276,12 @@ function TooltipProvider({
3939
4276
  function Tooltip2({
3940
4277
  ...props
3941
4278
  }) {
3942
- 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 }) });
3943
4280
  }
3944
4281
  function TooltipTrigger({
3945
4282
  ...props
3946
4283
  }) {
3947
- return /* @__PURE__ */ jsx40(TooltipPrimitive.Trigger, { "data-slot": "tooltip-trigger", ...props });
4284
+ return /* @__PURE__ */ jsx41(TooltipPrimitive.Trigger, { "data-slot": "tooltip-trigger", ...props });
3948
4285
  }
3949
4286
  function TooltipContent({
3950
4287
  className,
@@ -3952,7 +4289,7 @@ function TooltipContent({
3952
4289
  children,
3953
4290
  ...props
3954
4291
  }) {
3955
- return /* @__PURE__ */ jsx40(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsxs20(
4292
+ return /* @__PURE__ */ jsx41(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsxs21(
3956
4293
  TooltipPrimitive.Content,
3957
4294
  {
3958
4295
  "data-slot": "tooltip-content",
@@ -3964,18 +4301,18 @@ function TooltipContent({
3964
4301
  ...props,
3965
4302
  children: [
3966
4303
  children,
3967
- /* @__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]" })
3968
4305
  ]
3969
4306
  }
3970
4307
  ) });
3971
4308
  }
3972
4309
 
3973
4310
  // src/hooks/use-mobile.ts
3974
- import * as React38 from "react";
4311
+ import * as React39 from "react";
3975
4312
  var MOBILE_BREAKPOINT = 768;
3976
4313
  function useIsMobile() {
3977
- const [isMobile, setIsMobile] = React38.useState(void 0);
3978
- React38.useEffect(() => {
4314
+ const [isMobile, setIsMobile] = React39.useState(void 0);
4315
+ React39.useEffect(() => {
3979
4316
  const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);
3980
4317
  const onChange = () => {
3981
4318
  setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
@@ -3988,16 +4325,16 @@ function useIsMobile() {
3988
4325
  }
3989
4326
 
3990
4327
  // src/components/ui/sidebar.tsx
3991
- import { jsx as jsx41, jsxs as jsxs21 } from "react/jsx-runtime";
4328
+ import { jsx as jsx42, jsxs as jsxs22 } from "react/jsx-runtime";
3992
4329
  var SIDEBAR_COOKIE_NAME = "sidebar_state";
3993
4330
  var SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;
3994
4331
  var SIDEBAR_WIDTH = "18rem";
3995
4332
  var SIDEBAR_WIDTH_MOBILE = "18rem";
3996
4333
  var SIDEBAR_WIDTH_ICON = "3rem";
3997
4334
  var SIDEBAR_KEYBOARD_SHORTCUT = "b";
3998
- var SidebarContext = React39.createContext(null);
4335
+ var SidebarContext = React40.createContext(null);
3999
4336
  function useSidebar() {
4000
- const context = React39.useContext(SidebarContext);
4337
+ const context = React40.useContext(SidebarContext);
4001
4338
  if (!context) {
4002
4339
  throw new Error("useSidebar must be used within a SidebarProvider.");
4003
4340
  }
@@ -4013,10 +4350,10 @@ function SidebarProvider({
4013
4350
  ...props
4014
4351
  }) {
4015
4352
  const isMobile = useIsMobile();
4016
- const [openMobile, setOpenMobile] = React39.useState(false);
4017
- const [_open, _setOpen] = React39.useState(defaultOpen);
4353
+ const [openMobile, setOpenMobile] = React40.useState(false);
4354
+ const [_open, _setOpen] = React40.useState(defaultOpen);
4018
4355
  const open = openProp ?? _open;
4019
- const setOpen = React39.useCallback(
4356
+ const setOpen = React40.useCallback(
4020
4357
  (value) => {
4021
4358
  const openState = typeof value === "function" ? value(open) : value;
4022
4359
  if (setOpenProp) {
@@ -4028,10 +4365,10 @@ function SidebarProvider({
4028
4365
  },
4029
4366
  [setOpenProp, open]
4030
4367
  );
4031
- const toggleSidebar = React39.useCallback(() => {
4368
+ const toggleSidebar = React40.useCallback(() => {
4032
4369
  return isMobile ? setOpenMobile((open2) => !open2) : setOpen((open2) => !open2);
4033
4370
  }, [isMobile, setOpen, setOpenMobile]);
4034
- React39.useEffect(() => {
4371
+ React40.useEffect(() => {
4035
4372
  const handleKeyDown = (event) => {
4036
4373
  if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {
4037
4374
  event.preventDefault();
@@ -4042,7 +4379,7 @@ function SidebarProvider({
4042
4379
  return () => window.removeEventListener("keydown", handleKeyDown);
4043
4380
  }, [toggleSidebar]);
4044
4381
  const state = open ? "expanded" : "collapsed";
4045
- const contextValue = React39.useMemo(
4382
+ const contextValue = React40.useMemo(
4046
4383
  () => ({
4047
4384
  state,
4048
4385
  open,
@@ -4054,7 +4391,7 @@ function SidebarProvider({
4054
4391
  }),
4055
4392
  [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]
4056
4393
  );
4057
- 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(
4058
4395
  "div",
4059
4396
  {
4060
4397
  "data-slot": "sidebar-wrapper",
@@ -4082,7 +4419,7 @@ function Sidebar({
4082
4419
  }) {
4083
4420
  const { isMobile, state, openMobile, setOpenMobile } = useSidebar();
4084
4421
  if (collapsible === "none") {
4085
- return /* @__PURE__ */ jsx41(
4422
+ return /* @__PURE__ */ jsx42(
4086
4423
  "div",
4087
4424
  {
4088
4425
  "data-slot": "sidebar",
@@ -4096,7 +4433,7 @@ function Sidebar({
4096
4433
  );
4097
4434
  }
4098
4435
  if (isMobile) {
4099
- 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(
4100
4437
  SheetContent,
4101
4438
  {
4102
4439
  "data-sidebar": "sidebar",
@@ -4108,16 +4445,16 @@ function Sidebar({
4108
4445
  },
4109
4446
  side,
4110
4447
  children: [
4111
- /* @__PURE__ */ jsxs21(SheetHeader, { className: "sr-only", children: [
4112
- /* @__PURE__ */ jsx41(SheetTitle, { children: "Sidebar" }),
4113
- /* @__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." })
4114
4451
  ] }),
4115
- /* @__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 })
4116
4453
  ]
4117
4454
  }
4118
4455
  ) });
4119
4456
  }
4120
- return /* @__PURE__ */ jsxs21(
4457
+ return /* @__PURE__ */ jsxs22(
4121
4458
  "div",
4122
4459
  {
4123
4460
  className: "group peer text-sidebar-foreground hidden md:block",
@@ -4127,7 +4464,7 @@ function Sidebar({
4127
4464
  "data-side": side,
4128
4465
  "data-slot": "sidebar",
4129
4466
  children: [
4130
- /* @__PURE__ */ jsx41(
4467
+ /* @__PURE__ */ jsx42(
4131
4468
  "div",
4132
4469
  {
4133
4470
  "data-slot": "sidebar-gap",
@@ -4139,7 +4476,7 @@ function Sidebar({
4139
4476
  )
4140
4477
  }
4141
4478
  ),
4142
- /* @__PURE__ */ jsx41(
4479
+ /* @__PURE__ */ jsx42(
4143
4480
  "div",
4144
4481
  {
4145
4482
  "data-slot": "sidebar-container",
@@ -4151,7 +4488,7 @@ function Sidebar({
4151
4488
  className
4152
4489
  ),
4153
4490
  ...props,
4154
- children: /* @__PURE__ */ jsx41(
4491
+ children: /* @__PURE__ */ jsx42(
4155
4492
  "div",
4156
4493
  {
4157
4494
  "data-sidebar": "sidebar",
@@ -4172,7 +4509,7 @@ function SidebarTrigger({
4172
4509
  ...props
4173
4510
  }) {
4174
4511
  const { toggleSidebar } = useSidebar();
4175
- return /* @__PURE__ */ jsxs21(
4512
+ return /* @__PURE__ */ jsxs22(
4176
4513
  Button,
4177
4514
  {
4178
4515
  "data-sidebar": "trigger",
@@ -4186,15 +4523,15 @@ function SidebarTrigger({
4186
4523
  },
4187
4524
  ...props,
4188
4525
  children: [
4189
- /* @__PURE__ */ jsx41(PanelLeftIcon, {}),
4190
- /* @__PURE__ */ jsx41("span", { className: "sr-only", children: "Toggle Sidebar" })
4526
+ /* @__PURE__ */ jsx42(PanelLeftIcon, {}),
4527
+ /* @__PURE__ */ jsx42("span", { className: "sr-only", children: "Toggle Sidebar" })
4191
4528
  ]
4192
4529
  }
4193
4530
  );
4194
4531
  }
4195
4532
  function SidebarRail({ className, ...props }) {
4196
4533
  const { toggleSidebar } = useSidebar();
4197
- return /* @__PURE__ */ jsx41(
4534
+ return /* @__PURE__ */ jsx42(
4198
4535
  "button",
4199
4536
  {
4200
4537
  "data-sidebar": "rail",
@@ -4217,7 +4554,7 @@ function SidebarRail({ className, ...props }) {
4217
4554
  );
4218
4555
  }
4219
4556
  function SidebarInset({ className, ...props }) {
4220
- return /* @__PURE__ */ jsx41(
4557
+ return /* @__PURE__ */ jsx42(
4221
4558
  "main",
4222
4559
  {
4223
4560
  "data-slot": "sidebar-inset",
@@ -4234,7 +4571,7 @@ function SidebarInput({
4234
4571
  className,
4235
4572
  ...props
4236
4573
  }) {
4237
- return /* @__PURE__ */ jsx41(
4574
+ return /* @__PURE__ */ jsx42(
4238
4575
  Input,
4239
4576
  {
4240
4577
  "data-slot": "sidebar-input",
@@ -4245,7 +4582,7 @@ function SidebarInput({
4245
4582
  );
4246
4583
  }
4247
4584
  function SidebarHeader({ className, ...props }) {
4248
- return /* @__PURE__ */ jsx41(
4585
+ return /* @__PURE__ */ jsx42(
4249
4586
  "div",
4250
4587
  {
4251
4588
  "data-slot": "sidebar-header",
@@ -4256,7 +4593,7 @@ function SidebarHeader({ className, ...props }) {
4256
4593
  );
4257
4594
  }
4258
4595
  function SidebarFooter({ className, ...props }) {
4259
- return /* @__PURE__ */ jsx41(
4596
+ return /* @__PURE__ */ jsx42(
4260
4597
  "div",
4261
4598
  {
4262
4599
  "data-slot": "sidebar-footer",
@@ -4270,7 +4607,7 @@ function SidebarSeparator({
4270
4607
  className,
4271
4608
  ...props
4272
4609
  }) {
4273
- return /* @__PURE__ */ jsx41(
4610
+ return /* @__PURE__ */ jsx42(
4274
4611
  Separator5,
4275
4612
  {
4276
4613
  "data-slot": "sidebar-separator",
@@ -4281,7 +4618,7 @@ function SidebarSeparator({
4281
4618
  );
4282
4619
  }
4283
4620
  function SidebarContent({ className, ...props }) {
4284
- return /* @__PURE__ */ jsx41(
4621
+ return /* @__PURE__ */ jsx42(
4285
4622
  "div",
4286
4623
  {
4287
4624
  "data-slot": "sidebar-content",
@@ -4295,7 +4632,7 @@ function SidebarContent({ className, ...props }) {
4295
4632
  );
4296
4633
  }
4297
4634
  function SidebarGroup({ className, ...props }) {
4298
- return /* @__PURE__ */ jsx41(
4635
+ return /* @__PURE__ */ jsx42(
4299
4636
  "div",
4300
4637
  {
4301
4638
  "data-slot": "sidebar-group",
@@ -4311,7 +4648,7 @@ function SidebarGroupLabel({
4311
4648
  ...props
4312
4649
  }) {
4313
4650
  const Comp = asChild ? Slot6 : "div";
4314
- return /* @__PURE__ */ jsx41(
4651
+ return /* @__PURE__ */ jsx42(
4315
4652
  Comp,
4316
4653
  {
4317
4654
  "data-slot": "sidebar-group-label",
@@ -4331,7 +4668,7 @@ function SidebarGroupAction({
4331
4668
  ...props
4332
4669
  }) {
4333
4670
  const Comp = asChild ? Slot6 : "button";
4334
- return /* @__PURE__ */ jsx41(
4671
+ return /* @__PURE__ */ jsx42(
4335
4672
  Comp,
4336
4673
  {
4337
4674
  "data-slot": "sidebar-group-action",
@@ -4351,7 +4688,7 @@ function SidebarGroupContent({
4351
4688
  className,
4352
4689
  ...props
4353
4690
  }) {
4354
- return /* @__PURE__ */ jsx41(
4691
+ return /* @__PURE__ */ jsx42(
4355
4692
  "div",
4356
4693
  {
4357
4694
  "data-slot": "sidebar-group-content",
@@ -4362,7 +4699,7 @@ function SidebarGroupContent({
4362
4699
  );
4363
4700
  }
4364
4701
  function SidebarMenu({ className, ...props }) {
4365
- return /* @__PURE__ */ jsx41(
4702
+ return /* @__PURE__ */ jsx42(
4366
4703
  "ul",
4367
4704
  {
4368
4705
  "data-slot": "sidebar-menu",
@@ -4373,7 +4710,7 @@ function SidebarMenu({ className, ...props }) {
4373
4710
  );
4374
4711
  }
4375
4712
  function SidebarMenuItem({ className, ...props }) {
4376
- return /* @__PURE__ */ jsx41(
4713
+ return /* @__PURE__ */ jsx42(
4377
4714
  "li",
4378
4715
  {
4379
4716
  "data-slot": "sidebar-menu-item",
@@ -4414,7 +4751,7 @@ function SidebarMenuButton({
4414
4751
  }) {
4415
4752
  const Comp = asChild ? Slot6 : "button";
4416
4753
  const { isMobile, state } = useSidebar();
4417
- const button = /* @__PURE__ */ jsx41(
4754
+ const button = /* @__PURE__ */ jsx42(
4418
4755
  Comp,
4419
4756
  {
4420
4757
  "data-slot": "sidebar-menu-button",
@@ -4433,9 +4770,9 @@ function SidebarMenuButton({
4433
4770
  children: tooltip
4434
4771
  };
4435
4772
  }
4436
- return /* @__PURE__ */ jsxs21(Tooltip2, { children: [
4437
- /* @__PURE__ */ jsx41(TooltipTrigger, { asChild: true, children: button }),
4438
- /* @__PURE__ */ jsx41(
4773
+ return /* @__PURE__ */ jsxs22(Tooltip2, { children: [
4774
+ /* @__PURE__ */ jsx42(TooltipTrigger, { asChild: true, children: button }),
4775
+ /* @__PURE__ */ jsx42(
4439
4776
  TooltipContent,
4440
4777
  {
4441
4778
  side: "right",
@@ -4453,7 +4790,7 @@ function SidebarMenuAction({
4453
4790
  ...props
4454
4791
  }) {
4455
4792
  const Comp = asChild ? Slot6 : "button";
4456
- return /* @__PURE__ */ jsx41(
4793
+ return /* @__PURE__ */ jsx42(
4457
4794
  Comp,
4458
4795
  {
4459
4796
  "data-slot": "sidebar-menu-action",
@@ -4477,7 +4814,7 @@ function SidebarMenuBadge({
4477
4814
  className,
4478
4815
  ...props
4479
4816
  }) {
4480
- return /* @__PURE__ */ jsx41(
4817
+ return /* @__PURE__ */ jsx42(
4481
4818
  "div",
4482
4819
  {
4483
4820
  "data-slot": "sidebar-menu-badge",
@@ -4500,10 +4837,10 @@ function SidebarMenuSkeleton({
4500
4837
  showIcon = false,
4501
4838
  ...props
4502
4839
  }) {
4503
- const width = React39.useMemo(() => {
4840
+ const width = React40.useMemo(() => {
4504
4841
  return `${Math.floor(Math.random() * 40) + 50}%`;
4505
4842
  }, []);
4506
- return /* @__PURE__ */ jsxs21(
4843
+ return /* @__PURE__ */ jsxs22(
4507
4844
  "div",
4508
4845
  {
4509
4846
  "data-slot": "sidebar-menu-skeleton",
@@ -4511,14 +4848,14 @@ function SidebarMenuSkeleton({
4511
4848
  className: cn("flex h-8 items-center gap-2 rounded-md px-2", className),
4512
4849
  ...props,
4513
4850
  children: [
4514
- showIcon && /* @__PURE__ */ jsx41(
4851
+ showIcon && /* @__PURE__ */ jsx42(
4515
4852
  Skeleton,
4516
4853
  {
4517
4854
  className: "size-4 rounded-md",
4518
4855
  "data-sidebar": "menu-skeleton-icon"
4519
4856
  }
4520
4857
  ),
4521
- /* @__PURE__ */ jsx41(
4858
+ /* @__PURE__ */ jsx42(
4522
4859
  Skeleton,
4523
4860
  {
4524
4861
  className: "h-4 max-w-(--skeleton-width) flex-1",
@@ -4533,7 +4870,7 @@ function SidebarMenuSkeleton({
4533
4870
  );
4534
4871
  }
4535
4872
  function SidebarMenuSub({ className, ...props }) {
4536
- return /* @__PURE__ */ jsx41(
4873
+ return /* @__PURE__ */ jsx42(
4537
4874
  "ul",
4538
4875
  {
4539
4876
  "data-slot": "sidebar-menu-sub",
@@ -4551,7 +4888,7 @@ function SidebarMenuSubItem({
4551
4888
  className,
4552
4889
  ...props
4553
4890
  }) {
4554
- return /* @__PURE__ */ jsx41(
4891
+ return /* @__PURE__ */ jsx42(
4555
4892
  "li",
4556
4893
  {
4557
4894
  "data-slot": "sidebar-menu-sub-item",
@@ -4569,7 +4906,7 @@ function SidebarMenuSubButton({
4569
4906
  ...props
4570
4907
  }) {
4571
4908
  const Comp = asChild ? Slot6 : "a";
4572
- return /* @__PURE__ */ jsx41(
4909
+ return /* @__PURE__ */ jsx42(
4573
4910
  Comp,
4574
4911
  {
4575
4912
  "data-slot": "sidebar-menu-sub-button",
@@ -4590,9 +4927,9 @@ function SidebarMenuSubButton({
4590
4927
  }
4591
4928
 
4592
4929
  // src/components/ui/slider.tsx
4593
- import * as React40 from "react";
4930
+ import * as React41 from "react";
4594
4931
  import * as SliderPrimitive from "@radix-ui/react-slider";
4595
- import { jsx as jsx42, jsxs as jsxs22 } from "react/jsx-runtime";
4932
+ import { jsx as jsx43, jsxs as jsxs23 } from "react/jsx-runtime";
4596
4933
  function Slider({
4597
4934
  className,
4598
4935
  defaultValue,
@@ -4601,11 +4938,11 @@ function Slider({
4601
4938
  max = 100,
4602
4939
  ...props
4603
4940
  }) {
4604
- const _values = React40.useMemo(
4941
+ const _values = React41.useMemo(
4605
4942
  () => Array.isArray(value) ? value : Array.isArray(defaultValue) ? defaultValue : [min, max],
4606
4943
  [value, defaultValue, min, max]
4607
4944
  );
4608
- return /* @__PURE__ */ jsxs22(
4945
+ return /* @__PURE__ */ jsxs23(
4609
4946
  SliderPrimitive.Root,
4610
4947
  {
4611
4948
  "data-slot": "slider",
@@ -4619,14 +4956,14 @@ function Slider({
4619
4956
  ),
4620
4957
  ...props,
4621
4958
  children: [
4622
- /* @__PURE__ */ jsx42(
4959
+ /* @__PURE__ */ jsx43(
4623
4960
  SliderPrimitive.Track,
4624
4961
  {
4625
4962
  "data-slot": "slider-track",
4626
4963
  className: cn(
4627
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"
4628
4965
  ),
4629
- children: /* @__PURE__ */ jsx42(
4966
+ children: /* @__PURE__ */ jsx43(
4630
4967
  SliderPrimitive.Range,
4631
4968
  {
4632
4969
  "data-slot": "slider-range",
@@ -4637,7 +4974,7 @@ function Slider({
4637
4974
  )
4638
4975
  }
4639
4976
  ),
4640
- Array.from({ length: _values.length }, (_, index) => /* @__PURE__ */ jsx42(
4977
+ Array.from({ length: _values.length }, (_, index) => /* @__PURE__ */ jsx43(
4641
4978
  SliderPrimitive.Thumb,
4642
4979
  {
4643
4980
  "data-slot": "slider-thumb",
@@ -4654,7 +4991,7 @@ function Slider({
4654
4991
  import "react";
4655
4992
 
4656
4993
  // src/components/ui/useMediaQuery.ts
4657
- import { useEffect as useEffect6, useState as useState5 } from "react";
4994
+ import { useEffect as useEffect7, useState as useState6 } from "react";
4658
4995
  function useMediaQuery(query) {
4659
4996
  const getMatches = (query2) => {
4660
4997
  if (typeof window !== "undefined") {
@@ -4662,11 +4999,11 @@ function useMediaQuery(query) {
4662
4999
  }
4663
5000
  return false;
4664
5001
  };
4665
- const [matches, setMatches] = useState5(getMatches(query));
5002
+ const [matches, setMatches] = useState6(getMatches(query));
4666
5003
  function handleChange() {
4667
5004
  setMatches(getMatches(query));
4668
5005
  }
4669
- useEffect6(() => {
5006
+ useEffect7(() => {
4670
5007
  const matchMedia = window.matchMedia(query);
4671
5008
  handleChange();
4672
5009
  if (matchMedia.addListener) {
@@ -4686,10 +5023,10 @@ function useMediaQuery(query) {
4686
5023
  }
4687
5024
 
4688
5025
  // src/components/ui/smart-dialog-drawer.tsx
4689
- import { Fragment as Fragment3, jsx as jsx43 } from "react/jsx-runtime";
5026
+ import { Fragment as Fragment3, jsx as jsx44 } from "react/jsx-runtime";
4690
5027
  var SmartDialog = ({ children, ...props }) => {
4691
5028
  const isMobile = useMediaQuery("(max-width: 600px)");
4692
- 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 });
4693
5030
  };
4694
5031
  var SmartDialogContent = ({
4695
5032
  children,
@@ -4699,14 +5036,14 @@ var SmartDialogContent = ({
4699
5036
  ...props
4700
5037
  }) => {
4701
5038
  const isMobile = useMediaQuery("(max-width: 600px)");
4702
- return isMobile ? /* @__PURE__ */ jsx43(
5039
+ return isMobile ? /* @__PURE__ */ jsx44(
4703
5040
  DrawerContent,
4704
5041
  {
4705
5042
  ...props,
4706
5043
  withCloseButton: withCloseButton ?? showCloseButton ?? true,
4707
5044
  children
4708
5045
  }
4709
- ) : /* @__PURE__ */ jsx43(
5046
+ ) : /* @__PURE__ */ jsx44(
4710
5047
  DialogContent,
4711
5048
  {
4712
5049
  ...props,
@@ -4721,39 +5058,39 @@ var SmartDialogDescription = ({
4721
5058
  ...props
4722
5059
  }) => {
4723
5060
  const isMobile = useMediaQuery("(max-width: 600px)");
4724
- 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 });
4725
5062
  };
4726
5063
  var SmartDialogHeader = ({ children, ...props }) => {
4727
5064
  const isMobile = useMediaQuery("(max-width: 600px)");
4728
- 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 });
4729
5066
  };
4730
5067
  var SmartDialogTitle = ({ children, ...props }) => {
4731
5068
  const isMobile = useMediaQuery("(max-width: 600px)");
4732
- 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 });
4733
5070
  };
4734
5071
  var SmartDialogTrigger = ({
4735
5072
  children,
4736
5073
  ...props
4737
5074
  }) => {
4738
5075
  const isMobile = useMediaQuery("(max-width: 600px)");
4739
- 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 });
4740
5077
  };
4741
5078
  var SmartDialogFooter = ({ children, ...props }) => {
4742
5079
  const isMobile = useMediaQuery("(max-width: 600px)");
4743
- 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 });
4744
5081
  };
4745
5082
  var SmartDialogClose = ({ children, ...props }) => {
4746
5083
  const isMobile = useMediaQuery("(max-width: 600px)");
4747
- 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 });
4748
5085
  };
4749
5086
 
4750
5087
  // src/components/ui/sonner.tsx
4751
5088
  import { useTheme } from "next-themes";
4752
5089
  import { Toaster as Sonner } from "sonner";
4753
- import { jsx as jsx44 } from "react/jsx-runtime";
5090
+ import { jsx as jsx45 } from "react/jsx-runtime";
4754
5091
  var Toaster = ({ ...props }) => {
4755
5092
  const { theme = "system" } = useTheme();
4756
- return /* @__PURE__ */ jsx44(
5093
+ return /* @__PURE__ */ jsx45(
4757
5094
  Sonner,
4758
5095
  {
4759
5096
  theme,
@@ -4771,12 +5108,12 @@ var Toaster = ({ ...props }) => {
4771
5108
  // src/components/ui/switch.tsx
4772
5109
  import * as SwitchPrimitive from "@radix-ui/react-switch";
4773
5110
  import "react";
4774
- import { jsx as jsx45 } from "react/jsx-runtime";
5111
+ import { jsx as jsx46 } from "react/jsx-runtime";
4775
5112
  function Switch({
4776
5113
  className,
4777
5114
  ...props
4778
5115
  }) {
4779
- return /* @__PURE__ */ jsx45(
5116
+ return /* @__PURE__ */ jsx46(
4780
5117
  SwitchPrimitive.Root,
4781
5118
  {
4782
5119
  "data-slot": "switch",
@@ -4785,7 +5122,7 @@ function Switch({
4785
5122
  className
4786
5123
  ),
4787
5124
  ...props,
4788
- children: /* @__PURE__ */ jsx45(
5125
+ children: /* @__PURE__ */ jsx46(
4789
5126
  SwitchPrimitive.Thumb,
4790
5127
  {
4791
5128
  "data-slot": "switch-thumb",
@@ -4800,14 +5137,14 @@ function Switch({
4800
5137
 
4801
5138
  // src/components/ui/table.tsx
4802
5139
  import "react";
4803
- import { jsx as jsx46 } from "react/jsx-runtime";
5140
+ import { jsx as jsx47 } from "react/jsx-runtime";
4804
5141
  function Table({ className, ...props }) {
4805
- return /* @__PURE__ */ jsx46(
5142
+ return /* @__PURE__ */ jsx47(
4806
5143
  "div",
4807
5144
  {
4808
5145
  "data-slot": "table-container",
4809
5146
  className: "relative w-full overflow-x-auto",
4810
- children: /* @__PURE__ */ jsx46(
5147
+ children: /* @__PURE__ */ jsx47(
4811
5148
  "table",
4812
5149
  {
4813
5150
  "data-slot": "table",
@@ -4819,7 +5156,7 @@ function Table({ className, ...props }) {
4819
5156
  );
4820
5157
  }
4821
5158
  function TableHeader({ className, ...props }) {
4822
- return /* @__PURE__ */ jsx46(
5159
+ return /* @__PURE__ */ jsx47(
4823
5160
  "thead",
4824
5161
  {
4825
5162
  "data-slot": "table-header",
@@ -4829,7 +5166,7 @@ function TableHeader({ className, ...props }) {
4829
5166
  );
4830
5167
  }
4831
5168
  function TableBody({ className, ...props }) {
4832
- return /* @__PURE__ */ jsx46(
5169
+ return /* @__PURE__ */ jsx47(
4833
5170
  "tbody",
4834
5171
  {
4835
5172
  "data-slot": "table-body",
@@ -4839,7 +5176,7 @@ function TableBody({ className, ...props }) {
4839
5176
  );
4840
5177
  }
4841
5178
  function TableFooter({ className, ...props }) {
4842
- return /* @__PURE__ */ jsx46(
5179
+ return /* @__PURE__ */ jsx47(
4843
5180
  "tfoot",
4844
5181
  {
4845
5182
  "data-slot": "table-footer",
@@ -4852,7 +5189,7 @@ function TableFooter({ className, ...props }) {
4852
5189
  );
4853
5190
  }
4854
5191
  function TableRow({ className, ...props }) {
4855
- return /* @__PURE__ */ jsx46(
5192
+ return /* @__PURE__ */ jsx47(
4856
5193
  "tr",
4857
5194
  {
4858
5195
  "data-slot": "table-row",
@@ -4865,7 +5202,7 @@ function TableRow({ className, ...props }) {
4865
5202
  );
4866
5203
  }
4867
5204
  function TableHead({ className, ...props }) {
4868
- return /* @__PURE__ */ jsx46(
5205
+ return /* @__PURE__ */ jsx47(
4869
5206
  "th",
4870
5207
  {
4871
5208
  "data-slot": "table-head",
@@ -4878,7 +5215,7 @@ function TableHead({ className, ...props }) {
4878
5215
  );
4879
5216
  }
4880
5217
  function TableCell({ className, ...props }) {
4881
- return /* @__PURE__ */ jsx46(
5218
+ return /* @__PURE__ */ jsx47(
4882
5219
  "td",
4883
5220
  {
4884
5221
  "data-slot": "table-cell",
@@ -4894,7 +5231,7 @@ function TableCaption({
4894
5231
  className,
4895
5232
  ...props
4896
5233
  }) {
4897
- return /* @__PURE__ */ jsx46(
5234
+ return /* @__PURE__ */ jsx47(
4898
5235
  "caption",
4899
5236
  {
4900
5237
  "data-slot": "table-caption",
@@ -4907,12 +5244,12 @@ function TableCaption({
4907
5244
  // src/components/ui/tabs.tsx
4908
5245
  import * as TabsPrimitive from "@radix-ui/react-tabs";
4909
5246
  import "react";
4910
- import { jsx as jsx47 } from "react/jsx-runtime";
5247
+ import { jsx as jsx48 } from "react/jsx-runtime";
4911
5248
  function Tabs({
4912
5249
  className,
4913
5250
  ...props
4914
5251
  }) {
4915
- return /* @__PURE__ */ jsx47(
5252
+ return /* @__PURE__ */ jsx48(
4916
5253
  TabsPrimitive.Root,
4917
5254
  {
4918
5255
  "data-slot": "tabs",
@@ -4925,7 +5262,7 @@ function TabsList({
4925
5262
  className,
4926
5263
  ...props
4927
5264
  }) {
4928
- return /* @__PURE__ */ jsx47(
5265
+ return /* @__PURE__ */ jsx48(
4929
5266
  TabsPrimitive.List,
4930
5267
  {
4931
5268
  "data-slot": "tabs-list",
@@ -4941,7 +5278,7 @@ function TabsTrigger({
4941
5278
  className,
4942
5279
  ...props
4943
5280
  }) {
4944
- return /* @__PURE__ */ jsx47(
5281
+ return /* @__PURE__ */ jsx48(
4945
5282
  TabsPrimitive.Trigger,
4946
5283
  {
4947
5284
  "data-slot": "tabs-trigger",
@@ -4957,7 +5294,7 @@ function TabsContent({
4957
5294
  className,
4958
5295
  ...props
4959
5296
  }) {
4960
- return /* @__PURE__ */ jsx47(
5297
+ return /* @__PURE__ */ jsx48(
4961
5298
  TabsPrimitive.Content,
4962
5299
  {
4963
5300
  "data-slot": "tabs-content",
@@ -4967,11 +5304,230 @@ function TabsContent({
4967
5304
  );
4968
5305
  }
4969
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 overflow-hidden 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(ScrollArea, { className: "h-56 w-16", 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(ScrollArea, { className: "h-56 w-16", 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
+
4970
5526
  // src/components/ui/toggle.tsx
4971
5527
  import "react";
4972
5528
  import * as TogglePrimitive from "@radix-ui/react-toggle";
4973
5529
  import { cva as cva8 } from "class-variance-authority";
4974
- import { jsx as jsx48 } from "react/jsx-runtime";
5530
+ import { jsx as jsx50 } from "react/jsx-runtime";
4975
5531
  var toggleVariants = cva8(
4976
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",
4977
5533
  {
@@ -4998,7 +5554,7 @@ function Toggle({
4998
5554
  size,
4999
5555
  ...props
5000
5556
  }) {
5001
- return /* @__PURE__ */ jsx48(
5557
+ return /* @__PURE__ */ jsx50(
5002
5558
  TogglePrimitive.Root,
5003
5559
  {
5004
5560
  "data-slot": "toggle",
@@ -5009,11 +5565,11 @@ function Toggle({
5009
5565
  }
5010
5566
 
5011
5567
  // src/components/ui/toggle-group.tsx
5012
- import * as React46 from "react";
5568
+ import * as React48 from "react";
5013
5569
  import * as ToggleGroupPrimitive from "@radix-ui/react-toggle-group";
5014
5570
  import "class-variance-authority";
5015
- import { jsx as jsx49 } from "react/jsx-runtime";
5016
- var ToggleGroupContext = React46.createContext({
5571
+ import { jsx as jsx51 } from "react/jsx-runtime";
5572
+ var ToggleGroupContext = React48.createContext({
5017
5573
  size: "default",
5018
5574
  variant: "default"
5019
5575
  });
@@ -5024,7 +5580,7 @@ function ToggleGroup({
5024
5580
  children,
5025
5581
  ...props
5026
5582
  }) {
5027
- return /* @__PURE__ */ jsx49(
5583
+ return /* @__PURE__ */ jsx51(
5028
5584
  ToggleGroupPrimitive.Root,
5029
5585
  {
5030
5586
  "data-slot": "toggle-group",
@@ -5035,7 +5591,7 @@ function ToggleGroup({
5035
5591
  className
5036
5592
  ),
5037
5593
  ...props,
5038
- children: /* @__PURE__ */ jsx49(ToggleGroupContext.Provider, { value: { variant, size }, children })
5594
+ children: /* @__PURE__ */ jsx51(ToggleGroupContext.Provider, { value: { variant, size }, children })
5039
5595
  }
5040
5596
  );
5041
5597
  }
@@ -5046,8 +5602,8 @@ function ToggleGroupItem({
5046
5602
  size,
5047
5603
  ...props
5048
5604
  }) {
5049
- const context = React46.useContext(ToggleGroupContext);
5050
- return /* @__PURE__ */ jsx49(
5605
+ const context = React48.useContext(ToggleGroupContext);
5606
+ return /* @__PURE__ */ jsx51(
5051
5607
  ToggleGroupPrimitive.Item,
5052
5608
  {
5053
5609
  "data-slot": "toggle-group-item",
@@ -5071,7 +5627,7 @@ function ToggleGroupItem({
5071
5627
  import { Slot as Slot7 } from "@radix-ui/react-slot";
5072
5628
  import { cva as cva9 } from "class-variance-authority";
5073
5629
  import "react";
5074
- import { jsx as jsx50 } from "react/jsx-runtime";
5630
+ import { jsx as jsx52 } from "react/jsx-runtime";
5075
5631
  var displayTextVariants = cva9(
5076
5632
  "tracking-normal font-normal leading-none text-brand-dark font-serif italic",
5077
5633
  {
@@ -5094,7 +5650,7 @@ function DisplayHeading({
5094
5650
  ...props
5095
5651
  }) {
5096
5652
  const Comp = asChild ? Slot7 : "h1";
5097
- return /* @__PURE__ */ jsx50(
5653
+ return /* @__PURE__ */ jsx52(
5098
5654
  Comp,
5099
5655
  {
5100
5656
  "data-slot": "h1",
@@ -5123,7 +5679,7 @@ function Body({
5123
5679
  ...props
5124
5680
  }) {
5125
5681
  const Comp = asChild ? Slot7 : "p";
5126
- return /* @__PURE__ */ jsx50(
5682
+ return /* @__PURE__ */ jsx52(
5127
5683
  Comp,
5128
5684
  {
5129
5685
  "data-slot": "h1",
@@ -5138,7 +5694,7 @@ function HeadingXL({
5138
5694
  ...props
5139
5695
  }) {
5140
5696
  const Comp = asChild ? Slot7 : "h1";
5141
- return /* @__PURE__ */ jsx50(
5697
+ return /* @__PURE__ */ jsx52(
5142
5698
  Comp,
5143
5699
  {
5144
5700
  "data-slot": "h1",
@@ -5156,7 +5712,7 @@ function HeadingL({
5156
5712
  ...props
5157
5713
  }) {
5158
5714
  const Comp = asChild ? Slot7 : "h2";
5159
- return /* @__PURE__ */ jsx50(
5715
+ return /* @__PURE__ */ jsx52(
5160
5716
  Comp,
5161
5717
  {
5162
5718
  "data-slot": "h2",
@@ -5174,7 +5730,7 @@ function HeadingM({
5174
5730
  ...props
5175
5731
  }) {
5176
5732
  const Comp = asChild ? Slot7 : "h3";
5177
- return /* @__PURE__ */ jsx50(
5733
+ return /* @__PURE__ */ jsx52(
5178
5734
  Comp,
5179
5735
  {
5180
5736
  "data-slot": "h3",
@@ -5192,7 +5748,7 @@ function HeadingS({
5192
5748
  ...props
5193
5749
  }) {
5194
5750
  const Comp = asChild ? Slot7 : "h4";
5195
- return /* @__PURE__ */ jsx50(
5751
+ return /* @__PURE__ */ jsx52(
5196
5752
  Comp,
5197
5753
  {
5198
5754
  "data-slot": "h4",
@@ -5210,7 +5766,7 @@ function HeadingXS({
5210
5766
  ...props
5211
5767
  }) {
5212
5768
  const Comp = asChild ? Slot7 : "h5";
5213
- return /* @__PURE__ */ jsx50(
5769
+ return /* @__PURE__ */ jsx52(
5214
5770
  Comp,
5215
5771
  {
5216
5772
  "data-slot": "h5",
@@ -5228,7 +5784,7 @@ function HeadingXXS({
5228
5784
  ...props
5229
5785
  }) {
5230
5786
  const Comp = asChild ? Slot7 : "h6";
5231
- return /* @__PURE__ */ jsx50(
5787
+ return /* @__PURE__ */ jsx52(
5232
5788
  Comp,
5233
5789
  {
5234
5790
  "data-slot": "h5",
@@ -5323,6 +5879,7 @@ export {
5323
5879
  ContextMenuSubTrigger,
5324
5880
  ContextMenuTrigger,
5325
5881
  DateInput,
5882
+ DateRangeInput,
5326
5883
  Dialog,
5327
5884
  DialogClose,
5328
5885
  DialogContent,
@@ -5490,6 +6047,7 @@ export {
5490
6047
  TabsList,
5491
6048
  TabsTrigger,
5492
6049
  Textarea,
6050
+ TimeInput,
5493
6051
  Toaster,
5494
6052
  Toggle,
5495
6053
  ToggleGroup,