nexoreui 0.1.6 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -57,6 +57,7 @@ __export(index_exports, {
57
57
  AudioWaveform: () => AudioWaveform,
58
58
  AuroraBorderCard: () => AuroraBorderCard,
59
59
  AuroraBorderFX: () => AuroraBorderFX,
60
+ AuroraSearchPill: () => AuroraSearchPill,
60
61
  AuthenticationLayout: () => AuthenticationLayout,
61
62
  Avatar: () => Avatar,
62
63
  AvatarFallback: () => AvatarFallback,
@@ -319,6 +320,7 @@ __export(index_exports, {
319
320
  RangeSliderInput: () => RangeSliderInput,
320
321
  RateLimitAlert: () => RateLimitAlert,
321
322
  Rating: () => Rating,
323
+ RatingBreakdown: () => RatingBreakdown,
322
324
  RatingStars: () => RatingStars,
323
325
  ReactionAdd: () => ReactionAdd,
324
326
  ReactionBar: () => ReactionBar,
@@ -330,6 +332,7 @@ __export(index_exports, {
330
332
  RetroGrid: () => RetroGrid,
331
333
  RevealClip: () => RevealClip,
332
334
  RevenueChartWidget: () => RevenueChartWidget,
335
+ ReviewCard: () => ReviewCard,
333
336
  ReviewStars: () => ReviewStars,
334
337
  RichTooltip: () => RichTooltip,
335
338
  RingLoader: () => RingLoader,
@@ -1955,7 +1958,7 @@ var Switch = React10.forwardRef(({ className, variant = "default", ...props }, r
1955
1958
  SwitchPrimitive.Root,
1956
1959
  {
1957
1960
  className: cn(
1958
- "peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border border-border/50 transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-muted shadow-sm",
1961
+ "peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:border-primary data-[state=unchecked]:bg-zinc-200 dark:data-[state=unchecked]:bg-zinc-800 data-[state=unchecked]:border-zinc-300 dark:data-[state=unchecked]:border-zinc-700 shadow-sm",
1959
1962
  variant === "neon" && "data-[state=checked]:shadow-[0_0_var(--glow-radius)_rgba(var(--glow-color),var(--glow-strength))] data-[state=checked]:border-primary/50",
1960
1963
  className
1961
1964
  ),
@@ -1965,7 +1968,7 @@ var Switch = React10.forwardRef(({ className, variant = "default", ...props }, r
1965
1968
  SwitchPrimitive.Thumb,
1966
1969
  {
1967
1970
  className: cn(
1968
- "pointer-events-none block h-5 w-5 rounded-full bg-background shadow-sm ring-0 transition-all duration-300 ease-in-out data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0 data-[state=checked]:scale-95 border border-border/20"
1971
+ "pointer-events-none block h-5 w-5 rounded-full bg-white shadow-md ring-0 transition-all duration-300 ease-in-out data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0 data-[state=checked]:scale-95 border border-black/5 dark:border-white/10"
1969
1972
  )
1970
1973
  }
1971
1974
  )
@@ -2366,7 +2369,7 @@ var Progress = React13.forwardRef(
2366
2369
  warning: "bg-gradient-to-r from-amber-500 to-orange-500",
2367
2370
  error: "bg-gradient-to-r from-red-500 to-rose-500"
2368
2371
  };
2369
- const sizeClasses = {
2372
+ const sizeClasses2 = {
2370
2373
  default: "h-3.5",
2371
2374
  sm: "h-2",
2372
2375
  lg: "h-5"
@@ -2387,7 +2390,7 @@ var Progress = React13.forwardRef(
2387
2390
  max,
2388
2391
  className: cn(
2389
2392
  "relative w-full overflow-hidden rounded-full bg-muted border border-border/40 shadow-inner",
2390
- sizeClasses[size],
2393
+ sizeClasses2[size],
2391
2394
  className
2392
2395
  ),
2393
2396
  ...props,
@@ -2462,8 +2465,19 @@ var CircularProgressCard = ({
2462
2465
  var React14 = __toESM(require("react"));
2463
2466
  var SliderPrimitive = __toESM(require("@radix-ui/react-slider"));
2464
2467
  var import_jsx_runtime17 = require("react/jsx-runtime");
2465
- var Slider = React14.forwardRef(({ min = 0, max = 100, step = 1, value = 0, onChange, showValue = false, variant = "default", className, ...props }, ref) => {
2468
+ var Slider = React14.forwardRef(({ min = 0, max = 100, step = 1, value, defaultValue = 0, onChange, showValue = false, variant = "default", className, ...props }, ref) => {
2469
+ const isControlled = value !== void 0;
2470
+ const [internalValue, setInternalValue] = React14.useState(defaultValue);
2471
+ const currentValue = isControlled ? value : internalValue;
2472
+ React14.useEffect(() => {
2473
+ if (!isControlled && defaultValue !== void 0) {
2474
+ setInternalValue(defaultValue);
2475
+ }
2476
+ }, [defaultValue, isControlled]);
2466
2477
  const handleValueChange = (val) => {
2478
+ if (!isControlled) {
2479
+ setInternalValue(val[0]);
2480
+ }
2467
2481
  onChange?.(val[0]);
2468
2482
  };
2469
2483
  const variantClasses = {
@@ -2482,7 +2496,7 @@ var Slider = React14.forwardRef(({ min = 0, max = 100, step = 1, value = 0, onCh
2482
2496
  return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "w-full space-y-2", children: [
2483
2497
  showValue && /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "flex justify-between text-sm font-medium", children: [
2484
2498
  /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { children: "Value" }),
2485
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { children: value })
2499
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { children: currentValue })
2486
2500
  ] }),
2487
2501
  /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
2488
2502
  SliderPrimitive.Root,
@@ -2491,7 +2505,7 @@ var Slider = React14.forwardRef(({ min = 0, max = 100, step = 1, value = 0, onCh
2491
2505
  min,
2492
2506
  max,
2493
2507
  step,
2494
- value: [value],
2508
+ value: [currentValue],
2495
2509
  onValueChange: handleValueChange,
2496
2510
  className: cn(
2497
2511
  "relative flex w-full touch-none select-none items-center",
@@ -3460,102 +3474,310 @@ var React20 = __toESM(require("react"));
3460
3474
  var import_framer_motion14 = require("framer-motion");
3461
3475
  var import_lucide_react9 = require("lucide-react");
3462
3476
  var import_jsx_runtime25 = require("react/jsx-runtime");
3477
+ var sizeClasses = {
3478
+ xs: "h-3.5 w-3.5",
3479
+ sm: "h-4 w-4",
3480
+ md: "h-6 w-6",
3481
+ lg: "h-8 w-8",
3482
+ xl: "h-10 w-10"
3483
+ };
3484
+ var variantStyles = {
3485
+ amber: {
3486
+ active: "fill-amber-400 text-amber-400",
3487
+ glow: "drop-shadow-[0_0_8px_rgba(251,191,36,0.35)]"
3488
+ },
3489
+ primary: {
3490
+ active: "fill-primary text-primary",
3491
+ glow: "drop-shadow-[0_0_8px_rgba(var(--primary-rgb),0.35)]"
3492
+ },
3493
+ emerald: {
3494
+ active: "fill-emerald-400 text-emerald-400",
3495
+ glow: "drop-shadow-[0_0_8px_rgba(52,211,153,0.35)]"
3496
+ },
3497
+ rose: {
3498
+ active: "fill-rose-500 text-rose-500",
3499
+ glow: "drop-shadow-[0_0_8px_rgba(244,63,94,0.35)]"
3500
+ },
3501
+ cyan: {
3502
+ active: "fill-cyan-400 text-cyan-400",
3503
+ glow: "drop-shadow-[0_0_8px_rgba(34,211,238,0.35)]"
3504
+ }
3505
+ };
3506
+ var getIconComponent = (icon) => {
3507
+ switch (icon) {
3508
+ case "heart":
3509
+ return import_lucide_react9.Heart;
3510
+ case "thumb":
3511
+ return import_lucide_react9.ThumbsUp;
3512
+ case "flame":
3513
+ return import_lucide_react9.Flame;
3514
+ case "trophy":
3515
+ return import_lucide_react9.Trophy;
3516
+ case "smile":
3517
+ return import_lucide_react9.Smile;
3518
+ case "star":
3519
+ default:
3520
+ return import_lucide_react9.Star;
3521
+ }
3522
+ };
3463
3523
  var Rating = React20.forwardRef(
3464
3524
  ({
3465
3525
  value,
3526
+ defaultValue = 0,
3466
3527
  max = 5,
3467
3528
  onChange,
3468
3529
  readonly = false,
3469
3530
  size = "md",
3470
3531
  icon = "star",
3532
+ variant = "amber",
3533
+ allowHalf = false,
3534
+ showScore = false,
3535
+ tooltips,
3471
3536
  className,
3472
3537
  ...props
3473
3538
  }, ref) => {
3539
+ const isControlled = value !== void 0;
3540
+ const [internalValue, setInternalValue] = React20.useState(defaultValue);
3474
3541
  const [hoverValue, setHoverValue] = React20.useState(null);
3475
- const activeValue = hoverValue !== null ? hoverValue : value;
3476
- const sizeClasses = {
3477
- sm: "h-4 w-4",
3478
- md: "h-6 w-6",
3479
- lg: "h-8 w-8"
3542
+ const currentValue = isControlled ? value : internalValue;
3543
+ const activeValue = hoverValue !== null ? hoverValue : currentValue;
3544
+ React20.useEffect(() => {
3545
+ if (!isControlled && defaultValue !== void 0) {
3546
+ setInternalValue(defaultValue);
3547
+ }
3548
+ }, [defaultValue, isControlled]);
3549
+ const handleSelect = (val) => {
3550
+ if (readonly) return;
3551
+ if (!isControlled) {
3552
+ setInternalValue(val);
3553
+ }
3554
+ onChange?.(val);
3480
3555
  };
3481
- const getIcon = () => {
3482
- switch (icon) {
3483
- case "heart":
3484
- return import_lucide_react9.Heart;
3485
- case "thumb":
3486
- return import_lucide_react9.ThumbsUp;
3487
- case "star":
3488
- default:
3489
- return import_lucide_react9.Star;
3556
+ const handleMouseMove = (e, index) => {
3557
+ if (readonly) return;
3558
+ if (!allowHalf) {
3559
+ setHoverValue(index + 1);
3560
+ return;
3490
3561
  }
3562
+ const rect = e.currentTarget.getBoundingClientRect();
3563
+ const isLeftHalf = e.clientX - rect.left < rect.width / 2;
3564
+ const computed = isLeftHalf ? index + 0.5 : index + 1;
3565
+ setHoverValue(computed);
3491
3566
  };
3492
- const RatingIcon = getIcon();
3493
- const handleKeyDown = (e, idx) => {
3494
- if (readonly || !onChange) return;
3567
+ const handleKeyDown = (e) => {
3568
+ if (readonly) return;
3569
+ const step = allowHalf ? 0.5 : 1;
3495
3570
  if (e.key === "ArrowRight" || e.key === "ArrowUp") {
3496
3571
  e.preventDefault();
3497
- onChange(Math.min(max, value + 1));
3572
+ handleSelect(Math.min(max, currentValue + step));
3498
3573
  } else if (e.key === "ArrowLeft" || e.key === "ArrowDown") {
3499
3574
  e.preventDefault();
3500
- onChange(Math.max(1, value - 1));
3501
- } else if (e.key === "Enter" || e.key === " ") {
3502
- e.preventDefault();
3503
- onChange(idx);
3575
+ handleSelect(Math.max(allowHalf ? 0.5 : 1, currentValue - step));
3504
3576
  }
3505
3577
  };
3506
- return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
3578
+ const RatingIcon = getIconComponent(icon);
3579
+ const styling = variantStyles[variant] || variantStyles.amber;
3580
+ const currentTooltip = tooltips && activeValue > 0 ? tooltips[Math.min(tooltips.length - 1, Math.ceil(activeValue) - 1)] : null;
3581
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(
3507
3582
  "div",
3508
3583
  {
3509
3584
  ref,
3510
3585
  role: "slider",
3511
- "aria-valuenow": value,
3512
- "aria-valuemin": 1,
3586
+ "aria-valuenow": currentValue,
3587
+ "aria-valuemin": allowHalf ? 0.5 : 1,
3513
3588
  "aria-valuemax": max,
3589
+ tabIndex: readonly ? -1 : 0,
3590
+ onKeyDown: handleKeyDown,
3514
3591
  className: cn(
3515
- "flex items-center gap-1.5",
3592
+ "inline-flex items-center gap-2 select-none outline-none",
3516
3593
  readonly ? "cursor-default" : "cursor-pointer",
3517
3594
  className
3518
3595
  ),
3519
3596
  ...props,
3520
- children: Array.from({ length: max }).map((_, i) => {
3521
- const indexValue = i + 1;
3522
- const isFilled = indexValue <= activeValue;
3523
- const isActuallySelected = indexValue <= value;
3524
- return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
3525
- import_framer_motion14.motion.button,
3526
- {
3527
- type: "button",
3528
- disabled: readonly,
3529
- onClick: () => onChange?.(indexValue),
3530
- onMouseEnter: () => !readonly && setHoverValue(indexValue),
3531
- onMouseLeave: () => !readonly && setHoverValue(null),
3532
- onKeyDown: (e) => handleKeyDown(e, indexValue),
3533
- className: cn(
3534
- "p-0.5 outline-none rounded-md transition-colors focus-visible:ring-2 focus-visible:ring-primary/40 focus-visible:ring-offset-1 focus-visible:bg-muted/35",
3535
- readonly ? "pointer-events-none" : ""
3536
- ),
3537
- whileHover: readonly ? {} : { scale: 1.15 },
3538
- whileTap: readonly ? {} : { scale: 0.9 },
3539
- transition: { type: "spring", stiffness: 400, damping: 15 },
3540
- children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
3541
- RatingIcon,
3542
- {
3543
- className: cn(
3544
- sizeClasses[size],
3545
- "transition-all duration-200 stroke-[1.8]",
3546
- isFilled ? "fill-primary text-primary drop-shadow-[0_0_8px_rgba(var(--primary-rgb),0.25)]" : "text-muted-foreground/40 hover:text-muted-foreground/60"
3597
+ children: [
3598
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { className: "flex items-center gap-1.5", onMouseLeave: () => !readonly && setHoverValue(null), children: Array.from({ length: max }).map((_, i) => {
3599
+ const indexValue = i + 1;
3600
+ const isFull = indexValue <= activeValue;
3601
+ const isHalf = allowHalf && activeValue === i + 0.5;
3602
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(
3603
+ import_framer_motion14.motion.button,
3604
+ {
3605
+ type: "button",
3606
+ tabIndex: -1,
3607
+ disabled: readonly,
3608
+ onClick: (e) => {
3609
+ if (allowHalf) {
3610
+ const rect = e.currentTarget.getBoundingClientRect();
3611
+ const isLeftHalf = e.clientX - rect.left < rect.width / 2;
3612
+ handleSelect(isLeftHalf ? i + 0.5 : indexValue);
3613
+ } else {
3614
+ handleSelect(indexValue);
3615
+ }
3616
+ },
3617
+ onMouseMove: (e) => handleMouseMove(e, i),
3618
+ className: cn(
3619
+ "relative p-0.5 outline-none rounded-md transition-transform focus-visible:ring-2 focus-visible:ring-primary/40",
3620
+ readonly ? "pointer-events-none" : "cursor-pointer"
3621
+ ),
3622
+ whileHover: readonly ? {} : { scale: 1.15 },
3623
+ whileTap: readonly ? {} : { scale: 0.9 },
3624
+ transition: { type: "spring", stiffness: 400, damping: 15 },
3625
+ title: tooltips ? tooltips[i] : `${indexValue} / ${max}`,
3626
+ children: [
3627
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
3628
+ RatingIcon,
3629
+ {
3630
+ className: cn(
3631
+ sizeClasses[size],
3632
+ "transition-all duration-200 stroke-[1.8] text-muted-foreground/30"
3633
+ )
3634
+ }
3635
+ ),
3636
+ (isFull || isHalf) && /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
3637
+ "div",
3638
+ {
3639
+ className: "absolute inset-0 p-0.5 overflow-hidden transition-all duration-150",
3640
+ style: { width: isHalf ? "50%" : "100%" },
3641
+ children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
3642
+ RatingIcon,
3643
+ {
3644
+ className: cn(
3645
+ sizeClasses[size],
3646
+ "transition-all duration-200 stroke-[1.8]",
3647
+ styling.active,
3648
+ styling.glow
3649
+ )
3650
+ }
3651
+ )
3652
+ }
3547
3653
  )
3548
- }
3549
- )
3550
- },
3551
- i
3552
- );
3553
- })
3654
+ ]
3655
+ },
3656
+ i
3657
+ );
3658
+ }) }),
3659
+ (showScore || currentTooltip) && /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: "flex items-center gap-2 text-xs font-semibold", children: [
3660
+ showScore && /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("span", { className: "font-mono text-foreground px-1.5 py-0.5 rounded-md bg-muted/60 border border-border/50", children: [
3661
+ currentValue.toFixed(allowHalf ? 1 : 0),
3662
+ " / ",
3663
+ max
3664
+ ] }),
3665
+ currentTooltip && /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_framer_motion14.AnimatePresence, { mode: "wait", children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
3666
+ import_framer_motion14.motion.span,
3667
+ {
3668
+ initial: { opacity: 0, x: -4 },
3669
+ animate: { opacity: 1, x: 0 },
3670
+ exit: { opacity: 0, x: 4 },
3671
+ className: "text-muted-foreground font-medium",
3672
+ children: currentTooltip
3673
+ },
3674
+ currentTooltip
3675
+ ) })
3676
+ ] })
3677
+ ]
3554
3678
  }
3555
3679
  );
3556
3680
  }
3557
3681
  );
3558
3682
  Rating.displayName = "Rating";
3683
+ function RatingBreakdown({
3684
+ rating,
3685
+ totalReviews,
3686
+ distribution = { 5: 68, 4: 20, 3: 7, 2: 3, 1: 2 },
3687
+ className,
3688
+ ...props
3689
+ }) {
3690
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(
3691
+ "div",
3692
+ {
3693
+ className: cn(
3694
+ "rounded-2xl border border-border/70 bg-card p-5 max-w-sm w-full space-y-4 shadow-lg backdrop-blur-md",
3695
+ className
3696
+ ),
3697
+ ...props,
3698
+ children: [
3699
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: "flex items-center justify-between pb-3 border-b border-border/50", children: [
3700
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { children: [
3701
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: "flex items-baseline gap-2", children: [
3702
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("span", { className: "text-3xl font-black text-foreground", children: rating.toFixed(1) }),
3703
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("span", { className: "text-xs text-muted-foreground", children: "out of 5" })
3704
+ ] }),
3705
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(Rating, { value: rating, readonly: true, size: "sm", variant: "amber", allowHalf: true, className: "mt-1" })
3706
+ ] }),
3707
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: "text-right", children: [
3708
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("span", { className: "text-xs font-bold text-foreground block", children: totalReviews.toLocaleString() }),
3709
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("span", { className: "text-[10px] text-muted-foreground uppercase tracking-wider", children: "verified ratings" })
3710
+ ] })
3711
+ ] }),
3712
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { className: "space-y-2", children: [5, 4, 3, 2, 1].map((stars) => {
3713
+ const pct = distribution[stars] || 0;
3714
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: "flex items-center gap-2.5 text-xs", children: [
3715
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: "w-6 flex items-center gap-0.5 font-mono font-medium text-foreground/80 shrink-0", children: [
3716
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("span", { children: stars }),
3717
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_lucide_react9.Star, { className: "w-2.5 h-2.5 fill-amber-400 text-amber-400" })
3718
+ ] }),
3719
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { className: "flex-1 h-2 rounded-full bg-muted/60 overflow-hidden relative", children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
3720
+ import_framer_motion14.motion.div,
3721
+ {
3722
+ initial: { width: 0 },
3723
+ animate: { width: `${pct}%` },
3724
+ transition: { duration: 0.8, delay: (5 - stars) * 0.08 },
3725
+ className: "h-full rounded-full bg-amber-400"
3726
+ }
3727
+ ) }),
3728
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("span", { className: "w-8 text-right font-mono text-[11px] text-muted-foreground", children: [
3729
+ pct,
3730
+ "%"
3731
+ ] })
3732
+ ] }, stars);
3733
+ }) })
3734
+ ]
3735
+ }
3736
+ );
3737
+ }
3738
+ function ReviewCard({
3739
+ author,
3740
+ avatarUrl,
3741
+ rating,
3742
+ date,
3743
+ title,
3744
+ content,
3745
+ verified = true,
3746
+ className,
3747
+ ...props
3748
+ }) {
3749
+ const initials = author.split(" ").map((n) => n[0]).join("").slice(0, 2).toUpperCase();
3750
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(
3751
+ "div",
3752
+ {
3753
+ className: cn(
3754
+ "rounded-2xl border border-border/70 bg-card/60 p-5 w-full max-w-md space-y-3 backdrop-blur-md shadow-md hover:border-primary/40 transition-colors",
3755
+ className
3756
+ ),
3757
+ ...props,
3758
+ children: [
3759
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: "flex items-center justify-between", children: [
3760
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: "flex items-center gap-3", children: [
3761
+ avatarUrl ? /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("img", { src: avatarUrl, alt: author, className: "w-9 h-9 rounded-full object-cover border border-border" }) : /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { className: "w-9 h-9 rounded-full bg-primary/10 border border-primary/20 text-primary font-bold text-xs flex items-center justify-center", children: initials }),
3762
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { children: [
3763
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: "flex items-center gap-1.5", children: [
3764
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("span", { className: "text-sm font-semibold text-foreground", children: author }),
3765
+ verified && /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("span", { className: "inline-flex items-center gap-0.5 text-[10px] text-emerald-400 font-medium bg-emerald-500/10 px-1.5 py-0.5 rounded-full border border-emerald-500/20", children: [
3766
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_lucide_react9.CheckCircle2, { className: "w-3 h-3" }),
3767
+ "Verified"
3768
+ ] })
3769
+ ] }),
3770
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("span", { className: "text-[11px] text-muted-foreground", children: date })
3771
+ ] })
3772
+ ] }),
3773
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(Rating, { value: rating, readonly: true, size: "sm", variant: "amber", allowHalf: true })
3774
+ ] }),
3775
+ title && /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("h4", { className: "font-semibold text-sm text-foreground", children: title }),
3776
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("p", { className: "text-xs text-muted-foreground leading-relaxed", children: content })
3777
+ ]
3778
+ }
3779
+ );
3780
+ }
3559
3781
 
