@underverse-ui/underverse 0.2.13 → 0.2.15

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.js CHANGED
@@ -2532,90 +2532,201 @@ import { createPortal as createPortal3 } from "react-dom";
2532
2532
 
2533
2533
  // ../../lib/utils/shadcn-animations.ts
2534
2534
  var shadcnAnimationStyles = `
2535
+ /* ============================================
2536
+ * DROPDOWN / POPOVER ANIMATIONS
2537
+ * Uses spring-like cubic-bezier for natural feel
2538
+ * ============================================ */
2539
+
2540
+ /* Native-like Combobox Animation - Mimics browser default select */
2541
+ [data-state="open"][data-combobox-dropdown] {
2542
+ animation: comboboxOpen 150ms cubic-bezier(0.2, 0, 0, 1);
2543
+ transform-origin: top center;
2544
+ }
2545
+
2546
+ [data-state="closed"][data-combobox-dropdown] {
2547
+ animation: comboboxClose 120ms cubic-bezier(0.4, 0, 1, 1);
2548
+ transform-origin: top center;
2549
+ }
2550
+
2551
+ @keyframes comboboxOpen {
2552
+ 0% {
2553
+ opacity: 0;
2554
+ transform: translateY(-4px) scaleY(0.9);
2555
+ }
2556
+ 100% {
2557
+ opacity: 1;
2558
+ transform: translateY(0) scaleY(1);
2559
+ }
2560
+ }
2561
+
2562
+ @keyframes comboboxClose {
2563
+ 0% {
2564
+ opacity: 1;
2565
+ transform: translateY(0) scaleY(1);
2566
+ }
2567
+ 100% {
2568
+ opacity: 0;
2569
+ transform: translateY(-4px) scaleY(0.9);
2570
+ }
2571
+ }
2572
+
2573
+ /* Generic dropdown open/close */
2535
2574
  [data-state="open"] {
2536
- animation: slideDownAndFade 200ms cubic-bezier(0.16, 1, 0.3, 1);
2575
+ animation: slideDownAndFade 220ms cubic-bezier(0.16, 1, 0.3, 1);
2537
2576
  }
2538
2577
 
2539
2578
  [data-state="closed"] {
2540
- animation: slideUpAndFade 150ms cubic-bezier(0.16, 1, 0.3, 1);
2579
+ animation: slideUpAndFade 180ms cubic-bezier(0.4, 0, 0.2, 1);
2541
2580
  }
2542
2581
 
2543
2582
  @keyframes slideDownAndFade {
2544
2583
  from {
2545
2584
  opacity: 0;
2546
- transform: translateY(-2px);
2585
+ transform: translateY(-4px) scale(0.98);
2547
2586
  }
2548
2587
  to {
2549
2588
  opacity: 1;
2550
- transform: translateY(0);
2589
+ transform: translateY(0) scale(1);
2551
2590
  }
2552
2591
  }
2553
2592
 
2554
2593
  @keyframes slideUpAndFade {
2555
2594
  from {
2556
2595
  opacity: 1;
2557
- transform: translateY(0);
2596
+ transform: translateY(0) scale(1);
2558
2597
  }
2559
2598
  to {
2560
2599
  opacity: 0;
2561
- transform: translateY(-2px);
2600
+ transform: translateY(-4px) scale(0.98);
2562
2601
  }
2563
2602
  }
2564
2603
 
2604
+ /* ============================================
2605
+ * DROPDOWN ITEMS - Native-like instant appearance
2606
+ * ============================================ */
2607
+
2608
+ /* Fast staggered animation for native feel */
2565
2609
  .dropdown-item {
2566
2610
  opacity: 0;
2567
- animation: fadeInUp 200ms ease-out forwards;
2611
+ animation: itemFadeIn 120ms cubic-bezier(0.2, 0, 0, 1) forwards;
2568
2612
  }
2569
-
2570
- @keyframes fadeInUp {
2571
- from {
2613
+
2614
+ @keyframes itemFadeIn {
2615
+ 0% {
2572
2616
  opacity: 0;
2573
- transform: translateY(4px);
2617
+ transform: translateY(-2px);
2574
2618
  }
2575
- to {
2619
+ 100% {
2576
2620
  opacity: 1;
2577
2621
  transform: translateY(0);
2578
2622
  }
2579
2623
  }
2624
+
2625
+ /* Subtle hover effect */
2626
+ .dropdown-item {
2627
+ transition: background-color 100ms ease;
2628
+ }
2629
+
2630
+ /* ============================================
2631
+ * TOOLTIP / SIDE ANIMATIONS
2632
+ * ============================================ */
2580
2633
 
2581
- /* Tooltip specific animations */
2582
2634
  [data-side="top"] {
2583
- animation: slideDownAndFade 200ms cubic-bezier(0.16, 1, 0.3, 1);
2635
+ animation: slideFromBottom 200ms cubic-bezier(0.16, 1, 0.3, 1);
2584
2636
  }
2585
2637
 
2586
2638
  [data-side="bottom"] {
2587
- animation: slideUpAndFade 200ms cubic-bezier(0.16, 1, 0.3, 1);
2639
+ animation: slideFromTop 200ms cubic-bezier(0.16, 1, 0.3, 1);
2588
2640
  }
2589
2641
 
2590
2642
  [data-side="left"] {
2591
- animation: slideRightAndFade 200ms cubic-bezier(0.16, 1, 0.3, 1);
2643
+ animation: slideFromRight 200ms cubic-bezier(0.16, 1, 0.3, 1);
2592
2644
  }
2593
2645
 
2594
2646
  [data-side="right"] {
2595
- animation: slideLeftAndFade 200ms cubic-bezier(0.16, 1, 0.3, 1);
2647
+ animation: slideFromLeft 200ms cubic-bezier(0.16, 1, 0.3, 1);
2596
2648
  }
2597
2649
 
2598
- @keyframes slideLeftAndFade {
2650
+ @keyframes slideFromTop {
2599
2651
  from {
2600
2652
  opacity: 0;
2601
- transform: translateX(2px);
2653
+ transform: translateY(-6px) scale(0.96);
2602
2654
  }
2603
2655
  to {
2604
2656
  opacity: 1;
2605
- transform: translateX(0);
2657
+ transform: translateY(0) scale(1);
2658
+ }
2659
+ }
2660
+
2661
+ @keyframes slideFromBottom {
2662
+ from {
2663
+ opacity: 0;
2664
+ transform: translateY(6px) scale(0.96);
2665
+ }
2666
+ to {
2667
+ opacity: 1;
2668
+ transform: translateY(0) scale(1);
2669
+ }
2670
+ }
2671
+
2672
+ @keyframes slideFromLeft {
2673
+ from {
2674
+ opacity: 0;
2675
+ transform: translateX(-6px) scale(0.96);
2676
+ }
2677
+ to {
2678
+ opacity: 1;
2679
+ transform: translateX(0) scale(1);
2680
+ }
2681
+ }
2682
+
2683
+ @keyframes slideFromRight {
2684
+ from {
2685
+ opacity: 0;
2686
+ transform: translateX(6px) scale(0.96);
2687
+ }
2688
+ to {
2689
+ opacity: 1;
2690
+ transform: translateX(0) scale(1);
2691
+ }
2692
+ }
2693
+
2694
+ /* ============================================
2695
+ * UTILITY ANIMATIONS
2696
+ * ============================================ */
2697
+
2698
+ .animate-bounce-subtle {
2699
+ animation: bounceSubtle 600ms cubic-bezier(0.34, 1.56, 0.64, 1);
2700
+ }
2701
+
2702
+ @keyframes bounceSubtle {
2703
+ 0%, 100% {
2704
+ transform: translateY(0);
2705
+ }
2706
+ 50% {
2707
+ transform: translateY(-4px);
2606
2708
  }
2607
2709
  }
2608
2710
 
2609
- @keyframes slideRightAndFade {
2711
+ .animate-scale-in {
2712
+ animation: scaleIn 200ms cubic-bezier(0.34, 1.56, 0.64, 1);
2713
+ }
2714
+
2715
+ @keyframes scaleIn {
2610
2716
  from {
2611
2717
  opacity: 0;
2612
- transform: translateX(-2px);
2718
+ transform: scale(0.9);
2613
2719
  }
2614
2720
  to {
2615
2721
  opacity: 1;
2616
- transform: translateX(0);
2722
+ transform: scale(1);
2617
2723
  }
2618
2724
  }
2725
+
2726
+ /* Smooth backdrop blur transition */
2727
+ .backdrop-animate {
2728
+ transition: backdrop-filter 200ms ease, background-color 200ms ease;
2729
+ }
2619
2730
  `;
