@opensite/ui 1.2.4 → 1.2.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.cjs CHANGED
@@ -24093,7 +24093,7 @@ function FeatureChecklistImage({
24093
24093
  checklistItems,
24094
24094
  checklistSlot,
24095
24095
  className,
24096
- containerClassName = "px-6 sm:px-6 md:mx-6 lg:px-8",
24096
+ containerClassName = "px-6 sm:px-6 md:px-6 lg:px-8",
24097
24097
  contentWrapperClassName,
24098
24098
  imageClassName,
24099
24099
  contentClassName,
@@ -24288,7 +24288,7 @@ function FeatureCarouselProgress({
24288
24288
  slides,
24289
24289
  slidesSlot,
24290
24290
  className,
24291
- containerClassName = "px-6 sm:px-6 md:mx-6 lg:px-8",
24291
+ containerClassName = "mx-0 w-full relative z-10 max-w-full px-6 sm:px-6 md:mx-0 lg:px-8",
24292
24292
  headerClassName,
24293
24293
  badgeClassName,
24294
24294
  carouselClassName,
@@ -24296,7 +24296,7 @@ function FeatureCarouselProgress({
24296
24296
  progressClassName,
24297
24297
  cardClassName,
24298
24298
  background,
24299
- spacing = "py-6 md:py-32",
24299
+ spacing = "py-12 md:py-32",
24300
24300
  pattern,
24301
24301
  patternOpacity,
24302
24302
  patternClassName
@@ -24329,7 +24329,11 @@ function FeatureCarouselProgress({
24329
24329
  children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "p-1 h-auto md:h-full", children: /* @__PURE__ */ jsxRuntime.jsx(
24330
24330
  Card,
24331
24331
  {
24332
- className: cn("h-auto md:h-full", cardClassName, slide.className),
24332
+ className: cn(
24333
+ "h-auto md:h-full py-0",
24334
+ cardClassName,
24335
+ slide.className
24336
+ ),
24333
24337
  children: /* @__PURE__ */ jsxRuntime.jsx(CardContent, { className: "flex flex-col justify-center p-6 h-full", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col h-full justify-between", children: [
24334
24338
  (slide.icon || slide.iconName) && /* @__PURE__ */ jsxRuntime.jsx(
24335
24339
  "span",
@@ -24341,7 +24345,7 @@ function FeatureCarouselProgress({
24341
24345
  children: renderSlideIcon(slide)
24342
24346
  }
24343
24347
  ),
24344
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-4", children: [
24348
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2", children: [
24345
24349
  slide.title && (typeof slide.title === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
24346
24350
  Pressable,
24347
24351
  {
@@ -24366,7 +24370,7 @@ function FeatureCarouselProgress({
24366
24370
  "p",
24367
24371
  {
24368
24372
  className: cn(
24369
- "pt-2 text-card-foreground",
24373
+ "text-card-foreground",
24370
24374
  slide.descriptionClassName
24371
24375
  ),
24372
24376
  children: slide.description
@@ -24375,7 +24379,7 @@ function FeatureCarouselProgress({
24375
24379
  "div",
24376
24380
  {
24377
24381
  className: cn(
24378
- "pt-2 text-card-foreground",
24382
+ "text-card-foreground",
24379
24383
  slide.descriptionClassName
24380
24384
  ),
24381
24385
  children: slide.description
@@ -24403,14 +24407,17 @@ function FeatureCarouselProgress({
24403
24407
  badge || title || description ? /* @__PURE__ */ jsxRuntime.jsxs(
24404
24408
  "div",
24405
24409
  {
24406
- className: cn("flex flex-col items-center gap-6", headerClassName),
24410
+ className: cn(
24411
+ "flex flex-col items-center gap-6 text-center",
24412
+ headerClassName
24413
+ ),
24407
24414
  children: [
24408
24415
  badge && /* @__PURE__ */ jsxRuntime.jsx(Badge, { className: badgeClassName, children: badge }),
24409
24416
  title && (typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
24410
24417
  "h2",
24411
24418
  {
24412
24419
  className: cn(
24413
- "text-xl font-semibold text-balance md:text-2xl lg:text-3xl",
24420
+ "text-xl font-semibold text-balance md:text-2xl lg:text-3xl max-w-lg md:max-w-md",
24414
24421
  titleClassName
24415
24422
  ),
24416
24423
  children: title
@@ -24419,13 +24426,19 @@ function FeatureCarouselProgress({
24419
24426
  "div",
24420
24427
  {
24421
24428
  className: cn(
24422
- "text-xl font-semibold text-balance md:text-2xl lg:text-3xl",
24429
+ "text-xl font-semibold text-balance md:text-2xl lg:text-3xl max-w-lg md:max-w-md",
24423
24430
  titleClassName
24424
24431
  ),
24425
24432
  children: title
24426
24433
  }
24427
24434
  )),
24428
- description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mt-1 md:mt-6", descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mt-1 md:mt-6", descriptionClassName), children: description }))
24435
+ description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("max-w-lg md:max-w-md", descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx(
24436
+ "div",
24437
+ {
24438
+ className: cn("max-w-lg md:max-w-md", descriptionClassName),
24439
+ children: description
24440
+ }
24441
+ ))
24429
24442
  ]
24430
24443
  }
24431
24444
  ) : null,
@@ -24475,7 +24488,7 @@ function FeatureCardGridLinked({
24475
24488
  features,
24476
24489
  featuresSlot,
24477
24490
  className,
24478
- containerClassName = "px-6 sm:px-6 md:mx-6 lg:px-8",
24491
+ containerClassName = "px-6 sm:px-6 md:px-6 lg:px-8",
24479
24492
  titleWrapperClassName,
24480
24493
  titleClassName,
24481
24494
  descriptionClassName,
@@ -24628,7 +24641,7 @@ function FeatureNumberedCards({
24628
24641
  features,
24629
24642
  featuresSlot,
24630
24643
  className,
24631
- containerClassName = "px-6 sm:px-6 md:mx-6 lg:px-8",
24644
+ containerClassName = "px-6 sm:px-6 md:px-6 lg:px-8",
24632
24645
  cardsWrapperClassName,
24633
24646
  cardClassName,
24634
24647
  titleClassName,
@@ -26848,6 +26861,7 @@ function FeatureBentoImageGrid({
26848
26861
  function FeatureImageCardsThreeColumn({
26849
26862
  title,
26850
26863
  description,
26864
+ headerClassName,
26851
26865
  cards,
26852
26866
  cardsSlot,
26853
26867
  className,
@@ -26863,28 +26877,34 @@ function FeatureImageCardsThreeColumn({
26863
26877
  patternOpacity,
26864
26878
  patternClassName
26865
26879
  }) {
26866
- const renderImage = React52.useCallback((card, imageAlt) => {
26867
- if (card.imageSlot) return card.imageSlot;
26868
- if (!card.imageSrc) return null;
26869
- return /* @__PURE__ */ jsxRuntime.jsx(
26870
- img.Img,
26871
- {
26872
- src: card.imageSrc,
26873
- alt: imageAlt,
26874
- className: "h-full max-h-[450px] w-full rounded-xl object-cover object-center",
26875
- loading: "lazy",
26876
- optixFlowConfig
26880
+ const renderImage = React52.useCallback(
26881
+ (card, imageAlt) => {
26882
+ if (card.imageSlot) return card.imageSlot;
26883
+ if (!card.imageSrc) return null;
26884
+ return /* @__PURE__ */ jsxRuntime.jsx(
26885
+ img.Img,
26886
+ {
26887
+ src: card.imageSrc,
26888
+ alt: imageAlt,
26889
+ className: "h-full max-h-[450px] w-full rounded-xl object-cover object-center",
26890
+ loading: "lazy",
26891
+ optixFlowConfig
26892
+ }
26893
+ );
26894
+ },
26895
+ [optixFlowConfig]
26896
+ );
26897
+ const renderBadgeIcon = React52.useCallback(
26898
+ (card) => {
26899
+ if (card.avatarSrc) {
26900
+ return /* @__PURE__ */ jsxRuntime.jsx(Avatar, { className: "size-7 rounded-full", children: /* @__PURE__ */ jsxRuntime.jsx(AvatarImage, { src: card.avatarSrc, alt: "Avatar" }) });
26877
26901
  }
26878
- );
26879
- }, [optixFlowConfig]);
26880
- const renderBadgeIcon = React52.useCallback((card) => {
26881
- if (card.avatarSrc) {
26882
- return /* @__PURE__ */ jsxRuntime.jsx(Avatar, { className: "size-7 rounded-full", children: /* @__PURE__ */ jsxRuntime.jsx(AvatarImage, { src: card.avatarSrc, alt: "Avatar" }) });
26883
- }
26884
- if (card.icon) return card.icon;
26885
- if (!card.iconName) return null;
26886
- return /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: card.iconName, size: 24 });
26887
- }, []);
26902
+ if (card.icon) return card.icon;
26903
+ if (!card.iconName) return null;
26904
+ return /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: card.iconName, size: 24 });
26905
+ },
26906
+ []
26907
+ );
26888
26908
  const cardsContent = React52.useMemo(() => {
26889
26909
  if (cardsSlot) return cardsSlot;
26890
26910
  if (!cards || cards.length === 0) return null;
@@ -26895,31 +26915,53 @@ function FeatureImageCardsThreeColumn({
26895
26915
  {
26896
26916
  href: card.link,
26897
26917
  onClick: card.onClick,
26898
- className: cn("group relative overflow-hidden rounded-xl", cardClassName, card.className),
26918
+ className: cn(
26919
+ "group relative overflow-hidden rounded-xl",
26920
+ cardClassName,
26921
+ card.className
26922
+ ),
26899
26923
  children: [
26900
26924
  renderImage(card, imageAlt),
26901
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute top-0 right-0 bottom-0 left-0 translate-y-20 rounded-xl bg-linear-to-t from-primary to-transparent transition-transform duration-300 group-hover:translate-y-0" }),
26902
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "absolute top-0 flex h-full w-full flex-col justify-between p-7", children: [
26903
- (card.badgeText || card.avatarSrc || card.icon || card.iconName) && /* @__PURE__ */ jsxRuntime.jsxs(
26904
- "span",
26905
- {
26906
- className: cn(
26907
- "ml-auto flex w-fit items-center gap-2 text-sm font-semibold",
26908
- card.avatarSrc ? "rounded-full bg-foreground/30 px-4 py-2.5 backdrop-blur-sm" : "rounded-full bg-primary px-4 py-2.5 text-primary-foreground",
26909
- card.badgeClassName
26910
- ),
26911
- children: [
26912
- renderBadgeIcon(card),
26913
- card.badgeText
26914
- ]
26915
- }
26916
- ),
26925
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute top-0 right-0 bottom-0 left-0 translate-y-20 rounded-xl bg-linear-to-t from-black to-transparent transition-transform duration-300 group-hover:translate-y-0" }),
26926
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "absolute top-0 flex h-full w-full flex-col justify-between p-4 md:p-6", children: [
26927
+ (card.badgeText || card.avatarSrc || card.icon || card.iconName) && /* @__PURE__ */ jsxRuntime.jsxs(Badge, { variant: "default", className: cn(card.badgeClassName), children: [
26928
+ renderBadgeIcon(card),
26929
+ card.badgeText
26930
+ ] }),
26917
26931
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-5", children: [
26918
- card.title && (typeof card.title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h4", { className: cn("text-2xl font-semibold lg:text-3xl", card.titleClassName), children: card.title }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-2xl font-semibold lg:text-3xl", card.titleClassName), children: card.title })),
26919
- card.linkText && /* @__PURE__ */ jsxRuntime.jsxs("p", { className: cn("flex items-center gap-1 font-medium", card.linkClassName), children: [
26920
- card.linkText,
26921
- /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/chevron-right", size: 16 })
26922
- ] })
26932
+ card.title && (typeof card.title === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
26933
+ "h3",
26934
+ {
26935
+ className: cn(
26936
+ "text-xl md:text-2xl font-semibold",
26937
+ card.titleClassName
26938
+ ),
26939
+ children: card.title
26940
+ }
26941
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
26942
+ "div",
26943
+ {
26944
+ className: cn(
26945
+ "text-xl md:text-2xl font-semibold",
26946
+ card.titleClassName
26947
+ ),
26948
+ children: card.title
26949
+ }
26950
+ )),
26951
+ card.linkText && card.link && /* @__PURE__ */ jsxRuntime.jsxs(
26952
+ Pressable,
26953
+ {
26954
+ className: cn(
26955
+ "font-bold text-xs uppercase",
26956
+ card.linkClassName
26957
+ ),
26958
+ href: card.link,
26959
+ children: [
26960
+ card.linkText,
26961
+ /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/arrow-up-right", size: 18 })
26962
+ ]
26963
+ }
26964
+ )
26923
26965
  ] })
26924
26966
  ] })
26925
26967
  ]
@@ -26928,7 +26970,7 @@ function FeatureImageCardsThreeColumn({
26928
26970
  );
26929
26971
  });
26930
26972
  }, [cardsSlot, cards, cardClassName, renderImage, renderBadgeIcon]);
26931
- return /* @__PURE__ */ jsxRuntime.jsxs(
26973
+ return /* @__PURE__ */ jsxRuntime.jsx(
26932
26974
  Section,
26933
26975
  {
26934
26976
  background,
@@ -26938,11 +26980,46 @@ function FeatureImageCardsThreeColumn({
26938
26980
  patternClassName,
26939
26981
  className,
26940
26982
  containerClassName,
26941
- children: [
26942
- title && (typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h1", { className: cn("mb-4 text-center text-4xl font-semibold", titleClassName), children: title }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mb-4 text-center text-4xl font-semibold", titleClassName), children: title })),
26943
- description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-center", getTextColor(background, "muted"), descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-center", getTextColor(background, "muted"), descriptionClassName), children: description })),
26944
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("grid gap-5 pt-14 xl:grid-cols-3", gridClassName), children: cardsContent })
26945
- ]
26983
+ children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col space-y-6 md:space-y-16", children: [
26984
+ title || description ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex flex-col gap-6 text-left", headerClassName), children: [
26985
+ title && (typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
26986
+ "h2",
26987
+ {
26988
+ className: cn(
26989
+ "text-xl font-semibold text-balance md:text-2xl lg:text-3xl max-w-lg md:max-w-md",
26990
+ titleClassName
26991
+ ),
26992
+ children: title
26993
+ }
26994
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
26995
+ "div",
26996
+ {
26997
+ className: cn(
26998
+ "text-xl font-semibold text-balance md:text-2xl lg:text-3xl max-w-lg md:max-w-md",
26999
+ titleClassName
27000
+ ),
27001
+ children: title
27002
+ }
27003
+ )),
27004
+ description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("max-w-lg md:max-w-md", descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx(
27005
+ "div",
27006
+ {
27007
+ className: cn("max-w-lg md:max-w-md", descriptionClassName),
27008
+ children: description
27009
+ }
27010
+ ))
27011
+ ] }) : null,
27012
+ /* @__PURE__ */ jsxRuntime.jsx(
27013
+ "div",
27014
+ {
27015
+ className: cn(
27016
+ "grid gap-4 md:gap-4 grid-cols-1 md:grid-cols-3",
27017
+ gridClassName
27018
+ ),
27019
+ children: cardsContent
27020
+ }
27021
+ )
27022
+ ] })
26946
27023
  }
26947
27024
  );
26948
27025
  }
@@ -26952,35 +27029,68 @@ function FeatureIconGridMuted({
26952
27029
  features,
26953
27030
  featuresSlot,
26954
27031
  className,
26955
- containerClassName,
26956
27032
  headerClassName,
26957
27033
  titleClassName,
26958
27034
  descriptionClassName,
26959
27035
  gridClassName,
26960
27036
  cardClassName,
26961
27037
  background,
26962
- spacing,
26963
27038
  pattern,
26964
27039
  patternOpacity,
26965
- patternClassName
27040
+ patternClassName,
27041
+ spacing = "py-12 md:py-32",
27042
+ containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8"
26966
27043
  }) {
26967
27044
  const renderFeatureIcon = React52.useCallback((feature) => {
26968
27045
  if (feature.icon) return feature.icon;
26969
- if (feature.iconName) return /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: feature.iconName, size: 24, className: feature.iconClassName });
27046
+ if (feature.iconName)
27047
+ return /* @__PURE__ */ jsxRuntime.jsx(
27048
+ DynamicIcon,
27049
+ {
27050
+ name: feature.iconName,
27051
+ size: 24,
27052
+ className: feature.iconClassName
27053
+ }
27054
+ );
26970
27055
  return null;
26971
27056
  }, []);
26972
27057
  const featuresContent = React52.useMemo(() => {
26973
27058
  if (featuresSlot) return featuresSlot;
26974
27059
  if (!features || features.length === 0) return null;
26975
- return features.map((feature, index) => /* @__PURE__ */ jsxRuntime.jsxs(
27060
+ return features.map((feature, index) => /* @__PURE__ */ jsxRuntime.jsx(
26976
27061
  "div",
26977
27062
  {
26978
- className: cn("flex flex-col gap-2.5 rounded-xl border p-7", cardClassName, feature.className),
26979
- children: [
27063
+ className: cn(
27064
+ "flex flex-col gap-2.5 rounded-xl border p-7 bg-muted text-muted-foreground",
27065
+ cardClassName,
27066
+ feature.className
27067
+ ),
27068
+ children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-6 md:gap-12", children: [
26980
27069
  (feature.icon || feature.iconName) && renderFeatureIcon(feature),
26981
- feature.title && (typeof feature.title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h3", { className: cn("font-semibold", feature.titleClassName), children: feature.title }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("font-semibold", feature.titleClassName), children: feature.title })),
26982
- feature.description && (typeof feature.description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-sm", getTextColor(background, "muted"), feature.descriptionClassName), children: feature.description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-sm", getTextColor(background, "muted"), feature.descriptionClassName), children: feature.description }))
26983
- ]
27070
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2 md:gap-4", children: [
27071
+ feature.title && (typeof feature.title === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
27072
+ Pressable,
27073
+ {
27074
+ href: feature.href,
27075
+ className: cn(
27076
+ "font-medium text-xl text-muted-foreground",
27077
+ feature.titleClassName
27078
+ ),
27079
+ children: feature.title
27080
+ }
27081
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
27082
+ "div",
27083
+ {
27084
+ className: cn(
27085
+ "font-medium text-xl text-muted-foreground",
27086
+ feature.titleClassName
27087
+ ),
27088
+ children: feature.title
27089
+ }
27090
+ )),
27091
+ feature.description && (typeof feature.description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-sm", feature.descriptionClassName), children: feature.description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-sm", feature.descriptionClassName), children: feature.description }))
27092
+ ] })
27093
+ ] })
26984
27094
  },