3560
3782
  // src/components/file-upload.tsx
3561
3783
  var React21 = __toESM(require("react"));
@@ -3661,11 +3883,25 @@ var FileUpload = React21.forwardRef(
3661
3883
  className: "hidden"
3662
3884
  }
3663
3885
  ),
3664
- variant === "button" ? /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(Button, { variant: "default", onClick: triggerFileInput, className: "flex items-center gap-2", children: [
3665
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_lucide_react10.UploadCloud, { className: "h-4 w-4" }),
3666
- /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("span", { children: [
3667
- "Upload File",
3668
- multiple ? "s" : ""
3886
+ variant === "button" ? /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: "flex flex-col sm:flex-row items-center justify-between gap-3 p-4 rounded-2xl border border-border/80 bg-card/60 backdrop-blur-md w-full", children: [
3887
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: "flex items-center gap-3", children: [
3888
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { className: "w-10 h-10 rounded-xl bg-primary/10 border border-primary/20 flex items-center justify-center text-primary shrink-0", children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_lucide_react10.UploadCloud, { className: "h-5 w-5" }) }),
3889
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: "text-left", children: [
3890
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("p", { className: "text-sm font-semibold text-foreground", children: [
3891
+ "Select File",
3892
+ multiple ? "s" : ""
3893
+ ] }),
3894
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("p", { className: "text-xs text-muted-foreground", children: [
3895
+ accept ? `Supports: ${accept}` : "Any file",
3896
+ " (Max: ",
3897
+ (maxSize / (1024 * 1024)).toFixed(0),
3898
+ "MB)"
3899
+ ] })
3900
+ ] })
3901
+ ] }),
3902
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(Button, { variant: "default", onClick: triggerFileInput, className: "flex items-center gap-2 shrink-0", children: [
3903
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_lucide_react10.UploadCloud, { className: "h-4 w-4" }),
3904
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("span", { children: "Browse Files" })
3669
3905
  ] })
3670
3906
  ] }) : /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
3671
3907
  import_framer_motion15.motion.div,