2620
2731
  var useShadCNAnimations = () => {
2621
2732
  if (typeof document !== "undefined") {
@@ -3011,25 +3122,7 @@ var SidebarSheet = ({ navigation, children, ...props }) => {
3011
3122
 
3012
3123
  // ../../components/ui/Alert.tsx
3013
3124
  import { useState as useState12 } from "react";
3014
-
3015
- // ../../components/icons/AlertIcons.tsx
3016
- import { Info as Info2, AlertTriangle as AlertTriangle3, CheckCircle2 as CheckCircle22, OctagonX } from "lucide-react";
3017
- import { jsx as jsx18 } from "react/jsx-runtime";
3018
- function InfoIcon(props) {
3019
- return /* @__PURE__ */ jsx18(Info2, { "aria-hidden": true, className: props.className });
3020
- }
3021
- function WarningIcon(props) {
3022
- return /* @__PURE__ */ jsx18(AlertTriangle3, { "aria-hidden": true, className: props.className });
3023
- }
3024
- function CheckCircleIcon(props) {
3025
- return /* @__PURE__ */ jsx18(CheckCircle22, { "aria-hidden": true, className: props.className });
3026
- }
3027
- function ErrorIcon(props) {
3028
- return /* @__PURE__ */ jsx18(OctagonX, { "aria-hidden": true, className: props.className });
3029
- }
3030
-
3031
- // ../../components/ui/Alert.tsx
3032
- import { X as X6 } from "lucide-react";
3125
+ import { Info as Info2, AlertTriangle as AlertTriangle3, CheckCircle as CheckCircle3, XCircle, X as X6 } from "lucide-react";
3033
3126
  import { useTranslations as useTranslations2 } from "next-intl";
3034
3127
 
3035
3128
  // ../../lib/constants/constants-ui/alert.ts
@@ -3043,13 +3136,13 @@ var VARIANT_STYLES_ALERT = {
3043
3136
  };
3044
3137
 
3045
3138
  // ../../components/ui/Alert.tsx
3046
- import { jsx as jsx19, jsxs as jsxs16 } from "react/jsx-runtime";
3139
+ import { jsx as jsx18, jsxs as jsxs16 } from "react/jsx-runtime";
3047
3140
  var variantIcons = {
3048
- default: /* @__PURE__ */ jsx19(InfoIcon, { className: "h-4 w-4 text-muted-foreground" }),
3049
- info: /* @__PURE__ */ jsx19(InfoIcon, { className: "h-4 w-4 text-info" }),
3050
- success: /* @__PURE__ */ jsx19(CheckCircleIcon, { className: "h-4 w-4 text-success" }),
3051
- warning: /* @__PURE__ */ jsx19(WarningIcon, { className: "h-4 w-4 text-warning" }),
3052
- error: /* @__PURE__ */ jsx19(ErrorIcon, { className: "h-4 w-4 text-destructive" })
3141
+ default: /* @__PURE__ */ jsx18(Info2, { className: "h-4 w-4 text-muted-foreground" }),
3142
+ info: /* @__PURE__ */ jsx18(Info2, { className: "h-4 w-4 text-info" }),
3143
+ success: /* @__PURE__ */ jsx18(CheckCircle3, { className: "h-4 w-4 text-success" }),
3144
+ warning: /* @__PURE__ */ jsx18(AlertTriangle3, { className: "h-4 w-4 text-warning" }),
3145
+ error: /* @__PURE__ */ jsx18(XCircle, { className: "h-4 w-4 text-destructive" })
3053
3146
  };
3054
3147
  var Alert = ({ title, description, variant = "default", className, icon, dismissible = false, onClose, actions, closeAriaLabel }) => {
3055
3148
  const [open, setOpen] = useState12(true);
@@ -3066,19 +3159,19 @@ var Alert = ({ title, description, variant = "default", className, icon, dismiss
3066
3159
  role: "alert",
3067
3160
  "aria-live": variant === "error" ? "assertive" : "polite",
3068
3161
  children: [
3069
- /* @__PURE__ */ jsx19("div", { className: "pt-1", children: icon ?? variantIcons[variant] }),
3162
+ /* @__PURE__ */ jsx18("div", { className: "pt-1", children: icon ?? variantIcons[variant] }),
3070
3163
  /* @__PURE__ */ jsxs16("div", { className: "flex-1 min-w-0", children: [
3071
- title && /* @__PURE__ */ jsx19("p", { className: "font-semibold text-sm leading-none mb-1 text-foreground", children: title }),
3072
- description && (typeof description === "string" ? /* @__PURE__ */ jsx19("p", { className: "text-sm text-muted-foreground leading-relaxed break-words", children: description }) : /* @__PURE__ */ jsx19("div", { className: "text-sm text-muted-foreground leading-relaxed break-words", children: description })),
3073
- actions && /* @__PURE__ */ jsx19("div", { className: "mt-2 flex flex-wrap gap-2", children: actions })
3164
+ title && /* @__PURE__ */ jsx18("p", { className: "font-semibold text-sm leading-none mb-1 text-foreground", children: title }),
3165
+ description && (typeof description === "string" ? /* @__PURE__ */ jsx18("p", { className: "text-sm text-muted-foreground leading-relaxed break-words", children: description }) : /* @__PURE__ */ jsx18("div", { className: "text-sm text-muted-foreground leading-relaxed break-words", children: description })),
3166
+ actions && /* @__PURE__ */ jsx18("div", { className: "mt-2 flex flex-wrap gap-2", children: actions })
3074
3167
  ] }),
3075
- dismissible && /* @__PURE__ */ jsx19(
3168
+ dismissible && /* @__PURE__ */ jsx18(
3076
3169
  "button",
3077
3170
  {
3078
3171
  onClick: handleClose,
3079
3172
  className: "rounded-md p-1 hover:bg-accent focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
3080
3173
  "aria-label": closeAriaLabel || t("closeAlert"),
3081
- children: /* @__PURE__ */ jsx19(X6, { className: "h-4 w-4" })
3174
+ children: /* @__PURE__ */ jsx18(X6, { className: "h-4 w-4" })
3082
3175
  }
3083
3176
  )
3084
3177
  ]
@@ -3134,7 +3227,7 @@ var loading = new LoadingManager();
3134
3227
 
3135
3228
  // ../../components/ui/GlobalLoading.tsx
3136
3229
  import { useTranslations as useTranslations3 } from "next-intl";
3137
- import { jsx as jsx20, jsxs as jsxs17 } from "react/jsx-runtime";
3230
+ import { jsx as jsx19, jsxs as jsxs17 } from "react/jsx-runtime";
3138
3231
  var GlobalLoading = ({
3139
3232
  className,
3140
3233
  backdrop = true,
@@ -3147,7 +3240,7 @@ var GlobalLoading = ({
3147
3240
  return unsubscribe;
3148
3241
  }, []);
3149
3242
  if (!state.isVisible) return null;
3150
- return /* @__PURE__ */ jsx20(
3243
+ return /* @__PURE__ */ jsx19(
3151
3244
  "div",
3152
3245
  {
3153
3246
  className: cn(
@@ -3160,8 +3253,8 @@ var GlobalLoading = ({
3160
3253
  "aria-modal": true,
3161
3254
  "aria-label": "Loading",
3162
3255
  children: /* @__PURE__ */ jsxs17("div", { className: "flex items-center justify-center space-x-3 backdrop-blur-sm rounded-lg px-6 py-4 shadow-lg", role: "status", "aria-live": "assertive", "aria-busy": true, children: [
3163
- /* @__PURE__ */ jsx20(Activity2, { className: "w-6 h-6 animate-spin text-primary-background", "aria-hidden": true }),
3164
- state.text && /* @__PURE__ */ jsx20("span", { className: "text-base font-medium text-foreground", children: state.text })
3256
+ /* @__PURE__ */ jsx19(Activity2, { className: "w-6 h-6 animate-spin text-primary-background", "aria-hidden": true }),
3257
+ state.text && /* @__PURE__ */ jsx19("span", { className: "text-base font-medium text-foreground", children: state.text })
3165
3258
  ] })
3166
3259
  }
3167
3260
  );
@@ -3172,14 +3265,14 @@ var PageLoading = ({
3172
3265
  }) => {
3173
3266
  const t = useTranslations3("Loading");
3174
3267
  const defaultMessage = message || t("loadingPage");
3175
- return /* @__PURE__ */ jsx20("div", { className: cn(
3268
+ return /* @__PURE__ */ jsx19("div", { className: cn(
3176
3269
  "min-h-screen flex items-center justify-center bg-background",
3177
3270
  className
3178
3271
  ), children: /* @__PURE__ */ jsxs17("div", { className: "text-center space-y-4", children: [
3179
- /* @__PURE__ */ jsx20(Activity2, { className: "w-8 h-8 animate-spin text-primary mx-auto" }),
3272
+ /* @__PURE__ */ jsx19(Activity2, { className: "w-8 h-8 animate-spin text-primary mx-auto" }),
3180
3273
  /* @__PURE__ */ jsxs17("div", { children: [
3181
- /* @__PURE__ */ jsx20("p", { className: "text-lg font-medium text-foreground", children: defaultMessage }),
3182
- /* @__PURE__ */ jsx20("p", { className: "text-sm text-muted-foreground mt-2", children: t("pleaseWait") })
3274
+ /* @__PURE__ */ jsx19("p", { className: "text-lg font-medium text-foreground", children: defaultMessage }),
3275
+ /* @__PURE__ */ jsx19("p", { className: "text-sm text-muted-foreground mt-2", children: t("pleaseWait") })
3183
3276
  ] })
3184
3277
  ] }) });
3185
3278
  };
@@ -3196,8 +3289,8 @@ var InlineLoading = ({
3196
3289
  lg: "w-8 h-8"
3197
3290
  };
3198
3291
  return /* @__PURE__ */ jsxs17("div", { className: cn("flex items-center justify-center space-x-2", className), children: [
3199
- /* @__PURE__ */ jsx20(Activity2, { className: cn("animate-spin text-primary", sizeClasses2[size]) }),
3200
- text && /* @__PURE__ */ jsx20("span", { className: "text-sm text-muted-foreground animate-pulse", children: text })
3292
+ /* @__PURE__ */ jsx19(Activity2, { className: cn("animate-spin text-primary", sizeClasses2[size]) }),
3293
+ text && /* @__PURE__ */ jsx19("span", { className: "text-sm text-muted-foreground animate-pulse", children: text })
3201
3294
  ] });
3202
3295
  };
3203
3296
  var ButtonLoading = ({
@@ -3221,10 +3314,10 @@ var ButtonLoading = ({
3221
3314
  ),
3222
3315
  children: [
3223
3316
  isLoading && /* @__PURE__ */ jsxs17("div", { className: "absolute inset-0 flex items-center justify-center pointer-events-none", children: [
3224
- /* @__PURE__ */ jsx20(Activity2, { className: "w-4 h-4 animate-spin text-primary-foreground" }),
3225
- loadingText && /* @__PURE__ */ jsx20("span", { className: "ml-2 text-sm", children: loadingText })
3317
+ /* @__PURE__ */ jsx19(Activity2, { className: "w-4 h-4 animate-spin text-primary-foreground" }),
3318
+ loadingText && /* @__PURE__ */ jsx19("span", { className: "ml-2 text-sm", children: loadingText })
3226
3319
  ] }),
3227
- /* @__PURE__ */ jsx20("div", { className: cn(isLoading && "opacity-50 pointer-events-none"), children: child })
3320
+ /* @__PURE__ */ jsx19("div", { className: cn(isLoading && "opacity-50 pointer-events-none"), children: child })
3228
3321
  ]
3229
3322
  }
3230
3323
  );
@@ -3234,7 +3327,7 @@ var ButtonLoading = ({
3234
3327
  import * as React15 from "react";
3235
3328
  import Link from "next/link";
3236
3329
  import { ChevronRight, Home, MoreHorizontal } from "lucide-react";
3237
- import { jsx as jsx21, jsxs as jsxs18 } from "react/jsx-runtime";
3330
+ import { jsx as jsx20, jsxs as jsxs18 } from "react/jsx-runtime";
3238
3331
  var sizeStyles5 = {
3239
3332
  sm: {
3240
3333
  text: "text-xs",
@@ -3281,16 +3374,16 @@ var Breadcrumb = ({
3281
3374
  }, [items.length, maxItems, collapsible]);
3282
3375
  const getSeparator = () => {
3283
3376
  if (typeof separator === "string") {
3284
- return /* @__PURE__ */ jsx21("span", { className: "text-muted-foreground", children: separator });
3377
+ return /* @__PURE__ */ jsx20("span", { className: "text-muted-foreground", children: separator });
3285
3378
  }
3286
3379
  if (variant === "slash") {
3287
- return /* @__PURE__ */ jsx21("span", { className: "text-muted-foreground", children: "/" });
3380
+ return /* @__PURE__ */ jsx20("span", { className: "text-muted-foreground", children: "/" });
3288
3381
  }
3289
3382
  if (variant === "arrow") {
3290
- return /* @__PURE__ */ jsx21("span", { className: "text-muted-foreground", children: "\u2192" });
3383
+ return /* @__PURE__ */ jsx20("span", { className: "text-muted-foreground", children: "\u2192" });
3291
3384
  }
3292
3385
  const SeparatorComponent = separator;
3293
- return /* @__PURE__ */ jsx21(SeparatorComponent, { className: cn("text-muted-foreground", sizeStyles5[size].icon) });
3386
+ return /* @__PURE__ */ jsx20(SeparatorComponent, { className: cn("text-muted-foreground", sizeStyles5[size].icon) });
3294
3387
  };
3295
3388
  const processedItems = React15.useMemo(() => {
3296
3389
  let finalItems = [...items];
@@ -3311,17 +3404,17 @@ var Breadcrumb = ({
3311
3404
  const handleCollapseToggle = () => {
3312
3405
  setIsCollapsed(!isCollapsed);
3313
3406
  };
3314
- return /* @__PURE__ */ jsx21(
3407
+ return /* @__PURE__ */ jsx20(
3315
3408
  "nav",
3316
3409
  {
3317
3410
  className: cn("flex w-full items-center", sizeStyles5[size].text, className),
3318
3411
  "aria-label": "Breadcrumb navigation",
3319
- children: /* @__PURE__ */ jsx21("ol", { className: cn("flex items-center", sizeStyles5[size].spacing), children: processedItems.map((item, index) => {
3412
+ children: /* @__PURE__ */ jsx20("ol", { className: cn("flex items-center", sizeStyles5[size].spacing), children: processedItems.map((item, index) => {
3320
3413
  const isLast = index === processedItems.length - 1;
3321
3414
  const isCollapsedIndicator = item.label === "...";
3322
3415
  const Icon = item.icon;
3323
3416
  return /* @__PURE__ */ jsxs18("li", { className: "flex items-center", children: [
3324
- isCollapsedIndicator ? /* @__PURE__ */ jsx21(
3417
+ isCollapsedIndicator ? /* @__PURE__ */ jsx20(
3325
3418
  "button",
3326
3419
  {
3327
3420
  onClick: handleCollapseToggle,
@@ -3332,7 +3425,7 @@ var Breadcrumb = ({
3332
3425
  "focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-1"
3333
3426
  ),
3334
3427
  "aria-label": "Show all breadcrumb items",
3335
- children: /* @__PURE__ */ jsx21(MoreHorizontal, { className: sizeStyles5[size].icon })
3428
+ children: /* @__PURE__ */ jsx20(MoreHorizontal, { className: sizeStyles5[size].icon })
3336
3429
  }
3337
3430
  ) : item.href && !isLast && !item.disabled ? /* @__PURE__ */ jsxs18(
3338
3431
  Link,
@@ -3345,8 +3438,8 @@ var Breadcrumb = ({
3345
3438
  "focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-1 rounded-sm"
3346
3439
  ),
3347
3440
  children: [
3348
- Icon && /* @__PURE__ */ jsx21(Icon, { className: sizeStyles5[size].icon }),
3349
- /* @__PURE__ */ jsx21("span", { children: item.label })
3441
+ Icon && /* @__PURE__ */ jsx20(Icon, { className: sizeStyles5[size].icon }),
3442
+ /* @__PURE__ */ jsx20("span", { children: item.label })
3350
3443
  ]
3351
3444
  }
3352
3445
  ) : /* @__PURE__ */ jsxs18(
@@ -3359,12 +3452,12 @@ var Breadcrumb = ({
3359
3452
  ),
3360
3453
  "aria-current": isLast ? "page" : void 0,
3361
3454
  children: [
3362
- Icon && /* @__PURE__ */ jsx21(Icon, { className: sizeStyles5[size].icon }),
3363
- /* @__PURE__ */ jsx21("span", { children: item.label })
3455
+ Icon && /* @__PURE__ */ jsx20(Icon, { className: sizeStyles5[size].icon }),
3456
+ /* @__PURE__ */ jsx20("span", { children: item.label })
3364
3457
  ]
3365
3458
  }
3366
3459
  ),
3367
- !isLast && /* @__PURE__ */ jsx21(
3460
+ !isLast && /* @__PURE__ */ jsx20(
3368
3461
  "span",
3369
3462
  {
3370
3463
  className: cn("mx-1", sizeStyles5[size].spacing),
@@ -3382,7 +3475,7 @@ var Breadcrumb_default = Breadcrumb;
3382
3475
 
3383
3476
  // ../../components/ui/Tab.tsx
3384
3477
  import * as React16 from "react";
3385
- import { jsx as jsx22, jsxs as jsxs19 } from "react/jsx-runtime";
3478
+ import { jsx as jsx21, jsxs as jsxs19 } from "react/jsx-runtime";
3386
3479
  var sizeStyles6 = {
3387
3480
  sm: {
3388
3481
  tab: "py-1.5 px-3 text-xs",
@@ -3529,14 +3622,14 @@ var Tabs = ({
3529
3622
  }
3530
3623
  },
3531
3624
  children: [
3532
- Icon && /* @__PURE__ */ jsx22(Icon, { className: "h-4 w-4" }),
3625
+ Icon && /* @__PURE__ */ jsx21(Icon, { className: "h-4 w-4" }),
3533
3626
  tab.label
3534
3627
  ]
3535
3628
  },
3536
3629
  tab.value
3537
3630
  );
3538
3631
  }),
3539
- variant === "underline" && orientation === "horizontal" && /* @__PURE__ */ jsx22(
3632
+ variant === "underline" && orientation === "horizontal" && /* @__PURE__ */ jsx21(
3540
3633
  "div",
3541
3634
  {
3542
3635
  className: "absolute bottom-0 h-0.5 bg-primary transition-all duration-300 ease-out",
@@ -3544,7 +3637,7 @@ var Tabs = ({
3544
3637
  }
3545
3638
  )
3546
3639
  ] }),
3547
- /* @__PURE__ */ jsx22(
3640
+ /* @__PURE__ */ jsx21(
3548
3641
  "div",
3549
3642
  {
3550
3643
  role: "tabpanel",
@@ -3562,7 +3655,7 @@ var Tabs = ({
3562
3655
  ] });
3563
3656
  };
3564
3657
  var SimpleTabs = ({ tabs, defaultValue, className }) => {
3565
- return /* @__PURE__ */ jsx22(
3658
+ return /* @__PURE__ */ jsx21(
3566
3659
  Tabs,
3567
3660
  {
3568
3661
  tabs,
@@ -3574,7 +3667,7 @@ var SimpleTabs = ({ tabs, defaultValue, className }) => {
3574
3667
  );
3575
3668
  };
3576
3669
  var PillTabs = ({ contained = true, ...props }) => {
3577
- return /* @__PURE__ */ jsx22(
3670
+ return /* @__PURE__ */ jsx21(
3578
3671
  Tabs,
3579
3672
  {
3580
3673
  ...props,
@@ -3588,7 +3681,7 @@ var VerticalTabs = ({
3588
3681
  className,
3589
3682
  ...props
3590
3683
  }) => {
3591
- return /* @__PURE__ */ jsx22("div", { className: cn("flex gap-6", className), children: /* @__PURE__ */ jsx22("div", { className: cn(sidebarWidth, "flex-shrink-0"), children: /* @__PURE__ */ jsx22(
3684
+ return /* @__PURE__ */ jsx21("div", { className: cn("flex gap-6", className), children: /* @__PURE__ */ jsx21("div", { className: cn(sidebarWidth, "flex-shrink-0"), children: /* @__PURE__ */ jsx21(
3592
3685
  Tabs,
3593
3686
  {
3594
3687
  ...props,
@@ -3602,7 +3695,7 @@ var VerticalTabs = ({
3602
3695
  // ../../components/ui/DropdownMenu.tsx
3603
3696
  import React17, { useState as useState16 } from "react";
3604
3697
  import { createPortal as createPortal5 } from "react-dom";
3605
- import { Fragment as Fragment5, jsx as jsx23, jsxs as jsxs20 } from "react/jsx-runtime";
3698
+ import { Fragment as Fragment5, jsx as jsx22, jsxs as jsxs20 } from "react/jsx-runtime";
3606
3699
  var DropdownMenu = ({
3607
3700
  trigger,
3608
3701
  children,
@@ -3724,28 +3817,24 @@ var DropdownMenu = ({
3724
3817
  setOpen(false);
3725
3818
  }
3726
3819
  };
3727
- const dropdownContent = open ? /* @__PURE__ */ jsx23(
3820
+ const dropdownContent = open ? /* @__PURE__ */ jsx22(
3728
3821
  "div",
3729
3822
  {
3730
3823
  "data-dropdown-menu": true,
3824
+ "data-combobox-dropdown": true,
3731
3825
  ref: contentRef,
3732
3826
  style: {
3733
3827
  position: "absolute",
3734
3828
  top: position?.top ?? -9999,
3735
3829
  left: position?.left ?? -9999,
3736
3830
  zIndex: 9999,
3737
- visibility: position ? "visible" : "hidden"
3831
+ visibility: position ? "visible" : "hidden",
3832
+ transformOrigin: "top center"
3738
3833
  },
3739
3834
  "data-state": open ? "open" : "closed",
3740
3835
  role: "menu",
3741
- className: cn(
3742
- "z-[9999] min-w-40",
3743
- // shadcn-like enter/exit animations
3744
- "data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95",
3745
- "data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95",
3746
- className
3747
- ),
3748
- children: /* @__PURE__ */ jsx23(
3836
+ className: cn("z-9999 min-w-40", className),
3837
+ children: /* @__PURE__ */ jsx22(
3749
3838
  "div",
3750
3839
  {
3751
3840
  className: cn(
@@ -3766,7 +3855,7 @@ var DropdownMenu = ({
3766
3855
  role: "menuitem",
3767
3856
  tabIndex: -1,
3768
3857
  style: {
3769
- animationDelay: open ? `${index * 25}ms` : "0ms"
3858
+ animationDelay: open ? `${Math.min(index * 20, 200)}ms` : "0ms"
3770
3859
  },
3771
3860
  className: cn(
3772
3861
  "dropdown-item flex w-full items-center gap-2 px-2.5 py-1.5 text-sm rounded-sm",
@@ -3777,7 +3866,7 @@ var DropdownMenu = ({
3777
3866
  item.destructive && "text-destructive hover:bg-destructive/10 focus:bg-destructive/10"
3778
3867
  ),
3779
3868
  children: [
3780
- IconComponent && /* @__PURE__ */ jsx23(IconComponent, { className: "h-4 w-4" }),
3869
+ IconComponent && /* @__PURE__ */ jsx22(IconComponent, { className: "h-4 w-4" }),
3781
3870
  item.label
3782
3871
  ]
3783
3872
  },
@@ -3804,7 +3893,7 @@ var DropdownMenu = ({
3804
3893
  dropdownContent && typeof window !== "undefined" && createPortal5(dropdownContent, document.body)
3805
3894
  ] });
3806
3895
  };
3807
- var DropdownMenuItem = ({ children, onClick, disabled, destructive, className }) => /* @__PURE__ */ jsx23(
3896
+ var DropdownMenuItem = ({ children, onClick, disabled, destructive, className }) => /* @__PURE__ */ jsx22(
3808
3897
  "button",
3809
3898
  {
3810
3899
  onClick,
@@ -3820,8 +3909,8 @@ var DropdownMenuItem = ({ children, onClick, disabled, destructive, className })
3820
3909
  children
3821
3910
  }
3822
3911
  );
3823
- var DropdownMenuSeparator = ({ className }) => /* @__PURE__ */ jsx23("div", { className: cn("h-px bg-border my-1", className) });
3824
- var SelectDropdown = ({ options, value, onChange, placeholder = "Select...", className }) => /* @__PURE__ */ jsx23(
3912
+ var DropdownMenuSeparator = ({ className }) => /* @__PURE__ */ jsx22("div", { className: cn("h-px bg-border my-1", className) });
3913
+ var SelectDropdown = ({ options, value, onChange, placeholder = "Select...", className }) => /* @__PURE__ */ jsx22(
3825
3914
  DropdownMenu,
3826
3915
  {
3827
3916
  trigger: /* @__PURE__ */ jsxs20(
@@ -3834,8 +3923,8 @@ var SelectDropdown = ({ options, value, onChange, placeholder = "Select...", cla
3834
3923
  className
3835
3924
  ),
3836
3925
  children: [
3837
- /* @__PURE__ */ jsx23("span", { className: "truncate max-w-[16rem] text-foreground/90", children: value || placeholder }),
3838
- /* @__PURE__ */ jsx23("svg", { width: "16", height: "16", viewBox: "0 0 20 20", fill: "none", className: "opacity-70", children: /* @__PURE__ */ jsx23("path", { d: "M6 8l4 4 4-4", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }) })
3926
+ /* @__PURE__ */ jsx22("span", { className: "truncate max-w-64 text-foreground/90", children: value || placeholder }),
3927
+ /* @__PURE__ */ jsx22("svg", { width: "16", height: "16", viewBox: "0 0 20 20", fill: "none", className: "opacity-70", children: /* @__PURE__ */ jsx22("path", { d: "M6 8l4 4 4-4", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }) })
3839
3928
  ]
3840
3929
  }
3841
3930
  ),
@@ -3856,7 +3945,7 @@ import * as React18 from "react";
3856
3945
  import { useId as useId2 } from "react";
3857
3946
  import { createPortal as createPortal6 } from "react-dom";
3858
3947
  import { ChevronDown, Search as Search2, SearchX, Check as Check3, X as X7, Loader2 as Loader22 } from "lucide-react";
3859
- import { jsx as jsx24, jsxs as jsxs21 } from "react/jsx-runtime";
3948
+ import { jsx as jsx23, jsxs as jsxs21 } from "react/jsx-runtime";
3860
3949
  var getOptionLabel = (option) => {
3861
3950
  return typeof option === "string" ? option : option.label;
3862
3951
  };
@@ -3973,7 +4062,7 @@ var Combobox = ({
3973
4062
  }, [open, enableSearch]);
3974
4063
  const selectedOption = findOptionByValue(options, value);
3975
4064
  const displayValue = selectedOption ? getOptionLabel(selectedOption) : "";
3976
- const dropdownContent = /* @__PURE__ */ jsx24(
4065
+ const dropdownContent = /* @__PURE__ */ jsx23(
3977
4066
  "div",
3978
4067
  {
3979
4068
  "data-combobox-dropdown": true,
@@ -3983,20 +4072,17 @@ var Combobox = ({
3983
4072
  top: dropdownPosition?.top || 0,
3984
4073
  left: dropdownPosition?.left || 0,
3985
4074
  width: dropdownPosition?.width || 200,
3986
- zIndex: 9999
4075
+ zIndex: 9999,
4076
+ transformOrigin: "top center"
3987
4077
  },
3988
4078
  "data-state": open ? "open" : "closed",
3989
4079
  role: "listbox",
3990
4080
  id: `${resolvedId}-listbox`,
3991
- className: cn(
3992
- "z-[9999]",
3993
- "data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95",
3994
- "data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95"
3995
- ),
4081
+ className: "z-9999",
3996
4082
  children: /* @__PURE__ */ jsxs21("div", { className: cn("rounded-md border bg-popover text-popover-foreground shadow-md", "backdrop-blur-sm bg-popover/95 border-border/60"), children: [
3997
4083
  enableSearch && /* @__PURE__ */ jsxs21("div", { className: "relative p-3 border-b border-border/50 bg-muted/20", children: [
3998
- /* @__PURE__ */ jsx24(Search2, { className: "absolute left-6 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground transition-colors" }),
3999
- /* @__PURE__ */ jsx24(
4084
+ /* @__PURE__ */ jsx23(Search2, { className: "absolute left-6 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground transition-colors" }),
4085
+ /* @__PURE__ */ jsx23(
4000
4086
  "input",
4001
4087
  {
4002
4088
  ref: inputRef,
@@ -4035,9 +4121,9 @@ var Combobox = ({
4035
4121
  }
4036
4122
  )
4037
4123
  ] }),
4038
- /* @__PURE__ */ jsx24("div", { className: "max-h-64 overflow-y-auto overscroll-contain", children: /* @__PURE__ */ jsx24("ul", { className: "p-1 space-y-1", children: loading2 ? /* @__PURE__ */ jsx24("li", { className: "px-3 py-8 text-center", children: /* @__PURE__ */ jsxs21("div", { className: "flex flex-col items-center gap-2 animate-in fade-in-0 zoom-in-95 duration-300", children: [
4039
- /* @__PURE__ */ jsx24(Loader22, { className: "h-6 w-6 animate-spin text-primary" }),
4040
- /* @__PURE__ */ jsx24("span", { className: "text-sm text-muted-foreground", children: loadingText || "Loading..." })
4124
+ /* @__PURE__ */ jsx23("div", { className: "max-h-64 overflow-y-auto overscroll-contain", children: /* @__PURE__ */ jsx23("ul", { className: "p-1 space-y-1", children: loading2 ? /* @__PURE__ */ jsx23("li", { className: "px-3 py-8 text-center", children: /* @__PURE__ */ jsxs21("div", { className: "flex flex-col items-center gap-2 animate-in fade-in-0 zoom-in-95 duration-300", children: [
4125
+ /* @__PURE__ */ jsx23(Loader22, { className: "h-6 w-6 animate-spin text-primary" }),
4126
+ /* @__PURE__ */ jsx23("span", { className: "text-sm text-muted-foreground", children: loadingText || "Loading..." })
4041
4127
  ] }) }) : filteredOptions.length > 0 ? filteredOptions.map((item, index) => {
4042
4128
  const itemValue = getOptionValue(item);
4043
4129
  const itemLabel = getOptionLabel(item);
@@ -4054,7 +4140,7 @@ var Combobox = ({
4054
4140
  "aria-selected": isSelected,
4055
4141
  onClick: () => handleSelect(item),
4056
4142
  style: {
4057
- animationDelay: open ? `${index * 25}ms` : "0ms"
4143
+ animationDelay: open ? `${Math.min(index * 20, 200)}ms` : "0ms"
4058
4144
  },
4059
4145
  className: cn(
4060
4146
  "dropdown-item group flex cursor-pointer items-center justify-between rounded-sm px-2.5 py-1.5 text-sm",
@@ -4066,24 +4152,16 @@ var Combobox = ({
4066
4152
  isSelected && "bg-accent text-accent-foreground"
4067
4153
  ),
4068
4154
  children: [
4069
- /* @__PURE__ */ jsx24("span", { className: "truncate", children: itemLabel }),
4070
- isSelected && /* @__PURE__ */ jsx24(Check3, { className: "h-4 w-4 text-primary" })
4155
+ /* @__PURE__ */ jsx23("span", { className: "truncate", children: itemLabel }),
4156
+ isSelected && /* @__PURE__ */ jsx23(Check3, { className: "h-4 w-4 text-primary" })
4071
4157
  ]
4072
4158
  },
4073
4159
  `${itemValue}-${index}`
4074
4160
  );
4075
- }) : /* @__PURE__ */ jsx24("li", { className: "px-3 py-8 text-center text-muted-foreground text-sm", children: /* @__PURE__ */ jsxs21("div", { className: "flex flex-col items-center gap-2 animate-in fade-in-0 zoom-in-95 duration-300", children: [
4076
- /* @__PURE__ */ jsx24(SearchX, { className: "h-8 w-8 opacity-40 text-muted-foreground" }),
4077
- /* @__PURE__ */ jsx24("span", { className: "text-sm", children: emptyText }),
4078
- query && /* @__PURE__ */ jsx24(
4079
- "button",
4080
- {
4081
- type: "button",
4082
- onClick: () => setQuery(""),
4083
- className: "text-xs text-primary hover:underline",
4084
- children: "Clear search"
4085
- }
4086
- )
4161
+ }) : /* @__PURE__ */ jsx23("li", { className: "px-3 py-8 text-center text-muted-foreground text-sm", children: /* @__PURE__ */ jsxs21("div", { className: "flex flex-col items-center gap-2 animate-in fade-in-0 zoom-in-95 duration-300", children: [
4162
+ /* @__PURE__ */ jsx23(SearchX, { className: "h-8 w-8 opacity-40 text-muted-foreground" }),
4163
+ /* @__PURE__ */ jsx23("span", { className: "text-sm", children: emptyText }),
4164
+ query && /* @__PURE__ */ jsx23("button", { type: "button", onClick: () => setQuery(""), className: "text-xs text-primary hover:underline", children: "Clear search" })
4087
4165
  ] }) }) }) })
4088
4166
  ] })
4089
4167
  }
@@ -4098,7 +4176,7 @@ var Combobox = ({
4098
4176
  const radiusClass = size === "sm" ? "rounded-md" : "rounded-lg";
4099
4177
  const verticalGap = size === "sm" ? "space-y-1.5" : "space-y-2";
4100
4178
  return /* @__PURE__ */ jsxs21("div", { className: cn("w-full group", verticalGap), children: [
4101
- label && /* @__PURE__ */ jsx24("div", { className: "flex items-center justify-between", children: /* @__PURE__ */ jsxs21(
4179
+ label && /* @__PURE__ */ jsx23("div", { className: "flex items-center justify-between", children: /* @__PURE__ */ jsxs21(
4102
4180
  "label",
4103
4181
  {
4104
4182
  id: labelId,
@@ -4110,7 +4188,7 @@ var Combobox = ({
4110
4188
  ),
4111
4189
  children: [
4112
4190
  label,
4113
- required && /* @__PURE__ */ jsx24("span", { className: "text-destructive ml-1", children: "*" })
4191
+ required && /* @__PURE__ */ jsx23("span", { className: "text-destructive ml-1", children: "*" })
4114
4192
  ]
4115
4193
  }
4116
4194
  ) }),
@@ -4144,10 +4222,10 @@ var Combobox = ({
4144
4222
  className
4145
4223
  ),
4146
4224
  children: [
4147
- /* @__PURE__ */ jsx24("span", { className: cn("truncate", !displayValue && "text-muted-foreground", fontBold && "font-bold"), children: displayValue || placeholder }),
4225
+ /* @__PURE__ */ jsx23("span", { className: cn("truncate", !displayValue && "text-muted-foreground", fontBold && "font-bold"), children: displayValue || placeholder }),
4148
4226
  /* @__PURE__ */ jsxs21("div", { className: "flex items-center gap-1 ml-2", children: [
4149
4227
  allowClear && value && !disabled && // FIX: Use a div instead of a nested button
4150
- /* @__PURE__ */ jsx24(
4228
+ /* @__PURE__ */ jsx23(
4151
4229
  "div",
4152
4230
  {
4153
4231
  role: "button",
@@ -4156,18 +4234,10 @@ var Combobox = ({
4156
4234
  onClick: handleClear,
4157
4235
  onKeyDown: (e) => (e.key === "Enter" || e.key === " ") && handleClear(e),
4158
4236
  className: "opacity-0 group-hover:opacity-100 transition-opacity p-0.5 rounded hover:bg-destructive/10 text-muted-foreground hover:text-destructive",
4159
- children: /* @__PURE__ */ jsx24(X7, { className: "h-3 w-3" })
4237
+ children: /* @__PURE__ */ jsx23(X7, { className: "h-3 w-3" })
4160
4238
  }
4161
4239
  ),
4162
- /* @__PURE__ */ jsx24(
4163
- ChevronDown,
4164
- {
4165
- className: cn(
4166
- "h-4 w-4 text-muted-foreground transition-all duration-200",
4167
- open && "rotate-180 scale-110 text-primary"
4168
- )
4169
- }
4170
- )
4240
+ /* @__PURE__ */ jsx23(ChevronDown, { className: cn("h-4 w-4 text-muted-foreground transition-all duration-200", open && "rotate-180 scale-110 text-primary") })
4171
4241
  ] })
4172
4242
  ]
4173
4243
  }
@@ -4178,7 +4248,7 @@ var Combobox = ({
4178
4248
 
4179
4249
  // ../../components/ui/Pagination.tsx
4180
4250
  import { useTranslations as useTranslations4 } from "next-intl";
4181
- import { jsx as jsx25, jsxs as jsxs22 } from "react/jsx-runtime";
4251
+ import { jsx as jsx24, jsxs as jsxs22 } from "react/jsx-runtime";
4182
4252
  var Pagination = ({
4183
4253
  page,
4184
4254
  totalPages,
@@ -4262,12 +4332,12 @@ var Pagination = ({
4262
4332
  };
4263
4333
  if (totalPages <= 1) return null;
4264
4334
  return /* @__PURE__ */ jsxs22("nav", { className: cn("flex flex-col gap-4", className), "aria-label": labels?.navigationLabel || t("navigationLabel"), children: [
4265
- showInfo && totalItems && /* @__PURE__ */ jsx25("div", { className: cn("text-sm text-muted-foreground", textAlignmentClass), children: labels?.showingResults ? labels.showingResults({ startItem: startItem || 0, endItem: endItem || 0, totalItems }) : t("showingResults", { startItem: startItem || 0, endItem: endItem || 0, totalItems }) }),
4335
+ showInfo && totalItems && /* @__PURE__ */ jsx24("div", { className: cn("text-sm text-muted-foreground", textAlignmentClass), children: labels?.showingResults ? labels.showingResults({ startItem: startItem || 0, endItem: endItem || 0, totalItems }) : t("showingResults", { startItem: startItem || 0, endItem: endItem || 0, totalItems }) }),
4266
4336
  /* @__PURE__ */ jsxs22("div", { className: cn("flex items-center justify-between", {
4267
4337
  "flex-row-reverse": alignment === "right" || alignment === "center"
4268
4338
  }), children: [
4269
4339
  /* @__PURE__ */ jsxs22("div", { className: cn("flex items-center gap-1"), children: [
4270
- showFirstLast && /* @__PURE__ */ jsx25(
4340
+ showFirstLast && /* @__PURE__ */ jsx24(
4271
4341
  Button_default,
4272
4342
  {
4273
4343
  variant: getButtonVariant(false),
@@ -4281,7 +4351,7 @@ var Pagination = ({
4281
4351
  "aria-disabled": disabled || page === 1
4282
4352
  }
4283
4353
  ),
4284
- showPrevNext && /* @__PURE__ */ jsx25(
4354
+ showPrevNext && /* @__PURE__ */ jsx24(
4285
4355
  Button_default,
4286
4356
  {
4287
4357
  variant: getButtonVariant(false),
@@ -4292,16 +4362,16 @@ var Pagination = ({
4292
4362
  title: labels?.previousPage || t("previousPage"),
4293
4363
  "aria-label": labels?.previousPage || t("previousPage"),
4294
4364
  "aria-disabled": disabled || page === 1,
4295
- children: /* @__PURE__ */ jsx25("span", { className: "hidden sm:inline", children: labels?.previous || t("previous") })
4365
+ children: /* @__PURE__ */ jsx24("span", { className: "hidden sm:inline", children: labels?.previous || t("previous") })
4296
4366
  }
4297
4367
  ),
4298
4368
  showPageNumbers && createPageArray().map((p, i) => {
4299
4369
  if (p === "...") {
4300
- return /* @__PURE__ */ jsx25(Button_default, { variant: "ghost", size, disabled: true, icon: MoreHorizontal2, className: "cursor-default" }, i);
4370
+ return /* @__PURE__ */ jsx24(Button_default, { variant: "ghost", size, disabled: true, icon: MoreHorizontal2, className: "cursor-default" }, i);
4301
4371
  }
4302
4372
  const pageNumber = p;
4303
4373
  const isActive = page === pageNumber;
4304
- return /* @__PURE__ */ jsx25(
4374
+ return /* @__PURE__ */ jsx24(
4305
4375
  Button_default,
4306
4376
  {
4307
4377
  variant: getButtonVariant(isActive),
@@ -4316,7 +4386,7 @@ var Pagination = ({
4316
4386
  i
4317
4387
  );
4318
4388
  }),
4319
- showPrevNext && /* @__PURE__ */ jsx25(
4389
+ showPrevNext && /* @__PURE__ */ jsx24(
4320
4390
  Button_default,
4321
4391
  {
4322
4392
  variant: getButtonVariant(false),
@@ -4327,10 +4397,10 @@ var Pagination = ({
4327
4397
  title: labels?.nextPage || t("nextPage"),
4328
4398
  "aria-label": labels?.nextPage || t("nextPage"),
4329
4399
  "aria-disabled": disabled || page === totalPages,
4330
- children: /* @__PURE__ */ jsx25("span", { className: "hidden sm:inline", children: labels?.next || t("next") })
4400
+ children: /* @__PURE__ */ jsx24("span", { className: "hidden sm:inline", children: labels?.next || t("next") })
4331
4401
  }
4332
4402
  ),
4333
- showFirstLast && /* @__PURE__ */ jsx25(
4403
+ showFirstLast && /* @__PURE__ */ jsx24(
4334
4404
  Button_default,
4335
4405
  {
4336
4406
  variant: getButtonVariant(false),
@@ -4350,7 +4420,7 @@ var Pagination = ({
4350
4420
  labels?.itemsPerPage || t("itemsPerPage"),
4351
4421
  ":"
4352
4422
  ] }),
4353
- /* @__PURE__ */ jsx25("div", { className: "w-20", children: /* @__PURE__ */ jsx25(
4423
+ /* @__PURE__ */ jsx24("div", { className: "w-20", children: /* @__PURE__ */ jsx24(
4354
4424
  Combobox,
4355
4425
  {
4356
4426
  options: pageSizeOptionsStrings,
@@ -4390,14 +4460,14 @@ var SimplePagination = ({
4390
4460
  " total items)"
4391
4461
  ] }),
4392
4462
  /* @__PURE__ */ jsxs22("div", { className: "flex items-center justify-between", children: [
4393
- /* @__PURE__ */ jsx25(Button_default, { variant, size, icon: ChevronLeft, onClick: () => onChange(Math.max(1, page - 1)), disabled: disabled || page === 1, children: "Previous" }),
4463
+ /* @__PURE__ */ jsx24(Button_default, { variant, size, icon: ChevronLeft, onClick: () => onChange(Math.max(1, page - 1)), disabled: disabled || page === 1, children: "Previous" }),
4394
4464
  /* @__PURE__ */ jsxs22("div", { className: "flex items-center gap-2 text-sm text-muted-foreground", children: [
4395
- /* @__PURE__ */ jsx25("span", { children: "Page" }),
4396
- /* @__PURE__ */ jsx25("span", { className: "font-medium text-foreground", children: page }),
4397
- /* @__PURE__ */ jsx25("span", { children: "of" }),
4398
- /* @__PURE__ */ jsx25("span", { className: "font-medium text-foreground", children: totalPages })
4465
+ /* @__PURE__ */ jsx24("span", { children: "Page" }),
4466
+ /* @__PURE__ */ jsx24("span", { className: "font-medium text-foreground", children: page }),
4467
+ /* @__PURE__ */ jsx24("span", { children: "of" }),
4468
+ /* @__PURE__ */ jsx24("span", { className: "font-medium text-foreground", children: totalPages })
4399
4469
  ] }),
4400
- /* @__PURE__ */ jsx25(
4470
+ /* @__PURE__ */ jsx24(
4401
4471
  Button_default,
4402
4472
  {
4403
4473
  variant,
@@ -4421,7 +4491,7 @@ var CompactPagination = ({
4421
4491
  }) => {
4422
4492
  if (totalPages <= 1) return null;
4423
4493
  return /* @__PURE__ */ jsxs22("nav", { className: cn("flex items-center gap-1", className), "aria-label": "Compact Pagination", children: [
4424
- /* @__PURE__ */ jsx25(
4494
+ /* @__PURE__ */ jsx24(
4425
4495
  Button_default,
4426
4496
  {
4427
4497
  variant,
@@ -4433,7 +4503,7 @@ var CompactPagination = ({
4433
4503
  "aria-label": "First page"
4434
4504
  }
4435
4505
  ),
4436
- /* @__PURE__ */ jsx25(
4506
+ /* @__PURE__ */ jsx24(
4437
4507
  Button_default,
4438
4508
  {
4439
4509
  variant,
@@ -4449,7 +4519,7 @@ var CompactPagination = ({
4449
4519
  " / ",
4450
4520
  totalPages
4451
4521
  ] }),
4452
- /* @__PURE__ */ jsx25(
4522
+ /* @__PURE__ */ jsx24(
4453
4523
  Button_default,
4454
4524
  {
4455
4525
  variant,
@@ -4460,7 +4530,7 @@ var CompactPagination = ({
4460
4530
  title: "Next page"
4461
4531
  }
4462
4532
  ),
4463
- /* @__PURE__ */ jsx25(
4533
+ /* @__PURE__ */ jsx24(
4464
4534
  Button_default,
4465
4535
  {
4466
4536
  variant,
@@ -4476,7 +4546,7 @@ var CompactPagination = ({
4476
4546
 
4477
4547
  // ../../components/ui/Section.tsx
4478
4548
  import React20 from "react";
4479
- import { jsx as jsx26 } from "react/jsx-runtime";
4549
+ import { jsx as jsx25 } from "react/jsx-runtime";
4480
4550
  var Section = React20.forwardRef(
4481
4551
  ({
4482
4552
  children,
@@ -4499,7 +4569,7 @@ var Section = React20.forwardRef(
4499
4569
  lg: "py-12",
4500
4570
  xl: "py-16"
4501
4571
  };
4502
- return /* @__PURE__ */ jsx26(
4572
+ return /* @__PURE__ */ jsx25(
4503
4573
  "section",
4504
4574
  {
4505
4575
  ref,
@@ -4521,9 +4591,9 @@ var Section_default = Section;
4521
4591
 
4522
4592
  // ../../components/ui/ScrollArea.tsx
4523
4593
  import { forwardRef as forwardRef6 } from "react";
4524
- import { jsx as jsx27 } from "react/jsx-runtime";
4594
+ import { jsx as jsx26 } from "react/jsx-runtime";
4525
4595
  var ScrollArea = forwardRef6(({ className, children, ...props }, ref) => {
4526
- return /* @__PURE__ */ jsx27("div", { ref, className: cn("relative overflow-hidden bg-background", className), ...props, children: /* @__PURE__ */ jsx27("div", { className: cn("h-full w-full overflow-y-auto scroll-area-viewport"), children }) });
4596
+ return /* @__PURE__ */ jsx26("div", { ref, className: cn("relative overflow-hidden bg-background", className), ...props, children: /* @__PURE__ */ jsx26("div", { className: cn("h-full w-full overflow-y-auto scroll-area-viewport"), children }) });
4527
4597
  });
4528
4598
  ScrollArea.displayName = "ScrollArea";
4529
4599
 
@@ -4714,7 +4784,7 @@ function formatDateWithDay(date) {
4714
4784
  }
4715
4785
 
4716
4786
  // ../../components/ui/DatePicker.tsx
4717
- import { Fragment as Fragment6, jsx as jsx28, jsxs as jsxs23 } from "react/jsx-runtime";
4787
+ import { Fragment as Fragment6, jsx as jsx27, jsxs as jsxs23 } from "react/jsx-runtime";
4718
4788
  var DatePicker = ({
4719
4789
  id,
4720
4790
  value,
@@ -4825,7 +4895,7 @@ var DatePicker = ({
4825
4895
  const firstDayOfMonth = getFirstDayOfMonth(viewDate);
4826
4896
  const days = [];
4827
4897
  for (let i = 0; i < firstDayOfMonth; i++) {
4828
- days.push(/* @__PURE__ */ jsx28("div", { className: "w-8 h-8" }, `empty-${i}`));
4898
+ days.push(/* @__PURE__ */ jsx27("div", { className: "w-8 h-8" }, `empty-${i}`));
4829
4899
  }
4830
4900
  for (let day = 1; day <= daysInMonth; day++) {
4831
4901
  const date = new Date(viewDate.getFullYear(), viewDate.getMonth(), day);
@@ -4834,7 +4904,7 @@ var DatePicker = ({
4834
4904
  const totalDaysFromStart = firstDayOfMonth + day - 1;
4835
4905
  const rowIndex = Math.floor(totalDaysFromStart / 7);
4836
4906
  days.push(
4837
- /* @__PURE__ */ jsx28(
4907
+ /* @__PURE__ */ jsx27(
4838
4908
  "button",
4839
4909
  {
4840
4910
  onClick: () => handleDateSelect(date),
@@ -4856,7 +4926,7 @@ var DatePicker = ({
4856
4926
  }
4857
4927
  return days;
4858
4928
  };
4859
- const datePickerContent = isOpen && dropdownPosition ? /* @__PURE__ */ jsx28(
4929
+ const datePickerContent = isOpen && dropdownPosition ? /* @__PURE__ */ jsx27(
4860
4930
  "div",
4861
4931
  {
4862
4932
  "data-datepicker": true,
@@ -4886,13 +4956,13 @@ var DatePicker = ({
4886
4956
  style: { pointerEvents: "auto" },
4887
4957
  children: [
4888
4958
  /* @__PURE__ */ jsxs23("div", { className: "flex items-center justify-between mb-4", children: [
4889
- /* @__PURE__ */ jsx28(Button_default, { variant: "ghost", size: "sm", onClick: () => navigateMonth("prev"), className: "p-1 h-auto", children: /* @__PURE__ */ jsx28(ChevronLeft2, { className: "h-4 w-4" }) }),
4890
- /* @__PURE__ */ jsx28("div", { className: "text-sm font-semibold", children: viewDate.toLocaleDateString("en-US", { month: "long", year: "numeric" }) }),
4891
- /* @__PURE__ */ jsx28(Button_default, { variant: "ghost", size: "sm", onClick: () => navigateMonth("next"), className: "p-1 h-auto", children: /* @__PURE__ */ jsx28(ChevronRight3, { className: "h-4 w-4" }) })
4959
+ /* @__PURE__ */ jsx27(Button_default, { variant: "ghost", size: "sm", onClick: () => navigateMonth("prev"), className: "p-1 h-auto", children: /* @__PURE__ */ jsx27(ChevronLeft2, { className: "h-4 w-4" }) }),
4960
+ /* @__PURE__ */ jsx27("div", { className: "text-sm font-semibold", children: viewDate.toLocaleDateString("en-US", { month: "long", year: "numeric" }) }),
4961
+ /* @__PURE__ */ jsx27(Button_default, { variant: "ghost", size: "sm", onClick: () => navigateMonth("next"), className: "p-1 h-auto", children: /* @__PURE__ */ jsx27(ChevronRight3, { className: "h-4 w-4" }) })
4892
4962
  ] }),
4893
- /* @__PURE__ */ jsx28("div", { className: cn("grid grid-cols-7 gap-1", size === "sm" ? "mb-1" : "mb-2"), children: (weekdayLabels || ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"]).map((day) => /* @__PURE__ */ jsx28("div", { className: cn("text-muted-foreground text-center font-medium", size === "sm" ? "text-[10px] py-0.5" : "text-xs py-1"), children: day }, day)) }),
4894
- /* @__PURE__ */ jsx28("div", { className: "grid grid-cols-7 gap-1", children: renderCalendar() }),
4895
- /* @__PURE__ */ jsx28("div", { className: "flex items-center justify-end mt-2", children: /* @__PURE__ */ jsx28(
4963
+ /* @__PURE__ */ jsx27("div", { className: cn("grid grid-cols-7 gap-1", size === "sm" ? "mb-1" : "mb-2"), children: (weekdayLabels || ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"]).map((day) => /* @__PURE__ */ jsx27("div", { className: cn("text-muted-foreground text-center font-medium", size === "sm" ? "text-[10px] py-0.5" : "text-xs py-1"), children: day }, day)) }),
4964
+ /* @__PURE__ */ jsx27("div", { className: "grid grid-cols-7 gap-1", children: renderCalendar() }),
4965
+ /* @__PURE__ */ jsx27("div", { className: "flex items-center justify-end mt-2", children: /* @__PURE__ */ jsx27(
4896
4966
  Button_default,
4897
4967
  {
4898
4968
  variant: "outline",
@@ -4917,7 +4987,7 @@ var DatePicker = ({
4917
4987
  const radiusClass = size === "sm" ? "rounded-md" : "rounded-lg";
4918
4988
  const verticalGap = size === "sm" ? "space-y-1.5" : "space-y-2";
4919
4989
  return /* @__PURE__ */ jsxs23("div", { className: cn("w-full group", verticalGap), children: [
4920
- label && /* @__PURE__ */ jsx28("div", { className: "flex items-center justify-between", children: /* @__PURE__ */ jsxs23(
4990
+ label && /* @__PURE__ */ jsx27("div", { className: "flex items-center justify-between", children: /* @__PURE__ */ jsxs23(
4921
4991
  "label",
4922
4992
  {
4923
4993
  id: labelId,
@@ -4929,7 +4999,7 @@ var DatePicker = ({
4929
4999
  ),
4930
5000
  children: [
4931
5001
  label,
4932
- required && /* @__PURE__ */ jsx28("span", { className: "text-destructive ml-1", children: "*" })
5002
+ required && /* @__PURE__ */ jsx27("span", { className: "text-destructive ml-1", children: "*" })
4933
5003
  ]
4934
5004
  }
4935
5005
  ) }),
@@ -4961,8 +5031,8 @@ var DatePicker = ({
4961
5031
  className
4962
5032
  ),
4963
5033
  children: [
4964
- /* @__PURE__ */ jsx28("span", { className: cn("truncate", !value && "text-muted-foreground"), children: value ? formatDateDisplay(value) : placeholder || t("placeholder") }),
4965
- value && /* @__PURE__ */ jsx28(
5034
+ /* @__PURE__ */ jsx27("span", { className: cn("truncate", !value && "text-muted-foreground"), children: value ? formatDateDisplay(value) : placeholder || t("placeholder") }),
5035
+ value && /* @__PURE__ */ jsx27(
4966
5036
  "span",
4967
5037
  {
4968
5038
  role: "button",
@@ -4984,10 +5054,10 @@ var DatePicker = ({
4984
5054
  },
4985
5055
  className: "absolute right-8 inline-flex items-center justify-center rounded-sm text-muted-foreground hover:text-foreground hover:bg-accent/50 transition-colors cursor-pointer",
4986
5056
  style: { width: 20, height: 20 },
4987
- children: /* @__PURE__ */ jsx28(XIcon, { className: "h-3.5 w-3.5" })
5057
+ children: /* @__PURE__ */ jsx27(XIcon, { className: "h-3.5 w-3.5" })
4988
5058
  }
4989
5059
  ),
4990
- /* @__PURE__ */ jsx28(Calendar, { className: "h-4 w-4 text-muted-foreground ml-2" })
5060
+ /* @__PURE__ */ jsx27(Calendar, { className: "h-4 w-4 text-muted-foreground ml-2" })
4991
5061
  ]
4992
5062
  }
4993
5063
  ),
@@ -5072,7 +5142,7 @@ var DateRangePicker = ({ startDate, endDate, onChange, placeholder = "Select dat
5072
5142
  const nodes = [];
5073
5143
  const daysInMonth = getDaysInMonth(viewDate);
5074
5144
  const firstDay = getFirstDayOfMonth(viewDate);
5075
- for (let i = 0; i < firstDay; i++) nodes.push(/* @__PURE__ */ jsx28("div", { className: "w-8 h-8" }, `e-${i}`));
5145
+ for (let i = 0; i < firstDay; i++) nodes.push(/* @__PURE__ */ jsx27("div", { className: "w-8 h-8" }, `e-${i}`));
5076
5146
  for (let d = 1; d <= daysInMonth; d++) {
5077
5147
  const date = new Date(viewDate.getFullYear(), viewDate.getMonth(), d);
5078
5148
  const isSelectedStart = isSameDay2(date, tempStart);
@@ -5097,7 +5167,7 @@ var DateRangePicker = ({ startDate, endDate, onChange, placeholder = "Select dat
5097
5167
  }
5098
5168
  }
5099
5169
  nodes.push(
5100
- /* @__PURE__ */ jsx28(
5170
+ /* @__PURE__ */ jsx27(
5101
5171
  "button",
5102
5172
  {
5103
5173
  onClick: () => handleSelect(date),
@@ -5127,7 +5197,7 @@ var DateRangePicker = ({ startDate, endDate, onChange, placeholder = "Select dat
5127
5197
  }
5128
5198
  return nodes;
5129
5199
  };
5130
- const panel = isOpen && dropdownPosition ? /* @__PURE__ */ jsx28(
5200
+ const panel = isOpen && dropdownPosition ? /* @__PURE__ */ jsx27(
5131
5201
  "div",
5132
5202
  {
5133
5203
  style: { position: "absolute", top: dropdownPosition.top, left: dropdownPosition.left, width: dropdownPosition.width || 256, zIndex: 9999 },
@@ -5144,30 +5214,30 @@ var DateRangePicker = ({ startDate, endDate, onChange, placeholder = "Select dat
5144
5214
  className: cn("rounded-md border bg-popover text-popover-foreground shadow-md", "backdrop-blur-sm bg-popover/95 border-border/60 p-4 w-64"),
5145
5215
  children: [
5146
5216
  /* @__PURE__ */ jsxs23("div", { className: "flex items-center justify-between mb-3", children: [
5147
- /* @__PURE__ */ jsx28(
5217
+ /* @__PURE__ */ jsx27(
5148
5218
  Button_default,
5149
5219
  {
5150
5220
  variant: "ghost",
5151
5221
  size: "sm",
5152
5222
  onClick: () => setViewDate(new Date(viewDate.getFullYear(), viewDate.getMonth() - 1, 1)),
5153
5223
  className: "p-1 h-auto",
5154
- children: /* @__PURE__ */ jsx28(ChevronLeft2, { className: "h-4 w-4" })
5224
+ children: /* @__PURE__ */ jsx27(ChevronLeft2, { className: "h-4 w-4" })
5155
5225
  }
5156
5226
  ),
5157
- /* @__PURE__ */ jsx28("div", { className: "text-sm font-semibold", children: viewDate.toLocaleDateString("en-US", { month: "long", year: "numeric" }) }),
5158
- /* @__PURE__ */ jsx28(
5227
+ /* @__PURE__ */ jsx27("div", { className: "text-sm font-semibold", children: viewDate.toLocaleDateString("en-US", { month: "long", year: "numeric" }) }),
5228
+ /* @__PURE__ */ jsx27(
5159
5229
  Button_default,
5160
5230
  {
5161
5231
  variant: "ghost",
5162
5232
  size: "sm",
5163
5233
  onClick: () => setViewDate(new Date(viewDate.getFullYear(), viewDate.getMonth() + 1, 1)),
5164
5234
  className: "p-1 h-auto",
5165
- children: /* @__PURE__ */ jsx28(ChevronRight3, { className: "h-4 w-4" })
5235
+ children: /* @__PURE__ */ jsx27(ChevronRight3, { className: "h-4 w-4" })
5166
5236
  }
5167
5237
  )
5168
5238
  ] }),
5169
- /* @__PURE__ */ jsx28("div", { className: "grid grid-cols-7 gap-1 mb-2", children: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"].map((d) => /* @__PURE__ */ jsx28("div", { className: "text-xs text-muted-foreground text-center py-1 font-medium", children: d }, d)) }),
5170
- /* @__PURE__ */ jsx28("div", { className: "grid grid-cols-7", children: renderGrid() })
5239
+ /* @__PURE__ */ jsx27("div", { className: "grid grid-cols-7 gap-1 mb-2", children: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"].map((d) => /* @__PURE__ */ jsx27("div", { className: "text-xs text-muted-foreground text-center py-1 font-medium", children: d }, d)) }),
5240
+ /* @__PURE__ */ jsx27("div", { className: "grid grid-cols-7", children: renderGrid() })
5171
5241
  ]
5172
5242
  }
5173
5243
  )
@@ -5195,8 +5265,8 @@ var DateRangePicker = ({ startDate, endDate, onChange, placeholder = "Select dat
5195
5265
  className
5196
5266
  ),
5197
5267
  children: [
5198
- /* @__PURE__ */ jsx28("span", { className: cn("truncate", !tempStart && !tempEnd && "text-muted-foreground"), children: label }),
5199
- /* @__PURE__ */ jsx28(Calendar, { className: "h-4 w-4 text-muted-foreground ml-2" })
5268
+ /* @__PURE__ */ jsx27("span", { className: cn("truncate", !tempStart && !tempEnd && "text-muted-foreground"), children: label }),
5269
+ /* @__PURE__ */ jsx27(Calendar, { className: "h-4 w-4 text-muted-foreground ml-2" })
5200
5270
  ]
5201
5271
  }
5202
5272
  ),
@@ -5207,7 +5277,7 @@ var DateRangePicker = ({ startDate, endDate, onChange, placeholder = "Select dat
5207
5277
  // ../../components/ui/TimePicker.tsx
5208
5278
  import * as React22 from "react";
5209
5279
  import { Clock as Clock2, X as X8, Check as Check4 } from "lucide-react";
5210
- import { Fragment as Fragment7, jsx as jsx29, jsxs as jsxs24 } from "react/jsx-runtime";
5280
+ import { Fragment as Fragment7, jsx as jsx28, jsxs as jsxs24 } from "react/jsx-runtime";
5211
5281
  var pad = (n) => n.toString().padStart(2, "0");
5212
5282
  function parseTime(input, fmt = "24", includeSeconds) {
5213
5283
  if (!input) return null;
@@ -5475,16 +5545,16 @@ function TimePicker({
5475
5545
  ),
5476
5546
  children: [
5477
5547
  /* @__PURE__ */ jsxs24("div", { className: "flex items-center gap-2", children: [
5478
- /* @__PURE__ */ jsx29(Clock2, { className: cn(sz.icon, error ? "text-destructive" : success ? "text-green-500" : "text-muted-foreground") }),
5479
- /* @__PURE__ */ jsx29("span", { className: cn("truncate", !value && !defaultValue && "text-muted-foreground"), children: value || defaultValue ? display : placeholder })
5548
+ /* @__PURE__ */ jsx28(Clock2, { className: cn(sz.icon, error ? "text-destructive" : success ? "text-green-500" : "text-muted-foreground") }),
5549
+ /* @__PURE__ */ jsx28("span", { className: cn("truncate", !value && !defaultValue && "text-muted-foreground"), children: value || defaultValue ? display : placeholder })
5480
5550
  ] }),
5481
- /* @__PURE__ */ jsx29("span", { className: cn("ml-2 transition-transform duration-200", open && "rotate-180"), children: /* @__PURE__ */ jsx29("svg", { className: sz.icon, fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ jsx29("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M19 9l-7 7-7-7" }) }) })
5551
+ /* @__PURE__ */ jsx28("span", { className: cn("ml-2 transition-transform duration-200", open && "rotate-180"), children: /* @__PURE__ */ jsx28("svg", { className: sz.icon, fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ jsx28("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M19 9l-7 7-7-7" }) }) })
5482
5552
  ]
5483
5553
  }
5484
5554
  );
5485
5555
  const contentWidth = variant === "compact" ? 240 : variant === "inline" ? 320 : includeSeconds ? 340 : 300;
5486
5556
  const timePickerContent = /* @__PURE__ */ jsxs24("div", { className: "space-y-3", children: [
5487
- allowManualInput && /* @__PURE__ */ jsx29("div", { children: /* @__PURE__ */ jsx29(
5557
+ allowManualInput && /* @__PURE__ */ jsx28("div", { children: /* @__PURE__ */ jsx28(
5488
5558
  Input_default,
5489
5559
  {
5490
5560
  placeholder: format === "12" ? "02:30 PM" : "14:30",
@@ -5494,7 +5564,7 @@ function TimePicker({
5494
5564
  variant: "outlined"
5495
5565
  }
5496
5566
  ) }),
5497
- showPresets && /* @__PURE__ */ jsx29("div", { className: "grid grid-cols-2 gap-2", children: Object.keys(PRESETS).map((preset) => /* @__PURE__ */ jsx29(
5567
+ showPresets && /* @__PURE__ */ jsx28("div", { className: "grid grid-cols-2 gap-2", children: Object.keys(PRESETS).map((preset) => /* @__PURE__ */ jsx28(
5498
5568
  "button",
5499
5569
  {
5500
5570
  type: "button",
@@ -5508,7 +5578,7 @@ function TimePicker({
5508
5578
  },
5509
5579
  preset
5510
5580
  )) }),
5511
- customPresets && customPresets.length > 0 && /* @__PURE__ */ jsx29("div", { className: "grid grid-cols-2 gap-2", children: customPresets.map((preset, idx) => /* @__PURE__ */ jsx29(
5581
+ customPresets && customPresets.length > 0 && /* @__PURE__ */ jsx28("div", { className: "grid grid-cols-2 gap-2", children: customPresets.map((preset, idx) => /* @__PURE__ */ jsx28(
5512
5582
  "button",
5513
5583
  {
5514
5584
  type: "button",
@@ -5524,8 +5594,8 @@ function TimePicker({
5524
5594
  )) }),
5525
5595
  /* @__PURE__ */ jsxs24("div", { className: "flex gap-3", children: [
5526
5596
  /* @__PURE__ */ jsxs24("div", { className: "flex-1 min-w-[70px]", children: [
5527
- /* @__PURE__ */ jsx29("div", { className: "text-xs font-semibold text-muted-foreground mb-2 text-center", children: "Hour" }),
5528
- /* @__PURE__ */ jsx29(
5597
+ /* @__PURE__ */ jsx28("div", { className: "text-xs font-semibold text-muted-foreground mb-2 text-center", children: "Hour" }),
5598
+ /* @__PURE__ */ jsx28(
5529
5599
  "div",
5530
5600
  {
5531
5601
  ref: hourScrollRef,
@@ -5537,7 +5607,7 @@ function TimePicker({
5537
5607
  onFocus: () => setFocusedColumn("hour"),
5538
5608
  children: hours.map((h) => {
5539
5609
  const isSelected = format === "24" && parts.h === h || format === "12" && (parts.h % 12 || 12) === (h % 12 || 12);
5540
- return /* @__PURE__ */ jsx29(
5610
+ return /* @__PURE__ */ jsx28(
5541
5611
  "button",
5542
5612
  {
5543
5613
  type: "button",
@@ -5564,10 +5634,10 @@ function TimePicker({
5564
5634
  }
5565
5635
  )
5566
5636
  ] }),
5567
- /* @__PURE__ */ jsx29("div", { className: "w-px bg-border/50 self-stretch my-8" }),
5637
+ /* @__PURE__ */ jsx28("div", { className: "w-px bg-border/50 self-stretch my-8" }),
5568
5638
  /* @__PURE__ */ jsxs24("div", { className: "flex-1 min-w-[70px]", children: [
5569
- /* @__PURE__ */ jsx29("div", { className: "text-xs font-semibold text-muted-foreground mb-2 text-center", children: "Min" }),
5570
- /* @__PURE__ */ jsx29(
5639
+ /* @__PURE__ */ jsx28("div", { className: "text-xs font-semibold text-muted-foreground mb-2 text-center", children: "Min" }),
5640
+ /* @__PURE__ */ jsx28(
5571
5641
  "div",
5572
5642
  {
5573
5643
  ref: minuteScrollRef,
@@ -5579,7 +5649,7 @@ function TimePicker({
5579
5649
  onFocus: () => setFocusedColumn("minute"),
5580
5650
  children: minutes.map((m) => {
5581
5651
  const isSelected = parts.m === m;
5582
- return /* @__PURE__ */ jsx29(
5652
+ return /* @__PURE__ */ jsx28(
5583
5653
  "button",
5584
5654
  {
5585
5655
  type: "button",
@@ -5605,11 +5675,11 @@ function TimePicker({
5605
5675
  }
5606
5676
  )
5607
5677
  ] }),
5608
- /* @__PURE__ */ jsx29("div", { className: "w-px bg-border/50 self-stretch my-8" }),
5678
+ /* @__PURE__ */ jsx28("div", { className: "w-px bg-border/50 self-stretch my-8" }),
5609
5679
  includeSeconds && /* @__PURE__ */ jsxs24(Fragment7, { children: [
5610
5680
  /* @__PURE__ */ jsxs24("div", { className: "flex-1 min-w-[70px]", children: [
5611
- /* @__PURE__ */ jsx29("div", { className: "text-xs font-semibold text-muted-foreground mb-2 text-center", children: "Sec" }),
5612
- /* @__PURE__ */ jsx29(
5681
+ /* @__PURE__ */ jsx28("div", { className: "text-xs font-semibold text-muted-foreground mb-2 text-center", children: "Sec" }),
5682
+ /* @__PURE__ */ jsx28(
5613
5683
  "div",
5614
5684
  {
5615
5685
  ref: secondScrollRef,
@@ -5621,7 +5691,7 @@ function TimePicker({
5621
5691
  onFocus: () => setFocusedColumn("second"),
5622
5692
  children: seconds.map((s) => {
5623
5693
  const isSelected = parts.s === s;
5624
- return /* @__PURE__ */ jsx29(
5694
+ return /* @__PURE__ */ jsx28(
5625
5695
  "button",
5626
5696
  {
5627
5697
  type: "button",
@@ -5647,11 +5717,11 @@ function TimePicker({
5647
5717
  }
5648
5718
  )
5649
5719
  ] }),
5650
- /* @__PURE__ */ jsx29("div", { className: "w-px bg-border/50 self-stretch my-8" })
5720
+ /* @__PURE__ */ jsx28("div", { className: "w-px bg-border/50 self-stretch my-8" })
5651
5721
  ] }),
5652
5722
  format === "12" && /* @__PURE__ */ jsxs24("div", { className: "w-20", children: [
5653
- /* @__PURE__ */ jsx29("div", { className: "text-xs font-semibold text-muted-foreground mb-2 text-center", children: "Period" }),
5654
- /* @__PURE__ */ jsx29(
5723
+ /* @__PURE__ */ jsx28("div", { className: "text-xs font-semibold text-muted-foreground mb-2 text-center", children: "Period" }),
5724
+ /* @__PURE__ */ jsx28(
5655
5725
  "div",
5656
5726
  {
5657
5727
  className: "flex flex-col gap-2",
@@ -5662,7 +5732,7 @@ function TimePicker({
5662
5732
  onFocus: () => setFocusedColumn("period"),
5663
5733
  children: ["AM", "PM"].map((p) => {
5664
5734
  const isSelected = parts.p === p;
5665
- return /* @__PURE__ */ jsx29(
5735
+ return /* @__PURE__ */ jsx28(
5666
5736
  "button",
5667
5737
  {
5668
5738
  type: "button",
@@ -5708,12 +5778,12 @@ function TimePicker({
5708
5778
  },
5709
5779
  "aria-label": "Set current time",
5710
5780
  children: [
5711
- /* @__PURE__ */ jsx29(Clock2, { className: "w-3.5 h-3.5" }),
5781
+ /* @__PURE__ */ jsx28(Clock2, { className: "w-3.5 h-3.5" }),
5712
5782
  "Now"
5713
5783
  ]
5714
5784
  }
5715
5785
  ),
5716
- /* @__PURE__ */ jsx29("div", { className: "flex-1" }),
5786
+ /* @__PURE__ */ jsx28("div", { className: "flex-1" }),
5717
5787
  clearable && /* @__PURE__ */ jsxs24(
5718
5788
  "button",
5719
5789
  {
@@ -5729,7 +5799,7 @@ function TimePicker({
5729
5799
  },
5730
5800
  "aria-label": "Clear selected time",
5731
5801
  children: [
5732
- /* @__PURE__ */ jsx29(X8, { className: "w-3.5 h-3.5" }),
5802
+ /* @__PURE__ */ jsx28(X8, { className: "w-3.5 h-3.5" }),
5733
5803
  "Clear"
5734
5804
  ]
5735
5805
  }
@@ -5738,26 +5808,26 @@ function TimePicker({
5738
5808
  ] });
5739
5809
  if (variant === "inline") {
5740
5810
  return /* @__PURE__ */ jsxs24("div", { className: "w-full", ...rest, children: [
5741
- label && /* @__PURE__ */ jsx29("div", { className: "flex items-center justify-between mb-2", children: /* @__PURE__ */ jsxs24("label", { className: cn(sz.label, "font-medium", disabled ? "text-muted-foreground" : "text-foreground"), children: [
5811
+ label && /* @__PURE__ */ jsx28("div", { className: "flex items-center justify-between mb-2", children: /* @__PURE__ */ jsxs24("label", { className: cn(sz.label, "font-medium", disabled ? "text-muted-foreground" : "text-foreground"), children: [
5742
5812
  label,
5743
- required && /* @__PURE__ */ jsx29("span", { className: "text-destructive ml-1", children: "*" })
5813
+ required && /* @__PURE__ */ jsx28("span", { className: "text-destructive ml-1", children: "*" })
5744
5814
  ] }) }),
5745
- /* @__PURE__ */ jsx29("div", { className: cn("p-3 rounded-lg border border-border bg-card shadow-sm", className), children: timePickerContent })
5815
+ /* @__PURE__ */ jsx28("div", { className: cn("p-3 rounded-lg border border-border bg-card shadow-sm", className), children: timePickerContent })
5746
5816
  ] });
5747
5817
  }
5748
5818
  return /* @__PURE__ */ jsxs24("div", { className: "w-full", ...rest, children: [
5749
- label && /* @__PURE__ */ jsx29("div", { className: "flex items-center justify-between mb-1.5", children: /* @__PURE__ */ jsxs24(
5819
+ label && /* @__PURE__ */ jsx28("div", { className: "flex items-center justify-between mb-1.5", children: /* @__PURE__ */ jsxs24(
5750
5820
  "label",
5751
5821
  {
5752
5822
  className: cn(sz.label, "font-medium", disabled ? "text-muted-foreground" : "text-foreground", "cursor-pointer"),
5753
5823
  onClick: () => !disabled && handleOpenChange(true),
5754
5824
  children: [
5755
5825
  label,
5756
- required && /* @__PURE__ */ jsx29("span", { className: "text-destructive ml-1", children: "*" })
5826
+ required && /* @__PURE__ */ jsx28("span", { className: "text-destructive ml-1", children: "*" })
5757
5827
  ]
5758
5828
  }
5759
5829
  ) }),
5760
- /* @__PURE__ */ jsx29(
5830
+ /* @__PURE__ */ jsx28(
5761
5831
  Popover,
5762
5832
  {
5763
5833
  trigger,
@@ -5778,14 +5848,14 @@ function TimePicker({
5778
5848
  ),
5779
5849
  (error || success || helperText) && /* @__PURE__ */ jsxs24("div", { className: cn("mt-1.5 flex items-start gap-1.5", sz.label), children: [
5780
5850
  error && /* @__PURE__ */ jsxs24("div", { className: "flex items-center gap-1.5 text-destructive", children: [
5781
- /* @__PURE__ */ jsx29(X8, { className: "w-3.5 h-3.5 flex-shrink-0" }),
5782
- /* @__PURE__ */ jsx29("span", { children: error })
5851
+ /* @__PURE__ */ jsx28(X8, { className: "w-3.5 h-3.5 flex-shrink-0" }),
5852
+ /* @__PURE__ */ jsx28("span", { children: error })
5783
5853
  ] }),
5784
5854
  success && !error && /* @__PURE__ */ jsxs24("div", { className: "flex items-center gap-1.5 text-green-600", children: [
5785
- /* @__PURE__ */ jsx29(Check4, { className: "w-3.5 h-3.5 flex-shrink-0" }),
5786
- /* @__PURE__ */ jsx29("span", { children: "Valid time selected" })
5855
+ /* @__PURE__ */ jsx28(Check4, { className: "w-3.5 h-3.5 flex-shrink-0" }),
5856
+ /* @__PURE__ */ jsx28("span", { children: "Valid time selected" })
5787
5857
  ] }),
5788
- helperText && !error && !success && /* @__PURE__ */ jsx29("span", { className: "text-muted-foreground", children: helperText })
5858
+ helperText && !error && !success && /* @__PURE__ */ jsx28("span", { className: "text-muted-foreground", children: helperText })
5789
5859
  ] })
5790
5860
  ] });
5791
5861
  }
@@ -5793,7 +5863,7 @@ function TimePicker({
5793
5863
  // ../../components/ui/Calendar.tsx
5794
5864
  import * as React23 from "react";
5795
5865
  import { ChevronLeft as ChevronLeft3, ChevronRight as ChevronRight4 } from "lucide-react";
5796
- import { Fragment as Fragment9, jsx as jsx30, jsxs as jsxs25 } from "react/jsx-runtime";
5866
+ import { Fragment as Fragment9, jsx as jsx29, jsxs as jsxs25 } from "react/jsx-runtime";
5797
5867
  function startOfMonth(d) {
5798
5868
  return new Date(d.getFullYear(), d.getMonth(), 1);
5799
5869
  }
@@ -5975,9 +6045,9 @@ function Calendar2({
5975
6045
  const monthDays = getMonthGrid(monthDate, weekStartsOn);
5976
6046
  const monthLabel = labels?.month ? labels.month(monthDate) : monthDate.toLocaleDateString("en-US", { month: "long", year: "numeric" });
5977
6047
  return /* @__PURE__ */ jsxs25("div", { children: [
5978
- months > 1 && /* @__PURE__ */ jsx30("div", { className: "flex items-center justify-center mb-2 text-sm font-semibold", children: monthLabel }),
5979
- showWeekdays && /* @__PURE__ */ jsx30("div", { className: cn("grid grid-cols-7", sz.grid, "mb-1 text-center text-muted-foreground font-medium"), children: weekdays.map((w) => /* @__PURE__ */ jsx30("div", { className: cn(sz.head), children: w }, `${monthLabel}-${w}`)) }),
5980
- /* @__PURE__ */ jsx30("div", { className: cn("grid grid-cols-7", sz.grid), children: monthDays.map((d, idx) => {
6048
+ months > 1 && /* @__PURE__ */ jsx29("div", { className: "flex items-center justify-center mb-2 text-sm font-semibold", children: monthLabel }),
6049
+ showWeekdays && /* @__PURE__ */ jsx29("div", { className: cn("grid grid-cols-7", sz.grid, "mb-1 text-center text-muted-foreground font-medium"), children: weekdays.map((w) => /* @__PURE__ */ jsx29("div", { className: cn(sz.head), children: w }, `${monthLabel}-${w}`)) }),
6050
+ /* @__PURE__ */ jsx29("div", { className: cn("grid grid-cols-7", sz.grid), children: monthDays.map((d, idx) => {
5981
6051
  const inMonth = d.getMonth() === monthDate.getMonth();
5982
6052
  const isToday2 = isSameDay(d, today);
5983
6053
  const selectedDay = isSelected(d);
@@ -6001,7 +6071,7 @@ function Calendar2({
6001
6071
  title: d.toDateString(),
6002
6072
  children: [
6003
6073
  d.getDate(),
6004
- dayEvents.length > 0 && /* @__PURE__ */ jsx30("span", { className: "absolute -bottom-1 inline-flex gap-0.5", children: dayEvents.slice(0, 3).map((e, i) => /* @__PURE__ */ jsx30("span", { className: "h-1.5 w-1.5 rounded-full", style: { backgroundColor: e.color || "hsl(var(--primary))" } }, i)) })
6074
+ dayEvents.length > 0 && /* @__PURE__ */ jsx29("span", { className: "absolute -bottom-1 inline-flex gap-0.5", children: dayEvents.slice(0, 3).map((e, i) => /* @__PURE__ */ jsx29("span", { className: "h-1.5 w-1.5 rounded-full", style: { backgroundColor: e.color || "hsl(var(--primary))" } }, i)) })
6005
6075
  ]
6006
6076
  },
6007
6077
  `${monthLabel}-${idx}`
@@ -6033,13 +6103,13 @@ function Calendar2({
6033
6103
  }, [display, view, weekStartsOn, maxBound]);
6034
6104
  return /* @__PURE__ */ jsxs25("div", { className: cn("w-full", className), ...rest, children: [
6035
6105
  showHeader && /* @__PURE__ */ jsxs25("div", { className: "flex items-center justify-between mb-2", children: [
6036
- /* @__PURE__ */ jsx30("button", { onClick: () => goByView(-1), disabled: prevDisabled, className: cn("p-1 rounded-md hover:bg-accent", prevDisabled && "opacity-40 cursor-not-allowed hover:bg-transparent"), "aria-label": labels?.prev || (display === "week" ? "Previous week" : "Previous month"), children: /* @__PURE__ */ jsx30(ChevronLeft3, { className: "h-4 w-4" }) }),
6037
- /* @__PURE__ */ jsx30("div", { className: "text-sm font-semibold", children: display === "week" ? `${labels?.month ? labels.month(weekDays[0]) : weekDays[0].toLocaleDateString("en-US", { month: "short" })} ${weekDays[0].getDate()} \u2013 ${labels?.month ? labels.month(weekDays[6]) : weekDays[6].toLocaleDateString("en-US", { month: "short" })} ${weekDays[6].getDate()}` : labels?.month ? labels.month(view) : view.toLocaleDateString("en-US", { month: "long", year: "numeric" }) }),
6038
- /* @__PURE__ */ jsx30("button", { onClick: () => goByView(1), disabled: nextDisabled, className: cn("p-1 rounded-md hover:bg-accent", nextDisabled && "opacity-40 cursor-not-allowed hover:bg-transparent"), "aria-label": labels?.next || (display === "week" ? "Next week" : "Next month"), children: /* @__PURE__ */ jsx30(ChevronRight4, { className: "h-4 w-4" }) })
6106
+ /* @__PURE__ */ jsx29("button", { onClick: () => goByView(-1), disabled: prevDisabled, className: cn("p-1 rounded-md hover:bg-accent", prevDisabled && "opacity-40 cursor-not-allowed hover:bg-transparent"), "aria-label": labels?.prev || (display === "week" ? "Previous week" : "Previous month"), children: /* @__PURE__ */ jsx29(ChevronLeft3, { className: "h-4 w-4" }) }),
6107
+ /* @__PURE__ */ jsx29("div", { className: "text-sm font-semibold", children: display === "week" ? `${labels?.month ? labels.month(weekDays[0]) : weekDays[0].toLocaleDateString("en-US", { month: "short" })} ${weekDays[0].getDate()} \u2013 ${labels?.month ? labels.month(weekDays[6]) : weekDays[6].toLocaleDateString("en-US", { month: "short" })} ${weekDays[6].getDate()}` : labels?.month ? labels.month(view) : view.toLocaleDateString("en-US", { month: "long", year: "numeric" }) }),
6108
+ /* @__PURE__ */ jsx29("button", { onClick: () => goByView(1), disabled: nextDisabled, className: cn("p-1 rounded-md hover:bg-accent", nextDisabled && "opacity-40 cursor-not-allowed hover:bg-transparent"), "aria-label": labels?.next || (display === "week" ? "Next week" : "Next month"), children: /* @__PURE__ */ jsx29(ChevronRight4, { className: "h-4 w-4" }) })
6039
6109
  ] }),
6040
6110
  display === "week" ? /* @__PURE__ */ jsxs25(Fragment9, { children: [
6041
- showWeekdays && /* @__PURE__ */ jsx30("div", { className: cn("grid grid-cols-7", sz.grid, "mb-1 text-center text-muted-foreground font-medium"), children: weekdays.map((w) => /* @__PURE__ */ jsx30("div", { className: cn(sz.head), children: w }, `w-${w}`)) }),
6042
- /* @__PURE__ */ jsx30("div", { className: cn("grid grid-cols-7", sz.grid), children: weekDays.map((d, idx) => {
6111
+ showWeekdays && /* @__PURE__ */ jsx29("div", { className: cn("grid grid-cols-7", sz.grid, "mb-1 text-center text-muted-foreground font-medium"), children: weekdays.map((w) => /* @__PURE__ */ jsx29("div", { className: cn(sz.head), children: w }, `w-${w}`)) }),
6112
+ /* @__PURE__ */ jsx29("div", { className: cn("grid grid-cols-7", sz.grid), children: weekDays.map((d, idx) => {
6043
6113
  const inMonth = true;
6044
6114
  const isToday2 = isSameDay(d, today);
6045
6115
  const selectedDay = isSelected(d);
@@ -6062,13 +6132,13 @@ function Calendar2({
6062
6132
  title: d.toDateString(),
6063
6133
  children: [
6064
6134
  d.getDate(),
6065
- dayEvents.length > 0 && /* @__PURE__ */ jsx30("span", { className: "absolute -bottom-1 inline-flex gap-0.5", children: dayEvents.slice(0, 3).map((e, i) => /* @__PURE__ */ jsx30("span", { className: "h-1.5 w-1.5 rounded-full", style: { backgroundColor: e.color || "hsl(var(--primary))" } }, i)) })
6135
+ dayEvents.length > 0 && /* @__PURE__ */ jsx29("span", { className: "absolute -bottom-1 inline-flex gap-0.5", children: dayEvents.slice(0, 3).map((e, i) => /* @__PURE__ */ jsx29("span", { className: "h-1.5 w-1.5 rounded-full", style: { backgroundColor: e.color || "hsl(var(--primary))" } }, i)) })
6066
6136
  ]
6067
6137
  },
6068
6138
  `wd-${idx}`
6069
6139
  );
6070
6140
  }) })
6071
- ] }) : /* @__PURE__ */ jsx30("div", { className: cn(months > 1 ? "grid md:grid-cols-2 lg:grid-cols-3 gap-4" : ""), children: Array.from({ length: Math.max(1, months) }, (_, i) => /* @__PURE__ */ jsx30(React23.Fragment, { children: renderMonth(addMonths(view, i)) }, `cal-month-${view.getFullYear()}-${view.getMonth()}-${i}`)) })
6141
+ ] }) : /* @__PURE__ */ jsx29("div", { className: cn(months > 1 ? "grid md:grid-cols-2 lg:grid-cols-3 gap-4" : ""), children: Array.from({ length: Math.max(1, months) }, (_, i) => /* @__PURE__ */ jsx29(React23.Fragment, { children: renderMonth(addMonths(view, i)) }, `cal-month-${view.getFullYear()}-${view.getMonth()}-${i}`)) })
6072
6142
  ] });
6073
6143
  }
6074
6144
 
@@ -6077,7 +6147,7 @@ import * as React24 from "react";
6077
6147
  import { useId as useId4 } from "react";
6078
6148
  import { createPortal as createPortal8 } from "react-dom";
6079
6149
  import { ChevronDown as ChevronDown2, Search as Search3, Check as Check5, SearchX as SearchX2, Loader2 as Loader23 } from "lucide-react";
6080
- import { jsx as jsx31, jsxs as jsxs26 } from "react/jsx-runtime";
6150
+ import { jsx as jsx30, jsxs as jsxs26 } from "react/jsx-runtime";
6081
6151
  var MultiCombobox = ({
6082
6152
  id,
6083
6153
  options,
@@ -6223,7 +6293,7 @@ var MultiCombobox = ({
6223
6293
  const labelId = label ? `${resolvedId}-label` : void 0;
6224
6294
  const labelSize = size === "sm" ? "text-xs" : size === "lg" ? "text-base" : "text-sm";
6225
6295
  return /* @__PURE__ */ jsxs26("div", { className: cn("w-full space-y-2 group", className), children: [
6226
- title && /* @__PURE__ */ jsx31("div", { className: "flex items-center justify-between", children: /* @__PURE__ */ jsxs26(
6296
+ title && /* @__PURE__ */ jsx30("div", { className: "flex items-center justify-between", children: /* @__PURE__ */ jsxs26(
6227
6297
  "label",
6228
6298
  {
6229
6299
  className: cn(
@@ -6233,7 +6303,7 @@ var MultiCombobox = ({
6233
6303
  ),
6234
6304
  children: [
6235
6305
  title,
6236
- required && /* @__PURE__ */ jsx31("span", { className: "text-destructive ml-1", children: "*" })
6306
+ required && /* @__PURE__ */ jsx30("span", { className: "text-destructive ml-1", children: "*" })
6237
6307
  ]
6238
6308
  }
6239
6309
  ) }),
@@ -6249,11 +6319,11 @@ var MultiCombobox = ({
6249
6319
  ),
6250
6320
  children: [
6251
6321
  label,
6252
- required && /* @__PURE__ */ jsx31("span", { className: "text-destructive ml-1", children: "*" })
6322
+ required && /* @__PURE__ */ jsx30("span", { className: "text-destructive ml-1", children: "*" })
6253
6323
  ]
6254
6324
  }
6255
6325
  ),
6256
- /* @__PURE__ */ jsx31("div", { className: "relative w-full" }),
6326
+ /* @__PURE__ */ jsx30("div", { className: "relative w-full" }),
6257
6327
  /* @__PURE__ */ jsxs26(
6258
6328
  "button",
6259
6329
  {
@@ -6277,11 +6347,11 @@ var MultiCombobox = ({
6277
6347
  "disabled:cursor-not-allowed disabled:opacity-50"
6278
6348
  ),
6279
6349
  children: [
6280
- /* @__PURE__ */ jsx31("div", { className: "flex items-center gap-1 flex-wrap min-h-[1.5rem] flex-1", children: value.length > 0 ? showTags ? value.map((itemValue) => {
6350
+ /* @__PURE__ */ jsx30("div", { className: "flex items-center gap-1 flex-wrap min-h-[1.5rem] flex-1", children: value.length > 0 ? showTags ? value.map((itemValue) => {
6281
6351
  const option = normalizedOptions.find((o) => o.value === itemValue);
6282
6352
  return /* @__PURE__ */ jsxs26("span", { className: "inline-flex items-center gap-1 bg-accent text-accent-foreground rounded px-2 py-1 text-xs", children: [
6283
- /* @__PURE__ */ jsx31("span", { className: "truncate max-w-[120px]", children: option ? displayFormat(option) : itemValue }),
6284
- /* @__PURE__ */ jsx31(
6353
+ /* @__PURE__ */ jsx30("span", { className: "truncate max-w-[120px]", children: option ? displayFormat(option) : itemValue }),
6354
+ /* @__PURE__ */ jsx30(
6285
6355
  "span",
6286
6356
  {
6287
6357
  role: "button",
@@ -6307,8 +6377,8 @@ var MultiCombobox = ({
6307
6377
  }) : /* @__PURE__ */ jsxs26("span", { className: "truncate text-sm", children: [
6308
6378
  value.length,
6309
6379
  " selected"
6310
- ] }) : /* @__PURE__ */ jsx31("span", { className: "text-muted-foreground", children: placeholder || "Select..." }) }),
6311
- /* @__PURE__ */ jsx31(
6380
+ ] }) : /* @__PURE__ */ jsx30("span", { className: "text-muted-foreground", children: placeholder || "Select..." }) }),
6381
+ /* @__PURE__ */ jsx30(
6312
6382
  ChevronDown2,
6313
6383
  {
6314
6384
  className: cn("opacity-50 transition-all duration-200", sizeStyles8[size].icon, open && "rotate-180 scale-110 text-primary opacity-100")
@@ -6318,30 +6388,27 @@ var MultiCombobox = ({
6318
6388
  }
6319
6389
  ),
6320
6390
  open && dropdownPosition && typeof window !== "undefined" ? createPortal8(
6321
- /* @__PURE__ */ jsx31(
6391
+ /* @__PURE__ */ jsx30(
6322
6392
  "div",
6323
6393
  {
6324
6394
  ref: dropdownRef,
6325
- "data-dropdown": "multicombobox",
6395
+ "data-combobox-dropdown": true,
6326
6396
  style: {
6327
6397
  position: "absolute",
6328
6398
  top: dropdownPosition?.top || 0,
6329
6399
  left: dropdownPosition?.left || 0,
6330
6400
  width: dropdownPosition?.width || 200,
6331
- zIndex: 9999
6401
+ zIndex: 9999,
6402
+ transformOrigin: "top center"
6332
6403
  },
6333
6404
  "data-state": open ? "open" : "closed",
6334
- className: cn(
6335
- "z-[9999]",
6336
- "data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95",
6337
- "data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95"
6338
- ),
6405
+ className: "z-9999",
6339
6406
  children: /* @__PURE__ */ jsxs26(
6340
6407
  "div",
6341
6408
  {
6342
6409
  className: cn("rounded-md border bg-popover text-popover-foreground shadow-md", "backdrop-blur-sm bg-popover/95 border-border/60"),
6343
6410
  children: [
6344
- showClear && value.length > 0 && /* @__PURE__ */ jsx31("div", { className: "px-3 py-2 border-b border-border/60 flex justify-end", children: /* @__PURE__ */ jsx31(
6411
+ showClear && value.length > 0 && /* @__PURE__ */ jsx30("div", { className: "px-3 py-2 border-b border-border/60 flex justify-end", children: /* @__PURE__ */ jsx30(
6345
6412
  "button",
6346
6413
  {
6347
6414
  type: "button",
@@ -6355,8 +6422,8 @@ var MultiCombobox = ({
6355
6422
  }
6356
6423
  ) }),
6357
6424
  enableSearch && /* @__PURE__ */ jsxs26("div", { className: "relative border-b border-border/60", children: [
6358
- /* @__PURE__ */ jsx31(Search3, { className: cn("absolute left-2 top-2.5 text-muted-foreground", sizeStyles8[size].icon) }),
6359
- /* @__PURE__ */ jsx31(
6425
+ /* @__PURE__ */ jsx30(Search3, { className: cn("absolute left-2 top-2.5 text-muted-foreground", sizeStyles8[size].icon) }),
6426
+ /* @__PURE__ */ jsx30(
6360
6427
  "input",
6361
6428
  {
6362
6429
  ref: inputRef,
@@ -6371,9 +6438,9 @@ var MultiCombobox = ({
6371
6438
  }
6372
6439
  )
6373
6440
  ] }),
6374
- /* @__PURE__ */ jsx31("ul", { className: cn("max-h-60 overflow-y-auto p-1", size === "lg" ? "text-base" : size === "sm" ? "text-xs" : "text-sm"), children: loading2 ? /* @__PURE__ */ jsx31("li", { className: "px-3 py-8 text-center", children: /* @__PURE__ */ jsxs26("div", { className: "flex flex-col items-center gap-2 animate-in fade-in-0 zoom-in-95 duration-300", children: [
6375
- /* @__PURE__ */ jsx31(Loader23, { className: "h-6 w-6 animate-spin text-primary" }),
6376
- /* @__PURE__ */ jsx31("span", { className: "text-muted-foreground", children: loadingText })
6441
+ /* @__PURE__ */ jsx30("ul", { className: cn("max-h-60 overflow-y-auto p-1", size === "lg" ? "text-base" : size === "sm" ? "text-xs" : "text-sm"), children: loading2 ? /* @__PURE__ */ jsx30("li", { className: "px-3 py-8 text-center", children: /* @__PURE__ */ jsxs26("div", { className: "flex flex-col items-center gap-2 animate-in fade-in-0 zoom-in-95 duration-300", children: [
6442
+ /* @__PURE__ */ jsx30(Loader23, { className: "h-6 w-6 animate-spin text-primary" }),
6443
+ /* @__PURE__ */ jsx30("span", { className: "text-muted-foreground", children: loadingText })
6377
6444
  ] }) }) : filtered.length ? filtered.map((item, index) => {
6378
6445
  const isSelected = value.includes(item.value);
6379
6446
  const isDisabled = disabledOptions.includes(item.value);
@@ -6390,7 +6457,7 @@ var MultiCombobox = ({
6390
6457
  inputRef.current?.focus();
6391
6458
  },
6392
6459
  style: {
6393
- animationDelay: open ? `${index * 25}ms` : "0ms"
6460
+ animationDelay: open ? `${Math.min(index * 20, 200)}ms` : "0ms"
6394
6461
  },
6395
6462
  className: cn(
6396
6463
  "dropdown-item flex cursor-pointer items-center justify-between rounded-sm transition-colors",
@@ -6401,12 +6468,12 @@ var MultiCombobox = ({
6401
6468
  ),
6402
6469
  children: [
6403
6470
  item.label,
6404
- isSelected && /* @__PURE__ */ jsx31(Check5, { className: sizeStyles8[size].icon })
6471
+ isSelected && /* @__PURE__ */ jsx30(Check5, { className: sizeStyles8[size].icon })
6405
6472
  ]
6406
6473
  },
6407
6474
  item.value
6408
6475
  );
6409
- }) : /* @__PURE__ */ jsx31(
6476
+ }) : /* @__PURE__ */ jsx30(
6410
6477
  "li",
6411
6478
  {
6412
6479
  className: cn(
@@ -6414,9 +6481,9 @@ var MultiCombobox = ({
6414
6481
  size === "lg" ? "text-base" : size === "sm" ? "text-xs" : "text-sm"
6415
6482
  ),
6416
6483
  children: /* @__PURE__ */ jsxs26("div", { className: "flex flex-col items-center gap-2 animate-in fade-in-0 zoom-in-95 duration-300", children: [
6417
- /* @__PURE__ */ jsx31(SearchX2, { className: "h-8 w-8 opacity-40 text-muted-foreground" }),
6418
- /* @__PURE__ */ jsx31("span", { children: emptyText }),
6419
- query && /* @__PURE__ */ jsx31("button", { type: "button", onClick: () => setQuery(""), className: "text-xs text-primary hover:underline", children: "Clear search" })
6484
+ /* @__PURE__ */ jsx30(SearchX2, { className: "h-8 w-8 opacity-40 text-muted-foreground" }),
6485
+ /* @__PURE__ */ jsx30("span", { children: emptyText }),
6486
+ query && /* @__PURE__ */ jsx30("button", { type: "button", onClick: () => setQuery(""), className: "text-xs text-primary hover:underline", children: "Clear search" })
6420
6487
  ] })
6421
6488
  }
6422
6489
  ) })
@@ -6432,7 +6499,7 @@ var MultiCombobox = ({
6432
6499
 
6433
6500
  // ../../components/ui/RadioGroup.tsx
6434
6501
  import * as React25 from "react";
6435
- import { jsx as jsx32, jsxs as jsxs27 } from "react/jsx-runtime";
6502
+ import { jsx as jsx31, jsxs as jsxs27 } from "react/jsx-runtime";
6436
6503
  var RadioGroupContext = React25.createContext(void 0);
6437
6504
  var useRadioGroup = () => {
6438
6505
  const context = React25.useContext(RadioGroupContext);
@@ -6470,7 +6537,7 @@ var RadioGroup = React25.forwardRef(
6470
6537
  };
6471
6538
  const uniqueId = React25.useId();
6472
6539
  const radioName = name || `radio-group-${uniqueId}`;
6473
- return /* @__PURE__ */ jsx32(
6540
+ return /* @__PURE__ */ jsx31(
6474
6541
  RadioGroupContext.Provider,
6475
6542
  {
6476
6543
  value: {
@@ -6482,7 +6549,7 @@ var RadioGroup = React25.forwardRef(
6482
6549
  variant
6483
6550
  },
6484
6551
  children: /* @__PURE__ */ jsxs27("div", { className: "space-y-2", children: [
6485
- /* @__PURE__ */ jsx32(
6552
+ /* @__PURE__ */ jsx31(
6486
6553
  "div",
6487
6554
  {
6488
6555
  ref,
@@ -6499,7 +6566,7 @@ var RadioGroup = React25.forwardRef(
6499
6566
  children
6500
6567
  }
6501
6568
  ),
6502
- error && errorMessage && /* @__PURE__ */ jsx32("p", { className: "text-sm text-destructive mt-1", children: errorMessage })
6569
+ error && errorMessage && /* @__PURE__ */ jsx31("p", { className: "text-sm text-destructive mt-1", children: errorMessage })
6503
6570
  ] })
6504
6571
  }
6505
6572
  );
@@ -6554,7 +6621,7 @@ var RadioGroupItem = React25.forwardRef(
6554
6621
  ),
6555
6622
  children: [
6556
6623
  /* @__PURE__ */ jsxs27("div", { className: "flex items-start gap-3", children: [
6557
- /* @__PURE__ */ jsx32(
6624
+ /* @__PURE__ */ jsx31(
6558
6625
  "button",
6559
6626
  {
6560
6627
  ref,
@@ -6573,22 +6640,22 @@ var RadioGroupItem = React25.forwardRef(
6573
6640
  sizeStyles7[size].radio
6574
6641
  ),
6575
6642
  onClick: () => onValueChange?.(value),
6576
- children: /* @__PURE__ */ jsx32(
6643
+ children: /* @__PURE__ */ jsx31(
6577
6644
  "span",
6578
6645
  {
6579
6646
  className: cn(
6580
6647
  "flex items-center justify-center w-full h-full rounded-full transition-all duration-200",
6581
6648
  isSelected && "bg-primary"
6582
6649
  ),
6583
- children: isSelected && /* @__PURE__ */ jsx32("span", { className: cn("bg-primary-foreground rounded-full", sizeStyles7[size].dot) })
6650
+ children: isSelected && /* @__PURE__ */ jsx31("span", { className: cn("bg-primary-foreground rounded-full", sizeStyles7[size].dot) })
6584
6651
  }
6585
6652
  )
6586
6653
  }
6587
6654
  ),
6588
6655
  /* @__PURE__ */ jsxs27("div", { className: "flex-1 min-w-0", children: [
6589
6656
  /* @__PURE__ */ jsxs27("div", { className: "flex items-center gap-2", children: [
6590
- Icon && /* @__PURE__ */ jsx32(Icon, { className: "h-4 w-4 text-foreground" }),
6591
- /* @__PURE__ */ jsx32(
6657
+ Icon && /* @__PURE__ */ jsx31(Icon, { className: "h-4 w-4 text-foreground" }),
6658
+ /* @__PURE__ */ jsx31(
6592
6659
  "label",
6593
6660
  {
6594
6661
  htmlFor: radioId,
@@ -6600,10 +6667,10 @@ var RadioGroupItem = React25.forwardRef(
6600
6667
  }
6601
6668
  )
6602
6669
  ] }),
6603
- description && /* @__PURE__ */ jsx32("p", { className: "text-muted-foreground mt-1 text-xs", children: description })
6670
+ description && /* @__PURE__ */ jsx31("p", { className: "text-muted-foreground mt-1 text-xs", children: description })
6604
6671
  ] })
6605
6672
  ] }),
6606
- /* @__PURE__ */ jsx32(
6673
+ /* @__PURE__ */ jsx31(
6607
6674
  "input",
6608
6675
  {
6609
6676
  type: "radio",
@@ -6643,9 +6710,9 @@ var RadioGroupItem = React25.forwardRef(
6643
6710
  ),
6644
6711
  onClick: () => onValueChange?.(value),
6645
6712
  children: [
6646
- Icon && /* @__PURE__ */ jsx32(Icon, { className: "h-4 w-4" }),
6713
+ Icon && /* @__PURE__ */ jsx31(Icon, { className: "h-4 w-4" }),
6647
6714
  label || children,
6648
- /* @__PURE__ */ jsx32(
6715
+ /* @__PURE__ */ jsx31(
6649
6716
  "input",
6650
6717
  {
6651
6718
  type: "radio",
@@ -6663,7 +6730,7 @@ var RadioGroupItem = React25.forwardRef(
6663
6730
  );
6664
6731
  }
6665
6732
  return /* @__PURE__ */ jsxs27("div", { className: cn("flex items-center gap-2", className), children: [
6666
- /* @__PURE__ */ jsx32(
6733
+ /* @__PURE__ */ jsx31(
6667
6734
  "button",
6668
6735
  {
6669
6736
  ref,
@@ -6682,14 +6749,14 @@ var RadioGroupItem = React25.forwardRef(
6682
6749
  sizeStyles7[size].radio
6683
6750
  ),
6684
6751
  onClick: () => onValueChange?.(value),
6685
- children: /* @__PURE__ */ jsx32(
6752
+ children: /* @__PURE__ */ jsx31(
6686
6753
  "span",
6687
6754
  {
6688
6755
  className: cn(
6689
6756
  "flex items-center justify-center w-full h-full rounded-full transition-all duration-200",
6690
6757
  isSelected && "bg-primary"
6691
6758
  ),
6692
- children: isSelected && /* @__PURE__ */ jsx32("span", { className: cn("bg-primary-foreground rounded-full", sizeStyles7[size].dot) })
6759
+ children: isSelected && /* @__PURE__ */ jsx31("span", { className: cn("bg-primary-foreground rounded-full", sizeStyles7[size].dot) })
6693
6760
  }
6694
6761
  )
6695
6762
  }
@@ -6706,14 +6773,14 @@ var RadioGroupItem = React25.forwardRef(
6706
6773
  ),
6707
6774
  children: [
6708
6775
  /* @__PURE__ */ jsxs27("div", { className: "flex items-center gap-2", children: [
6709
- Icon && /* @__PURE__ */ jsx32(Icon, { className: "h-4 w-4" }),
6710
- /* @__PURE__ */ jsx32("span", { children: label || children })
6776
+ Icon && /* @__PURE__ */ jsx31(Icon, { className: "h-4 w-4" }),
6777
+ /* @__PURE__ */ jsx31("span", { children: label || children })
6711
6778
  ] }),
6712
- description && /* @__PURE__ */ jsx32("p", { className: "text-muted-foreground mt-0.5 text-xs", children: description })
6779
+ description && /* @__PURE__ */ jsx31("p", { className: "text-muted-foreground mt-0.5 text-xs", children: description })
6713
6780
  ]
6714
6781
  }
6715
6782
  ),
6716
- /* @__PURE__ */ jsx32(
6783
+ /* @__PURE__ */ jsx31(
6717
6784
  "input",
6718
6785
  {
6719
6786
  type: "radio",
@@ -6733,7 +6800,7 @@ RadioGroupItem.displayName = "RadioGroupItem";
6733
6800
 
6734
6801
  // ../../components/ui/Slider.tsx
6735
6802
  import * as React26 from "react";
6736
- import { jsx as jsx33, jsxs as jsxs28 } from "react/jsx-runtime";
6803
+ import { jsx as jsx32, jsxs as jsxs28 } from "react/jsx-runtime";
6737
6804
  var SIZE_STYLES = {
6738
6805
  sm: {
6739
6806
  track: "h-1",
@@ -6795,18 +6862,18 @@ var Slider = React26.forwardRef(
6795
6862
  }
6796
6863
  return /* @__PURE__ */ jsxs28("div", { className: cn("w-full space-y-2", containerClassName), children: [
6797
6864
  (label || showValue) && /* @__PURE__ */ jsxs28("div", { className: "flex items-center justify-between", children: [
6798
- label && /* @__PURE__ */ jsx33("label", { className: cn("text-sm font-medium text-foreground", labelClassName), children: label }),
6799
- showValue && /* @__PURE__ */ jsx33("span", { className: cn("text-xs font-mono text-muted-foreground min-w-[2rem] text-right", valueClassName), children: displayValue })
6865
+ label && /* @__PURE__ */ jsx32("label", { className: cn("text-sm font-medium text-foreground", labelClassName), children: label }),
6866
+ showValue && /* @__PURE__ */ jsx32("span", { className: cn("text-xs font-mono text-muted-foreground min-w-[2rem] text-right", valueClassName), children: displayValue })
6800
6867
  ] }),
6801
6868
  /* @__PURE__ */ jsxs28("div", { className: cn("relative flex items-center", sizeStyles8.container), children: [
6802
- /* @__PURE__ */ jsx33("div", { className: cn("w-full rounded-full bg-secondary relative overflow-hidden", sizeStyles8.track, trackClassName), children: /* @__PURE__ */ jsx33(
6869
+ /* @__PURE__ */ jsx32("div", { className: cn("w-full rounded-full bg-secondary relative overflow-hidden", sizeStyles8.track, trackClassName), children: /* @__PURE__ */ jsx32(
6803
6870
  "div",
6804
6871
  {
6805
6872
  className: "absolute left-0 top-0 h-full bg-primary rounded-full transition-all duration-150 ease-out",
6806
6873
  style: { width: `${percentage}%` }
6807
6874
  }
6808
6875
  ) }),
6809
- /* @__PURE__ */ jsx33(
6876
+ /* @__PURE__ */ jsx32(
6810
6877
  "input",
6811
6878
  {
6812
6879
  ref,
@@ -6872,7 +6939,7 @@ Slider.displayName = "Slider";
6872
6939
  // ../../components/ui/OverlayControls.tsx
6873
6940
  import { Dot, Maximize2, Pause, Play, RotateCcw, RotateCw, Volume2, VolumeX } from "lucide-react";
6874
6941
  import React27 from "react";
6875
- import { Fragment as Fragment10, jsx as jsx34, jsxs as jsxs29 } from "react/jsx-runtime";
6942
+ import { Fragment as Fragment10, jsx as jsx33, jsxs as jsxs29 } from "react/jsx-runtime";
6876
6943
  function OverlayControls({
6877
6944
  mode,
6878
6945
  value,
@@ -7096,7 +7163,7 @@ function OverlayControls({
7096
7163
  setPreviewData(null);
7097
7164
  };
7098
7165
  return /* @__PURE__ */ jsxs29(Fragment10, { children: [
7099
- keyboardFeedback && /* @__PURE__ */ jsx34(
7166
+ keyboardFeedback && /* @__PURE__ */ jsx33(
7100
7167
  "div",
7101
7168
  {
7102
7169
  className: cn(
@@ -7104,10 +7171,10 @@ function OverlayControls({
7104
7171
  keyboardFeedback.type === "seek" && (keyboardFeedback.value ?? 0) > 0 ? "justify-end pr-32" : keyboardFeedback.type === "seek" && (keyboardFeedback.value ?? 0) < 0 ? "justify-start pl-32" : "justify-center"
7105
7172
  ),
7106
7173
  children: /* @__PURE__ */ jsxs29("div", { className: "bg-black/50 backdrop-blur-sm rounded-xl px-6 py-4 shadow-xl border border-white/10 animate-in fade-in zoom-in duration-200", children: [
7107
- keyboardFeedback.type === "play" && /* @__PURE__ */ jsx34(Play, { className: "w-16 h-16 text-white", fill: "white" }),
7108
- keyboardFeedback.type === "pause" && /* @__PURE__ */ jsx34(Pause, { className: "w-16 h-16 text-white", fill: "white" }),
7174
+ keyboardFeedback.type === "play" && /* @__PURE__ */ jsx33(Play, { className: "w-16 h-16 text-white", fill: "white" }),
7175
+ keyboardFeedback.type === "pause" && /* @__PURE__ */ jsx33(Pause, { className: "w-16 h-16 text-white", fill: "white" }),
7109
7176
  keyboardFeedback.type === "seek" && /* @__PURE__ */ jsxs29("div", { className: "flex items-center gap-3", children: [
7110
- (keyboardFeedback.value ?? 0) > 0 ? /* @__PURE__ */ jsx34(RotateCw, { className: "w-12 h-12 text-white" }) : /* @__PURE__ */ jsx34(RotateCcw, { className: "w-12 h-12 text-white" }),
7177
+ (keyboardFeedback.value ?? 0) > 0 ? /* @__PURE__ */ jsx33(RotateCw, { className: "w-12 h-12 text-white" }) : /* @__PURE__ */ jsx33(RotateCcw, { className: "w-12 h-12 text-white" }),
7111
7178
  /* @__PURE__ */ jsxs29("span", { className: "text-3xl font-bold text-white", children: [
7112
7179
  keyboardFeedback.value && keyboardFeedback.value > 0 ? "+" : "",
7113
7180
  keyboardFeedback.value,
@@ -7115,21 +7182,21 @@ function OverlayControls({
7115
7182
  ] })
7116
7183
  ] }),
7117
7184
  keyboardFeedback.type === "volume" && /* @__PURE__ */ jsxs29("div", { className: "flex items-center gap-3", children: [
7118
- /* @__PURE__ */ jsx34(Volume2, { className: "w-12 h-12 text-white" }),
7185
+ /* @__PURE__ */ jsx33(Volume2, { className: "w-12 h-12 text-white" }),
7119
7186
  /* @__PURE__ */ jsxs29("div", { className: "flex flex-col gap-1.5", children: [
7120
7187
  /* @__PURE__ */ jsxs29("span", { className: "text-2xl font-bold text-white", children: [
7121
7188
  keyboardFeedback.value,
7122
7189
  "%"
7123
7190
  ] }),
7124
- /* @__PURE__ */ jsx34("div", { className: "w-32 h-1.5 bg-white/30 rounded-full overflow-hidden", children: /* @__PURE__ */ jsx34("div", { className: "h-full bg-white rounded-full transition-all", style: { width: `${keyboardFeedback.value}%` } }) })
7191
+ /* @__PURE__ */ jsx33("div", { className: "w-32 h-1.5 bg-white/30 rounded-full overflow-hidden", children: /* @__PURE__ */ jsx33("div", { className: "h-full bg-white rounded-full transition-all", style: { width: `${keyboardFeedback.value}%` } }) })
7125
7192
  ] })
7126
7193
  ] }),
7127
- keyboardFeedback.type === "mute" && /* @__PURE__ */ jsx34(VolumeX, { className: "w-16 h-16 text-white" }),
7128
- keyboardFeedback.type === "unmute" && /* @__PURE__ */ jsx34(Volume2, { className: "w-16 h-16 text-white" })
7194
+ keyboardFeedback.type === "mute" && /* @__PURE__ */ jsx33(VolumeX, { className: "w-16 h-16 text-white" }),
7195
+ keyboardFeedback.type === "unmute" && /* @__PURE__ */ jsx33(Volume2, { className: "w-16 h-16 text-white" })
7129
7196
  ] })
7130
7197
  }
7131
7198
  ),
7132
- /* @__PURE__ */ jsx34(
7199
+ /* @__PURE__ */ jsx33(
7133
7200
  "div",
7134
7201
  {
7135
7202
  className: cn(
@@ -7140,7 +7207,7 @@ function OverlayControls({
7140
7207
  ),
7141
7208
  children: /* @__PURE__ */ jsxs29("div", { className: "px-4", children: [
7142
7209
  /* @__PURE__ */ jsxs29("div", { ref: sliderRef, onMouseMove: handleSliderMouseMove, onMouseLeave: handleSliderMouseLeave, className: "relative", children: [
7143
- /* @__PURE__ */ jsx34(
7210
+ /* @__PURE__ */ jsx33(
7144
7211
  Slider,
7145
7212
  {
7146
7213
  min: 0,
@@ -7165,14 +7232,14 @@ function OverlayControls({
7165
7232
  noFocus: true
7166
7233
  }
7167
7234
  ),
7168
- previewData && /* @__PURE__ */ jsx34("div", { className: "absolute bottom-full mb-2 transform -translate-x-1/2 pointer-events-none z-30", style: { left: `${previewData.x}px` }, children: previewData.url ? /* @__PURE__ */ jsxs29("div", { className: "bg-background/95 backdrop-blur rounded-md border border-border shadow-lg overflow-hidden", children: [
7169
- /* @__PURE__ */ jsx34("img", { src: previewData.url, alt: "Preview", className: "w-40 h-24 object-cover" }),
7170
- /* @__PURE__ */ jsx34("div", { className: "px-2 py-1 text-xs font-mono text-center bg-background/80", children: formatTime3(previewData.time) })
7171
- ] }) : /* @__PURE__ */ jsx34("div", { className: "px-3 py-1.5 rounded-md bg-background/90 backdrop-blur border border-border shadow-lg", children: /* @__PURE__ */ jsx34("div", { className: "text-xs font-mono text-center", children: formatTime3(previewData.time) }) }) })
7235
+ previewData && /* @__PURE__ */ jsx33("div", { className: "absolute bottom-full mb-2 transform -translate-x-1/2 pointer-events-none z-30", style: { left: `${previewData.x}px` }, children: previewData.url ? /* @__PURE__ */ jsxs29("div", { className: "bg-background/95 backdrop-blur rounded-md border border-border shadow-lg overflow-hidden", children: [
7236
+ /* @__PURE__ */ jsx33("img", { src: previewData.url, alt: "Preview", className: "w-40 h-24 object-cover" }),
7237
+ /* @__PURE__ */ jsx33("div", { className: "px-2 py-1 text-xs font-mono text-center bg-background/80", children: formatTime3(previewData.time) })
7238
+ ] }) : /* @__PURE__ */ jsx33("div", { className: "px-3 py-1.5 rounded-md bg-background/90 backdrop-blur border border-border shadow-lg", children: /* @__PURE__ */ jsx33("div", { className: "text-xs font-mono text-center", children: formatTime3(previewData.time) }) }) })
7172
7239
  ] }),
7173
7240
  showControlsBar && /* @__PURE__ */ jsxs29("div", { className: "mt-2 flex items-center justify-between gap-2", children: [
7174
7241
  /* @__PURE__ */ jsxs29("div", { className: "flex items-center gap-2", children: [
7175
- /* @__PURE__ */ jsx34(
7242
+ /* @__PURE__ */ jsx33(
7176
7243
  Button_default,
7177
7244
  {
7178
7245
  variant: "ghost",
@@ -7180,10 +7247,10 @@ function OverlayControls({
7180
7247
  onClick: onTogglePlay,
7181
7248
  title: playing ? "T\u1EA1m d\u1EEBng" : "Ph\xE1t",
7182
7249
  className: "bg-background/60 hover:bg-background/80 border-transparent shadow-sm outline-none focus:outline-none focus:ring-0",
7183
- children: playing ? /* @__PURE__ */ jsx34(Pause, { className: "w-4 h-4" }) : /* @__PURE__ */ jsx34(Play, { className: "w-4 h-4" })
7250
+ children: playing ? /* @__PURE__ */ jsx33(Pause, { className: "w-4 h-4" }) : /* @__PURE__ */ jsx33(Play, { className: "w-4 h-4" })
7184
7251
  }
7185
7252
  ),
7186
- onSkip && /* @__PURE__ */ jsx34(
7253
+ onSkip && /* @__PURE__ */ jsx33(
7187
7254
  Button_default,
7188
7255
  {
7189
7256
  variant: "ghost",
@@ -7191,10 +7258,10 @@ function OverlayControls({
7191
7258
  onClick: () => onSkip(-skipSeconds),
7192
7259
  title: `L\xF9i ${skipSeconds}s`,
7193
7260
  className: "bg-background/60 hover:bg-background/80 border-transparent shadow-sm outline-none focus:outline-none focus:ring-0",
7194
- children: /* @__PURE__ */ jsx34(RotateCcw, { className: "w-4 h-4" })
7261
+ children: /* @__PURE__ */ jsx33(RotateCcw, { className: "w-4 h-4" })
7195
7262
  }
7196
7263
  ),
7197
- onSkip && /* @__PURE__ */ jsx34(
7264
+ onSkip && /* @__PURE__ */ jsx33(
7198
7265
  Button_default,
7199
7266
  {
7200
7267
  variant: "ghost",
@@ -7202,7 +7269,7 @@ function OverlayControls({
7202
7269
  onClick: () => onSkip(skipSeconds),
7203
7270
  title: `Tua ${skipSeconds}s`,
7204
7271
  className: "bg-background/60 hover:bg-background/80 border-transparent shadow-sm outline-none focus:outline-none focus:ring-0",
7205
- children: /* @__PURE__ */ jsx34(RotateCw, { className: "w-4 h-4" })
7272
+ children: /* @__PURE__ */ jsx33(RotateCw, { className: "w-4 h-4" })
7206
7273
  }
7207
7274
  ),
7208
7275
  (showTime ?? true) && /* @__PURE__ */ jsxs29("span", { className: "px-3 py-1 rounded-full text-xs font-mono bg-background/60 text-foreground shadow-sm border border-border whitespace-nowrap", children: [
@@ -7211,7 +7278,7 @@ function OverlayControls({
7211
7278
  formatTime3(max)
7212
7279
  ] }),
7213
7280
  /* @__PURE__ */ jsxs29("div", { className: "flex items-center gap-2", children: [
7214
- /* @__PURE__ */ jsx34(
7281
+ /* @__PURE__ */ jsx33(
7215
7282
  Button_default,
7216
7283
  {
7217
7284
  variant: "ghost",
@@ -7219,10 +7286,10 @@ function OverlayControls({
7219
7286
  onClick: onToggleMute,
7220
7287
  title: muted ? "B\u1EADt ti\u1EBFng" : "T\u1EAFt ti\u1EBFng",
7221
7288
  className: "bg-background/60 hover:bg-background/80 border-transparent shadow-sm outline-none focus:outline-none focus:ring-0",
7222
- children: muted || (volume ?? 1) === 0 ? /* @__PURE__ */ jsx34(VolumeX, { className: "w-4 h-4" }) : /* @__PURE__ */ jsx34(Volume2, { className: "w-4 h-4" })
7289
+ children: muted || (volume ?? 1) === 0 ? /* @__PURE__ */ jsx33(VolumeX, { className: "w-4 h-4" }) : /* @__PURE__ */ jsx33(Volume2, { className: "w-4 h-4" })
7223
7290
  }
7224
7291
  ),
7225
- /* @__PURE__ */ jsx34("div", { className: "w-24", children: /* @__PURE__ */ jsx34(
7292
+ /* @__PURE__ */ jsx33("div", { className: "w-24", children: /* @__PURE__ */ jsx33(
7226
7293
  Slider,
7227
7294
  {
7228
7295
  min: 0,
@@ -7247,7 +7314,7 @@ function OverlayControls({
7247
7314
  title: "Tr\u1EF1c ti\u1EBFp (v\u1EC1 Live)",
7248
7315
  className: "bg-background/60 hover:bg-background/80 border-transparent shadow-sm outline-none focus:outline-none focus:ring-0",
7249
7316
  children: [
7250
- /* @__PURE__ */ jsx34(Dot, { className: "w-10 h-10 text-destructive" }),
7317
+ /* @__PURE__ */ jsx33(Dot, { className: "w-10 h-10 text-destructive" }),
7251
7318
  "Tr\u1EF1c ti\u1EBFp"
7252
7319
  ]
7253
7320
  }
@@ -7267,7 +7334,7 @@ function OverlayControls({
7267
7334
  ]
7268
7335
  }
7269
7336
  ),
7270
- rateOpen && /* @__PURE__ */ jsx34("div", { className: "absolute bottom-9 right-0 bg-background/90 backdrop-blur rounded-md border border-border shadow-lg p-1 z-30", children: [0.5, 0.75, 1, 1.25, 1.5].map((r) => /* @__PURE__ */ jsxs29(
7337
+ rateOpen && /* @__PURE__ */ jsx33("div", { className: "absolute bottom-9 right-0 bg-background/90 backdrop-blur rounded-md border border-border shadow-lg p-1 z-30", children: [0.5, 0.75, 1, 1.25, 1.5].map((r) => /* @__PURE__ */ jsxs29(
7271
7338
  "button",
7272
7339
  {
7273
7340
  onClick: () => {
@@ -7283,7 +7350,7 @@ function OverlayControls({
7283
7350
  r
7284
7351
  )) })
7285
7352
  ] }),
7286
- onToggleFullscreen && /* @__PURE__ */ jsx34(
7353
+ onToggleFullscreen && /* @__PURE__ */ jsx33(
7287
7354
  Button_default,
7288
7355
  {
7289
7356
  variant: "ghost",
@@ -7291,7 +7358,7 @@ function OverlayControls({
7291
7358
  onClick: onToggleFullscreen,
7292
7359
  title: "To\xE0n m\xE0n h\xECnh",
7293
7360
  className: "px-3 bg-background/60 hover:bg-background/80 border-transparent shadow-sm outline-none focus:outline-none focus:ring-0",
7294
- children: /* @__PURE__ */ jsx34(Maximize2, { className: "w-4 h-4" })
7361
+ children: /* @__PURE__ */ jsx33(Maximize2, { className: "w-4 h-4" })
7295
7362
  }
7296
7363
  )
7297
7364
  ] })
@@ -7305,7 +7372,7 @@ function OverlayControls({
7305
7372
  // ../../components/ui/CategoryTreeSelect.tsx
7306
7373
  import { useState as useState24 } from "react";
7307
7374
  import { ChevronRight as ChevronRight5, ChevronDown as ChevronDown3, Check as Check6 } from "lucide-react";
7308
- import { Fragment as Fragment11, jsx as jsx35, jsxs as jsxs30 } from "react/jsx-runtime";
7375
+ import { Fragment as Fragment11, jsx as jsx34, jsxs as jsxs30 } from "react/jsx-runtime";
7309
7376
  function CategoryTreeSelect({ categories, value, onChange, placeholder = "Ch\u1ECDn danh m\u1EE5c", disabled }) {
7310
7377
  const [isOpen, setIsOpen] = useState24(false);
7311
7378
  const [expandedNodes, setExpandedNodes] = useState24(/* @__PURE__ */ new Set());
@@ -7359,14 +7426,14 @@ function CategoryTreeSelect({ categories, value, onChange, placeholder = "Ch\u1E
7359
7426
  ),
7360
7427
  style: { paddingLeft: `${level * 1.5 + 0.75}rem` },
7361
7428
  children: [
7362
- isSelected && /* @__PURE__ */ jsx35(
7429
+ isSelected && /* @__PURE__ */ jsx34(
7363
7430
  "span",
7364
7431
  {
7365
7432
  "aria-hidden": true,
7366
7433
  className: "absolute left-0 top-0 bottom-0 w-1 bg-primary"
7367
7434
  }
7368
7435
  ),
7369
- hasChildren ? /* @__PURE__ */ jsx35(
7436
+ hasChildren ? /* @__PURE__ */ jsx34(
7370
7437
  "button",
7371
7438
  {
7372
7439
  type: "button",
@@ -7375,33 +7442,33 @@ function CategoryTreeSelect({ categories, value, onChange, placeholder = "Ch\u1E
7375
7442
  toggleExpand(category.id);
7376
7443
  },
7377
7444
  className: "p-0.5 hover:bg-accent rounded",
7378
- children: isExpanded ? /* @__PURE__ */ jsx35(ChevronDown3, { className: "w-4 h-4" }) : /* @__PURE__ */ jsx35(ChevronRight5, { className: "w-4 h-4" })
7445
+ children: isExpanded ? /* @__PURE__ */ jsx34(ChevronDown3, { className: "w-4 h-4" }) : /* @__PURE__ */ jsx34(ChevronRight5, { className: "w-4 h-4" })
7379
7446
  }
7380
- ) : /* @__PURE__ */ jsx35("span", { className: "w-5" }),
7447
+ ) : /* @__PURE__ */ jsx34("span", { className: "w-5" }),
7381
7448
  /* @__PURE__ */ jsxs30(
7382
7449
  "div",
7383
7450
  {
7384
7451
  onClick: () => handleSelect(category.id, category),
7385
7452
  className: "flex items-center gap-2 flex-1",
7386
7453
  children: [
7387
- /* @__PURE__ */ jsx35(
7454
+ /* @__PURE__ */ jsx34(
7388
7455
  "div",
7389
7456
  {
7390
7457
  className: cn(
7391
7458
  "w-4 h-4 border-2 rounded flex items-center justify-center transition-colors",
7392
7459
  isSelected ? "bg-primary border-primary" : "border-muted-foreground/30"
7393
7460
  ),
7394
- children: isSelected && /* @__PURE__ */ jsx35(Check6, { className: "w-3 h-3 text-primary-foreground" })
7461
+ children: isSelected && /* @__PURE__ */ jsx34(Check6, { className: "w-3 h-3 text-primary-foreground" })
7395
7462
  }
7396
7463
  ),
7397
- /* @__PURE__ */ jsx35("span", { className: cn("text-sm", isSelected && "font-medium text-primary"), children: category.name })
7464
+ /* @__PURE__ */ jsx34("span", { className: cn("text-sm", isSelected && "font-medium text-primary"), children: category.name })
7398
7465
  ]
7399
7466
  }
7400
7467
  )
7401
7468
  ]
7402
7469
  }
7403
7470
  ),
7404
- hasChildren && isExpanded && /* @__PURE__ */ jsx35("div", { children: children.map((child) => renderCategory(child, level + 1)) })
7471
+ hasChildren && isExpanded && /* @__PURE__ */ jsx34("div", { children: children.map((child) => renderCategory(child, level + 1)) })
7405
7472
  ] }, category.id);
7406
7473
  };
7407
7474
  const selectedCount = value.length;
@@ -7423,14 +7490,14 @@ function CategoryTreeSelect({ categories, value, onChange, placeholder = "Ch\u1E
7423
7490
  isOpen && "border-primary"
7424
7491
  ),
7425
7492
  children: [
7426
- /* @__PURE__ */ jsx35("span", { className: cn("text-sm", selectedCount === 0 && "text-muted-foreground"), children: displayText }),
7427
- /* @__PURE__ */ jsx35(ChevronDown3, { className: cn("w-4 h-4 transition-transform", isOpen && "transform rotate-180") })
7493
+ /* @__PURE__ */ jsx34("span", { className: cn("text-sm", selectedCount === 0 && "text-muted-foreground"), children: displayText }),
7494
+ /* @__PURE__ */ jsx34(ChevronDown3, { className: cn("w-4 h-4 transition-transform", isOpen && "transform rotate-180") })
7428
7495
  ]
7429
7496
  }
7430
7497
  ),
7431
7498
  isOpen && !disabled && /* @__PURE__ */ jsxs30(Fragment11, { children: [
7432
- /* @__PURE__ */ jsx35("div", { className: "fixed inset-0 z-10", onClick: () => setIsOpen(false) }),
7433
- /* @__PURE__ */ jsx35(
7499
+ /* @__PURE__ */ jsx34("div", { className: "fixed inset-0 z-10", onClick: () => setIsOpen(false) }),
7500
+ /* @__PURE__ */ jsx34(
7434
7501
  "div",
7435
7502
  {
7436
7503
  className: cn(
@@ -7438,7 +7505,7 @@ function CategoryTreeSelect({ categories, value, onChange, placeholder = "Ch\u1E
7438
7505
  "rounded-md border bg-popover text-popover-foreground shadow-md",
7439
7506
  "backdrop-blur-sm bg-popover/95 border-border/60"
7440
7507
  ),
7441
- children: /* @__PURE__ */ jsx35("div", { className: "p-1", children: parentCategories.length === 0 ? /* @__PURE__ */ jsx35("div", { className: "px-3 py-2 text-sm text-muted-foreground", children: "Kh\xF4ng c\xF3 danh m\u1EE5c n\xE0o" }) : parentCategories.map((cat) => renderCategory(cat)) })
7508
+ children: /* @__PURE__ */ jsx34("div", { className: "p-1", children: parentCategories.length === 0 ? /* @__PURE__ */ jsx34("div", { className: "px-3 py-2 text-sm text-muted-foreground", children: "Kh\xF4ng c\xF3 danh m\u1EE5c n\xE0o" }) : parentCategories.map((cat) => renderCategory(cat)) })
7442
7509
  }
7443
7510
  )
7444
7511
  ] })
@@ -7449,7 +7516,7 @@ function CategoryTreeSelect({ categories, value, onChange, placeholder = "Ch\u1E
7449
7516
  import { useState as useState25, useRef as useRef10, useCallback as useCallback9 } from "react";
7450
7517
  import { Upload, X as X9, Image as ImageIcon, Loader2 as Loader24, Check as Check7 } from "lucide-react";
7451
7518
  import { useTranslations as useTranslations6 } from "next-intl";
7452
- import { jsx as jsx36, jsxs as jsxs31 } from "react/jsx-runtime";
7519
+ import { jsx as jsx35, jsxs as jsxs31 } from "react/jsx-runtime";
7453
7520
  function ImageUpload({
7454
7521
  onUpload,
7455
7522
  onRemove,
@@ -7476,94 +7543,106 @@ function ImageUpload({
7476
7543
  md: "w-24 h-24",
7477
7544
  lg: "w-32 h-32"
7478
7545
  };
7479
- const handleDragOver = useCallback9((e) => {
7480
- e.preventDefault();
7481
- if (!disabled) {
7482
- setIsDragging(true);
7483
- }
7484
- }, [disabled]);
7546
+ const handleDragOver = useCallback9(
7547
+ (e) => {
7548
+ e.preventDefault();
7549
+ if (!disabled) {
7550
+ setIsDragging(true);
7551
+ }
7552
+ },
7553
+ [disabled]
7554
+ );
7485
7555
  const handleDragLeave = useCallback9((e) => {
7486
7556
  e.preventDefault();
7487
7557
  setIsDragging(false);
7488
7558
  }, []);
7489
- const handleFiles = useCallback9(async (files) => {
7490
- if (files.length === 0) return;
7491
- const validFiles = files.filter((file) => {
7492
- if (file.size > maxSize * 1024 * 1024) {
7493
- addToast({
7494
- type: "error",
7495
- message: `File "${file.name}" is too large. Max size: ${maxSize}MB`
7496
- });
7497
- return false;
7498
- }
7499
- if (!file.type.startsWith("image/")) {
7559
+ const handleFiles = useCallback9(
7560
+ async (files) => {
7561
+ if (files.length === 0) return;
7562
+ const validFiles = files.filter((file) => {
7563
+ if (file.size > maxSize * 1024 * 1024) {
7564
+ addToast({
7565
+ type: "error",
7566
+ message: `File "${file.name}" is too large. Max size: ${maxSize}MB`
7567
+ });
7568
+ return false;
7569
+ }
7570
+ if (!file.type.startsWith("image/")) {
7571
+ addToast({
7572
+ type: "error",
7573
+ message: `File "${file.name}" is not a valid image`
7574
+ });
7575
+ return false;
7576
+ }
7577
+ return true;
7578
+ });
7579
+ if (validFiles.length === 0) return;
7580
+ setUploading(true);
7581
+ try {
7582
+ for (const file of validFiles) {
7583
+ const formData = new FormData();
7584
+ formData.append("file", file);
7585
+ const response = {
7586
+ id: Date.now(),
7587
+ path: "",
7588
+ url: URL.createObjectURL(file),
7589
+ originalName: file.name,
7590
+ size: file.size,
7591
+ mimeType: file.type,
7592
+ width: 0,
7593
+ height: 0,
7594
+ formattedSize: `${(file.size / 1024).toFixed(1)} KB`
7595
+ };
7596
+ const newImage = {
7597
+ id: response.id,
7598
+ path: response.path,
7599
+ url: response.url,
7600
+ originalName: response.originalName,
7601
+ size: response.size,
7602
+ mimeType: response.mimeType,
7603
+ width: response.width,
7604
+ height: response.height,
7605
+ formattedSize: response.formattedSize
7606
+ };
7607
+ setUploadedImages((prev) => [...prev, newImage]);
7608
+ onUpload?.(newImage);
7609
+ addToast({
7610
+ type: "success",
7611
+ message: `"${file.name}" uploaded successfully`
7612
+ });
7613
+ }
7614
+ } catch (error) {
7615
+ console.error("Upload error:", error);
7500
7616
  addToast({
7501
7617
  type: "error",
7502
- message: `File "${file.name}" is not a valid image`
7618
+ message: error.message || "Upload failed"
7503
7619
  });
7504
- return false;
7620
+ } finally {
7621
+ setUploading(false);
7505
7622
  }
7506
- return true;
7507
- });
7508
- if (validFiles.length === 0) return;
7509
- setUploading(true);
7510
- try {
7511
- for (const file of validFiles) {
7512
- const formData = new FormData();
7513
- formData.append("file", file);
7514
- const response = {
7515
- id: Date.now(),
7516
- path: "",
7517
- url: URL.createObjectURL(file),
7518
- originalName: file.name,
7519
- size: file.size,
7520
- mimeType: file.type,
7521
- width: 0,
7522
- height: 0,
7523
- formattedSize: `${(file.size / 1024).toFixed(1)} KB`
7524
- };
7525
- const newImage = {
7526
- id: response.id,
7527
- path: response.path,
7528
- url: response.url,
7529
- originalName: response.originalName,
7530
- size: response.size,
7531
- mimeType: response.mimeType,
7532
- width: response.width,
7533
- height: response.height,
7534
- formattedSize: response.formattedSize
7535
- };
7536
- setUploadedImages((prev) => [...prev, newImage]);
7537
- onUpload?.(newImage);
7538
- addToast({
7539
- type: "success",
7540
- message: `"${file.name}" uploaded successfully`
7541
- });
7623
+ },
7624
+ [maxSize, addToast, onUpload]
7625
+ );
7626
+ const handleDrop = useCallback9(
7627
+ (e) => {
7628
+ e.preventDefault();
7629
+ setIsDragging(false);
7630
+ if (disabled) return;
7631
+ const files = Array.from(e.dataTransfer.files);
7632
+ handleFiles(files);
7633
+ },
7634
+ [disabled, handleFiles]
7635
+ );
7636
+ const handleFileSelect = useCallback9(
7637
+ (e) => {
7638
+ const files = Array.from(e.target.files || []);
7639
+ handleFiles(files);
7640
+ if (fileInputRef.current) {
7641
+ fileInputRef.current.value = "";
7542
7642
  }
7543
- } catch (error) {
7544
- console.error("Upload error:", error);
7545
- addToast({
7546
- type: "error",
7547
- message: error.message || "Upload failed"
7548
- });
7549
- } finally {
7550
- setUploading(false);
7551
- }
7552
- }, [maxSize, addToast, onUpload]);
7553
- const handleDrop = useCallback9((e) => {
7554
- e.preventDefault();
7555
- setIsDragging(false);
7556
- if (disabled) return;
7557
- const files = Array.from(e.dataTransfer.files);
7558
- handleFiles(files);
7559
- }, [disabled, handleFiles]);
7560
- const handleFileSelect = useCallback9((e) => {
7561
- const files = Array.from(e.target.files || []);
7562
- handleFiles(files);
7563
- if (fileInputRef.current) {
7564
- fileInputRef.current.value = "";
7565
- }
7566
- }, [handleFiles]);
7643
+ },
7644
+ [handleFiles]
7645
+ );
7567
7646
  const handleRemoveImage = (imageId) => {
7568
7647
  setUploadedImages((prev) => prev.filter((img) => img.id !== Number(imageId)));
7569
7648
  onRemove?.(String(imageId));
@@ -7585,29 +7664,19 @@ function ImageUpload({
7585
7664
  onDragLeave: handleDragLeave,
7586
7665
  onDrop: handleDrop,
7587
7666
  children: [
7588
- uploading && /* @__PURE__ */ jsx36("div", { className: "absolute inset-0 bg-background/80 flex items-center justify-center rounded-lg", children: /* @__PURE__ */ jsxs31("div", { className: "flex items-center gap-3", children: [
7589
- /* @__PURE__ */ jsx36(Loader24, { className: "w-6 h-6 animate-spin text-primary" }),
7590
- /* @__PURE__ */ jsx36("span", { className: "text-sm font-medium", children: "Uploading..." })
7667
+ uploading && /* @__PURE__ */ jsx35("div", { className: "absolute inset-0 bg-background/80 flex items-center justify-center rounded-lg", children: /* @__PURE__ */ jsxs31("div", { className: "flex items-center gap-3", children: [
7668
+ /* @__PURE__ */ jsx35(Loader24, { className: "w-6 h-6 animate-spin text-primary" }),
7669
+ /* @__PURE__ */ jsx35("span", { className: "text-sm font-medium", children: "Uploading..." })
7591
7670
  ] }) }),
7592
7671
  /* @__PURE__ */ jsxs31("div", { className: "space-y-4", children: [
7593
- /* @__PURE__ */ jsx36("div", { className: "mx-auto w-12 h-12 bg-primary/10 rounded-full flex items-center justify-center", children: /* @__PURE__ */ jsx36(Upload, { className: "w-6 h-6 text-primary" }) }),
7672
+ /* @__PURE__ */ jsx35("div", { className: "mx-auto w-12 h-12 bg-primary/10 rounded-full flex items-center justify-center", children: /* @__PURE__ */ jsx35(Upload, { className: "w-6 h-6 text-primary" }) }),
7594
7673
  /* @__PURE__ */ jsxs31("div", { className: "space-y-2", children: [
7595
- /* @__PURE__ */ jsx36("p", { className: "text-muted-foreground", children: dragDropText || t("dragDropText") }),
7596
- /* @__PURE__ */ jsx36(
7597
- Button_default,
7598
- {
7599
- type: "button",
7600
- variant: "outline",
7601
- size: "sm",
7602
- onClick: handleBrowseClick,
7603
- disabled: disabled || uploading,
7604
- children: browseText || t("browseFiles")
7605
- }
7606
- )
7674
+ /* @__PURE__ */ jsx35("p", { className: "text-muted-foreground", children: dragDropText || t("dragDropText") }),
7675
+ /* @__PURE__ */ jsx35(Button_default, { type: "button", variant: "outline", size: "sm", onClick: handleBrowseClick, disabled: disabled || uploading, children: browseText || t("browseFiles") })
7607
7676
  ] }),
7608
- /* @__PURE__ */ jsx36("p", { className: "text-xs text-muted-foreground", children: supportedFormatsText || t("supportedFormats") })
7677
+ /* @__PURE__ */ jsx35("p", { className: "text-xs text-muted-foreground", children: supportedFormatsText || t("supportedFormats") })
7609
7678
  ] }),
7610
- /* @__PURE__ */ jsx36(
7679
+ /* @__PURE__ */ jsx35(
7611
7680
  "input",
7612
7681
  {
7613
7682
  ref: fileInputRef,
@@ -7623,52 +7692,45 @@ function ImageUpload({
7623
7692
  }
7624
7693
  ),
7625
7694
  showPreview && uploadedImages.length > 0 && /* @__PURE__ */ jsxs31("div", { className: "space-y-3", children: [
7626
- /* @__PURE__ */ jsx36("h4", { className: "text-sm font-medium", children: "Uploaded Images" }),
7627
- /* @__PURE__ */ jsx36("div", { className: "grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 gap-4", children: uploadedImages.map((image) => /* @__PURE__ */ jsxs31(
7628
- "div",
7629
- {
7630
- className: "relative group bg-card border border-border rounded-lg p-3",
7631
- children: [
7632
- /* @__PURE__ */ jsx36(
7633
- Button_default,
7634
- {
7635
- variant: "danger",
7636
- size: "icon",
7637
- className: "absolute -top-2 -right-2 w-6 h-6 opacity-0 group-hover:opacity-100 transition-opacity z-10",
7638
- onClick: () => handleRemoveImage(image.id),
7639
- children: /* @__PURE__ */ jsx36(X9, { className: "w-3 h-3" })
7695
+ /* @__PURE__ */ jsx35("h4", { className: "text-sm font-medium", children: "Uploaded Images" }),
7696
+ /* @__PURE__ */ jsx35("div", { className: "grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 gap-4", children: uploadedImages.map((image) => /* @__PURE__ */ jsxs31("div", { className: "relative group bg-card border border-border rounded-lg p-3", children: [
7697
+ /* @__PURE__ */ jsx35(
7698
+ Button_default,
7699
+ {
7700
+ variant: "danger",
7701
+ size: "icon",
7702
+ className: "absolute -top-2 -right-2 w-6 h-6 opacity-0 group-hover:opacity-100 transition-opacity z-10",
7703
+ onClick: () => handleRemoveImage(image.id),
7704
+ children: /* @__PURE__ */ jsx35(X9, { className: "w-3 h-3" })
7705
+ }
7706
+ ),
7707
+ /* @__PURE__ */ jsxs31("div", { className: cn("mx-auto mb-2 overflow-hidden rounded-md", previewSizes[previewSize]), children: [
7708
+ /* @__PURE__ */ jsx35(
7709
+ "img",
7710
+ {
7711
+ src: image.url,
7712
+ alt: image.originalName,
7713
+ className: "w-full h-full object-cover",
7714
+ onError: (e) => {
7715
+ const target = e.target;
7716
+ target.style.display = "none";
7717
+ target.nextElementSibling?.classList.remove("hidden");
7640
7718
  }
7641
- ),
7642
- /* @__PURE__ */ jsxs31("div", { className: cn("mx-auto mb-2 overflow-hidden rounded-md", previewSizes[previewSize]), children: [
7643
- /* @__PURE__ */ jsx36(
7644
- "img",
7645
- {
7646
- src: image.url,
7647
- alt: image.originalName,
7648
- className: "w-full h-full object-cover",
7649
- onError: (e) => {
7650
- const target = e.target;
7651
- target.style.display = "none";
7652
- target.nextElementSibling?.classList.remove("hidden");
7653
- }
7654
- }
7655
- ),
7656
- /* @__PURE__ */ jsx36("div", { className: "hidden w-full h-full bg-muted flex items-center justify-center", children: /* @__PURE__ */ jsx36(ImageIcon, { className: "w-8 h-8 text-muted-foreground" }) })
7657
- ] }),
7658
- /* @__PURE__ */ jsxs31("div", { className: "space-y-1", children: [
7659
- /* @__PURE__ */ jsx36("p", { className: "text-xs font-medium truncate", title: image.originalName, children: image.originalName }),
7660
- /* @__PURE__ */ jsx36("p", { className: "text-xs text-muted-foreground", children: image.formattedSize }),
7661
- image.width && image.height && /* @__PURE__ */ jsxs31("p", { className: "text-xs text-muted-foreground", children: [
7662
- image.width,
7663
- " \xD7 ",
7664
- image.height
7665
- ] })
7666
- ] }),
7667
- /* @__PURE__ */ jsx36("div", { className: "absolute top-1 left-1 w-5 h-5 bg-success rounded-full flex items-center justify-center", children: /* @__PURE__ */ jsx36(Check7, { className: "w-3 h-3 text-success-foreground" }) })
7668
- ]
7669
- },
7670
- image.id
7671
- )) })
7719
+ }
7720
+ ),
7721
+ /* @__PURE__ */ jsx35("div", { className: "hidden w-full h-full bg-muted flex items-center justify-center", children: /* @__PURE__ */ jsx35(ImageIcon, { className: "w-8 h-8 text-muted-foreground" }) })
7722
+ ] }),
7723
+ /* @__PURE__ */ jsxs31("div", { className: "space-y-1", children: [
7724
+ /* @__PURE__ */ jsx35("p", { className: "text-xs font-medium truncate", title: image.originalName, children: image.originalName }),
7725
+ /* @__PURE__ */ jsx35("p", { className: "text-xs text-muted-foreground", children: image.formattedSize }),
7726
+ image.width && image.height && /* @__PURE__ */ jsxs31("p", { className: "text-xs text-muted-foreground", children: [
7727
+ image.width,
7728
+ " \xD7 ",
7729
+ image.height
7730
+ ] })
7731
+ ] }),
7732
+ /* @__PURE__ */ jsx35("div", { className: "absolute top-1 left-1 w-5 h-5 bg-success rounded-full flex items-center justify-center", children: /* @__PURE__ */ jsx35(Check7, { className: "w-3 h-3 text-success-foreground" }) })
7733
+ ] }, image.id)) })
7672
7734
  ] })
7673
7735
  ] });
7674
7736
  }
@@ -7676,7 +7738,7 @@ function ImageUpload({
7676
7738
  // ../../components/ui/Carousel.tsx
7677
7739
  import * as React29 from "react";
7678
7740
  import { ChevronLeft as ChevronLeft4, ChevronRight as ChevronRight6 } from "lucide-react";
7679
- import { Fragment as Fragment12, jsx as jsx37, jsxs as jsxs32 } from "react/jsx-runtime";
7741
+ import { Fragment as Fragment12, jsx as jsx36, jsxs as jsxs32 } from "react/jsx-runtime";
7680
7742
  function Carousel({
7681
7743
  children,
7682
7744
  autoScroll = true,
@@ -7846,8 +7908,8 @@ function Carousel({
7846
7908
  "aria-roledescription": "carousel",
7847
7909
  tabIndex: 0,
7848
7910
  children: [
7849
- showProgress && autoScroll && /* @__PURE__ */ jsx37("div", { className: "absolute top-0 left-0 right-0 h-1 bg-muted z-20", children: /* @__PURE__ */ jsx37("div", { ref: progressElRef, className: "h-full bg-primary", style: { width: "0%" } }) }),
7850
- /* @__PURE__ */ jsx37(
7911
+ showProgress && autoScroll && /* @__PURE__ */ jsx36("div", { className: "absolute top-0 left-0 right-0 h-1 bg-muted z-20", children: /* @__PURE__ */ jsx36("div", { ref: progressElRef, className: "h-full bg-primary", style: { width: "0%" } }) }),
7912
+ /* @__PURE__ */ jsx36(
7851
7913
  "div",
7852
7914
  {
7853
7915
  className: cn("flex", isHorizontal ? "flex-row" : "flex-col", containerClassName),
@@ -7862,7 +7924,7 @@ function Carousel({
7862
7924
  role: "group",
7863
7925
  "aria-atomic": "false",
7864
7926
  "aria-live": autoScroll ? "off" : "polite",
7865
- children: React29.Children.map(children, (child, idx) => /* @__PURE__ */ jsx37(
7927
+ children: React29.Children.map(children, (child, idx) => /* @__PURE__ */ jsx36(
7866
7928
  "div",
7867
7929
  {
7868
7930
  className: cn(
@@ -7886,7 +7948,7 @@ function Carousel({
7886
7948
  }
7887
7949
  ),
7888
7950
  showArrows && totalSlides > slidesToShow && /* @__PURE__ */ jsxs32(Fragment12, { children: [
7889
- /* @__PURE__ */ jsx37(
7951
+ /* @__PURE__ */ jsx36(
7890
7952
  Button_default,
7891
7953
  {
7892
7954
  onClick: scrollPrev,
@@ -7902,7 +7964,7 @@ function Carousel({
7902
7964
  "aria-label": "Previous slide"
7903
7965
  }
7904
7966
  ),
7905
- /* @__PURE__ */ jsx37(
7967
+ /* @__PURE__ */ jsx36(
7906
7968
  Button_default,
7907
7969
  {
7908
7970
  onClick: scrollNext,
@@ -7919,7 +7981,7 @@ function Carousel({
7919
7981
  }
7920
7982
  )
7921
7983
  ] }),
7922
- showDots && totalSlides > slidesToShow && /* @__PURE__ */ jsx37(
7984
+ showDots && totalSlides > slidesToShow && /* @__PURE__ */ jsx36(
7923
7985
  "div",
7924
7986
  {
7925
7987
  className: cn(
@@ -7928,7 +7990,7 @@ function Carousel({
7928
7990
  ),
7929
7991
  role: "tablist",
7930
7992
  "aria-label": "Carousel pagination",
7931
- children: Array.from({ length: maxIndex + 1 }, (_, idx) => /* @__PURE__ */ jsx37(
7993
+ children: Array.from({ length: maxIndex + 1 }, (_, idx) => /* @__PURE__ */ jsx36(
7932
7994
  "button",
7933
7995
  {
7934
7996
  onClick: () => scrollTo(idx),
@@ -7945,14 +8007,14 @@ function Carousel({
7945
8007
  ))
7946
8008
  }
7947
8009
  ),
7948
- showThumbnails && totalSlides > slidesToShow && /* @__PURE__ */ jsx37(
8010
+ showThumbnails && totalSlides > slidesToShow && /* @__PURE__ */ jsx36(
7949
8011
  "div",
7950
8012
  {
7951
8013
  className: cn(
7952
8014
  "absolute bottom-0 left-0 right-0 flex gap-2 p-4 bg-gradient-to-t from-black/50 to-transparent overflow-x-auto",
7953
8015
  isHorizontal ? "flex-row" : "flex-col"
7954
8016
  ),
7955
- children: React29.Children.map(children, (child, idx) => /* @__PURE__ */ jsx37(
8017
+ children: React29.Children.map(children, (child, idx) => /* @__PURE__ */ jsx36(
7956
8018
  "button",
7957
8019
  {
7958
8020
  onClick: () => scrollTo(idx),
@@ -7974,7 +8036,7 @@ function Carousel({
7974
8036
 
7975
8037
  // ../../components/ui/FallingIcons.tsx
7976
8038
  import React30 from "react";
7977
- import { jsx as jsx38, jsxs as jsxs33 } from "react/jsx-runtime";
8039
+ import { jsx as jsx37, jsxs as jsxs33 } from "react/jsx-runtime";
7978
8040
  var DEFAULT_COUNT = 24;
7979
8041
  var DEFAULT_SPEED_RANGE = [6, 14];
7980
8042
  var DEFAULT_SIZE_RANGE = [14, 28];
@@ -8069,8 +8131,8 @@ function FallingIcons({
8069
8131
  filter: `drop-shadow(0 0 ${4 * intensity}px ${glowColor}) drop-shadow(0 0 ${8 * intensity}px ${glowColor})`
8070
8132
  };
8071
8133
  }, [glow, glowColor, glowIntensity]);
8072
- const FallbackIcon = React30.useMemo(() => (props) => /* @__PURE__ */ jsx38("svg", { viewBox: "0 0 24 24", fill: "currentColor", "aria-hidden": "true", ...props, children: /* @__PURE__ */ jsx38("circle", { cx: "12", cy: "12", r: "10" }) }), []);
8073
- const TheIcon = imageUrl ? ({ className: imgClassName }) => /* @__PURE__ */ jsx38(
8134
+ const FallbackIcon = React30.useMemo(() => (props) => /* @__PURE__ */ jsx37("svg", { viewBox: "0 0 24 24", fill: "currentColor", "aria-hidden": "true", ...props, children: /* @__PURE__ */ jsx37("circle", { cx: "12", cy: "12", r: "10" }) }), []);
8135
+ const TheIcon = imageUrl ? ({ className: imgClassName }) => /* @__PURE__ */ jsx37(
8074
8136
  "img",
8075
8137
  {
8076
8138
  src: imageUrl,
@@ -8089,7 +8151,7 @@ function FallingIcons({
8089
8151
  ),
8090
8152
  style: { zIndex },
8091
8153
  children: [
8092
- /* @__PURE__ */ jsx38("style", { children: `
8154
+ /* @__PURE__ */ jsx37("style", { children: `
8093
8155
  @keyframes ${FallName} {
8094
8156
  0% { transform: translate3d(0, -10vh, 0); opacity: 0; }
8095
8157
  10% { opacity: 1; }
@@ -8122,7 +8184,7 @@ function FallingIcons({
8122
8184
  }
8123
8185
  }
8124
8186
  ` }),
8125
- /* @__PURE__ */ jsx38(
8187
+ /* @__PURE__ */ jsx37(
8126
8188
  "div",
8127
8189
  {
8128
8190
  className: cn(
@@ -8148,7 +8210,7 @@ function FallingIcons({
8148
8210
  const trailDelay = p.delay - (trailIndex + 1) * 0.15;
8149
8211
  const trailOpacity = 1 - (trailIndex + 1) * (1 / (trailParticles.length + 1));
8150
8212
  const trailScale = 1 - (trailIndex + 1) * 0.15;
8151
- return /* @__PURE__ */ jsx38(
8213
+ return /* @__PURE__ */ jsx37(
8152
8214
  "span",
8153
8215
  {
8154
8216
  className: cn("absolute top-0 will-change-transform pointer-events-none uv-falling-particle", colorClassName),
@@ -8162,7 +8224,7 @@ function FallingIcons({
8162
8224
  opacity: trailOpacity * 0.4,
8163
8225
  ["--fall"]: `${fallDist ?? (typeof window !== "undefined" ? window.innerHeight + 200 : 1200)}px`
8164
8226
  },
8165
- children: /* @__PURE__ */ jsx38(
8227
+ children: /* @__PURE__ */ jsx37(
8166
8228
  "span",
8167
8229
  {
8168
8230
  className: "inline-block uv-sway",
@@ -8174,7 +8236,7 @@ function FallingIcons({
8174
8236
  animationIterationCount: "infinite",
8175
8237
  ["--amp"]: `${Math.round(p.driftAmp)}px`
8176
8238
  },
8177
- children: /* @__PURE__ */ jsx38(
8239
+ children: /* @__PURE__ */ jsx37(
8178
8240
  "span",
8179
8241
  {
8180
8242
  className: "block",
@@ -8183,7 +8245,7 @@ function FallingIcons({
8183
8245
  height: p.size,
8184
8246
  ...glowStyles
8185
8247
  },
8186
- children: /* @__PURE__ */ jsx38(TheIcon, { className: cn("w-full h-full text-primary/70", colorClassName) })
8248
+ children: /* @__PURE__ */ jsx37(TheIcon, { className: cn("w-full h-full text-primary/70", colorClassName) })
8187
8249
  }
8188
8250
  )
8189
8251
  }
@@ -8192,7 +8254,7 @@ function FallingIcons({
8192
8254
  `${p.key}-trail-${trailIndex}`
8193
8255
  );
8194
8256
  }),
8195
- /* @__PURE__ */ jsx38(
8257
+ /* @__PURE__ */ jsx37(
8196
8258
  "span",
8197
8259
  {
8198
8260
  className: cn("absolute top-0 will-change-transform pointer-events-auto uv-falling-particle", colorClassName),
@@ -8218,7 +8280,7 @@ function FallingIcons({
8218
8280
  return next;
8219
8281
  });
8220
8282
  },
8221
- children: /* @__PURE__ */ jsx38(
8283
+ children: /* @__PURE__ */ jsx37(
8222
8284
  "span",
8223
8285
  {
8224
8286
  className: "inline-block uv-sway",
@@ -8230,7 +8292,7 @@ function FallingIcons({
8230
8292
  animationIterationCount: "infinite",
8231
8293
  ["--amp"]: `${Math.round(p.driftAmp)}px`
8232
8294
  },
8233
- children: /* @__PURE__ */ jsx38(
8295
+ children: /* @__PURE__ */ jsx37(
8234
8296
  "span",
8235
8297
  {
8236
8298
  className: cn(
@@ -8246,7 +8308,7 @@ function FallingIcons({
8246
8308
  ["--popName"]: PopName,
8247
8309
  ...glowStyles
8248
8310
  },
8249
- children: /* @__PURE__ */ jsx38(TheIcon, { className: cn("w-full h-full text-primary/70", colorClassName) })
8311
+ children: /* @__PURE__ */ jsx37(TheIcon, { className: cn("w-full h-full text-primary/70", colorClassName) })
8250
8312
  }
8251
8313
  )
8252
8314
  }
@@ -8265,7 +8327,7 @@ function FallingIcons({
8265
8327
  // ../../components/ui/List.tsx
8266
8328
  import * as React31 from "react";
8267
8329
  import { ChevronRight as ChevronRight7 } from "lucide-react";
8268
- import { Fragment as Fragment13, jsx as jsx39, jsxs as jsxs34 } from "react/jsx-runtime";
8330
+ import { Fragment as Fragment13, jsx as jsx38, jsxs as jsxs34 } from "react/jsx-runtime";
8269
8331
  var SIZE_STYLES2 = {
8270
8332
  xs: { itemPad: "px-2 py-1.5", densePad: "px-2 py-1", label: "text-xs", desc: "text-[11px]", icon: "h-3.5 w-3.5", avatar: "h-6 w-6" },
8271
8333
  sm: { itemPad: "px-3 py-2", densePad: "px-3 py-1.5", label: "text-[13px]", desc: "text-[12px]", icon: "h-4 w-4", avatar: "h-8 w-8" },
@@ -8282,10 +8344,10 @@ var BADGE_VARIANTS = {
8282
8344
  var ListItemSkeleton = ({ size }) => {
8283
8345
  const sz = SIZE_STYLES2[size];
8284
8346
  return /* @__PURE__ */ jsxs34("div", { className: cn("flex items-center gap-3 animate-pulse", sz.itemPad), children: [
8285
- /* @__PURE__ */ jsx39("div", { className: cn("rounded-full bg-muted shrink-0", sz.avatar) }),
8347
+ /* @__PURE__ */ jsx38("div", { className: cn("rounded-full bg-muted shrink-0", sz.avatar) }),
8286
8348
  /* @__PURE__ */ jsxs34("div", { className: "flex-1 space-y-2", children: [
8287
- /* @__PURE__ */ jsx39("div", { className: "h-4 bg-muted rounded w-3/4" }),
8288
- /* @__PURE__ */ jsx39("div", { className: "h-3 bg-muted rounded w-1/2" })
8349
+ /* @__PURE__ */ jsx38("div", { className: "h-4 bg-muted rounded w-3/4" }),
8350
+ /* @__PURE__ */ jsx38("div", { className: "h-3 bg-muted rounded w-1/2" })
8289
8351
  ] })
8290
8352
  ] });
8291
8353
  };
@@ -8319,12 +8381,12 @@ var ListRoot = React31.forwardRef(
8319
8381
  striped: "rounded-lg border border-border overflow-hidden"
8320
8382
  };
8321
8383
  if (loading2) {
8322
- return /* @__PURE__ */ jsx39(Comp, { ref, className: cn("group/list", variantClasses[variant], inset && "p-1.5 md:p-2", divided && "divide-y divide-border/60", className), ...rest, children: Array.from({ length: loadingCount }).map((_, i) => /* @__PURE__ */ jsx39(ListItemSkeleton, { size }, i)) });
8384
+ return /* @__PURE__ */ jsx38(Comp, { ref, className: cn("group/list", variantClasses[variant], inset && "p-1.5 md:p-2", divided && "divide-y divide-border/60", className), ...rest, children: Array.from({ length: loadingCount }).map((_, i) => /* @__PURE__ */ jsx38(ListItemSkeleton, { size }, i)) });
8323
8385
  }
8324
8386
  if (!hasChildren && emptyText) {
8325
- return /* @__PURE__ */ jsx39(Comp, { ref, className: cn("group/list", variantClasses[variant], inset && "p-1.5 md:p-2", className), ...rest, children: /* @__PURE__ */ jsx39("div", { className: "text-center py-8 text-muted-foreground text-sm", children: emptyText }) });
8387
+ return /* @__PURE__ */ jsx38(Comp, { ref, className: cn("group/list", variantClasses[variant], inset && "p-1.5 md:p-2", className), ...rest, children: /* @__PURE__ */ jsx38("div", { className: "text-center py-8 text-muted-foreground text-sm", children: emptyText }) });
8326
8388
  }
8327
- return /* @__PURE__ */ jsx39(
8389
+ return /* @__PURE__ */ jsx38(
8328
8390
  Comp,
8329
8391
  {
8330
8392
  ref,
@@ -8414,18 +8476,18 @@ var ListItem = React31.forwardRef(
8414
8476
  className: cn("flex items-center gap-3", padding, "group/item relative"),
8415
8477
  ...headerProps,
8416
8478
  children: [
8417
- avatar && /* @__PURE__ */ jsx39("div", { className: cn("shrink-0", sz.avatar), children: typeof avatar === "string" ? /* @__PURE__ */ jsx39("img", { src: avatar, alt: "", className: cn("rounded-full object-cover", sz.avatar) }) : avatar }),
8418
- Left && !avatar && /* @__PURE__ */ jsx39("span", { className: cn("text-muted-foreground shrink-0", sz.icon), children: /* @__PURE__ */ jsx39(Left, { className: cn(sz.icon) }) }),
8479
+ avatar && /* @__PURE__ */ jsx38("div", { className: cn("shrink-0", sz.avatar), children: typeof avatar === "string" ? /* @__PURE__ */ jsx38("img", { src: avatar, alt: "", className: cn("rounded-full object-cover", sz.avatar) }) : avatar }),
8480
+ Left && !avatar && /* @__PURE__ */ jsx38("span", { className: cn("text-muted-foreground shrink-0", sz.icon), children: /* @__PURE__ */ jsx38(Left, { className: cn(sz.icon) }) }),
8419
8481
  /* @__PURE__ */ jsxs34("div", { className: "min-w-0 flex-1", children: [
8420
8482
  /* @__PURE__ */ jsxs34("div", { className: "flex items-center gap-2", children: [
8421
- label && /* @__PURE__ */ jsx39("div", { className: cn(sz.label, "text-foreground font-medium truncate"), children: label }),
8422
- badge && /* @__PURE__ */ jsx39("span", { className: cn("px-2 py-0.5 rounded-full text-[11px] font-medium shrink-0", BADGE_VARIANTS[badgeVariant]), children: badge })
8483
+ label && /* @__PURE__ */ jsx38("div", { className: cn(sz.label, "text-foreground font-medium truncate"), children: label }),
8484
+ badge && /* @__PURE__ */ jsx38("span", { className: cn("px-2 py-0.5 rounded-full text-[11px] font-medium shrink-0", BADGE_VARIANTS[badgeVariant]), children: badge })
8423
8485
  ] }),
8424
- description && /* @__PURE__ */ jsx39("div", { className: cn(sz.desc, "text-muted-foreground truncate mt-0.5"), children: description }),
8425
- children && /* @__PURE__ */ jsx39("div", { className: "mt-1", children })
8486
+ description && /* @__PURE__ */ jsx38("div", { className: cn(sz.desc, "text-muted-foreground truncate mt-0.5"), children: description }),
8487
+ children && /* @__PURE__ */ jsx38("div", { className: "mt-1", children })
8426
8488
  ] }),
8427
- action && /* @__PURE__ */ jsx39("div", { className: "opacity-0 group-hover/item:opacity-100 transition-opacity shrink-0", children: action }),
8428
- collapsible ? /* @__PURE__ */ jsx39(
8489
+ action && /* @__PURE__ */ jsx38("div", { className: "opacity-0 group-hover/item:opacity-100 transition-opacity shrink-0", children: action }),
8490
+ collapsible ? /* @__PURE__ */ jsx38(
8429
8491
  "span",
8430
8492
  {
8431
8493
  className: cn(
@@ -8433,13 +8495,13 @@ var ListItem = React31.forwardRef(
8433
8495
  sz.icon,
8434
8496
  isExpanded && "rotate-90"
8435
8497
  ),
8436
- children: /* @__PURE__ */ jsx39(ChevronRight7, { className: cn(sz.icon) })
8498
+ children: /* @__PURE__ */ jsx38(ChevronRight7, { className: cn(sz.icon) })
8437
8499
  }
8438
- ) : Right && /* @__PURE__ */ jsx39("span", { className: cn("text-muted-foreground shrink-0", sz.icon), children: /* @__PURE__ */ jsx39(Right, { className: cn(sz.icon) }) })
8500
+ ) : Right && /* @__PURE__ */ jsx38("span", { className: cn("text-muted-foreground shrink-0", sz.icon), children: /* @__PURE__ */ jsx38(Right, { className: cn(sz.icon) }) })
8439
8501
  ]
8440
8502
  }
8441
8503
  ),
8442
- collapsible && isExpanded && expandContent && /* @__PURE__ */ jsx39("div", { className: cn("border-t border-border/50 bg-muted/20", padding, "pt-3"), children: expandContent })
8504
+ collapsible && isExpanded && expandContent && /* @__PURE__ */ jsx38("div", { className: cn("border-t border-border/50 bg-muted/20", padding, "pt-3"), children: expandContent })
8443
8505
  ] });
8444
8506
  const baseCls = cn(
8445
8507
  "relative w-full",
@@ -8449,10 +8511,10 @@ var ListItem = React31.forwardRef(
8449
8511
  );
8450
8512
  if (href) {
8451
8513
  const A = as === "a" ? "a" : "a";
8452
- return /* @__PURE__ */ jsx39(A, { ref, href, className: cn(baseCls, "block"), ...rest, children: inner });
8514
+ return /* @__PURE__ */ jsx38(A, { ref, href, className: cn(baseCls, "block"), ...rest, children: inner });
8453
8515
  }
8454
8516
  if (as === "button" && !collapsible) {
8455
- return /* @__PURE__ */ jsx39(
8517
+ return /* @__PURE__ */ jsx38(
8456
8518
  "button",
8457
8519
  {
8458
8520
  ref,
@@ -8464,7 +8526,7 @@ var ListItem = React31.forwardRef(
8464
8526
  );
8465
8527
  }
8466
8528
  if (collapsible) {
8467
- return /* @__PURE__ */ jsx39(
8529
+ return /* @__PURE__ */ jsx38(
8468
8530
  "div",
8469
8531
  {
8470
8532
  ref,
@@ -8475,7 +8537,7 @@ var ListItem = React31.forwardRef(
8475
8537
  );
8476
8538
  }
8477
8539
  const Comp = as;
8478
- return /* @__PURE__ */ jsx39(Comp, { ref, className: baseCls, ...rest, children: inner });
8540
+ return /* @__PURE__ */ jsx38(Comp, { ref, className: baseCls, ...rest, children: inner });
8479
8541
  }
8480
8542
  );
8481
8543
  ListItem.displayName = "List.Item";
@@ -8485,7 +8547,7 @@ var List_default = List;
8485
8547
  // ../../components/ui/Watermark.tsx
8486
8548
  import * as React32 from "react";
8487
8549
  import { createPortal as createPortal9 } from "react-dom";
8488
- import { Fragment as Fragment14, jsx as jsx40, jsxs as jsxs35 } from "react/jsx-runtime";
8550
+ import { Fragment as Fragment14, jsx as jsx39, jsxs as jsxs35 } from "react/jsx-runtime";
8489
8551
  var PRESETS2 = {
8490
8552
  confidential: { text: "CONFIDENTIAL", color: "rgba(220, 38, 38, 0.15)", rotate: -22, fontSize: 16, fontWeight: "bold" },
8491
8553
  draft: { text: "DRAFT", color: "rgba(59, 130, 246, 0.15)", rotate: -22, fontSize: 18, fontWeight: "bold" },
@@ -8740,7 +8802,7 @@ var Watermark = ({
8740
8802
  if (dataURL) overlayStyle.backgroundImage = `url(${dataURL})`;
8741
8803
  const animationClass = animate ? getAnimationClass(animationVariant, visible) : "";
8742
8804
  const blurClass = blur ? `backdrop-blur-[${blurAmount}px]` : "";
8743
- const overlay = /* @__PURE__ */ jsx40(
8805
+ const overlay = /* @__PURE__ */ jsx39(
8744
8806
  "div",
8745
8807
  {
8746
8808
  role: interactive ? "button" : void 0,
@@ -8779,7 +8841,7 @@ var Watermark_default = Watermark;
8779
8841
  // ../../components/ui/Timeline.tsx
8780
8842
  import * as React33 from "react";
8781
8843
  import { ChevronDown as ChevronDown4 } from "lucide-react";
8782
- import { jsx as jsx41, jsxs as jsxs36 } from "react/jsx-runtime";
8844
+ import { jsx as jsx40, jsxs as jsxs36 } from "react/jsx-runtime";
8783
8845
  var SIZE_STYLE = {
8784
8846
  sm: { dot: "h-2.5 w-2.5", iconDot: "h-6 w-6", padY: "py-3", densePadY: "py-2", title: "text-sm", desc: "text-xs", time: "text-[11px]", icon: "h-3.5 w-3.5" },
8785
8847
  md: { dot: "h-3 w-3", iconDot: "h-8 w-8", padY: "py-4", densePadY: "py-2.5", title: "text-base", desc: "text-sm", time: "text-xs", icon: "h-4 w-4" },
@@ -8805,21 +8867,21 @@ var Marker = ({ index, last, size, color, status = "default", lineColor, lineSty
8805
8867
  const dotColor = color ? `background:${color}` : void 0;
8806
8868
  const cls = color ? void 0 : STATUS_COLOR[status];
8807
8869
  return /* @__PURE__ */ jsxs36("div", { className: "flex flex-col items-center", children: [
8808
- dot ? /* @__PURE__ */ jsx41("div", { className: "flex items-center justify-center", children: dot }) : Icon ? /* @__PURE__ */ jsx41(
8870
+ dot ? /* @__PURE__ */ jsx40("div", { className: "flex items-center justify-center", children: dot }) : Icon ? /* @__PURE__ */ jsx40(
8809
8871
  "div",
8810
8872
  {
8811
8873
  className: cn("rounded-full ring-2 ring-background flex items-center justify-center", sz.iconDot, cls, active && "ring-primary/40 ring-4"),
8812
8874
  style: dotColor ? { background: color } : void 0,
8813
- children: /* @__PURE__ */ jsx41(Icon, { className: cn("text-white", sz.icon) })
8875
+ children: /* @__PURE__ */ jsx40(Icon, { className: cn("text-white", sz.icon) })
8814
8876
  }
8815
- ) : /* @__PURE__ */ jsx41(
8877
+ ) : /* @__PURE__ */ jsx40(
8816
8878
  "div",
8817
8879
  {
8818
8880
  className: cn("rounded-full ring-2 ring-background", sz.dot, cls, active && "ring-primary/40 ring-4 scale-125"),
8819
8881
  style: dotColor ? { background: color } : void 0
8820
8882
  }
8821
8883
  ),
8822
- !last && showLine && /* @__PURE__ */ jsx41(
8884
+ !last && showLine && /* @__PURE__ */ jsx40(
8823
8885
  "div",
8824
8886
  {
8825
8887
  className: cn("flex-1 border-l-2", LINE_STYLE_MAP[lineStyle]),
@@ -8845,8 +8907,8 @@ var TimelineRoot = React33.forwardRef(
8845
8907
  children,
8846
8908
  ...rest
8847
8909
  }, ref) => {
8848
- const content = items ? items.map((it, i) => /* @__PURE__ */ jsx41(TimelineItem, { ...it, className: cn(itemClassName, it.className), "data-index": i, "data-last": i === (items?.length ?? 0) - 1 }, i)) : children;
8849
- return /* @__PURE__ */ jsx41(TimelineContext.Provider, { value: { align, variant, size, mode, lineColor, lineStyle, itemClassName, animate, dense, showLine }, children: /* @__PURE__ */ jsx41(
8910
+ const content = items ? items.map((it, i) => /* @__PURE__ */ jsx40(TimelineItem, { ...it, className: cn(itemClassName, it.className), "data-index": i, "data-last": i === (items?.length ?? 0) - 1 }, i)) : children;
8911
+ return /* @__PURE__ */ jsx40(TimelineContext.Provider, { value: { align, variant, size, mode, lineColor, lineStyle, itemClassName, animate, dense, showLine }, children: /* @__PURE__ */ jsx40(
8850
8912
  "div",
8851
8913
  {
8852
8914
  ref,
@@ -8857,7 +8919,7 @@ var TimelineRoot = React33.forwardRef(
8857
8919
  className
8858
8920
  ),
8859
8921
  ...rest,
8860
- children: mode === "vertical" ? /* @__PURE__ */ jsx41("div", { className: "space-y-0", children: content }) : content
8922
+ children: mode === "vertical" ? /* @__PURE__ */ jsx40("div", { className: "space-y-0", children: content }) : content
8861
8923
  }
8862
8924
  ) });
8863
8925
  }
@@ -8909,33 +8971,33 @@ var TimelineItem = React33.forwardRef(
8909
8971
  /* @__PURE__ */ jsxs36("div", { className: "flex items-start justify-between gap-2", children: [
8910
8972
  /* @__PURE__ */ jsxs36("div", { className: "flex-1 min-w-0", children: [
8911
8973
  title && /* @__PURE__ */ jsxs36("div", { className: "flex items-center gap-2", children: [
8912
- /* @__PURE__ */ jsx41("div", { className: cn("font-semibold text-foreground", sz.title), children: title }),
8913
- badge && /* @__PURE__ */ jsx41("span", { className: "px-2 py-0.5 rounded-full text-[10px] font-medium bg-primary/10 text-primary", children: badge })
8974
+ /* @__PURE__ */ jsx40("div", { className: cn("font-semibold text-foreground", sz.title), children: title }),
8975
+ badge && /* @__PURE__ */ jsx40("span", { className: "px-2 py-0.5 rounded-full text-[10px] font-medium bg-primary/10 text-primary", children: badge })
8914
8976
  ] }),
8915
- description && /* @__PURE__ */ jsx41("div", { className: cn("text-muted-foreground mt-1", sz.desc), children: description }),
8916
- children && /* @__PURE__ */ jsx41("div", { className: "mt-2", children })
8977
+ description && /* @__PURE__ */ jsx40("div", { className: cn("text-muted-foreground mt-1", sz.desc), children: description }),
8978
+ children && /* @__PURE__ */ jsx40("div", { className: "mt-2", children })
8917
8979
  ] }),
8918
- collapsible && /* @__PURE__ */ jsx41(
8980
+ collapsible && /* @__PURE__ */ jsx40(
8919
8981
  "button",
8920
8982
  {
8921
8983
  type: "button",
8922
8984
  onClick: toggleExpanded,
8923
8985
  className: cn("text-muted-foreground hover:text-foreground transition-transform p-1", isExpanded && "rotate-180"),
8924
- children: /* @__PURE__ */ jsx41(ChevronDown4, { className: "h-4 w-4" })
8986
+ children: /* @__PURE__ */ jsx40(ChevronDown4, { className: "h-4 w-4" })
8925
8987
  }
8926
8988
  )
8927
8989
  ] }),
8928
- time && /* @__PURE__ */ jsx41("div", { className: cn("mt-2 text-muted-foreground flex items-center gap-1", sz.time), children: time }),
8929
- collapsible && isExpanded && expandContent && /* @__PURE__ */ jsx41("div", { className: "mt-3 pt-3 border-t border-border/50 text-sm", children: expandContent })
8990
+ time && /* @__PURE__ */ jsx40("div", { className: cn("mt-2 text-muted-foreground flex items-center gap-1", sz.time), children: time }),
8991
+ collapsible && isExpanded && expandContent && /* @__PURE__ */ jsx40("div", { className: "mt-3 pt-3 border-t border-border/50 text-sm", children: expandContent })
8930
8992
  ] });
8931
8993
  const markerWidth = Icon || dot ? "w-auto" : "w-6";
8932
8994
  const leftSide = /* @__PURE__ */ jsxs36("div", { className: cn("flex items-stretch gap-4", padding, ctx.animate && "animate-in slide-in-from-left duration-500"), style: { animationDelay: ctx.animate ? `${(idx ?? 0) * 100}ms` : void 0 }, children: [
8933
- /* @__PURE__ */ jsx41("div", { className: cn("flex-shrink-0 flex items-stretch", markerWidth), children: /* @__PURE__ */ jsx41(Marker, { index: idx ?? 0, last: isLast, size: ctx.size, color, status, lineColor: ctx.lineColor, lineStyle: ctx.lineStyle, active, dot, icon: Icon, showLine: ctx.showLine }) }),
8934
- /* @__PURE__ */ jsx41("div", { className: "flex-1", children: contentBox })
8995
+ /* @__PURE__ */ jsx40("div", { className: cn("flex-shrink-0 flex items-stretch", markerWidth), children: /* @__PURE__ */ jsx40(Marker, { index: idx ?? 0, last: isLast, size: ctx.size, color, status, lineColor: ctx.lineColor, lineStyle: ctx.lineStyle, active, dot, icon: Icon, showLine: ctx.showLine }) }),
8996
+ /* @__PURE__ */ jsx40("div", { className: "flex-1", children: contentBox })
8935
8997
  ] });
8936
8998
  const rightSide = /* @__PURE__ */ jsxs36("div", { className: cn("flex items-stretch gap-4", padding, ctx.animate && "animate-in slide-in-from-right duration-500"), style: { animationDelay: ctx.animate ? `${(idx ?? 0) * 100}ms` : void 0 }, children: [
8937
- /* @__PURE__ */ jsx41("div", { className: "flex-1 flex justify-end", children: contentBox }),
8938
- /* @__PURE__ */ jsx41("div", { className: cn("flex-shrink-0 flex items-stretch", markerWidth), children: /* @__PURE__ */ jsx41(Marker, { index: idx ?? 0, last: isLast, size: ctx.size, color, status, lineColor: ctx.lineColor, lineStyle: ctx.lineStyle, active, dot, icon: Icon, showLine: ctx.showLine }) })
8999
+ /* @__PURE__ */ jsx40("div", { className: "flex-1 flex justify-end", children: contentBox }),
9000
+ /* @__PURE__ */ jsx40("div", { className: cn("flex-shrink-0 flex items-stretch", markerWidth), children: /* @__PURE__ */ jsx40(Marker, { index: idx ?? 0, last: isLast, size: ctx.size, color, status, lineColor: ctx.lineColor, lineStyle: ctx.lineStyle, active, dot, icon: Icon, showLine: ctx.showLine }) })
8939
9001
  ] });
8940
9002
  const horizontalItem = /* @__PURE__ */ jsxs36(
8941
9003
  "div",
@@ -8946,19 +9008,19 @@ var TimelineItem = React33.forwardRef(
8946
9008
  ),
8947
9009
  style: { animationDelay: ctx.animate ? `${(idx ?? 0) * 100}ms` : void 0 },
8948
9010
  children: [
8949
- /* @__PURE__ */ jsx41(Marker, { index: idx ?? 0, last: isLast, size: ctx.size, color, status, lineColor: ctx.lineColor, lineStyle: ctx.lineStyle, active, dot, icon: Icon, showLine: false }),
8950
- !isLast && ctx.showLine && /* @__PURE__ */ jsx41("div", { className: cn("h-px w-full border-t-2", LINE_STYLE_MAP[ctx.lineStyle]), style: { borderColor: ctx.lineColor || "hsl(var(--border))" } }),
9011
+ /* @__PURE__ */ jsx40(Marker, { index: idx ?? 0, last: isLast, size: ctx.size, color, status, lineColor: ctx.lineColor, lineStyle: ctx.lineStyle, active, dot, icon: Icon, showLine: false }),
9012
+ !isLast && ctx.showLine && /* @__PURE__ */ jsx40("div", { className: cn("h-px w-full border-t-2", LINE_STYLE_MAP[ctx.lineStyle]), style: { borderColor: ctx.lineColor || "hsl(var(--border))" } }),
8951
9013
  contentBox
8952
9014
  ]
8953
9015
  }
8954
9016
  );
8955
9017
  if (ctx.mode === "horizontal") {
8956
- return /* @__PURE__ */ jsx41("div", { ref, className: cn("relative", className), ...rest, children: horizontalItem });
9018
+ return /* @__PURE__ */ jsx40("div", { ref, className: cn("relative", className), ...rest, children: horizontalItem });
8957
9019
  }
8958
9020
  let row = leftSide;
8959
9021
  if (ctx.align === "right") row = rightSide;
8960
9022
  if (ctx.align === "alternate") row = (idx ?? 0) % 2 === 0 ? leftSide : rightSide;
8961
- return /* @__PURE__ */ jsx41("div", { ref, className: cn("relative", className), ...rest, children: row });
9023
+ return /* @__PURE__ */ jsx40("div", { ref, className: cn("relative", className), ...rest, children: row });
8962
9024
  }
8963
9025
  );
8964
9026
  TimelineItem.displayName = "Timeline.Item";
@@ -8968,7 +9030,7 @@ var Timeline_default = Timeline;
8968
9030
  // ../../components/ui/ColorPicker.tsx
8969
9031
  import * as React34 from "react";
8970
9032
  import { Pipette, X as X10, Copy, Check as Check8, Palette, History } from "lucide-react";
8971
- import { jsx as jsx42, jsxs as jsxs37 } from "react/jsx-runtime";
9033
+ import { jsx as jsx41, jsxs as jsxs37 } from "react/jsx-runtime";
8972
9034
  var clamp = (n, min, max) => Math.max(min, Math.min(max, n));
8973
9035
  function hexToRgb(hex) {
8974
9036
  const str = hex.replace(/^#/, "").trim();
@@ -9127,7 +9189,7 @@ var Swatch = ({
9127
9189
  md: "h-6 w-6",
9128
9190
  lg: "h-8 w-8"
9129
9191
  };
9130
- return /* @__PURE__ */ jsx42(
9192
+ return /* @__PURE__ */ jsx41(
9131
9193
  "button",
9132
9194
  {
9133
9195
  type: "button",
@@ -9266,7 +9328,7 @@ function ColorPicker({
9266
9328
  "aria-label": "Open color picker",
9267
9329
  children: [
9268
9330
  /* @__PURE__ */ jsxs37("div", { className: "flex items-center gap-2", children: [
9269
- /* @__PURE__ */ jsx42(
9331
+ /* @__PURE__ */ jsx41(
9270
9332
  "span",
9271
9333
  {
9272
9334
  className: cn(
@@ -9276,9 +9338,9 @@ function ColorPicker({
9276
9338
  style: { backgroundColor: withAlpha ? `rgba(${rgba.r}, ${rgba.g}, ${rgba.b}, ${rgba.a})` : hexForInput }
9277
9339
  }
9278
9340
  ),
9279
- /* @__PURE__ */ jsx42("span", { className: "font-mono text-muted-foreground", children: text })
9341
+ /* @__PURE__ */ jsx41("span", { className: "font-mono text-muted-foreground", children: text })
9280
9342
  ] }),
9281
- /* @__PURE__ */ jsx42(Pipette, { className: cn(size === "sm" ? "w-3.5 h-3.5" : size === "lg" ? "w-5 h-5" : "w-4 h-4", "text-muted-foreground") })
9343
+ /* @__PURE__ */ jsx41(Pipette, { className: cn(size === "sm" ? "w-3.5 h-3.5" : size === "lg" ? "w-5 h-5" : "w-4 h-4", "text-muted-foreground") })
9282
9344
  ]
9283
9345
  }
9284
9346
  );
@@ -9288,7 +9350,7 @@ function ColorPicker({
9288
9350
  default: 320,
9289
9351
  full: 360
9290
9352
  };
9291
- return /* @__PURE__ */ jsx42("div", { className: cn("inline-block w-full", className), ...rest, children: /* @__PURE__ */ jsx42(
9353
+ return /* @__PURE__ */ jsx41("div", { className: cn("inline-block w-full", className), ...rest, children: /* @__PURE__ */ jsx41(
9292
9354
  Popover,
9293
9355
  {
9294
9356
  trigger,
@@ -9300,7 +9362,7 @@ function ColorPicker({
9300
9362
  contentClassName: cn("p-3 rounded-lg border border-border bg-card shadow-lg", contentClassName),
9301
9363
  children: /* @__PURE__ */ jsxs37("div", { className: "space-y-3", children: [
9302
9364
  variant !== "minimal" && /* @__PURE__ */ jsxs37("div", { className: "flex items-center gap-2", children: [
9303
- /* @__PURE__ */ jsx42("input", { type: "color", value: hexForInput, onChange: handleNativeChange, className: "h-9 w-9 rounded-md cursor-pointer border border-border" }),
9365
+ /* @__PURE__ */ jsx41("input", { type: "color", value: hexForInput, onChange: handleNativeChange, className: "h-9 w-9 rounded-md cursor-pointer border border-border" }),
9304
9366
  /* @__PURE__ */ jsxs37(
9305
9367
  "button",
9306
9368
  {
@@ -9308,7 +9370,7 @@ function ColorPicker({
9308
9370
  onClick: tryEyedropper,
9309
9371
  className: cn("h-9 px-3 rounded-md border border-border text-xs hover:bg-accent/10 transition-colors flex items-center gap-1.5"),
9310
9372
  children: [
9311
- /* @__PURE__ */ jsx42(Pipette, { className: "w-3.5 h-3.5" }),
9373
+ /* @__PURE__ */ jsx41(Pipette, { className: "w-3.5 h-3.5" }),
9312
9374
  variant === "full" && "Pick"
9313
9375
  ]
9314
9376
  }
@@ -9323,7 +9385,7 @@ function ColorPicker({
9323
9385
  copied && "bg-green-500/10 border-green-500/30"
9324
9386
  ),
9325
9387
  children: [
9326
- copied ? /* @__PURE__ */ jsx42(Check8, { className: "w-3.5 h-3.5 text-green-600" }) : /* @__PURE__ */ jsx42(Copy, { className: "w-3.5 h-3.5" }),
9388
+ copied ? /* @__PURE__ */ jsx41(Check8, { className: "w-3.5 h-3.5 text-green-600" }) : /* @__PURE__ */ jsx41(Copy, { className: "w-3.5 h-3.5" }),
9327
9389
  variant === "full" && (copied ? "Copied!" : "Copy")
9328
9390
  ]
9329
9391
  }
@@ -9335,14 +9397,14 @@ function ColorPicker({
9335
9397
  onClick: clear,
9336
9398
  className: "ml-auto h-9 px-2 rounded-md border border-border text-xs hover:bg-destructive/10 transition-colors flex items-center gap-1",
9337
9399
  children: [
9338
- /* @__PURE__ */ jsx42(X10, { className: "w-3.5 h-3.5" }),
9400
+ /* @__PURE__ */ jsx41(X10, { className: "w-3.5 h-3.5" }),
9339
9401
  variant === "full" && "Clear"
9340
9402
  ]
9341
9403
  }
9342
9404
  )
9343
9405
  ] }),
9344
9406
  /* @__PURE__ */ jsxs37("div", { className: "flex items-center gap-2", children: [
9345
- /* @__PURE__ */ jsx42(
9407
+ /* @__PURE__ */ jsx41(
9346
9408
  Input_default,
9347
9409
  {
9348
9410
  value: text,
@@ -9353,7 +9415,7 @@ function ColorPicker({
9353
9415
  className: "flex-1"
9354
9416
  }
9355
9417
  ),
9356
- variant === "minimal" && copyable && /* @__PURE__ */ jsx42(
9418
+ variant === "minimal" && copyable && /* @__PURE__ */ jsx41(
9357
9419
  "button",
9358
9420
  {
9359
9421
  type: "button",
@@ -9362,17 +9424,17 @@ function ColorPicker({
9362
9424
  "h-9 w-9 rounded-md border border-border hover:bg-accent/10 transition-colors flex items-center justify-center",
9363
9425
  copied && "bg-green-500/10 border-green-500/30"
9364
9426
  ),
9365
- children: copied ? /* @__PURE__ */ jsx42(Check8, { className: "w-3.5 h-3.5 text-green-600" }) : /* @__PURE__ */ jsx42(Copy, { className: "w-3.5 h-3.5" })
9427
+ children: copied ? /* @__PURE__ */ jsx41(Check8, { className: "w-3.5 h-3.5 text-green-600" }) : /* @__PURE__ */ jsx41(Copy, { className: "w-3.5 h-3.5" })
9366
9428
  }
9367
9429
  )
9368
9430
  ] }),
9369
- withAlpha && /* @__PURE__ */ jsx42("div", { className: "pt-1", children: /* @__PURE__ */ jsx42(Slider, { min: 0, max: 100, step: 1, value: alphaPct, onChange: (v) => setAlpha(v), label: "Alpha", showValue: true, formatValue: (v) => `${v}%`, size: "sm" }) }),
9431
+ withAlpha && /* @__PURE__ */ jsx41("div", { className: "pt-1", children: /* @__PURE__ */ jsx41(Slider, { min: 0, max: 100, step: 1, value: alphaPct, onChange: (v) => setAlpha(v), label: "Alpha", showValue: true, formatValue: (v) => `${v}%`, size: "sm" }) }),
9370
9432
  variant !== "minimal" && /* @__PURE__ */ jsxs37("div", { children: [
9371
9433
  /* @__PURE__ */ jsxs37("div", { className: "text-xs font-medium text-muted-foreground mb-2 flex items-center gap-1.5", children: [
9372
- /* @__PURE__ */ jsx42(Palette, { className: "w-3.5 h-3.5" }),
9434
+ /* @__PURE__ */ jsx41(Palette, { className: "w-3.5 h-3.5" }),
9373
9435
  " Presets"
9374
9436
  ] }),
9375
- /* @__PURE__ */ jsx42("div", { className: "grid grid-cols-8 gap-2", children: swatches.map((c) => /* @__PURE__ */ jsx42(
9437
+ /* @__PURE__ */ jsx41("div", { className: "grid grid-cols-8 gap-2", children: swatches.map((c) => /* @__PURE__ */ jsx41(
9376
9438
  Swatch,
9377
9439
  {
9378
9440
  color: c,
@@ -9390,10 +9452,10 @@ function ColorPicker({
9390
9452
  ] }),
9391
9453
  showRecent && recentColors.length > 0 && /* @__PURE__ */ jsxs37("div", { children: [
9392
9454
  /* @__PURE__ */ jsxs37("div", { className: "text-xs font-medium text-muted-foreground mb-2 flex items-center gap-1.5", children: [
9393
- /* @__PURE__ */ jsx42(History, { className: "w-3.5 h-3.5" }),
9455
+ /* @__PURE__ */ jsx41(History, { className: "w-3.5 h-3.5" }),
9394
9456
  " Recent"
9395
9457
  ] }),
9396
- /* @__PURE__ */ jsx42("div", { className: "flex gap-2 flex-wrap", children: recentColors.map((c, i) => /* @__PURE__ */ jsx42(
9458
+ /* @__PURE__ */ jsx41("div", { className: "flex gap-2 flex-wrap", children: recentColors.map((c, i) => /* @__PURE__ */ jsx41(
9397
9459
  Swatch,
9398
9460
  {
9399
9461
  color: c,
@@ -9410,11 +9472,11 @@ function ColorPicker({
9410
9472
  )) })
9411
9473
  ] }),
9412
9474
  showHarmony && harmony && variant !== "minimal" && /* @__PURE__ */ jsxs37("div", { children: [
9413
- /* @__PURE__ */ jsx42("div", { className: "text-xs font-medium text-muted-foreground mb-2", children: "Harmony" }),
9475
+ /* @__PURE__ */ jsx41("div", { className: "text-xs font-medium text-muted-foreground mb-2", children: "Harmony" }),
9414
9476
  /* @__PURE__ */ jsxs37("div", { className: "space-y-2", children: [
9415
9477
  /* @__PURE__ */ jsxs37("div", { className: "flex items-center gap-2", children: [
9416
- /* @__PURE__ */ jsx42("span", { className: "text-xs text-muted-foreground w-24", children: "Complementary" }),
9417
- /* @__PURE__ */ jsx42(
9478
+ /* @__PURE__ */ jsx41("span", { className: "text-xs text-muted-foreground w-24", children: "Complementary" }),
9479
+ /* @__PURE__ */ jsx41(
9418
9480
  Swatch,
9419
9481
  {
9420
9482
  color: harmony.complementary,
@@ -9428,11 +9490,11 @@ function ColorPicker({
9428
9490
  }
9429
9491
  }
9430
9492
  ),
9431
- /* @__PURE__ */ jsx42("span", { className: "text-xs font-mono text-muted-foreground", children: harmony.complementary })
9493
+ /* @__PURE__ */ jsx41("span", { className: "text-xs font-mono text-muted-foreground", children: harmony.complementary })
9432
9494
  ] }),
9433
9495
  /* @__PURE__ */ jsxs37("div", { className: "flex items-center gap-2", children: [
9434
- /* @__PURE__ */ jsx42("span", { className: "text-xs text-muted-foreground w-24", children: "Triadic" }),
9435
- /* @__PURE__ */ jsx42("div", { className: "flex gap-2", children: harmony.triadic.map((c) => /* @__PURE__ */ jsx42(
9496
+ /* @__PURE__ */ jsx41("span", { className: "text-xs text-muted-foreground w-24", children: "Triadic" }),
9497
+ /* @__PURE__ */ jsx41("div", { className: "flex gap-2", children: harmony.triadic.map((c) => /* @__PURE__ */ jsx41(
9436
9498
  Swatch,
9437
9499
  {
9438
9500
  color: c,
@@ -9449,8 +9511,8 @@ function ColorPicker({
9449
9511
  )) })
9450
9512
  ] }),
9451
9513
  /* @__PURE__ */ jsxs37("div", { className: "flex items-center gap-2", children: [
9452
- /* @__PURE__ */ jsx42("span", { className: "text-xs text-muted-foreground w-24", children: "Analogous" }),
9453
- /* @__PURE__ */ jsx42("div", { className: "flex gap-2", children: harmony.analogous.map((c) => /* @__PURE__ */ jsx42(
9514
+ /* @__PURE__ */ jsx41("span", { className: "text-xs text-muted-foreground w-24", children: "Analogous" }),
9515
+ /* @__PURE__ */ jsx41("div", { className: "flex gap-2", children: harmony.analogous.map((c) => /* @__PURE__ */ jsx41(
9454
9516
  Swatch,
9455
9517
  {
9456
9518
  color: c,
@@ -9475,7 +9537,7 @@ function ColorPicker({
9475
9537
 
9476
9538
  // ../../components/ui/Grid.tsx
9477
9539
  import React35, { useId as useId6 } from "react";
9478
- import { Fragment as Fragment15, jsx as jsx43, jsxs as jsxs38 } from "react/jsx-runtime";
9540
+ import { Fragment as Fragment15, jsx as jsx42, jsxs as jsxs38 } from "react/jsx-runtime";
9479
9541
  var BP_MIN = {
9480
9542
  sm: 640,
9481
9543
  md: 768,
@@ -9595,7 +9657,7 @@ var GridRoot = React35.forwardRef(
9595
9657
  style,
9596
9658
  ...rest,
9597
9659
  children: [
9598
- /* @__PURE__ */ jsx43("style", { dangerouslySetInnerHTML: { __html: css } }),
9660
+ /* @__PURE__ */ jsx42("style", { dangerouslySetInnerHTML: { __html: css } }),
9599
9661
  children
9600
9662
  ]
9601
9663
  }
@@ -9638,7 +9700,7 @@ var GridItem = React35.forwardRef(
9638
9700
  st.animation = `uvGridItemFadeIn 0.5s ease-out forwards`;
9639
9701
  }
9640
9702
  return /* @__PURE__ */ jsxs38(Fragment15, { children: [
9641
- animationDelay != null && /* @__PURE__ */ jsx43(
9703
+ animationDelay != null && /* @__PURE__ */ jsx42(
9642
9704
  "style",
9643
9705
  {
9644
9706
  dangerouslySetInnerHTML: {
@@ -9646,7 +9708,7 @@ var GridItem = React35.forwardRef(
9646
9708
  }
9647
9709
  }
9648
9710
  ),
9649
- /* @__PURE__ */ jsx43(
9711
+ /* @__PURE__ */ jsx42(
9650
9712
  "div",
9651
9713
  {
9652
9714
  ref,
@@ -9667,21 +9729,21 @@ var Grid_default = Grid;
9667
9729
 
9668
9730
  // ../../components/ui/ClientOnly.tsx
9669
9731
  import { useEffect as useEffect18, useState as useState31 } from "react";
9670
- import { Fragment as Fragment16, jsx as jsx44 } from "react/jsx-runtime";
9732
+ import { Fragment as Fragment16, jsx as jsx43 } from "react/jsx-runtime";
9671
9733
  function ClientOnly({ children, fallback = null }) {
9672
9734
  const [hasMounted, setHasMounted] = useState31(false);
9673
9735
  useEffect18(() => {
9674
9736
  setHasMounted(true);
9675
9737
  }, []);
9676
9738
  if (!hasMounted) {
9677
- return /* @__PURE__ */ jsx44(Fragment16, { children: fallback });
9739
+ return /* @__PURE__ */ jsx43(Fragment16, { children: fallback });
9678
9740
  }
9679
- return /* @__PURE__ */ jsx44(Fragment16, { children });
9741
+ return /* @__PURE__ */ jsx43(Fragment16, { children });
9680
9742
  }
9681
9743
 
9682
9744
  // ../../components/ui/Loading.tsx
9683
9745
  import { Activity as Activity3 } from "lucide-react";
9684
- import { jsx as jsx45, jsxs as jsxs39 } from "react/jsx-runtime";
9746
+ import { jsx as jsx44, jsxs as jsxs39 } from "react/jsx-runtime";
9685
9747
  var LoadingSpinner = ({
9686
9748
  size = "md",
9687
9749
  className,
@@ -9697,7 +9759,7 @@ var LoadingSpinner = ({
9697
9759
  foreground: "text-foreground",
9698
9760
  muted: "text-muted-foreground"
9699
9761
  };
9700
- return /* @__PURE__ */ jsx45(
9762
+ return /* @__PURE__ */ jsx44(
9701
9763
  Activity3,
9702
9764
  {
9703
9765
  className: cn(
@@ -9718,7 +9780,7 @@ var LoadingDots = ({
9718
9780
  foreground: "bg-foreground",
9719
9781
  muted: "bg-muted-foreground"
9720
9782
  };
9721
- return /* @__PURE__ */ jsx45("div", { className: cn("flex items-center space-x-1", className), children: [0, 1, 2].map((i) => /* @__PURE__ */ jsx45(
9783
+ return /* @__PURE__ */ jsx44("div", { className: cn("flex items-center space-x-1", className), children: [0, 1, 2].map((i) => /* @__PURE__ */ jsx44(
9722
9784
  "div",
9723
9785
  {
9724
9786
  className: cn(
@@ -9740,7 +9802,7 @@ var LoadingBar = ({
9740
9802
  label
9741
9803
  }) => {
9742
9804
  const pct = progress ? Math.min(Math.max(progress, 0), 100) : void 0;
9743
- return /* @__PURE__ */ jsx45(
9805
+ return /* @__PURE__ */ jsx44(
9744
9806
  "div",
9745
9807
  {
9746
9808
  className: cn("w-full bg-muted rounded-full h-2", className),
@@ -9749,7 +9811,7 @@ var LoadingBar = ({
9749
9811
  "aria-valuemax": pct === void 0 ? void 0 : 100,
9750
9812
  "aria-valuenow": pct === void 0 ? void 0 : Math.round(pct),
9751
9813
  "aria-label": label || "Loading",
9752
- children: /* @__PURE__ */ jsx45(
9814
+ children: /* @__PURE__ */ jsx44(
9753
9815
  "div",
9754
9816
  {
9755
9817
  className: cn(
@@ -9767,9 +9829,9 @@ var LoadingBar = ({
9767
9829
 
9768
9830
  // ../../components/ui/Table.tsx
9769
9831
  import React36 from "react";
9770
- import { jsx as jsx46, jsxs as jsxs40 } from "react/jsx-runtime";
9832
+ import { jsx as jsx45, jsxs as jsxs40 } from "react/jsx-runtime";
9771
9833
  var Table = React36.forwardRef(
9772
- ({ className, containerClassName, ...props }, ref) => /* @__PURE__ */ jsx46(
9834
+ ({ className, containerClassName, ...props }, ref) => /* @__PURE__ */ jsx45(
9773
9835
  "div",
9774
9836
  {
9775
9837
  className: cn(
@@ -9779,7 +9841,7 @@ var Table = React36.forwardRef(
9779
9841
  "backdrop-blur-sm transition-all duration-300",
9780
9842
  containerClassName
9781
9843
  ),
9782
- children: /* @__PURE__ */ jsx46(
9844
+ children: /* @__PURE__ */ jsx45(
9783
9845
  "table",
9784
9846
  {
9785
9847
  ref,
@@ -9810,7 +9872,7 @@ var TableHeader = React36.forwardRef(
9810
9872
  )
9811
9873
  );
9812
9874
  TableHeader.displayName = "TableHeader";
9813
- var TableBody = React36.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx46(
9875
+ var TableBody = React36.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx45(
9814
9876
  "tbody",
9815
9877
  {
9816
9878
  ref,
@@ -9819,7 +9881,7 @@ var TableBody = React36.forwardRef(({ className, ...props }, ref) => /* @__PURE_
9819
9881
  }
9820
9882
  ));
9821
9883
  TableBody.displayName = "TableBody";
9822
- var TableFooter = React36.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx46(
9884
+ var TableFooter = React36.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx45(
9823
9885
  "tfoot",
9824
9886
  {
9825
9887
  ref,
@@ -9831,7 +9893,7 @@ var TableFooter = React36.forwardRef(({ className, ...props }, ref) => /* @__PUR
9831
9893
  }
9832
9894
  ));
9833
9895
  TableFooter.displayName = "TableFooter";
9834
- var TableRow = React36.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx46(
9896
+ var TableRow = React36.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx45(
9835
9897
  "tr",
9836
9898
  {
9837
9899
  ref,
@@ -9845,7 +9907,7 @@ var TableRow = React36.forwardRef(({ className, ...props }, ref) => /* @__PURE__
9845
9907
  }
9846
9908
  ));
9847
9909
  TableRow.displayName = "TableRow";
9848
- var TableHead = React36.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx46(
9910
+ var TableHead = React36.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx45(
9849
9911
  "th",
9850
9912
  {
9851
9913
  ref,
@@ -9857,7 +9919,7 @@ var TableHead = React36.forwardRef(({ className, ...props }, ref) => /* @__PURE_
9857
9919
  }
9858
9920
  ));
9859
9921
  TableHead.displayName = "TableHead";
9860
- var TableCell = React36.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx46(
9922
+ var TableCell = React36.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx45(
9861
9923
  "td",
9862
9924
  {
9863
9925
  ref,
@@ -9866,7 +9928,7 @@ var TableCell = React36.forwardRef(({ className, ...props }, ref) => /* @__PURE_
9866
9928
  }
9867
9929
  ));
9868
9930
  TableCell.displayName = "TableCell";
9869
- var TableCaption = React36.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx46(
9931
+ var TableCaption = React36.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx45(
9870
9932
  "caption",
9871
9933
  {
9872
9934
  ref,
@@ -9880,7 +9942,7 @@ TableCaption.displayName = "TableCaption";
9880
9942
  import { Filter as FilterIcon } from "lucide-react";
9881
9943
  import React37 from "react";
9882
9944
  import { useTranslations as useTranslations7 } from "next-intl";
9883
- import { Fragment as Fragment17, jsx as jsx47, jsxs as jsxs41 } from "react/jsx-runtime";
9945
+ import { Fragment as Fragment17, jsx as jsx46, jsxs as jsxs41 } from "react/jsx-runtime";
9884
9946
  function useDebounced(value, delay = 300) {
9885
9947
  const [debounced, setDebounced] = React37.useState(value);
9886
9948
  React37.useEffect(() => {
@@ -9944,7 +10006,7 @@ function DataTable({
9944
10006
  className: "h-8 w-full text-sm"
9945
10007
  };
9946
10008
  if (col.filter.type === "text") {
9947
- return /* @__PURE__ */ jsx47(
10009
+ return /* @__PURE__ */ jsx46(
9948
10010
  Input_default,
9949
10011
  {
9950
10012
  ...commonProps,
@@ -9959,7 +10021,7 @@ function DataTable({
9959
10021
  }
9960
10022
  if (col.filter.type === "select") {
9961
10023
  const options = col.filter.options || [];
9962
- return /* @__PURE__ */ jsx47(
10024
+ return /* @__PURE__ */ jsx46(
9963
10025
  Combobox,
9964
10026
  {
9965
10027
  options: ["", ...options],
@@ -9975,7 +10037,7 @@ function DataTable({
9975
10037
  );
9976
10038
  }
9977
10039
  if (col.filter.type === "date") {
9978
- return /* @__PURE__ */ jsx47(
10040
+ return /* @__PURE__ */ jsx46(
9979
10041
  DatePicker,
9980
10042
  {
9981
10043
  placeholder: col.filter.placeholder || `Select ${String(col.title)}`,
@@ -9989,7 +10051,7 @@ function DataTable({
9989
10051
  }
9990
10052
  return null;
9991
10053
  };
9992
- const renderHeader = /* @__PURE__ */ jsx47(TableRow, { children: visibleColumns.map((col, colIdx) => /* @__PURE__ */ jsx47(
10054
+ const renderHeader = /* @__PURE__ */ jsx46(TableRow, { children: visibleColumns.map((col, colIdx) => /* @__PURE__ */ jsx46(
9993
10055
  TableHead,
9994
10056
  {
9995
10057
  style: { width: col.width },
@@ -10003,8 +10065,8 @@ function DataTable({
10003
10065
  const isRightAlign = col.align === "right" || !col.align && headerAlign === "right";
10004
10066
  const isCenterAlign = col.align === "center" || !col.align && headerAlign === "center";
10005
10067
  const titleContent = /* @__PURE__ */ jsxs41("div", { className: "flex items-center gap-1 min-w-0 flex-shrink", children: [
10006
- /* @__PURE__ */ jsx47("span", { className: "truncate font-medium text-sm", children: col.title }),
10007
- col.sortable && /* @__PURE__ */ jsx47(
10068
+ /* @__PURE__ */ jsx46("span", { className: "truncate font-medium text-sm", children: col.title }),
10069
+ col.sortable && /* @__PURE__ */ jsx46(
10008
10070
  "button",
10009
10071
  {
10010
10072
  className: cn(
@@ -10022,7 +10084,7 @@ function DataTable({
10022
10084
  "aria-label": "Sort",
10023
10085
  title: `Sort by ${String(col.title)}`,
10024
10086
  children: /* @__PURE__ */ jsxs41("svg", { width: "14", height: "14", viewBox: "0 0 20 20", fill: "none", className: "inline-block", children: [
10025
- /* @__PURE__ */ jsx47(
10087
+ /* @__PURE__ */ jsx46(
10026
10088
  "path",
10027
10089
  {
10028
10090
  d: "M7 8l3-3 3 3",
@@ -10033,7 +10095,7 @@ function DataTable({
10033
10095
  opacity: sort?.key === col.key && sort.order === "asc" ? 1 : 0.4
10034
10096
  }
10035
10097
  ),
10036
- /* @__PURE__ */ jsx47(
10098
+ /* @__PURE__ */ jsx46(
10037
10099
  "path",
10038
10100
  {
10039
10101
  d: "M7 12l3 3 3-3",
@@ -10048,11 +10110,11 @@ function DataTable({
10048
10110
  }
10049
10111
  )
10050
10112
  ] });
10051
- const filterContent = col.filter && /* @__PURE__ */ jsx47(
10113
+ const filterContent = col.filter && /* @__PURE__ */ jsx46(
10052
10114
  Popover,
10053
10115
  {
10054
10116
  placement: isRightAlign ? "bottom-end" : "bottom-start",
10055
- trigger: /* @__PURE__ */ jsx47(
10117
+ trigger: /* @__PURE__ */ jsx46(
10056
10118
  "button",
10057
10119
  {
10058
10120
  className: cn(
@@ -10062,7 +10124,7 @@ function DataTable({
10062
10124
  ),
10063
10125
  "aria-label": "Filter",
10064
10126
  title: "Filter",
10065
- children: /* @__PURE__ */ jsx47(FilterIcon, { className: "h-4 w-4" })
10127
+ children: /* @__PURE__ */ jsx46(FilterIcon, { className: "h-4 w-4" })
10066
10128
  }
10067
10129
  ),
10068
10130
  children: /* @__PURE__ */ jsxs41("div", { className: "w-48 p-2 space-y-2", children: [
@@ -10071,7 +10133,7 @@ function DataTable({
10071
10133
  col.title
10072
10134
  ] }),
10073
10135
  renderFilterControl(col),
10074
- filters[col.key] && /* @__PURE__ */ jsx47(
10136
+ filters[col.key] && /* @__PURE__ */ jsx46(
10075
10137
  "button",
10076
10138
  {
10077
10139
  onClick: () => {
@@ -10089,7 +10151,7 @@ function DataTable({
10089
10151
  ] })
10090
10152
  }
10091
10153
  );
10092
- return /* @__PURE__ */ jsx47(
10154
+ return /* @__PURE__ */ jsx46(
10093
10155
  "div",
10094
10156
  {
10095
10157
  className: cn(
@@ -10152,13 +10214,13 @@ function DataTable({
10152
10214
  }, [processedData, curPage, curPageSize]);
10153
10215
  return /* @__PURE__ */ jsxs41("div", { className: cn("space-y-2", className), children: [
10154
10216
  /* @__PURE__ */ jsxs41("div", { className: "flex items-center justify-between gap-4 mb-1", children: [
10155
- /* @__PURE__ */ jsx47("div", { className: "text-sm text-muted-foreground", children: caption }),
10217
+ /* @__PURE__ */ jsx46("div", { className: "text-sm text-muted-foreground", children: caption }),
10156
10218
  /* @__PURE__ */ jsxs41("div", { className: "flex items-center gap-2", children: [
10157
- enableDensityToggle && /* @__PURE__ */ jsx47(
10219
+ enableDensityToggle && /* @__PURE__ */ jsx46(
10158
10220
  DropdownMenu_default,
10159
10221
  {
10160
10222
  trigger: /* @__PURE__ */ jsxs41(Button_default, { variant: "ghost", size: "sm", className: "h-8 px-2", children: [
10161
- /* @__PURE__ */ jsx47("svg", { className: "w-4 h-4 mr-1", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsx47("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M4 6h16M4 10h16M4 14h16M4 18h16" }) }),
10223
+ /* @__PURE__ */ jsx46("svg", { className: "w-4 h-4 mr-1", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsx46("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M4 6h16M4 10h16M4 14h16M4 18h16" }) }),
10162
10224
  labels?.density || t("density")
10163
10225
  ] }),
10164
10226
  items: [
@@ -10168,11 +10230,11 @@ function DataTable({
10168
10230
  ]
10169
10231
  }
10170
10232
  ),
10171
- enableColumnVisibilityToggle && /* @__PURE__ */ jsx47(
10233
+ enableColumnVisibilityToggle && /* @__PURE__ */ jsx46(
10172
10234
  DropdownMenu_default,
10173
10235
  {
10174
10236
  trigger: /* @__PURE__ */ jsxs41(Button_default, { variant: "ghost", size: "sm", className: "h-8 px-2", children: [
10175
- /* @__PURE__ */ jsx47("svg", { className: "w-4 h-4 mr-1", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsx47(
10237
+ /* @__PURE__ */ jsx46("svg", { className: "w-4 h-4 mr-1", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsx46(
10176
10238
  "path",
10177
10239
  {
10178
10240
  strokeLinecap: "round",
@@ -10190,19 +10252,19 @@ function DataTable({
10190
10252
  setVisibleCols((prev) => prev.includes(c.key) ? prev.filter((k) => k !== c.key) : [...prev, c.key]);
10191
10253
  },
10192
10254
  children: [
10193
- /* @__PURE__ */ jsx47("input", { type: "checkbox", className: "mr-2 rounded border-border", readOnly: true, checked: visibleCols.includes(c.key) }),
10194
- /* @__PURE__ */ jsx47("span", { className: "truncate", children: c.title })
10255
+ /* @__PURE__ */ jsx46("input", { type: "checkbox", className: "mr-2 rounded border-border", readOnly: true, checked: visibleCols.includes(c.key) }),
10256
+ /* @__PURE__ */ jsx46("span", { className: "truncate", children: c.title })
10195
10257
  ]
10196
10258
  },
10197
10259
  c.key
10198
10260
  ))
10199
10261
  }
10200
10262
  ),
10201
- enableHeaderAlignToggle && /* @__PURE__ */ jsx47(
10263
+ enableHeaderAlignToggle && /* @__PURE__ */ jsx46(
10202
10264
  DropdownMenu_default,
10203
10265
  {
10204
10266
  trigger: /* @__PURE__ */ jsxs41(Button_default, { variant: "ghost", size: "sm", className: "h-8 px-2", children: [
10205
- /* @__PURE__ */ jsx47("svg", { className: "w-4 h-4 mr-1", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsx47("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M4 6h16M4 12h10M4 18h16" }) }),
10267
+ /* @__PURE__ */ jsx46("svg", { className: "w-4 h-4 mr-1", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsx46("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M4 6h16M4 12h10M4 18h16" }) }),
10206
10268
  labels?.headerAlign || t("headerAlign")
10207
10269
  ] }),
10208
10270
  items: [
@@ -10215,17 +10277,17 @@ function DataTable({
10215
10277
  toolbar
10216
10278
  ] })
10217
10279
  ] }),
10218
- /* @__PURE__ */ jsx47("div", { className: cn("relative rounded-md border border-border/50 overflow-hidden", loading2 && "opacity-60 pointer-events-none"), children: /* @__PURE__ */ jsxs41(
10280
+ /* @__PURE__ */ jsx46("div", { className: cn("relative rounded-md border border-border/50 overflow-hidden", loading2 && "opacity-60 pointer-events-none"), children: /* @__PURE__ */ jsxs41(
10219
10281
  Table,
10220
10282
  {
10221
10283
  containerClassName: "border-0 md:border-0 rounded-none md:rounded-none shadow-none bg-transparent",
10222
10284
  className: "[&_thead]:sticky [&_thead]:top-0 [&_thead]:z-[5] [&_thead]:bg-background [&_thead]:backdrop-blur-sm",
10223
10285
  children: [
10224
- /* @__PURE__ */ jsx47(TableHeader, { children: renderHeader }),
10225
- /* @__PURE__ */ jsx47(TableBody, { children: loading2 ? /* @__PURE__ */ jsx47(TableRow, { children: /* @__PURE__ */ jsx47(TableCell, { colSpan: visibleColumns.length, className: "text-center py-8", children: /* @__PURE__ */ jsxs41("div", { className: "flex items-center justify-center gap-2 text-muted-foreground", children: [
10286
+ /* @__PURE__ */ jsx46(TableHeader, { children: renderHeader }),
10287
+ /* @__PURE__ */ jsx46(TableBody, { children: loading2 ? /* @__PURE__ */ jsx46(TableRow, { children: /* @__PURE__ */ jsx46(TableCell, { colSpan: visibleColumns.length, className: "text-center py-8", children: /* @__PURE__ */ jsxs41("div", { className: "flex items-center justify-center gap-2 text-muted-foreground", children: [
10226
10288
  /* @__PURE__ */ jsxs41("svg", { className: "animate-spin h-4 w-4", xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24", children: [
10227
- /* @__PURE__ */ jsx47("circle", { className: "opacity-25", cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "4" }),
10228
- /* @__PURE__ */ jsx47(
10289
+ /* @__PURE__ */ jsx46("circle", { className: "opacity-25", cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "4" }),
10290
+ /* @__PURE__ */ jsx46(
10229
10291
  "path",
10230
10292
  {
10231
10293
  className: "opacity-75",
@@ -10234,12 +10296,12 @@ function DataTable({
10234
10296
  }
10235
10297
  )
10236
10298
  ] }),
10237
- /* @__PURE__ */ jsx47("span", { className: "text-sm", children: "Loading..." })
10238
- ] }) }) }) : !displayedData || displayedData.length === 0 ? /* @__PURE__ */ jsx47(TableRow, { children: /* @__PURE__ */ jsx47(TableCell, { colSpan: visibleColumns.length, className: "text-center py-6 text-muted-foreground", children: "No data" }) }) : displayedData.map((row, idx) => {
10299
+ /* @__PURE__ */ jsx46("span", { className: "text-sm", children: "Loading..." })
10300
+ ] }) }) }) : !displayedData || displayedData.length === 0 ? /* @__PURE__ */ jsx46(TableRow, { children: /* @__PURE__ */ jsx46(TableCell, { colSpan: visibleColumns.length, className: "text-center py-6 text-muted-foreground", children: "No data" }) }) : displayedData.map((row, idx) => {
10239
10301
  const isLastRow = idx === displayedData.length - 1;
10240
- return /* @__PURE__ */ jsx47(TableRow, { className: cn(densityRowClass, striped && idx % 2 === 0 && "bg-muted/30"), children: visibleColumns.map((col, colIdx) => {
10302
+ return /* @__PURE__ */ jsx46(TableRow, { className: cn(densityRowClass, striped && idx % 2 === 0 && "bg-muted/30"), children: visibleColumns.map((col, colIdx) => {
10241
10303
  const value = col.dataIndex ? row[col.dataIndex] : void 0;
10242
- return /* @__PURE__ */ jsx47(
10304
+ return /* @__PURE__ */ jsx46(
10243
10305
  TableCell,
10244
10306
  {
10245
10307
  className: cn(
@@ -10259,7 +10321,7 @@ function DataTable({
10259
10321
  ]
10260
10322
  }
10261
10323
  ) }),
10262
- totalItems > 0 && /* @__PURE__ */ jsx47("div", { className: "border-t bg-muted/30 p-4 rounded-b-md", children: /* @__PURE__ */ jsx47(
10324
+ totalItems > 0 && /* @__PURE__ */ jsx46("div", { className: "border-t bg-muted/30 p-4 rounded-b-md", children: /* @__PURE__ */ jsx46(
10263
10325
  Pagination,
10264
10326
  {
10265
10327
  page: curPage,
@@ -12049,7 +12111,7 @@ function useForm(props = {}) {
12049
12111
 
12050
12112
  // ../../components/ui/Form.tsx
12051
12113
  import { useTranslations as useTranslations8 } from "next-intl";
12052
- import { jsx as jsx48, jsxs as jsxs42 } from "react/jsx-runtime";
12114
+ import { jsx as jsx47, jsxs as jsxs42 } from "react/jsx-runtime";
12053
12115
  var FormConfigContext = React39.createContext({ size: "md" });
12054
12116
  var FormWrapper = ({
12055
12117
  children,
@@ -12069,14 +12131,14 @@ var FormWrapper = ({
12069
12131
  }
12070
12132
  }, [JSON.stringify(initialValues)]);
12071
12133
  const { validationSchema: _, ...formProps } = props;
12072
- return /* @__PURE__ */ jsx48(FormProvider, { ...methods, children: /* @__PURE__ */ jsx48(FormConfigContext.Provider, { value: { size }, children: /* @__PURE__ */ jsx48("form", { onSubmit: methods.handleSubmit(onSubmit), className, ...formProps, children }) }) });
12134
+ return /* @__PURE__ */ jsx47(FormProvider, { ...methods, children: /* @__PURE__ */ jsx47(FormConfigContext.Provider, { value: { size }, children: /* @__PURE__ */ jsx47("form", { onSubmit: methods.handleSubmit(onSubmit), className, ...formProps, children }) }) });
12073
12135
  };
12074
12136
  var Form = FormWrapper;
12075
12137
  var FormFieldContext = React39.createContext({});
12076
12138
  var FormField = ({
12077
12139
  ...props
12078
12140
  }) => {
12079
- return /* @__PURE__ */ jsx48(FormFieldContext.Provider, { value: { name: props.name }, children: /* @__PURE__ */ jsx48(Controller, { ...props }) });
12141
+ return /* @__PURE__ */ jsx47(FormFieldContext.Provider, { value: { name: props.name }, children: /* @__PURE__ */ jsx47(Controller, { ...props }) });
12080
12142
  };
12081
12143
  var useFormField = () => {
12082
12144
  const fieldContext = React39.useContext(FormFieldContext);
@@ -12104,7 +12166,7 @@ var useFormField = () => {
12104
12166
  var FormItemContext = React39.createContext({});
12105
12167
  var FormItem = React39.forwardRef(({ className, ...props }, ref) => {
12106
12168
  const id = React39.useId();
12107
- return /* @__PURE__ */ jsx48(FormItemContext.Provider, { value: { id }, children: /* @__PURE__ */ jsx48("div", { ref, className: cn("space-y-2", className), ...props }) });
12169
+ return /* @__PURE__ */ jsx47(FormItemContext.Provider, { value: { id }, children: /* @__PURE__ */ jsx47("div", { ref, className: cn("space-y-2", className), ...props }) });
12108
12170
  });
12109
12171
  FormItem.displayName = "FormItem";
12110
12172
  var FormLabel = React39.forwardRef(({ className, children, required, ...props }, ref) => {
@@ -12120,7 +12182,7 @@ var FormLabel = React39.forwardRef(({ className, children, required, ...props },
12120
12182
  ...props,
12121
12183
  children: [
12122
12184
  children,
12123
- required && /* @__PURE__ */ jsx48("span", { className: "text-destructive ml-1", children: "*" })
12185
+ required && /* @__PURE__ */ jsx47("span", { className: "text-destructive ml-1", children: "*" })
12124
12186
  ]
12125
12187
  }
12126
12188
  );
@@ -12128,7 +12190,7 @@ var FormLabel = React39.forwardRef(({ className, children, required, ...props },
12128
12190
  FormLabel.displayName = "FormLabel";
12129
12191
  var FormControl = React39.forwardRef(({ ...props }, ref) => {
12130
12192
  const { error, formItemId, formDescriptionId, formMessageId } = useFormField();
12131
- return /* @__PURE__ */ jsx48(
12193
+ return /* @__PURE__ */ jsx47(
12132
12194
  "div",
12133
12195
  {
12134
12196
  ref,
@@ -12142,7 +12204,7 @@ var FormControl = React39.forwardRef(({ ...props }, ref) => {
12142
12204
  FormControl.displayName = "FormControl";
12143
12205
  var FormDescription = React39.forwardRef(({ className, ...props }, ref) => {
12144
12206
  const { formDescriptionId } = useFormField();
12145
- return /* @__PURE__ */ jsx48("p", { ref, id: formDescriptionId, className: cn("text-sm text-muted-foreground", className), ...props });
12207
+ return /* @__PURE__ */ jsx47("p", { ref, id: formDescriptionId, className: cn("text-sm text-muted-foreground", className), ...props });
12146
12208
  });
12147
12209
  FormDescription.displayName = "FormDescription";
12148
12210
  var FormMessage = React39.forwardRef(({ className, children, ...props }, ref) => {
@@ -12151,26 +12213,26 @@ var FormMessage = React39.forwardRef(({ className, children, ...props }, ref) =>
12151
12213
  if (!body) {
12152
12214
  return null;
12153
12215
  }
12154
- return /* @__PURE__ */ jsx48("p", { ref, id: formMessageId, className: cn("text-sm font-medium text-destructive", className), ...props, children: body });
12216
+ return /* @__PURE__ */ jsx47("p", { ref, id: formMessageId, className: cn("text-sm font-medium text-destructive", className), ...props, children: body });
12155
12217
  });
12156
12218
  FormMessage.displayName = "FormMessage";
12157
- var FormInput = React39.forwardRef(({ name, ...props }, ref) => /* @__PURE__ */ jsx48(FormConfigContext.Consumer, { children: ({ size }) => /* @__PURE__ */ jsx48(
12219
+ var FormInput = React39.forwardRef(({ name, ...props }, ref) => /* @__PURE__ */ jsx47(FormConfigContext.Consumer, { children: ({ size }) => /* @__PURE__ */ jsx47(
12158
12220
  FormField,
12159
12221
  {
12160
12222
  name,
12161
12223
  render: ({ field }) => /* @__PURE__ */ jsxs42(FormItem, { children: [
12162
- /* @__PURE__ */ jsx48(FormControl, { children: /* @__PURE__ */ jsx48(Input_default, { size: props.size ?? size, ...field, ...props }) }),
12163
- /* @__PURE__ */ jsx48(FormMessage, {})
12224
+ /* @__PURE__ */ jsx47(FormControl, { children: /* @__PURE__ */ jsx47(Input_default, { size: props.size ?? size, ...field, ...props }) }),
12225
+ /* @__PURE__ */ jsx47(FormMessage, {})
12164
12226
  ] })
12165
12227
  }
12166
12228
  ) }));
12167
12229
  FormInput.displayName = "FormInput";
12168
- var FormCheckbox = React39.forwardRef(({ name, ...props }, ref) => /* @__PURE__ */ jsx48(FormConfigContext.Consumer, { children: ({ size }) => /* @__PURE__ */ jsx48(
12230
+ var FormCheckbox = React39.forwardRef(({ name, ...props }, ref) => /* @__PURE__ */ jsx47(FormConfigContext.Consumer, { children: ({ size }) => /* @__PURE__ */ jsx47(
12169
12231
  FormField,
12170
12232
  {
12171
12233
  name,
12172
12234
  render: ({ field }) => /* @__PURE__ */ jsxs42(FormItem, { children: [
12173
- /* @__PURE__ */ jsx48(FormControl, { children: /* @__PURE__ */ jsx48(
12235
+ /* @__PURE__ */ jsx47(FormControl, { children: /* @__PURE__ */ jsx47(
12174
12236
  Checkbox,
12175
12237
  {
12176
12238
  ref,
@@ -12184,20 +12246,20 @@ var FormCheckbox = React39.forwardRef(({ name, ...props }, ref) => /* @__PURE__
12184
12246
  ...props
12185
12247
  }
12186
12248
  ) }),
12187
- /* @__PURE__ */ jsx48(FormMessage, {})
12249
+ /* @__PURE__ */ jsx47(FormMessage, {})
12188
12250
  ] })
12189
12251
  }
12190
12252
  ) }));
12191
12253
  FormCheckbox.displayName = "FormCheckbox";
12192
- var FormActions = React39.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx48("div", { ref, className: cn("flex gap-2 justify-end", className), ...props }));
12254
+ var FormActions = React39.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx47("div", { ref, className: cn("flex gap-2 justify-end", className), ...props }));
12193
12255
  FormActions.displayName = "FormActions";
12194
- var FormSubmitButton = React39.forwardRef(({ children, loading: loading2, ...props }, ref) => /* @__PURE__ */ jsx48(FormConfigContext.Consumer, { children: ({ size }) => /* @__PURE__ */ jsx48(Button_default, { ref, type: "submit", size: props.size ?? size, disabled: loading2, ...props, children }) }));
12256
+ var FormSubmitButton = React39.forwardRef(({ children, loading: loading2, ...props }, ref) => /* @__PURE__ */ jsx47(FormConfigContext.Consumer, { children: ({ size }) => /* @__PURE__ */ jsx47(Button_default, { ref, type: "submit", size: props.size ?? size, disabled: loading2, ...props, children }) }));
12195
12257
  FormSubmitButton.displayName = "FormSubmitButton";
12196
12258
 
12197
12259
  // ../../components/ui/NotificationModal.tsx
12198
12260
  import { ExternalLink } from "lucide-react";
12199
12261
  import { useTranslations as useTranslations9 } from "next-intl";
12200
- import { jsx as jsx49, jsxs as jsxs43 } from "react/jsx-runtime";
12262
+ import { jsx as jsx48, jsxs as jsxs43 } from "react/jsx-runtime";
12201
12263
  function NotificationModal({ isOpen, onClose, notification, titleText, openLinkText, closeText }) {
12202
12264
  const t = useTranslations9("Common");
12203
12265
  if (!notification) return null;
@@ -12218,7 +12280,7 @@ function NotificationModal({ isOpen, onClose, notification, titleText, openLinkT
12218
12280
  onClose();
12219
12281
  }
12220
12282
  };
12221
- return /* @__PURE__ */ jsx49(
12283
+ return /* @__PURE__ */ jsx48(
12222
12284
  Modal_default,
12223
12285
  {
12224
12286
  isOpen,
@@ -12227,15 +12289,15 @@ function NotificationModal({ isOpen, onClose, notification, titleText, openLinkT
12227
12289
  size: "md",
12228
12290
  children: /* @__PURE__ */ jsxs43("div", { className: "space-y-4", children: [
12229
12291
  /* @__PURE__ */ jsxs43("div", { className: "flex items-center gap-2 pb-2 border-b border-border", children: [
12230
- /* @__PURE__ */ jsx49("div", { className: cn(
12292
+ /* @__PURE__ */ jsx48("div", { className: cn(
12231
12293
  "w-2 h-2 rounded-full",
12232
12294
  !notification.is_read ? "bg-primary" : "bg-border"
12233
12295
  ) }),
12234
- /* @__PURE__ */ jsx49("span", { className: "text-xs text-muted-foreground", children: !notification.is_read ? t("newNotification") : t("readStatus") })
12296
+ /* @__PURE__ */ jsx48("span", { className: "text-xs text-muted-foreground", children: !notification.is_read ? t("newNotification") : t("readStatus") })
12235
12297
  ] }),
12236
- notification.title && /* @__PURE__ */ jsx49("h3", { className: "text-lg font-semibold text-foreground", children: notification.title }),
12237
- notification.body && /* @__PURE__ */ jsx49("div", { className: "text-sm text-muted-foreground whitespace-pre-wrap leading-relaxed", children: notification.body }),
12238
- /* @__PURE__ */ jsx49("div", { className: "text-xs text-muted-foreground border-t border-border pt-2", children: formatTime3(notification.created_at) }),
12298
+ notification.title && /* @__PURE__ */ jsx48("h3", { className: "text-lg font-semibold text-foreground", children: notification.title }),
12299
+ notification.body && /* @__PURE__ */ jsx48("div", { className: "text-sm text-muted-foreground whitespace-pre-wrap leading-relaxed", children: notification.body }),
12300
+ /* @__PURE__ */ jsx48("div", { className: "text-xs text-muted-foreground border-t border-border pt-2", children: formatTime3(notification.created_at) }),
12239
12301
  /* @__PURE__ */ jsxs43("div", { className: "flex gap-2 justify-end pt-2", children: [
12240
12302
  hasLink && /* @__PURE__ */ jsxs43(
12241
12303
  Button_default,
@@ -12245,12 +12307,12 @@ function NotificationModal({ isOpen, onClose, notification, titleText, openLinkT
12245
12307
  onClick: handleLinkClick,
12246
12308
  className: "gap-2",
12247
12309
  children: [
12248
- /* @__PURE__ */ jsx49(ExternalLink, { className: "w-4 h-4" }),
12310
+ /* @__PURE__ */ jsx48(ExternalLink, { className: "w-4 h-4" }),
12249
12311
  openLinkText || t("openLink")
12250
12312
  ]
12251
12313
  }
12252
12314
  ),
12253
- /* @__PURE__ */ jsx49(
12315
+ /* @__PURE__ */ jsx48(
12254
12316
  Button_default,
12255
12317
  {
12256
12318
  variant: "ghost",
@@ -12270,159 +12332,9 @@ var NotificationModal_default = NotificationModal;
12270
12332
  import Link2 from "next/link";
12271
12333
  import { usePathname } from "next/navigation";
12272
12334
  import { Phone } from "lucide-react";
12273
-
12274
- // ../../node_modules/react-icons/lib/iconBase.mjs
12275
- import React41 from "react";
12276
-
12277
- // ../../node_modules/react-icons/lib/iconContext.mjs
12278
- import React40 from "react";
12279
- var DefaultContext = {
12280
- color: void 0,
12281
- size: void 0,
12282
- className: void 0,
12283
- style: void 0,
12284
- attr: void 0
12285
- };
12286
- var IconContext = React40.createContext && /* @__PURE__ */ React40.createContext(DefaultContext);
12287
-
12288
- // ../../node_modules/react-icons/lib/iconBase.mjs
12289
- var _excluded = ["attr", "size", "title"];
12290
- function _objectWithoutProperties(source, excluded) {
12291
- if (source == null) return {};
12292
- var target = _objectWithoutPropertiesLoose(source, excluded);
12293
- var key, i;
12294
- if (Object.getOwnPropertySymbols) {
12295
- var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
12296
- for (i = 0; i < sourceSymbolKeys.length; i++) {
12297
- key = sourceSymbolKeys[i];
12298
- if (excluded.indexOf(key) >= 0) continue;
12299
- if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
12300
- target[key] = source[key];
12301
- }
12302
- }
12303
- return target;
12304
- }
12305
- function _objectWithoutPropertiesLoose(source, excluded) {
12306
- if (source == null) return {};
12307
- var target = {};
12308
- for (var key in source) {
12309
- if (Object.prototype.hasOwnProperty.call(source, key)) {
12310
- if (excluded.indexOf(key) >= 0) continue;
12311
- target[key] = source[key];
12312
- }
12313
- }
12314
- return target;
12315
- }
12316
- function _extends() {
12317
- _extends = Object.assign ? Object.assign.bind() : function(target) {
12318
- for (var i = 1; i < arguments.length; i++) {
12319
- var source = arguments[i];
12320
- for (var key in source) {
12321
- if (Object.prototype.hasOwnProperty.call(source, key)) {
12322
- target[key] = source[key];
12323
- }
12324
- }
12325
- }
12326
- return target;
12327
- };
12328
- return _extends.apply(this, arguments);
12329
- }
12330
- function ownKeys(e, r) {
12331
- var t = Object.keys(e);
12332
- if (Object.getOwnPropertySymbols) {
12333
- var o = Object.getOwnPropertySymbols(e);
12334
- r && (o = o.filter(function(r2) {
12335
- return Object.getOwnPropertyDescriptor(e, r2).enumerable;
12336
- })), t.push.apply(t, o);
12337
- }
12338
- return t;
12339
- }
12340
- function _objectSpread(e) {
12341
- for (var r = 1; r < arguments.length; r++) {
12342
- var t = null != arguments[r] ? arguments[r] : {};
12343
- r % 2 ? ownKeys(Object(t), true).forEach(function(r2) {
12344
- _defineProperty(e, r2, t[r2]);
12345
- }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r2) {
12346
- Object.defineProperty(e, r2, Object.getOwnPropertyDescriptor(t, r2));
12347
- });
12348
- }
12349
- return e;
12350
- }
12351
- function _defineProperty(obj, key, value) {
12352
- key = _toPropertyKey(key);
12353
- if (key in obj) {
12354
- Object.defineProperty(obj, key, { value, enumerable: true, configurable: true, writable: true });
12355
- } else {
12356
- obj[key] = value;
12357
- }
12358
- return obj;
12359
- }
12360
- function _toPropertyKey(t) {
12361
- var i = _toPrimitive(t, "string");
12362
- return "symbol" == typeof i ? i : i + "";
12363
- }
12364
- function _toPrimitive(t, r) {
12365
- if ("object" != typeof t || !t) return t;
12366
- var e = t[Symbol.toPrimitive];
12367
- if (void 0 !== e) {
12368
- var i = e.call(t, r || "default");
12369
- if ("object" != typeof i) return i;
12370
- throw new TypeError("@@toPrimitive must return a primitive value.");
12371
- }
12372
- return ("string" === r ? String : Number)(t);
12373
- }
12374
- function Tree2Element(tree) {
12375
- return tree && tree.map((node, i) => /* @__PURE__ */ React41.createElement(node.tag, _objectSpread({
12376
- key: i
12377
- }, node.attr), Tree2Element(node.child)));
12378
- }
12379
- function GenIcon(data) {
12380
- return (props) => /* @__PURE__ */ React41.createElement(IconBase, _extends({
12381
- attr: _objectSpread({}, data.attr)
12382
- }, props), Tree2Element(data.child));
12383
- }
12384
- function IconBase(props) {
12385
- var elem = (conf) => {
12386
- var {
12387
- attr,
12388
- size,
12389
- title
12390
- } = props, svgProps = _objectWithoutProperties(props, _excluded);
12391
- var computedSize = size || conf.size || "1em";
12392
- var className;
12393
- if (conf.className) className = conf.className;
12394
- if (props.className) className = (className ? className + " " : "") + props.className;
12395
- return /* @__PURE__ */ React41.createElement("svg", _extends({
12396
- stroke: "currentColor",
12397
- fill: "currentColor",
12398
- strokeWidth: "0"
12399
- }, conf.attr, attr, svgProps, {
12400
- className,
12401
- style: _objectSpread(_objectSpread({
12402
- color: props.color || conf.color
12403
- }, conf.style), props.style),
12404
- height: computedSize,
12405
- width: computedSize,
12406
- xmlns: "http://www.w3.org/2000/svg"
12407
- }), title && /* @__PURE__ */ React41.createElement("title", null, title), props.children);
12408
- };
12409
- return IconContext !== void 0 ? /* @__PURE__ */ React41.createElement(IconContext.Consumer, null, (conf) => elem(conf)) : elem(DefaultContext);
12410
- }
12411
-
12412
- // ../../node_modules/react-icons/fa/index.mjs
12413
- function FaInstagram(props) {
12414
- return GenIcon({ "tag": "svg", "attr": { "viewBox": "0 0 448 512" }, "child": [{ "tag": "path", "attr": { "d": "M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z" }, "child": [] }] })(props);
12415
- }
12416
-
12417
- // ../../node_modules/react-icons/si/index.mjs
12418
- function SiZalo(props) {
12419
- return GenIcon({ "tag": "svg", "attr": { "role": "img", "viewBox": "0 0 24 24" }, "child": [{ "tag": "path", "attr": { "d": "M12.49 10.2722v-.4496h1.3467v6.3218h-.7704a.576.576 0 01-.5763-.5729l-.0006.0005a3.273 3.273 0 01-1.9372.6321c-1.8138 0-3.2844-1.4697-3.2844-3.2823 0-1.8125 1.4706-3.2822 3.2844-3.2822a3.273 3.273 0 011.9372.6321l.0006.0005zM6.9188 7.7896v.205c0 .3823-.051.6944-.2995 1.0605l-.03.0343c-.0542.0615-.1815.206-.2421.2843L2.024 14.8h4.8948v.7682a.5764.5764 0 01-.5767.5761H0v-.3622c0-.4436.1102-.6414.2495-.8476L4.8582 9.23H.1922V7.7896h6.7266zm8.5513 8.3548a.4805.4805 0 01-.4803-.4798v-7.875h1.4416v8.3548H15.47zM20.6934 9.6C22.52 9.6 24 11.0807 24 12.9044c0 1.8252-1.4801 3.306-3.3066 3.306-1.8264 0-3.3066-1.4808-3.3066-3.306 0-1.8237 1.4802-3.3044 3.3066-3.3044zm-10.1412 5.253c1.0675 0 1.9324-.8645 1.9324-1.9312 0-1.065-.865-1.9295-1.9324-1.9295s-1.9324.8644-1.9324 1.9295c0 1.0667.865 1.9312 1.9324 1.9312zm10.1412-.0033c1.0737 0 1.945-.8707 1.945-1.9453 0-1.073-.8713-1.9436-1.945-1.9436-1.0753 0-1.945.8706-1.945 1.9436 0 1.0746.8697 1.9453 1.945 1.9453z" }, "child": [] }] })(props);
12420
- }
12421
-
12422
- // ../../components/ui/FloatingContacts.tsx
12423
- import { jsx as jsx50, jsxs as jsxs44 } from "react/jsx-runtime";
12335
+ import { jsx as jsx49, jsxs as jsxs44 } from "react/jsx-runtime";
12424
12336
  function MessengerIcon(props) {
12425
- return /* @__PURE__ */ jsx50("svg", { viewBox: "0 0 24 24", width: 24, height: 24, "aria-hidden": "true", ...props, children: /* @__PURE__ */ jsx50(
12337
+ return /* @__PURE__ */ jsx49("svg", { viewBox: "0 0 24 24", width: 24, height: 24, "aria-hidden": "true", ...props, children: /* @__PURE__ */ jsx49(
12426
12338
  "path",
12427
12339
  {
12428
12340
  d: "M12 2C6.477 2 2 6.145 2 11.235c0 2.93 1.35 5.542 3.464 7.25v3.515l3.344-1.836c.894.247 1.843.375 2.192.375 5.523 0 10-4.145 10-9.235S17.523 2 12 2zm.994 12.444l-2.563-2.73-5.004 2.73 5.507-5.84 2.626 2.729 4.942-2.729-5.508 5.84z",
@@ -12431,10 +12343,16 @@ function MessengerIcon(props) {
12431
12343
  ) });
12432
12344
  }
12433
12345
  function ZaloIcon(props) {
12434
- return /* @__PURE__ */ jsx50(SiZalo, { size: 20, ...props });
12346
+ return /* @__PURE__ */ jsx49("svg", { viewBox: "0 0 48 48", width: 20, height: 20, "aria-hidden": "true", ...props, children: /* @__PURE__ */ jsx49(
12347
+ "path",
12348
+ {
12349
+ fill: "white",
12350
+ d: "M24 4C12.954 4 4 12.954 4 24s8.954 20 20 20 20-8.954 20-20S35.046 4 24 4zm6.164 27.602h-4.239c-.405 0-.732-.328-.732-.732v-7.596l-2.646 7.933c-.096.288-.366.482-.67.482h-1.773c-.304 0-.574-.194-.67-.482l-2.647-7.933v7.596c0 .405-.327.732-.732.732h-2.873c-.405 0-.732-.328-.732-.732V17.134c0-.405.327-.732.732-.732h3.91c.32 0 .602.208.698.514l2.68 8.042 2.68-8.042c.096-.306.378-.514.698-.514h3.91c.405 0 .732.327.732.732v14.466c0 .404-.327.732-.732.732z"
12351
+ }
12352
+ ) });
12435
12353
  }
12436
12354
  function InstagramIcon(props) {
12437
- return /* @__PURE__ */ jsx50(FaInstagram, { size: 20, ...props });
12355
+ return /* @__PURE__ */ jsx49("svg", { viewBox: "0 0 24 24", width: 20, height: 20, "aria-hidden": "true", fill: "white", ...props, children: /* @__PURE__ */ jsx49("path", { d: "M12 2.163c3.204 0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849 0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204 0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849 0-3.204.013-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.266-.057 1.645-.069 4.849-.069zm0-2.163c-3.259 0-3.667.014-4.947.072-4.358.2-6.78 2.618-6.98 6.98-.059 1.281-.073 1.689-.073 4.948 0 3.259.014 3.668.072 4.948.2 4.358 2.618 6.78 6.98 6.98 1.281.058 1.689.072 4.948.072 3.259 0 3.668-.014 4.948-.072 4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948 0-3.259-.014-3.667-.072-4.947-.196-4.354-2.617-6.78-6.979-6.98-1.281-.059-1.69-.073-4.949-.073zm0 5.838c-3.403 0-6.162 2.759-6.162 6.162s2.759 6.163 6.162 6.163 6.162-2.759 6.162-6.163c0-3.403-2.759-6.162-6.162-6.162zm0 10.162c-2.209 0-4-1.79-4-4 0-2.209 1.791-4 4-4s4 1.791 4 4c0 2.21-1.791 4-4 4zm6.406-11.845c-.796 0-1.441.645-1.441 1.44s.645 1.44 1.441 1.44c.795 0 1.439-.645 1.439-1.44s-.644-1.44-1.439-1.44z" }) });
12438
12356
  }
12439
12357
  function FloatingContacts({ className }) {
12440
12358
  const pathname = usePathname();
@@ -12470,7 +12388,7 @@ function FloatingContacts({ className }) {
12470
12388
  }
12471
12389
  ];
12472
12390
  return /* @__PURE__ */ jsxs44("div", { className: cn("fixed bottom-6 right-4 z-[100000]", "flex flex-col items-end gap-3", className), "aria-label": "Quick contacts", children: [
12473
- /* @__PURE__ */ jsx50(
12391
+ /* @__PURE__ */ jsx49(
12474
12392
  Link2,
12475
12393
  {
12476
12394
  href: `tel:${hotline.replace(/\D/g, "")}`,
@@ -12481,10 +12399,10 @@ function FloatingContacts({ className }) {
12481
12399
  "hover:scale-105 active:scale-95 transition-transform",
12482
12400
  "bg-[#22c55e]"
12483
12401
  ),
12484
- children: /* @__PURE__ */ jsx50(Phone, { className: "w-6 h-6" })
12402
+ children: /* @__PURE__ */ jsx49(Phone, { className: "w-6 h-6" })
12485
12403
  }
12486
12404
  ),
12487
- moreItems.map(({ key, href, label, bg, Icon, external }) => /* @__PURE__ */ jsx50(
12405
+ moreItems.map(({ key, href, label, bg, Icon, external }) => /* @__PURE__ */ jsx49(
12488
12406
  Link2,
12489
12407
  {
12490
12408
  href,
@@ -12496,7 +12414,7 @@ function FloatingContacts({ className }) {
12496
12414
  "hover:scale-105 active:scale-95 transition-transform",
12497
12415
  bg
12498
12416
  ),
12499
- children: /* @__PURE__ */ jsx50(Icon, { className: "w-6 h-6" })
12417
+ children: /* @__PURE__ */ jsx49(Icon, { className: "w-6 h-6" })
12500
12418
  },
12501
12419
  key
12502
12420
  ))
@@ -12505,7 +12423,7 @@ function FloatingContacts({ className }) {
12505
12423
 
12506
12424
  // ../../components/ui/AccessDenied.tsx
12507
12425
  import { Lock, ShieldAlert, Ban } from "lucide-react";
12508
- import { jsx as jsx51, jsxs as jsxs45 } from "react/jsx-runtime";
12426
+ import { jsx as jsx50, jsxs as jsxs45 } from "react/jsx-runtime";
12509
12427
  var VARIANT_STYLES = {
12510
12428
  destructive: { bg: "bg-destructive/5", border: "border-destructive/20", text: "text-destructive" },
12511
12429
  warning: { bg: "bg-warning/5", border: "border-warning/20", text: "text-warning" },
@@ -12526,13 +12444,13 @@ function AccessDenied({
12526
12444
  }) {
12527
12445
  const styles = VARIANT_STYLES[variant];
12528
12446
  const UsedIcon = Icon || DEFAULT_ICONS[variant];
12529
- return /* @__PURE__ */ jsx51(Card_default, { className: cn("p-8 text-center shadow-sm", styles.bg, styles.border, className), children: /* @__PURE__ */ jsxs45("div", { className: "flex flex-col items-center gap-4", children: [
12530
- /* @__PURE__ */ jsx51("div", { className: cn("p-3 rounded-lg", styles.bg.replace("/5", "/10")), children: /* @__PURE__ */ jsx51(UsedIcon, { className: cn("w-8 h-8", styles.text) }) }),
12447
+ return /* @__PURE__ */ jsx50(Card_default, { className: cn("p-8 text-center shadow-sm", styles.bg, styles.border, className), children: /* @__PURE__ */ jsxs45("div", { className: "flex flex-col items-center gap-4", children: [
12448
+ /* @__PURE__ */ jsx50("div", { className: cn("p-3 rounded-lg", styles.bg.replace("/5", "/10")), children: /* @__PURE__ */ jsx50(UsedIcon, { className: cn("w-8 h-8", styles.text) }) }),
12531
12449
  /* @__PURE__ */ jsxs45("div", { children: [
12532
- /* @__PURE__ */ jsx51("h3", { className: cn("font-semibold mb-2", styles.text), children: title }),
12533
- /* @__PURE__ */ jsx51("p", { className: cn(styles.text.replace("text-", "text-") + "/80", "text-sm"), children: description })
12450
+ /* @__PURE__ */ jsx50("h3", { className: cn("font-semibold mb-2", styles.text), children: title }),
12451
+ /* @__PURE__ */ jsx50("p", { className: cn(styles.text.replace("text-", "text-") + "/80", "text-sm"), children: description })
12534
12452
  ] }),
12535
- children && /* @__PURE__ */ jsx51("div", { className: "mt-2 flex flex-wrap gap-2 justify-center", children })
12453
+ children && /* @__PURE__ */ jsx50("div", { className: "mt-2 flex flex-wrap gap-2 justify-center", children })
12536
12454
  ] }) });
12537
12455
  }
12538
12456
 
@@ -12540,7 +12458,7 @@ function AccessDenied({
12540
12458
  import { Moon, Sun, Monitor } from "lucide-react";
12541
12459
  import { useEffect as useEffect20, useRef as useRef12, useState as useState32 } from "react";
12542
12460
  import { createPortal as createPortal10 } from "react-dom";
12543
- import { Fragment as Fragment18, jsx as jsx52, jsxs as jsxs46 } from "react/jsx-runtime";
12461
+ import { Fragment as Fragment18, jsx as jsx51, jsxs as jsxs46 } from "react/jsx-runtime";
12544
12462
  function ThemeToggleHeadless({
12545
12463
  theme,
12546
12464
  onChange,
@@ -12570,7 +12488,7 @@ function ThemeToggleHeadless({
12570
12488
  return { top, left, width };
12571
12489
  };
12572
12490
  return /* @__PURE__ */ jsxs46("div", { className: cn("relative", className), children: [
12573
- /* @__PURE__ */ jsx52(
12491
+ /* @__PURE__ */ jsx51(
12574
12492
  Button_default,
12575
12493
  {
12576
12494
  variant: "ghost",
@@ -12588,13 +12506,13 @@ function ThemeToggleHeadless({
12588
12506
  "aria-haspopup": "menu",
12589
12507
  "aria-expanded": isOpen,
12590
12508
  "aria-label": labels?.heading ?? "Theme",
12591
- children: /* @__PURE__ */ jsx52(CurrentIcon, { className: "h-5 w-5" })
12509
+ children: /* @__PURE__ */ jsx51(CurrentIcon, { className: "h-5 w-5" })
12592
12510
  }
12593
12511
  ),
12594
12512
  isOpen && /* @__PURE__ */ jsxs46(Fragment18, { children: [
12595
- typeof window !== "undefined" && createPortal10(/* @__PURE__ */ jsx52("div", { className: "fixed inset-0 z-[9998]", onClick: () => setIsOpen(false) }), document.body),
12513
+ typeof window !== "undefined" && createPortal10(/* @__PURE__ */ jsx51("div", { className: "fixed inset-0 z-[9998]", onClick: () => setIsOpen(false) }), document.body),
12596
12514
  typeof window !== "undefined" && dropdownPosition && createPortal10(
12597
- /* @__PURE__ */ jsx52(
12515
+ /* @__PURE__ */ jsx51(
12598
12516
  "div",
12599
12517
  {
12600
12518
  className: "z-[9999] bg-card border border-border rounded-lg shadow-lg overflow-hidden",
@@ -12602,7 +12520,7 @@ function ThemeToggleHeadless({
12602
12520
  onMouseDown: (e) => e.stopPropagation(),
12603
12521
  role: "menu",
12604
12522
  children: /* @__PURE__ */ jsxs46("div", { className: "p-2", children: [
12605
- /* @__PURE__ */ jsx52("div", { className: "px-3 py-2 text-sm font-medium text-muted-foreground border-b border-border mb-2", children: labels?.heading ?? "Theme" }),
12523
+ /* @__PURE__ */ jsx51("div", { className: "px-3 py-2 text-sm font-medium text-muted-foreground border-b border-border mb-2", children: labels?.heading ?? "Theme" }),
12606
12524
  themes.map((opt) => {
12607
12525
  const Icon = opt.icon;
12608
12526
  const active = theme === opt.value;
@@ -12622,9 +12540,9 @@ function ThemeToggleHeadless({
12622
12540
  role: "menuitemradio",
12623
12541
  "aria-checked": active,
12624
12542
  children: [
12625
- /* @__PURE__ */ jsx52(Icon, { className: "h-4 w-4" }),
12626
- /* @__PURE__ */ jsx52("span", { className: "flex-1 text-left", children: opt.label }),
12627
- active && /* @__PURE__ */ jsx52("div", { className: "w-2 h-2 rounded-full bg-primary" })
12543
+ /* @__PURE__ */ jsx51(Icon, { className: "h-4 w-4" }),
12544
+ /* @__PURE__ */ jsx51("span", { className: "flex-1 text-left", children: opt.label }),
12545
+ active && /* @__PURE__ */ jsx51("div", { className: "w-2 h-2 rounded-full bg-primary" })
12628
12546
  ]
12629
12547
  },
12630
12548
  opt.value
@@ -12643,7 +12561,7 @@ function ThemeToggleHeadless({
12643
12561
  import { useRef as useRef13, useState as useState33 } from "react";
12644
12562
  import { createPortal as createPortal11 } from "react-dom";
12645
12563
  import { Globe } from "lucide-react";
12646
- import { Fragment as Fragment19, jsx as jsx53, jsxs as jsxs47 } from "react/jsx-runtime";
12564
+ import { Fragment as Fragment19, jsx as jsx52, jsxs as jsxs47 } from "react/jsx-runtime";
12647
12565
  function LanguageSwitcherHeadless({
12648
12566
  locales,
12649
12567
  currentLocale,
@@ -12666,7 +12584,7 @@ function LanguageSwitcherHeadless({
12666
12584
  return { top, left, width };
12667
12585
  };
12668
12586
  return /* @__PURE__ */ jsxs47("div", { className: cn("relative", className), children: [
12669
- /* @__PURE__ */ jsx53(
12587
+ /* @__PURE__ */ jsx52(
12670
12588
  Button_default,
12671
12589
  {
12672
12590
  variant: "ghost",
@@ -12685,13 +12603,13 @@ function LanguageSwitcherHeadless({
12685
12603
  "aria-expanded": isOpen,
12686
12604
  "aria-label": labels?.heading ?? "Language",
12687
12605
  title: labels?.heading ?? "Language",
12688
- children: /* @__PURE__ */ jsx53(Globe, { className: "h-5 w-5" })
12606
+ children: /* @__PURE__ */ jsx52(Globe, { className: "h-5 w-5" })
12689
12607
  }
12690
12608
  ),
12691
12609
  isOpen && /* @__PURE__ */ jsxs47(Fragment19, { children: [
12692
- typeof window !== "undefined" && createPortal11(/* @__PURE__ */ jsx53("div", { className: "fixed inset-0 z-[9998]", onClick: () => setIsOpen(false) }), document.body),
12610
+ typeof window !== "undefined" && createPortal11(/* @__PURE__ */ jsx52("div", { className: "fixed inset-0 z-[9998]", onClick: () => setIsOpen(false) }), document.body),
12693
12611
  typeof window !== "undefined" && dropdownPosition && createPortal11(
12694
- /* @__PURE__ */ jsx53(
12612
+ /* @__PURE__ */ jsx52(
12695
12613
  "div",
12696
12614
  {
12697
12615
  className: "z-[9999] bg-card border border-border rounded-lg shadow-lg overflow-hidden",
@@ -12699,7 +12617,7 @@ function LanguageSwitcherHeadless({
12699
12617
  onMouseDown: (e) => e.stopPropagation(),
12700
12618
  role: "menu",
12701
12619
  children: /* @__PURE__ */ jsxs47("div", { className: "p-2", children: [
12702
- /* @__PURE__ */ jsx53("div", { className: "px-3 py-2 text-sm font-medium text-muted-foreground border-b border-border mb-2", children: labels?.heading ?? "Language" }),
12620
+ /* @__PURE__ */ jsx52("div", { className: "px-3 py-2 text-sm font-medium text-muted-foreground border-b border-border mb-2", children: labels?.heading ?? "Language" }),
12703
12621
  locales.map((language) => /* @__PURE__ */ jsxs47(
12704
12622
  Button_default,
12705
12623
  {
@@ -12713,9 +12631,9 @@ function LanguageSwitcherHeadless({
12713
12631
  role: "menuitemradio",
12714
12632
  "aria-checked": currentLocale === language.code,
12715
12633
  children: [
12716
- language.flag && /* @__PURE__ */ jsx53("span", { className: "text-lg", children: language.flag }),
12717
- /* @__PURE__ */ jsx53("span", { className: "flex-1 text-left", children: language.name }),
12718
- currentLocale === language.code && /* @__PURE__ */ jsx53("div", { className: "w-2 h-2 rounded-full bg-primary" })
12634
+ language.flag && /* @__PURE__ */ jsx52("span", { className: "text-lg", children: language.flag }),
12635
+ /* @__PURE__ */ jsx52("span", { className: "flex-1 text-left", children: language.name }),
12636
+ currentLocale === language.code && /* @__PURE__ */ jsx52("div", { className: "w-2 h-2 rounded-full bg-primary" })
12719
12637
  ]
12720
12638
  },
12721
12639
  language.code