26985
27095
  index
26986
27096
  ));
@@ -26996,11 +27106,65 @@ function FeatureIconGridMuted({
26996
27106
  className,
26997
27107
  containerClassName,
26998
27108
  children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-10", children: [
26999
- (title || description) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("mx-auto flex max-w-xl flex-col gap-2.5 text-center", headerClassName), children: [
27000
- title && (typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h1", { className: cn("text-4xl font-semibold md:text-5xl", titleClassName), children: title }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-4xl font-semibold md:text-5xl", titleClassName), children: title })),
27001
- description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn(getTextColor(background, "muted"), descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn(getTextColor(background, "muted"), descriptionClassName), children: description }))
27002
- ] }),
27003
- (featuresSlot || features && features.length > 0) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mx-auto grid max-w-7xl gap-7 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-5", gridClassName), children: featuresContent })
27109
+ (title || description) && /* @__PURE__ */ jsxRuntime.jsxs(
27110
+ "div",
27111
+ {
27112
+ className: cn(
27113
+ "mx-auto flex max-w-full md:max-w-md text-balance flex-col gap-2.5 text-center",
27114
+ headerClassName
27115
+ ),
27116
+ children: [
27117
+ title && (typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
27118
+ "h2",
27119
+ {
27120
+ className: cn(
27121
+ "text-4xl font-semibold md:text-5xl",
27122
+ titleClassName
27123
+ ),
27124
+ children: title
27125
+ }
27126
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
27127
+ "div",
27128
+ {
27129
+ className: cn(
27130
+ "text-4xl font-semibold md:text-5xl",
27131
+ titleClassName
27132
+ ),
27133
+ children: title
27134
+ }
27135
+ )),
27136
+ description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
27137
+ "p",
27138
+ {
27139
+ className: cn(
27140
+ getTextColor(background, "muted"),
27141
+ descriptionClassName
27142
+ ),
27143
+ children: description
27144
+ }
27145
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
27146
+ "div",
27147
+ {
27148
+ className: cn(
27149
+ getTextColor(background, "muted"),
27150
+ descriptionClassName
27151
+ ),
27152
+ children: description
27153
+ }
27154
+ ))
27155
+ ]
27156
+ }
27157
+ ),
27158
+ (featuresSlot || features && features.length > 0) && /* @__PURE__ */ jsxRuntime.jsx(
27159
+ "div",
27160
+ {
27161
+ className: cn(
27162
+ "mx-auto grid w-full gap-4 md:gap-6 grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-5",
27163
+ gridClassName
27164
+ ),
27165
+ children: featuresContent
27166
+ }
27167
+ )
27004
27168
  ] })