@@ -3975,7 +4211,7 @@ var CustomizableTable = ({
3975
4211
  return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(Table, { ...props, children: [
3976
4212
  caption && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(TableCaption, { children: caption }),
3977
4213
  /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(TableHeader, { children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(TableRow, { children: headers.map((header, i) => /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(TableHead, { children: header }, i)) }) }),
3978
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(TableBody, { children: rows.map((row, rowIndex) => /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(TableRow, { index: rowIndex, children: row.map((cell, colIndex) => /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(TableCell, { children: cell }, colIndex)) }, rowIndex)) })
4214
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(TableBody, { children: rows.map((row, rowIndex) => /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(TableRow, { index: rowIndex, children: headers.map((_, colIndex) => /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(TableCell, { children: row[colIndex] !== void 0 && row[colIndex] !== null && row[colIndex] !== "" ? row[colIndex] : /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("span", { className: "text-muted-foreground/40 font-mono text-xs", children: "\u2014" }) }, colIndex)) }, rowIndex)) })
3979
4215
  ] });
3980
4216
  };
3981
4217
  function DataTable({
@@ -4091,25 +4327,114 @@ var React23 = __toESM(require("react"));
4091
4327
  var import_framer_motion17 = require("framer-motion");
4092
4328
  var import_lucide_react11 = require("lucide-react");
4093
4329
  var import_jsx_runtime28 = require("react/jsx-runtime");
4330
+ var circleSizes = {
4331
+ sm: "h-7 w-7 text-[11px]",
4332
+ md: "h-9 w-9 text-[13px]",
4333
+ lg: "h-11 w-11 text-[15px]"
4334
+ };
4335
+ var checkSizes = {
4336
+ sm: "h-3.5 w-3.5 stroke-[3]",
4337
+ md: "h-4 w-4 stroke-[3]",
4338
+ lg: "h-5 w-5 stroke-[3]"
4339
+ };
4094
4340
  var Stepper = React23.forwardRef(
4095
4341
  ({
4096
4342
  steps,
4097
4343
  currentStep,
4098
4344
  orientation = "horizontal",
4099
4345
  variant = "default",
4346
+ size = "md",
4347
+ onStepClick,
4100
4348
  className,
4101
4349
  ...props
4102
4350
  }, ref) => {
4103
4351
  const isVertical = orientation === "vertical";
4352
+ const isInteractive = Boolean(onStepClick);
4353
+ if (isVertical) {
4354
+ return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
4355
+ "div",
4356
+ {
4357
+ ref,
4358
+ className: cn("flex flex-col w-full select-none", className),
4359
+ ...props,
4360
+ children: steps.map((step, idx) => {
4361
+ const isCompleted = idx < currentStep;
4362
+ const isActive = idx === currentStep;
4363
+ const isLast = idx === steps.length - 1;
4364
+ return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "flex items-start gap-4 group", children: [
4365
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "flex flex-col items-center shrink-0", children: [
4366
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(
4367
+ import_framer_motion17.motion.button,
4368
+ {
4369
+ type: "button",
4370
+ disabled: !isInteractive,
4371
+ onClick: () => onStepClick?.(idx),
4372
+ whileHover: isInteractive ? { scale: 1.08 } : {},
4373
+ whileTap: isInteractive ? { scale: 0.95 } : {},
4374
+ className: cn(
4375
+ "relative flex items-center justify-center rounded-full border-2 font-semibold transition-all duration-300 z-10",
4376
+ variant === "arrows" ? "rounded-xl" : "rounded-full",
4377
+ circleSizes[size],
4378
+ isCompleted ? "bg-primary border-primary text-primary-foreground shadow-md shadow-primary/25" : isActive ? "border-primary text-primary bg-primary/10 shadow-lg shadow-primary/15 ring-4 ring-primary/20" : "border-border text-muted-foreground bg-muted/30",
4379
+ isInteractive ? "cursor-pointer" : "cursor-default"
4380
+ ),
4381
+ children: [
4382
+ isCompleted ? /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
4383
+ import_framer_motion17.motion.div,
4384
+ {
4385
+ initial: { scale: 0 },
4386
+ animate: { scale: 1 },
4387
+ transition: { type: "spring", stiffness: 350, damping: 20 },
4388
+ children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react11.Check, { className: checkSizes[size] })
4389
+ }
4390
+ ) : step.icon ? step.icon : /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("span", { children: idx + 1 }),
4391
+ isActive && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("span", { className: "absolute inset-0 rounded-full animate-ping bg-primary/25 -z-10" })
4392
+ ]
4393
+ }
4394
+ ),
4395
+ !isLast && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { className: "w-[2px] min-h-[36px] bg-muted/40 my-1 rounded-full relative overflow-hidden flex-1", children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
4396
+ import_framer_motion17.motion.div,
4397
+ {
4398
+ className: "absolute top-0 left-0 right-0 bg-primary",
4399
+ initial: { height: "0%" },
4400
+ animate: { height: isCompleted ? "100%" : "0%" },
4401
+ transition: { duration: 0.3 }
4402
+ }
4403
+ ) })
4404
+ ] }),
4405
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(
4406
+ "div",
4407
+ {
4408
+ onClick: () => isInteractive && onStepClick?.(idx),
4409
+ className: cn(
4410
+ "flex flex-col text-left pt-1 pb-6 transition-colors",
4411
+ isInteractive ? "cursor-pointer" : ""
4412
+ ),
4413
+ children: [
4414
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
4415
+ "span",
4416
+ {
4417
+ className: cn(
4418
+ "text-sm font-semibold transition-colors",
4419
+ isActive ? "text-foreground" : isCompleted ? "text-primary font-medium" : "text-muted-foreground"
4420
+ ),
4421
+ children: step.title
4422
+ }
4423
+ ),
4424
+ step.description && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("span", { className: "text-xs text-muted-foreground/70 mt-0.5 max-w-xs leading-relaxed", children: step.description })
4425
+ ]
4426
+ }
4427
+ )
4428
+ ] }, idx);
4429
+ })
4430
+ }
4431
+ );
4432
+ }
4104
4433
  return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
4105
4434
  "div",
4106
4435
  {
4107
4436
  ref,
4108
- className: cn(
4109
- "flex w-full select-none",
4110
- isVertical ? "flex-col space-y-4" : "flex-row items-center justify-between gap-4",
4111
- className
4112
- ),
4437
+ className: cn("flex items-center w-full select-none justify-between", className),
4113
4438
  ...props,
4114
4439
  children: steps.map((step, idx) => {
4115
4440
  const isCompleted = idx < currentStep;
@@ -4119,19 +4444,26 @@ var Stepper = React23.forwardRef(
4119
4444
  /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(
4120
4445
  "div",
4121
4446
  {
4447
+ onClick: () => isInteractive && onStepClick?.(idx),
4122
4448
  className: cn(
4123
- "flex items-center gap-3 relative",
4124
- isVertical ? "w-full" : "flex-1"
4449
+ "flex items-center gap-2 sm:gap-3 min-w-0 transition-all",
4450
+ isInteractive ? "cursor-pointer group" : "cursor-default"
4125
4451
  ),
4126
4452
  children: [
4127
4453
  /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(
4128
- "div",
4454
+ import_framer_motion17.motion.button,
4129
4455
  {
4456
+ type: "button",
4457
+ disabled: !isInteractive,
4458
+ onClick: () => onStepClick?.(idx),
4459
+ whileHover: isInteractive ? { scale: 1.1 } : {},
4460
+ whileTap: isInteractive ? { scale: 0.95 } : {},
4130
4461
  className: cn(
4131
- "relative flex items-center justify-center rounded-full shrink-0 border-2 transition-all duration-300",
4132
- variant === "arrows" ? "rounded-lg" : "",
4133
- isCompleted ? "bg-primary border-primary text-primary-foreground shadow-lg shadow-primary/20" : isActive ? "border-primary text-primary bg-primary/5 scale-110 shadow-md shadow-primary/10" : "border-muted text-muted-foreground bg-muted/20",
4134
- variant === "circles" ? "h-9 w-9 text-[13px] font-bold" : "h-8 w-8 text-[12px] font-medium"
4462
+ "relative shrink-0 flex items-center justify-center rounded-full border-2 font-semibold transition-all duration-300",
4463
+ variant === "arrows" ? "rounded-xl" : "rounded-full",
4464
+ circleSizes[size],
4465
+ isCompleted ? "bg-primary border-primary text-primary-foreground shadow-md shadow-primary/25" : isActive ? "border-primary text-primary bg-primary/10 shadow-lg shadow-primary/15 ring-4 ring-primary/20" : "border-border text-muted-foreground bg-muted/30",
4466
+ isInteractive ? "cursor-pointer" : "cursor-default"
4135
4467
  ),
4136
4468
  children: [
4137
4469
  isCompleted ? /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
@@ -4139,67 +4471,39 @@ var Stepper = React23.forwardRef(
4139
4471
  {
4140
4472
  initial: { scale: 0 },
4141
4473
  animate: { scale: 1 },
4142
- transition: { type: "spring", stiffness: 300, damping: 20 },
4143
- children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react11.Check, { className: "h-4.5 w-4.5 stroke-[3]" })
4474
+ transition: { type: "spring", stiffness: 350, damping: 20 },
4475
+ children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react11.Check, { className: checkSizes[size] })
4144
4476
  }
4145
4477
  ) : step.icon ? step.icon : /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("span", { children: idx + 1 }),
4146
- isActive && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("span", { className: "absolute inset-0 rounded-full animate-ping bg-primary/20 -z-10" })
4478
+ isActive && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("span", { className: "absolute inset-0 rounded-full animate-ping bg-primary/25 -z-10" })
4147
4479
  ]
4148
4480
  }
4149
4481
  ),
4150
- /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "flex flex-col text-left", children: [
4482
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "flex flex-col text-left min-w-0", children: [
4151
4483
  /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
4152
4484
  "span",
4153
4485
  {
4154
4486
  className: cn(
4155
- "text-sm font-semibold transition-colors duration-200",
4156
- isActive ? "text-foreground" : isCompleted ? "text-primary" : "text-muted-foreground"
4487
+ "text-xs sm:text-sm font-semibold transition-colors truncate max-w-[90px] sm:max-w-[120px]",
4488
+ isActive ? "text-foreground" : isCompleted ? "text-primary" : "text-muted-foreground group-hover:text-foreground/80"
4157
4489
  ),
4158
4490
  children: step.title
4159
4491
  }
4160
4492
  ),
4161
- step.description && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("span", { className: "text-xs text-muted-foreground/70 mt-0.5 max-w-[200px]", children: step.description })
4162
- ] }),
4163
- !isLast && !isVertical && variant !== "arrows" && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { className: "flex-1 h-[2px] bg-muted/40 ml-2 rounded-full overflow-hidden relative min-w-[30px]", children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
4164
- import_framer_motion17.motion.div,
4165
- {
4166
- className: "absolute left-0 top-0 bottom-0 bg-primary",
4167
- initial: { width: "0%" },
4168
- animate: { width: isCompleted ? "100%" : "0%" },
4169
- transition: { type: "spring", stiffness: 100, damping: 15 }
4170
- }
4171
- ) }),
4172
- !isLast && !isVertical && variant === "arrows" && /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(
4173
- "svg",
4174
- {
4175
- xmlns: "http://www.w3.org/2000/svg",
4176
- width: "16",
4177
- height: "16",
4178
- viewBox: "0 0 24 24",
4179
- fill: "none",
4180
- stroke: "currentColor",
4181
- strokeWidth: "2",
4182
- strokeLinecap: "round",
4183
- strokeLinejoin: "round",
4184
- className: "text-muted-foreground/30 mx-2 shrink-0",
4185
- children: [
4186
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("path", { d: "M5 12h14" }),
4187
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("path", { d: "m12 5 7 7-7 7" })
4188
- ]
4189
- }
4190
- )
4493
+ step.description && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("span", { className: "hidden xl:inline text-[11px] text-muted-foreground/70 max-w-[80px] sm:max-w-[110px] truncate", children: step.description })
4494
+ ] })
4191
4495
  ]
4192
4496
  }
4193
4497
  ),
4194
- !isLast && isVertical && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { className: "h-8 w-[2px] bg-muted/40 ml-4 rounded-full relative", children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
4498
+ !isLast && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { className: "flex-1 mx-2 sm:mx-3 flex items-center min-w-[14px]", children: variant === "arrows" ? /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { className: "flex items-center justify-center w-full text-muted-foreground/40", children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react11.ChevronRight, { className: cn("h-4 w-4 shrink-0 transition-colors", isCompleted && "text-primary") }) }) : /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { className: "h-[2px] w-full bg-muted/50 rounded-full overflow-hidden relative", children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
4195
4499
  import_framer_motion17.motion.div,
4196
4500
  {
4197
- className: "absolute top-0 left-0 right-0 bg-primary",
4198
- initial: { height: "0%" },
4199
- animate: { height: isCompleted ? "100%" : "0%" },
4200
- transition: { type: "spring", stiffness: 100, damping: 15 }
4501
+ className: "absolute inset-y-0 left-0 bg-primary",
4502
+ initial: { width: "0%" },
4503
+ animate: { width: isCompleted ? "100%" : "0%" },
4504
+ transition: { duration: 0.35, ease: "easeInOut" }
4201
4505
  }
4202
- ) })
4506
+ ) }) })
4203
4507
  ] }, idx);
4204
4508
  })
4205
4509
  }
@@ -5388,12 +5692,36 @@ var FileUploadForm = () => {
5388
5692
  ] })
5389
5693
  ] });
5390
5694
  };
