@opensite/ui 2.1.3 → 2.1.5

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/registry.js CHANGED
@@ -1,5 +1,5 @@
1
- import * as React23 from 'react';
2
- import React23__default, { Fragment, createContext, useMemo, forwardRef, useCallback, useState, useRef, useEffect, startTransition, useContext } from 'react';
1
+ import * as React25 from 'react';
2
+ import React25__default, { Fragment, createContext, useMemo, forwardRef, useCallback, useState, useRef, useEffect, startTransition, useContext } from 'react';
3
3
  import { clsx } from 'clsx';
4
4
  import { twMerge } from 'tailwind-merge';
5
5
  import { jsx, jsxs, Fragment as Fragment$1 } from 'react/jsx-runtime';
@@ -140,7 +140,7 @@ var maxWidthStyles = {
140
140
  "4xl": "max-w-[1536px]",
141
141
  full: "max-w-full"
142
142
  };
143
- var Container = React23__default.forwardRef(
143
+ var Container = React25__default.forwardRef(
144
144
  ({ children, maxWidth = "xl", className, as = "div", ...props }, ref) => {
145
145
  const Component = as;
146
146
  return /* @__PURE__ */ jsx(
@@ -445,7 +445,7 @@ var spacingStyles = {
445
445
  };
446
446
  var predefinedSpacings = ["none", "sm", "md", "lg", "xl"];
447
447
  var isPredefinedSpacing = (spacing) => predefinedSpacings.includes(spacing);
448
- var Section = React23__default.forwardRef(
448
+ var Section = React25__default.forwardRef(
449
449
  ({
450
450
  id,
451
451
  title,
@@ -1035,7 +1035,7 @@ function useNavigation({
1035
1035
  href,
1036
1036
  onClick
1037
1037
  } = {}) {
1038
- const linkType = React23.useMemo(() => {
1038
+ const linkType = React25.useMemo(() => {
1039
1039
  if (!href || href.trim() === "") {
1040
1040
  return onClick ? "none" : "none";
1041
1041
  }
@@ -1056,7 +1056,7 @@ function useNavigation({
1056
1056
  return "internal";
1057
1057
  }
1058
1058
  }, [href, onClick]);
1059
- const normalizedHref = React23.useMemo(() => {
1059
+ const normalizedHref = React25.useMemo(() => {
1060
1060
  if (!href || href.trim() === "") {
1061
1061
  return void 0;
1062
1062
  }
@@ -1074,7 +1074,7 @@ function useNavigation({
1074
1074
  return trimmed;
1075
1075
  }
1076
1076
  }, [href, linkType]);
1077
- const target = React23.useMemo(() => {
1077
+ const target = React25.useMemo(() => {
1078
1078
  switch (linkType) {
1079
1079
  case "external":
1080
1080
  return "_blank";
@@ -1087,7 +1087,7 @@ function useNavigation({
1087
1087
  return void 0;
1088
1088
  }
1089
1089
  }, [linkType]);
1090
- const rel = React23.useMemo(() => {
1090
+ const rel = React25.useMemo(() => {
1091
1091
  if (linkType === "external") {
1092
1092
  return "noopener noreferrer";
1093
1093
  }
@@ -1096,7 +1096,7 @@ function useNavigation({
1096
1096
  const isExternal = linkType === "external";
1097
1097
  const isInternal = linkType === "internal";
1098
1098
  const shouldUseRouter = isInternal && typeof normalizedHref === "string" && normalizedHref.startsWith("/");
1099
- const handleClick = React23.useCallback(
1099
+ const handleClick = React25.useCallback(
1100
1100
  (event) => {
1101
1101
  if (onClick) {
1102
1102
  try {
@@ -1280,7 +1280,7 @@ var buttonVariants = cva(baseStyles, {
1280
1280
  size: "default"
1281
1281
  }
1282
1282
  });
1283
- var Pressable = React23.forwardRef(
1283
+ var Pressable = React25.forwardRef(
1284
1284
  ({
1285
1285
  children,
1286
1286
  className,
@@ -2328,10 +2328,10 @@ var ImageSlider = ({
2328
2328
  optixFlowConfig
2329
2329
  }) => {
2330
2330
  const hasImages = images.length > 0;
2331
- const [currentIndex, setCurrentIndex] = React23.useState(
2331
+ const [currentIndex, setCurrentIndex] = React25.useState(
2332
2332
  () => normalizeIndex(startIndex, images.length)
2333
2333
  );
2334
- const handleNext = React23.useCallback(() => {
2334
+ const handleNext = React25.useCallback(() => {
2335
2335
  if (!hasImages) return;
2336
2336
  setCurrentIndex((prevIndex) => {
2337
2337
  const nextIndex = prevIndex + 1 >= images.length ? 0 : prevIndex + 1;
@@ -2339,7 +2339,7 @@ var ImageSlider = ({
2339
2339
  return nextIndex;
2340
2340
  });
2341
2341
  }, [hasImages, images.length, onSlideChange]);
2342
- const handlePrevious = React23.useCallback(() => {
2342
+ const handlePrevious = React25.useCallback(() => {
2343
2343
  if (!hasImages) return;
2344
2344
  setCurrentIndex((prevIndex) => {
2345
2345
  const nextIndex = prevIndex - 1 < 0 ? images.length - 1 : prevIndex - 1;
@@ -2347,11 +2347,11 @@ var ImageSlider = ({
2347
2347
  return nextIndex;
2348
2348
  });
2349
2349
  }, [hasImages, images.length, onSlideChange]);
2350
- React23.useEffect(() => {
2350
+ React25.useEffect(() => {
2351
2351
  if (!hasImages) return;
2352
2352
  setCurrentIndex(normalizeIndex(startIndex, images.length));
2353
2353
  }, [startIndex, images.length, hasImages]);
2354
- React23.useEffect(() => {
2354
+ React25.useEffect(() => {
2355
2355
  if (!enableKeyboard || !hasImages) return;
2356
2356
  const handleKeyDown = (event) => {
2357
2357
  if (event.key === "ArrowRight") {
@@ -2365,7 +2365,7 @@ var ImageSlider = ({
2365
2365
  window.removeEventListener("keydown", handleKeyDown);
2366
2366
  };
2367
2367
  }, [enableKeyboard, handleNext, handlePrevious, hasImages]);
2368
- React23.useEffect(() => {
2368
+ React25.useEffect(() => {
2369
2369
  if (!autoplay || images.length < 2) return;
2370
2370
  const interval = window.setInterval(handleNext, autoplayIntervalMs);
2371
2371
  return () => window.clearInterval(interval);
@@ -2650,7 +2650,7 @@ var platformIconMap = {
2650
2650
  dribbble: "cib/dribbble",
2651
2651
  unknown: "icon-park-solid/circular-connection"
2652
2652
  };
2653
- var SocialLinkIcon = React23.forwardRef(
2653
+ var SocialLinkIcon = React25.forwardRef(
2654
2654
  ({
2655
2655
  platformName,
2656
2656
  label,
@@ -2663,13 +2663,13 @@ var SocialLinkIcon = React23.forwardRef(
2663
2663
  ...pressableProps
2664
2664
  }, ref) => {
2665
2665
  const platform = usePlatformFromUrl(href);
2666
- const smartPlatformName = React23.useMemo(() => {
2666
+ const smartPlatformName = React25.useMemo(() => {
2667
2667
  return platform || platformName;
2668
2668
  }, [platform, platformName]);
2669
- const iconName = React23.useMemo(() => {
2669
+ const iconName = React25.useMemo(() => {
2670
2670
  return iconNameOverride || platformIconMap[smartPlatformName];
2671
2671
  }, [iconNameOverride, smartPlatformName]);
2672
- const accessibleLabel = React23.useMemo(() => {
2672
+ const accessibleLabel = React25.useMemo(() => {
2673
2673
  return label || platformName;
2674
2674
  }, [label, platformName]);
2675
2675
  return /* @__PURE__ */ jsx(
@@ -3094,7 +3094,7 @@ function AboutExpandableValues({
3094
3094
  pattern,
3095
3095
  patternOpacity
3096
3096
  }) {
3097
- const [expandedValue, setExpandedValue] = React23.useState(null);
3097
+ const [expandedValue, setExpandedValue] = React25.useState(null);
3098
3098
  const toggleExpand = useCallback((id) => {
3099
3099
  setExpandedValue((prev) => prev === id ? null : id);
3100
3100
  }, []);
@@ -3348,7 +3348,7 @@ function CommunityInitiatives({
3348
3348
  pattern,
3349
3349
  patternOpacity
3350
3350
  }) {
3351
- const [activeCategory, setActiveCategory] = React23.useState(
3351
+ const [activeCategory, setActiveCategory] = React25.useState(
3352
3352
  categories?.[0]?.id || ""
3353
3353
  );
3354
3354
  const currentCategory = categories?.find((category) => category.id === activeCategory) || categories?.[0];
@@ -3604,7 +3604,7 @@ function AboutCultureTabs({
3604
3604
  ctaImages,
3605
3605
  ctaImagesSlot,
3606
3606
  className,
3607
- containerClassName,
3607
+ containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
3608
3608
  headerClassName,
3609
3609
  badgeClassName,
3610
3610
  headingClassName,
@@ -3616,45 +3616,33 @@ function AboutCultureTabs({
3616
3616
  actionsClassName,
3617
3617
  optixFlowConfig,
3618
3618
  background,
3619
- spacing,
3619
+ spacing = "xl",
3620
3620
  pattern,
3621
3621
  patternOpacity
3622
3622
  }) {
3623
3623
  const resolvedAspects = aspects ?? [];
3624
- const [activeTab, setActiveTab] = React23.useState(resolvedAspects[0]?.id || "");
3625
- const actionsContent = useMemo(() => {
3626
- if (actionsSlot) return actionsSlot;
3627
- if (!actions || actions.length === 0) return null;
3628
- return actions.map((action, index) => {
3629
- const { label, icon, iconAfter, children, className: actionClassName, ...pressableProps } = action;
3630
- return /* @__PURE__ */ jsx(
3631
- Pressable,
3632
- {
3633
- asButton: true,
3634
- className: actionClassName,
3635
- ...pressableProps,
3636
- children: children ?? /* @__PURE__ */ jsxs(Fragment$1, { children: [
3637
- icon,
3638
- label,
3639
- iconAfter
3640
- ] })
3641
- },
3642
- index
3643
- );
3644
- });
3645
- }, [actionsSlot, actions]);
3624
+ const [activeTab, setActiveTab] = React25.useState(
3625
+ resolvedAspects[0]?.id || ""
3626
+ );
3646
3627
  const ctaImagesContent = useMemo(() => {
3647
3628
  if (ctaImagesSlot) return ctaImagesSlot;
3648
3629
  if (!ctaImages || ctaImages.length === 0) return null;
3649
- return ctaImages.map((src, i) => /* @__PURE__ */ jsx("div", { className: "relative aspect-square overflow-hidden rounded-md", children: /* @__PURE__ */ jsx(
3650
- Img,
3630
+ return ctaImages.map((src, i) => /* @__PURE__ */ jsx(
3631
+ "div",
3651
3632
  {
3652
- src,
3653
- alt: "Team culture",
3654
- className: "h-full w-full object-cover",
3655
- optixFlowConfig
3656
- }
3657
- ) }, i));
3633
+ className: "relative aspect-square overflow-hidden rounded-md",
3634
+ children: /* @__PURE__ */ jsx(
3635
+ Img,
3636
+ {
3637
+ src,
3638
+ alt: "Team culture",
3639
+ className: "h-full w-full object-cover",
3640
+ optixFlowConfig
3641
+ }
3642
+ )
3643
+ },
3644
+ i
3645
+ ));
3658
3646
  }, [ctaImagesSlot, ctaImages, optixFlowConfig]);
3659
3647
  return /* @__PURE__ */ jsxs(
3660
3648
  Section,
@@ -3663,14 +3651,32 @@ function AboutCultureTabs({
3663
3651
  spacing,
3664
3652
  pattern,
3665
3653
  patternOpacity,
3666
- className: cn(className),
3654
+ className,
3667
3655
  containerClassName,
3668
3656
  children: [
3669
- /* @__PURE__ */ jsxs("div", { className: cn("mx-auto mb-12 max-w-3xl space-y-4 text-center", headerClassName), children: [
3670
- badgeText && (typeof badgeText === "string" ? /* @__PURE__ */ jsx("div", { className: cn("inline-block rounded-lg bg-primary/10 px-3 py-1 text-sm", getAccentColor(background), badgeClassName), children: badgeText }) : /* @__PURE__ */ jsx("div", { className: badgeClassName, children: badgeText })),
3671
- heading && (typeof heading === "string" ? /* @__PURE__ */ jsx("h2", { className: cn("text-3xl font-bold tracking-tight md:text-4xl", headingClassName), children: heading }) : /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading })),
3672
- description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn(getTextColor(background, "muted"), descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description }))
3673
- ] }),
3657
+ /* @__PURE__ */ jsxs(
3658
+ "div",
3659
+ {
3660
+ className: cn(
3661
+ "mx-auto mb-12 max-w-full md:max-w-md space-y-4 text-center flex flex-col items-center justify-center",
3662
+ headerClassName
3663
+ ),
3664
+ children: [
3665
+ badgeText && (typeof badgeText === "string" ? /* @__PURE__ */ jsx(Badge, { className: cn("px-3 py-1", badgeClassName), children: badgeText }) : badgeText),
3666
+ heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
3667
+ "h2",
3668
+ {
3669
+ className: cn(
3670
+ "text-3xl font-bold tracking-tight md:text-4xl text-pretty",
3671
+ headingClassName
3672
+ ),
3673
+ children: heading
3674
+ }
3675
+ ) : heading),
3676
+ description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-balance", descriptionClassName), children: description }) : description)
3677
+ ]
3678
+ }
3679
+ ),
3674
3680
  aspectsSlot ? aspectsSlot : resolvedAspects.length > 0 ? /* @__PURE__ */ jsxs(
3675
3681
  Tabs,
3676
3682
  {
@@ -3683,80 +3689,103 @@ function AboutCultureTabs({
3683
3689
  TabsTrigger,
3684
3690
  {
3685
3691
  value: aspect.id,
3686
- className: cn("px-3 py-2.5", `data-[state=active]:${getAccentColor(background)}`, "data-[state=active]:text-primary-foreground"),
3692
+ className: cn("px-3 py-2.5"),
3687
3693
  children: aspect.title
3688
3694
  },
3689
3695
  aspect.id
3690
3696
  )) }) }),
3691
- resolvedAspects.map((aspect) => /* @__PURE__ */ jsxs(TabsContent, { value: aspect.id, className: "space-y-8", children: [
3692
- /* @__PURE__ */ jsxs("div", { className: "grid gap-6 md:grid-cols-2", children: [
3693
- /* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
3694
- /* @__PURE__ */ jsx("h3", { className: "text-2xl font-bold tracking-tight", children: aspect.title }),
3695
- /* @__PURE__ */ jsx("p", { className: cn("leading-relaxed", getTextColor(background, "muted")), children: aspect.description })
3696
- ] }),
3697
- /* @__PURE__ */ jsx(Card, { className: "border-0 bg-gradient-to-br from-primary/5 to-primary/10 p-0", children: /* @__PURE__ */ jsxs(CardContent, { className: "space-y-4 p-6 pt-6", children: [
3698
- /* @__PURE__ */ jsx(
3699
- DynamicIcon,
3700
- {
3701
- name: "lucide/quote",
3702
- size: 32,
3703
- className: cn(getAccentColor(background), "opacity-40")
3704
- }
3705
- ),
3706
- /* @__PURE__ */ jsxs("p", { className: cn("italic", getTextColor(background, "muted")), children: [
3707
- '"',
3708
- aspect.testimonial.quote,
3709
- '"'
3697
+ resolvedAspects.map((aspect) => /* @__PURE__ */ jsxs(
3698
+ TabsContent,
3699
+ {
3700
+ value: aspect.id,
3701
+ className: "space-y-8",
3702
+ children: [
3703
+ /* @__PURE__ */ jsxs("div", { className: "grid gap-6 md:grid-cols-2", children: [
3704
+ /* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
3705
+ /* @__PURE__ */ jsx("h3", { className: "text-2xl font-bold tracking-tight", children: aspect.title }),
3706
+ /* @__PURE__ */ jsx("p", { className: cn("leading-relaxed"), children: aspect.description })
3707
+ ] }),
3708
+ /* @__PURE__ */ jsx(Card, { className: "border-0 p-0", children: /* @__PURE__ */ jsxs(CardContent, { className: "space-y-4 p-6 pt-6", children: [
3709
+ /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/quote", size: 32 }),
3710
+ /* @__PURE__ */ jsxs("p", { className: "italic", children: [
3711
+ '"',
3712
+ aspect.testimonial.quote,
3713
+ '"'
3714
+ ] }),
3715
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3 pt-2", children: [
3716
+ /* @__PURE__ */ jsx("div", { className: "relative h-10 w-10 overflow-hidden rounded-full", children: /* @__PURE__ */ jsx(
3717
+ Img,
3718
+ {
3719
+ src: aspect.testimonial.avatar,
3720
+ alt: aspect.testimonial.author,
3721
+ className: "h-full w-full object-cover",
3722
+ optixFlowConfig
3723
+ }
3724
+ ) }),
3725
+ /* @__PURE__ */ jsxs("div", { children: [
3726
+ /* @__PURE__ */ jsx("h4", { className: "text-sm font-medium", children: aspect.testimonial.author }),
3727
+ /* @__PURE__ */ jsx("p", { className: "text-xs", children: aspect.testimonial.role })
3728
+ ] })
3729
+ ] })
3730
+ ] }) })
3710
3731
  ] }),
3711
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3 pt-2", children: [
3712
- /* @__PURE__ */ jsx("div", { className: "relative h-10 w-10 overflow-hidden rounded-full", children: /* @__PURE__ */ jsx(
3713
- Img,
3714
- {
3715
- src: aspect.testimonial.avatar,
3716
- alt: aspect.testimonial.author,
3717
- className: "h-full w-full object-cover",
3718
- optixFlowConfig
3719
- }
3720
- ) }),
3721
- /* @__PURE__ */ jsxs("div", { children: [
3722
- /* @__PURE__ */ jsx("h4", { className: "text-sm font-medium", children: aspect.testimonial.author }),
3723
- /* @__PURE__ */ jsx("p", { className: cn("text-xs", getTextColor(background, "muted")), children: aspect.testimonial.role })
3724
- ] })
3725
- ] })
3726
- ] }) })
3727
- ] }),
3728
- /* @__PURE__ */ jsx("div", { className: "grid grid-cols-1 gap-4 md:grid-cols-3", children: aspect.images.map((image, idx) => /* @__PURE__ */ jsx(
3729
- "div",
3730
- {
3731
- className: "relative aspect-[4/3] overflow-hidden rounded-lg",
3732
- children: /* @__PURE__ */ jsx(
3733
- Img,
3732
+ /* @__PURE__ */ jsx("div", { className: "grid grid-cols-1 gap-4 md:grid-cols-3", children: aspect.images.map((image, idx) => /* @__PURE__ */ jsx(
3733
+ "div",
3734
3734
  {
3735
- src: image,
3736
- alt: `${aspect.title} culture`,
3737
- className: "h-full w-full transform object-cover transition-transform duration-500 hover:scale-105",
3738
- optixFlowConfig
3739
- }
3740
- )
3741
- },
3742
- idx
3743
- )) })
3744
- ] }, aspect.id))
3735
+ className: "relative aspect-4/3 overflow-hidden rounded-lg",
3736
+ children: /* @__PURE__ */ jsx(
3737
+ Img,
3738
+ {
3739
+ src: image,
3740
+ alt: `${aspect.title} culture`,
3741
+ className: "h-full w-full transform object-cover transition-transform duration-500 hover:scale-105",
3742
+ optixFlowConfig
3743
+ }
3744
+ )
3745
+ },
3746
+ idx
3747
+ )) })
3748
+ ]
3749
+ },
3750
+ aspect.id
3751
+ ))
3745
3752
  ]
3746
3753
  }
3747
3754
  ) : null,
3748
- /* @__PURE__ */ jsxs("div", { className: cn("relative mt-16 rounded-xl border bg-background p-8 md:p-12", ctaClassName), children: [
3749
- /* @__PURE__ */ jsxs("div", { className: "grid items-center gap-8 md:grid-cols-2", children: [
3750
- /* @__PURE__ */ jsxs("div", { children: [
3751
- ctaHeading && (typeof ctaHeading === "string" ? /* @__PURE__ */ jsx("h3", { className: cn("mb-4 text-2xl font-bold", ctaHeadingClassName), children: ctaHeading }) : /* @__PURE__ */ jsx("div", { className: cn("mb-4", ctaHeadingClassName), children: ctaHeading })),
3752
- ctaDescription && (typeof ctaDescription === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mb-6", getTextColor(background, "muted"), ctaDescriptionClassName), children: ctaDescription }) : /* @__PURE__ */ jsx("div", { className: cn("mb-6", ctaDescriptionClassName), children: ctaDescription })),
3753
- (actionsSlot || actions && actions.length > 0) && /* @__PURE__ */ jsx("div", { className: cn("flex gap-4", actionsClassName), children: actionsContent })
3754
- ] }),
3755
- /* @__PURE__ */ jsx("div", { className: "grid grid-cols-3 gap-2", children: ctaImagesContent })
3756
- ] }),
3757
- /* @__PURE__ */ jsx("div", { className: "absolute -left-5 -top-5 h-10 w-10 rounded-full bg-primary/10" }),
3758
- /* @__PURE__ */ jsx("div", { className: "absolute -bottom-5 -right-5 h-10 w-10 rounded-full bg-primary/10" })
3759
- ] })
3755
+ /* @__PURE__ */ jsxs(
3756
+ "div",
3757
+ {
3758
+ className: cn(
3759
+ "relative mt-16 rounded-xl border p-8 md:p-12",
3760
+ ctaClassName
3761
+ ),
3762
+ children: [
3763
+ /* @__PURE__ */ jsxs("div", { className: "grid items-center gap-8 md:grid-cols-2", children: [
3764
+ /* @__PURE__ */ jsxs("div", { children: [
3765
+ ctaHeading && (typeof ctaHeading === "string" ? /* @__PURE__ */ jsx(
3766
+ "h3",
3767
+ {
3768
+ className: cn("mb-4 text-2xl font-bold", ctaHeadingClassName),
3769
+ children: ctaHeading
3770
+ }
3771
+ ) : ctaHeading),
3772
+ ctaDescription && (typeof ctaDescription === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mb-6", ctaDescriptionClassName), children: ctaDescription }) : ctaDescription),
3773
+ /* @__PURE__ */ jsx(
3774
+ BlockActions,
3775
+ {
3776
+ actions,
3777
+ actionsSlot,
3778
+ actionsClassName
3779
+ }
3780
+ )
3781
+ ] }),
3782
+ /* @__PURE__ */ jsx("div", { className: "grid grid-cols-3 gap-2", children: ctaImagesContent })
3783
+ ] }),
3784
+ /* @__PURE__ */ jsx("div", { className: "absolute -left-5 -top-5 h-10 w-10 rounded-full bg-primary/10" }),
3785
+ /* @__PURE__ */ jsx("div", { className: "absolute -bottom-5 -right-5 h-10 w-10 rounded-full bg-primary/10" })
3786
+ ]
3787
+ }
3788
+ )
3760
3789
  ]
3761
3790
  }
3762
3791
  );
@@ -4434,8 +4463,8 @@ var BrandAttribution = ({
4434
4463
  }
4435
4464
  const { prefix = "", anchorText, href, suffix = "" } = options[optionIndex];
4436
4465
  const ContainerEl = variant;
4437
- const [trackedHref, setTrackedHref] = React23.useState(href);
4438
- React23.useEffect(() => {
4466
+ const [trackedHref, setTrackedHref] = React25.useState(href);
4467
+ React25.useEffect(() => {
4439
4468
  setTrackedHref(buildTrackedHref(href));
4440
4469
  }, [href]);
4441
4470
  return /* @__PURE__ */ jsxs(ContainerEl, { className: containerClassName, children: [
@@ -4578,7 +4607,7 @@ function FooterSocialNewsletter({
4578
4607
  onError,
4579
4608
  uploadTokens
4580
4609
  });
4581
- const renderForm = React23.useMemo(() => {
4610
+ const renderForm = React25.useMemo(() => {
4582
4611
  if (formSlot) return formSlot;
4583
4612
  const defaultButtonAction = {
4584
4613
  label: "Subscribe",
@@ -4912,7 +4941,7 @@ function FooterSimpleCentered({
4912
4941
  ]);
4913
4942
  const bottomLinksContent = useMemo(() => {
4914
4943
  if (!bottomLinks || bottomLinks.length === 0) return null;
4915
- return bottomLinks.map((link, idx) => /* @__PURE__ */ jsx(React23.Fragment, { children: /* @__PURE__ */ jsx(
4944
+ return bottomLinks.map((link, idx) => /* @__PURE__ */ jsx(React25.Fragment, { children: /* @__PURE__ */ jsx(
4916
4945
  Pressable,
4917
4946
  {
4918
4947
  href: link.href,
@@ -7537,7 +7566,7 @@ function AboutInteractiveTabs({
7537
7566
  pattern,
7538
7567
  patternOpacity
7539
7568
  }) {
7540
- const [activeTab, setActiveTab] = React23.useState(tabs?.[0]?.id ?? "");
7569
+ const [activeTab, setActiveTab] = React25.useState(tabs?.[0]?.id ?? "");
7541
7570
  const activeContent = useMemo(() => {
7542
7571
  return tabs?.find((tab) => tab.id === activeTab)?.content;
7543
7572
  }, [tabs, activeTab]);
@@ -11562,7 +11591,7 @@ function CtaVideoBackgroundHero({
11562
11591
  pattern,
11563
11592
  patternOpacity
11564
11593
  }) {
11565
- const [isModalOpen, setIsModalOpen] = React23.useState(false);
11594
+ const [isModalOpen, setIsModalOpen] = React25.useState(false);
11566
11595
  const handleOpenModal = () => {
11567
11596
  setIsModalOpen(true);
11568
11597
  onModalOpen?.();
@@ -11750,7 +11779,7 @@ function CtaWorkflowTabs({
11750
11779
  patternOpacity,
11751
11780
  optixFlowConfig
11752
11781
  }) {
11753
- const [activeTab, setActiveTab] = React23.useState(tabs?.[0]?.id || "");
11782
+ const [activeTab, setActiveTab] = React25.useState(tabs?.[0]?.id || "");
11754
11783
  const activeTabData = tabs?.find((tab) => tab.id === activeTab) || tabs?.[0];
11755
11784
  const actionsContent = useMemo(() => {
11756
11785
  if (actionsSlot) return actionsSlot;
@@ -12363,7 +12392,7 @@ function ContactFloatingBanner({
12363
12392
  pattern,
12364
12393
  patternOpacity
12365
12394
  }) {
12366
- const actionsContent = React23.useMemo(() => {
12395
+ const actionsContent = React25.useMemo(() => {
12367
12396
  if (actionsSlot) return actionsSlot;
12368
12397
  if (actions && actions.length > 0) {
12369
12398
  return actions.map((action, index) => {
@@ -12805,7 +12834,7 @@ function ContactCard({
12805
12834
  onSuccess,
12806
12835
  onError
12807
12836
  });
12808
- const actionsContent = React23.useMemo(() => {
12837
+ const actionsContent = React25.useMemo(() => {
12809
12838
  if (actionsSlot) return actionsSlot;
12810
12839
  if (actions && actions.length > 0) {
12811
12840
  return actions.map((action, index) => {
@@ -13397,7 +13426,7 @@ function ContactCatering({
13397
13426
  onSuccess,
13398
13427
  onError
13399
13428
  });
13400
- const actionsContent = React23.useMemo(() => {
13429
+ const actionsContent = React25.useMemo(() => {
13401
13430
  if (actionsSlot) return actionsSlot;
13402
13431
  if (actions && actions.length > 0) {
13403
13432
  return actions.map((action, index) => {
@@ -13641,7 +13670,7 @@ function ContactConsultation({
13641
13670
  onSuccess,
13642
13671
  onError
13643
13672
  });
13644
- const actionsContent = React23.useMemo(() => {
13673
+ const actionsContent = React25.useMemo(() => {
13645
13674
  if (actionsSlot) return actionsSlot;
13646
13675
  if (actions && actions.length > 0) {
13647
13676
  return actions.map((action, index) => {
@@ -13839,7 +13868,7 @@ function ContactDark({
13839
13868
  resetOnSuccess: formConfig?.resetOnSuccess !== false,
13840
13869
  uploadTokens
13841
13870
  });
13842
- const actionsContent = React23.useMemo(() => {
13871
+ const actionsContent = React25.useMemo(() => {
13843
13872
  if (actionsSlot) return actionsSlot;
13844
13873
  if (actions && actions.length > 0) {
13845
13874
  return actions.map((action, index) => {
@@ -13869,7 +13898,7 @@ function ContactDark({
13869
13898
  }
13870
13899
  return null;
13871
13900
  }, [actionsSlot, actions]);
13872
- const contactOptionsContent = React23.useMemo(() => {
13901
+ const contactOptionsContent = React25.useMemo(() => {
13873
13902
  if (contactOptionsSlot) return contactOptionsSlot;
13874
13903
  if (contactOptions && contactOptions.length > 0) {
13875
13904
  return contactOptions.map((option, key) => /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3", children: [
@@ -13893,7 +13922,7 @@ function ContactDark({
13893
13922
  }
13894
13923
  return null;
13895
13924
  }, [contactOptionsSlot, contactOptions]);
13896
- const socialLinksContent = React23.useMemo(() => {
13925
+ const socialLinksContent = React25.useMemo(() => {
13897
13926
  if (socialLinksSlot) return socialLinksSlot;
13898
13927
  if (socialLinks && socialLinks.length > 0) {
13899
13928
  return socialLinks.map((social, key) => /* @__PURE__ */ jsx(
@@ -14847,6 +14876,14 @@ function AccordionContent({
14847
14876
  }
14848
14877
  );
14849
14878
  }
14879
+ var DEFAULT_STYLE_RULES = {
14880
+ formContainer: "",
14881
+ fieldsContainer: "",
14882
+ fieldClassName: "",
14883
+ formClassName: "space-y-6",
14884
+ successMessageClassName: "text-green-600 dark:text-green-400 mt-4 p-3 rounded-md bg-green-50 dark:bg-green-950/20",
14885
+ errorMessageClassName: "text-red-600 dark:text-red-400 mt-4 p-3 rounded-md bg-red-50 dark:bg-red-950/20"
14886
+ };
14850
14887
  var DEFAULT_FORM_FIELDS11 = [
14851
14888
  {
14852
14889
  name: "name",
@@ -14891,8 +14928,7 @@ function ContactFaq({
14891
14928
  items,
14892
14929
  itemsSlot,
14893
14930
  faqHeading,
14894
- formFields = DEFAULT_FORM_FIELDS11,
14895
- successMessage = "Thank you! Your message has been sent successfully.",
14931
+ formEngineSetup,
14896
14932
  className,
14897
14933
  containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
14898
14934
  headerClassName,
@@ -14901,7 +14937,6 @@ function ContactFaq({
14901
14937
  cardClassName,
14902
14938
  cardContentClassName,
14903
14939
  formHeadingClassName,
14904
- formClassName,
14905
14940
  faqHeadingClassName,
14906
14941
  faqContainerClassName,
14907
14942
  accordionClassName,
@@ -14909,25 +14944,28 @@ function ContactFaq({
14909
14944
  accordionTriggerClassName,
14910
14945
  accordionContentClassName,
14911
14946
  gridClassName,
14912
- successMessageClassName,
14913
- errorMessageClassName,
14914
14947
  background,
14915
14948
  spacing = "py-8 md:py-32",
14916
14949
  pattern,
14917
- patternOpacity,
14918
- formConfig,
14919
- onSubmit,
14920
- onSuccess,
14921
- onError
14950
+ patternOpacity
14922
14951
  }) {
14923
- const {
14924
- uploadTokens,
14925
- uploadProgress,
14926
- isUploading,
14927
- uploadFiles,
14928
- removeFile,
14929
- resetUpload
14930
- } = useFileUpload({ onError });
14952
+ const formStyleRules = React25.useMemo(() => {
14953
+ return {
14954
+ formContainer: formEngineSetup?.formLayoutSettings?.styleRules?.formContainer ?? DEFAULT_STYLE_RULES.formContainer,
14955
+ fieldsContainer: formEngineSetup?.formLayoutSettings?.styleRules?.fieldsContainer ?? DEFAULT_STYLE_RULES.fieldsContainer,
14956
+ fieldClassName: formEngineSetup?.formLayoutSettings?.styleRules?.fieldClassName ?? DEFAULT_STYLE_RULES.fieldClassName,
14957
+ formClassName: formEngineSetup?.formLayoutSettings?.styleRules?.formClassName ?? DEFAULT_STYLE_RULES.formClassName,
14958
+ successMessageClassName: formEngineSetup?.formLayoutSettings?.styleRules?.successMessageClassName ?? DEFAULT_STYLE_RULES.successMessageClassName,
14959
+ errorMessageClassName: formEngineSetup?.formLayoutSettings?.styleRules?.errorMessageClassName ?? DEFAULT_STYLE_RULES.errorMessageClassName
14960
+ };
14961
+ }, [formEngineSetup?.formLayoutSettings?.styleRules]);
14962
+ const formFields = React25.useMemo(() => {
14963
+ if (formEngineSetup && formEngineSetup?.fields && formEngineSetup?.fields?.length > 0) {
14964
+ return formEngineSetup.fields;
14965
+ } else {
14966
+ return DEFAULT_FORM_FIELDS11;
14967
+ }
14968
+ }, [formEngineSetup?.fields]);
14931
14969
  const hasFaqItems = itemsSlot || items && items.length > 0;
14932
14970
  const faqContent = useMemo(() => {
14933
14971
  if (itemsSlot) return itemsSlot;
@@ -15022,40 +15060,25 @@ function ContactFaq({
15022
15060
  children: formHeading
15023
15061
  }
15024
15062
  ) : /* @__PURE__ */ jsx("div", { className: formHeadingClassName, children: formHeading })),
15025
- /* @__PURE__ */ jsx(
15063
+ formEngineSetup ? /* @__PURE__ */ jsx(
15026
15064
  FormEngine,
15027
15065
  {
15028
- api: formConfig,
15029
- fields: formFields,
15066
+ ...formEngineSetup,
15030
15067
  formLayoutSettings: {
15068
+ ...formEngineSetup.formLayoutSettings,
15031
15069
  formLayout: "standard",
15032
15070
  submitButtonSetup: {
15071
+ ...formEngineSetup.formLayoutSettings?.submitButtonSetup,
15033
15072
  submitLabel: /* @__PURE__ */ jsxs(Fragment$1, { children: [
15034
15073
  buttonIcon,
15035
15074
  buttonText
15036
15075
  ] })
15037
15076
  },
15038
- styleRules: {
15039
- formClassName: cn("space-y-6", formClassName),
15040
- successMessageClassName,
15041
- errorMessageClassName
15042
- }
15043
- },
15044
- successMessage,
15045
- onSubmit,
15046
- onSuccess: (data) => {
15047
- resetUpload();
15048
- onSuccess?.(data);
15077
+ styleRules: formStyleRules
15049
15078
  },
15050
- onError,
15051
- resetOnSuccess: formConfig?.resetOnSuccess !== false,
15052
- uploadTokens,
15053
- uploadProgress,
15054
- onFileUpload: uploadFiles,
15055
- onFileRemove: removeFile,
15056
- isUploading
15079
+ fields: formFields
15057
15080
  }
15058
- )
15081
+ ) : null
15059
15082
  ] }) }),
15060
15083
  hasFaqItems && /* @__PURE__ */ jsxs("div", { className: cn("relative", faqContainerClassName), children: [
15061
15084
  faqHeading && (typeof faqHeading === "string" ? /* @__PURE__ */ jsx(
@@ -20718,6 +20741,14 @@ function ContactTenant({
20718
20741
  }
20719
20742
  );
20720
20743
  }
20744
+ var DEFAULT_STYLE_RULES2 = {
20745
+ formContainer: "",
20746
+ fieldsContainer: "",
20747
+ fieldClassName: "",
20748
+ formClassName: "space-y-6",
20749
+ successMessageClassName: "text-green-600 dark:text-green-400 mt-4 p-3 rounded-md bg-green-50 dark:bg-green-950/20",
20750
+ errorMessageClassName: "text-red-600 dark:text-red-400 mt-4 p-3 rounded-md bg-red-50 dark:bg-red-950/20"
20751
+ };
20721
20752
  var DEFAULT_FORM_FIELDS38 = [
20722
20753
  {
20723
20754
  name: "first_name",
@@ -20764,40 +20795,36 @@ var DEFAULT_FORM_FIELDS38 = [
20764
20795
  function ContactVendor({
20765
20796
  heading,
20766
20797
  description,
20767
- buttonText = "Submit",
20768
- buttonIcon,
20769
- actions,
20770
- actionsSlot,
20771
- formFields = DEFAULT_FORM_FIELDS38,
20772
- successMessage = "Thank you! Your message has been sent successfully.",
20773
20798
  className,
20799
+ formEngineSetup,
20774
20800
  containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
20775
20801
  headerClassName,
20776
20802
  headingClassName,
20777
20803
  descriptionClassName,
20778
20804
  cardClassName,
20779
20805
  cardContentClassName,
20780
- formClassName,
20781
- submitClassName,
20782
- successMessageClassName,
20783
- errorMessageClassName,
20784
- background = "white",
20806
+ background,
20785
20807
  spacing = "xl",
20786
20808
  pattern,
20787
- patternOpacity = 0.1,
20788
- formConfig,
20789
- onSubmit,
20790
- onSuccess,
20791
- onError
20809
+ patternOpacity = 0.1
20792
20810
  }) {
20793
- const {
20794
- uploadTokens,
20795
- uploadProgress,
20796
- isUploading,
20797
- uploadFiles,
20798
- removeFile,
20799
- resetUpload
20800
- } = useFileUpload({ onError });
20811
+ const formStyleRules = React25.useMemo(() => {
20812
+ return {
20813
+ formContainer: formEngineSetup?.formLayoutSettings?.styleRules?.formContainer ?? DEFAULT_STYLE_RULES2.formContainer,
20814
+ fieldsContainer: formEngineSetup?.formLayoutSettings?.styleRules?.fieldsContainer ?? DEFAULT_STYLE_RULES2.fieldsContainer,
20815
+ fieldClassName: formEngineSetup?.formLayoutSettings?.styleRules?.fieldClassName ?? DEFAULT_STYLE_RULES2.fieldClassName,
20816
+ formClassName: formEngineSetup?.formLayoutSettings?.styleRules?.formClassName ?? DEFAULT_STYLE_RULES2.formClassName,
20817
+ successMessageClassName: formEngineSetup?.formLayoutSettings?.styleRules?.successMessageClassName ?? DEFAULT_STYLE_RULES2.successMessageClassName,
20818
+ errorMessageClassName: formEngineSetup?.formLayoutSettings?.styleRules?.errorMessageClassName ?? DEFAULT_STYLE_RULES2.errorMessageClassName
20819
+ };
20820
+ }, [formEngineSetup?.formLayoutSettings?.styleRules]);
20821
+ const formFields = React25.useMemo(() => {
20822
+ if (formEngineSetup && formEngineSetup?.fields && formEngineSetup?.fields?.length > 0) {
20823
+ return formEngineSetup.fields;
20824
+ } else {
20825
+ return DEFAULT_FORM_FIELDS38;
20826
+ }
20827
+ }, [formEngineSetup?.fields]);
20801
20828
  return /* @__PURE__ */ jsx(
20802
20829
  Section,
20803
20830
  {
@@ -20818,7 +20845,7 @@ function ContactVendor({
20818
20845
  ),
20819
20846
  children: heading
20820
20847
  }
20821
- ) : /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading })),
20848
+ ) : heading),
20822
20849
  description && (typeof description === "string" ? /* @__PURE__ */ jsx(
20823
20850
  "p",
20824
20851
  {
@@ -20828,42 +20855,19 @@ function ContactVendor({
20828
20855
  ),
20829
20856
  children: description
20830
20857
  }
20831
- ) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description }))
20858
+ ) : description)
20832
20859
  ] }),
20833
- /* @__PURE__ */ jsx(Card, { className: cn("mx-auto max-w-xl", cardClassName), children: /* @__PURE__ */ jsx(CardContent, { className: cn("p-6 lg:p-8", cardContentClassName), children: /* @__PURE__ */ jsx(
20860
+ /* @__PURE__ */ jsx(Card, { className: cn("mx-auto max-w-xl", cardClassName), children: /* @__PURE__ */ jsx(CardContent, { className: cn("p-6 lg:p-8", cardContentClassName), children: formEngineSetup ? /* @__PURE__ */ jsx(
20834
20861
  FormEngine,
20835
20862
  {
20836
- api: formConfig,
20837
- fields: formFields,
20863
+ ...formEngineSetup,
20838
20864
  formLayoutSettings: {
20839
- formLayout: "standard",
20840
- submitButtonSetup: {
20841
- submitLabel: /* @__PURE__ */ jsxs(Fragment$1, { children: [
20842
- buttonIcon,
20843
- buttonText
20844
- ] })
20845
- },
20846
- styleRules: {
20847
- formClassName: cn("space-y-4", formClassName),
20848
- successMessageClassName,
20849
- errorMessageClassName
20850
- }
20865
+ ...formEngineSetup.formLayoutSettings,
20866
+ styleRules: formStyleRules
20851
20867
  },
20852
- successMessage,
20853
- onSubmit,
20854
- onSuccess: (data) => {
20855
- resetUpload();
20856
- onSuccess?.(data);
20857
- },
20858
- onError,
20859
- resetOnSuccess: formConfig?.resetOnSuccess !== false,
20860
- uploadTokens,
20861
- uploadProgress,
20862
- onFileUpload: uploadFiles,
20863
- onFileRemove: removeFile,
20864
- isUploading
20868
+ fields: formFields
20865
20869
  }
20866
- ) }) })
20870
+ ) : null }) })
20867
20871
  ] })
20868
20872
  }
20869
20873
  );
@@ -21630,16 +21634,16 @@ function CarouselAnimatedSections({
21630
21634
  pattern = "diagonalCrossBasic",
21631
21635
  patternOpacity = 0.033
21632
21636
  }) {
21633
- const [currentIndex, setCurrentIndex] = React23.useState(0);
21634
- const [direction, setDirection] = React23.useState(0);
21635
- const [isAnimating, setIsAnimating] = React23.useState(false);
21636
- const goToNext = React23.useCallback(() => {
21637
+ const [currentIndex, setCurrentIndex] = React25.useState(0);
21638
+ const [direction, setDirection] = React25.useState(0);
21639
+ const [isAnimating, setIsAnimating] = React25.useState(false);
21640
+ const goToNext = React25.useCallback(() => {
21637
21641
  if (isAnimating || currentIndex >= (sections?.length ?? 0) - 1) return;
21638
21642
  setIsAnimating(true);
21639
21643
  setDirection(1);
21640
21644
  setCurrentIndex((prev) => prev + 1);
21641
21645
  }, [currentIndex, isAnimating, sections?.length]);
21642
- const goToPrev = React23.useCallback(() => {
21646
+ const goToPrev = React25.useCallback(() => {
21643
21647
  if (isAnimating || currentIndex <= 0) return;
21644
21648
  setIsAnimating(true);
21645
21649
  setDirection(-1);
@@ -21651,7 +21655,7 @@ function CarouselAnimatedSections({
21651
21655
  setDirection(index > currentIndex ? 1 : -1);
21652
21656
  setCurrentIndex(index);
21653
21657
  };
21654
- React23.useEffect(() => {
21658
+ React25.useEffect(() => {
21655
21659
  const handleKeyDown = (e) => {
21656
21660
  if (e.key === "ArrowDown" || e.key === "ArrowRight") {
21657
21661
  goToNext();
@@ -21677,7 +21681,7 @@ function CarouselAnimatedSections({
21677
21681
  })
21678
21682
  };
21679
21683
  const currentSection = sections?.[currentIndex];
21680
- const actionElements = React23.useMemo(() => {
21684
+ const actionElements = React25.useMemo(() => {
21681
21685
  if (actionsSlot) return actionsSlot;
21682
21686
  if (actions && actions.length > 0) {
21683
21687
  return actions.map((action, index) => /* @__PURE__ */ jsxs(
@@ -21925,11 +21929,11 @@ function CarouselAutoProgressSlides({
21925
21929
  pattern,
21926
21930
  patternOpacity
21927
21931
  }) {
21928
- const [currentIndex, setCurrentIndex] = React23.useState(0);
21932
+ const [currentIndex, setCurrentIndex] = React25.useState(0);
21929
21933
  const progress = useMotionValue(100);
21930
- const [direction, setDirection] = React23.useState(1);
21934
+ const [direction, setDirection] = React25.useState(1);
21931
21935
  const clipPath = useMotionTemplate`inset(0 ${progress}% 0 0 round 10px)`;
21932
- React23.useEffect(() => {
21936
+ React25.useEffect(() => {
21933
21937
  const interval = setInterval(() => {
21934
21938
  const currentProgress = progress.get();
21935
21939
  if (currentProgress > 0) {
@@ -22108,22 +22112,22 @@ function CarouselAutoProgressSlides({
22108
22112
  );
22109
22113
  }
22110
22114
  function useDotButton(emblaApi) {
22111
- const [selectedIndex, setSelectedIndex] = React23.useState(0);
22112
- const [scrollSnaps, setScrollSnaps] = React23.useState([]);
22113
- const onDotButtonClick = React23.useCallback(
22115
+ const [selectedIndex, setSelectedIndex] = React25.useState(0);
22116
+ const [scrollSnaps, setScrollSnaps] = React25.useState([]);
22117
+ const onDotButtonClick = React25.useCallback(
22114
22118
  (index) => {
22115
22119
  if (!emblaApi) return;
22116
22120
  emblaApi.scrollTo(index);
22117
22121
  },
22118
22122
  [emblaApi]
22119
22123
  );
22120
- const onInit = React23.useCallback((api) => {
22124
+ const onInit = React25.useCallback((api) => {
22121
22125
  setScrollSnaps(api.scrollSnapList());
22122
22126
  }, []);
22123
- const onSelect = React23.useCallback((api) => {
22127
+ const onSelect = React25.useCallback((api) => {
22124
22128
  setSelectedIndex(api.selectedScrollSnap());
22125
22129
  }, []);
22126
- React23.useEffect(() => {
22130
+ React25.useEffect(() => {
22127
22131
  if (!emblaApi) return;
22128
22132
  onInit(emblaApi);
22129
22133
  onSelect(emblaApi);
@@ -22132,8 +22136,8 @@ function useDotButton(emblaApi) {
22132
22136
  return { selectedIndex, scrollSnaps, onDotButtonClick };
22133
22137
  }
22134
22138
  function useAutoplay(emblaApi) {
22135
- const [autoplayIsPlaying, setAutoplayIsPlaying] = React23.useState(false);
22136
- const onAutoplayButtonClick = React23.useCallback(
22139
+ const [autoplayIsPlaying, setAutoplayIsPlaying] = React25.useState(false);
22140
+ const onAutoplayButtonClick = React25.useCallback(
22137
22141
  (callback) => {
22138
22142
  const autoplay = emblaApi?.plugins()?.autoplay;
22139
22143
  if (!autoplay) return;
@@ -22143,13 +22147,13 @@ function useAutoplay(emblaApi) {
22143
22147
  },
22144
22148
  [emblaApi]
22145
22149
  );
22146
- const toggleAutoplay = React23.useCallback(() => {
22150
+ const toggleAutoplay = React25.useCallback(() => {
22147
22151
  const autoplay = emblaApi?.plugins()?.autoplay;
22148
22152
  if (!autoplay) return;
22149
22153
  const playOrStop = autoplay.isPlaying() ? autoplay.stop : autoplay.play;
22150
22154
  playOrStop();
22151
22155
  }, [emblaApi]);
22152
- React23.useEffect(() => {
22156
+ React25.useEffect(() => {
22153
22157
  const autoplay = emblaApi?.plugins()?.autoplay;
22154
22158
  if (!autoplay) return;
22155
22159
  setAutoplayIsPlaying(autoplay.isPlaying());
@@ -22158,11 +22162,11 @@ function useAutoplay(emblaApi) {
22158
22162
  return { autoplayIsPlaying, toggleAutoplay, onAutoplayButtonClick };
22159
22163
  }
22160
22164
  function useAutoplayProgress(emblaApi, progressNode) {
22161
- const [showAutoplayProgress, setShowAutoplayProgress] = React23.useState(false);
22162
- const animationName = React23.useRef("");
22163
- const timeoutId = React23.useRef(0);
22164
- const rafId = React23.useRef(0);
22165
- const startProgress = React23.useCallback(
22165
+ const [showAutoplayProgress, setShowAutoplayProgress] = React25.useState(false);
22166
+ const animationName = React25.useRef("");
22167
+ const timeoutId = React25.useRef(0);
22168
+ const rafId = React25.useRef(0);
22169
+ const startProgress = React25.useCallback(
22166
22170
  (timeUntilNext) => {
22167
22171
  const node = progressNode.current;
22168
22172
  if (!node || timeUntilNext === null) return;
@@ -22182,12 +22186,12 @@ function useAutoplayProgress(emblaApi, progressNode) {
22182
22186
  },
22183
22187
  [progressNode]
22184
22188
  );
22185
- React23.useEffect(() => {
22189
+ React25.useEffect(() => {
22186
22190
  const autoplay = emblaApi?.plugins()?.autoplay;
22187
22191
  if (!autoplay) return;
22188
22192
  emblaApi.on("autoplay:timerset", () => startProgress(autoplay.timeUntilNext())).on("autoplay:timerstopped", () => setShowAutoplayProgress(false));
22189
22193
  }, [emblaApi, startProgress]);
22190
- React23.useEffect(() => {
22194
+ React25.useEffect(() => {
22191
22195
  return () => {
22192
22196
  cancelAnimationFrame(rafId.current);
22193
22197
  clearTimeout(timeoutId.current);
@@ -22214,7 +22218,7 @@ function CarouselAutoplayProgress({
22214
22218
  pattern,
22215
22219
  patternOpacity
22216
22220
  }) {
22217
- const progressNode = React23.useRef(null);
22221
+ const progressNode = React25.useRef(null);
22218
22222
  const [emblaRef, emblaApi] = useEmblaCarousel(options, [
22219
22223
  Autoplay({ playOnInit: true, delay: autoplayDelay })
22220
22224
  ]);
@@ -22337,20 +22341,20 @@ function CarouselFeatureBadge({
22337
22341
  containerMaxWidth = "2xl"
22338
22342
  }) {
22339
22343
  const [emblaRef, emblaApi] = useEmblaCarousel();
22340
- const [canScrollPrev, setCanScrollPrev] = React23.useState(false);
22341
- const [canScrollNext, setCanScrollNext] = React23.useState(false);
22342
- const scrollPrev = React23.useCallback(() => {
22344
+ const [canScrollPrev, setCanScrollPrev] = React25.useState(false);
22345
+ const [canScrollNext, setCanScrollNext] = React25.useState(false);
22346
+ const scrollPrev = React25.useCallback(() => {
22343
22347
  emblaApi?.scrollPrev();
22344
22348
  }, [emblaApi]);
22345
- const scrollNext = React23.useCallback(() => {
22349
+ const scrollNext = React25.useCallback(() => {
22346
22350
  emblaApi?.scrollNext();
22347
22351
  }, [emblaApi]);
22348
- const onSelect = React23.useCallback(() => {
22352
+ const onSelect = React25.useCallback(() => {
22349
22353
  if (!emblaApi) return;
22350
22354
  setCanScrollPrev(emblaApi.canScrollPrev());
22351
22355
  setCanScrollNext(emblaApi.canScrollNext());
22352
22356
  }, [emblaApi]);
22353
- React23.useEffect(() => {
22357
+ React25.useEffect(() => {
22354
22358
  if (!emblaApi) return;
22355
22359
  onSelect();
22356
22360
  emblaApi.on("reInit", onSelect);
@@ -22470,10 +22474,10 @@ function CarouselFullscreenScrollFx({
22470
22474
  pattern = "diagonalCrossBasic",
22471
22475
  patternOpacity = 0.033
22472
22476
  }) {
22473
- const containerRef = React23.useRef(null);
22474
- const scrollContainerRef = React23.useRef(null);
22475
- const [activeIndex, setActiveIndex] = React23.useState(0);
22476
- React23.useEffect(() => {
22477
+ const containerRef = React25.useRef(null);
22478
+ const scrollContainerRef = React25.useRef(null);
22479
+ const [activeIndex, setActiveIndex] = React25.useState(0);
22480
+ React25.useEffect(() => {
22477
22481
  const scrollContainer = scrollContainerRef.current;
22478
22482
  if (!scrollContainer || !slides?.length) return;
22479
22483
  const handleScroll = () => {
@@ -22485,7 +22489,7 @@ function CarouselFullscreenScrollFx({
22485
22489
  scrollContainer.addEventListener("scroll", handleScroll);
22486
22490
  return () => scrollContainer.removeEventListener("scroll", handleScroll);
22487
22491
  }, [slides]);
22488
- const scrollToSlide = React23.useCallback((index) => {
22492
+ const scrollToSlide = React25.useCallback((index) => {
22489
22493
  const scrollContainer = scrollContainerRef.current;
22490
22494
  if (!scrollContainer) return;
22491
22495
  const slideHeight = scrollContainer.clientHeight;
@@ -22568,7 +22572,7 @@ function CarouselFullscreenScrollFx({
22568
22572
  className: "flex h-screen flex-col snap-y snap-mandatory overflow-x-hidden overflow-y-auto scroll-smooth",
22569
22573
  style: { scrollbarWidth: "none", msOverflowStyle: "none" },
22570
22574
  children: slidesSlot ? slidesSlot : slides?.map((slide, index) => {
22571
- const renderActions = React23.useMemo(() => {
22575
+ const renderActions = React25.useMemo(() => {
22572
22576
  if (!slide.actions || slide.actions.length === 0) return null;
22573
22577
  return slide.actions.map((action, actionIndex) => {
22574
22578
  const {
@@ -22701,25 +22705,25 @@ function CarouselGalleryThumbnails({
22701
22705
  patternOpacity,
22702
22706
  slideMediaBrightness = "100"
22703
22707
  }) {
22704
- const [currentIndex, setCurrentIndex] = React23.useState(0);
22705
- const prevSlide = React23.useCallback(() => {
22708
+ const [currentIndex, setCurrentIndex] = React25.useState(0);
22709
+ const prevSlide = React25.useCallback(() => {
22706
22710
  setCurrentIndex(
22707
22711
  (prev) => prev === 0 ? (images?.length ?? 0) - 1 : prev - 1
22708
22712
  );
22709
22713
  }, [images?.length]);
22710
- const nextSlide = React23.useCallback(() => {
22714
+ const nextSlide = React25.useCallback(() => {
22711
22715
  setCurrentIndex(
22712
22716
  (prev) => prev === (images?.length ?? 0) - 1 ? 0 : prev + 1
22713
22717
  );
22714
22718
  }, [images?.length]);
22715
- React23.useEffect(() => {
22719
+ React25.useEffect(() => {
22716
22720
  if (!autoPlay) return;
22717
22721
  const interval = setInterval(() => {
22718
22722
  nextSlide();
22719
22723
  }, autoPlayInterval);
22720
22724
  return () => clearInterval(interval);
22721
22725
  }, [currentIndex, autoPlay, autoPlayInterval, nextSlide]);
22722
- React23.useEffect(() => {
22726
+ React25.useEffect(() => {
22723
22727
  const handleKeyDown = (e) => {
22724
22728
  if (e.key === "ArrowRight") {
22725
22729
  nextSlide();
@@ -22864,9 +22868,9 @@ function CarouselHorizontalCards({
22864
22868
  pattern,
22865
22869
  patternOpacity
22866
22870
  }) {
22867
- const carouselRef = React23.useRef(null);
22868
- const [isAtStart, setIsAtStart] = React23.useState(true);
22869
- const [isAtEnd, setIsAtEnd] = React23.useState(false);
22871
+ const carouselRef = React25.useRef(null);
22872
+ const [isAtStart, setIsAtStart] = React25.useState(true);
22873
+ const [isAtEnd, setIsAtEnd] = React25.useState(false);
22870
22874
  const scrollLeft = () => {
22871
22875
  if (carouselRef.current) {
22872
22876
  carouselRef.current.scrollBy({ left: -300, behavior: "smooth" });
@@ -22877,7 +22881,7 @@ function CarouselHorizontalCards({
22877
22881
  carouselRef.current.scrollBy({ left: 300, behavior: "smooth" });
22878
22882
  }
22879
22883
  };
22880
- React23.useEffect(() => {
22884
+ React25.useEffect(() => {
22881
22885
  const checkScrollPosition = () => {
22882
22886
  if (carouselRef.current) {
22883
22887
  const { scrollLeft: scrollLeft2, scrollWidth, clientWidth } = carouselRef.current;
@@ -23077,22 +23081,22 @@ function CarouselImageHero({
23077
23081
  pattern,
23078
23082
  patternOpacity
23079
23083
  }) {
23080
- const [currentImageIndex, setCurrentImageIndex] = React23.useState(0);
23081
- const intervalRef = React23.useRef(null);
23082
- const goToNext = React23.useCallback(() => {
23084
+ const [currentImageIndex, setCurrentImageIndex] = React25.useState(0);
23085
+ const intervalRef = React25.useRef(null);
23086
+ const goToNext = React25.useCallback(() => {
23083
23087
  setCurrentImageIndex((prevIndex) => (prevIndex + 1) % (images?.length ?? 1));
23084
23088
  }, [images?.length]);
23085
- const resetInterval = React23.useCallback(() => {
23089
+ const resetInterval = React25.useCallback(() => {
23086
23090
  if (intervalRef.current) {
23087
23091
  clearInterval(intervalRef.current);
23088
23092
  }
23089
23093
  intervalRef.current = setInterval(goToNext, autoPlayInterval);
23090
23094
  }, [goToNext, autoPlayInterval]);
23091
- const goToSlide = React23.useCallback((index) => {
23095
+ const goToSlide = React25.useCallback((index) => {
23092
23096
  setCurrentImageIndex(index);
23093
23097
  resetInterval();
23094
23098
  }, [resetInterval]);
23095
- React23.useEffect(() => {
23099
+ React25.useEffect(() => {
23096
23100
  resetInterval();
23097
23101
  return () => {
23098
23102
  if (intervalRef.current) {
@@ -23265,8 +23269,8 @@ function CarouselMultiStepShowcase({
23265
23269
  pattern,
23266
23270
  patternOpacity
23267
23271
  }) {
23268
- const [activeStep, setActiveStep] = React23.useState(0);
23269
- const [direction, setDirection] = React23.useState(0);
23272
+ const [activeStep, setActiveStep] = React25.useState(0);
23273
+ const [direction, setDirection] = React25.useState(0);
23270
23274
  const goToStep = (index) => {
23271
23275
  setDirection(index > activeStep ? 1 : -1);
23272
23276
  setActiveStep(index);
@@ -23558,9 +23562,9 @@ function CarouselPortfolioHero({
23558
23562
  patternOpacity,
23559
23563
  slideMediaBrightness = "50"
23560
23564
  }) {
23561
- const [currentIndex, setCurrentIndex] = React23.useState(0);
23562
- const intervalRef = React23.useRef(null);
23563
- const resetInterval = React23.useCallback(() => {
23565
+ const [currentIndex, setCurrentIndex] = React25.useState(0);
23566
+ const intervalRef = React25.useRef(null);
23567
+ const resetInterval = React25.useCallback(() => {
23564
23568
  if (intervalRef.current) {
23565
23569
  clearInterval(intervalRef.current);
23566
23570
  }
@@ -23568,17 +23572,17 @@ function CarouselPortfolioHero({
23568
23572
  setCurrentIndex((prevIndex) => (prevIndex + 1) % (slides?.length ?? 1));
23569
23573
  }, autoPlayInterval);
23570
23574
  }, [autoPlayInterval, slides?.length]);
23571
- const goToNext = React23.useCallback(() => {
23575
+ const goToNext = React25.useCallback(() => {
23572
23576
  setCurrentIndex((prevIndex) => (prevIndex + 1) % (slides?.length ?? 1));
23573
23577
  resetInterval();
23574
23578
  }, [slides?.length, resetInterval]);
23575
- const goToPrev = React23.useCallback(() => {
23579
+ const goToPrev = React25.useCallback(() => {
23576
23580
  setCurrentIndex(
23577
23581
  (prevIndex) => (prevIndex - 1 + (slides?.length ?? 1)) % (slides?.length ?? 1)
23578
23582
  );
23579
23583
  resetInterval();
23580
23584
  }, [slides?.length, resetInterval]);
23581
- React23.useEffect(() => {
23585
+ React25.useEffect(() => {
23582
23586
  resetInterval();
23583
23587
  return () => {
23584
23588
  if (intervalRef.current) {
@@ -23770,9 +23774,9 @@ function CarouselProductFeatureShowcase({
23770
23774
  pattern,
23771
23775
  patternOpacity
23772
23776
  }) {
23773
- const [activeIndex, setActiveIndex] = React23.useState(0);
23774
- const [activeColorIndex, setActiveColorIndex] = React23.useState(0);
23775
- const [direction, setDirection] = React23.useState(0);
23777
+ const [activeIndex, setActiveIndex] = React25.useState(0);
23778
+ const [activeColorIndex, setActiveColorIndex] = React25.useState(0);
23779
+ const [direction, setDirection] = React25.useState(0);
23776
23780
  const activeFeature = features?.[activeIndex];
23777
23781
  const goToNext = () => {
23778
23782
  setDirection(1);
@@ -23992,9 +23996,9 @@ function CarouselProductFeatureShowcase({
23992
23996
  }
23993
23997
  );
23994
23998
  }
23995
- var ProgressSliderContext = React23.createContext(void 0);
23999
+ var ProgressSliderContext = React25.createContext(void 0);
23996
24000
  function useProgressSliderContext() {
23997
- const context = React23.useContext(ProgressSliderContext);
24001
+ const context = React25.useContext(ProgressSliderContext);
23998
24002
  if (!context) {
23999
24003
  throw new Error(
24000
24004
  "useProgressSliderContext must be used within a ProgressSlider"
@@ -24080,19 +24084,19 @@ function CarouselProgressSlider({
24080
24084
  pattern,
24081
24085
  patternOpacity
24082
24086
  }) {
24083
- const [active, setActive] = React23.useState(slides?.[0]?.id ?? "");
24084
- const [progress, setProgress] = React23.useState(0);
24085
- const [isFastForward, setIsFastForward] = React23.useState(false);
24086
- const [isPaused, setIsPaused] = React23.useState(false);
24087
- const frame = React23.useRef(0);
24088
- const firstFrameTime = React23.useRef(performance.now());
24089
- const targetValue = React23.useRef(null);
24090
- const pausedProgress = React23.useRef(0);
24091
- const sliderValues = React23.useMemo(
24087
+ const [active, setActive] = React25.useState(slides?.[0]?.id ?? "");
24088
+ const [progress, setProgress] = React25.useState(0);
24089
+ const [isFastForward, setIsFastForward] = React25.useState(false);
24090
+ const [isPaused, setIsPaused] = React25.useState(false);
24091
+ const frame = React25.useRef(0);
24092
+ const firstFrameTime = React25.useRef(performance.now());
24093
+ const targetValue = React25.useRef(null);
24094
+ const pausedProgress = React25.useRef(0);
24095
+ const sliderValues = React25.useMemo(
24092
24096
  () => slides?.map((slide) => slide.id),
24093
24097
  [slides]
24094
24098
  );
24095
- React23.useEffect(() => {
24099
+ React25.useEffect(() => {
24096
24100
  if ((sliderValues?.length ?? 0) > 0 && !isPaused) {
24097
24101
  firstFrameTime.current = performance.now();
24098
24102
  if (pausedProgress.current > 0) {
@@ -24257,11 +24261,11 @@ function CarouselScrollingFeatureShowcase({
24257
24261
  pattern,
24258
24262
  patternOpacity
24259
24263
  }) {
24260
- const [activeFeature, setActiveFeature] = React23.useState(
24264
+ const [activeFeature, setActiveFeature] = React25.useState(
24261
24265
  features?.[0]?.id ?? ""
24262
24266
  );
24263
- const featureRefs = React23.useRef(/* @__PURE__ */ new Map());
24264
- React23.useEffect(() => {
24267
+ const featureRefs = React25.useRef(/* @__PURE__ */ new Map());
24268
+ React25.useEffect(() => {
24265
24269
  if (!features || features.length === 0) return;
24266
24270
  const observerOptions = {
24267
24271
  root: null,
@@ -25186,9 +25190,9 @@ function FeatureChecklistImage({
25186
25190
  }
25187
25191
  );
25188
25192
  }
25189
- var CarouselContext = React23.createContext(null);
25193
+ var CarouselContext = React25.createContext(null);
25190
25194
  function useCarousel() {
25191
- const context = React23.useContext(CarouselContext);
25195
+ const context = React25.useContext(CarouselContext);
25192
25196
  if (!context) {
25193
25197
  throw new Error("useCarousel must be used within a <Carousel />");
25194
25198
  }
@@ -25210,20 +25214,20 @@ function Carousel({
25210
25214
  },
25211
25215
  plugins
25212
25216
  );
25213
- const [canScrollPrev, setCanScrollPrev] = React23.useState(false);
25214
- const [canScrollNext, setCanScrollNext] = React23.useState(false);
25215
- const onSelect = React23.useCallback((api2) => {
25217
+ const [canScrollPrev, setCanScrollPrev] = React25.useState(false);
25218
+ const [canScrollNext, setCanScrollNext] = React25.useState(false);
25219
+ const onSelect = React25.useCallback((api2) => {
25216
25220
  if (!api2) return;
25217
25221
  setCanScrollPrev(api2.canScrollPrev());
25218
25222
  setCanScrollNext(api2.canScrollNext());
25219
25223
  }, []);
25220
- const scrollPrev = React23.useCallback(() => {
25224
+ const scrollPrev = React25.useCallback(() => {
25221
25225
  api?.scrollPrev();
25222
25226
  }, [api]);
25223
- const scrollNext = React23.useCallback(() => {
25227
+ const scrollNext = React25.useCallback(() => {
25224
25228
  api?.scrollNext();
25225
25229
  }, [api]);
25226
- const handleKeyDown = React23.useCallback(
25230
+ const handleKeyDown = React25.useCallback(
25227
25231
  (event) => {
25228
25232
  if (event.key === "ArrowLeft") {
25229
25233
  event.preventDefault();
@@ -25235,11 +25239,11 @@ function Carousel({
25235
25239
  },
25236
25240
  [scrollPrev, scrollNext]
25237
25241
  );
25238
- React23.useEffect(() => {
25242
+ React25.useEffect(() => {
25239
25243
  if (!api || !setApi) return;
25240
25244
  setApi(api);
25241
25245
  }, [api, setApi]);
25242
- React23.useEffect(() => {
25246
+ React25.useEffect(() => {
25243
25247
  if (!api) return;
25244
25248
  onSelect(api);
25245
25249
  api.on("reInit", onSelect);
@@ -26163,7 +26167,7 @@ function FeatureThreeColumnValues({
26163
26167
  patternOpacity,
26164
26168
  patternClassName
26165
26169
  }) {
26166
- const renderValueIcon = React23.useCallback(
26170
+ const renderValueIcon = React25.useCallback(
26167
26171
  (value) => {
26168
26172
  if (value.icon) return value.icon;
26169
26173
  if (value.iconName)
@@ -26665,7 +26669,7 @@ function FeatureTabbedContentImage({
26665
26669
  patternOpacity,
26666
26670
  patternClassName
26667
26671
  }) {
26668
- const renderFeatures = React23.useCallback(
26672
+ const renderFeatures = React25.useCallback(
26669
26673
  (slide) => {
26670
26674
  if (slide.featuresSlot) return slide.featuresSlot;
26671
26675
  if (!slide.features || slide.features.length === 0) return null;
@@ -26689,7 +26693,7 @@ function FeatureTabbedContentImage({
26689
26693
  },
26690
26694
  []
26691
26695
  );
26692
- const renderActions = React23.useCallback(
26696
+ const renderActions = React25.useCallback(
26693
26697
  (slide) => {
26694
26698
  if (slide.actionsSlot) return slide.actionsSlot;
26695
26699
  if (!slide.actions || slide.actions.length === 0) return null;
@@ -26732,7 +26736,7 @@ function FeatureTabbedContentImage({
26732
26736
  },
26733
26737
  []
26734
26738
  );
26735
- const renderImage = React23.useCallback(
26739
+ const renderImage = React25.useCallback(
26736
26740
  (slide) => {
26737
26741
  if (slide.imageSlot) return slide.imageSlot;
26738
26742
  if (!slide.image) return null;
@@ -26968,7 +26972,7 @@ function FeatureUtilityCardsGrid({
26968
26972
  }
26969
26973
  );
26970
26974
  }, [learnMoreSlot, learnMoreAction, background]);
26971
- const renderUtilityImage = React23.useCallback(
26975
+ const renderUtilityImage = React25.useCallback(
26972
26976
  (utility) => {
26973
26977
  if (utility.imageSlot) return utility.imageSlot;
26974
26978
  if (utility.image) {
@@ -27146,7 +27150,7 @@ function FeatureBentoUtilities({
27146
27150
  patternOpacity,
27147
27151
  patternClassName
27148
27152
  }) {
27149
- const renderCard = React23.useCallback(
27153
+ const renderCard = React25.useCallback(
27150
27154
  (card, index) => {
27151
27155
  const hasImage = card.imageSrc || card.imageSlot;
27152
27156
  const cardClasses = cn(
@@ -27202,7 +27206,7 @@ function FeatureBentoUtilities({
27202
27206
  },
27203
27207
  [optixFlowConfig]
27204
27208
  );
27205
- const renderColumn = React23.useCallback(
27209
+ const renderColumn = React25.useCallback(
27206
27210
  (cards, slot) => {
27207
27211
  if (slot) return slot;
27208
27212
  if (!cards || cards.length === 0) return null;
@@ -28448,7 +28452,7 @@ function FeatureBentoImageGrid({
28448
28452
  patternOpacity,
28449
28453
  patternClassName
28450
28454
  }) {
28451
- const renderItemIcon = React23.useCallback(
28455
+ const renderItemIcon = React25.useCallback(
28452
28456
  (item) => {
28453
28457
  if (item.icon) return item.icon;
28454
28458
  if (item.iconName) return /* @__PURE__ */ jsx(DynamicIcon, { name: item.iconName, size: 24 });
@@ -28456,7 +28460,7 @@ function FeatureBentoImageGrid({
28456
28460
  },
28457
28461
  []
28458
28462
  );
28459
- const renderItemImage = React23.useCallback(
28463
+ const renderItemImage = React25.useCallback(
28460
28464
  (item, imageClassName) => {
28461
28465
  if (item.imageSlot) return item.imageSlot;
28462
28466
  if (item.imageSrc) {
@@ -28475,7 +28479,7 @@ function FeatureBentoImageGrid({
28475
28479
  },
28476
28480
  [optixFlowConfig]
28477
28481
  );
28478
- const renderLargeCard = React23.useCallback(
28482
+ const renderLargeCard = React25.useCallback(
28479
28483
  (item) => {
28480
28484
  const iconContent = renderItemIcon(item);
28481
28485
  const hasIconBadgeContent = iconContent || item.iconBadge;
@@ -28563,7 +28567,7 @@ function FeatureBentoImageGrid({
28563
28567
  },
28564
28568
  [largeCardClassName, renderItemImage, renderItemIcon]
28565
28569
  );
28566
- const renderSmallCard = React23.useCallback(
28570
+ const renderSmallCard = React25.useCallback(
28567
28571
  (item, index) => {
28568
28572
  const iconContent = renderItemIcon(item);
28569
28573
  const hasIconBadgeContent = iconContent || item.iconBadge;
@@ -29178,7 +29182,7 @@ function FeatureAccordionImage({
29178
29182
  patternOpacity,
29179
29183
  patternClassName
29180
29184
  }) {
29181
- const [activeItem, setActiveItem] = React23.useState(defaultValue || "item-0");
29185
+ const [activeItem, setActiveItem] = React25.useState(defaultValue || "item-0");
29182
29186
  const activeIndex = parseInt(activeItem.replace("item-", ""), 10) || 0;
29183
29187
  const currentImage = items?.[activeIndex] || items?.[0];
29184
29188
  const accordionItemsContent = useMemo(() => {
@@ -29327,7 +29331,7 @@ function FeatureCapabilitiesGrid({
29327
29331
  patternOpacity,
29328
29332
  patternClassName
29329
29333
  }) {
29330
- const renderItemIcon = React23.useCallback(
29334
+ const renderItemIcon = React25.useCallback(
29331
29335
  (item) => {
29332
29336
  if (item.icon) return item.icon;
29333
29337
  if (item.iconName) return /* @__PURE__ */ jsx(DynamicIcon, { name: item.iconName, size: 20 });
@@ -29479,7 +29483,7 @@ function FeatureCapabilitiesGrid({
29479
29483
  }
29480
29484
  );
29481
29485
  }
29482
- var TeamMemberBackgroundImageCard = React23.forwardRef(
29486
+ var TeamMemberBackgroundImageCard = React25.forwardRef(
29483
29487
  ({ className, imageUrl, imageAlt, children, optixFlowConfig, background, ...props }, ref) => {
29484
29488
  return /* @__PURE__ */ jsxs(
29485
29489
  "div",
@@ -29527,7 +29531,7 @@ function TeamMediaShowcase({
29527
29531
  actionClassName,
29528
29532
  optixFlowConfig
29529
29533
  }) {
29530
- const renderItems = React23.useMemo(() => {
29534
+ const renderItems = React25.useMemo(() => {
29531
29535
  if (itemsSlot) return itemsSlot;
29532
29536
  return items.map((member, idx) => {
29533
29537
  const imageAlt = member.imageAlt || (member.name && typeof member.name === "string" && member.name.trim() !== "" ? member.name : `member-${idx}`);
@@ -29625,7 +29629,7 @@ function TeamSimpleGrid({
29625
29629
  memberNameClassName,
29626
29630
  memberRoleClassName
29627
29631
  }) {
29628
- const renderMembers = React23.useMemo(() => {
29632
+ const renderMembers = React25.useMemo(() => {
29629
29633
  if (membersSlot) return membersSlot;
29630
29634
  if (!members || members.length === 0) return null;
29631
29635
  return members.map((member) => /* @__PURE__ */ jsxs(
@@ -29787,7 +29791,7 @@ function FooterBrandLinksContact({
29787
29791
  linkListClassName,
29788
29792
  linkItemClassName
29789
29793
  ]);
29790
- const contactItemsContent = React23.useMemo(() => {
29794
+ const contactItemsContent = React25.useMemo(() => {
29791
29795
  if (!contactItems || contactItems.length === 0) return null;
29792
29796
  return contactItems.map((item, idx) => /* @__PURE__ */ jsxs(
29793
29797
  "div",
@@ -30145,7 +30149,7 @@ function TeamSocialGrid({
30145
30149
  memberRoleClassName,
30146
30150
  socialLinksClassName
30147
30151
  }) {
30148
- const renderMembers = React23.useMemo(() => {
30152
+ const renderMembers = React25.useMemo(() => {
30149
30153
  if (membersSlot) return membersSlot;
30150
30154
  if (!members || members.length === 0) return null;
30151
30155
  return members.map((member) => /* @__PURE__ */ jsxs(
@@ -30297,7 +30301,7 @@ function TeamGradientCards({
30297
30301
  memberRoleClassName,
30298
30302
  socialLinksClassName
30299
30303
  }) {
30300
- const renderMembers = React23.useMemo(() => {
30304
+ const renderMembers = React25.useMemo(() => {
30301
30305
  if (membersSlot) return membersSlot;
30302
30306
  if (!members || members.length === 0) return null;
30303
30307
  return members.map((member) => /* @__PURE__ */ jsx(
@@ -30453,7 +30457,7 @@ function TeamBioBadges({
30453
30457
  memberBioClassName,
30454
30458
  socialLinksClassName
30455
30459
  }) {
30456
- const renderMembers = React23.useMemo(() => {
30460
+ const renderMembers = React25.useMemo(() => {
30457
30461
  if (membersSlot) return membersSlot;
30458
30462
  if (!members || members.length === 0) return null;
30459
30463
  return members.map((member) => /* @__PURE__ */ jsxs(
@@ -30630,7 +30634,7 @@ function TeamExpertiseCards({
30630
30634
  ctaDescriptionClassName,
30631
30635
  ctaButtonClassName
30632
30636
  }) {
30633
- const renderMembers = React23.useMemo(() => {
30637
+ const renderMembers = React25.useMemo(() => {
30634
30638
  if (membersSlot) return membersSlot;
30635
30639
  if (!members || members.length === 0) return null;
30636
30640
  return members.map((member) => /* @__PURE__ */ jsx(
@@ -30707,7 +30711,7 @@ function TeamExpertiseCards({
30707
30711
  member.id
30708
30712
  ));
30709
30713
  }, [membersSlot, members, background, memberCardClassName, avatarClassName, memberNameClassName, memberRoleClassName, departmentBadgeClassName, memberDescriptionClassName, expertiseClassName]);
30710
- const renderCta = React23.useMemo(() => {
30714
+ const renderCta = React25.useMemo(() => {
30711
30715
  if (ctaSlot) return ctaSlot;
30712
30716
  return /* @__PURE__ */ jsxs(
30713
30717
  "div",
@@ -30823,7 +30827,7 @@ function TeamCompactGrid({
30823
30827
  ctaDescriptionClassName,
30824
30828
  ctaButtonClassName
30825
30829
  }) {
30826
- const renderMembers = React23.useMemo(() => {
30830
+ const renderMembers = React25.useMemo(() => {
30827
30831
  if (membersSlot) return membersSlot;
30828
30832
  if (!members || members.length === 0) return null;
30829
30833
  return members.map((member) => /* @__PURE__ */ jsxs(
@@ -30878,7 +30882,7 @@ function TeamCompactGrid({
30878
30882
  member.id
30879
30883
  ));
30880
30884
  }, [membersSlot, members, background, memberCardClassName, avatarClassName, memberNameClassName, memberRoleClassName, departmentBadgeClassName]);
30881
- const renderCta = React23.useMemo(() => {
30885
+ const renderCta = React25.useMemo(() => {
30882
30886
  if (ctaSlot) return ctaSlot;
30883
30887
  return /* @__PURE__ */ jsxs(
30884
30888
  "div",
@@ -30982,7 +30986,7 @@ function TeamInvestorShowcase({
30982
30986
  investorCompanyClassName,
30983
30987
  optixFlowConfig
30984
30988
  }) {
30985
- const renderInvestors = React23.useMemo(() => {
30989
+ const renderInvestors = React25.useMemo(() => {
30986
30990
  if (investorsSlot) return investorsSlot;
30987
30991
  if (!investors || investors.length === 0) return null;
30988
30992
  return investors.map((investor) => /* @__PURE__ */ jsxs("div", { className: investorCardClassName, children: [
@@ -31056,7 +31060,7 @@ function TeamCarouselExperience({
31056
31060
  memberRoleClassName,
31057
31061
  optixFlowConfig
31058
31062
  }) {
31059
- const renderMembers = React23.useMemo(() => {
31063
+ const renderMembers = React25.useMemo(() => {
31060
31064
  if (membersSlot) return membersSlot;
31061
31065
  if (!members || members.length === 0) return null;
31062
31066
  return members.map((member, idx) => /* @__PURE__ */ jsx(CarouselItem, { className: "max-w-72", children: /* @__PURE__ */ jsxs(
@@ -31206,20 +31210,20 @@ function TeamFilterableSearch({
31206
31210
  emptyStateClassName,
31207
31211
  emptyStateMessage
31208
31212
  }) {
31209
- const [searchQuery, setSearchQuery] = React23.useState("");
31210
- const [selectedDepartment, setSelectedDepartment] = React23.useState("All");
31211
- const departments = React23.useMemo(() => {
31213
+ const [searchQuery, setSearchQuery] = React25.useState("");
31214
+ const [selectedDepartment, setSelectedDepartment] = React25.useState("All");
31215
+ const departments = React25.useMemo(() => {
31212
31216
  const depts = new Set(members.map((m) => m.department));
31213
31217
  return ["All", ...Array.from(depts)];
31214
31218
  }, [members]);
31215
- const filteredMembers = React23.useMemo(() => {
31219
+ const filteredMembers = React25.useMemo(() => {
31216
31220
  return members.filter((member) => {
31217
31221
  const matchesSearch = searchQuery === "" || member.name.toLowerCase().includes(searchQuery.toLowerCase()) || member.role.toLowerCase().includes(searchQuery.toLowerCase()) || member.description.toLowerCase().includes(searchQuery.toLowerCase());
31218
31222
  const matchesDepartment = selectedDepartment === "All" || member.department === selectedDepartment;
31219
31223
  return matchesSearch && matchesDepartment;
31220
31224
  });
31221
31225
  }, [members, searchQuery, selectedDepartment]);
31222
- const renderFilters = React23.useMemo(() => {
31226
+ const renderFilters = React25.useMemo(() => {
31223
31227
  if (filtersSlot) return filtersSlot;
31224
31228
  return /* @__PURE__ */ jsxs(
31225
31229
  "div",
@@ -31274,7 +31278,7 @@ function TeamFilterableSearch({
31274
31278
  selectedDepartment,
31275
31279
  filterButtonClassName
31276
31280
  ]);
31277
- const renderMembers = React23.useMemo(() => {
31281
+ const renderMembers = React25.useMemo(() => {
31278
31282
  if (membersSlot) return membersSlot;
31279
31283
  return filteredMembers.map((member) => /* @__PURE__ */ jsx(
31280
31284
  "div",
@@ -31461,7 +31465,7 @@ function TeamCompactCta({
31461
31465
  memberRoleClassName,
31462
31466
  ctaClassName
31463
31467
  }) {
31464
- const renderMembers = React23.useMemo(() => {
31468
+ const renderMembers = React25.useMemo(() => {
31465
31469
  if (membersSlot) return membersSlot;
31466
31470
  if (!members || members.length === 0) return null;
31467
31471
  return members.map((member) => /* @__PURE__ */ jsxs(
@@ -31489,7 +31493,7 @@ function TeamCompactCta({
31489
31493
  member.id
31490
31494
  ));
31491
31495
  }, [membersSlot, members, memberCardClassName, avatarClassName, memberNameClassName, memberRoleClassName, background]);
31492
- const renderCta = React23.useMemo(() => {
31496
+ const renderCta = React25.useMemo(() => {
31493
31497
  if (ctaSlot) return ctaSlot;
31494
31498
  return /* @__PURE__ */ jsx(
31495
31499
  Pressable,
@@ -31580,7 +31584,7 @@ function TeamHoverHighlight({
31580
31584
  socialLinksClassName,
31581
31585
  optixFlowConfig
31582
31586
  }) {
31583
- const renderMembers = React23.useMemo(() => {
31587
+ const renderMembers = React25.useMemo(() => {
31584
31588
  if (membersSlot) return membersSlot;
31585
31589
  if (!members || members.length === 0) return null;
31586
31590
  return members.map((member) => /* @__PURE__ */ jsxs(
@@ -31729,7 +31733,7 @@ function TeamSocialCards({
31729
31733
  socialLinksClassName,
31730
31734
  optixFlowConfig
31731
31735
  }) {
31732
- const renderMembers = React23.useMemo(() => {
31736
+ const renderMembers = React25.useMemo(() => {
31733
31737
  if (membersSlot) return membersSlot;
31734
31738
  if (!members || members.length === 0) return null;
31735
31739
  return members.map((member) => /* @__PURE__ */ jsx(
@@ -31899,7 +31903,7 @@ function TeamGridAnimated({
31899
31903
  "hsl(var(--muted))",
31900
31904
  "hsl(var(--warning)/0.2)"
31901
31905
  ];
31902
- const renderMembers = React23.useMemo(() => {
31906
+ const renderMembers = React25.useMemo(() => {
31903
31907
  if (membersSlot) return membersSlot;
31904
31908
  if (!members || members.length === 0) return null;
31905
31909
  return members.map((member, index) => /* @__PURE__ */ jsxs(
@@ -31999,7 +32003,7 @@ function TeamGridAnimated({
31999
32003
  memberDesignationClassName,
32000
32004
  socialLinksClassName
32001
32005
  ]);
32002
- const renderSocialLinksMain = React23.useMemo(() => {
32006
+ const renderSocialLinksMain = React25.useMemo(() => {
32003
32007
  if (socialLinksMainSlot) return socialLinksMainSlot;
32004
32008
  if (!socialLinksMain || socialLinksMain.length === 0) return null;
32005
32009
  return /* @__PURE__ */ jsxs("div", { className: "flex w-full items-center justify-center gap-4 py-4 md:justify-center", children: [
@@ -32116,7 +32120,7 @@ function TeamDepartmentSections({
32116
32120
  memberRoleClassName,
32117
32121
  optixFlowConfig
32118
32122
  }) {
32119
- const renderDepartments = React23.useMemo(() => {
32123
+ const renderDepartments = React25.useMemo(() => {
32120
32124
  if (departmentsSlot) return departmentsSlot;
32121
32125
  if (!departments || departments.length === 0) return null;
32122
32126
  return departments.map((department, deptIndex) => /* @__PURE__ */ jsxs(
@@ -32220,7 +32224,7 @@ function TeamAlternatingBios({
32220
32224
  socialLinksClassName,
32221
32225
  optixFlowConfig
32222
32226
  }) {
32223
- const renderMembers = React23.useMemo(() => {
32227
+ const renderMembers = React25.useMemo(() => {
32224
32228
  if (membersSlot) return membersSlot;
32225
32229
  if (!members || members.length === 0) return null;
32226
32230
  return members.map((member, index) => /* @__PURE__ */ jsxs(
@@ -32402,7 +32406,7 @@ function TeamAvatarSocial({
32402
32406
  memberRoleClassName,
32403
32407
  socialLinksClassName
32404
32408
  }) {
32405
- const renderMembers = React23.useMemo(() => {
32409
+ const renderMembers = React25.useMemo(() => {
32406
32410
  if (membersSlot) return membersSlot;
32407
32411
  if (!members || members.length === 0) return null;
32408
32412
  return members.map((member) => /* @__PURE__ */ jsxs(
@@ -32545,7 +32549,7 @@ function TeamHoverOverlay({
32545
32549
  socialLinksClassName,
32546
32550
  optixFlowConfig
32547
32551
  }) {
32548
- const renderMembers = React23.useMemo(() => {
32552
+ const renderMembers = React25.useMemo(() => {
32549
32553
  if (membersSlot) return membersSlot;
32550
32554
  if (!members || members.length === 0) return null;
32551
32555
  return members.map((member) => /* @__PURE__ */ jsx(
@@ -32721,14 +32725,14 @@ function TeamRoleFilter({
32721
32725
  socialLinksClassName,
32722
32726
  optixFlowConfig
32723
32727
  }) {
32724
- const [selectedRole, setSelectedRole] = React23.useState("All");
32725
- const filteredMembers = React23.useMemo(() => {
32728
+ const [selectedRole, setSelectedRole] = React25.useState("All");
32729
+ const filteredMembers = React25.useMemo(() => {
32726
32730
  if (!members) return [];
32727
32731
  return members.filter(
32728
32732
  (member) => selectedRole === "All" ? true : member.role === selectedRole
32729
32733
  );
32730
32734
  }, [members, selectedRole]);
32731
- const renderRoles = React23.useMemo(() => {
32735
+ const renderRoles = React25.useMemo(() => {
32732
32736
  if (rolesSlot) return rolesSlot;
32733
32737
  if (!roles) return null;
32734
32738
  return /* @__PURE__ */ jsx(
@@ -32752,7 +32756,7 @@ function TeamRoleFilter({
32752
32756
  }
32753
32757
  );
32754
32758
  }, [rolesSlot, filtersClassName, roles, selectedRole, filterButtonClassName]);
32755
- const renderMembers = React23.useMemo(() => {
32759
+ const renderMembers = React25.useMemo(() => {
32756
32760
  if (membersSlot) return membersSlot;
32757
32761
  return filteredMembers.map((member) => /* @__PURE__ */ jsx(
32758
32762
  Card,
@@ -32912,7 +32916,7 @@ function TeamContactCards({
32912
32916
  socialLinksClassName,
32913
32917
  optixFlowConfig
32914
32918
  }) {
32915
- const getStatusColor = React23.useCallback((status) => {
32919
+ const getStatusColor = React25.useCallback((status) => {
32916
32920
  switch (status) {
32917
32921
  case "active":
32918
32922
  return "bg-success";
@@ -32922,7 +32926,7 @@ function TeamContactCards({
32922
32926
  return getTextColor(background, "muted");
32923
32927
  }
32924
32928
  }, [background]);
32925
- const renderMembers = React23.useMemo(() => {
32929
+ const renderMembers = React25.useMemo(() => {
32926
32930
  if (membersSlot) return membersSlot;
32927
32931
  if (!members || members.length === 0) return null;
32928
32932
  return members.map((member) => /* @__PURE__ */ jsx(Card, { className: cn("p-0", memberCardClassName), children: /* @__PURE__ */ jsxs(CardContent, { className: "p-6!", children: [
@@ -33129,7 +33133,7 @@ function TeamLargeImages({
33129
33133
  socialLinksClassName,
33130
33134
  optixFlowConfig
33131
33135
  }) {
33132
- const renderMembers = React23.useMemo(() => {
33136
+ const renderMembers = React25.useMemo(() => {
33133
33137
  if (membersSlot) return membersSlot;
33134
33138
  if (!members || members.length === 0) return null;
33135
33139
  return members.map((member) => /* @__PURE__ */ jsxs(
@@ -33304,7 +33308,7 @@ function TeamSkillBadges({
33304
33308
  socialLinksClassName,
33305
33309
  optixFlowConfig
33306
33310
  }) {
33307
- const renderMembers = React23.useMemo(() => {
33311
+ const renderMembers = React25.useMemo(() => {
33308
33312
  if (membersSlot) return membersSlot;
33309
33313
  if (!members || members.length === 0) return null;
33310
33314
  return members.map((member) => /* @__PURE__ */ jsx(
@@ -33494,7 +33498,7 @@ function TeamTestimonialStats({
33494
33498
  socialLinksClassName,
33495
33499
  optixFlowConfig
33496
33500
  }) {
33497
- const renderMembers = React23.useMemo(() => {
33501
+ const renderMembers = React25.useMemo(() => {
33498
33502
  if (membersSlot) return membersSlot;
33499
33503
  if (!members || members.length === 0) return null;
33500
33504
  return members.map((member) => /* @__PURE__ */ jsx(
@@ -37638,7 +37642,7 @@ function BlogGridAuthorCardsComponent({
37638
37642
  pattern,
37639
37643
  patternOpacity
37640
37644
  }) {
37641
- const viewAllActionContent = React23.useMemo(() => {
37645
+ const viewAllActionContent = React25.useMemo(() => {
37642
37646
  if (viewAllSlot) return viewAllSlot;
37643
37647
  if (!viewAllAction) return null;
37644
37648
  const {
@@ -37663,7 +37667,7 @@ function BlogGridAuthorCardsComponent({
37663
37667
  }
37664
37668
  );
37665
37669
  }, [viewAllSlot, viewAllAction]);
37666
- const postsContent = React23.useMemo(() => {
37670
+ const postsContent = React25.useMemo(() => {
37667
37671
  if (postsSlot) return postsSlot;
37668
37672
  if (!posts || posts.length === 0) return null;
37669
37673
  return posts.map((post) => {
@@ -37775,7 +37779,7 @@ function BlogCardsTaglineCta({
37775
37779
  pattern,
37776
37780
  patternOpacity
37777
37781
  }) {
37778
- const ctaActionContent = React23.useMemo(() => {
37782
+ const ctaActionContent = React25.useMemo(() => {
37779
37783
  if (ctaSlot) return ctaSlot;
37780
37784
  if (!ctaAction) return null;
37781
37785
  const {
@@ -37803,7 +37807,7 @@ function BlogCardsTaglineCta({
37803
37807
  }
37804
37808
  );
37805
37809
  }, [ctaSlot, ctaAction, ctaClassName]);
37806
- const postsContent = React23.useMemo(() => {
37810
+ const postsContent = React25.useMemo(() => {
37807
37811
  if (postsSlot) return postsSlot;
37808
37812
  if (!posts || posts.length === 0) return null;
37809
37813
  return posts.map((post) => {
@@ -37949,7 +37953,7 @@ function BlogCardsReadTime({
37949
37953
  pattern,
37950
37954
  patternOpacity
37951
37955
  }) {
37952
- const renderedViewAllAction = React23.useMemo(() => {
37956
+ const renderedViewAllAction = React25.useMemo(() => {
37953
37957
  if (viewAllSlot) return viewAllSlot;
37954
37958
  if (!viewAllAction) return null;
37955
37959
  const {
@@ -37966,7 +37970,7 @@ function BlogCardsReadTime({
37966
37970
  iconAfter
37967
37971
  ] }) });
37968
37972
  }, [viewAllSlot, viewAllAction]);
37969
- const renderedPosts = React23.useMemo(() => {
37973
+ const renderedPosts = React25.useMemo(() => {
37970
37974
  if (postsSlot) return postsSlot;
37971
37975
  if (!posts || posts.length === 0) return null;
37972
37976
  return posts.map((post) => {
@@ -38103,7 +38107,7 @@ function BlogCategoryOverlay({
38103
38107
  pattern,
38104
38108
  patternOpacity
38105
38109
  }) {
38106
- const viewAllActionContent = React23.useMemo(() => {
38110
+ const viewAllActionContent = React25.useMemo(() => {
38107
38111
  if (viewAllSlot) return viewAllSlot;
38108
38112
  if (!viewAllAction) return null;
38109
38113
  const {
@@ -38131,7 +38135,7 @@ function BlogCategoryOverlay({
38131
38135
  }
38132
38136
  );
38133
38137
  }, [viewAllSlot, viewAllAction, viewAllClassName]);
38134
- const postsContent = React23.useMemo(() => {
38138
+ const postsContent = React25.useMemo(() => {
38135
38139
  if (postsSlot) return postsSlot;
38136
38140
  if (!posts || posts.length === 0) return null;
38137
38141
  return posts.map((post) => {
@@ -38279,7 +38283,7 @@ function BlogFeaturedPopular({
38279
38283
  }) {
38280
38284
  const featuredPost = posts?.[0];
38281
38285
  const popularPosts = posts?.slice(1);
38282
- const renderedFeaturedPost = React23.useMemo(() => {
38286
+ const renderedFeaturedPost = React25.useMemo(() => {
38283
38287
  if (featuredSlot) return featuredSlot;
38284
38288
  if (!featuredPost) return null;
38285
38289
  const postHref = featuredPost.href || featuredPost.url || featuredPost.link;
@@ -38331,7 +38335,7 @@ function BlogFeaturedPopular({
38331
38335
  featuredContentClassName,
38332
38336
  optixFlowConfig
38333
38337
  ]);
38334
- const renderedPopularPosts = React23.useMemo(() => {
38338
+ const renderedPopularPosts = React25.useMemo(() => {
38335
38339
  if (postsSlot) return postsSlot;
38336
38340
  if (!popularPosts || popularPosts.length === 0) return null;
38337
38341
  return popularPosts.map((post) => {
@@ -38448,7 +38452,7 @@ function BlogRelatedArticles({
38448
38452
  pattern,
38449
38453
  patternOpacity
38450
38454
  }) {
38451
- const renderedSeeAllAction = React23.useMemo(() => {
38455
+ const renderedSeeAllAction = React25.useMemo(() => {
38452
38456
  if (seeAllSlot) return seeAllSlot;
38453
38457
  if (!seeAllAction) return null;
38454
38458
  const {
@@ -38477,7 +38481,7 @@ function BlogRelatedArticles({
38477
38481
  }
38478
38482
  );
38479
38483
  }, [seeAllSlot, seeAllAction, seeAllClassName]);
38480
- const renderedArticles = React23.useMemo(() => {
38484
+ const renderedArticles = React25.useMemo(() => {
38481
38485
  if (articlesSlot) return articlesSlot;
38482
38486
  if (!articles || articles.length === 0) return null;
38483
38487
  return articles.map((item) => {
@@ -38785,7 +38789,7 @@ function BlogHorizontalCards({
38785
38789
  pattern,
38786
38790
  patternOpacity
38787
38791
  }) {
38788
- const ctaContent = React23.useMemo(() => {
38792
+ const ctaContent = React25.useMemo(() => {
38789
38793
  if (ctaSlot) return ctaSlot;
38790
38794
  if (!ctaAction) return null;
38791
38795
  const {
@@ -38810,7 +38814,7 @@ function BlogHorizontalCards({
38810
38814
  }
38811
38815
  );
38812
38816
  }, [ctaSlot, ctaAction]);
38813
- const postsContent = React23.useMemo(() => {
38817
+ const postsContent = React25.useMemo(() => {
38814
38818
  if (postsSlot) return postsSlot;
38815
38819
  if (!posts || posts.length === 0) return null;
38816
38820
  return posts.map((post) => {
@@ -39032,7 +39036,7 @@ function Label({
39032
39036
  );
39033
39037
  }
39034
39038
  var POSTS_PER_PAGE = 6;
39035
- var BlogCard = React23.memo(function BlogCard2({
39039
+ var BlogCard = React25.memo(function BlogCard2({
39036
39040
  post,
39037
39041
  optixFlowConfig,
39038
39042
  className
@@ -39071,7 +39075,7 @@ var BlogCard = React23.memo(function BlogCard2({
39071
39075
  ] })
39072
39076
  ] }) });
39073
39077
  });
39074
- var FilterForm = React23.memo(function FilterForm2({
39078
+ var FilterForm = React25.memo(function FilterForm2({
39075
39079
  categories,
39076
39080
  selectedCategories,
39077
39081
  onCategoryChange,
@@ -39104,7 +39108,7 @@ var FilterForm = React23.memo(function FilterForm2({
39104
39108
  }
39105
39109
  );
39106
39110
  });
39107
- var BreadcrumbBlog = React23.memo(function BreadcrumbBlog2({
39111
+ var BreadcrumbBlog = React25.memo(function BreadcrumbBlog2({
39108
39112
  breadcrumb
39109
39113
  }) {
39110
39114
  return /* @__PURE__ */ jsx(Breadcrumb, { children: /* @__PURE__ */ jsx(BreadcrumbList, { children: breadcrumb.map((item, i) => {
@@ -39186,12 +39190,12 @@ function BlogFilteredResultsComponent({
39186
39190
  }, [posts, selectedCategories]);
39187
39191
  const postsToDisplay = filteredPosts.length > 0 ? filteredPosts : posts || [];
39188
39192
  const hasMore = visibleCount < postsToDisplay.length;
39189
- const breadcrumbContent = React23.useMemo(() => {
39193
+ const breadcrumbContent = React25.useMemo(() => {
39190
39194
  if (breadcrumbSlot) return breadcrumbSlot;
39191
39195
  if (!breadcrumb || breadcrumb.length === 0) return null;
39192
39196
  return /* @__PURE__ */ jsx(BreadcrumbBlog, { breadcrumb });
39193
39197
  }, [breadcrumbSlot, breadcrumb]);
39194
- const primaryPostContent = React23.useMemo(() => {
39198
+ const primaryPostContent = React25.useMemo(() => {
39195
39199
  if (primaryPostSlot) return primaryPostSlot;
39196
39200
  if (!primaryPost) return null;
39197
39201
  return /* @__PURE__ */ jsx(
@@ -39203,7 +39207,7 @@ function BlogFilteredResultsComponent({
39203
39207
  }
39204
39208
  );
39205
39209
  }, [primaryPostSlot, primaryPost, optixFlowConfig, postCardClassName]);
39206
- const categoriesContent = React23.useMemo(() => {
39210
+ const categoriesContent = React25.useMemo(() => {
39207
39211
  if (categoriesSlot) return categoriesSlot;
39208
39212
  if (!categories || categories.length === 0) return null;
39209
39213
  return /* @__PURE__ */ jsx(
@@ -39222,7 +39226,7 @@ function BlogFilteredResultsComponent({
39222
39226
  handleCategoryChange,
39223
39227
  categoriesClassName
39224
39228
  ]);
39225
- const postsContent = React23.useMemo(() => {
39229
+ const postsContent = React25.useMemo(() => {
39226
39230
  if (postsSlot) return postsSlot;
39227
39231
  return postsToDisplay.slice(0, visibleCount).map((post) => {
39228
39232
  const postKey = post.id || String(post.title) || Math.random().toString();
@@ -39243,7 +39247,7 @@ function BlogFilteredResultsComponent({
39243
39247
  optixFlowConfig,
39244
39248
  postCardClassName
39245
39249
  ]);
39246
- const loadMoreContent = React23.useMemo(() => {
39250
+ const loadMoreContent = React25.useMemo(() => {
39247
39251
  if (loadMoreSlot) return loadMoreSlot;
39248
39252
  if (!loadMoreAction || !hasMore) return null;
39249
39253
  const {
@@ -39369,7 +39373,7 @@ function BlogMasonryFeaturedComponent({
39369
39373
  }) {
39370
39374
  const featuredPost = posts?.[0];
39371
39375
  const otherPosts = posts?.slice(1);
39372
- const featuredPostContent = React23.useMemo(() => {
39376
+ const featuredPostContent = React25.useMemo(() => {
39373
39377
  if (featuredSlot) return featuredSlot;
39374
39378
  if (!featuredPost) return null;
39375
39379
  const postHref = featuredPost.href || featuredPost.url || featuredPost.link || "#";
@@ -39419,7 +39423,7 @@ function BlogMasonryFeaturedComponent({
39419
39423
  featuredImageClassName,
39420
39424
  optixFlowConfig
39421
39425
  ]);
39422
- const otherPostsContent = React23.useMemo(() => {
39426
+ const otherPostsContent = React25.useMemo(() => {
39423
39427
  if (postsSlot) return postsSlot;
39424
39428
  if (!otherPosts || otherPosts.length === 0) return null;
39425
39429
  return otherPosts.map((post) => {
@@ -39508,7 +39512,7 @@ function BlogHorizontalTimelineComponent({
39508
39512
  pattern,
39509
39513
  patternOpacity
39510
39514
  }) {
39511
- const renderPosts = React23.useMemo(() => {
39515
+ const renderPosts = React25.useMemo(() => {
39512
39516
  if (postsSlot) return postsSlot;
39513
39517
  if (!posts || posts.length === 0) return null;
39514
39518
  return posts.map((post, index) => {
@@ -39633,7 +39637,7 @@ function BlogGridNinePosts({
39633
39637
  pattern,
39634
39638
  patternOpacity
39635
39639
  }) {
39636
- const renderedCtaAction = React23.useMemo(() => {
39640
+ const renderedCtaAction = React25.useMemo(() => {
39637
39641
  if (ctaSlot) return ctaSlot;
39638
39642
  if (!ctaAction) return null;
39639
39643
  const {
@@ -39658,7 +39662,7 @@ function BlogGridNinePosts({
39658
39662
  }
39659
39663
  );
39660
39664
  }, [ctaSlot, ctaAction]);
39661
- const renderedPosts = React23.useMemo(() => {
39665
+ const renderedPosts = React25.useMemo(() => {
39662
39666
  if (postsSlot) return postsSlot;
39663
39667
  if (!posts || posts.length === 0) return null;
39664
39668
  return posts.map((post) => {
@@ -39756,9 +39760,9 @@ var AppleCarousel = ({
39756
39760
  className,
39757
39761
  containerClassName
39758
39762
  }) => {
39759
- const carouselRef = React23__default.useRef(null);
39760
- const [canScrollLeft, setCanScrollLeft] = React23__default.useState(false);
39761
- const [canScrollRight, setCanScrollRight] = React23__default.useState(true);
39763
+ const carouselRef = React25__default.useRef(null);
39764
+ const [canScrollLeft, setCanScrollLeft] = React25__default.useState(false);
39765
+ const [canScrollRight, setCanScrollRight] = React25__default.useState(true);
39762
39766
  const [currentIndex, setCurrentIndex] = useState(0);
39763
39767
  useEffect(() => {
39764
39768
  if (carouselRef.current) {
@@ -39995,7 +39999,7 @@ function BlogCarouselAppleComponent({
39995
39999
  containerClassName,
39996
40000
  cardClassName
39997
40001
  }) {
39998
- const carouselCards = React23.useMemo(() => {
40002
+ const carouselCards = React25.useMemo(() => {
39999
40003
  if (!posts || posts.length === 0) return [];
40000
40004
  return posts.map(
40001
40005
  (post, idx) => ({
@@ -40007,7 +40011,7 @@ function BlogCarouselAppleComponent({
40007
40011
  })
40008
40012
  );
40009
40013
  }, [posts]);
40010
- const cardElements = React23.useMemo(() => {
40014
+ const cardElements = React25.useMemo(() => {
40011
40015
  if (!posts || posts.length === 0) return [];
40012
40016
  return carouselCards.map((card, index) => {
40013
40017
  const post = posts[index];
@@ -40092,7 +40096,7 @@ function ArticleHeroProseComponent({
40092
40096
  description,
40093
40097
  authorImage
40094
40098
  } = post ?? {};
40095
- const authorContent = React23.useMemo(() => {
40099
+ const authorContent = React25.useMemo(() => {
40096
40100
  if (authorSlot) return authorSlot;
40097
40101
  if (!authorName) return null;
40098
40102
  return /* @__PURE__ */ jsxs(
@@ -40126,7 +40130,7 @@ function ArticleHeroProseComponent({
40126
40130
  dateFormat,
40127
40131
  authorClassName
40128
40132
  ]);
40129
- const heroMediaContent = React23.useMemo(() => {
40133
+ const heroMediaContent = React25.useMemo(() => {
40130
40134
  if (heroMediaSlot) return heroMediaSlot;
40131
40135
  if (!image) return null;
40132
40136
  return /* @__PURE__ */ jsx(
@@ -40227,7 +40231,7 @@ function ArticleSidebarStickyComponent({
40227
40231
  pattern,
40228
40232
  patternOpacity
40229
40233
  }) {
40230
- const backLinkContent = React23.useMemo(() => {
40234
+ const backLinkContent = React25.useMemo(() => {
40231
40235
  if (backLinkSlot) return backLinkSlot;
40232
40236
  if (!backHref && !backText) return null;
40233
40237
  return /* @__PURE__ */ jsxs(
@@ -40245,7 +40249,7 @@ function ArticleSidebarStickyComponent({
40245
40249
  }
40246
40250
  );
40247
40251
  }, [backLinkSlot, backHref, backText, backIcon, backLinkClassName]);
40248
- const renderAuthor = React23.useCallback(
40252
+ const renderAuthor = React25.useCallback(
40249
40253
  (isMobile = false) => {
40250
40254
  if (authorSlot) return authorSlot;
40251
40255
  if (!authorName) return null;
@@ -40277,7 +40281,7 @@ function ArticleSidebarStickyComponent({
40277
40281
  authorClassName
40278
40282
  ]
40279
40283
  );
40280
- const heroMediaContent = React23.useMemo(() => {
40284
+ const heroMediaContent = React25.useMemo(() => {
40281
40285
  if (heroMediaSlot) return heroMediaSlot;
40282
40286
  if (!heroImageSrc) return null;
40283
40287
  return /* @__PURE__ */ jsx(
@@ -40384,10 +40388,10 @@ function ArticleTocSidebarComponent({
40384
40388
  patternOpacity
40385
40389
  }) {
40386
40390
  const ctaActions = ctaActionsProp ?? (ctaButtonText ? [{ label: ctaButtonText, href: ctaButtonHref || "#", variant: "default", className: "w-full" }] : []);
40387
- const [activeSection, setActiveSection] = React23.useState(
40391
+ const [activeSection, setActiveSection] = React25.useState(
40388
40392
  sections?.[0]?.id || ""
40389
40393
  );
40390
- React23.useEffect(() => {
40394
+ React25.useEffect(() => {
40391
40395
  if (!enableTocTracking || !sections || sections.length === 0) return;
40392
40396
  const observer = new IntersectionObserver(
40393
40397
  (entries) => {
@@ -40405,12 +40409,12 @@ function ArticleTocSidebarComponent({
40405
40409
  });
40406
40410
  return () => observer.disconnect();
40407
40411
  }, [sections, enableTocTracking]);
40408
- const categoryContent = React23.useMemo(() => {
40412
+ const categoryContent = React25.useMemo(() => {
40409
40413
  if (categorySlot) return categorySlot;
40410
40414
  if (!category) return null;
40411
40415
  return /* @__PURE__ */ jsx(Badge, { variant: "secondary", children: category });
40412
40416
  }, [categorySlot, category]);
40413
- const authorContent = React23.useMemo(() => {
40417
+ const authorContent = React25.useMemo(() => {
40414
40418
  if (authorSlot) return authorSlot;
40415
40419
  if (!authorName) return null;
40416
40420
  return /* @__PURE__ */ jsxs("div", { className: cn("mt-6 flex items-center gap-4", authorClassName), children: [
@@ -40430,7 +40434,7 @@ function ArticleTocSidebarComponent({
40430
40434
  ] })
40431
40435
  ] });
40432
40436
  }, [authorSlot, authorName, authorImage, authorHref, publishDate, readTime, authorClassName]);
40433
- const heroMediaContent = React23.useMemo(() => {
40437
+ const heroMediaContent = React25.useMemo(() => {
40434
40438
  if (heroMediaSlot) return heroMediaSlot;
40435
40439
  if (!heroImageSrc) return null;
40436
40440
  return /* @__PURE__ */ jsx(
@@ -40443,7 +40447,7 @@ function ArticleTocSidebarComponent({
40443
40447
  }
40444
40448
  );
40445
40449
  }, [heroMediaSlot, heroImageSrc, heroImageAlt, heroImageClassName, optixFlowConfig]);
40446
- const tocContent = React23.useMemo(() => {
40450
+ const tocContent = React25.useMemo(() => {
40447
40451
  if (tocSlot) return tocSlot;
40448
40452
  if (!sections || sections.length === 0) return null;
40449
40453
  return /* @__PURE__ */ jsxs("div", { className: cn("rounded-lg border p-4", tocClassName), children: [
@@ -40451,7 +40455,7 @@ function ArticleTocSidebarComponent({
40451
40455
  /* @__PURE__ */ jsx("nav", { className: "space-y-2", children: sections.map((section) => {
40452
40456
  const isActive = activeSection === section.id;
40453
40457
  if (renderSectionLink) {
40454
- return /* @__PURE__ */ jsx(React23.Fragment, { children: renderSectionLink(section, isActive) }, section.id);
40458
+ return /* @__PURE__ */ jsx(React25.Fragment, { children: renderSectionLink(section, isActive) }, section.id);
40455
40459
  }
40456
40460
  return /* @__PURE__ */ jsx(
40457
40461
  Pressable,
@@ -40468,7 +40472,7 @@ function ArticleTocSidebarComponent({
40468
40472
  }) })
40469
40473
  ] });
40470
40474
  }, [tocSlot, sections, activeSection, renderSectionLink, tocClassName]);
40471
- const ctaContent = React23.useMemo(() => {
40475
+ const ctaContent = React25.useMemo(() => {
40472
40476
  if (ctaSlot) return ctaSlot;
40473
40477
  if (!ctaTitle && !ctaDescription && (!ctaActions || ctaActions.length === 0)) return null;
40474
40478
  return /* @__PURE__ */ jsxs("div", { className: cn("rounded-lg border p-4", getNestedCardBg(background, "subtle"), getNestedCardTextColor(background), ctaClassName), children: [
@@ -40557,11 +40561,11 @@ function ArticleBreadcrumbSocialComponent({
40557
40561
  patternOpacity
40558
40562
  }) {
40559
40563
  const author = authorProp ?? (authorName ? { name: authorName, image: authorImage, role: authorRole } : void 0);
40560
- const [activeSection, setActiveSection] = React23.useState(
40564
+ const [activeSection, setActiveSection] = React25.useState(
40561
40565
  sections?.[0]?.id || ""
40562
40566
  );
40563
- const [showBackToTop, setShowBackToTop] = React23.useState(false);
40564
- React23.useEffect(() => {
40567
+ const [showBackToTop, setShowBackToTop] = React25.useState(false);
40568
+ React25.useEffect(() => {
40565
40569
  if (!enableTocTracking || !sections || sections.length === 0) return;
40566
40570
  const observer = new IntersectionObserver(
40567
40571
  (entries) => {
@@ -40579,7 +40583,7 @@ function ArticleBreadcrumbSocialComponent({
40579
40583
  });
40580
40584
  return () => observer.disconnect();
40581
40585
  }, [sections, enableTocTracking]);
40582
- React23.useEffect(() => {
40586
+ React25.useEffect(() => {
40583
40587
  if (!enableBackToTop) return;
40584
40588
  const handleScroll = () => {
40585
40589
  setShowBackToTop(window.scrollY > 400);
@@ -40587,15 +40591,15 @@ function ArticleBreadcrumbSocialComponent({
40587
40591
  window.addEventListener("scroll", handleScroll);
40588
40592
  return () => window.removeEventListener("scroll", handleScroll);
40589
40593
  }, [enableBackToTop]);
40590
- const scrollToTop = React23.useCallback(() => {
40594
+ const scrollToTop = React25.useCallback(() => {
40591
40595
  window.scrollTo({ top: 0, behavior: "smooth" });
40592
40596
  }, []);
40593
- const breadcrumbsContent = React23.useMemo(() => {
40597
+ const breadcrumbsContent = React25.useMemo(() => {
40594
40598
  if (breadcrumbsSlot) return breadcrumbsSlot;
40595
40599
  if (!breadcrumbs || breadcrumbs.length === 0) return null;
40596
40600
  return /* @__PURE__ */ jsx(Breadcrumb, { className: cn("mb-8", breadcrumbClassName), children: /* @__PURE__ */ jsxs(BreadcrumbList, { children: [
40597
40601
  /* @__PURE__ */ jsx(BreadcrumbItem, { children: /* @__PURE__ */ jsx(BreadcrumbLink, { asChild: true, children: /* @__PURE__ */ jsx(Pressable, { href: "#", children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/home", size: 16 }) }) }) }),
40598
- breadcrumbs.map((crumb, index) => /* @__PURE__ */ jsxs(React23.Fragment, { children: [
40602
+ breadcrumbs.map((crumb, index) => /* @__PURE__ */ jsxs(React25.Fragment, { children: [
40599
40603
  /* @__PURE__ */ jsx(BreadcrumbSeparator, {}),
40600
40604
  /* @__PURE__ */ jsx(BreadcrumbItem, { children: /* @__PURE__ */ jsx(BreadcrumbLink, { asChild: true, children: /* @__PURE__ */ jsx(Pressable, { href: crumb.href, children: crumb.label }) }) })
40601
40605
  ] }, index)),
@@ -40605,7 +40609,7 @@ function ArticleBreadcrumbSocialComponent({
40605
40609
  ] })
40606
40610
  ] }) });
40607
40611
  }, [breadcrumbsSlot, breadcrumbs, currentPage, breadcrumbClassName]);
40608
- const authorContent = React23.useMemo(() => {
40612
+ const authorContent = React25.useMemo(() => {
40609
40613
  if (authorSlot) return authorSlot;
40610
40614
  if (!author) return null;
40611
40615
  return /* @__PURE__ */ jsxs(
@@ -40628,7 +40632,7 @@ function ArticleBreadcrumbSocialComponent({
40628
40632
  }
40629
40633
  );
40630
40634
  }, [authorSlot, author, publishDate, readTime, authorClassName]);
40631
- const heroMediaContent = React23.useMemo(() => {
40635
+ const heroMediaContent = React25.useMemo(() => {
40632
40636
  if (heroMediaSlot) return heroMediaSlot;
40633
40637
  if (!heroImageSrc) return null;
40634
40638
  return /* @__PURE__ */ jsx(
@@ -40650,7 +40654,7 @@ function ArticleBreadcrumbSocialComponent({
40650
40654
  heroImageClassName,
40651
40655
  optixFlowConfig
40652
40656
  ]);
40653
- const tocContent = React23.useMemo(() => {
40657
+ const tocContent = React25.useMemo(() => {
40654
40658
  if (tocSlot) return tocSlot;
40655
40659
  if (!sections || sections.length === 0) return null;
40656
40660
  return /* @__PURE__ */ jsxs("div", { className: cn("rounded-lg border p-4", tocClassName), children: [
@@ -40658,7 +40662,7 @@ function ArticleBreadcrumbSocialComponent({
40658
40662
  /* @__PURE__ */ jsx("nav", { className: "space-y-2", children: sections.map((section) => {
40659
40663
  const isActive = activeSection === section.id;
40660
40664
  if (renderSectionLink) {
40661
- return /* @__PURE__ */ jsx(React23.Fragment, { children: renderSectionLink(section, isActive) }, section.id);
40665
+ return /* @__PURE__ */ jsx(React25.Fragment, { children: renderSectionLink(section, isActive) }, section.id);
40662
40666
  }
40663
40667
  return /* @__PURE__ */ jsx(
40664
40668
  Pressable,
@@ -40763,11 +40767,11 @@ function ArticleCompactTocComponent({
40763
40767
  pattern,
40764
40768
  patternOpacity
40765
40769
  }) {
40766
- const [activeSection, setActiveSection] = React23.useState(
40770
+ const [activeSection, setActiveSection] = React25.useState(
40767
40771
  sections?.[0]?.id || ""
40768
40772
  );
40769
- const [isTocOpen, setIsTocOpen] = React23.useState(false);
40770
- React23.useEffect(() => {
40773
+ const [isTocOpen, setIsTocOpen] = React25.useState(false);
40774
+ React25.useEffect(() => {
40771
40775
  if (!enableTocTracking) return;
40772
40776
  const observer = new IntersectionObserver(
40773
40777
  (entries) => {
@@ -40785,12 +40789,12 @@ function ArticleCompactTocComponent({
40785
40789
  });
40786
40790
  return () => observer.disconnect();
40787
40791
  }, [sections, enableTocTracking]);
40788
- const breadcrumbsContent = React23.useMemo(() => {
40792
+ const breadcrumbsContent = React25.useMemo(() => {
40789
40793
  if (breadcrumbsSlot) return breadcrumbsSlot;
40790
40794
  if (!breadcrumbs && !currentPage) return null;
40791
40795
  return /* @__PURE__ */ jsx(Breadcrumb, { className: cn("mb-6 md:mb-20", breadcrumbClassName), children: /* @__PURE__ */ jsxs(BreadcrumbList, { children: [
40792
40796
  /* @__PURE__ */ jsx(BreadcrumbItem, { children: /* @__PURE__ */ jsx(BreadcrumbLink, { asChild: true, children: /* @__PURE__ */ jsx(Pressable, { href: "#", children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/home", size: 16 }) }) }) }),
40793
- breadcrumbs?.map((crumb, index) => /* @__PURE__ */ jsxs(React23.Fragment, { children: [
40797
+ breadcrumbs?.map((crumb, index) => /* @__PURE__ */ jsxs(React25.Fragment, { children: [
40794
40798
  /* @__PURE__ */ jsx(BreadcrumbSeparator, {}),
40795
40799
  /* @__PURE__ */ jsx(BreadcrumbItem, { children: /* @__PURE__ */ jsx(BreadcrumbLink, { asChild: true, children: /* @__PURE__ */ jsx(Pressable, { href: crumb.href, children: crumb.label }) }) })
40796
40800
  ] }, index)),
@@ -40798,7 +40802,7 @@ function ArticleCompactTocComponent({
40798
40802
  /* @__PURE__ */ jsx(BreadcrumbItem, { children: /* @__PURE__ */ jsx(BreadcrumbPage, { children: currentPage }) })
40799
40803
  ] }) });
40800
40804
  }, [breadcrumbsSlot, breadcrumbs, currentPage, breadcrumbClassName]);
40801
- const shareContent = React23.useMemo(() => {
40805
+ const shareContent = React25.useMemo(() => {
40802
40806
  if (shareSlot) return shareSlot;
40803
40807
  if (!socialLinks || socialLinks.length === 0) return null;
40804
40808
  return /* @__PURE__ */ jsxs("div", { className: cn("mt-6 flex items-center gap-2", shareClassName), children: [
@@ -40815,13 +40819,13 @@ function ArticleCompactTocComponent({
40815
40819
  ))
40816
40820
  ] });
40817
40821
  }, [shareSlot, socialLinks, shareClassName]);
40818
- const renderTocLinks = React23.useCallback(
40822
+ const renderTocLinks = React25.useCallback(
40819
40823
  (onLinkClick) => {
40820
40824
  if (!sections) return null;
40821
40825
  return sections.map((section) => {
40822
40826
  const isActive = activeSection === section.id;
40823
40827
  if (renderSectionLink) {
40824
- return /* @__PURE__ */ jsx(React23.Fragment, { children: renderSectionLink(section, isActive) }, section.id);
40828
+ return /* @__PURE__ */ jsx(React25.Fragment, { children: renderSectionLink(section, isActive) }, section.id);
40825
40829
  }
40826
40830
  return /* @__PURE__ */ jsx(
40827
40831
  Pressable,
@@ -40840,7 +40844,7 @@ function ArticleCompactTocComponent({
40840
40844
  },
40841
40845
  [sections, activeSection, renderSectionLink]
40842
40846
  );
40843
- const tocContent = React23.useMemo(() => {
40847
+ const tocContent = React25.useMemo(() => {
40844
40848
  if (tocSlot) return tocSlot;
40845
40849
  if (!sections || sections.length === 0) return null;
40846
40850
  return /* @__PURE__ */ jsx("div", { className: "mb-8 lg:hidden", children: /* @__PURE__ */ jsxs(Popover, { open: isTocOpen, onOpenChange: setIsTocOpen, children: [
@@ -40873,7 +40877,7 @@ function ArticleCompactTocComponent({
40873
40877
  )
40874
40878
  ] }) });
40875
40879
  }, [tocSlot, sections, isTocOpen, tocClassName, renderTocLinks]);
40876
- const desktopTocContent = React23.useMemo(() => {
40880
+ const desktopTocContent = React25.useMemo(() => {
40877
40881
  if (tocSlot) return null;
40878
40882
  if (!sections || sections.length === 0) return null;
40879
40883
  return /* @__PURE__ */ jsx(
@@ -40890,7 +40894,7 @@ function ArticleCompactTocComponent({
40890
40894
  }
40891
40895
  );
40892
40896
  }, [tocSlot, sections, tocClassName, renderTocLinks]);
40893
- const heroMediaContent = React23.useMemo(() => {
40897
+ const heroMediaContent = React25.useMemo(() => {
40894
40898
  if (heroMediaSlot) return heroMediaSlot;
40895
40899
  if (!heroImageSrc) return null;
40896
40900
  return /* @__PURE__ */ jsx(
@@ -41020,10 +41024,10 @@ function ArticleChaptersAuthorComponent({
41020
41024
  variant: "default"
41021
41025
  }
41022
41026
  ] : []);
41023
- const [activeChapter, setActiveChapter] = React23.useState(
41027
+ const [activeChapter, setActiveChapter] = React25.useState(
41024
41028
  chapters?.[0]?.id || ""
41025
41029
  );
41026
- React23.useEffect(() => {
41030
+ React25.useEffect(() => {
41027
41031
  if (!enableChapterTracking || !chapters || chapters.length === 0) return;
41028
41032
  const observer = new IntersectionObserver(
41029
41033
  (entries) => {
@@ -41041,12 +41045,12 @@ function ArticleChaptersAuthorComponent({
41041
41045
  });
41042
41046
  return () => observer.disconnect();
41043
41047
  }, [chapters, enableChapterTracking]);
41044
- const breadcrumbsContent = React23.useMemo(() => {
41048
+ const breadcrumbsContent = React25.useMemo(() => {
41045
41049
  if (breadcrumbsSlot) return breadcrumbsSlot;
41046
41050
  if (!breadcrumbs || breadcrumbs.length === 0) return null;
41047
41051
  return /* @__PURE__ */ jsx(Breadcrumb, { className: cn("mb-8 md:mb-20", breadcrumbClassName), children: /* @__PURE__ */ jsxs(BreadcrumbList, { children: [
41048
41052
  /* @__PURE__ */ jsx(BreadcrumbItem, { children: /* @__PURE__ */ jsx(BreadcrumbLink, { asChild: true, children: /* @__PURE__ */ jsx(Pressable, { href: "#", children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/home", size: 16 }) }) }) }),
41049
- breadcrumbs.map((crumb, index) => /* @__PURE__ */ jsxs(React23.Fragment, { children: [
41053
+ breadcrumbs.map((crumb, index) => /* @__PURE__ */ jsxs(React25.Fragment, { children: [
41050
41054
  /* @__PURE__ */ jsx(BreadcrumbSeparator, {}),
41051
41055
  /* @__PURE__ */ jsx(BreadcrumbItem, { children: /* @__PURE__ */ jsx(BreadcrumbLink, { asChild: true, children: /* @__PURE__ */ jsx(Pressable, { href: crumb.href, children: crumb.label }) }) })
41052
41056
  ] }, index)),
@@ -41054,7 +41058,7 @@ function ArticleChaptersAuthorComponent({
41054
41058
  /* @__PURE__ */ jsx(BreadcrumbItem, { children: /* @__PURE__ */ jsx(BreadcrumbPage, { children: typeof currentPage === "string" ? currentPage : currentPage }) })
41055
41059
  ] }) });
41056
41060
  }, [breadcrumbsSlot, breadcrumbs, currentPage, breadcrumbClassName]);
41057
- const chaptersNavContent = React23.useMemo(() => {
41061
+ const chaptersNavContent = React25.useMemo(() => {
41058
41062
  if (chaptersSlot) return chaptersSlot;
41059
41063
  if (!chapters || chapters.length === 0) return null;
41060
41064
  return /* @__PURE__ */ jsxs("div", { className: cn("rounded-lg border p-4", chaptersClassName), children: [
@@ -41062,7 +41066,7 @@ function ArticleChaptersAuthorComponent({
41062
41066
  /* @__PURE__ */ jsx("nav", { className: "space-y-2", children: chapters.map((chapter) => {
41063
41067
  const isActive = activeChapter === chapter.id;
41064
41068
  if (renderChapterLink) {
41065
- return /* @__PURE__ */ jsx(React23.Fragment, { children: renderChapterLink(chapter, isActive) }, chapter.id);
41069
+ return /* @__PURE__ */ jsx(React25.Fragment, { children: renderChapterLink(chapter, isActive) }, chapter.id);
41066
41070
  }
41067
41071
  return /* @__PURE__ */ jsxs(
41068
41072
  Pressable,
@@ -41088,7 +41092,7 @@ function ArticleChaptersAuthorComponent({
41088
41092
  renderChapterLink,
41089
41093
  chaptersClassName
41090
41094
  ]);
41091
- const authorCardContent = React23.useMemo(() => {
41095
+ const authorCardContent = React25.useMemo(() => {
41092
41096
  if (authorSlot) return authorSlot;
41093
41097
  if (!author) return null;
41094
41098
  let socialLinksContent = null;
@@ -41149,7 +41153,7 @@ function ArticleChaptersAuthorComponent({
41149
41153
  socialLinksContent
41150
41154
  ] });
41151
41155
  }, [authorSlot, author, authorClassName]);
41152
- const heroMediaContent = React23.useMemo(() => {
41156
+ const heroMediaContent = React25.useMemo(() => {
41153
41157
  if (heroMediaSlot) return heroMediaSlot;
41154
41158
  if (!heroImageSrc) return null;
41155
41159
  return /* @__PURE__ */ jsx(
@@ -41171,7 +41175,7 @@ function ArticleChaptersAuthorComponent({
41171
41175
  heroImageClassName,
41172
41176
  optixFlowConfig
41173
41177
  ]);
41174
- const conclusionContent = React23.useMemo(() => {
41178
+ const conclusionContent = React25.useMemo(() => {
41175
41179
  if (conclusionSlot) return conclusionSlot;
41176
41180
  if (!conclusionTitle && !conclusionDescription && (!conclusionActions || conclusionActions.length === 0))
41177
41181
  return null;
@@ -41316,7 +41320,7 @@ function ArticleSplitAnimatedComponent({
41316
41320
  }) {
41317
41321
  const ctaActions = ctaActionsProp ?? (ctaText ? [{ label: ctaText, href: ctaHref || "#", variant: "default", size: "lg" }] : []);
41318
41322
  const MotionWrapper = enableAnimations ? motion.div : "div";
41319
- const categoryContent = React23.useMemo(() => {
41323
+ const categoryContent = React25.useMemo(() => {
41320
41324
  if (categorySlot) return categorySlot;
41321
41325
  if (!category) return null;
41322
41326
  return /* @__PURE__ */ jsx(
@@ -41331,7 +41335,7 @@ function ArticleSplitAnimatedComponent({
41331
41335
  }
41332
41336
  );
41333
41337
  }, [categorySlot, category, categoryHref, categoryClassName]);
41334
- const heroMediaContent = React23.useMemo(() => {
41338
+ const heroMediaContent = React25.useMemo(() => {
41335
41339
  if (heroMediaSlot) return heroMediaSlot;
41336
41340
  if (!image) return null;
41337
41341
  return /* @__PURE__ */ jsx(
@@ -41344,7 +41348,7 @@ function ArticleSplitAnimatedComponent({
41344
41348
  }
41345
41349
  );
41346
41350
  }, [heroMediaSlot, image, imageAlt, title, optixFlowConfig]);
41347
- const authorContent = React23.useMemo(() => {
41351
+ const authorContent = React25.useMemo(() => {
41348
41352
  if (authorSlot) return authorSlot;
41349
41353
  if (!authorName) return null;
41350
41354
  return /* @__PURE__ */ jsxs("div", { className: cn("mt-8 flex items-center gap-4", authorClassName), children: [
@@ -41358,7 +41362,7 @@ function ArticleSplitAnimatedComponent({
41358
41362
  ] })
41359
41363
  ] });
41360
41364
  }, [authorSlot, authorName, authorImage, authorHref, authorRole, authorClassName]);
41361
- const ctaContent = React23.useMemo(() => {
41365
+ const ctaContent = React25.useMemo(() => {
41362
41366
  if (ctaSlot) return ctaSlot;
41363
41367
  if (!ctaActions || ctaActions.length === 0) return null;
41364
41368
  return /* @__PURE__ */ jsx("div", { className: cn("mt-8 flex flex-wrap gap-3", ctaClassName), children: ctaActions.map((action, index) => {
@@ -42781,7 +42785,7 @@ function FaqSidebarNavigation({
42781
42785
  accordionTriggerClassName,
42782
42786
  accordionContentClassName
42783
42787
  }) {
42784
- const [activeCategory, setActiveCategory] = React23.useState(
42788
+ const [activeCategory, setActiveCategory] = React25.useState(
42785
42789
  categories && categories.length > 1 ? "all" : categories?.[0]?.id || ""
42786
42790
  );
42787
42791
  const filteredCategories = useMemo(() => {
@@ -43670,7 +43674,7 @@ function FaqSplitHero({
43670
43674
  imageArea
43671
43675
  ] }) });
43672
43676
  }
43673
- var Controls = React23.memo(
43677
+ var Controls = React25.memo(
43674
43678
  ({
43675
43679
  handleNext,
43676
43680
  handlePrevious,
@@ -43701,7 +43705,7 @@ var Controls = React23.memo(
43701
43705
  ] });
43702
43706
  }
43703
43707
  );
43704
- var FeatureCard = React23.memo(
43708
+ var FeatureCard = React25.memo(
43705
43709
  ({ feature, isActive, onClick }) => {
43706
43710
  const variants2 = useMemo(
43707
43711
  () => ({
@@ -43809,7 +43813,7 @@ var FeatureCard = React23.memo(
43809
43813
  ) });
43810
43814
  }
43811
43815
  );
43812
- var FeaturesDesktop = React23.memo(
43816
+ var FeaturesDesktop = React25.memo(
43813
43817
  ({
43814
43818
  features,
43815
43819
  handleNext,
@@ -43843,7 +43847,7 @@ var FeaturesDesktop = React23.memo(
43843
43847
  ] });
43844
43848
  }
43845
43849
  );
43846
- var FeaturesMobile = React23.memo(
43850
+ var FeaturesMobile = React25.memo(
43847
43851
  ({
43848
43852
  features,
43849
43853
  handleNext,
@@ -43934,8 +43938,8 @@ function FeatureAnimatedCarousel({
43934
43938
  spacing = "py-12 md:py-32",
43935
43939
  containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8"
43936
43940
  }) {
43937
- const [activeIndex, setActiveIndex] = React23.useState(0);
43938
- const [direction, setDirection] = React23.useState(1);
43941
+ const [activeIndex, setActiveIndex] = React25.useState(0);
43942
+ const [direction, setDirection] = React25.useState(1);
43939
43943
  const handleNext = useCallback(() => {
43940
43944
  if (features && activeIndex < features.length - 1) {
43941
43945
  setDirection(1);
@@ -44797,7 +44801,7 @@ function FooterInfoCardsAccordion({
44797
44801
  patternOpacity,
44798
44802
  optixFlowConfig
44799
44803
  }) {
44800
- const [email, setEmail] = React23.useState("");
44804
+ const [email, setEmail] = React25.useState("");
44801
44805
  (/* @__PURE__ */ new Date()).getFullYear();
44802
44806
  const handleSubmit = (e) => {
44803
44807
  e.preventDefault();
@@ -45102,13 +45106,13 @@ function CaseStudiesImageGrid({
45102
45106
  patternOpacity,
45103
45107
  optixFlowConfig
45104
45108
  }) {
45105
- const getGridClass = React23.useCallback((index) => {
45109
+ const getGridClass = React25.useCallback((index) => {
45106
45110
  if (index === 0 || index === 4) {
45107
45111
  return "row-span-2 aspect-square lg:aspect-auto";
45108
45112
  }
45109
45113
  return "aspect-3/2 md:aspect-2/1";
45110
45114
  }, []);
45111
- const renderedItems = React23.useMemo(() => {
45115
+ const renderedItems = React25.useMemo(() => {
45112
45116
  if (itemsSlot) return itemsSlot;
45113
45117
  if (!items || items.length === 0) return null;
45114
45118
  return items.map((item, index) => /* @__PURE__ */ jsxs(
@@ -45194,7 +45198,7 @@ function CaseStudiesTestimonialStats({
45194
45198
  patternOpacity,
45195
45199
  optixFlowConfig
45196
45200
  }) {
45197
- const renderedTestimonials = React23.useMemo(() => {
45201
+ const renderedTestimonials = React25.useMemo(() => {
45198
45202
  if (testimonialsSlot) return testimonialsSlot;
45199
45203
  if (!testimonials || testimonials.length === 0) return null;
45200
45204
  return testimonials.map((testimonial, index) => /* @__PURE__ */ jsxs("div", { className: testimonialItemClassName, children: [
@@ -48667,7 +48671,7 @@ function CaseStudiesFeaturedBorder({
48667
48671
  patternOpacity,
48668
48672
  optixFlowConfig
48669
48673
  }) {
48670
- const renderedFeatured = React23.useMemo(() => {
48674
+ const renderedFeatured = React25.useMemo(() => {
48671
48675
  if (featuredSlot) return featuredSlot;
48672
48676
  if (!featuredCaseStudy) return null;
48673
48677
  return /* @__PURE__ */ jsxs(
@@ -48741,7 +48745,7 @@ function CaseStudiesFeaturedBorder({
48741
48745
  featuredImageClassName,
48742
48746
  optixFlowConfig
48743
48747
  ]);
48744
- const renderedCaseStudies = React23.useMemo(() => {
48748
+ const renderedCaseStudies = React25.useMemo(() => {
48745
48749
  if (caseStudiesSlot) return caseStudiesSlot;
48746
48750
  if (!caseStudies || caseStudies.length === 0) return null;
48747
48751
  return caseStudies.map((item, idx) => /* @__PURE__ */ jsxs(
@@ -48850,7 +48854,7 @@ function CaseStudiesStatsCard({
48850
48854
  patternOpacity,
48851
48855
  optixFlowConfig
48852
48856
  }) {
48853
- const renderedStats = React23.useMemo(() => {
48857
+ const renderedStats = React25.useMemo(() => {
48854
48858
  if (statsSlot) return statsSlot;
48855
48859
  if (!stats || stats.length === 0) return null;
48856
48860
  return /* @__PURE__ */ jsx("div", { className: cn("flex w-full flex-col gap-8 sm:flex-row", statsClassName), children: stats.map((item, i) => /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1", children: [
@@ -48858,7 +48862,7 @@ function CaseStudiesStatsCard({
48858
48862
  /* @__PURE__ */ jsx("div", { className: "text-sm font-medium text-muted-foreground", children: item.text })
48859
48863
  ] }, `stats-${i}`)) });
48860
48864
  }, [statsSlot, stats, statsClassName]);
48861
- const renderedAuthor = React23.useMemo(() => {
48865
+ const renderedAuthor = React25.useMemo(() => {
48862
48866
  if (authorSlot) return authorSlot;
48863
48867
  if (!author) return null;
48864
48868
  return /* @__PURE__ */ jsxs("div", { className: cn("flex items-center gap-2.5", authorClassName), children: [
@@ -48872,7 +48876,7 @@ function CaseStudiesStatsCard({
48872
48876
  ] })
48873
48877
  ] });
48874
48878
  }, [authorSlot, author, authorClassName]);
48875
- const renderedActions = React23.useMemo(() => {
48879
+ const renderedActions = React25.useMemo(() => {
48876
48880
  if (actionsSlot) return actionsSlot;
48877
48881
  if (!actions || actions.length === 0) return null;
48878
48882
  return /* @__PURE__ */ jsx("div", { className: cn("shrink-0", actionsClassName), children: actions.map((action, index) => {
@@ -55913,7 +55917,7 @@ function HeroSplitImageNewsletter({
55913
55917
  onError,
55914
55918
  uploadTokens
55915
55919
  });
55916
- const renderForm = React23.useMemo(() => {
55920
+ const renderForm = React25.useMemo(() => {
55917
55921
  if (formSlot) return formSlot;
55918
55922
  if (!formFields || formFields.length === 0) return null;
55919
55923
  const defaultButtonAction = {
@@ -55992,7 +55996,7 @@ function HeroSplitImageNewsletter({
55992
55996
  resetUpload,
55993
55997
  resetSubmissionState
55994
55998
  ]);
55995
- const renderImage = React23.useMemo(() => {
55999
+ const renderImage = React25.useMemo(() => {
55996
56000
  if (imageSlot) return imageSlot;
55997
56001
  if (!image) return null;
55998
56002
  return /* @__PURE__ */ jsx("div", { className: "relative lg:w-1/2", children: /* @__PURE__ */ jsx(
@@ -57420,7 +57424,7 @@ function HeroSaasDashboardPreview({
57420
57424
  onError,
57421
57425
  uploadTokens
57422
57426
  });
57423
- const renderBadge = React23.useMemo(() => {
57427
+ const renderBadge = React25.useMemo(() => {
57424
57428
  if (badgeSlot) return badgeSlot;
57425
57429
  return /* @__PURE__ */ jsxs(
57426
57430
  "div",
@@ -57435,7 +57439,7 @@ function HeroSaasDashboardPreview({
57435
57439
  }
57436
57440
  );
57437
57441
  }, [badgeSlot, badgeIcon, badgeText]);
57438
- const renderForm = React23.useMemo(() => {
57442
+ const renderForm = React25.useMemo(() => {
57439
57443
  if (formSlot) return formSlot;
57440
57444
  const defaultButtonAction = {
57441
57445
  label: "Start Free Trial",
@@ -57443,7 +57447,7 @@ function HeroSaasDashboardPreview({
57443
57447
  className: "h-12"
57444
57448
  };
57445
57449
  const action = buttonAction || defaultButtonAction;
57446
- return /* @__PURE__ */ jsx("div", { className: "mt-12 w-full flex items-center justify-center", children: /* @__PURE__ */ jsxs(
57450
+ return /* @__PURE__ */ jsx("div", { className: "mt-4 md:mt-6 w-full flex items-center justify-center", children: /* @__PURE__ */ jsxs(
57447
57451
  Form,
57448
57452
  {
57449
57453
  form,
@@ -57510,10 +57514,10 @@ function HeroSaasDashboardPreview({
57510
57514
  resetUpload,
57511
57515
  resetSubmissionState
57512
57516
  ]);
57513
- const renderBrowserPreview = React23.useMemo(() => {
57517
+ const renderBrowserPreview = React25.useMemo(() => {
57514
57518
  if (browserPreviewSlot) return browserPreviewSlot;
57515
57519
  if (!browserPreview) return null;
57516
- return /* @__PURE__ */ jsxs("div", { className: cn("relative mt-20", previewClassName), children: [
57520
+ return /* @__PURE__ */ jsxs("div", { className: cn("relative mt-12 md:mt-20", previewClassName), children: [
57517
57521
  /* @__PURE__ */ jsx("div", { className: "absolute inset-0 z-10 pointer-events-none" }),
57518
57522
  /* @__PURE__ */ jsxs(
57519
57523
  "div",
@@ -57561,12 +57565,12 @@ function HeroSaasDashboardPreview({
57561
57565
  patternOpacity,
57562
57566
  className: cn(className),
57563
57567
  containerClassName,
57564
- children: /* @__PURE__ */ jsxs("div", { className: "pt-10 md:pt-0", children: [
57568
+ children: /* @__PURE__ */ jsxs("div", { className: "pt-10 md:pt-0 flex flex-col items-center justify-center", children: [
57565
57569
  /* @__PURE__ */ jsxs(
57566
57570
  "div",
57567
57571
  {
57568
57572
  className: cn(
57569
- "mmx-auto text-center flex flex-col items-center gap-6 md:gap-8 max-w-full md:max-w-md",
57573
+ "mx-auto text-center flex flex-col items-center gap-4 md:gap-6 max-w-full md:max-w-md",
57570
57574
  headerClassName
57571
57575
  ),
57572
57576
  children: [
@@ -59761,7 +59765,7 @@ function HeroEcommerceProductShowcase({
59761
59765
  "flex flex-col md:flex-row items-center gap-4 md:gap-6 pt-8 md:pt-12",
59762
59766
  statsClassName
59763
59767
  ),
59764
- children: stats.map((stat, index) => /* @__PURE__ */ jsxs(React23.Fragment, { children: [
59768
+ children: stats.map((stat, index) => /* @__PURE__ */ jsxs(React25.Fragment, { children: [
59765
59769
  index > 0 && /* @__PURE__ */ jsx("div", { className: "h-12 w-px bg-border hidden md:flex" }),
59766
59770
  /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 justify-between flex-row md:flex-col text-left md:text-center w-full md:w-fit border md:border-none rounded-xl md:rounded-none p-4 md:p-0", children: [
59767
59771
  /* @__PURE__ */ jsxs(
@@ -60167,6 +60171,14 @@ function HeroPricingComparison({
60167
60171
  }
60168
60172
  );
60169
60173
  }
60174
+ var DEFAULT_STYLE_RULES3 = {
60175
+ formContainer: "mt-10 flex justify-center items-center w-full max-w-md flex-col gap-4 sm:flex-row",
60176
+ fieldsContainer: "",
60177
+ fieldClassName: "",
60178
+ formClassName: "",
60179
+ successMessageClassName: "text-primary-foreground mt-4 p-3 rounded-md bg-primary",
60180
+ errorMessageClassName: "text-destructive-foreground mt-4 p-3 rounded-md bg-destructive"
60181
+ };
60170
60182
  var DEFAULT_FORM_FIELDS44 = [
60171
60183
  {
60172
60184
  name: "email",
@@ -60180,12 +60192,7 @@ var DEFAULT_FORM_FIELDS44 = [
60180
60192
  function HeroNewsletterMinimal({
60181
60193
  heading,
60182
60194
  description,
60183
- formFields = DEFAULT_FORM_FIELDS44,
60184
- formConfig,
60185
- onSubmit,
60186
- onSuccess,
60187
- onError,
60188
- successMessage,
60195
+ formEngineSetup,
60189
60196
  buttonAction,
60190
60197
  helperText,
60191
60198
  formSlot,
@@ -60194,26 +60201,34 @@ function HeroNewsletterMinimal({
60194
60201
  patternClassName,
60195
60202
  statsSlot,
60196
60203
  background,
60197
- containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
60204
+ containerClassName = "pmx-auto w-full max-w-7xl relative z-10 px-6 sm:px-6 md:px-8 lg:px-8 flex flex-col items-center justify-center",
60198
60205
  spacing = "xl",
60199
60206
  pattern,
60200
60207
  patternOpacity,
60201
60208
  className,
60202
60209
  headingClassName,
60203
60210
  descriptionClassName,
60204
- formClassName,
60205
60211
  disclaimerClassName,
60206
60212
  statsClassName
60207
60213
  }) {
60208
- const {
60209
- uploadTokens,
60210
- uploadProgress,
60211
- isUploading,
60212
- uploadFiles,
60213
- removeFile,
60214
- resetUpload
60215
- } = useFileUpload({ onError });
60216
- const renderStats = React23.useMemo(() => {
60214
+ const formStyleRules = React25.useMemo(() => {
60215
+ return {
60216
+ formContainer: formEngineSetup?.formLayoutSettings?.styleRules?.formContainer ?? DEFAULT_STYLE_RULES3.formContainer,
60217
+ fieldsContainer: formEngineSetup?.formLayoutSettings?.styleRules?.fieldsContainer ?? DEFAULT_STYLE_RULES3.fieldsContainer,
60218
+ fieldClassName: formEngineSetup?.formLayoutSettings?.styleRules?.fieldClassName ?? DEFAULT_STYLE_RULES3.fieldClassName,
60219
+ formClassName: formEngineSetup?.formLayoutSettings?.styleRules?.formClassName ?? DEFAULT_STYLE_RULES3.formClassName,
60220
+ successMessageClassName: formEngineSetup?.formLayoutSettings?.styleRules?.successMessageClassName ?? DEFAULT_STYLE_RULES3.successMessageClassName,
60221
+ errorMessageClassName: formEngineSetup?.formLayoutSettings?.styleRules?.errorMessageClassName ?? DEFAULT_STYLE_RULES3.errorMessageClassName
60222
+ };
60223
+ }, [formEngineSetup?.formLayoutSettings?.styleRules]);
60224
+ const formFields = React25.useMemo(() => {
60225
+ if (formEngineSetup && formEngineSetup?.fields && formEngineSetup?.fields?.length > 0) {
60226
+ return formEngineSetup.fields;
60227
+ } else {
60228
+ return DEFAULT_FORM_FIELDS44;
60229
+ }
60230
+ }, [formEngineSetup?.fields]);
60231
+ const renderStats = React25.useMemo(() => {
60217
60232
  if (statsSlot) return statsSlot;
60218
60233
  if (!stats || stats.length === 0) return null;
60219
60234
  return stats.map((stat, index) => /* @__PURE__ */ jsx("div", { className: cn("flex items-center", stat.className), children: /* @__PURE__ */ jsxs("div", { className: "text-center", children: [
@@ -60239,8 +60254,9 @@ function HeroNewsletterMinimal({
60239
60254
  /* @__PURE__ */ jsx("div", { className: cn("text-sm"), children: stat.label })
60240
60255
  ] }) }, index));
60241
60256
  }, [statsSlot, stats]);
60242
- const renderForm = React23.useMemo(() => {
60257
+ const renderForm = React25.useMemo(() => {
60243
60258
  if (formSlot) return formSlot;
60259
+ if (!formEngineSetup) return null;
60244
60260
  const defaultButtonAction = {
60245
60261
  label: "Subscribe",
60246
60262
  variant: "default"
@@ -60250,51 +60266,33 @@ function HeroNewsletterMinimal({
60250
60266
  /* @__PURE__ */ jsx(
60251
60267
  FormEngine,
60252
60268
  {
60253
- api: formConfig,
60254
- fields: formFields,
60269
+ ...formEngineSetup,
60255
60270
  formLayoutSettings: {
60271
+ ...formEngineSetup.formLayoutSettings,
60256
60272
  formLayout: "button-group",
60257
60273
  buttonGroupSetup: {
60274
+ ...formEngineSetup.formLayoutSettings?.buttonGroupSetup,
60258
60275
  size: "lg",
60259
60276
  submitLabel: /* @__PURE__ */ jsxs(Fragment$1, { children: [
60260
60277
  action.label,
60261
60278
  action.iconAfter
60262
60279
  ] }),
60263
60280
  submitVariant: action.variant || "default"
60264
- }
60265
- },
60266
- successMessage,
60267
- onSubmit,
60268
- onSuccess: (data) => {
60269
- resetUpload();
60270
- onSuccess?.(data);
60281
+ },
60282
+ styleRules: formStyleRules
60271
60283
  },
60272
- onError,
60273
- uploadTokens,
60274
- uploadProgress,
60275
- onFileUpload: uploadFiles,
60276
- onFileRemove: removeFile,
60277
- isUploading
60284
+ fields: formFields
60278
60285
  }
60279
60286
  ),
60280
60287
  helperText && (typeof helperText === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-sm mt-2 text-center"), children: helperText }) : helperText)
60281
60288
  ] });
60282
60289
  }, [
60283
60290
  formSlot,
60284
- formFields,
60285
- formConfig,
60291
+ formEngineSetup,
60286
60292
  buttonAction,
60287
- uploadTokens,
60288
- uploadProgress,
60289
- uploadFiles,
60290
- removeFile,
60291
- isUploading,
60292
- successMessage,
60293
- onSubmit,
60294
- onSuccess,
60295
- onError,
60296
- helperText,
60297
- resetUpload
60293
+ formFields,
60294
+ formStyleRules,
60295
+ helperText
60298
60296
  ]);
60299
60297
  return /* @__PURE__ */ jsx(
60300
60298
  Section,
@@ -60306,58 +60304,40 @@ function HeroNewsletterMinimal({
60306
60304
  patternClassName,
60307
60305
  className,
60308
60306
  containerClassName,
60309
- children: /* @__PURE__ */ jsxs(
60310
- "div",
60311
- {
60312
- className: cn(
60313
- "container flex flex-col items-center justify-center text-center",
60314
- containerClassName
60315
- ),
60316
- children: [
60317
- heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
60318
- "h1",
60319
- {
60320
- className: cn(
60321
- "max-w-3xl text-5xl font-bold tracking-tight md:text-6xl lg:text-7xl text-pretty",
60322
- headingClassName
60323
- ),
60324
- children: heading
60325
- }
60326
- ) : heading),
60327
- description && (typeof description === "string" ? /* @__PURE__ */ jsx(
60328
- "p",
60329
- {
60330
- className: cn(
60331
- "mt-6 max-w-full md:max-w-lg text-lg md:text-xl text-balance",
60332
- descriptionClassName
60333
- ),
60334
- children: description
60335
- }
60336
- ) : description),
60337
- /* @__PURE__ */ jsx(
60338
- "div",
60339
- {
60340
- className: cn(
60341
- "mt-10 flex w-full max-w-md flex-col gap-4 sm:flex-row",
60342
- formClassName
60343
- ),
60344
- children: renderForm
60345
- }
60307
+ children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center justify-center", children: [
60308
+ heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
60309
+ "h1",
60310
+ {
60311
+ className: cn(
60312
+ "max-w-3xl text-5xl font-bold tracking-tight md:text-6xl lg:text-7xl text-pretty text-center",
60313
+ headingClassName
60346
60314
  ),
60347
- disclaimer && (typeof disclaimer === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mt-4 text-sm", disclaimerClassName), children: disclaimer }) : disclaimer),
60348
- (statsSlot || stats && stats.length > 0) && /* @__PURE__ */ jsx(
60349
- "div",
60350
- {
60351
- className: cn(
60352
- "mt-16 flex flex-wrap items-center justify-center gap-8 md:gap-12",
60353
- statsClassName
60354
- ),
60355
- children: renderStats
60356
- }
60357
- )
60358
- ]
60359
- }
60360
- )
60315
+ children: heading
60316
+ }
60317
+ ) : heading),
60318
+ description && (typeof description === "string" ? /* @__PURE__ */ jsx(
60319
+ "p",
60320
+ {
60321
+ className: cn(
60322
+ "mt-6 max-w-full md:max-w-lg text-lg md:text-xl text-balance text-center",
60323
+ descriptionClassName
60324
+ ),
60325
+ children: description
60326
+ }
60327
+ ) : description),
60328
+ renderForm,
60329
+ disclaimer && (typeof disclaimer === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mt-4 text-sm", disclaimerClassName), children: disclaimer }) : disclaimer),
60330
+ (statsSlot || stats && stats.length > 0) && /* @__PURE__ */ jsx(
60331
+ "div",
60332
+ {
60333
+ className: cn(
60334
+ "mt-16 flex flex-wrap items-center justify-center gap-8 md:gap-12",
60335
+ statsClassName
60336
+ ),
60337
+ children: renderStats
60338
+ }
60339
+ )
60340
+ ] })
60361
60341
  }
60362
60342
  );
60363
60343
  }
@@ -60441,7 +60421,7 @@ function HeroComingSoonCountdown({
60441
60421
  formClassName,
60442
60422
  socialLinksClassName
60443
60423
  }) {
60444
- const [timeLeft, setTimeLeft] = React23.useState(null);
60424
+ const [timeLeft, setTimeLeft] = React25.useState(null);
60445
60425
  const {
60446
60426
  uploadTokens,
60447
60427
  uploadProgress,
@@ -60461,7 +60441,7 @@ function HeroComingSoonCountdown({
60461
60441
  onError,
60462
60442
  uploadTokens
60463
60443
  });
60464
- const calculateTimeLeft = React23.useCallback(() => {
60444
+ const calculateTimeLeft = React25.useCallback(() => {
60465
60445
  if (!countdownDate) return null;
60466
60446
  const now = Date.now();
60467
60447
  const target = countdownDate.getTime();
@@ -60474,7 +60454,7 @@ function HeroComingSoonCountdown({
60474
60454
  seconds: Math.floor(diff % (1e3 * 60) / 1e3)
60475
60455
  };
60476
60456
  }, [countdownDate]);
60477
- React23.useEffect(() => {
60457
+ React25.useEffect(() => {
60478
60458
  setTimeLeft(calculateTimeLeft());
60479
60459
  if (!countdownDate) return;
60480
60460
  const timer = setInterval(() => {
@@ -60485,7 +60465,7 @@ function HeroComingSoonCountdown({
60485
60465
  return () => clearInterval(timer);
60486
60466
  }, [countdownDate, calculateTimeLeft]);
60487
60467
  const showCountdown = countdownSlot || timeLeft;
60488
- const renderForm = React23.useMemo(() => {
60468
+ const renderForm = React25.useMemo(() => {
60489
60469
  if (formSlot) return formSlot;
60490
60470
  const defaultButtonAction = {
60491
60471
  label: "Notify Me",
@@ -60561,7 +60541,7 @@ function HeroComingSoonCountdown({
60561
60541
  resetUpload,
60562
60542
  resetSubmissionState
60563
60543
  ]);
60564
- const renderSocialLinks = React23.useMemo(() => {
60544
+ const renderSocialLinks = React25.useMemo(() => {
60565
60545
  if (socialLinksSlot) return socialLinksSlot;
60566
60546
  if (!socialLinks || socialLinks.length === 0) return null;
60567
60547
  return socialLinks.map((link, index) => /* @__PURE__ */ jsx(
@@ -60693,7 +60673,7 @@ function HeroEventRegistration({
60693
60673
  "flex flex-col md:flex-row items-center gap-4 md:gap-6 pt-8 md:pt-12 w-full md:w-fit",
60694
60674
  statsClassName
60695
60675
  ),
60696
- children: stats.map((stat, index) => /* @__PURE__ */ jsxs(React23.Fragment, { children: [
60676
+ children: stats.map((stat, index) => /* @__PURE__ */ jsxs(React25.Fragment, { children: [
60697
60677
  index > 0 && /* @__PURE__ */ jsx("div", { className: "h-12 w-px bg-border hidden md:flex" }),
60698
60678
  /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 justify-between flex-row md:flex-col text-left md:text-center w-full md:w-fit border md:border-none rounded-xl md:rounded-none p-4 md:p-0", children: [
60699
60679
  /* @__PURE__ */ jsxs(
@@ -61033,7 +61013,7 @@ function ComparisonTableTwoColumn({
61033
61013
  patternOpacity,
61034
61014
  optixFlowConfig
61035
61015
  }) {
61036
- const tableContent = React23.useMemo(() => {
61016
+ const tableContent = React25.useMemo(() => {
61037
61017
  if (tableSlot) return tableSlot;
61038
61018
  if (!rows || rows.length === 0) return null;
61039
61019
  return /* @__PURE__ */ jsx("div", { className: cn("-mr-4 overflow-x-auto", tableWrapperClassName), children: /* @__PURE__ */ jsx("div", { className: "min-w-2xl overflow-hidden", children: /* @__PURE__ */ jsxs(
@@ -61063,7 +61043,7 @@ function ComparisonTableTwoColumn({
61063
61043
  optixFlowConfig
61064
61044
  }
61065
61045
  ) : optionBLabel && (typeof optionBLabel === "string" ? /* @__PURE__ */ jsx("span", { className: "text-lg font-semibold", children: optionBLabel }) : optionBLabel) }),
61066
- rows.map((row, idx) => /* @__PURE__ */ jsxs(React23.Fragment, { children: [
61046
+ rows.map((row, idx) => /* @__PURE__ */ jsxs(React25.Fragment, { children: [
61067
61047
  /* @__PURE__ */ jsx("div", { className: "flex items-center border-b p-3 text-base font-medium md:p-4 md:text-lg", children: row.label }),
61068
61048
  /* @__PURE__ */ jsx("div", { className: cn("border-b bg-success/5 p-3 md:p-6", optionACellClassName), children: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
61069
61049
  row.hasIcon && /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/circle-check-big", size: 20, className: "text-success" }),
@@ -61092,14 +61072,14 @@ function ComparisonTableTwoColumn({
61092
61072
  optionBLabel,
61093
61073
  optixFlowConfig
61094
61074
  ]);
61095
- const headingContent = React23.useMemo(() => {
61075
+ const headingContent = React25.useMemo(() => {
61096
61076
  if (!heading) return null;
61097
61077
  if (typeof heading === "string") {
61098
61078
  return /* @__PURE__ */ jsx("h1", { className: cn("mb-8 text-3xl font-bold md:mb-12 md:text-5xl", headingClassName), children: heading });
61099
61079
  }
61100
61080
  return /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading });
61101
61081
  }, [heading, headingClassName]);
61102
- const descriptionContent = React23.useMemo(() => {
61082
+ const descriptionContent = React25.useMemo(() => {
61103
61083
  if (!description) return null;
61104
61084
  if (typeof description === "string") {
61105
61085
  return /* @__PURE__ */ jsx("p", { className: cn("mb-8 text-muted-foreground md:text-lg", descriptionClassName), children: description });
@@ -61146,7 +61126,7 @@ function ComparisonFeatureCards({
61146
61126
  patternOpacity,
61147
61127
  optixFlowConfig
61148
61128
  }) {
61149
- const renderCard = React23.useCallback(
61129
+ const renderCard = React25.useCallback(
61150
61130
  (product, isHighlighted) => /* @__PURE__ */ jsxs(
61151
61131
  "div",
61152
61132
  {
@@ -61202,7 +61182,7 @@ function ComparisonFeatureCards({
61202
61182
  ),
61203
61183
  [cardClassName, optixFlowConfig]
61204
61184
  );
61205
- const cardsContent = React23.useMemo(() => {
61185
+ const cardsContent = React25.useMemo(() => {
61206
61186
  if (cardsSlot) return cardsSlot;
61207
61187
  if (!productA || !productB) return null;
61208
61188
  return /* @__PURE__ */ jsxs(Fragment$1, { children: [
@@ -61210,28 +61190,28 @@ function ComparisonFeatureCards({
61210
61190
  renderCard(productB, productB.highlighted ?? false)
61211
61191
  ] });
61212
61192
  }, [cardsSlot, productA, productB, renderCard]);
61213
- const headingContent = React23.useMemo(() => {
61193
+ const headingContent = React25.useMemo(() => {
61214
61194
  if (!heading) return null;
61215
61195
  if (typeof heading === "string") {
61216
61196
  return /* @__PURE__ */ jsx("h1", { className: cn("mb-6 text-4xl font-semibold md:text-7xl", headingClassName), children: heading });
61217
61197
  }
61218
61198
  return /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading });
61219
61199
  }, [heading, headingClassName]);
61220
- const descriptionContent = React23.useMemo(() => {
61200
+ const descriptionContent = React25.useMemo(() => {
61221
61201
  if (!description) return null;
61222
61202
  if (typeof description === "string") {
61223
61203
  return /* @__PURE__ */ jsx("p", { className: cn("mx-auto max-w-4xl text-muted-foreground md:text-xl", descriptionClassName), children: description });
61224
61204
  }
61225
61205
  return /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description });
61226
61206
  }, [description, descriptionClassName]);
61227
- const suitabilityContent = React23.useMemo(() => {
61207
+ const suitabilityContent = React25.useMemo(() => {
61228
61208
  if (!suitabilityTitle && !suitabilityDescription) return null;
61229
61209
  return /* @__PURE__ */ jsxs("div", { className: suitabilityClassName, children: [
61230
61210
  suitabilityTitle && (typeof suitabilityTitle === "string" ? /* @__PURE__ */ jsx("h2", { className: "mb-4 text-3xl font-semibold", children: suitabilityTitle }) : suitabilityTitle),
61231
61211
  suitabilityDescription && (typeof suitabilityDescription === "string" ? /* @__PURE__ */ jsx("p", { className: "leading-6 text-muted-foreground md:text-lg", children: suitabilityDescription }) : suitabilityDescription)
61232
61212
  ] });
61233
61213
  }, [suitabilityTitle, suitabilityDescription, suitabilityClassName]);
61234
- const differencesContent = React23.useMemo(() => {
61214
+ const differencesContent = React25.useMemo(() => {
61235
61215
  if (!differencesTitle && !differencesDescription) return null;
61236
61216
  return /* @__PURE__ */ jsxs("div", { className: cn("mt-16", differencesClassName), children: [
61237
61217
  differencesTitle && (typeof differencesTitle === "string" ? /* @__PURE__ */ jsx("h2", { className: "mb-4 text-3xl font-semibold", children: differencesTitle }) : differencesTitle),
@@ -61279,7 +61259,7 @@ function ComparisonGridBadges({
61279
61259
  pattern,
61280
61260
  patternOpacity
61281
61261
  }) {
61282
- const featuresContent = React23.useMemo(() => {
61262
+ const featuresContent = React25.useMemo(() => {
61283
61263
  if (featuresSlot) return featuresSlot;
61284
61264
  if (!features || features.length === 0) return null;
61285
61265
  return features.map((feature, idx) => /* @__PURE__ */ jsxs(
@@ -61326,14 +61306,14 @@ function ComparisonGridBadges({
61326
61306
  idx
61327
61307
  ));
61328
61308
  }, [featuresSlot, features, featureCardClassName, badgeClassName, optionALabel, optionBLabel]);
61329
- const headingContent = React23.useMemo(() => {
61309
+ const headingContent = React25.useMemo(() => {
61330
61310
  if (!heading) return null;
61331
61311
  if (typeof heading === "string") {
61332
61312
  return /* @__PURE__ */ jsx("h2", { className: cn("mb-4 text-3xl font-bold md:text-5xl", headingClassName), children: heading });
61333
61313
  }
61334
61314
  return /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading });
61335
61315
  }, [heading, headingClassName]);
61336
- const descriptionContent = React23.useMemo(() => {
61316
+ const descriptionContent = React25.useMemo(() => {
61337
61317
  if (!description) return null;
61338
61318
  if (typeof description === "string") {
61339
61319
  return /* @__PURE__ */ jsx("p", { className: cn("mx-auto max-w-2xl text-muted-foreground md:text-lg", descriptionClassName), children: description });
@@ -61381,7 +61361,7 @@ function ComparisonMetricsRows({
61381
61361
  pattern,
61382
61362
  patternOpacity
61383
61363
  }) {
61384
- const metricsContent = React23.useMemo(() => {
61364
+ const metricsContent = React25.useMemo(() => {
61385
61365
  if (metricsSlot) return metricsSlot;
61386
61366
  if (!metrics || metrics.length === 0) return null;
61387
61367
  return /* @__PURE__ */ jsx(
@@ -61421,7 +61401,7 @@ function ComparisonMetricsRows({
61421
61401
  }
61422
61402
  );
61423
61403
  }, [metricsSlot, metrics, metricsClassName, metricRowClassName]);
61424
- const actionsContent = React23.useMemo(() => {
61404
+ const actionsContent = React25.useMemo(() => {
61425
61405
  if (actionsSlot) return actionsSlot;
61426
61406
  if (!actions || actions.length === 0) return null;
61427
61407
  return /* @__PURE__ */ jsx("div", { className: cn("flex justify-end", actionsClassName), children: actions.map((action, idx) => /* @__PURE__ */ jsxs(
@@ -61442,7 +61422,7 @@ function ComparisonMetricsRows({
61442
61422
  idx
61443
61423
  )) });
61444
61424
  }, [actionsSlot, actions, actionsClassName]);
61445
- const headingContent = React23.useMemo(() => {
61425
+ const headingContent = React25.useMemo(() => {
61446
61426
  if (!heading) return null;
61447
61427
  if (typeof heading === "string") {
61448
61428
  return /* @__PURE__ */ jsx(
@@ -61458,7 +61438,7 @@ function ComparisonMetricsRows({
61458
61438
  }
61459
61439
  return /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading });
61460
61440
  }, [heading, headingClassName]);
61461
- const descriptionContent = React23.useMemo(() => {
61441
+ const descriptionContent = React25.useMemo(() => {
61462
61442
  if (!description) return null;
61463
61443
  if (typeof description === "string") {
61464
61444
  return /* @__PURE__ */ jsx("p", { className: cn("text-muted-foreground md:text-lg", descriptionClassName), children: description });
@@ -61521,7 +61501,7 @@ function ComparisonImageCards({
61521
61501
  patternOpacity,
61522
61502
  optixFlowConfig
61523
61503
  }) {
61524
- const renderCard = React23.useCallback(
61504
+ const renderCard = React25.useCallback(
61525
61505
  (option) => /* @__PURE__ */ jsx("div", { className: cn("relative h-full", cardClassName), children: /* @__PURE__ */ jsxs("div", { className: cn(
61526
61506
  "relative aspect-4/5 min-h-[400px] overflow-hidden rounded-2xl sm:aspect-[0.9] sm:min-h-[480px] sm:rounded-3xl md:min-h-[520px]",
61527
61507
  getNestedCardBg(background, "accent"),
@@ -61545,7 +61525,7 @@ function ComparisonImageCards({
61545
61525
  ] }) }),
61546
61526
  [cardClassName, optixFlowConfig]
61547
61527
  );
61548
- const cardsContent = React23.useMemo(() => {
61528
+ const cardsContent = React25.useMemo(() => {
61549
61529
  if (cardsSlot) return cardsSlot;
61550
61530
  if (!optionA || !optionB) return null;
61551
61531
  return /* @__PURE__ */ jsxs(Fragment$1, { children: [
@@ -61563,14 +61543,14 @@ function ComparisonImageCards({
61563
61543
  )
61564
61544
  ] });
61565
61545
  }, [cardsSlot, optionA, optionB, dividerText, dividerClassName, renderCard]);
61566
- const headingContent = React23.useMemo(() => {
61546
+ const headingContent = React25.useMemo(() => {
61567
61547
  if (!heading) return null;
61568
61548
  if (typeof heading === "string") {
61569
61549
  return /* @__PURE__ */ jsx("h2", { className: cn("text-3xl font-medium sm:text-4xl md:text-5xl lg:text-6xl", headingClassName), children: heading });
61570
61550
  }
61571
61551
  return /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading });
61572
61552
  }, [heading, headingClassName]);
61573
- const descriptionContent = React23.useMemo(() => {
61553
+ const descriptionContent = React25.useMemo(() => {
61574
61554
  if (!description) return null;
61575
61555
  if (typeof description === "string") {
61576
61556
  return /* @__PURE__ */ jsx("p", { className: cn("mx-auto mt-4 max-w-3xl text-lg text-muted-foreground sm:mt-6 sm:text-xl", descriptionClassName), children: description });
@@ -61700,7 +61680,7 @@ function ComparisonTableTabs({
61700
61680
  patternOpacity
61701
61681
  }) {
61702
61682
  const [selectedTab, setSelectedTab] = useState(models?.[0]?.name || "");
61703
- const renderStatusIcon = React23.useCallback((status) => {
61683
+ const renderStatusIcon = React25.useCallback((status) => {
61704
61684
  if (status === "positive") {
61705
61685
  return /* @__PURE__ */ jsx("span", { className: "flex size-8 items-center justify-center rounded-full border bg-success/10", children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/circle-check", size: 16, className: "text-success" }) });
61706
61686
  }
@@ -61709,7 +61689,7 @@ function ComparisonTableTabs({
61709
61689
  }
61710
61690
  return /* @__PURE__ */ jsx("span", { className: "flex size-8 items-center justify-center rounded-full border bg-accent/10", children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/circle-minus", size: 16, className: "text-accent" }) });
61711
61691
  }, []);
61712
- const tableContent = React23.useMemo(() => {
61692
+ const tableContent = React25.useMemo(() => {
61713
61693
  if (tableSlot) return tableSlot;
61714
61694
  if (!models || models.length === 0 || !features || features.length === 0) return null;
61715
61695
  return /* @__PURE__ */ jsxs(Fragment$1, { children: [
@@ -61768,14 +61748,14 @@ function ComparisonTableTabs({
61768
61748
  ] }) })
61769
61749
  ] });
61770
61750
  }, [tableSlot, models, features, tabsClassName, tableClassName, tableHeaderClassName, tableCellClassName, selectedTab, renderStatusIcon]);
61771
- const headingContent = React23.useMemo(() => {
61751
+ const headingContent = React25.useMemo(() => {
61772
61752
  if (!heading) return null;
61773
61753
  if (typeof heading === "string") {
61774
61754
  return /* @__PURE__ */ jsx("h2", { className: cn("text-3xl font-bold md:text-4xl lg:text-5xl", headingClassName), children: heading });
61775
61755
  }
61776
61756
  return /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading });
61777
61757
  }, [heading, headingClassName]);
61778
- const descriptionContent = React23.useMemo(() => {
61758
+ const descriptionContent = React25.useMemo(() => {
61779
61759
  if (!description) return null;
61780
61760
  if (typeof description === "string") {
61781
61761
  return /* @__PURE__ */ jsx("p", { className: cn("mt-4 text-muted-foreground md:text-lg", descriptionClassName), children: description });
@@ -61866,7 +61846,7 @@ function ComparisonTableTooltips({
61866
61846
  pattern,
61867
61847
  patternOpacity
61868
61848
  }) {
61869
- const renderCellContent = React23.useCallback(
61849
+ const renderCellContent = React25.useCallback(
61870
61850
  (cell, isHighlighted) => {
61871
61851
  if (typeof cell === "string") {
61872
61852
  return cell;
@@ -61893,7 +61873,7 @@ function ComparisonTableTooltips({
61893
61873
  },
61894
61874
  []
61895
61875
  );
61896
- const tableContent = React23.useMemo(() => {
61876
+ const tableContent = React25.useMemo(() => {
61897
61877
  if (tableSlot) return tableSlot;
61898
61878
  if (!rows || rows.length === 0) return null;
61899
61879
  return /* @__PURE__ */ jsxs(Table, { className: cn("rounded border text-left shadow-lg", tableClassName), children: [
@@ -61919,14 +61899,14 @@ function ComparisonTableTooltips({
61919
61899
  ] }, idx)) })
61920
61900
  ] });
61921
61901
  }, [tableSlot, rows, tableClassName, tableHeaderClassName, tableCellClassName, optionALabel, optionBLabel, renderCellContent]);
61922
- const headingContent = React23.useMemo(() => {
61902
+ const headingContent = React25.useMemo(() => {
61923
61903
  if (!heading) return null;
61924
61904
  if (typeof heading === "string") {
61925
61905
  return /* @__PURE__ */ jsx("h2", { className: cn("mb-4 text-center text-4xl font-semibold", headingClassName), children: heading });
61926
61906
  }
61927
61907
  return /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading });
61928
61908
  }, [heading, headingClassName]);
61929
- const descriptionContent = React23.useMemo(() => {
61909
+ const descriptionContent = React25.useMemo(() => {
61930
61910
  if (!description) return null;
61931
61911
  if (typeof description === "string") {
61932
61912
  return /* @__PURE__ */ jsx("p", { className: cn("mb-8 text-center text-muted-foreground", descriptionClassName), children: description });
@@ -61968,7 +61948,7 @@ function ComparisonFeatureGrid({
61968
61948
  pattern,
61969
61949
  patternOpacity
61970
61950
  }) {
61971
- const renderStatusIcon = React23.useCallback((status) => {
61951
+ const renderStatusIcon = React25.useCallback((status) => {
61972
61952
  if (status === true) {
61973
61953
  return /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/check", size: 20, className: "text-success" });
61974
61954
  }
@@ -61977,7 +61957,7 @@ function ComparisonFeatureGrid({
61977
61957
  }
61978
61958
  return /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/x", size: 20, className: "text-destructive" });
61979
61959
  }, []);
61980
- const gridContent = React23.useMemo(() => {
61960
+ const gridContent = React25.useMemo(() => {
61981
61961
  if (gridSlot) return gridSlot;
61982
61962
  if (!features || features.length === 0) return null;
61983
61963
  return /* @__PURE__ */ jsxs(
@@ -62043,14 +62023,14 @@ function ComparisonFeatureGrid({
62043
62023
  optionBLabel,
62044
62024
  renderStatusIcon
62045
62025
  ]);
62046
- const headingContent = React23.useMemo(() => {
62026
+ const headingContent = React25.useMemo(() => {
62047
62027
  if (!heading) return null;
62048
62028
  if (typeof heading === "string") {
62049
62029
  return /* @__PURE__ */ jsx("h2", { className: cn("mb-4 text-center text-4xl font-semibold", headingClassName), children: heading });
62050
62030
  }
62051
62031
  return /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading });
62052
62032
  }, [heading, headingClassName]);
62053
- const descriptionContent = React23.useMemo(() => {
62033
+ const descriptionContent = React25.useMemo(() => {
62054
62034
  if (!description) return null;
62055
62035
  if (typeof description === "string") {
62056
62036
  return /* @__PURE__ */ jsx("p", { className: cn("mb-8 text-center text-muted-foreground", descriptionClassName), children: description });
@@ -62094,7 +62074,7 @@ function ComparisonAiModels({
62094
62074
  optixFlowConfig
62095
62075
  }) {
62096
62076
  const [hoveredModel, setHoveredModel] = useState(null);
62097
- const renderStatusIcon = React23.useCallback((status) => {
62077
+ const renderStatusIcon = React25.useCallback((status) => {
62098
62078
  if (status === "best") {
62099
62079
  return /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/circle-check", size: 16, className: "text-success" });
62100
62080
  }
@@ -62103,7 +62083,7 @@ function ComparisonAiModels({
62103
62083
  }
62104
62084
  return /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/minus", size: 16, className: "text-muted-foreground" });
62105
62085
  }, []);
62106
- const getCellClassName = React23.useCallback(
62086
+ const getCellClassName = React25.useCallback(
62107
62087
  (status, modelKey) => {
62108
62088
  const baseClass = "cursor-pointer py-4 text-center font-medium transition-all duration-300";
62109
62089
  let statusClass = "";
@@ -62124,7 +62104,7 @@ function ComparisonAiModels({
62124
62104
  },
62125
62105
  [hoveredModel]
62126
62106
  );
62127
- const getSummaryCardClassName = React23.useCallback(
62107
+ const getSummaryCardClassName = React25.useCallback(
62128
62108
  (modelKey) => {
62129
62109
  const baseClass = "rounded border border-border/30 bg-background/50 p-3 transition-all duration-300";
62130
62110
  if (hoveredModel === modelKey) {
@@ -62139,7 +62119,7 @@ function ComparisonAiModels({
62139
62119
  },
62140
62120
  [hoveredModel]
62141
62121
  );
62142
- const tableContent = React23.useMemo(() => {
62122
+ const tableContent = React25.useMemo(() => {
62143
62123
  if (tableSlot) return tableSlot;
62144
62124
  if (!models || !comparisonData || comparisonData.length === 0) return null;
62145
62125
  return /* @__PURE__ */ jsx(
@@ -62217,7 +62197,7 @@ function ComparisonAiModels({
62217
62197
  getCellClassName,
62218
62198
  renderStatusIcon
62219
62199
  ]);
62220
- const analysisContent = React23.useMemo(() => {
62200
+ const analysisContent = React25.useMemo(() => {
62221
62201
  if (analysisSlot) return analysisSlot;
62222
62202
  if (!models) return null;
62223
62203
  return /* @__PURE__ */ jsx("div", { className: cn(
@@ -62258,14 +62238,14 @@ function ComparisonAiModels({
62258
62238
  ] })
62259
62239
  ] }) });
62260
62240
  }, [analysisSlot, models, analysisClassName, getSummaryCardClassName]);
62261
- const headingContent = React23.useMemo(() => {
62241
+ const headingContent = React25.useMemo(() => {
62262
62242
  if (!heading) return null;
62263
62243
  if (typeof heading === "string") {
62264
62244
  return /* @__PURE__ */ jsx("h2", { className: cn("text-3xl font-bold md:text-4xl lg:text-5xl", headingClassName), children: heading });
62265
62245
  }
62266
62246
  return /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading });
62267
62247
  }, [heading, headingClassName]);
62268
- const descriptionContent = React23.useMemo(() => {
62248
+ const descriptionContent = React25.useMemo(() => {
62269
62249
  if (!description) return null;
62270
62250
  if (typeof description === "string") {
62271
62251
  return /* @__PURE__ */ jsx("p", { className: cn("mt-4 text-muted-foreground md:text-lg", descriptionClassName), children: description });
@@ -62315,7 +62295,7 @@ function ComparisonLegacyModern({
62315
62295
  pattern,
62316
62296
  patternOpacity
62317
62297
  }) {
62318
- const columnsContent = React23.useMemo(() => {
62298
+ const columnsContent = React25.useMemo(() => {
62319
62299
  if (columnsSlot) return columnsSlot;
62320
62300
  if (!legacyFeatures || legacyFeatures.length === 0 || !modernFeatures || modernFeatures.length === 0)
62321
62301
  return null;
@@ -62327,7 +62307,7 @@ function ComparisonLegacyModern({
62327
62307
  legacyColumnClassName
62328
62308
  ), children: [
62329
62309
  legacyTitle && (typeof legacyTitle === "string" ? /* @__PURE__ */ jsx("h3", { className: "text-2xl font-medium", children: legacyTitle }) : legacyTitle),
62330
- /* @__PURE__ */ jsx("ul", { className: "mt-9 space-y-3", children: legacyFeatures.map((feature, idx) => /* @__PURE__ */ jsxs(React23.Fragment, { children: [
62310
+ /* @__PURE__ */ jsx("ul", { className: "mt-9 space-y-3", children: legacyFeatures.map((feature, idx) => /* @__PURE__ */ jsxs(React25.Fragment, { children: [
62331
62311
  /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
62332
62312
  /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/x", size: 16, className: "my-1.5 shrink-0 text-muted-foreground" }),
62333
62313
  /* @__PURE__ */ jsx("li", { className: "text-sm", children: feature.text })
@@ -62344,7 +62324,7 @@ function ComparisonLegacyModern({
62344
62324
  ),
62345
62325
  children: [
62346
62326
  modernTitle && (typeof modernTitle === "string" ? /* @__PURE__ */ jsx("h3", { className: "text-2xl font-medium", children: modernTitle }) : modernTitle),
62347
- /* @__PURE__ */ jsx("ul", { className: "mt-9 space-y-3", children: modernFeatures.map((feature, idx) => /* @__PURE__ */ jsxs(React23.Fragment, { children: [
62327
+ /* @__PURE__ */ jsx("ul", { className: "mt-9 space-y-3", children: modernFeatures.map((feature, idx) => /* @__PURE__ */ jsxs(React25.Fragment, { children: [
62348
62328
  /* @__PURE__ */ jsxs("li", { className: "flex items-center gap-2 text-sm", children: [
62349
62329
  /* @__PURE__ */ jsx("span", { className: "text-lg", children: feature.emoji }),
62350
62330
  feature.text
@@ -62356,7 +62336,7 @@ function ComparisonLegacyModern({
62356
62336
  )
62357
62337
  ] });
62358
62338
  }, [columnsSlot, legacyFeatures, modernFeatures, legacyTitle, modernTitle, legacyColumnClassName, modernColumnClassName]);
62359
- const headingContent = React23.useMemo(() => {
62339
+ const headingContent = React25.useMemo(() => {
62360
62340
  if (!heading && !headingHighlight) return null;
62361
62341
  return /* @__PURE__ */ jsxs("h2", { className: cn("text-4xl font-medium md:text-5xl lg:text-7xl", headingClassName), children: [
62362
62342
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsxs("span", { className: "text-muted-foreground", children: [
@@ -62369,7 +62349,7 @@ function ComparisonLegacyModern({
62369
62349
  ] }) : headingHighlight)
62370
62350
  ] });
62371
62351
  }, [heading, headingHighlight, headingClassName, headingHighlightClassName]);
62372
- const descriptionContent = React23.useMemo(() => {
62352
+ const descriptionContent = React25.useMemo(() => {
62373
62353
  if (!description) return null;
62374
62354
  if (typeof description === "string") {
62375
62355
  return /* @__PURE__ */ jsx("p", { className: cn("text-lg", descriptionClassName), children: description });
@@ -62542,7 +62522,7 @@ var NavbarMobileMenu = ({
62542
62522
  closeIconClassName,
62543
62523
  title = "Mobile Navigation"
62544
62524
  }) => {
62545
- React23.useEffect(() => {
62525
+ React25.useEffect(() => {
62546
62526
  if (open) {
62547
62527
  const originalOverflow = document.body.style.overflow;
62548
62528
  document.body.style.overflow = "hidden";
@@ -62771,7 +62751,7 @@ var NavbarDropdownMenu = ({
62771
62751
  patternOpacity,
62772
62752
  optixFlowConfig
62773
62753
  }) => {
62774
- const [open, setOpen] = React23.useState(false);
62754
+ const [open, setOpen] = React25.useState(false);
62775
62755
  const renderAuthActions = useMemo(() => {
62776
62756
  if (authActionsSlot) return authActionsSlot;
62777
62757
  if (!authActions || authActions.length === 0) return null;
@@ -62997,7 +62977,7 @@ var NavbarCenteredMenu = ({
62997
62977
  patternOpacity,
62998
62978
  optixFlowConfig
62999
62979
  }) => {
63000
- const [open, setOpen] = React23.useState(false);
62980
+ const [open, setOpen] = React25.useState(false);
63001
62981
  const renderAuthActions = useMemo(() => {
63002
62982
  if (authActionsSlot) return authActionsSlot;
63003
62983
  if (!authActions || authActions.length === 0) return null;
@@ -63137,7 +63117,7 @@ var DesktopMenuItem = ({
63137
63117
  index,
63138
63118
  optixFlowConfig
63139
63119
  }) => {
63140
- const imagesRef = React23.useRef([]);
63120
+ const imagesRef = React25.useRef([]);
63141
63121
  const layout = link.layout || "simple-grid";
63142
63122
  const handleMouseEnter = (event) => {
63143
63123
  const index2 = Number(event.currentTarget.getAttribute("data-index"));
@@ -64372,7 +64352,7 @@ var NavbarFeatureGrid = ({
64372
64352
  patternOpacity,
64373
64353
  optixFlowConfig
64374
64354
  }) => {
64375
- const [open, setOpen] = React23.useState(false);
64355
+ const [open, setOpen] = React25.useState(false);
64376
64356
  const renderAuthActions = useMemo(() => {
64377
64357
  if (authActionsSlot) return authActionsSlot;
64378
64358
  if (!authActions || authActions.length === 0) return null;
@@ -67582,7 +67562,7 @@ var DesktopMenuItem7 = ({
67582
67562
  if (item.groups && item.groups.length > 0) {
67583
67563
  return /* @__PURE__ */ jsxs(NavigationMenuItem, { value: `${index}`, children: [
67584
67564
  /* @__PURE__ */ jsx(NavigationMenuTrigger, { children: item.label }),
67585
- /* @__PURE__ */ jsx(NavigationMenuContent, { className: "p-0", children: /* @__PURE__ */ jsx("div", { className: "flex", children: item.groups.map((group, groupIndex) => /* @__PURE__ */ jsxs(React23.Fragment, { children: [
67565
+ /* @__PURE__ */ jsx(NavigationMenuContent, { className: "p-0", children: /* @__PURE__ */ jsx("div", { className: "flex", children: item.groups.map((group, groupIndex) => /* @__PURE__ */ jsxs(React25.Fragment, { children: [
67586
67566
  groupIndex > 0 && /* @__PURE__ */ jsx(
67587
67567
  Separator,
67588
67568
  {
@@ -68334,7 +68314,7 @@ var NavbarSimpleLinks = ({
68334
68314
  const renderNavItems = useMemo(() => {
68335
68315
  if (navItemsSlot) return navItemsSlot;
68336
68316
  if (!navItems || navItems.length === 0) return null;
68337
- return navItems.map((item) => /* @__PURE__ */ jsx(React23.Fragment, { children: /* @__PURE__ */ jsx(NavigationMenuItem, { children: /* @__PURE__ */ jsx(
68317
+ return navItems.map((item) => /* @__PURE__ */ jsx(React25.Fragment, { children: /* @__PURE__ */ jsx(NavigationMenuItem, { children: /* @__PURE__ */ jsx(
68338
68318
  NavigationMenuLink,
68339
68319
  {
68340
68320
  "data-nav-item": item.name,
@@ -73363,7 +73343,7 @@ function PricingFullComparison({
73363
73343
  resolvedPlanIds[index]
73364
73344
  ))
73365
73345
  ] }) }),
73366
- /* @__PURE__ */ jsx("tbody", { children: categories.map((category) => /* @__PURE__ */ jsxs(React23.Fragment, { children: [
73346
+ /* @__PURE__ */ jsx("tbody", { children: categories.map((category) => /* @__PURE__ */ jsxs(React25.Fragment, { children: [
73367
73347
  /* @__PURE__ */ jsx("tr", { className: cn(getNestedCardBg(background), getNestedCardTextColor(background), categoryRowClassName), children: /* @__PURE__ */ jsx(
73368
73348
  "td",
73369
73349
  {
@@ -77964,9 +77944,9 @@ function ProcessStickySteps({
77964
77944
  );
77965
77945
  }
77966
77946
  var usePrevious = (value) => {
77967
- const [prev, setPrev] = React23.useState(void 0);
77968
- const ref = React23.useRef(value);
77969
- React23.useEffect(() => {
77947
+ const [prev, setPrev] = React25.useState(void 0);
77948
+ const ref = React25.useRef(value);
77949
+ React25.useEffect(() => {
77970
77950
  setPrev(ref.current);
77971
77951
  ref.current = value;
77972
77952
  }, [value]);
@@ -77979,12 +77959,12 @@ var ProcessCard = ({
77979
77959
  itemClassName,
77980
77960
  background
77981
77961
  }) => {
77982
- const ref = React23.useRef(null);
77962
+ const ref = React25.useRef(null);
77983
77963
  const itemInView = useInView(ref, {
77984
77964
  amount: 0,
77985
77965
  margin: "0px 0px -60% 0px"
77986
77966
  });
77987
- React23.useEffect(() => {
77967
+ React25.useEffect(() => {
77988
77968
  if (itemInView) {
77989
77969
  setActive(index);
77990
77970
  }
@@ -78034,7 +78014,7 @@ function ProcessScrollImage({
78034
78014
  ctaText,
78035
78015
  ctaUrl
78036
78016
  }) {
78037
- const [active, setActive] = React23.useState(0);
78017
+ const [active, setActive] = React25.useState(0);
78038
78018
  const previousActive = usePrevious(active);
78039
78019
  const resolvedHeading = title ?? heading;
78040
78020
  const resolvedActions = actions ?? (ctaText && ctaUrl ? [
@@ -78218,7 +78198,7 @@ var ProcessCard2 = ({
78218
78198
  hoverImageClassName,
78219
78199
  background
78220
78200
  }) => {
78221
- const [isHovered, setIsHovered] = React23.useState(false);
78201
+ const [isHovered, setIsHovered] = React25.useState(false);
78222
78202
  const titleText = typeof step.title === "string" ? step.title : `Step ${index + 1}`;
78223
78203
  return /* @__PURE__ */ jsxs(
78224
78204
  "li",
@@ -78542,7 +78522,7 @@ function ProcessExpandableTimeline({
78542
78522
  // Backwards compatibility
78543
78523
  title
78544
78524
  }) {
78545
- const [expandedIndex, setExpandedIndex] = React23.useState(null);
78525
+ const [expandedIndex, setExpandedIndex] = React25.useState(null);
78546
78526
  const resolvedHeading = title ?? heading;
78547
78527
  const toggleExpand = (index) => {
78548
78528
  setExpandedIndex(expandedIndex === index ? null : index);
@@ -83313,7 +83293,7 @@ function ListAchievementsShowcase({
83313
83293
  if (!items || items.length === 0) return null;
83314
83294
  return /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col", itemsClassName), children: [
83315
83295
  /* @__PURE__ */ jsx(Separator, {}),
83316
- items.map((item, index) => /* @__PURE__ */ jsxs(React23.Fragment, { children: [
83296
+ items.map((item, index) => /* @__PURE__ */ jsxs(React25.Fragment, { children: [
83317
83297
  /* @__PURE__ */ jsxs(
83318
83298
  "div",
83319
83299
  {
@@ -83433,7 +83413,7 @@ function ListCareerTimeline({
83433
83413
  const renderExperiences = useMemo(() => {
83434
83414
  if (experiencesSlot) return experiencesSlot;
83435
83415
  if (!experiences || experiences.length === 0) return null;
83436
- return /* @__PURE__ */ jsx("div", { className: experiencesClassName, children: experiences.map((experience, idx) => /* @__PURE__ */ jsxs(React23.Fragment, { children: [
83416
+ return /* @__PURE__ */ jsx("div", { className: experiencesClassName, children: experiences.map((experience, idx) => /* @__PURE__ */ jsxs(React25.Fragment, { children: [
83437
83417
  /* @__PURE__ */ jsx(Separator, {}),
83438
83418
  /* @__PURE__ */ jsxs(
83439
83419
  "div",
@@ -83454,7 +83434,7 @@ function ListCareerTimeline({
83454
83434
  const renderAwards = useMemo(() => {
83455
83435
  if (awardsSlot) return awardsSlot;
83456
83436
  if (!awards || awards.length === 0) return null;
83457
- return /* @__PURE__ */ jsx("div", { className: awardsClassName, children: awards.map((award, idx) => /* @__PURE__ */ jsxs(React23.Fragment, { children: [
83437
+ return /* @__PURE__ */ jsx("div", { className: awardsClassName, children: awards.map((award, idx) => /* @__PURE__ */ jsxs(React25.Fragment, { children: [
83458
83438
  /* @__PURE__ */ jsx(Separator, {}),
83459
83439
  /* @__PURE__ */ jsxs(
83460
83440
  "div",
@@ -83589,7 +83569,7 @@ function ListMetricsDashboard({
83589
83569
  activeCategory: controlledActiveCategory,
83590
83570
  onActiveCategoryChange
83591
83571
  }) {
83592
- const [internalActiveTab, setInternalActiveTab] = React23.useState("all");
83572
+ const [internalActiveTab, setInternalActiveTab] = React25.useState("all");
83593
83573
  const activeTab = controlledActiveCategory ?? internalActiveTab;
83594
83574
  const handleTabChange = (value) => {
83595
83575
  if (onActiveCategoryChange) {
@@ -84073,7 +84053,7 @@ function ListSearchableGrid({
84073
84053
  searchTerm: controlledSearchTerm,
84074
84054
  onSearchTermChange
84075
84055
  }) {
84076
- const [internalSearchTerm, setInternalSearchTerm] = React23.useState("");
84056
+ const [internalSearchTerm, setInternalSearchTerm] = React25.useState("");
84077
84057
  const searchTerm = controlledSearchTerm ?? internalSearchTerm;
84078
84058
  const handleSearchChange = (value) => {
84079
84059
  if (onSearchTermChange) {
@@ -84082,7 +84062,7 @@ function ListSearchableGrid({
84082
84062
  setInternalSearchTerm(value);
84083
84063
  }
84084
84064
  };
84085
- const filteredItems = React23.useMemo(() => {
84065
+ const filteredItems = React25.useMemo(() => {
84086
84066
  if (!searchTerm) {
84087
84067
  return items ?? [];
84088
84068
  }
@@ -84245,7 +84225,7 @@ function ListSearchableGrid({
84245
84225
  }
84246
84226
  );
84247
84227
  }
84248
- var { useMemo: useMemo431 } = React23;
84228
+ var { useMemo: useMemo433 } = React25;
84249
84229
  function OfferModalNewsletterDiscount({
84250
84230
  title,
84251
84231
  emailPlaceholder,
@@ -84313,7 +84293,7 @@ function OfferModalNewsletterDiscount({
84313
84293
  });
84314
84294
  const formMethod = formConfig?.method?.toLowerCase() === "get" ? "get" : "post";
84315
84295
  const dialogProps = open !== void 0 ? { open, onOpenChange } : { defaultOpen };
84316
- const renderCloseButton = useMemo431(() => {
84296
+ const renderCloseButton = useMemo433(() => {
84317
84297
  if (closeButtonSlot) return closeButtonSlot;
84318
84298
  if (!closeButtonText) return null;
84319
84299
  return /* @__PURE__ */ jsx("div", { className: "absolute end-1.5 top-1.5", children: /* @__PURE__ */ jsx(DialogClose, { asChild: true, children: /* @__PURE__ */ jsx(
@@ -84327,12 +84307,12 @@ function OfferModalNewsletterDiscount({
84327
84307
  }
84328
84308
  ) }) });
84329
84309
  }, [closeButtonSlot, closeButtonText, closeClassName]);
84330
- const renderHeader = useMemo431(() => {
84310
+ const renderHeader = useMemo433(() => {
84331
84311
  if (headerSlot) return headerSlot;
84332
84312
  if (!title) return null;
84333
84313
  return /* @__PURE__ */ jsx(DialogHeader, { className: headerClassName, children: typeof title === "string" ? /* @__PURE__ */ jsx(DialogTitle, { className: cn("text-start font-serif text-2xl font-normal leading-snug", titleClassName), children: title }) : /* @__PURE__ */ jsx(DialogTitle, { className: cn("text-start font-serif text-2xl font-normal leading-snug", titleClassName), children: title }) });
84334
84314
  }, [headerSlot, title, headerClassName, titleClassName]);
84335
- const renderForm = useMemo431(() => {
84315
+ const renderForm = useMemo433(() => {
84336
84316
  if (formSlot) return formSlot;
84337
84317
  return /* @__PURE__ */ jsxs(
84338
84318
  Form,
@@ -84394,7 +84374,7 @@ function OfferModalNewsletterDiscount({
84394
84374
  }
84395
84375
  ) });
84396
84376
  }
84397
- var { useMemo: useMemo432 } = React23;
84377
+ var { useMemo: useMemo434 } = React25;
84398
84378
  function OfferModalMembershipImage({
84399
84379
  overline,
84400
84380
  title,
@@ -84471,7 +84451,7 @@ function OfferModalMembershipImage({
84471
84451
  });
84472
84452
  const formMethod = formConfig?.method?.toLowerCase() === "get" ? "get" : "post";
84473
84453
  const dialogProps = open !== void 0 ? { open, onOpenChange } : { defaultOpen };
84474
- const renderImage = useMemo432(() => {
84454
+ const renderImage = useMemo434(() => {
84475
84455
  if (imageSlot) return imageSlot;
84476
84456
  if (!image) return null;
84477
84457
  return /* @__PURE__ */ jsx("div", { className: cn("max-h-[290px] h-full overflow-hidden max-lg:hidden", imageWrapperClassName), children: /* @__PURE__ */ jsx(
@@ -84484,7 +84464,7 @@ function OfferModalMembershipImage({
84484
84464
  }
84485
84465
  ) });
84486
84466
  }, [imageSlot, image, imageWrapperClassName, imageClassName, optixFlowConfig]);
84487
- const renderCloseButton = useMemo432(() => {
84467
+ const renderCloseButton = useMemo434(() => {
84488
84468
  if (closeButtonSlot) return closeButtonSlot;
84489
84469
  return /* @__PURE__ */ jsx("div", { className: "absolute -end-px -top-px z-10", children: /* @__PURE__ */ jsx(DialogClose, { asChild: true, children: /* @__PURE__ */ jsx(
84490
84470
  Pressable,
@@ -84500,7 +84480,7 @@ function OfferModalMembershipImage({
84500
84480
  }
84501
84481
  ) }) });
84502
84482
  }, [closeButtonSlot, closeClassName]);
84503
- const renderForm = useMemo432(() => {
84483
+ const renderForm = useMemo434(() => {
84504
84484
  if (formSlot) return formSlot;
84505
84485
  return /* @__PURE__ */ jsxs(
84506
84486
  Form,
@@ -84563,7 +84543,7 @@ function OfferModalMembershipImage({
84563
84543
  }
84564
84544
  );
84565
84545
  }, [formSlot, form, formConfig, formMethod, emailPlaceholder, inputClassName, submitClassName, buttonText, formClassName]);
84566
- const renderFooter = useMemo432(() => {
84546
+ const renderFooter = useMemo434(() => {
84567
84547
  if (footerSlot) return footerSlot;
84568
84548
  if (!description) return null;
84569
84549
  return /* @__PURE__ */ jsx(DialogFooter, { className: footerClassName, children: /* @__PURE__ */ jsx(DialogDescription, { className: cn("text-muted-foreground text-center text-xs leading-relaxed", descriptionClassName), children: description }) });
@@ -84683,7 +84663,7 @@ function SheetDescription({
84683
84663
  }
84684
84664
  );
84685
84665
  }
84686
- var { useMemo: useMemo433 } = React23;
84666
+ var { useMemo: useMemo435 } = React25;
84687
84667
  function OfferModalSheetNewsletter({
84688
84668
  logo,
84689
84669
  logoSlot,
@@ -84766,7 +84746,7 @@ function OfferModalSheetNewsletter({
84766
84746
  });
84767
84747
  const formMethod = formConfig?.method?.toLowerCase() === "get" ? "get" : "post";
84768
84748
  const sheetProps = open !== void 0 ? { open, onOpenChange } : { defaultOpen };
84769
- const renderLogo = useMemo433(() => {
84749
+ const renderLogo = useMemo435(() => {
84770
84750
  if (logoSlot) return logoSlot;
84771
84751
  if (!logo) return null;
84772
84752
  const logoSrc = typeof logo.src === "string" ? logo.src : logo.src.light;
@@ -84780,7 +84760,7 @@ function OfferModalSheetNewsletter({
84780
84760
  }
84781
84761
  );
84782
84762
  }, [logoSlot, logo, logoClassName, optixFlowConfig]);
84783
- const renderHeader = useMemo433(() => {
84763
+ const renderHeader = useMemo435(() => {
84784
84764
  if (headerSlot) return headerSlot;
84785
84765
  return /* @__PURE__ */ jsxs(SheetHeader, { className: cn("gap-8 p-0", headerClassName), children: [
84786
84766
  renderLogo,
@@ -84790,7 +84770,7 @@ function OfferModalSheetNewsletter({
84790
84770
  ] })
84791
84771
  ] });
84792
84772
  }, [headerSlot, renderLogo, headerClassName, title, titleClassName, description, descriptionClassName]);
84793
- const renderForm = useMemo433(() => {
84773
+ const renderForm = useMemo435(() => {
84794
84774
  if (formSlot) return formSlot;
84795
84775
  return /* @__PURE__ */ jsx(
84796
84776
  Form,
@@ -84838,7 +84818,7 @@ function OfferModalSheetNewsletter({
84838
84818
  }
84839
84819
  );
84840
84820
  }, [formSlot, form, formConfig, formMethod, emailPlaceholder, inputClassName, submitClassName, buttonText, formClassName]);
84841
- const renderLegal = useMemo433(() => {
84821
+ const renderLegal = useMemo435(() => {
84842
84822
  if (legalSlot) return legalSlot;
84843
84823
  if (!termsUrl || !termsText || !privacyUrl || !privacyText) return null;
84844
84824
  return /* @__PURE__ */ jsxs("p", { className: cn("text-muted-foreground text-xs", legalClassName), children: [
@@ -84852,7 +84832,7 @@ function OfferModalSheetNewsletter({
84852
84832
  "."
84853
84833
  ] });
84854
84834
  }, [legalSlot, termsUrl, termsText, privacyUrl, privacyText, legalClassName]);
84855
- const renderImage = useMemo433(() => {
84835
+ const renderImage = useMemo435(() => {
84856
84836
  if (imageSlot) return imageSlot;
84857
84837
  if (!image) return null;
84858
84838
  return /* @__PURE__ */ jsx("div", { className: cn("h-1/2 basis-1/2", imageWrapperClassName), children: /* @__PURE__ */ jsx(AspectRatio, { ratio: 1, className: "overflow-hidden", children: /* @__PURE__ */ jsx(
@@ -85432,10 +85412,10 @@ function ProjectDetailSidebarNavigation(props) {
85432
85412
  heroImageClassName,
85433
85413
  metadataClassName
85434
85414
  } = props;
85435
- const [activeSection, setActiveSection] = React23.useState(
85415
+ const [activeSection, setActiveSection] = React25.useState(
85436
85416
  sections?.[0]?.id || ""
85437
85417
  );
85438
- React23.useEffect(() => {
85418
+ React25.useEffect(() => {
85439
85419
  const handleScroll = () => {
85440
85420
  const sectionElements = sections?.map(
85441
85421
  (section) => document.getElementById(section.id)
@@ -88295,7 +88275,7 @@ function ProjectDetailTabbedCaseStudy(props) {
88295
88275
  testimonialClassName,
88296
88276
  toolsClassName
88297
88277
  } = props;
88298
- const [activeTab, setActiveTab] = React23.useState(tabs?.[0]?.id || "");
88278
+ const [activeTab, setActiveTab] = React25.useState(tabs?.[0]?.id || "");
88299
88279
  const renderedBackAction = useMemo(() => {
88300
88280
  if (backActionSlot) return backActionSlot;
88301
88281
  if (!backAction) return null;
@@ -88683,7 +88663,7 @@ function RevealImage({
88683
88663
  index,
88684
88664
  optixFlowConfig
88685
88665
  }) {
88686
- const ref = React23.useRef(null);
88666
+ const ref = React25.useRef(null);
88687
88667
  const { scrollYProgress } = useScroll({
88688
88668
  target: ref,
88689
88669
  offset: ["start end", "end start"]
@@ -88878,7 +88858,7 @@ function ParallaxSection({
88878
88858
  index,
88879
88859
  optixFlowConfig
88880
88860
  }) {
88881
- const ref = React23.useRef(null);
88861
+ const ref = React25.useRef(null);
88882
88862
  const { scrollYProgress } = useScroll({
88883
88863
  target: ref,
88884
88864
  offset: ["start end", "end start"]
@@ -88951,7 +88931,7 @@ function ProjectDetailParallaxScroll(props) {
88951
88931
  heroImageClassName,
88952
88932
  sectionsClassName
88953
88933
  } = props;
88954
- const heroRef = React23.useRef(null);
88934
+ const heroRef = React25.useRef(null);
88955
88935
  const { scrollYProgress } = useScroll({
88956
88936
  target: heroRef,
88957
88937
  offset: ["start start", "end start"]
@@ -89281,7 +89261,7 @@ function BannerDeliveryCountdown({
89281
89261
  }, [prefixText, timerContent, middleText, deliveryDateContent]);
89282
89262
  return /* @__PURE__ */ jsx(Section, { background, spacing: "none", className: cn("bg-accent text-accent-foreground", className), children: /* @__PURE__ */ jsx("div", { className: cn("container py-2.5", containerClassName), children: /* @__PURE__ */ jsx("div", { className: cn("flex flex-wrap items-center justify-center gap-3 text-sm", contentClassName), children: /* @__PURE__ */ jsxs("div", { className: cn("flex items-center gap-2", messageClassName), children: [
89283
89263
  iconContent,
89284
- messageParts.length > 0 && /* @__PURE__ */ jsx("span", { children: messageParts.map((part, index) => /* @__PURE__ */ jsxs(React23.Fragment, { children: [
89264
+ messageParts.length > 0 && /* @__PURE__ */ jsx("span", { children: messageParts.map((part, index) => /* @__PURE__ */ jsxs(React25.Fragment, { children: [
89285
89265
  index > 0 ? " " : null,
89286
89266
  part
89287
89267
  ] }, index)) })
@@ -90417,7 +90397,7 @@ function IndustriesExpandableShowcase({
90417
90397
  patternClassName,
90418
90398
  optixFlowConfig
90419
90399
  }) {
90420
- const [activeContractor, setActiveContractor] = React23.useState(
90400
+ const [activeContractor, setActiveContractor] = React25.useState(
90421
90401
  contractors?.[0]?.id || ""
90422
90402
  );
90423
90403
  const handleContractorHover = (contractorId) => {
@@ -91070,7 +91050,7 @@ function ResourceDetailDocumentSidebar({
91070
91050
  }) {
91071
91051
  const renderedBreadcrumbs = useMemo(() => {
91072
91052
  if (breadcrumbsSlot) return breadcrumbsSlot;
91073
- return /* @__PURE__ */ jsx(Breadcrumb, { className: breadcrumbsClassName, children: /* @__PURE__ */ jsx(BreadcrumbList, { children: breadcrumbs?.map((crumb, index) => /* @__PURE__ */ jsxs(React23.Fragment, { children: [
91053
+ return /* @__PURE__ */ jsx(Breadcrumb, { className: breadcrumbsClassName, children: /* @__PURE__ */ jsx(BreadcrumbList, { children: breadcrumbs?.map((crumb, index) => /* @__PURE__ */ jsxs(React25.Fragment, { children: [
91074
91054
  /* @__PURE__ */ jsx(BreadcrumbItem, { children: !crumb.href ? /* @__PURE__ */ jsx(BreadcrumbPage, { children: typeof crumb.label === "string" ? crumb.label : crumb.label }) : /* @__PURE__ */ jsx(BreadcrumbLink, { href: crumb.href, children: index === 0 ? /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/home", size: 16 }) : typeof crumb.label === "string" ? crumb.label : crumb.label }) }),
91075
91055
  index < (breadcrumbs?.length || 0) - 1 && /* @__PURE__ */ jsx(BreadcrumbSeparator, {})
91076
91056
  ] }, index)) }) });
@@ -94471,8 +94451,8 @@ function ServicesListTableHover({
94471
94451
  patternOpacity,
94472
94452
  optixFlowConfig
94473
94453
  }) {
94474
- const [hoveredIndex, setHoveredIndex] = React23.useState(null);
94475
- const [mousePosition, setMousePosition] = React23.useState({ x: 0, y: 0 });
94454
+ const [hoveredIndex, setHoveredIndex] = React25.useState(null);
94455
+ const [mousePosition, setMousePosition] = React25.useState({ x: 0, y: 0 });
94476
94456
  const handleMouseMove = (e) => {
94477
94457
  setMousePosition({ x: e.clientX, y: e.clientY });
94478
94458
  };
@@ -94722,7 +94702,7 @@ function ServicesListStickyImage({
94722
94702
  patternOpacity,
94723
94703
  optixFlowConfig
94724
94704
  }) {
94725
- const [activeIndex, setActiveIndex] = React23.useState(0);
94705
+ const [activeIndex, setActiveIndex] = React25.useState(0);
94726
94706
  const renderServices = () => {
94727
94707
  if (servicesSlot) return servicesSlot;
94728
94708
  if (!services || services.length === 0) return null;
@@ -94974,8 +94954,8 @@ function ServicesListVideoShowcase({
94974
94954
  patternOpacity,
94975
94955
  optixFlowConfig
94976
94956
  }) {
94977
- const [playingIndex, setPlayingIndex] = React23.useState(null);
94978
- const videoRefs = React23.useRef([]);
94957
+ const [playingIndex, setPlayingIndex] = React25.useState(null);
94958
+ const videoRefs = React25.useRef([]);
94979
94959
  const handleMouseEnter = (index) => {
94980
94960
  setPlayingIndex(index);
94981
94961
  videoRefs.current[index]?.play();
@@ -98268,7 +98248,7 @@ function StatsCircularProgress({
98268
98248
  statInfoClassName
98269
98249
  }) {
98270
98250
  const effectiveDefaultCategory = defaultCategory || (categories && categories.length > 0 ? categories[0].id : "");
98271
- const [category, setCategory] = React23.useState(effectiveDefaultCategory);
98251
+ const [category, setCategory] = React25.useState(effectiveDefaultCategory);
98272
98252
  const badgeContent = useMemo(() => {
98273
98253
  if (badgeSlot) return badgeSlot;
98274
98254
  if (!badge) return null;
@@ -98561,8 +98541,8 @@ function StatsCardGroup({
98561
98541
  );
98562
98542
  }
98563
98543
  function useAnimatedCounter(endValue, duration = 2e3, isVisible) {
98564
- const [count, setCount] = React23.useState(0);
98565
- React23.useEffect(() => {
98544
+ const [count, setCount] = React25.useState(0);
98545
+ React25.useEffect(() => {
98566
98546
  if (!isVisible) return;
98567
98547
  let startTime = null;
98568
98548
  let animationFrame;
@@ -98650,9 +98630,9 @@ function StatsAnimatedCounter({
98650
98630
  statLabelClassName,
98651
98631
  statIconClassName
98652
98632
  }) {
98653
- const [isVisible, setIsVisible] = React23.useState(false);
98654
- const sectionRef = React23.useRef(null);
98655
- React23.useEffect(() => {
98633
+ const [isVisible, setIsVisible] = React25.useState(false);
98634
+ const sectionRef = React25.useRef(null);
98635
+ React25.useEffect(() => {
98656
98636
  const observer = new IntersectionObserver(
98657
98637
  ([entry]) => {
98658
98638
  if (entry.isIntersecting) {
@@ -98740,8 +98720,8 @@ function StatsAnimatedCounter({
98740
98720
  );
98741
98721
  }
98742
98722
  function useNumberTicker(endValue, duration = 2500, isVisible, decimals = 0) {
98743
- const [displayValue, setDisplayValue] = React23.useState("0");
98744
- React23.useEffect(() => {
98723
+ const [displayValue, setDisplayValue] = React25.useState("0");
98724
+ React25.useEffect(() => {
98745
98725
  if (!isVisible) return;
98746
98726
  let startTime = null;
98747
98727
  let animationFrame;
@@ -98856,9 +98836,9 @@ function StatsNumberTicker({
98856
98836
  statLabelClassName,
98857
98837
  statDescriptionClassName
98858
98838
  }) {
98859
- const [isVisible, setIsVisible] = React23.useState(false);
98860
- const sectionRef = React23.useRef(null);
98861
- React23.useEffect(() => {
98839
+ const [isVisible, setIsVisible] = React25.useState(false);
98840
+ const sectionRef = React25.useRef(null);
98841
+ React25.useEffect(() => {
98862
98842
  const observer = new IntersectionObserver(
98863
98843
  ([entry]) => {
98864
98844
  if (entry.isIntersecting) {
@@ -99117,9 +99097,9 @@ function StatsBarComparison({
99117
99097
  barValueClassName,
99118
99098
  barTrackClassName
99119
99099
  }) {
99120
- const [isVisible, setIsVisible] = React23.useState(!animate);
99121
- const sectionRef = React23.useRef(null);
99122
- React23.useEffect(() => {
99100
+ const [isVisible, setIsVisible] = React25.useState(!animate);
99101
+ const sectionRef = React25.useRef(null);
99102
+ React25.useEffect(() => {
99123
99103
  if (!animate) return;
99124
99104
  const observer = new IntersectionObserver(
99125
99105
  ([entry]) => {
@@ -99297,7 +99277,7 @@ function TimelineVerticalIconDashed({
99297
99277
  "mx-auto flex flex-col items-center justify-center text-center sm:max-w-xl",
99298
99278
  stepsClassName
99299
99279
  ),
99300
- children: steps.map((step, index) => /* @__PURE__ */ jsxs(React23.Fragment, { children: [
99280
+ children: steps.map((step, index) => /* @__PURE__ */ jsxs(React25.Fragment, { children: [
99301
99281
  /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col items-center", stepClassName), children: [
99302
99282
  /* @__PURE__ */ jsx(
99303
99283
  "span",
@@ -99564,7 +99544,7 @@ function TimelineTwoColumnFeatured({
99564
99544
  style,
99565
99545
  optixFlowConfig
99566
99546
  }) {
99567
- const renderActions = React23.useMemo(() => {
99547
+ const renderActions = React25.useMemo(() => {
99568
99548
  if (actionsSlot) {
99569
99549
  return actionsSlot;
99570
99550
  }
@@ -99692,7 +99672,7 @@ function TimelineTwoColumnFeatured({
99692
99672
  }
99693
99673
  );
99694
99674
  }
99695
- var DiagonalPattern = React23.memo(({
99675
+ var DiagonalPattern = React25.memo(({
99696
99676
  className,
99697
99677
  patternOpacity = 0.15
99698
99678
  }) => {
@@ -99731,7 +99711,7 @@ function TimelineAlternatingDiagonal({
99731
99711
  style,
99732
99712
  optixFlowConfig
99733
99713
  }) {
99734
- const renderedBadge = React23.useMemo(() => {
99714
+ const renderedBadge = React25.useMemo(() => {
99735
99715
  if (badgeSlot) {
99736
99716
  return badgeSlot;
99737
99717
  }
@@ -100109,7 +100089,7 @@ function TimelineProductivityList({
100109
100089
  }
100110
100090
  );
100111
100091
  }
100112
- var ProcessBar = React23.memo(({ currentStep, steps }) => /* @__PURE__ */ jsx("div", { className: "relative w-full scale-75", children: /* @__PURE__ */ jsx("div", { className: "flex items-center justify-between", children: steps.map((step, index) => /* @__PURE__ */ jsxs(React23.Fragment, { children: [
100092
+ var ProcessBar = React25.memo(({ currentStep, steps }) => /* @__PURE__ */ jsx("div", { className: "relative w-full scale-75", children: /* @__PURE__ */ jsx("div", { className: "flex items-center justify-between", children: steps.map((step, index) => /* @__PURE__ */ jsxs(React25.Fragment, { children: [
100113
100093
  /* @__PURE__ */ jsx("div", { className: "flex flex-col items-center", children: /* @__PURE__ */ jsx(
100114
100094
  motion.div,
100115
100095
  {
@@ -100136,7 +100116,7 @@ var ProcessBar = React23.memo(({ currentStep, steps }) => /* @__PURE__ */ jsx("d
100136
100116
  )
100137
100117
  ] })
100138
100118
  ] }, index)) }) }));
100139
- var StepperContent = React23.memo(({ step, optixFlowConfig, imageClassName, descriptionClassName, background }) => {
100119
+ var StepperContent = React25.memo(({ step, optixFlowConfig, imageClassName, descriptionClassName, background }) => {
100140
100120
  return /* @__PURE__ */ jsxs("div", { className: cn("my-4 flex min-h-[400px] w-full flex-col items-center justify-center overflow-hidden rounded-2xl p-6 text-center", getNestedCardBg(background), getNestedCardTextColor(background)), children: [
100141
100121
  /* @__PURE__ */ jsx(
100142
100122
  motion.div,
@@ -100169,7 +100149,7 @@ var StepperContent = React23.memo(({ step, optixFlowConfig, imageClassName, desc
100169
100149
  )
100170
100150
  ] });
100171
100151
  });
100172
- var NavButtons = React23.memo(({ handlePrev, handleNext }) => /* @__PURE__ */ jsxs("div", { className: "flex w-full justify-end gap-3 tracking-tight", children: [
100152
+ var NavButtons = React25.memo(({ handlePrev, handleNext }) => /* @__PURE__ */ jsxs("div", { className: "flex w-full justify-end gap-3 tracking-tight", children: [
100173
100153
  /* @__PURE__ */ jsxs(
100174
100154
  Pressable,
100175
100155
  {
@@ -100220,10 +100200,10 @@ function TimelineStepperAnimated({
100220
100200
  }) {
100221
100201
  const safeInitialStep = (steps?.length ?? 0) > 0 ? Math.max(0, Math.min(initialStep ?? 0, (steps?.length ?? 1) - 1)) : 0;
100222
100202
  const [currentStep, setCurrentStep] = useState(safeInitialStep);
100223
- const handleNext = React23.useCallback(() => {
100203
+ const handleNext = React25.useCallback(() => {
100224
100204
  setCurrentStep((prev) => Math.min(prev + 1, (steps?.length ?? 1) - 1));
100225
100205
  }, [steps?.length]);
100226
- const handlePrev = React23.useCallback(() => {
100206
+ const handlePrev = React25.useCallback(() => {
100227
100207
  setCurrentStep((prev) => Math.max(prev - 1, 0));
100228
100208
  }, []);
100229
100209
  const safeCurrentStep = (steps?.length ?? 0) > 0 ? Math.max(0, Math.min(currentStep, (steps?.length ?? 1) - 1)) : 0;
@@ -100932,7 +100912,7 @@ function TimelineTabbedPhases({
100932
100912
  style,
100933
100913
  optixFlowConfig
100934
100914
  }) {
100935
- const renderDownloadButton = React23.useMemo(() => {
100915
+ const renderDownloadButton = React25.useMemo(() => {
100936
100916
  if (downloadSlot) {
100937
100917
  return downloadSlot;
100938
100918
  }
@@ -101152,7 +101132,7 @@ function TimelineProductLaunch({
101152
101132
  id,
101153
101133
  style
101154
101134
  }) {
101155
- const renderCta = React23.useMemo(() => {
101135
+ const renderCta = React25.useMemo(() => {
101156
101136
  if (ctaSlot) {
101157
101137
  return ctaSlot;
101158
101138
  }
@@ -101617,9 +101597,9 @@ function LinkTreeBlock({
101617
101597
  }) {
101618
101598
  const resolvedBackground = background;
101619
101599
  const resolvedPattern = pattern ?? backgroundPattern;
101620
- const [lightboxOpen, setLightboxOpen] = React23.useState(false);
101621
- const [lightboxIndex, setLightboxIndex] = React23.useState(0);
101622
- const lightboxItems = React23.useMemo(() => {
101600
+ const [lightboxOpen, setLightboxOpen] = React25.useState(false);
101601
+ const [lightboxIndex, setLightboxIndex] = React25.useState(0);
101602
+ const lightboxItems = React25.useMemo(() => {
101623
101603
  if (!mediaGallery || mediaGallery.length === 0) return [];
101624
101604
  return mediaGallery.slice(0, mediaGalleryLimit).map((item, index) => ({
101625
101605
  id: item.id ?? `media-${index}`,
@@ -101631,11 +101611,11 @@ function LinkTreeBlock({
101631
101611
  share: true
101632
101612
  }));
101633
101613
  }, [mediaGallery, mediaGalleryLimit]);
101634
- const handleMediaClick = React23.useCallback((index) => {
101614
+ const handleMediaClick = React25.useCallback((index) => {
101635
101615
  setLightboxIndex(index);
101636
101616
  setLightboxOpen(true);
101637
101617
  }, []);
101638
- const handleLightboxClose = React23.useCallback(() => {
101618
+ const handleLightboxClose = React25.useCallback(() => {
101639
101619
  setLightboxOpen(false);
101640
101620
  }, []);
101641
101621
  const resolveImage = (value, fallbackAlt) => {
@@ -101647,7 +101627,7 @@ function LinkTreeBlock({
101647
101627
  };
101648
101628
  const nameForAlt = typeof brandName === "string" ? brandName : "Brand avatar";
101649
101629
  const resolvedAvatar = resolveImage(brandAvatar || brandLogo, nameForAlt) || resolveImage(blockBrandedIconsAndPlaceholders.avatar1, nameForAlt);
101650
- const renderBrandHeader = React23.useMemo(() => {
101630
+ const renderBrandHeader = React25.useMemo(() => {
101651
101631
  if (brandSlot) return brandSlot;
101652
101632
  return /* @__PURE__ */ jsxs(
101653
101633
  "div",
@@ -101734,7 +101714,7 @@ function LinkTreeBlock({
101734
101714
  brandTagline,
101735
101715
  taglineClassName
101736
101716
  ]);
101737
- const renderLinks = React23.useMemo(() => {
101717
+ const renderLinks = React25.useMemo(() => {
101738
101718
  if (linksSlot) return linksSlot;
101739
101719
  if (!links || links.length === 0) return null;
101740
101720
  return /* @__PURE__ */ jsx("div", { className: cn("space-y-3", linksClassName), children: links.map((link, index) => {
@@ -101851,7 +101831,7 @@ function LinkTreeBlock({
101851
101831
  linkBadgeClassName,
101852
101832
  linkChevronClassName
101853
101833
  ]);
101854
- const renderMediaGallery = React23.useMemo(() => {
101834
+ const renderMediaGallery = React25.useMemo(() => {
101855
101835
  if (mediaGallerySlot) return mediaGallerySlot;
101856
101836
  if (!mediaGallery || mediaGallery.length === 0) return null;
101857
101837
  const items = mediaGallery.slice(0, mediaGalleryLimit);
@@ -101965,7 +101945,7 @@ function LinkTreeBlock({
101965
101945
  mediaGalleryOverlayClassName,
101966
101946
  mediaGalleryPlayIconClassName
101967
101947
  ]);
101968
- const renderSocialLinks = React23.useMemo(() => {
101948
+ const renderSocialLinks = React25.useMemo(() => {
101969
101949
  if (socialLinksSlot) return socialLinksSlot;
101970
101950
  if (!socialLinks || socialLinks.length === 0) return null;
101971
101951
  return /* @__PURE__ */ jsx(
@@ -102011,7 +101991,7 @@ function LinkTreeBlock({
102011
101991
  socialIconClassName,
102012
101992
  socialLinkClassName
102013
101993
  ]);
102014
- const renderFooter = React23.useMemo(() => {
101994
+ const renderFooter = React25.useMemo(() => {
102015
101995
  if (footerSlot) return footerSlot;
102016
101996
  if (!footerAction) return null;
102017
101997
  const resolvedFooterAction = footerAction;