27005
27169
  }
27006
27170
  );
@@ -27014,7 +27178,7 @@ function FeatureStatsHighlight({
27014
27178
  stats,
27015
27179
  statsSlot,
27016
27180
  className,
27017
- containerClassName,
27181
+ containerClassName = "px-6 sm:px-6 md:px-6 lg:px-8",
27018
27182
  gridClassName,
27019
27183
  contentClassName,
27020
27184
  badgeClassName,
@@ -27024,7 +27188,7 @@ function FeatureStatsHighlight({
27024
27188
  statsGridClassName,
27025
27189
  statCardClassName,
27026
27190
  background,
27027
- spacing = "py-6 md:py-32",
27191
+ spacing = "py-12 md:py-32",
27028
27192
  pattern,
27029
27193
  patternOpacity,
27030
27194
  patternClassName
@@ -27064,9 +27228,7 @@ function FeatureStatsHighlight({
27064
27228
  "div",
27065
27229
  {
27066
27230
  className: cn(
27067
- "flex flex-col gap-2 rounded-xl border p-6",
27068
- getNestedCardBg(background, "card"),
27069
- getNestedCardTextColor(background),
27231
+ "flex flex-col gap-2 rounded-xl border p-4 md:p-6 bg-card text-card-foreground h-full justify-between",
27070
27232
  statCardClassName,
27071
27233
  stat.className
27072
27234
  ),
@@ -27075,13 +27237,22 @@ function FeatureStatsHighlight({
27075
27237
  "span",
27076
27238
  {
27077
27239
  className: cn(
27078
- "text-4xl font-bold lg:text-5xl",
27240
+ "text-3xl font-bold lg:text-4xl xl:text-5xl",
27079
27241
  stat.valueClassName
27080
27242
  ),
27081
27243
  children: stat.value
27082
27244
  }
27083
27245
  ),
27084
- stat.label && /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("", stat.labelClassName), children: stat.label })
27246
+ stat.label && /* @__PURE__ */ jsxRuntime.jsx(
27247
+ "span",
27248
+ {
27249
+ className: cn(
27250
+ "uppercase font-bold text-sm opacity-60",
27251
+ stat.labelClassName
27252
+ ),
27253
+ children: stat.label
27254
+ }
27255
+ )
27085
27256
  ]
27086
27257
  },
27087
27258
  index
@@ -27103,7 +27274,7 @@ function FeatureStatsHighlight({
27103
27274
  className: cn("grid gap-10 lg:grid-cols-2 lg:gap-20", gridClassName),
27104
27275
  children: [
27105
27276
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex flex-col gap-5", contentClassName), children: [
27106
- badge && /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "outline", className: cn("w-fit", badgeClassName), children: badge }),
27277
+ badge && /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "default", className: cn("", badgeClassName), children: badge }),
27107
27278
  title && (typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
27108
27279
  "h2",
27109
27280
  {
@@ -27126,7 +27297,16 @@ function FeatureStatsHighlight({
27126
27297
  description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn(" lg:text-lg", descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn(" lg:text-lg", descriptionClassName), children: description })),
27127
27298
  (actionsSlot || actions && actions.length > 0) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: actionsClassName, children: actionsContent })
27128
27299
  ] }),