5391
- var FeedbackForm = () => /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: "w-full max-w-sm p-6 border rounded-xl bg-card space-y-4 text-center", children: [
5392
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("h3", { className: "font-bold text-lg", children: "How was your experience?" }),
5393
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "flex justify-center gap-2", children: ["\u{1F621}", "\u{1F615}", "\u{1F610}", "\u{1F642}", "\u{1F60D}"].map((emoji, i) => /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("button", { className: "text-3xl hover:scale-125 transition-transform opacity-70 hover:opacity-100", children: emoji }, i)) }),
5394
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("textarea", { className: "w-full p-3 border rounded-md text-sm mt-4 resize-none h-20", placeholder: "Tell us more (optional)" }),
5395
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("button", { className: "w-full py-2 bg-primary text-primary-foreground font-medium rounded-md", children: "Submit Feedback" })
5396
- ] });
5695
+ var FeedbackForm = () => {
5696
+ const [selected, setSelected] = React28.useState(null);
5697
+ const sentiments = [
5698
+ { icon: import_lucide_react16.Frown, label: "Poor", color: "hover:text-red-500 hover:bg-red-500/10", active: "text-red-500 bg-red-500/10 border-red-500/30" },
5699
+ { icon: import_lucide_react16.Meh, label: "Fair", color: "hover:text-amber-500 hover:bg-amber-500/10", active: "text-amber-500 bg-amber-500/10 border-amber-500/30" },
5700
+ { icon: import_lucide_react16.Smile, label: "Good", color: "hover:text-sky-500 hover:bg-sky-500/10", active: "text-sky-500 bg-sky-500/10 border-sky-500/30" },
5701
+ { icon: import_lucide_react16.Laugh, label: "Great", color: "hover:text-emerald-500 hover:bg-emerald-500/10", active: "text-emerald-500 bg-emerald-500/10 border-emerald-500/30" },
5702
+ { icon: import_lucide_react16.Heart, label: "Loved", color: "hover:text-pink-500 hover:bg-pink-500/10", active: "text-pink-500 bg-pink-500/10 border-pink-500/30" }
5703
+ ];
5704
+ return /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: "w-full max-w-sm p-6 border rounded-xl bg-card space-y-4 text-center", children: [
5705
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("h3", { className: "font-bold text-lg", children: "How was your experience?" }),
5706
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "flex justify-center gap-2", children: sentiments.map((s, i) => {
5707
+ const Icon2 = s.icon;
5708
+ const isSelected = selected === i;
5709
+ return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
5710
+ "button",
5711
+ {
5712
+ type: "button",
5713
+ onClick: () => setSelected(i),
5714
+ title: s.label,
5715
+ className: `p-2.5 rounded-xl border transition-all cursor-pointer ${isSelected ? s.active : "border-border/60 text-muted-foreground " + s.color}`,
5716
+ children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(Icon2, { className: "w-5 h-5" })
5717
+ },
5718
+ i
5719
+ );
5720
+ }) }),
5721
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("textarea", { className: "w-full p-3 border rounded-md text-sm mt-4 resize-none h-20 bg-background", placeholder: "Tell us more (optional)" }),
5722
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("button", { className: "w-full py-2 bg-primary text-primary-foreground font-medium rounded-md hover:bg-primary/90 transition-colors", children: "Submit Feedback" })
5723
+ ] });
5724
+ };
5397
5725
  var InviteUsersForm = () => /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: "w-full border rounded-xl bg-card p-4 space-y-4", children: [
5398
5726
  /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: "flex gap-2", children: [
5399
5727
  /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("input", { className: "flex-1 p-2 border rounded-md text-sm", placeholder: "Email address" }),
@@ -5831,12 +6159,18 @@ var FileExplorerTable = () => /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("di
5831
6159
  ] }),
5832
6160
  /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { className: "divide-y", children: [
5833
6161
  /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { className: "grid grid-cols-12 px-4 py-3 items-center hover:bg-muted/30 cursor-pointer", children: [
5834
- /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { className: "col-span-6 flex items-center gap-2 font-medium", children: "\u{1F4C1} Documents" }),
6162
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { className: "col-span-6 flex items-center gap-2.5 font-medium", children: [
6163
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_lucide_react19.Folder, { className: "w-4 h-4 text-sky-500 fill-sky-500/20" }),
6164
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("span", { children: "Documents" })
6165
+ ] }),
5835
6166
  /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { className: "col-span-3 text-muted-foreground", children: "Oct 12" }),
5836
6167
  /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { className: "col-span-3 text-muted-foreground", children: "--" })
5837
6168
  ] }),
5838
6169
  /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { className: "grid grid-cols-12 px-4 py-3 items-center hover:bg-muted/30 cursor-pointer", children: [
5839
- /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { className: "col-span-6 flex items-center gap-2 font-medium", children: "\u{1F4C4} report.pdf" }),
6170
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { className: "col-span-6 flex items-center gap-2.5 font-medium", children: [
6171
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_lucide_react19.FileText, { className: "w-4 h-4 text-muted-foreground" }),
6172
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("span", { children: "report.pdf" })
6173
+ ] }),
5840
6174
  /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { className: "col-span-3 text-muted-foreground", children: "Oct 10" }),
5841
6175
  /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { className: "col-span-3 text-muted-foreground", children: "2.4 MB" })
5842
6176
  ] })
@@ -6208,7 +6542,7 @@ var TrustBanner = () => /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)("div", {
6208
6542
  /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("div", { className: "font-black text-xl", children: "a16z" })
6209
6543
  ] })
6210
6544
  ] });
6211
- var ComparisonTableMock = () => /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)("div", { className: "w-full border rounded-2xl bg-card overflow-hidden", children: [
6545
+ var ComparisonTableMock = () => /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)("div", { className: "w-full border rounded-2xl bg-card overflow-hidden shadow-sm", children: [
6212
6546
  /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)("div", { className: "grid grid-cols-3 bg-muted/50 p-4 border-b font-bold text-center", children: [
6213
6547
  /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("div", { className: "text-left", children: "Features" }),
6214
6548
  /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("div", { className: "text-muted-foreground", children: "Others" }),
@@ -6216,8 +6550,8 @@ var ComparisonTableMock = () => /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)("
6216
6550
  ] }),
6217
6551
  /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("div", { className: "divide-y text-sm", children: ["Real-time sync", "End-to-end encryption", "24/7 Support"].map((f, i) => /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)("div", { className: "grid grid-cols-3 p-4 items-center text-center", children: [
6218
6552
  /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("div", { className: "text-left font-medium", children: f }),
6219
- /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("div", { className: "text-muted-foreground/30", children: i === 0 ? "\u2714\uFE0F" : "\u274C" }),
6220
- /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("div", { className: "text-primary font-bold text-lg", children: "\u2713" })
6553
+ /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("div", { className: "flex justify-center", children: i === 0 ? /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_lucide_react23.Check, { className: "w-4 h-4 text-muted-foreground/60" }) : /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_lucide_react23.X, { className: "w-4 h-4 text-muted-foreground/30" }) }),
6554
+ /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("div", { className: "flex justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("div", { className: "w-6 h-6 rounded-full bg-primary/10 flex items-center justify-center text-primary", children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_lucide_react23.Check, { className: "w-3.5 h-3.5 stroke-[2.5]" }) }) })
6221
6555
  ] }, i)) })
6222
6556
  ] });
6223
6557
  var AnimatedHeroText = () => /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)("h1", { className: "text-4xl md:text-6xl font-black text-center leading-tight", children: [
@@ -7597,6 +7931,7 @@ function ContextMenu({ items, children, className }) {
7597
7931
  // src/components/premium-media.tsx
7598
7932
  var React37 = __toESM(require("react"));
7599
7933
  var import_framer_motion30 = require("framer-motion");
7934
+ var import_lucide_react28 = require("lucide-react");
7600
7935
  var import_jsx_runtime50 = require("react/jsx-runtime");
7601
7936
  function ImageCarousel({ images, autoPlay = true, interval = 4e3, className }) {
7602
7937
  const [current, setCurrent] = React37.useState(0);
@@ -7669,19 +8004,20 @@ function AudioWaveform({ playing = false, bars = 24, className }) {
7669
8004
  }) });
7670
8005
  }
7671
8006
  function FilePreviewCard({ name, size, type = "file", className }) {
7672
- const icons = {
7673
- file: "\u{1F4C4}",
7674
- image: "\u{1F5BC}",
7675
- video: "\u{1F3AC}",
7676
- pdf: "\u{1F4D5}",
7677
- code: "\u{1F4BB}"
8007
+ const iconMap = {
8008
+ file: import_lucide_react28.FileText,
8009
+ image: import_lucide_react28.Image,
8010
+ video: import_lucide_react28.Video,
8011
+ pdf: import_lucide_react28.FileCode2,
8012
+ code: import_lucide_react28.Code2
7678
8013
  };
8014
+ const Icon2 = iconMap[type] || import_lucide_react28.FileText;
7679
8015
  const colors = {
7680
- file: "from-blue-500/10 to-blue-500/5",
7681
- image: "from-pink-500/10 to-pink-500/5",
7682
- video: "from-violet-500/10 to-violet-500/5",
7683
- pdf: "from-red-500/10 to-red-500/5",
7684
- code: "from-emerald-500/10 to-emerald-500/5"
8016
+ file: "from-blue-500/10 to-blue-500/5 text-blue-500",
8017
+ image: "from-pink-500/10 to-pink-500/5 text-pink-500",
8018
+ video: "from-violet-500/10 to-violet-500/5 text-violet-500",
8019
+ pdf: "from-red-500/10 to-red-500/5 text-red-500",
8020
+ code: "from-emerald-500/10 to-emerald-500/5 text-emerald-500"
7685
8021
  };
7686
8022
  return /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(
7687
8023
  import_framer_motion30.motion.div,
@@ -7689,7 +8025,7 @@ function FilePreviewCard({ name, size, type = "file", className }) {
7689
8025
  whileHover: { y: -2 },
7690
8026
  className: cn("rounded-xl border border-border bg-card p-4 flex items-center gap-3 cursor-pointer transition-shadow hover:shadow-md", className),
7691
8027
  children: [
7692
- /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("div", { className: cn("w-12 h-12 rounded-lg bg-gradient-to-br flex items-center justify-center text-xl", colors[type]), children: icons[type] }),
8028
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("div", { className: cn("w-12 h-12 rounded-lg bg-gradient-to-br flex items-center justify-center shrink-0 border border-border/40", colors[type]), children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Icon2, { className: "w-5 h-5" }) }),
7693
8029
  /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("div", { className: "flex-1 min-w-0", children: [
7694
8030
  /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("p", { className: "text-sm font-medium truncate", children: name }),
7695
8031
  /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("p", { className: "text-xs text-muted-foreground", children: size })
@@ -8476,7 +8812,7 @@ function ModernDonutChart({
8476
8812
  // src/components/premium-social.tsx
8477
8813
  var React39 = __toESM(require("react"));
8478
8814
  var import_framer_motion32 = require("framer-motion");
8479
- var import_lucide_react28 = require("lucide-react");
8815
+ var import_lucide_react29 = require("lucide-react");
8480
8816
  var import_jsx_runtime52 = require("react/jsx-runtime");
8481
8817
  var ChatMessageContext = React39.createContext({
8482
8818
  variant: "received",
@@ -8653,9 +8989,9 @@ var ChatMessageStatus = React39.forwardRef(
8653
8989
  className: cn("inline-flex items-center text-[10px] text-muted-foreground ml-1.5", className),
8654
8990
  ...props,
8655
8991
  children: [
8656
- status === "sent" && /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_lucide_react28.Check, { className: "w-3 h-3 text-muted-foreground" }),
8657
- status === "delivered" && /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_lucide_react28.CheckCheck, { className: "w-3 h-3 text-muted-foreground" }),
8658
- status === "read" && /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_lucide_react28.CheckCheck, { className: "w-3 h-3 text-primary" })
8992
+ status === "sent" && /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_lucide_react29.Check, { className: "w-3 h-3 text-muted-foreground" }),
8993
+ status === "delivered" && /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_lucide_react29.CheckCheck, { className: "w-3 h-3 text-muted-foreground" }),
8994
+ status === "read" && /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_lucide_react29.CheckCheck, { className: "w-3 h-3 text-primary" })
8659
8995
  ]
8660
8996
  }
8661
8997
  );
@@ -8704,7 +9040,7 @@ var ChatInput = React39.forwardRef(
8704
9040
  ),
8705
9041
  ...props,
8706
9042
  children: [
8707
- /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(ChatInputAction, { icon: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_lucide_react28.Paperclip, { className: "w-4 h-4" }), title: "Attach file" }),
9043
+ /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(ChatInputAction, { icon: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_lucide_react29.Paperclip, { className: "w-4 h-4" }), title: "Attach file" }),
8708
9044
  /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
8709
9045
  ChatInputField,
8710
9046
  {
@@ -8719,7 +9055,7 @@ var ChatInput = React39.forwardRef(
8719
9055
  placeholder
8720
9056
  }
8721
9057
  ),
8722
- /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(ChatInputAction, { icon: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_lucide_react28.Smile, { className: "w-4 h-4" }), title: "Add emoji" }),
9058
+ /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(ChatInputAction, { icon: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_lucide_react29.Smile, { className: "w-4 h-4" }), title: "Add emoji" }),
8723
9059
  /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(ChatInputSubmit, { onClick: handleSend, disabled: !text.trim() })
8724
9060
  ]
8725
9061
  }
@@ -8773,7 +9109,7 @@ var ChatInputSubmit = React39.forwardRef(
8773
9109
  className
8774
9110
  ),
8775
9111
  ...props,
8776
- children: children || /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_lucide_react28.Send, { className: "w-4 h-4" })
9112
+ children: children || /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_lucide_react29.Send, { className: "w-4 h-4" })
8777
9113
  }
8778
9114
  )
8779
9115
  );
@@ -9059,7 +9395,7 @@ var SocialPost = React39.forwardRef(
9059
9395
  ({
9060
9396
  author = "John Smith",
9061
9397
  handle = "@johnsmith",
9062
- content = "Just launched my new project! Check it out \u{1F680}",
9398
+ content = "Just launched my new project powered by NexoreUI! Check it out.",
9063
9399
  time = "2h ago",
9064
9400
  avatar,
9065
9401
  likes = 42,
@@ -9112,7 +9448,7 @@ var SocialPost = React39.forwardRef(
9112
9448
  SocialPostAction,
9113
9449
  {
9114
9450
  active: liked,
9115
- icon: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_lucide_react28.Heart, { className: cn("w-4 h-4", liked && "fill-rose-500 text-rose-500") }),
9451
+ icon: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_lucide_react29.Heart, { className: cn("w-4 h-4", liked && "fill-rose-500 text-rose-500") }),
9116
9452
  label: likeCount,
9117
9453
  onClick: () => {
9118
9454
  setLiked(!liked);
@@ -9120,8 +9456,8 @@ var SocialPost = React39.forwardRef(
9120
9456
  }
9121
9457
  }
9122
9458
  ),
9123
- /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(SocialPostAction, { icon: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_lucide_react28.MessageCircle, { className: "w-4 h-4" }), label: comments }),
9124
- /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(SocialPostAction, { icon: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_lucide_react28.Share2, { className: "w-4 h-4" }), label: shares })
9459
+ /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(SocialPostAction, { icon: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_lucide_react29.MessageCircle, { className: "w-4 h-4" }), label: comments }),
9460
+ /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(SocialPostAction, { icon: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_lucide_react29.Share2, { className: "w-4 h-4" }), label: shares })
9125
9461
  ] })
9126
9462
  ]
9127
9463
  }
@@ -9254,7 +9590,7 @@ var ReactionAdd = React39.forwardRef(
9254
9590
  className
9255
9591
  ),
9256
9592
  ...props,
9257
- children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_lucide_react28.Plus, { className: "w-3.5 h-3.5" })
9593
+ children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_lucide_react29.Plus, { className: "w-3.5 h-3.5" })
9258
9594
  }
9259
9595
  )
9260
9596
  );
@@ -9354,10 +9690,10 @@ var ShareSheet = React39.forwardRef(
9354
9690
  );
9355
9691
  }
9356
9692
  const platforms = [
9357
- { name: "Twitter", color: "bg-sky-500", icon: "\u{1D54F}" },
9693
+ { name: "Twitter", color: "bg-zinc-900 dark:bg-zinc-800", icon: "\u{1D54F}" },
9358
9694
  { name: "Facebook", color: "bg-blue-600", icon: "f" },
9359
9695
  { name: "LinkedIn", color: "bg-indigo-600", icon: "in" },
9360
- { name: "Telegram", color: "bg-cyan-500", icon: "\u2708" }
9696
+ { name: "Telegram", color: "bg-cyan-500", icon: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_lucide_react29.Send, { className: "w-3.5 h-3.5 -rotate-45" }) }
9361
9697
  ];
9362
9698
  const handleCopy = () => {
9363
9699
  navigator.clipboard.writeText(url);
@@ -9394,7 +9730,7 @@ var ShareSheet = React39.forwardRef(
9394
9730
  onClick: handleCopy,
9395
9731
  className: "px-3.5 py-2 rounded-xl bg-primary text-primary-foreground text-xs font-medium shrink-0 flex items-center gap-1.5 shadow-sm shadow-primary/20 hover:bg-primary/90 transition-colors cursor-pointer",
9396
9732
  children: [
9397
- copied ? /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_lucide_react28.Check, { className: "w-3.5 h-3.5 text-emerald-400" }) : /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_lucide_react28.Copy, { className: "w-3.5 h-3.5" }),
9733
+ copied ? /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_lucide_react29.Check, { className: "w-3.5 h-3.5 text-emerald-400" }) : /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_lucide_react29.Copy, { className: "w-3.5 h-3.5" }),
9398
9734
  /* @__PURE__ */ (0, import_jsx_runtime52.jsx)("span", { children: copied ? "Copied!" : "Copy" })
9399
9735
  ]
9400
9736
  }
@@ -9423,9 +9759,9 @@ var NotificationCenter = React39.forwardRef(
9423
9759
  );
9424
9760
  }
9425
9761
  const typeIcons = {
9426
- info: "\u{1F4AC}",
9427
- success: "\u2705",
9428
- warning: "\u26A0\uFE0F"
9762
+ info: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_lucide_react29.MessageSquare, { className: "w-4 h-4 text-blue-500" }),
9763
+ success: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_lucide_react29.CheckCircle2, { className: "w-4 h-4 text-emerald-500" }),
9764
+ warning: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_lucide_react29.AlertTriangle, { className: "w-4 h-4 text-amber-500" })
9429
9765
  };