27129
- (statsSlot || stats && stats.length > 0) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("grid grid-cols-2 gap-6", statsGridClassName), children: statsContent })
27300
+ (statsSlot || stats && stats.length > 0) && /* @__PURE__ */ jsxRuntime.jsx(
27301
+ "div",
27302
+ {
27303
+ className: cn(
27304
+ "grid grid-cols-1 gap-4 md:grid-cols-2 md:gap-6",
27305
+ statsGridClassName
27306
+ ),
27307
+ children: statsContent
27308
+ }
27309
+ )
27130
27310
  ]
27131
27311
  }
27132
27312
  )
@@ -27200,7 +27380,7 @@ function FeatureAccordionImage({
27200
27380
  itemsSlot,
27201
27381
  defaultValue,
27202
27382
  className,
27203
- containerClassName,
27383
+ containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
27204
27384
  headerClassName,
27205
27385
  titleClassName,
27206
27386
  descriptionClassName,
@@ -27221,55 +27401,129 @@ function FeatureAccordionImage({
27221
27401
  const accordionItemsContent = React52.useMemo(() => {
27222
27402
  if (itemsSlot) return itemsSlot;
27223
27403
  if (!items || items.length === 0) return null;
27224
- return items.map((item, index) => /* @__PURE__ */ jsxRuntime.jsxs(AccordionItem, { value: `item-${index}`, className: item.className, children: [
27225
- item.title && /* @__PURE__ */ jsxRuntime.jsx(AccordionTrigger, { className: cn("text-left text-lg font-medium", item.triggerClassName), children: item.title }),
27226
- item.content && /* @__PURE__ */ jsxRuntime.jsx(AccordionContent, { className: cn(getTextColor(background, "muted"), item.contentClassName), children: item.content })
27227
- ] }, index));
27228
- }, [itemsSlot, items]);
27229
- const imageContent = React52.useMemo(() => {
27230
- if (currentImage?.imageSlot) return currentImage.imageSlot;
27231
- if (!currentImage?.imageSrc) return null;
27232
- return /* @__PURE__ */ jsxRuntime.jsx(
27233
- img.Img,
27404
+ return items.map((item, index) => /* @__PURE__ */ jsxRuntime.jsxs(
27405
+ AccordionItem,
27234
27406
  {
27235
- src: currentImage.imageSrc,
27236
- alt: currentImage.imageAlt || "",
27237
- className: cn("h-full w-full object-cover transition-opacity duration-300", imageClassName),
27238
- loading: "lazy",
27239
- optixFlowConfig
27240
- }
27241
- );
27242
- }, [currentImage, imageClassName, optixFlowConfig]);
27243
- return /* @__PURE__ */ jsxRuntime.jsxs(
27244
- Section,
27245
- {
27246
- background,
27407
+ value: `item-${index}`,
27408
+ className: item.className,
27409
+ children: [
27410
+ item.title && /* @__PURE__ */ jsxRuntime.jsx(
27411
+ AccordionTrigger,
27412
+ {
27413
+ className: cn(
27414
+ "text-left text-lg font-medium",
27415
+ item.triggerClassName
27416
+ ),
27417
+ children: item.title
27418
+ }
27419
+ ),
27420
+ item.content && /* @__PURE__ */ jsxRuntime.jsx(
27421
+ AccordionContent,
27422
+ {
27423
+ className: cn(
27424
+ getTextColor(background, "muted"),
27425
+ item.contentClassName
27426
+ ),
27427
+ children: item.content
27428
+ }
27429
+ )
27430
+ ]
27431
+ },
27432
+ index
27433
+ ));
27434
+ }, [itemsSlot, items]);
27435
+ const imageContent = React52.useMemo(() => {
27436
+ if (currentImage?.imageSlot) return currentImage.imageSlot;
27437
+ if (!currentImage?.imageSrc) return null;
27438
+ return /* @__PURE__ */ jsxRuntime.jsx(
27439
+ img.Img,
27440
+ {
27441
+ src: currentImage.imageSrc,
27442
+ alt: currentImage.imageAlt || "",
27443
+ className: cn(
27444
+ "h-full w-full object-cover transition-opacity duration-300",
27445
+ imageClassName
27446
+ ),
27447
+ loading: "lazy",
27448
+ optixFlowConfig
27449
+ }
27450
+ );
27451
+ }, [currentImage, imageClassName, optixFlowConfig]);
27452
+ return /* @__PURE__ */ jsxRuntime.jsx(
27453
+ Section,
27454
+ {
27455
+ background,
27247
27456
  spacing,
27248
27457
  pattern,
27249
27458
  patternOpacity,
27250
27459
  patternClassName,
27251
27460
  className,
27252
27461
  containerClassName,
27253
- children: [
27254
- (title || description) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("mb-12 text-center", headerClassName), children: [
27255
- title && (typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h2", { className: cn("text-3xl font-semibold md:text-4xl lg:text-5xl", titleClassName), children: title }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-3xl font-semibold md:text-4xl lg:text-5xl", titleClassName), children: title })),
27256
- description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mt-4 lg:text-lg", getTextColor(background, "muted"), descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mt-4 lg:text-lg", getTextColor(background, "muted"), descriptionClassName), children: description }))
27257
- ] }),
27258
- (itemsSlot || items && items.length > 0) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("grid gap-10 lg:grid-cols-2 lg:gap-16", gridClassName), children: [
27259
- /* @__PURE__ */ jsxRuntime.jsx(
27260
- Accordion,
27261
- {
27262
- type: "single",
27263
- collapsible: true,
27264
- value: activeItem,
27265
- onValueChange: setActiveItem,
27266
- className: cn("w-full", accordionClassName),
27267
- children: accordionItemsContent
27268
- }
27269
- ),
27270
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("relative aspect-video overflow-hidden rounded-xl lg:aspect-square", imageWrapperClassName), children: imageContent })
27271
- ] })
27272
- ]
27462
+ children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col space-y-6 md:space-y-16", children: [
27463
+ (title || description) && /* @__PURE__ */ jsxRuntime.jsxs(
27464
+ "div",
27465
+ {
27466
+ className: cn(
27467
+ "text-center max-w-full md:max-w-md text-balance",
27468
+ headerClassName
27469
+ ),
27470
+ children: [
27471
+ title && (typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
27472
+ "h2",
27473
+ {
27474
+ className: cn(
27475
+ "text-xl font-semibold md:text-2xl lg:text-3xl",
27476
+ titleClassName
27477
+ ),
27478
+ children: title
27479
+ }
27480
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
27481
+ "div",
27482
+ {
27483
+ className: cn(
27484
+ "text-xl font-semibold md:text-2xl lg:text-3xl",
27485
+ titleClassName
27486
+ ),
27487
+ children: title
27488
+ }
27489
+ )),
27490
+ description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mt-4 lg:text-lg", descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mt-4 lg:text-lg", descriptionClassName), children: description }))
27491
+ ]
27492
+ }
27493
+ ),
27494
+ (itemsSlot || items && items.length > 0) && /* @__PURE__ */ jsxRuntime.jsxs(
27495
+ "div",
27496
+ {
27497
+ className: cn(
27498
+ "grid gap-10 lg:grid-cols-2 lg:gap-16",
27499
+ gridClassName
27500
+ ),
27501
+ children: [
27502
+ /* @__PURE__ */ jsxRuntime.jsx(
27503
+ Accordion,
27504
+ {
27505
+ type: "single",
27506
+ collapsible: true,
27507
+ value: activeItem,
27508
+ onValueChange: setActiveItem,
27509
+ className: cn("w-full", accordionClassName),
27510
+ children: accordionItemsContent
27511
+ }
27512
+ ),
27513
+ /* @__PURE__ */ jsxRuntime.jsx(
27514
+ "div",
27515
+ {
27516
+ className: cn(
27517
+ "relative aspect-video overflow-hidden rounded-xl shadow-xl lg:aspect-square",
27518
+ imageWrapperClassName
27519
+ ),
27520
+ children: imageContent
27521
+ }
27522
+ )
27523
+ ]
27524
+ }
27525
+ )
27526
+ ] })
27273
27527
  }