9430
9766
  return /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(
9431
9767
  "div",
@@ -9439,7 +9775,7 @@ var NotificationCenter = React39.forwardRef(
9439
9775
  children: [
9440
9776
  /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)("div", { className: "flex items-center justify-between px-4 py-3 border-b border-border/70 bg-muted/30", children: [
9441
9777
  /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)("div", { className: "flex items-center gap-2", children: [
9442
- /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_lucide_react28.Bell, { className: "w-4 h-4 text-primary" }),
9778
+ /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_lucide_react29.Bell, { className: "w-4 h-4 text-primary" }),
9443
9779
  /* @__PURE__ */ (0, import_jsx_runtime52.jsx)("h4", { className: "font-semibold text-xs text-foreground tracking-tight", children: "Notifications" })
9444
9780
  ] }),
9445
9781
  /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
@@ -9460,7 +9796,7 @@ var NotificationCenter = React39.forwardRef(
9460
9796
  !n.read && "bg-primary/5"
9461
9797
  ),
9462
9798
  children: [
9463
- /* @__PURE__ */ (0, import_jsx_runtime52.jsx)("span", { className: "text-sm shrink-0 mt-0.5", children: typeIcons[n.type || "info"] }),
9799
+ /* @__PURE__ */ (0, import_jsx_runtime52.jsx)("span", { className: "shrink-0 mt-0.5", children: typeIcons[n.type || "info"] || /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_lucide_react29.Bell, { className: "w-4 h-4 text-muted-foreground" }) }),
9464
9800
  /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)("div", { className: "flex-1 min-w-0", children: [
9465
9801
  /* @__PURE__ */ (0, import_jsx_runtime52.jsx)("p", { className: cn("text-xs", !n.read ? "font-semibold text-foreground" : "font-medium text-foreground/80"), children: n.title }),
9466
9802
  /* @__PURE__ */ (0, import_jsx_runtime52.jsx)("p", { className: "text-[11px] text-muted-foreground line-clamp-1 mt-0.5", children: n.message })
@@ -9481,7 +9817,7 @@ NotificationCenter.displayName = "NotificationCenter";
9481
9817
  // src/components/premium-commerce.tsx
9482
9818
  var React40 = __toESM(require("react"));
9483
9819
  var import_framer_motion33 = require("framer-motion");
9484
- var import_lucide_react29 = require("lucide-react");
9820
+ var import_lucide_react30 = require("lucide-react");
9485
9821
  var import_jsx_runtime53 = require("react/jsx-runtime");
9486
9822
  function ProductCardPro({
9487
9823
  name,
@@ -9491,6 +9827,7 @@ function ProductCardPro({
9491
9827
  rating = 4.9,
9492
9828
  reviewCount = 248,
9493
9829
  imageSrc,
9830
+ image,
9494
9831
  colors = ["#18181b", "#6366f1", "#06b6d4"],
9495
9832
  onAddToCart,
9496
9833
  className,
@@ -9499,6 +9836,7 @@ function ProductCardPro({
9499
9836
  const [isWishlisted, setIsWishlisted] = React40.useState(false);
9500
9837
  const [selectedColor, setSelectedColor] = React40.useState(0);
9501
9838
  const [isAdded, setIsAdded] = React40.useState(false);
9839
+ const effectiveImage = image || imageSrc;
9502
9840
  const handleAdd = () => {
9503
9841
  setIsAdded(true);
9504
9842
  onAddToCart?.();
@@ -9524,7 +9862,7 @@ function ProductCardPro({
9524
9862
  }
9525
9863
  ),
9526
9864
  badge && /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("div", { className: "absolute top-3 left-3 z-10", children: /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("span", { className: "inline-flex items-center gap-1 px-2.5 py-1 rounded-full bg-primary/90 text-primary-foreground text-[11px] font-bold tracking-wide shadow-md backdrop-blur-md", children: [
9527
- /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_lucide_react29.Sparkles, { className: "w-3 h-3" }),
9865
+ /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_lucide_react30.Sparkles, { className: "w-3 h-3" }),
9528
9866
  badge
9529
9867
  ] }) }),
9530
9868
  /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
@@ -9535,7 +9873,7 @@ function ProductCardPro({
9535
9873
  className: "absolute top-3 right-3 z-10 w-8 h-8 rounded-full bg-background/80 hover:bg-background backdrop-blur-md border border-border/80 flex items-center justify-center transition-transform active:scale-90 cursor-pointer shadow-xs",
9536
9874
  title: isWishlisted ? "Remove from wishlist" : "Add to wishlist",
9537
9875
  children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
9538
- import_lucide_react29.Heart,
9876
+ import_lucide_react30.Heart,
9539
9877
  {
9540
9878
  className: cn(
9541
9879
  "w-4 h-4 transition-colors",
@@ -9545,22 +9883,22 @@ function ProductCardPro({
9545
9883
  )
9546
9884
  }
9547
9885
  ),
9548
- imageSrc ? /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
9886
+ effectiveImage ? /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
9549
9887
  "img",
9550
9888
  {
9551
- src: imageSrc,
9889
+ src: effectiveImage,
9552
9890
  alt: name,
9553
9891
  className: "w-full h-full object-cover group-hover:scale-105 transition-transform duration-500"
9554
9892
  }
9555
9893
  ) : /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("div", { className: "flex flex-col items-center gap-2 select-none group-hover:scale-105 transition-transform duration-300", children: [
9556
- /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("div", { className: "w-20 h-20 rounded-2xl bg-gradient-to-tr from-primary/20 via-primary/10 to-transparent border border-primary/20 flex items-center justify-center text-primary shadow-lg", children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_lucide_react29.ShoppingBag, { className: "w-9 h-9" }) }),
9894
+ /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("div", { className: "w-20 h-20 rounded-2xl bg-gradient-to-tr from-primary/20 via-primary/10 to-transparent border border-primary/20 flex items-center justify-center text-primary shadow-lg", children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_lucide_react30.ShoppingBag, { className: "w-9 h-9" }) }),
9557
9895
  /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("span", { className: "text-[10px] font-mono tracking-widest text-muted-foreground uppercase", children: "STUDIO SERIES" })
9558
9896
  ] })
9559
9897
  ] }),
9560
9898
  /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("div", { className: "pt-4 space-y-3", children: [
9561
9899
  /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("div", { className: "flex items-center justify-between", children: [
9562
9900
  /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("div", { className: "flex items-center gap-1.5", children: [
9563
- /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("div", { className: "flex items-center text-amber-400", children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_lucide_react29.Star, { className: "w-3.5 h-3.5 fill-amber-400" }) }),
9901
+ /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("div", { className: "flex items-center text-amber-400", children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_lucide_react30.Star, { className: "w-3.5 h-3.5 fill-amber-400" }) }),
9564
9902
  /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("span", { className: "text-xs font-bold text-foreground", children: rating }),
9565
9903
  /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("span", { className: "text-xs text-muted-foreground", children: [
9566
9904
  "(",
@@ -9608,10 +9946,10 @@ function ProductCardPro({
9608
9946
  isAdded ? "bg-emerald-600 text-white shadow-emerald-500/25" : "bg-primary text-primary-foreground hover:bg-primary/90 shadow-primary/20"
9609
9947
  ),
9610
9948
  children: isAdded ? /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(import_jsx_runtime53.Fragment, { children: [
9611
- /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_lucide_react29.Check, { className: "w-4 h-4" }),
9949
+ /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_lucide_react30.Check, { className: "w-4 h-4" }),
9612
9950
  /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("span", { children: "Added to Cart!" })
9613
9951
  ] }) : /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(import_jsx_runtime53.Fragment, { children: [
9614
- /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_lucide_react29.ShoppingBag, { className: "w-4 h-4" }),
9952
+ /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_lucide_react30.ShoppingBag, { className: "w-4 h-4" }),
9615
9953
  /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("span", { children: "Add to Cart" })
9616
9954
  ] })
9617
9955
  }
@@ -9653,7 +9991,7 @@ function CheckoutSummary({
9653
9991
  ] }),
9654
9992
  /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("form", { onSubmit: handleApply, className: "flex gap-2", children: [
9655
9993
  /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("div", { className: "relative flex-1", children: [
9656
- /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_lucide_react29.Tag, { className: "w-3.5 h-3.5 absolute left-3 top-1/2 -translate-y-1/2 text-muted-foreground" }),
9994
+ /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_lucide_react30.Tag, { className: "w-3.5 h-3.5 absolute left-3 top-1/2 -translate-y-1/2 text-muted-foreground" }),
9657
9995
  /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
9658
9996
  "input",
9659
9997
  {
@@ -9719,14 +10057,14 @@ function CheckoutSummary({
9719
10057
  onClick: onCheckout,
9720
10058
  className: "w-full py-3.5 px-4 rounded-xl text-xs font-bold bg-primary text-primary-foreground hover:bg-primary/90 shadow-lg shadow-primary/25 flex items-center justify-center gap-2 cursor-pointer transition-all",
9721
10059
  children: [
9722
- /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_lucide_react29.Lock, { className: "w-3.5 h-3.5" }),
10060
+ /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_lucide_react30.Lock, { className: "w-3.5 h-3.5" }),
9723
10061
  /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("span", { children: "Complete Secure Checkout" })
9724
10062
  ]
9725
10063
  }
9726
10064
  ),
9727
10065
  /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("div", { className: "pt-2 flex items-center justify-center gap-4 text-[11px] text-muted-foreground select-none", children: [
9728
10066
  /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("div", { className: "flex items-center gap-1", children: [
9729
- /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_lucide_react29.ShieldCheck, { className: "w-3.5 h-3.5 text-primary" }),
10067
+ /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_lucide_react30.ShieldCheck, { className: "w-3.5 h-3.5 text-primary" }),
9730
10068
  /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("span", { children: "256-Bit SSL" })
9731
10069
  ] }),
9732
10070
  /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("span", { children: "\u2022" }),
@@ -9786,7 +10124,7 @@ function SubscriptionCard({
9786
10124
  /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("div", { className: "space-y-2.5 pt-2 border-t border-border/60", children: [
9787
10125
  /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("p", { className: "text-[11px] font-bold text-muted-foreground uppercase tracking-wider", children: "Included with plan:" }),
9788
10126
  /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("ul", { className: "space-y-2 text-xs", children: features.map((f, i) => /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("li", { className: "flex items-center gap-2.5 text-foreground/90", children: [
9789
- /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("div", { className: "w-4 h-4 rounded-full bg-emerald-500/10 border border-emerald-500/20 text-emerald-500 flex items-center justify-center shrink-0", children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_lucide_react29.Check, { className: "w-2.5 h-2.5" }) }),
10127
+ /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("div", { className: "w-4 h-4 rounded-full bg-emerald-500/10 border border-emerald-500/20 text-emerald-500 flex items-center justify-center shrink-0", children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_lucide_react30.Check, { className: "w-2.5 h-2.5" }) }),
9790
10128
  /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("span", { children: f })
9791
10129
  ] }, i)) })
9792
10130
  ] }),
@@ -9801,7 +10139,7 @@ function SubscriptionCard({
9801
10139
  "Upgrade to ",
9802
10140
  plan
9803
10141
  ] }),
9804
- /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_lucide_react29.ArrowRight, { className: "w-3.5 h-3.5" })
10142
+ /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_lucide_react30.ArrowRight, { className: "w-3.5 h-3.5" })
9805
10143
  ]
9806
10144
  }
9807
10145
  )
@@ -9871,7 +10209,7 @@ function CartItem({
9871
10209
  ),
9872
10210
  ...props,
9873
10211
  children: [
9874
- /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("div", { className: "w-14 h-14 rounded-xl bg-muted/60 border border-border flex items-center justify-center text-primary shrink-0", children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_lucide_react29.ShoppingBag, { className: "w-6 h-6" }) }),
10212
+ /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("div", { className: "w-14 h-14 rounded-xl bg-muted/60 border border-border flex items-center justify-center text-primary shrink-0", children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_lucide_react30.ShoppingBag, { className: "w-6 h-6" }) }),
9875
10213
  /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("div", { className: "flex-1 min-w-0", children: [
9876
10214
  /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("h4", { className: "font-semibold text-sm truncate text-foreground", children: name }),
9877
10215
  /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("p", { className: "text-xs font-mono font-bold text-primary mt-0.5", children: [
@@ -9886,7 +10224,7 @@ function CartItem({
9886
10224
  type: "button",
9887
10225
  onClick: () => onQuantityChange?.(Math.max(1, quantity - 1)),
9888
10226
  className: "w-6 h-6 rounded-lg bg-card hover:bg-muted flex items-center justify-center text-xs transition-colors cursor-pointer border border-border/40",
9889
- children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_lucide_react29.Minus, { className: "w-3 h-3" })
10227
+ children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_lucide_react30.Minus, { className: "w-3 h-3" })
9890
10228
  }
9891
10229
  ),
9892
10230
  /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("span", { className: "w-6 text-center text-xs font-mono font-bold", children: quantity }),
@@ -9896,7 +10234,7 @@ function CartItem({
9896
10234
  type: "button",
9897
10235
  onClick: () => onQuantityChange?.(quantity + 1),
9898
10236
  className: "w-6 h-6 rounded-lg bg-card hover:bg-muted flex items-center justify-center text-xs transition-colors cursor-pointer border border-border/40",
9899
- children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_lucide_react29.Plus, { className: "w-3 h-3" })
10237
+ children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_lucide_react30.Plus, { className: "w-3 h-3" })
9900
10238
  }
9901
10239
  )
9902
10240
  ] }),
@@ -9907,7 +10245,7 @@ function CartItem({
9907
10245
  onClick: onRemove,
9908
10246
  className: "p-2 rounded-xl text-muted-foreground hover:text-destructive hover:bg-destructive/10 transition-colors shrink-0 cursor-pointer",
9909
10247
  title: "Remove item",
9910
- children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_lucide_react29.Trash2, { className: "w-4 h-4" })
10248
+ children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_lucide_react30.Trash2, { className: "w-4 h-4" })
9911
10249
  }
9912
10250
  )
9913
10251
  ]
@@ -9974,7 +10312,7 @@ function InvoiceCard({
9974
10312
  onClick: onDownload || (() => alert("Downloading PDF...")),
9975
10313
  className: "w-full py-2 rounded-xl border border-border bg-muted/40 hover:bg-muted text-xs font-semibold text-foreground flex items-center justify-center gap-1.5 transition-colors cursor-pointer",
9976
10314
  children: [
9977
- /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_lucide_react29.Download, { className: "w-3.5 h-3.5 text-primary" }),
10315
+ /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_lucide_react30.Download, { className: "w-3.5 h-3.5 text-primary" }),
9978
10316
  /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("span", { children: "Download Receipt (PDF)" })
9979
10317
  ]
9980
10318
  }
@@ -10023,7 +10361,7 @@ function CouponCard({
10023
10361
  onClick: handleCopy,
10024
10362
  className: "px-4 py-2 rounded-xl bg-primary text-primary-foreground text-xs font-semibold hover:bg-primary/90 transition-colors cursor-pointer flex items-center gap-1.5 shrink-0",
10025
10363
  children: [
10026
- copied ? /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_lucide_react29.Check, { className: "w-3.5 h-3.5" }) : /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_lucide_react29.Copy, { className: "w-3.5 h-3.5" }),
10364
+ copied ? /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_lucide_react30.Check, { className: "w-3.5 h-3.5" }) : /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_lucide_react30.Copy, { className: "w-3.5 h-3.5" }),
10027
10365
  /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("span", { children: copied ? "Copied!" : "Copy" })
10028
10366
  ]
10029
10367
  }
@@ -10080,7 +10418,7 @@ function PricingSlider({
10080
10418
  /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("div", { className: "space-y-2 pt-2 border-t border-border/60", children: [
10081
10419
  /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("p", { className: "text-[11px] font-bold text-muted-foreground uppercase", children: "Key Features:" }),
10082
10420
  /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("ul", { className: "space-y-1.5 text-xs", children: current.features.map((f, idx) => /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("li", { className: "flex items-center gap-2 text-foreground/90", children: [
10083
- /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_lucide_react29.Check, { className: "w-3.5 h-3.5 text-emerald-500 shrink-0" }),
10421
+ /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_lucide_react30.Check, { className: "w-3.5 h-3.5 text-emerald-500 shrink-0" }),
10084
10422
  /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("span", { children: f })
10085
10423
  ] }, idx)) })
10086
10424
  ] })
@@ -10090,7 +10428,7 @@ function PricingSlider({
10090
10428
  }
10091
10429
  function ReviewStars({ rating = 4.8, size = 18, reviewCount }) {
10092
10430
  return /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("div", { className: "inline-flex items-center gap-1.5", children: [
10093
- /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("div", { className: "flex items-center text-amber-400", children: [1, 2, 3, 4, 5].map((s) => /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_lucide_react29.Star, { style: { width: size, height: size }, className: cn(s <= Math.round(rating) ? "fill-amber-400 text-amber-400" : "text-muted/40") }, s)) }),
10431
+ /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("div", { className: "flex items-center text-amber-400", children: [1, 2, 3, 4, 5].map((s) => /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_lucide_react30.Star, { style: { width: size, height: size }, className: cn(s <= Math.round(rating) ? "fill-amber-400 text-amber-400" : "text-muted/40") }, s)) }),
10094
10432
  /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("span", { className: "text-xs font-bold text-foreground", children: rating }),
10095
10433
  reviewCount && /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("span", { className: "text-xs text-muted-foreground", children: [
10096
10434
  "(",
@@ -10106,7 +10444,7 @@ function TrustBadge({
10106
10444
  className
10107
10445
  }) {
10108
10446
  return /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("div", { className: cn("inline-flex items-center gap-3 p-3 rounded-2xl border border-border/80 bg-card/60 backdrop-blur-md shadow-xs", className), children: [
10109
- /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("div", { className: "w-10 h-10 rounded-xl bg-primary/10 text-primary flex items-center justify-center shrink-0", children: icon || /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_lucide_react29.ShieldCheck, { className: "w-5 h-5" }) }),
10447
+ /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("div", { className: "w-10 h-10 rounded-xl bg-primary/10 text-primary flex items-center justify-center shrink-0", children: icon || /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_lucide_react30.ShieldCheck, { className: "w-5 h-5" }) }),
10110
10448
  /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("div", { children: [
10111
10449
  /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("h5", { className: "text-xs font-bold text-foreground leading-tight", children: title }),
10112
10450
  /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("p", { className: "text-[11px] text-muted-foreground", children: subtitle })
@@ -10329,7 +10667,7 @@ function BentoCard({
10329
10667
  // src/components/aurora-border-fx.tsx
10330
10668
  var React42 = __toESM(require("react"));
10331
10669
  var import_framer_motion35 = require("framer-motion");
10332
- var import_lucide_react30 = require("lucide-react");
10670
+ var import_lucide_react31 = require("lucide-react");
10333
10671
  var import_jsx_runtime55 = require("react/jsx-runtime");
10334
10672
  var defaultAuroraColors = [
10335
10673
  { name: "Violet", hex: "#8b5cf6" },
@@ -10364,7 +10702,7 @@ var AuroraBorderFX = React42.forwardRef(
10364
10702
  glow = "medium",
10365
10703
  radius = "lg",
10366
10704
  badgeText = "Aurora Border FX",
10367
- badgeIcon = /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(import_lucide_react30.Sparkles, { className: "w-3 h-3" }),
10705
+ badgeIcon = /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(import_lucide_react31.Sparkles, { className: "w-3 h-3" }),
10368
10706
  title = "Reactive Aurora Borders",
10369
10707
  description = "Smooth multi-color conic gradients that dynamically track and react with zero JavaScript canvas lag.",
10370
10708
  showColorPicker = true,
@@ -10527,7 +10865,7 @@ AuroraBorderFX.displayName = "AuroraBorderFX";
10527
10865
  // src/components/morphing-geometry.tsx
10528
10866
  var React43 = __toESM(require("react"));
10529
10867
  var import_framer_motion36 = require("framer-motion");
10530
- var import_lucide_react31 = require("lucide-react");
10868
+ var import_lucide_react32 = require("lucide-react");
10531
10869
  var import_jsx_runtime56 = require("react/jsx-runtime");
10532
10870
  var sizeMap3 = {
10533
10871
  sm: "w-16 h-16 text-xs",
@@ -10671,7 +11009,7 @@ var MorphingGeometry = React43.forwardRef(
10671
11009
  ...props,
10672
11010
  children: [
10673
11011
  /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("div", { className: "absolute inset-0 bg-gradient-to-b from-white/25 via-transparent to-black/20 pointer-events-none" }),
10674
- /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("div", { className: "relative z-10 flex flex-col items-center justify-center p-2 text-center", children: icon || (children ? children : /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_lucide_react31.Sparkles, { className: "w-6 h-6 drop-shadow-md" })) })
11012
+ /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("div", { className: "relative z-10 flex flex-col items-center justify-center p-2 text-center", children: icon || (children ? children : /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_lucide_react32.Sparkles, { className: "w-6 h-6 drop-shadow-md" })) })
10675
11013
  ]
10676
11014
  }
10677
11015
  );
@@ -10681,7 +11019,7 @@ MorphingGeometry.displayName = "MorphingGeometry";
10681
11019
 
10682
11020
  // src/components/interactive-code-block.tsx
10683
11021
  var React44 = __toESM(require("react"));
10684
- var import_lucide_react32 = require("lucide-react");
11022
+ var import_lucide_react33 = require("lucide-react");
10685
11023
  var import_jsx_runtime57 = require("react/jsx-runtime");
10686
11024
  var themeStyles = {
10687
11025
  dark: {
@@ -10778,10 +11116,10 @@ var InteractiveCodeBlock = React44.forwardRef(
10778
11116
  "aria-label": "Copy code to clipboard",
10779
11117
  className: "inline-flex items-center gap-1.5 px-2.5 py-1 rounded-md bg-white/10 hover:bg-white/15 text-zinc-300 hover:text-white transition-all cursor-pointer active:scale-95",
10780
11118
  children: copied ? /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(import_jsx_runtime57.Fragment, { children: [
10781
- /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_lucide_react32.Check, { className: "h-3 w-3 text-emerald-400" }),
11119
+ /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_lucide_react33.Check, { className: "h-3 w-3 text-emerald-400" }),
10782
11120
  /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", { className: "text-emerald-400 text-[11px] font-sans", children: "Copied!" })
10783
11121
  ] }) : /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(import_jsx_runtime57.Fragment, { children: [
10784
- /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_lucide_react32.Copy, { className: "h-3 w-3" }),
11122
+ /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_lucide_react33.Copy, { className: "h-3 w-3" }),
10785
11123
  /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", { className: "text-[11px] font-sans", children: "Copy" })
10786
11124
  ] })
10787
11125
  }
@@ -10815,10 +11153,327 @@ var InteractiveCodeBlock = React44.forwardRef(
10815
11153
  );
10816
11154
  InteractiveCodeBlock.displayName = "InteractiveCodeBlock";
10817
11155
 
11156
+ // src/components/aurora-search-pill.tsx
11157
+ var React45 = __toESM(require("react"));
11158
+ var import_lucide_react34 = require("lucide-react");
11159
+ var import_jsx_runtime58 = require("react/jsx-runtime");
11160
+ if (typeof window !== "undefined" && typeof window.CSS !== "undefined" && "registerProperty" in window.CSS) {
11161
+ try {
11162
+ window.CSS.registerProperty({
11163
+ name: "--aurora-deg",
11164
+ syntax: "<angle>",
11165
+ inherits: false,
11166
+ initialValue: "0deg"
11167
+ });
11168
+ } catch {
11169
+ }
11170
+ }
11171
+ var DEFAULT_SOURCES = [
11172
+ { id: "web", type: "globe", label: "Web" },
11173
+ { id: "gradient", type: "gradient", label: "Neural Index" },
11174
+ { id: "github", type: "github", label: "GitHub" }
11175
+ ];
11176
+ var SPEED_MAP = {
11177
+ slow: "5s",
11178
+ normal: "3.2s",
11179
+ fast: "1.8s"
11180
+ };
11181
+ var GLOW_OPACITY = {
11182
+ none: 0,
11183
+ subtle: 0.45,
11184
+ medium: 0.75,
11185
+ strong: 0.95
11186
+ };
11187
+ var SIZE_CONFIG = {
11188
+ sm: {
11189
+ height: "h-10",
11190
+ paddingDots: "px-4",
11191
+ paddingSearch: "px-4",
11192
+ dotSize: "w-1.5 h-1.5",
11193
+ dotGap: "gap-1.5",
11194
+ fontSize: "text-xs",
11195
+ badgeSize: "w-4 h-4",
11196
+ badgeMargin: "-ml-1",
11197
+ minWidthSearch: "min-w-[160px]"
11198
+ },
11199
+ md: {
11200
+ height: "h-12",
11201
+ paddingDots: "px-5",
11202
+ paddingSearch: "px-5",
11203
+ dotSize: "w-[6.5px] h-[6.5px]",
11204
+ dotGap: "gap-[7px]",
11205
+ fontSize: "text-sm sm:text-base",
11206
+ badgeSize: "w-[22px] h-[22px]",
11207
+ badgeMargin: "-ml-1.5",
11208
+ minWidthSearch: "min-w-[190px]"
11209
+ },
11210
+ lg: {
11211
+ height: "h-14",
11212
+ paddingDots: "px-6",
11213
+ paddingSearch: "px-6",
11214
+ dotSize: "w-2 h-2",
11215
+ dotGap: "gap-2",
11216
+ fontSize: "text-base sm:text-lg",
11217
+ badgeSize: "w-6 h-6",
11218
+ badgeMargin: "-ml-2",
11219
+ minWidthSearch: "min-w-[220px]"
11220
+ }
11221
+ };
11222
+ var AuroraSearchPill = React45.forwardRef(
11223
+ ({
11224
+ isSearching: controlledSearching,
11225
+ defaultSearching = false,
11226
+ onToggle,
11227
+ searchLabel = "Search...",
11228
+ sources = DEFAULT_SOURCES,
11229
+ sourceAvatars,
11230
+ theme = "auto",
11231
+ size = "md",
11232
+ glowIntensity = "medium",
11233
+ speed = "normal",
11234
+ spinMode = "always",
11235
+ isSpinning: controlledSpinning,
11236
+ autoCycle = false,
11237
+ cycleInterval = 2400,
11238
+ className,
11239
+ onClick,
11240
+ onMouseEnter,
11241
+ onMouseLeave,
11242
+ ...props
11243
+ }, ref) => {
11244
+ const isControlled = controlledSearching !== void 0;
11245
+ const [uncontrolledSearching, setUncontrolledSearching] = React45.useState(defaultSearching);
11246
+ const active = isControlled ? controlledSearching : uncontrolledSearching;
11247
+ const [isHovered, setIsHovered] = React45.useState(false);
11248
+ const instanceId = React45.useId().replace(/:/g, "");
11249
+ const activeSources = React45.useMemo(() => {
11250
+ if (sourceAvatars && sourceAvatars.length > 0) {
11251
+ return sourceAvatars.map((url, i) => ({
11252
+ id: `avatar-${i}`,
11253
+ avatarUrl: url,
11254
+ label: `Source ${i + 1}`,
11255
+ type: "custom"
11256
+ }));
11257
+ }
11258
+ return sources;
11259
+ }, [sourceAvatars, sources]);
11260
+ const shouldSpin = React45.useMemo(() => {
11261
+ if (controlledSpinning !== void 0) return controlledSpinning;
11262
+ if (spinMode === "never") return false;
11263
+ if (spinMode === "searching") return active;
11264
+ if (spinMode === "hover") return isHovered;
11265
+ return true;
11266
+ }, [controlledSpinning, spinMode, isHovered, active]);
11267
+ React45.useEffect(() => {
11268
+ if (!autoCycle) return;
11269
+ const interval = setInterval(() => {
11270
+ if (isControlled) {
11271
+ onToggle?.(!active);
11272
+ } else {
11273
+ setUncontrolledSearching((prev) => {
11274
+ const next = !prev;
11275
+ onToggle?.(next);
11276
+ return next;
11277
+ });
11278
+ }
11279
+ }, cycleInterval);
11280
+ return () => clearInterval(interval);
11281
+ }, [autoCycle, cycleInterval, active, isControlled, onToggle]);
11282
+ const handleToggle = (e) => {
11283
+ onClick?.(e);
11284
+ if (!isControlled) {
11285
+ setUncontrolledSearching(!active);
11286
+ }
11287
+ onToggle?.(!active);
11288
+ };
11289
+ const sizeStyle = SIZE_CONFIG[size] || SIZE_CONFIG.md;
11290
+ const animationDuration = SPEED_MAP[speed] || SPEED_MAP.normal;
11291
+ const glowAlpha = GLOW_OPACITY[glowIntensity] ?? GLOW_OPACITY.medium;
11292
+ const bodyThemeClass = theme === "light" ? "bg-white text-slate-900 border-white/60 shadow-sm" : theme === "dark" ? "bg-[#090d16] text-white border-white/10 shadow-lg shadow-black/40" : "bg-white text-slate-900 dark:bg-[#090d16] dark:text-white border-white/60 dark:border-white/10 shadow-sm dark:shadow-black/40";
11293
+ const dotsColorClass = theme === "light" ? "bg-slate-900" : theme === "dark" ? "bg-white" : "bg-slate-900 dark:bg-white";
11294
+ return /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)(
11295
+ "div",
11296
+ {
11297
+ ref,
11298
+ onClick: handleToggle,
11299
+ onMouseEnter: (e) => {
11300
+ setIsHovered(true);
11301
+ onMouseEnter?.(e);
11302
+ },
11303
+ onMouseLeave: (e) => {
11304
+ setIsHovered(false);
11305
+ onMouseLeave?.(e);
11306
+ },
11307
+ role: "button",
11308
+ tabIndex: 0,
11309
+ "aria-pressed": active,
11310
+ "aria-label": active ? `Searching: ${searchLabel}` : "Activate AI Search",
11311
+ onKeyDown: (e) => {
11312
+ if (e.key === "Enter" || e.key === " ") {
11313
+ e.preventDefault();
11314
+ handleToggle(e);
11315
+ }
11316
+ },
11317
+ className: cn(
11318
+ "relative inline-flex items-center justify-center cursor-pointer select-none isolate outline-none group",
11319
+ "transition-transform duration-200 ease-out active:scale-[0.96] focus-visible:ring-2 focus-visible:ring-primary/50 focus-visible:ring-offset-2",
11320
+ className
11321
+ ),
11322
+ ...props,
11323
+ children: [
11324
+ /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("style", { dangerouslySetInnerHTML: {
11325
+ __html: `
11326
+ @property --aurora-deg {
11327
+ syntax: '<angle>';
11328
+ initial-value: 0deg;
11329
+ inherits: false;
11330
+ }
11331
+ @keyframes spinAurora {
11332
+ from {
11333
+ --aurora-deg: 0deg;
11334
+ }
11335
+ to {
11336
+ --aurora-deg: 360deg;
11337
+ }
11338
+ }
11339
+ @keyframes dotPulse {
11340
+ 0%, 80%, 100% {
11341
+ opacity: 0.35;
11342
+ transform: scale(0.75);
11343
+ }
11344
+ 40% {
11345
+ opacity: 1;
11346
+ transform: scale(1.15);
11347
+ }
11348
+ }
11349
+ `
11350
+ } }),
11351
+ glowIntensity !== "none" && /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
11352
+ "div",
11353
+ {
11354
+ className: "absolute -inset-1.5 rounded-full pointer-events-none blur-md z-0 transition-opacity duration-300",
11355
+ style: {
11356
+ opacity: glowAlpha,
11357
+ background: `conic-gradient(
11358
+ from var(--aurora-deg, 0deg) at 50% 50%,
11359
+ transparent 0deg,
11360
+ rgba(59, 130, 246, 0.75) 60deg,
11361
+ rgba(139, 92, 246, 0.9) 110deg,
11362
+ rgba(236, 72, 153, 0.95) 160deg,
11363
+ rgba(244, 63, 94, 0.8) 200deg,
11364
+ transparent 250deg,
11365
+ transparent 360deg
11366
+ )`,
11367
+ animation: shouldSpin ? `spinAurora ${animationDuration} linear infinite` : void 0
11368
+ }
11369
+ }
11370
+ ),
11371
+ /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
11372
+ "div",
11373
+ {
11374
+ className: "relative z-10 p-[1.5px] rounded-full transition-shadow duration-300 shadow-sm",
11375
+ style: {
11376
+ background: `conic-gradient(
11377
+ from var(--aurora-deg, 0deg) at 50% 50%,
11378
+ rgba(226, 232, 240, 0.8) 0deg,
11379
+ rgba(59, 130, 246, 0.85) 60deg,
11380
+ rgba(139, 92, 246, 1) 110deg,
11381
+ rgba(236, 72, 153, 1) 160deg,
11382
+ rgba(244, 63, 94, 0.85) 200deg,
11383
+ rgba(226, 232, 240, 0.6) 260deg,
11384
+ rgba(226, 232, 240, 0.8) 360deg
11385
+ )`,
11386
+ animation: shouldSpin ? `spinAurora ${animationDuration} linear infinite` : void 0
11387
+ },
11388
+ children: /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)(
11389
+ "div",
11390
+ {
11391
+ className: cn(
11392
+ "relative z-20 rounded-full flex items-center justify-center overflow-hidden border",
11393
+ sizeStyle.height,
11394
+ active ? cn(sizeStyle.paddingSearch, sizeStyle.minWidthSearch) : sizeStyle.paddingDots,
11395
+ bodyThemeClass,
11396
+ "transition-all duration-500 [transition-timing-function:cubic-bezier(0.16,1,0.3,1)]"
11397
+ ),
11398
+ children: [
11399
+ /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
11400
+ "div",
11401
+ {
11402
+ className: cn(
11403
+ "flex items-center",
11404
+ sizeStyle.dotGap,
11405
+ "transition-all duration-400 [transition-timing-function:cubic-bezier(0.16,1,0.3,1)]",
11406
+ active ? "opacity-0 scale-50 -translate-y-2 pointer-events-none absolute" : "opacity-100 scale-100 translate-y-0"
11407
+ ),
11408
+ children: [0, 1, 2].map((idx) => /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
11409
+ "span",
11410
+ {
11411
+ className: cn("rounded-full inline-block", sizeStyle.dotSize, dotsColorClass),
11412
+ style: {
11413
+ animation: `dotPulse 1.4s ease-in-out infinite both`,
11414
+ animationDelay: `${idx === 0 ? -0.32 : idx === 1 ? -0.16 : 0}s`
11415
+ }
11416
+ },
11417
+ idx
11418
+ ))
11419
+ }
11420
+ ),
11421
+ /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)(
11422
+ "div",
11423
+ {
11424
+ className: cn(
11425
+ "flex items-center gap-2.5 whitespace-nowrap",
11426
+ "transition-all duration-400 [transition-timing-function:cubic-bezier(0.16,1,0.3,1)]",
11427
+ active ? "opacity-100 scale-100 translate-y-0" : "opacity-0 scale-90 translate-y-2 pointer-events-none absolute"
11428
+ ),
11429
+ children: [
11430
+ /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("span", { className: cn("font-medium tracking-tight", sizeStyle.fontSize), children: searchLabel }),
11431
+ activeSources && activeSources.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("div", { className: "inline-flex items-center pl-0.5", children: activeSources.map((src, i) => {
11432
+ const isFirst = i === 0;
11433
+ return /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
11434
+ "div",
11435
+ {
11436
+ title: src.label || src.id,
11437
+ className: cn(
11438
+ "rounded-full border-[1.5px] border-white dark:border-zinc-900 flex items-center justify-center shrink-0 shadow-xs overflow-hidden",
11439
+ sizeStyle.badgeSize,
11440
+ !isFirst && sizeStyle.badgeMargin
11441
+ ),
11442
+ style: {
11443
+ backgroundColor: src.type === "globe" ? "#0b1120" : src.type === "github" ? "#ffffff" : src.type === "claude" ? "#d97757" : src.type === "chatgpt" ? "#10a37f" : src.type === "perplexity" ? "#1fb8cd" : src.type === "custom" && src.bg ? src.bg : void 0,
11444
+ background: src.type === "gradient" ? "linear-gradient(135deg, #06b6d4 45%, #3b82f6 55%)" : void 0
11445
+ },
11446
+ children: src.avatarUrl ? /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
11447
+ "img",
11448
+ {
11449
+ src: src.avatarUrl,
11450
+ alt: src.label || src.id,
11451
+ className: "w-full h-full object-cover"
11452
+ }
11453
+ ) : src.icon ? src.icon : src.type === "globe" ? /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_lucide_react34.Globe, { className: "w-3 h-3 text-sky-400 stroke-[2.5]" }) : src.type === "github" ? /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("svg", { className: "w-3.5 h-3.5 fill-[#181717]", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("path", { d: "M12 0C5.37 0 0 5.37 0 12c0 5.31 3.435 9.795 8.205 11.385.6.105.825-.255.825-.57 0-.285-.015-1.23-.015-2.235-3.015.555-3.795-.735-4.035-1.41-.135-.345-.72-1.41-1.23-1.695-.42-.225-1.02-.78-.015-.795.945-.015 1.62.87 1.845 1.23 1.08 1.815 2.805 1.305 3.495.99.105-.78.42-1.305.765-1.605-2.67-.3-5.46-1.335-5.46-5.925 0-1.305.465-2.385 1.23-3.225-.12-.3-.54-1.53.12-3.18 0 0 1.005-.315 3.3 1.23.96-.27 1.98-.405 3-.405s2.04.135 3 .405c2.295-1.56 3.3-1.23 3.3-1.23.66 1.65.24 2.88.12 3.18.765.84 1.23 1.905 1.23 3.225 0 4.605-2.805 5.625-5.475 5.925.435.375.81 1.095.81 2.22 0 1.605-.015 2.895-.015 3.3 0 .315.225.69.825.57A12.02 12.02 0 0 0 24 12c0-6.63-5.37-12-12-12z" }) }) : src.type === "claude" ? /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_lucide_react34.Sparkles, { className: "w-2.5 h-2.5 text-white" }) : src.type === "chatgpt" ? /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("div", { className: "w-2 h-2 rounded-full bg-white" }) : src.type === "perplexity" ? /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_lucide_react34.Sparkles, { className: "w-2.5 h-2.5 text-white" }) : src.initials ? /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("span", { className: "text-[8px] font-bold text-white uppercase", children: src.initials }) : null
11454
+ },
11455
+ src.id || i
11456
+ );
11457
+ }) })
11458
+ ]
11459
+ }
11460
+ )
11461
+ ]
11462
+ }
11463
+ )
11464
+ }
11465
+ )
11466
+ ]
11467
+ }
11468
+ );
11469
+ }
11470
+ );
11471
+ AuroraSearchPill.displayName = "AuroraSearchPill";
11472
+
10818
11473
  // src/components/dock.tsx
10819
11474
  var import_react = require("react");
10820
11475
  var import_framer_motion37 = require("framer-motion");
10821
- var import_jsx_runtime58 = require("react/jsx-runtime");
11476
+ var import_jsx_runtime59 = require("react/jsx-runtime");
10822
11477
  function Dock({
10823
11478
  items,
10824
11479
  className,
@@ -10828,7 +11483,7 @@ function Dock({
10828
11483
  const mouseX = (0, import_framer_motion37.useMotionValue)(Infinity);
10829
11484
  const numMagnification = Number(magnification) || 60;
10830
11485
  const numDistance = Number(distance) || 140;
10831
- return /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
11486
+ return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
10832
11487
  import_framer_motion37.motion.div,
10833
11488
  {
10834
11489
  onMouseMove: (e) => mouseX.set(e.clientX),
@@ -10837,7 +11492,7 @@ function Dock({
10837
11492
  "mx-auto flex h-14 items-end gap-3 rounded-2xl border border-border bg-background/80 px-4 pb-2 backdrop-blur-md",
10838
11493
  className
10839
11494
  ),
10840
- children: items.map((item, i) => /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(DockIcon, { mouseX, magnification: numMagnification, distance: numDistance, ...item }, i))
11495
+ children: items.map((item, i) => /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(DockIcon, { mouseX, magnification: numMagnification, distance: numDistance, ...item }, i))
10841
11496
  }
10842
11497
  );
10843
11498
  }
@@ -10866,7 +11521,7 @@ function DockIcon({
10866
11521
  stiffness: 150,
10867
11522
  damping: 12
10868
11523
  });
10869
- return /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)(
11524
+ return /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)(
10870
11525
  import_framer_motion37.motion.div,
10871
11526
  {
10872
11527
  ref,
@@ -10875,8 +11530,8 @@ function DockIcon({
10875
11530
  onClick,
10876
11531
  title: label,
10877
11532
  children: [
10878
- /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("div", { className: "flex items-center justify-center text-foreground", children: icon }),
10879
- /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("span", { className: "absolute -top-8 left-1/2 -translate-x-1/2 rounded-md bg-popover px-2 py-1 text-xs text-popover-foreground border border-border opacity-0 group-hover:opacity-100 transition-opacity whitespace-nowrap shadow-lg", children: label })
11533
+ /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("div", { className: "flex items-center justify-center text-foreground", children: icon }),
11534
+ /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("span", { className: "absolute -top-8 left-1/2 -translate-x-1/2 rounded-md bg-popover px-2 py-1 text-xs text-popover-foreground border border-border opacity-0 group-hover:opacity-100 transition-opacity whitespace-nowrap shadow-lg", children: label })
10880
11535
  ]
10881
11536
  }
10882
11537
  );
@@ -10885,8 +11540,8 @@ function DockIcon({
10885
11540
  // src/components/dark-mode.tsx
10886
11541
  var import_react2 = require("react");
10887
11542
  var import_framer_motion38 = require("framer-motion");
10888
- var import_lucide_react33 = require("lucide-react");
10889
- var import_jsx_runtime59 = require("react/jsx-runtime");
11543
+ var import_lucide_react35 = require("lucide-react");
11544
+ var import_jsx_runtime60 = require("react/jsx-runtime");
10890
11545
  function DarkModeToggle({
10891
11546
  theme: controlledTheme,
10892
11547
  variant = "pill",
@@ -10912,7 +11567,7 @@ function DarkModeToggle({
10912
11567
  };
10913
11568
  const isDark = activeTheme === "dark";
10914
11569
  if (variant === "icon") {
10915
- return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
11570
+ return /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
10916
11571
  "button",
10917
11572
  {
10918
11573
  type: "button",
@@ -10924,14 +11579,14 @@ function DarkModeToggle({
10924
11579
  ),
10925
11580
  title: `Switch to ${isDark ? "light" : "dark"} theme`,
10926
11581
  "aria-label": "Toggle theme",
10927
- children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
11582
+ children: /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
10928
11583
  import_framer_motion38.motion.div,
10929
11584
  {
10930
11585
  initial: { rotate: -90, scale: 0.8, opacity: 0 },
10931
11586
  animate: { rotate: 0, scale: 1, opacity: 1 },
10932
11587
  exit: { rotate: 90, scale: 0.8, opacity: 0 },
10933
11588
  transition: { duration: 0.2 },
10934
- children: isDark ? /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(import_lucide_react33.Moon, { className: size === "sm" ? "w-3.5 h-3.5 text-primary" : "w-4.5 h-4.5 text-primary" }) : /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(import_lucide_react33.Sun, { className: size === "sm" ? "w-3.5 h-3.5 text-amber-500" : "w-4.5 h-4.5 text-amber-500" })
11589
+ children: isDark ? /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(import_lucide_react35.Moon, { className: size === "sm" ? "w-3.5 h-3.5 text-primary" : "w-4.5 h-4.5 text-primary" }) : /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(import_lucide_react35.Sun, { className: size === "sm" ? "w-3.5 h-3.5 text-amber-500" : "w-4.5 h-4.5 text-amber-500" })
10935
11590
  },
10936
11591
  isDark ? "dark" : "light"
10937
11592
  )
@@ -10939,7 +11594,7 @@ function DarkModeToggle({
10939
11594
  );
10940
11595
  }
10941
11596
  if (variant === "segmented") {
10942
- return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
11597
+ return /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
10943
11598
  "div",
10944
11599
  {
10945
11600
  className: cn(
@@ -10948,7 +11603,7 @@ function DarkModeToggle({
10948
11603
  ),
10949
11604
  children: ["light", "dark", "system"].map((t) => {
10950
11605
  const isActive = activeTheme === t;
10951
- return /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)(
11606
+ return /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(
10952
11607
  "button",
10953
11608
  {
10954
11609
  type: "button",
@@ -10958,10 +11613,10 @@ function DarkModeToggle({
10958
11613
  isActive ? "bg-card text-foreground shadow-xs border border-border/60 font-semibold" : "text-muted-foreground hover:text-foreground"
10959
11614
  ),
10960
11615
  children: [
10961
- t === "light" && /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(import_lucide_react33.Sun, { className: "w-3.5 h-3.5 text-amber-500" }),
10962
- t === "dark" && /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(import_lucide_react33.Moon, { className: "w-3.5 h-3.5 text-primary" }),
10963
- t === "system" && /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(import_lucide_react33.Monitor, { className: "w-3.5 h-3.5 text-muted-foreground" }),
10964
- showLabel && /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("span", { children: t })
11616
+ t === "light" && /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(import_lucide_react35.Sun, { className: "w-3.5 h-3.5 text-amber-500" }),
11617
+ t === "dark" && /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(import_lucide_react35.Moon, { className: "w-3.5 h-3.5 text-primary" }),
11618
+ t === "system" && /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(import_lucide_react35.Monitor, { className: "w-3.5 h-3.5 text-muted-foreground" }),
11619
+ showLabel && /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("span", { children: t })
10965
11620
  ]
10966
11621
  },
10967
11622
  t
@@ -10971,8 +11626,8 @@ function DarkModeToggle({
10971
11626
  );
10972
11627
  }
10973
11628
  const dimensions = size === "sm" ? { track: "w-11 h-6", thumb: "w-4.5 h-4.5", icon: "w-2.5 h-2.5" } : size === "lg" ? { track: "w-16 h-9", thumb: "w-7 h-7", icon: "w-4 h-4" } : { track: "w-14 h-7.5", thumb: "w-5.5 h-5.5", icon: "w-3 h-3" };
10974
- return /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)("div", { className: cn("inline-flex items-center gap-3", className), children: [
10975
- /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
11629
+ return /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)("div", { className: cn("inline-flex items-center gap-3", className), children: [
11630
+ /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
10976
11631
  "button",
10977
11632
  {
10978
11633
  type: "button",
@@ -10984,7 +11639,7 @@ function DarkModeToggle({
10984
11639
  ),
10985
11640
  title: `Switch to ${isDark ? "light" : "dark"} mode`,
10986
11641
  "aria-label": "Toggle dark mode",
10987
- children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
11642
+ children: /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
10988
11643
  import_framer_motion38.motion.div,
10989
11644
  {
10990
11645
  animate: {
@@ -10995,12 +11650,12 @@ function DarkModeToggle({
10995
11650
  "rounded-full bg-white shadow-md flex items-center justify-center transition-colors",
10996
11651
  dimensions.thumb
10997
11652
  ),
10998
- children: isDark ? /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(import_lucide_react33.Moon, { className: cn(dimensions.icon, "text-zinc-900") }) : /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(import_lucide_react33.Sun, { className: cn(dimensions.icon, "text-amber-500") })
11653
+ children: isDark ? /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(import_lucide_react35.Moon, { className: cn(dimensions.icon, "text-zinc-900") }) : /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(import_lucide_react35.Sun, { className: cn(dimensions.icon, "text-amber-500") })
10999
11654
  }
11000
11655
  )
11001
11656
  }
11002
11657
  ),
11003
- showLabel && /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)("span", { className: "text-xs font-semibold text-foreground/90 capitalize select-none", children: [
11658
+ showLabel && /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)("span", { className: "text-xs font-semibold text-foreground/90 capitalize select-none", children: [
11004
11659
  activeTheme,
11005
11660
  " mode"
11006
11661
  ] })
@@ -11035,6 +11690,7 @@ function DarkModeToggle({
11035
11690
  AudioWaveform,
11036
11691
  AuroraBorderCard,
11037
11692
  AuroraBorderFX,
11693
+ AuroraSearchPill,
11038
11694
  AuthenticationLayout,
11039
11695
  Avatar,
11040
11696
  AvatarFallback,
@@ -11297,6 +11953,7 @@ function DarkModeToggle({
11297
11953
  RangeSliderInput,
11298
11954
  RateLimitAlert,
11299
11955
  Rating,
11956
+ RatingBreakdown,
11300
11957
  RatingStars,
11301
11958
  ReactionAdd,
11302
11959
  ReactionBar,
@@ -11308,6 +11965,7 @@ function DarkModeToggle({
11308
11965
  RetroGrid,
11309
11966
  RevealClip,
11310
11967
  RevenueChartWidget,
11968
+ ReviewCard,
11311
11969
  ReviewStars,
11312
11970
  RichTooltip,
11313
11971
  RingLoader,