27274
27528
  );
27275
27529
  }
@@ -41541,236 +41795,268 @@ function FaqSplitHero({
41541
41795
  imageArea
41542
41796
  ] }) });
41543
41797
  }
41544
- var Controls = React52__namespace.memo(({
41545
- handleNext,
41546
- handlePrevious,
41547
- isPreviousDisabled,
41548
- isNextDisabled
41549
- }) => {
41550
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "hidden flex-col items-start gap-8 lg:flex", children: [
41551
- /* @__PURE__ */ jsxRuntime.jsx(
41552
- "button",
41553
- {
41554
- className: "rounded-full border bg-background/50 p-2 hover:bg-background disabled:opacity-50",
41555
- onClick: handlePrevious,
41556
- disabled: isPreviousDisabled,
41557
- type: "button",
41558
- children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/chevron-up", size: 24 })
41559
- }
41560
- ),
41561
- /* @__PURE__ */ jsxRuntime.jsx(
41562
- "button",
41563
- {
41564
- className: "rounded-full border bg-background/50 p-2 hover:bg-background disabled:opacity-50",
41565
- onClick: handleNext,
41566
- disabled: isNextDisabled,
41567
- type: "button",
41568
- children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/chevron-down", size: 24 })
41569
- }
41570
- )
41571
- ] });
41572
- });
41573
- var FeatureCard = React52__namespace.memo(({ feature, isActive, onClick }) => {
41574
- const variants2 = React52.useMemo(() => ({
41575
- initial: {
41576
- opacity: 0
41577
- },
41578
- animate: {
41579
- opacity: 1
41580
- },
41581
- exit: {
41582
- opacity: 0
41583
- }
41584
- }), []);
41585
- return /* @__PURE__ */ jsxRuntime.jsx(framerMotion.AnimatePresence, { mode: "popLayout", children: /* @__PURE__ */ jsxRuntime.jsx(
41586
- framerMotion.motion.div,
41587
- {
41588
- layout: true,
41589
- transition: {
41590
- layout: {
41591
- duration: 0.4,
41592
- ease: "easeOut"
41798
+ var Controls = React52__namespace.memo(
41799
+ ({
41800
+ handleNext,
41801
+ handlePrevious,
41802
+ isPreviousDisabled,
41803
+ isNextDisabled
41804
+ }) => {
41805
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "hidden flex-col items-start gap-8 lg:flex", children: [
41806
+ /* @__PURE__ */ jsxRuntime.jsx(
41807
+ "button",
41808
+ {
41809
+ className: "rounded-full border p-2 flex items-center justify-center disabled:opacity-50 h-fit w-fit bg-card text-card-foreground",
41810
+ onClick: handlePrevious,
41811
+ disabled: isPreviousDisabled,
41812
+ type: "button",
41813
+ children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/chevron-up", size: 24 })
41593
41814
  }
41594
- },
41595
- style: {
41596
- borderRadius: "24px"
41597
- },
41598
- className: "flex cursor-pointer items-start gap-4 overflow-hidden bg-background md:w-fit md:max-w-sm",
41599
- onClick,
41600
- children: isActive ? /* @__PURE__ */ jsxRuntime.jsx(
41601
- framerMotion.motion.div,
41815
+ ),
41816
+ /* @__PURE__ */ jsxRuntime.jsx(
41817
+ "button",
41602
41818
  {
41603
- layout: true,
41604
- variants: variants2,
41605
- initial: "initial",
41606
- animate: "animate",
41607
- exit: "exit",
41608
- transition: {
41819
+ className: "rounded-full border p-2 flex items-center justify-center disabled:opacity-50 h-fit w-fit bg-card text-card-foreground",
41820
+ onClick: handleNext,
41821
+ disabled: isNextDisabled,
41822
+ type: "button",
41823
+ children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/chevron-down", size: 24 })
41824
+ }
41825
+ )
41826
+ ] });
41827
+ }
41828
+ );
41829
+ var FeatureCard = React52__namespace.memo(
41830
+ ({ feature, isActive, onClick }) => {
41831
+ const variants2 = React52.useMemo(
41832
+ () => ({
41833
+ initial: {
41834
+ opacity: 0
41835
+ },
41836
+ animate: {
41837
+ opacity: 1
41838
+ },
41839
+ exit: {
41840
+ opacity: 0
41841
+ }
41842
+ }),
41843
+ []
41844
+ );
41845
+ return /* @__PURE__ */ jsxRuntime.jsx(framerMotion.AnimatePresence, { mode: "popLayout", children: /* @__PURE__ */ jsxRuntime.jsxs(
41846
+ framerMotion.motion.div,
41847
+ {
41848
+ layout: true,
41849
+ transition: {
41850
+ layout: {
41609
41851
  duration: 0.4,
41610
- delay: 0.3,
41611
41852
  ease: "easeOut"
41853
+ }
41854
+ },
41855
+ style: {
41856
+ borderRadius: "24px"
41857
+ },
41858
+ className: cn(
41859
+ "relative flex items-start gap-4 overflow-hidden bg-background text-foreground md:w-fit md:max-w-sm",
41860
+ isActive ? "shadow-xl" : "cursor-pointer shadow-none"
41861
+ ),
41862
+ onClick,
41863
+ children: [
41864
+ isActive && feature.href && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute bottom-4 right-4 bg-background rounded-full h-fit w-fit p-2 flex items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(
41865
+ Pressable,
41866
+ {
41867
+ href: feature.href,
41868
+ size: "icon-lg",
41869
+ className: "text-foreground",
41870
+ children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/arrow-up-right" })
41871
+ }
41872
+ ) }),
41873
+ isActive ? /* @__PURE__ */ jsxRuntime.jsx(
41874
+ framerMotion.motion.div,
41875
+ {
41876
+ layout: true,
41877
+ variants: variants2,
41878
+ initial: "initial",
41879
+ animate: "animate",
41880
+ exit: "exit",
41881
+ transition: {
41882
+ duration: 0.4,
41883
+ delay: 0.3,
41884
+ ease: "easeOut"
41885
+ },
41886
+ className: "p-6 text-sm md:p-8 md:text-base",
41887
+ children: (feature.title || feature.description) && /* @__PURE__ */ jsxRuntime.jsxs("p", { children: [
41888
+ feature.title && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "font-semibold", children: [
41889
+ feature.title,
41890
+ "."
41891
+ ] }),
41892
+ feature.title && feature.description && " ",
41893
+ feature.description && /* @__PURE__ */ jsxRuntime.jsx("span", { children: feature.description })
41894
+ ] })
41895
+ },
41896
+ `feature-description-active-${feature.title}`
41897
+ ) : /* @__PURE__ */ jsxRuntime.jsxs(
41898
+ framerMotion.motion.div,
41899
+ {
41900
+ layout: true,
41901
+ variants: variants2,
41902
+ initial: "initial",
41903
+ animate: "animate",
41904
+ exit: "exit",
41905
+ transition: {
41906
+ duration: 0.4,
41907
+ delay: 0.2,
41908
+ ease: "easeOut"
41909
+ },
41910
+ className: cn(
41911
+ "flex h-fit shrink-0 items-center gap-4 text-sm md:py-3.5 md:pr-6 md:pl-3 md:text-base",
41912
+ !isActive && "h-0 w-0 md:h-auto md:w-auto"
41913
+ ),
41914
+ style: {
41915
+ height: "auto",
41916
+ lineHeight: "normal"
41917
+ },
41918
+ children: [
41919
+ /* @__PURE__ */ jsxRuntime.jsx(
41920
+ DynamicIcon,
41921
+ {
41922
+ name: "lucide/plus-circle",
41923
+ size: 24,
41924
+ className: "shrink-0"
41925
+ }
41926
+ ),
41927
+ feature.title && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "shrink-0 font-semibold", children: feature.title })
41928
+ ]
41929
+ },
41930
+ `feature-description-inactive-${feature.title}`
41931
+ )
41932
+ ]
41933
+ }
41934
+ ) });
41935
+ }
41936
+ );
41937
+ var FeaturesDesktop = React52__namespace.memo(
41938
+ ({
41939
+ features,
41940
+ handleNext,
41941
+ handlePrevious,
41942
+ activeIndex,
41943
+ handleFeatureClick,
41944
+ isPreviousDisabled,
41945
+ isNextDisabled
41946
+ }) => {
41947
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative z-10 hidden items-center gap-8 md:flex", children: [
41948
+ /* @__PURE__ */ jsxRuntime.jsx(
41949
+ Controls,
41950
+ {
41951
+ handleNext,
41952
+ handlePrevious,
41953
+ isPreviousDisabled,
41954
+ isNextDisabled
41955
+ }
41956
+ ),
41957
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-col gap-4", children: features.map((feature, index) => {
41958
+ return /* @__PURE__ */ jsxRuntime.jsx(
41959
+ FeatureCard,
41960
+ {
41961
+ feature,
41962
+ isActive: index === activeIndex,
41963
+ onClick: () => handleFeatureClick(index)
41612
41964
  },
41613
- className: "p-6 text-sm md:p-8 md:text-base",
41614
- children: (feature.title || feature.description) && /* @__PURE__ */ jsxRuntime.jsxs("p", { children: [
41615
- feature.title && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "font-semibold", children: [
41616
- feature.title,
41617
- "."
41618
- ] }),
41619
- feature.title && feature.description && " ",
41620
- feature.description && /* @__PURE__ */ jsxRuntime.jsx("span", { children: feature.description })
41621
- ] })
41965
+ `feature-card-${index}`
41966
+ );
41967
+ }) })
41968
+ ] });
41969
+ }
41970
+ );
41971
+ var FeaturesMobile = React52__namespace.memo(
41972
+ ({
41973
+ features,
41974
+ handleNext,
41975
+ handlePrevious,
41976
+ activeIndex,
41977
+ direction,
41978
+ isPreviousDisabled,
41979
+ isNextDisabled
41980
+ }) => {
41981
+ const variants2 = React52.useMemo(
41982
+ () => ({
41983
+ enter: (direction2) => ({
41984
+ x: direction2 > 0 ? 100 : -100,
41985
+ opacity: 0
41986
+ }),
41987
+ center: {
41988
+ x: 0,
41989
+ opacity: 1
41622
41990
  },
41623
- `feature-description-active-${feature.title}`
41624
- ) : /* @__PURE__ */ jsxRuntime.jsxs(
41991
+ exit: (direction2) => ({
41992
+ x: direction2 < 0 ? 100 : -100,
41993
+ opacity: 0
41994
+ })
41995
+ }),
41996
+ []
41997
+ );
41998
+ const currentFeature = features[activeIndex];
41999
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative z-10 flex flex-col gap-4 md:hidden", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex w-full items-stretch gap-4", children: [
42000
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1 overflow-hidden", children: /* @__PURE__ */ jsxRuntime.jsx(framerMotion.AnimatePresence, { mode: "wait", custom: direction, children: /* @__PURE__ */ jsxRuntime.jsx(
41625
42001
  framerMotion.motion.div,
41626
42002
  {
41627
- layout: true,
42003
+ custom: direction,
41628
42004
  variants: variants2,
41629
- initial: "initial",
41630
- animate: "animate",
42005
+ initial: "enter",
42006
+ animate: "center",
41631
42007
  exit: "exit",
41632
42008
  transition: {
41633
- duration: 0.4,
41634
- delay: 0.2,
41635
- ease: "easeOut"
42009
+ x: { type: "spring", stiffness: 300, damping: 30 },
42010
+ opacity: { duration: 0.2 }
41636
42011
  },
41637
- className: cn(
41638
- "flex h-fit shrink-0 items-center gap-4 text-sm md:py-3.5 md:pr-6 md:pl-3 md:text-base",
41639
- !isActive && "h-0 w-0 md:h-auto md:w-auto"
41640
- ),
41641
- style: {
41642
- height: "auto",
41643
- lineHeight: "normal"
41644
- },
41645
- children: [
41646
- /* @__PURE__ */ jsxRuntime.jsx(
41647
- DynamicIcon,
41648
- {
41649
- name: "lucide/plus-circle",
41650
- size: 24,
41651
- className: "shrink-0"
41652
- }
41653
- ),
41654
- feature.title && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "shrink-0 font-semibold", children: feature.title })
41655
- ]
41656
- },
41657
- `feature-description-inactive-${feature.title}`
41658
- )
41659
- }
41660
- ) });
41661
- });
41662
- var FeaturesDesktop = React52__namespace.memo(({
41663
- features,
41664
- handleNext,
41665
- handlePrevious,
41666
- activeIndex,
41667
- handleFeatureClick,
41668
- isPreviousDisabled,
41669
- isNextDisabled
41670
- }) => {
41671
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative z-10 hidden items-center gap-8 md:flex", children: [
41672
- /* @__PURE__ */ jsxRuntime.jsx(
41673
- Controls,
41674
- {
41675
- handleNext,
41676
- handlePrevious,
41677
- isPreviousDisabled,
41678
- isNextDisabled
41679
- }
41680
- ),
41681
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-col gap-4", children: features.map((feature, index) => {
41682
- return /* @__PURE__ */ jsxRuntime.jsx(
41683
- FeatureCard,
41684
- {
41685
- feature,
41686
- isActive: index === activeIndex,
41687
- onClick: () => handleFeatureClick(index)
41688
- },
41689
- `feature-card-${index}`
41690
- );
41691
- }) })
41692
- ] });
41693
- });
41694
- var FeaturesMobile = React52__namespace.memo(({
41695
- features,
41696
- handleNext,
41697
- handlePrevious,
41698
- activeIndex,
41699
- direction,
41700
- isPreviousDisabled,
41701
- isNextDisabled
41702
- }) => {
41703
- const variants2 = React52.useMemo(() => ({
41704
- enter: (direction2) => ({
41705
- x: direction2 > 0 ? 100 : -100,
41706
- opacity: 0
41707
- }),
41708
- center: {
41709
- x: 0,
41710
- opacity: 1
41711
- },
41712
- exit: (direction2) => ({
41713
- x: direction2 < 0 ? 100 : -100,
41714
- opacity: 0
41715
- })
41716
- }), []);
41717
- const currentFeature = features[activeIndex];
41718
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative z-10 flex flex-col items-center gap-6 md:hidden", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex w-full items-center justify-between gap-4", children: [
41719
- /* @__PURE__ */ jsxRuntime.jsx(
41720
- "button",
41721
- {
41722
- className: "rounded-full border bg-background/50 p-2 hover:bg-background disabled:opacity-50",
41723
- onClick: handlePrevious,
41724
- disabled: isPreviousDisabled,
41725
- type: "button",
41726
- children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/chevron-left", size: 24 })
41727
- }
41728
- ),
41729
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative h-24 w-full overflow-hidden", children: /* @__PURE__ */ jsxRuntime.jsx(framerMotion.AnimatePresence, { mode: "wait", custom: direction, children: /* @__PURE__ */ jsxRuntime.jsx(
41730
- framerMotion.motion.div,
41731
- {
41732
- custom: direction,
41733
- variants: variants2,
41734
- initial: "enter",
41735
- animate: "center",
41736
- exit: "exit",
41737
- transition: {
41738
- x: { type: "spring", stiffness: 300, damping: 30 },
41739
- opacity: { duration: 0.2 }
42012
+ className: "rounded-3xl bg-background p-4 text-left",
42013
+ children: (currentFeature?.title || currentFeature?.description) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-sm", children: [
42014
+ currentFeature.title && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-semibold", children: currentFeature.title }),
42015
+ currentFeature.description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-1", children: currentFeature.description })
42016
+ ] })
41740
42017
  },
41741
- className: "absolute inset-0 flex items-center justify-center rounded-3xl bg-background p-4",
41742
- children: (currentFeature?.title || currentFeature?.description) && /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-center text-sm", children: [
41743
- currentFeature.title && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "font-semibold", children: [
41744
- currentFeature.title,
41745
- "."
41746
- ] }),
41747
- currentFeature.title && currentFeature.description && " ",
41748
- currentFeature.description && /* @__PURE__ */ jsxRuntime.jsx("span", { children: currentFeature.description })
41749
- ] })
41750
- },
41751
- activeIndex
41752
- ) }) }),
41753
- /* @__PURE__ */ jsxRuntime.jsx(
41754
- "button",
41755
- {
41756
- className: "rounded-full border bg-background/50 p-2 hover:bg-background disabled:opacity-50",
41757
- onClick: handleNext,
41758
- disabled: isNextDisabled,
41759
- type: "button",
41760
- children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/chevron-right", size: 24 })
41761
- }
41762
- )
41763
- ] }) });
41764
- });
42018
+ activeIndex
42019
+ ) }) }),
42020
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col justify-center gap-2", children: [
42021
+ /* @__PURE__ */ jsxRuntime.jsx(
42022
+ "button",
42023
+ {
42024
+ className: "rounded-full border bg-background/50 p-2 hover:bg-background disabled:opacity-50",
42025
+ onClick: handlePrevious,
42026
+ disabled: isPreviousDisabled,
42027
+ type: "button",
42028
+ children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/chevron-up", size: 20 })
42029
+ }
42030
+ ),
42031
+ /* @__PURE__ */ jsxRuntime.jsx(
42032
+ "button",
42033
+ {
42034
+ className: "rounded-full border bg-background/50 p-2 hover:bg-background disabled:opacity-50",
42035
+ onClick: handleNext,
42036
+ disabled: isNextDisabled,
42037
+ type: "button",
42038
+ children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/chevron-down", size: 20 })
42039
+ }
42040
+ )
42041
+ ] })
42042
+ ] }) });
42043
+ }
42044
+ );
41765
42045
  function FeatureAnimatedCarousel({
42046
+ title,
42047
+ description,
42048
+ titleClassName,
42049
+ descriptionClassName,
41766
42050
  features,
41767
42051
  className,
41768
42052
  optixFlowConfig,
41769
42053
  background,
41770
- spacing,
41771
42054
  pattern,
41772
42055
  patternOpacity,
41773
- patternClassName
42056
+ patternClassName,
42057
+ headerClassName,
42058
+ spacing = "py-12 md:py-32",
42059
+ containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8"
41774
42060
  }) {
41775
42061
  const [activeIndex, setActiveIndex] = React52__namespace.useState(0);
41776
42062
  const [direction, setDirection] = React52__namespace.useState(1);
@@ -41786,26 +42072,32 @@ function FeatureAnimatedCarousel({
41786
42072
  setActiveIndex(activeIndex - 1);
41787
42073
  }
41788
42074
  }, [activeIndex]);
41789
- const handleFeatureClick = React52.useCallback((index) => {
41790
- setDirection(index > activeIndex ? 1 : -1);
41791
- setActiveIndex(index);
41792
- }, [activeIndex]);
42075
+ const handleFeatureClick = React52.useCallback(
42076
+ (index) => {
42077
+ setDirection(index > activeIndex ? 1 : -1);
42078
+ setActiveIndex(index);
42079
+ },
42080
+ [activeIndex]
42081
+ );
41793
42082
  const isPreviousDisabled = activeIndex === 0;
41794
42083
  const isNextDisabled = !features || activeIndex === features.length - 1;
41795
- const imageVariants = React52.useMemo(() => ({
41796
- enter: (direction2) => ({
41797
- x: direction2 > 0 ? 300 : -300,
41798
- opacity: 0
42084
+ const imageVariants = React52.useMemo(
42085
+ () => ({
42086
+ enter: (direction2) => ({
42087
+ x: direction2 > 0 ? 300 : -300,
42088
+ opacity: 0
42089
+ }),
42090
+ center: {
42091
+ x: 0,
42092
+ opacity: 1
42093
+ },
42094
+ exit: (direction2) => ({
42095
+ x: direction2 < 0 ? 300 : -300,
42096
+ opacity: 0
42097
+ })
41799
42098
  }),
41800
- center: {
41801
- x: 0,
41802
- opacity: 1
41803
- },
41804
- exit: (direction2) => ({
41805
- x: direction2 < 0 ? 300 : -300,
41806
- opacity: 0
41807
- })
41808
- }), []);
42099
+ []
42100
+ );
41809
42101
  if (!features || features.length === 0) {
41810
42102
  return /* @__PURE__ */ jsxRuntime.jsx(
41811
42103
  Section,
@@ -41816,11 +42108,17 @@ function FeatureAnimatedCarousel({
41816
42108
  patternOpacity,
41817
42109
  patternClassName,
41818
42110
  className,
41819
- children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn(
41820
- "relative flex min-h-[500px] flex-col-reverse gap-8 overflow-hidden rounded-3xl p-6 md:flex-row md:items-center md:p-12 lg:min-h-[600px]",
41821
- getNestedCardBg(background),
41822
- getNestedCardTextColor(background)
41823
- ) })
42111
+ containerClassName,
42112
+ children: /* @__PURE__ */ jsxRuntime.jsx(
42113
+ "div",
42114
+ {
42115
+ className: cn(
42116
+ "relative flex min-h-[500px] flex-col-reverse gap-8 overflow-hidden rounded-3xl p-6 md:flex-row md:items-center md:p-12 lg:min-h-[600px]",
42117
+ getNestedCardBg(background),
42118
+ getNestedCardTextColor(background)
42119
+ )
42120
+ }
42121
+ )
41824
42122
  }
41825
42123
  );
41826
42124
  }
@@ -41834,60 +42132,105 @@ function FeatureAnimatedCarousel({
41834
42132
  patternOpacity,
41835
42133
  patternClassName,
41836
42134
  className,
41837
- children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn(
41838
- "relative flex min-h-[500px] flex-col-reverse gap-8 overflow-hidden rounded-3xl p-6 md:flex-row md:items-center md:p-12 lg:min-h-[600px]",
41839
- getNestedCardBg(background),
41840
- getNestedCardTextColor(background)
41841
- ), children: [
41842
- /* @__PURE__ */ jsxRuntime.jsx(
41843
- FeaturesDesktop,
41844
- {
41845
- features,
41846
- handleNext,
41847
- handlePrevious,
41848
- activeIndex,
41849
- handleFeatureClick,
41850
- isPreviousDisabled,
41851
- isNextDisabled
41852
- }
41853
- ),
41854
- /* @__PURE__ */ jsxRuntime.jsx(
41855
- FeaturesMobile,
42135
+ children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col space-y-6 md:space-y-16", children: [
42136
+ title || description ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex flex-col gap-6 text-left", headerClassName), children: [
42137
+ title && (typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
42138
+ "h2",
42139
+ {
42140
+ className: cn(
42141
+ "text-xl font-semibold text-balance md:text-2xl lg:text-3xl max-w-lg md:max-w-md",
42142
+ titleClassName
42143
+ ),
42144
+ children: title
42145
+ }
42146
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
42147
+ "div",
42148
+ {
42149
+ className: cn(
42150
+ "text-xl font-semibold text-balance md:text-2xl lg:text-3xl max-w-lg md:max-w-md",
42151
+ titleClassName
42152
+ ),
42153
+ children: title
42154
+ }
42155
+ )),
42156
+ description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("max-w-lg md:max-w-md", descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx(
42157
+ "div",
42158
+ {
42159
+ className: cn("max-w-lg md:max-w-md", descriptionClassName),
42160
+ children: description
42161
+ }
42162
+ ))
42163
+ ] }) : null,
42164
+ /* @__PURE__ */ jsxRuntime.jsxs(
42165
+ "div",
41856
42166
  {
41857
- features,
41858
- handleNext,
41859
- handlePrevious,
41860
- activeIndex,
41861
- direction,
41862
- isPreviousDisabled,
41863
- isNextDisabled
42167
+ className: cn(
42168
+ "relative flex min-h-[500px] flex-col-reverse gap-8 overflow-hidden rounded-3xl p-6 md:flex-row md:items-center md:p-12 lg:min-h-[600px]"
42169
+ ),
42170
+ children: [
42171
+ /* @__PURE__ */ jsxRuntime.jsx(
42172
+ FeaturesDesktop,
42173
+ {
42174
+ features,
42175
+ handleNext,
42176
+ handlePrevious,
42177
+ activeIndex,
42178
+ handleFeatureClick,
42179
+ isPreviousDisabled,
42180
+ isNextDisabled
42181
+ }
42182
+ ),
42183
+ /* @__PURE__ */ jsxRuntime.jsx(
42184
+ FeaturesMobile,
42185
+ {
42186
+ features,
42187
+ handleNext,
42188
+ handlePrevious,
42189
+ activeIndex,
42190
+ direction,
42191
+ isPreviousDisabled,
42192
+ isNextDisabled
42193
+ }
42194
+ ),
42195
+ currentFeature?.image && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative w-full h-[250px] md:h-auto overflow-hidden rounded-2xl md:absolute md:right-8 md:top-8 md:bottom-8 md:w-1/2 shadow-xl", children: [
42196
+ currentFeature.href && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute top-4 right-4 z-10 bg-background rounded-full h-fit w-fit p-2 flex items-center justify-center md:hidden", children: /* @__PURE__ */ jsxRuntime.jsx(
42197
+ Pressable,
42198
+ {
42199
+ href: currentFeature.href,
42200
+ size: "icon-lg",
42201
+ className: "text-foreground",
42202
+ children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/arrow-up-right" })
42203
+ }
42204
+ ) }),
42205
+ /* @__PURE__ */ jsxRuntime.jsx(framerMotion.AnimatePresence, { mode: "wait", custom: direction, children: /* @__PURE__ */ jsxRuntime.jsx(
42206
+ framerMotion.motion.div,
42207
+ {
42208
+ custom: direction,
42209
+ variants: imageVariants,
42210
+ initial: "enter",
42211
+ animate: "center",
42212
+ exit: "exit",
42213
+ transition: {
42214
+ x: { type: "spring", stiffness: 300, damping: 30 },
42215
+ opacity: { duration: 0.2 }
42216
+ },
42217
+ className: "h-full w-full",
42218
+ children: /* @__PURE__ */ jsxRuntime.jsx(
42219
+ img.Img,
42220
+ {
42221
+ src: currentFeature.image,
42222
+ alt: currentFeature.imageAlt || (typeof currentFeature.title === "string" ? currentFeature.title : "Feature image"),
42223
+ className: "h-full w-full object-cover",
42224
+ optixFlowConfig
42225
+ }
42226
+ )
42227
+ },
42228
+ activeIndex
42229
+ ) })
42230
+ ] })
42231
+ ]
41864
42232
  }
41865
- ),
41866
- currentFeature?.image && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative flex-1 overflow-hidden rounded-2xl md:absolute md:right-8 md:top-8 md:bottom-8 md:w-1/2", children: /* @__PURE__ */ jsxRuntime.jsx(framerMotion.AnimatePresence, { mode: "wait", custom: direction, children: /* @__PURE__ */ jsxRuntime.jsx(
41867
- framerMotion.motion.div,
41868
- {
41869
- custom: direction,
41870
- variants: imageVariants,
41871
- initial: "enter",
41872
- animate: "center",
41873
- exit: "exit",
41874
- transition: {
41875
- x: { type: "spring", stiffness: 300, damping: 30 },
41876
- opacity: { duration: 0.2 }
41877
- },
41878
- className: "h-full w-full",
41879
- children: /* @__PURE__ */ jsxRuntime.jsx(
41880
- img.Img,
41881
- {
41882
- src: currentFeature.image,
41883
- alt: currentFeature.imageAlt || (typeof currentFeature.title === "string" ? currentFeature.title : "Feature image"),
41884
- className: "h-full w-full object-cover",
41885
- optixFlowConfig
41886
- }
41887
- )
41888
- },
41889
- activeIndex
41890
- ) }) })
42233
+ )
41891
42234
  ] })
41892
42235
  }
41893
42236
  );