@opensite/ui 1.2.4 → 1.2.6

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,31 @@ 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(
24436
+ "p",
24437
+ {
24438
+ className: cn(
24439
+ "max-w-lg md:max-w-md text-balance",
24440
+ descriptionClassName
24441
+ ),
24442
+ children: description
24443
+ }
24444
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
24445
+ "div",
24446
+ {
24447
+ className: cn(
24448
+ "max-w-lg md:max-w-md text-balance",
24449
+ descriptionClassName
24450
+ ),
24451
+ children: description
24452
+ }
24453
+ ))
24429
24454
  ]
24430
24455
  }
24431
24456
  ) : null,
@@ -24475,7 +24500,7 @@ function FeatureCardGridLinked({
24475
24500
  features,
24476
24501
  featuresSlot,
24477
24502
  className,
24478
- containerClassName = "px-6 sm:px-6 md:mx-6 lg:px-8",
24503
+ containerClassName = "px-6 sm:px-6 md:px-6 lg:px-8",
24479
24504
  titleWrapperClassName,
24480
24505
  titleClassName,
24481
24506
  descriptionClassName,
@@ -24628,7 +24653,7 @@ function FeatureNumberedCards({
24628
24653
  features,
24629
24654
  featuresSlot,
24630
24655
  className,
24631
- containerClassName = "px-6 sm:px-6 md:mx-6 lg:px-8",
24656
+ containerClassName = "px-6 sm:px-6 md:px-6 lg:px-8",
24632
24657
  cardsWrapperClassName,
24633
24658
  cardClassName,
24634
24659
  titleClassName,
@@ -26848,6 +26873,7 @@ function FeatureBentoImageGrid({
26848
26873
  function FeatureImageCardsThreeColumn({
26849
26874
  title,
26850
26875
  description,
26876
+ headerClassName,
26851
26877
  cards,
26852
26878
  cardsSlot,
26853
26879
  className,
@@ -26863,28 +26889,34 @@ function FeatureImageCardsThreeColumn({
26863
26889
  patternOpacity,
26864
26890
  patternClassName
26865
26891
  }) {
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
26892
+ const renderImage = React52.useCallback(
26893
+ (card, imageAlt) => {
26894
+ if (card.imageSlot) return card.imageSlot;
26895
+ if (!card.imageSrc) return null;
26896
+ return /* @__PURE__ */ jsxRuntime.jsx(
26897
+ img.Img,
26898
+ {
26899
+ src: card.imageSrc,
26900
+ alt: imageAlt,
26901
+ className: "h-full max-h-[450px] w-full rounded-xl object-cover object-center",
26902
+ loading: "lazy",
26903
+ optixFlowConfig
26904
+ }
26905
+ );
26906
+ },
26907
+ [optixFlowConfig]
26908
+ );
26909
+ const renderBadgeIcon = React52.useCallback(
26910
+ (card) => {
26911
+ if (card.avatarSrc) {
26912
+ return /* @__PURE__ */ jsxRuntime.jsx(Avatar, { className: "size-7 rounded-full", children: /* @__PURE__ */ jsxRuntime.jsx(AvatarImage, { src: card.avatarSrc, alt: "Avatar" }) });
26877
26913
  }
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
- }, []);
26914
+ if (card.icon) return card.icon;
26915
+ if (!card.iconName) return null;
26916
+ return /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: card.iconName, size: 24 });
26917
+ },
26918
+ []
26919
+ );
26888
26920
  const cardsContent = React52.useMemo(() => {
26889
26921
  if (cardsSlot) return cardsSlot;
26890
26922
  if (!cards || cards.length === 0) return null;
@@ -26895,31 +26927,53 @@ function FeatureImageCardsThreeColumn({
26895
26927
  {
26896
26928
  href: card.link,
26897
26929
  onClick: card.onClick,
26898
- className: cn("group relative overflow-hidden rounded-xl", cardClassName, card.className),
26930
+ className: cn(
26931
+ "group relative overflow-hidden rounded-xl",
26932
+ cardClassName,
26933
+ card.className
26934
+ ),
26899
26935
  children: [
26900
26936
  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
- ),
26937
+ /* @__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" }),
26938
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "absolute top-0 flex h-full w-full flex-col justify-between p-4 md:p-6", children: [
26939
+ (card.badgeText || card.avatarSrc || card.icon || card.iconName) && /* @__PURE__ */ jsxRuntime.jsxs(Badge, { variant: "default", className: cn(card.badgeClassName), children: [
26940
+ renderBadgeIcon(card),
26941
+ card.badgeText
26942
+ ] }),
26917
26943
  /* @__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
- ] })
26944
+ card.title && (typeof card.title === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
26945
+ "h3",
26946
+ {
26947
+ className: cn(
26948
+ "text-xl md:text-2xl font-semibold",
26949
+ card.titleClassName
26950
+ ),
26951
+ children: card.title
26952
+ }
26953
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
26954
+ "div",
26955
+ {
26956
+ className: cn(
26957
+ "text-xl md:text-2xl font-semibold",
26958
+ card.titleClassName
26959
+ ),
26960
+ children: card.title
26961
+ }
26962
+ )),
26963
+ card.linkText && card.link && /* @__PURE__ */ jsxRuntime.jsxs(
26964
+ Pressable,
26965
+ {
26966
+ className: cn(
26967
+ "font-bold text-xs uppercase",
26968
+ card.linkClassName
26969
+ ),
26970
+ href: card.link,
26971
+ children: [
26972
+ card.linkText,
26973
+ /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/arrow-up-right", size: 18 })
26974
+ ]
26975
+ }
26976
+ )
26923
26977
  ] })
26924
26978
  ] })
26925
26979
  ]
@@ -26928,7 +26982,7 @@ function FeatureImageCardsThreeColumn({
26928
26982
  );
26929
26983
  });
26930
26984
  }, [cardsSlot, cards, cardClassName, renderImage, renderBadgeIcon]);
26931
- return /* @__PURE__ */ jsxRuntime.jsxs(
26985
+ return /* @__PURE__ */ jsxRuntime.jsx(
26932
26986
  Section,
26933
26987
  {
26934
26988
  background,
@@ -26938,11 +26992,46 @@ function FeatureImageCardsThreeColumn({
26938
26992
  patternClassName,
26939
26993
  className,
26940
26994
  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
- ]
26995
+ children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col space-y-6 md:space-y-16", children: [
26996
+ title || description ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex flex-col gap-6 text-left", headerClassName), children: [
26997
+ title && (typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
26998
+ "h2",
26999
+ {
27000
+ className: cn(
27001
+ "text-xl font-semibold text-balance md:text-2xl lg:text-3xl max-w-lg md:max-w-md",
27002
+ titleClassName
27003
+ ),
27004
+ children: title
27005
+ }
27006
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
27007
+ "div",
27008
+ {
27009
+ className: cn(
27010
+ "text-xl font-semibold text-balance md:text-2xl lg:text-3xl max-w-lg md:max-w-md",
27011
+ titleClassName
27012
+ ),
27013
+ children: title
27014
+ }
27015
+ )),
27016
+ description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("max-w-lg md:max-w-md", descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx(
27017
+ "div",
27018
+ {
27019
+ className: cn("max-w-lg md:max-w-md", descriptionClassName),
27020
+ children: description
27021
+ }
27022
+ ))
27023
+ ] }) : null,
27024
+ /* @__PURE__ */ jsxRuntime.jsx(
27025
+ "div",
27026
+ {
27027
+ className: cn(
27028
+ "grid gap-4 md:gap-4 grid-cols-1 md:grid-cols-3",
27029
+ gridClassName
27030
+ ),
27031
+ children: cardsContent
27032
+ }
27033
+ )
27034
+ ] })
26946
27035
  }
26947
27036
  );
26948
27037
  }
@@ -26952,35 +27041,68 @@ function FeatureIconGridMuted({
26952
27041
  features,
26953
27042
  featuresSlot,
26954
27043
  className,
26955
- containerClassName,
26956
27044
  headerClassName,
26957
27045
  titleClassName,
26958
27046
  descriptionClassName,
26959
27047
  gridClassName,
26960
27048
  cardClassName,
26961
27049
  background,
26962
- spacing,
26963
27050
  pattern,
26964
27051
  patternOpacity,
26965
- patternClassName
27052
+ patternClassName,
27053
+ spacing = "py-12 md:py-32",
27054
+ containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8"
26966
27055
  }) {
26967
27056
  const renderFeatureIcon = React52.useCallback((feature) => {
26968
27057
  if (feature.icon) return feature.icon;
26969
- if (feature.iconName) return /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: feature.iconName, size: 24, className: feature.iconClassName });
27058
+ if (feature.iconName)
27059
+ return /* @__PURE__ */ jsxRuntime.jsx(
27060
+ DynamicIcon,
27061
+ {
27062
+ name: feature.iconName,
27063
+ size: 24,
27064
+ className: feature.iconClassName
27065
+ }
27066
+ );
26970
27067
  return null;
26971
27068
  }, []);
26972
27069
  const featuresContent = React52.useMemo(() => {
26973
27070
  if (featuresSlot) return featuresSlot;
26974
27071
  if (!features || features.length === 0) return null;
26975
- return features.map((feature, index) => /* @__PURE__ */ jsxRuntime.jsxs(
27072
+ return features.map((feature, index) => /* @__PURE__ */ jsxRuntime.jsx(
26976
27073
  "div",
26977
27074
  {
26978
- className: cn("flex flex-col gap-2.5 rounded-xl border p-7", cardClassName, feature.className),
26979
- children: [
27075
+ className: cn(
27076
+ "flex flex-col gap-2.5 rounded-xl border p-7 bg-muted text-muted-foreground",
27077
+ cardClassName,
27078
+ feature.className
27079
+ ),
27080
+ children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-6 md:gap-12", children: [
26980
27081
  (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
- ]
27082
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2 md:gap-4", children: [
27083
+ feature.title && (typeof feature.title === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
27084
+ Pressable,
27085
+ {
27086
+ href: feature.href,
27087
+ className: cn(
27088
+ "font-medium text-xl text-muted-foreground",
27089
+ feature.titleClassName
27090
+ ),
27091
+ children: feature.title
27092
+ }
27093
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
27094
+ "div",
27095
+ {
27096
+ className: cn(
27097
+ "font-medium text-xl text-muted-foreground",
27098
+ feature.titleClassName
27099
+ ),
27100
+ children: feature.title
27101
+ }
27102
+ )),
27103
+ 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 }))
27104
+ ] })
27105
+ ] })
26984
27106
  },
26985
27107
  index
26986
27108
  ));
@@ -26996,11 +27118,65 @@ function FeatureIconGridMuted({
26996
27118
  className,
26997
27119
  containerClassName,
26998
27120
  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 })
27121
+ (title || description) && /* @__PURE__ */ jsxRuntime.jsxs(
27122
+ "div",
27123
+ {
27124
+ className: cn(
27125
+ "mx-auto flex max-w-full md:max-w-md text-balance flex-col gap-2.5 text-center",
27126
+ headerClassName
27127
+ ),
27128
+ children: [
27129
+ title && (typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
27130
+ "h2",
27131
+ {
27132
+ className: cn(
27133
+ "text-4xl font-semibold md:text-5xl",
27134
+ titleClassName
27135
+ ),
27136
+ children: title
27137
+ }
27138
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
27139
+ "div",
27140
+ {
27141
+ className: cn(
27142
+ "text-4xl font-semibold md:text-5xl",
27143
+ titleClassName
27144
+ ),
27145
+ children: title
27146
+ }
27147
+ )),
27148
+ description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
27149
+ "p",
27150
+ {
27151
+ className: cn(
27152
+ getTextColor(background, "muted"),
27153
+ descriptionClassName
27154
+ ),
27155
+ children: description
27156
+ }
27157
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
27158
+ "div",
27159
+ {
27160
+ className: cn(
27161
+ getTextColor(background, "muted"),
27162
+ descriptionClassName
27163
+ ),
27164
+ children: description
27165
+ }
27166
+ ))
27167
+ ]
27168
+ }
27169
+ ),
27170
+ (featuresSlot || features && features.length > 0) && /* @__PURE__ */ jsxRuntime.jsx(
27171
+ "div",
27172
+ {
27173
+ className: cn(
27174
+ "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",
27175
+ gridClassName
27176
+ ),
27177
+ children: featuresContent
27178
+ }
27179
+ )
27004
27180
  ] })
27005
27181
  }
27006
27182
  );
@@ -27014,7 +27190,7 @@ function FeatureStatsHighlight({
27014
27190
  stats,
27015
27191
  statsSlot,
27016
27192
  className,
27017
- containerClassName,
27193
+ containerClassName = "px-6 sm:px-6 md:px-6 lg:px-8",
27018
27194
  gridClassName,
27019
27195
  contentClassName,
27020
27196
  badgeClassName,
@@ -27024,7 +27200,7 @@ function FeatureStatsHighlight({
27024
27200
  statsGridClassName,
27025
27201
  statCardClassName,
27026
27202
  background,
27027
- spacing = "py-6 md:py-32",
27203
+ spacing = "py-12 md:py-32",
27028
27204
  pattern,
27029
27205
  patternOpacity,
27030
27206
  patternClassName
@@ -27064,9 +27240,7 @@ function FeatureStatsHighlight({
27064
27240
  "div",
27065
27241
  {
27066
27242
  className: cn(
27067
- "flex flex-col gap-2 rounded-xl border p-6",
27068
- getNestedCardBg(background, "card"),
27069
- getNestedCardTextColor(background),
27243
+ "flex flex-col gap-2 rounded-xl border p-4 md:p-6 bg-card text-card-foreground h-full justify-between",
27070
27244
  statCardClassName,
27071
27245
  stat.className
27072
27246
  ),
@@ -27075,13 +27249,22 @@ function FeatureStatsHighlight({
27075
27249
  "span",
27076
27250
  {
27077
27251
  className: cn(
27078
- "text-4xl font-bold lg:text-5xl",
27252
+ "text-3xl font-bold lg:text-4xl xl:text-5xl",
27079
27253
  stat.valueClassName
27080
27254
  ),
27081
27255
  children: stat.value
27082
27256
  }
27083
27257
  ),
27084
- stat.label && /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("", stat.labelClassName), children: stat.label })
27258
+ stat.label && /* @__PURE__ */ jsxRuntime.jsx(
27259
+ "span",
27260
+ {
27261
+ className: cn(
27262
+ "uppercase font-bold text-sm opacity-60",
27263
+ stat.labelClassName
27264
+ ),
27265
+ children: stat.label
27266
+ }
27267
+ )
27085
27268
  ]
27086
27269
  },
27087
27270
  index
@@ -27103,7 +27286,7 @@ function FeatureStatsHighlight({
27103
27286
  className: cn("grid gap-10 lg:grid-cols-2 lg:gap-20", gridClassName),
27104
27287
  children: [
27105
27288
  /* @__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 }),
27289
+ badge && /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "default", className: cn("", badgeClassName), children: badge }),
27107
27290
  title && (typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
27108
27291
  "h2",
27109
27292
  {
@@ -27126,7 +27309,16 @@ function FeatureStatsHighlight({
27126
27309
  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
27310
  (actionsSlot || actions && actions.length > 0) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: actionsClassName, children: actionsContent })
27128
27311
  ] }),
27129
- (statsSlot || stats && stats.length > 0) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("grid grid-cols-2 gap-6", statsGridClassName), children: statsContent })
27312
+ (statsSlot || stats && stats.length > 0) && /* @__PURE__ */ jsxRuntime.jsx(
27313
+ "div",
27314
+ {
27315
+ className: cn(
27316
+ "grid grid-cols-1 gap-4 md:grid-cols-2 md:gap-6",
27317
+ statsGridClassName
27318
+ ),
27319
+ children: statsContent
27320
+ }
27321
+ )
27130
27322
  ]
27131
27323
  }
27132
27324
  )
@@ -27200,7 +27392,7 @@ function FeatureAccordionImage({
27200
27392
  itemsSlot,
27201
27393
  defaultValue,
27202
27394
  className,
27203
- containerClassName,
27395
+ containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
27204
27396
  headerClassName,
27205
27397
  titleClassName,
27206
27398
  descriptionClassName,
@@ -27221,26 +27413,55 @@ function FeatureAccordionImage({
27221
27413
  const accordionItemsContent = React52.useMemo(() => {
27222
27414
  if (itemsSlot) return itemsSlot;
27223
27415
  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,
27234
- {
27416
+ return items.map((item, index) => /* @__PURE__ */ jsxRuntime.jsxs(
27417
+ AccordionItem,
27418
+ {
27419
+ value: `item-${index}`,
27420
+ className: item.className,
27421
+ children: [
27422
+ item.title && /* @__PURE__ */ jsxRuntime.jsx(
27423
+ AccordionTrigger,
27424
+ {
27425
+ className: cn(
27426
+ "text-left text-md md:text-lg font-medium",
27427
+ item.triggerClassName
27428
+ ),
27429
+ children: item.title
27430
+ }
27431
+ ),
27432
+ item.content && /* @__PURE__ */ jsxRuntime.jsx(
27433
+ AccordionContent,
27434
+ {
27435
+ className: cn(
27436
+ getTextColor(background, "muted"),
27437
+ item.contentClassName
27438
+ ),
27439
+ children: item.content
27440
+ }
27441
+ )
27442
+ ]
27443
+ },
27444
+ index
27445
+ ));
27446
+ }, [itemsSlot, items]);
27447
+ const imageContent = React52.useMemo(() => {
27448
+ if (currentImage?.imageSlot) return currentImage.imageSlot;
27449
+ if (!currentImage?.imageSrc) return null;
27450
+ return /* @__PURE__ */ jsxRuntime.jsx(
27451
+ img.Img,
27452
+ {
27235
27453
  src: currentImage.imageSrc,
27236
27454
  alt: currentImage.imageAlt || "",
27237
- className: cn("h-full w-full object-cover transition-opacity duration-300", imageClassName),
27455
+ className: cn(
27456
+ "h-full w-full object-cover transition-opacity duration-300",
27457
+ imageClassName
27458
+ ),
27238
27459
  loading: "lazy",
27239
27460
  optixFlowConfig
27240
27461
  }
27241
27462
  );
27242
27463
  }, [currentImage, imageClassName, optixFlowConfig]);
27243
- return /* @__PURE__ */ jsxRuntime.jsxs(
27464
+ return /* @__PURE__ */ jsxRuntime.jsx(
27244
27465
  Section,
27245
27466
  {
27246
27467
  background,
@@ -27250,26 +27471,71 @@ function FeatureAccordionImage({
27250
27471
  patternClassName,
27251
27472
  className,
27252
27473
  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
- ]
27474
+ children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center space-y-6 md:space-y-16", children: [
27475
+ (title || description) && /* @__PURE__ */ jsxRuntime.jsxs(
27476
+ "div",
27477
+ {
27478
+ className: cn(
27479
+ "text-left md:text-center max-w-full md:max-w-md text-balance",
27480
+ headerClassName
27481
+ ),
27482
+ children: [
27483
+ title && (typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
27484
+ "h2",
27485
+ {
27486
+ className: cn(
27487
+ "text-2xl font-semibold md:text-3xl lg:text-4xl",
27488
+ titleClassName
27489
+ ),
27490
+ children: title
27491
+ }
27492
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
27493
+ "div",
27494
+ {
27495
+ className: cn(
27496
+ "text-xl font-semibold md:text-2xl lg:text-3xl",
27497
+ titleClassName
27498
+ ),
27499
+ children: title
27500
+ }
27501
+ )),
27502
+ 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 }))
27503
+ ]
27504
+ }
27505
+ ),
27506
+ (itemsSlot || items && items.length > 0) && /* @__PURE__ */ jsxRuntime.jsxs(
27507
+ "div",
27508
+ {
27509
+ className: cn(
27510
+ "grid gap-10 lg:grid-cols-2 lg:gap-16",
27511
+ gridClassName
27512
+ ),
27513
+ children: [
27514
+ /* @__PURE__ */ jsxRuntime.jsx(
27515
+ Accordion,
27516
+ {
27517
+ type: "single",
27518
+ collapsible: true,
27519
+ value: activeItem,
27520
+ onValueChange: setActiveItem,
27521
+ className: cn("w-full", accordionClassName),
27522
+ children: accordionItemsContent
27523
+ }
27524
+ ),
27525
+ /* @__PURE__ */ jsxRuntime.jsx(
27526
+ "div",
27527
+ {
27528
+ className: cn(
27529
+ "relative aspect-video overflow-hidden rounded-xl shadow-xl lg:aspect-square",
27530
+ imageWrapperClassName
27531
+ ),
27532
+ children: imageContent
27533
+ }
27534
+ )
27535
+ ]
27536
+ }
27537
+ )
27538
+ ] })
27273
27539
  }
27274
27540
  );
27275
27541
  }
@@ -41541,236 +41807,269 @@ function FaqSplitHero({
41541
41807
  imageArea
41542
41808
  ] }) });
41543
41809
  }
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"
41810
+ var Controls = React52__namespace.memo(
41811
+ ({
41812
+ handleNext,
41813
+ handlePrevious,
41814
+ isPreviousDisabled,
41815
+ isNextDisabled
41816
+ }) => {
41817
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "hidden flex-col items-start gap-8 lg:flex", children: [
41818
+ /* @__PURE__ */ jsxRuntime.jsx(
41819
+ "button",
41820
+ {
41821
+ className: "rounded-full border p-2 flex items-center justify-center disabled:opacity-50 h-fit w-fit bg-card text-card-foreground",
41822
+ onClick: handlePrevious,
41823
+ disabled: isPreviousDisabled,
41824
+ type: "button",
41825
+ children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/chevron-up", size: 24 })
41593
41826
  }
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,
41827
+ ),
41828
+ /* @__PURE__ */ jsxRuntime.jsx(
41829
+ "button",
41602
41830
  {
41603
- layout: true,
41604
- variants: variants2,
41605
- initial: "initial",
41606
- animate: "animate",
41607
- exit: "exit",
41608
- transition: {
41831
+ className: "rounded-full border p-2 flex items-center justify-center disabled:opacity-50 h-fit w-fit bg-card text-card-foreground",
41832
+ onClick: handleNext,
41833
+ disabled: isNextDisabled,
41834
+ type: "button",
41835
+ children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/chevron-down", size: 24 })
41836
+ }
41837
+ )
41838
+ ] });
41839
+ }
41840
+ );
41841
+ var FeatureCard = React52__namespace.memo(
41842
+ ({ feature, isActive, onClick }) => {
41843
+ const variants2 = React52.useMemo(
41844
+ () => ({
41845
+ initial: {
41846
+ opacity: 0
41847
+ },
41848
+ animate: {
41849
+ opacity: 1
41850
+ },
41851
+ exit: {
41852
+ opacity: 0
41853
+ }
41854
+ }),
41855
+ []
41856
+ );
41857
+ return /* @__PURE__ */ jsxRuntime.jsx(framerMotion.AnimatePresence, { mode: "popLayout", children: /* @__PURE__ */ jsxRuntime.jsxs(
41858
+ framerMotion.motion.div,
41859
+ {
41860
+ layout: true,
41861
+ transition: {
41862
+ layout: {
41609
41863
  duration: 0.4,
41610
- delay: 0.3,
41611
41864
  ease: "easeOut"
41865
+ }
41866
+ },
41867
+ style: {
41868
+ borderRadius: "24px"
41869
+ },
41870
+ className: cn(
41871
+ "relative flex items-start gap-4 bg-background text-foreground md:w-fit md:max-w-sm",
41872
+ isActive ? "shadow-xl overflow-visible" : "cursor-pointer shadow-none hover:shadow-xl transition-shadow duration-500 overflow-hidden"
41873
+ ),
41874
+ onClick,
41875
+ children: [
41876
+ isActive && feature.href && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute right-0 top-1/2 -translate-y-1/2 translate-x-1/2 bg-background rounded-full h-fit w-fit p-2 flex items-center justify-center z-10", children: /* @__PURE__ */ jsxRuntime.jsx(
41877
+ Pressable,
41878
+ {
41879
+ href: feature.href,
41880
+ size: "icon-lg",
41881
+ className: "bg-primary text-primary-foreground",
41882
+ children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/arrow-up-right" })
41883
+ }
41884
+ ) }),
41885
+ isActive ? /* @__PURE__ */ jsxRuntime.jsx(
41886
+ framerMotion.motion.div,
41887
+ {
41888
+ layout: true,
41889
+ variants: variants2,
41890
+ initial: "initial",
41891
+ animate: "animate",
41892
+ exit: "exit",
41893
+ transition: {
41894
+ duration: 0.4,
41895
+ delay: 0.3,
41896
+ ease: "easeOut"
41897
+ },
41898
+ className: "p-6 text-sm md:p-8 md:text-base",
41899
+ children: (feature.title || feature.description) && /* @__PURE__ */ jsxRuntime.jsxs("p", { children: [
41900
+ feature.title && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "font-semibold", children: [
41901
+ feature.title,
41902
+ "."
41903
+ ] }),
41904
+ feature.title && feature.description && " ",
41905
+ feature.description && /* @__PURE__ */ jsxRuntime.jsx("span", { children: feature.description })
41906
+ ] })
41907
+ },
41908
+ `feature-description-active-${feature.title}`
41909
+ ) : /* @__PURE__ */ jsxRuntime.jsxs(
41910
+ framerMotion.motion.div,
41911
+ {
41912
+ layout: true,
41913
+ variants: variants2,
41914
+ initial: "initial",
41915
+ animate: "animate",
41916
+ exit: "exit",
41917
+ transition: {
41918
+ duration: 0.4,
41919
+ delay: 0.2,
41920
+ ease: "easeOut"
41921
+ },
41922
+ className: cn(
41923
+ "flex h-fit shrink-0 items-center gap-4 text-sm md:py-3.5 md:pr-6 md:pl-3 md:text-base",
41924
+ !isActive && "h-0 w-0 md:h-auto md:w-auto"
41925
+ ),
41926
+ style: {
41927
+ height: "auto",
41928
+ lineHeight: "normal"
41929
+ },
41930
+ children: [
41931
+ /* @__PURE__ */ jsxRuntime.jsx(
41932
+ DynamicIcon,
41933
+ {
41934
+ name: "lucide/plus-circle",
41935
+ size: 24,
41936
+ className: "shrink-0"
41937
+ }
41938
+ ),
41939
+ feature.title && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "shrink-0 font-semibold", children: feature.title })
41940
+ ]
41941
+ },
41942
+ `feature-description-inactive-${feature.title}`
41943
+ )
41944
+ ]
41945
+ }
41946
+ ) });
41947
+ }
41948
+ );
41949
+ var FeaturesDesktop = React52__namespace.memo(
41950
+ ({
41951
+ features,
41952
+ handleNext,
41953
+ handlePrevious,
41954
+ activeIndex,
41955
+ handleFeatureClick,
41956
+ isPreviousDisabled,
41957
+ isNextDisabled
41958
+ }) => {
41959
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative z-10 hidden items-center gap-8 md:flex", children: [
41960
+ /* @__PURE__ */ jsxRuntime.jsx(
41961
+ Controls,
41962
+ {
41963
+ handleNext,
41964
+ handlePrevious,
41965
+ isPreviousDisabled,
41966
+ isNextDisabled
41967
+ }
41968
+ ),
41969
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-col gap-4", children: features.map((feature, index) => {
41970
+ return /* @__PURE__ */ jsxRuntime.jsx(
41971
+ FeatureCard,
41972
+ {
41973
+ feature,
41974
+ isActive: index === activeIndex,
41975
+ onClick: () => handleFeatureClick(index)
41612
41976
  },
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
- ] })
41977
+ `feature-card-${index}`
41978
+ );
41979
+ }) })
41980
+ ] });
41981
+ }
41982
+ );
41983
+ var FeaturesMobile = React52__namespace.memo(
41984
+ ({
41985
+ features,
41986
+ handleNext,
41987
+ handlePrevious,
41988
+ activeIndex,
41989
+ direction,
41990
+ isPreviousDisabled,
41991
+ isNextDisabled
41992
+ }) => {
41993
+ const variants2 = React52.useMemo(
41994
+ () => ({
41995
+ enter: (direction2) => ({
41996
+ x: direction2 > 0 ? 100 : -100,
41997
+ opacity: 0
41998
+ }),
41999
+ center: {
42000
+ x: 0,
42001
+ opacity: 1
41622
42002
  },
41623
- `feature-description-active-${feature.title}`
41624
- ) : /* @__PURE__ */ jsxRuntime.jsxs(
42003
+ exit: (direction2) => ({
42004
+ x: direction2 < 0 ? 100 : -100,
42005
+ opacity: 0
42006
+ })
42007
+ }),
42008
+ []
42009
+ );
42010
+ const currentFeature = features[activeIndex];
42011
+ 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: [
42012
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1 overflow-hidden", children: /* @__PURE__ */ jsxRuntime.jsx(framerMotion.AnimatePresence, { mode: "wait", custom: direction, children: /* @__PURE__ */ jsxRuntime.jsx(
41625
42013
  framerMotion.motion.div,
41626
42014
  {
41627
- layout: true,
42015
+ custom: direction,
41628
42016
  variants: variants2,
41629
- initial: "initial",
41630
- animate: "animate",
42017
+ initial: "enter",
42018
+ animate: "center",
41631
42019
  exit: "exit",
41632
42020
  transition: {
41633
- duration: 0.4,
41634
- delay: 0.2,
41635
- ease: "easeOut"
42021
+ x: { type: "spring", stiffness: 300, damping: 30 },
42022
+ opacity: { duration: 0.2 }
41636
42023
  },
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 }
42024
+ className: "rounded-3xl bg-background p-4 text-left",
42025
+ children: (currentFeature?.title || currentFeature?.description) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-sm", children: [
42026
+ currentFeature.title && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-semibold", children: currentFeature.title }),
42027
+ currentFeature.description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-1", children: currentFeature.description })
42028
+ ] })
41740
42029
  },
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
- });
42030
+ activeIndex
42031
+ ) }) }),
42032
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col justify-center gap-2", children: [
42033
+ /* @__PURE__ */ jsxRuntime.jsx(
42034
+ "button",
42035
+ {
42036
+ className: "rounded-full border p-2 flex items-center justify-center disabled:opacity-50 h-fit w-fit bg-card text-card-foreground",
42037
+ onClick: handlePrevious,
42038
+ disabled: isPreviousDisabled,
42039
+ type: "button",
42040
+ children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/chevron-up", size: 20 })
42041
+ }
42042
+ ),
42043
+ /* @__PURE__ */ jsxRuntime.jsx(
42044
+ "button",
42045
+ {
42046
+ className: "rounded-full border p-2 flex items-center justify-center disabled:opacity-50 h-fit w-fit bg-card text-card-foreground",
42047
+ onClick: handleNext,
42048
+ disabled: isNextDisabled,
42049
+ type: "button",
42050
+ children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/chevron-down", size: 20 })
42051
+ }
42052
+ )
42053
+ ] })
42054
+ ] }) });
42055
+ }
42056
+ );
41765
42057
  function FeatureAnimatedCarousel({
42058
+ title,
42059
+ description,
42060
+ titleClassName,
42061
+ descriptionClassName,
41766
42062
  features,
41767
42063
  className,
41768
42064
  optixFlowConfig,
41769
42065
  background,
41770
- spacing,
41771
42066
  pattern,
41772
42067
  patternOpacity,
41773
- patternClassName
42068
+ patternClassName,
42069
+ headerClassName,
42070
+ blockCardClassName,
42071
+ spacing = "py-12 md:py-32",
42072
+ containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8"
41774
42073
  }) {
41775
42074
  const [activeIndex, setActiveIndex] = React52__namespace.useState(0);
41776
42075
  const [direction, setDirection] = React52__namespace.useState(1);
@@ -41786,26 +42085,32 @@ function FeatureAnimatedCarousel({
41786
42085
  setActiveIndex(activeIndex - 1);
41787
42086
  }
41788
42087
  }, [activeIndex]);
41789
- const handleFeatureClick = React52.useCallback((index) => {
41790
- setDirection(index > activeIndex ? 1 : -1);
41791
- setActiveIndex(index);
41792
- }, [activeIndex]);
42088
+ const handleFeatureClick = React52.useCallback(
42089
+ (index) => {
42090
+ setDirection(index > activeIndex ? 1 : -1);
42091
+ setActiveIndex(index);
42092
+ },
42093
+ [activeIndex]
42094
+ );
41793
42095
  const isPreviousDisabled = activeIndex === 0;
41794
42096
  const isNextDisabled = !features || activeIndex === features.length - 1;
41795
- const imageVariants = React52.useMemo(() => ({
41796
- enter: (direction2) => ({
41797
- x: direction2 > 0 ? 300 : -300,
41798
- opacity: 0
42097
+ const imageVariants = React52.useMemo(
42098
+ () => ({
42099
+ enter: (direction2) => ({
42100
+ x: direction2 > 0 ? 300 : -300,
42101
+ opacity: 0
42102
+ }),
42103
+ center: {
42104
+ x: 0,
42105
+ opacity: 1
42106
+ },
42107
+ exit: (direction2) => ({
42108
+ x: direction2 < 0 ? 300 : -300,
42109
+ opacity: 0
42110
+ })
41799
42111
  }),
41800
- center: {
41801
- x: 0,
41802
- opacity: 1
41803
- },
41804
- exit: (direction2) => ({
41805
- x: direction2 < 0 ? 300 : -300,
41806
- opacity: 0
41807
- })
41808
- }), []);
42112
+ []
42113
+ );
41809
42114
  if (!features || features.length === 0) {
41810
42115
  return /* @__PURE__ */ jsxRuntime.jsx(
41811
42116
  Section,
@@ -41816,11 +42121,15 @@ function FeatureAnimatedCarousel({
41816
42121
  patternOpacity,
41817
42122
  patternClassName,
41818
42123
  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
- ) })
42124
+ containerClassName,
42125
+ children: /* @__PURE__ */ jsxRuntime.jsx(
42126
+ "div",
42127
+ {
42128
+ className: cn(
42129
+ "relative flex min-h-[500px] flex-col-reverse gap-8 overflow-hidden rounded-3xl bg-muted p-6 md:flex-row md:items-center md:p-12 lg:min-h-[600px]"
42130
+ )
42131
+ }
42132
+ )
41824
42133
  }
41825
42134
  );
41826
42135
  }
@@ -41834,60 +42143,116 @@ function FeatureAnimatedCarousel({
41834
42143
  patternOpacity,
41835
42144
  patternClassName,
41836
42145
  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,
42146
+ containerClassName,
42147
+ children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col space-y-6 md:space-y-16", children: [
42148
+ title || description ? /* @__PURE__ */ jsxRuntime.jsxs(
42149
+ "div",
41844
42150
  {
41845
- features,
41846
- handleNext,
41847
- handlePrevious,
41848
- activeIndex,
41849
- handleFeatureClick,
41850
- isPreviousDisabled,
41851
- isNextDisabled
42151
+ className: cn(
42152
+ "flex flex-col gap-4 md:gap-6 text-left",
42153
+ headerClassName
42154
+ ),
42155
+ children: [
42156
+ title && (typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
42157
+ "h2",
42158
+ {
42159
+ className: cn(
42160
+ "text-xl font-semibold text-balance md:text-2xl lg:text-3xl max-w-lg md:max-w-md",
42161
+ titleClassName
42162
+ ),
42163
+ children: title
42164
+ }
42165
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
42166
+ "div",
42167
+ {
42168
+ className: cn(
42169
+ "text-xl font-semibold text-balance md:text-2xl lg:text-3xl max-w-lg md:max-w-md",
42170
+ titleClassName
42171
+ ),
42172
+ children: title
42173
+ }
42174
+ )),
42175
+ description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("max-w-lg md:max-w-md", descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx(
42176
+ "div",
42177
+ {
42178
+ className: cn("max-w-lg md:max-w-md", descriptionClassName),
42179
+ children: description
42180
+ }
42181
+ ))
42182
+ ]
41852
42183
  }
41853
- ),
41854
- /* @__PURE__ */ jsxRuntime.jsx(
41855
- FeaturesMobile,
42184
+ ) : null,
42185
+ /* @__PURE__ */ jsxRuntime.jsxs(
42186
+ "div",
41856
42187
  {
41857
- features,
41858
- handleNext,
41859
- handlePrevious,
41860
- activeIndex,
41861
- direction,
41862
- isPreviousDisabled,
41863
- isNextDisabled
42188
+ className: cn(
42189
+ "relative flex min-h-full md:min-h-[500px] flex-col-reverse gap-5 md:gap-8 bg-muted overflow-hidden rounded-3xl p-4 md:p-6 md:flex-row md:items-center lg:p-12 lg:min-h-[600px]",
42190
+ blockCardClassName
42191
+ ),
42192
+ children: [
42193
+ /* @__PURE__ */ jsxRuntime.jsx(
42194
+ FeaturesDesktop,
42195
+ {
42196
+ features,
42197
+ handleNext,
42198
+ handlePrevious,
42199
+ activeIndex,
42200
+ handleFeatureClick,
42201
+ isPreviousDisabled,
42202
+ isNextDisabled
42203
+ }
42204
+ ),
42205
+ /* @__PURE__ */ jsxRuntime.jsx(
42206
+ FeaturesMobile,
42207
+ {
42208
+ features,
42209
+ handleNext,
42210
+ handlePrevious,
42211
+ activeIndex,
42212
+ direction,
42213
+ isPreviousDisabled,
42214
+ isNextDisabled
42215
+ }
42216
+ ),
42217
+ currentFeature?.image && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative w-full h-[250px] md:h-auto md:absolute md:right-8 md:top-8 md:bottom-8 md:w-1/2", children: [
42218
+ currentFeature.href && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute top-4 right-4 z-10 rounded-full h-fit w-fit shadow-md hover:shadow-2xl flex items-center justify-center md:hidden", children: /* @__PURE__ */ jsxRuntime.jsx(
42219
+ Pressable,
42220
+ {
42221
+ href: currentFeature.href,
42222
+ size: "icon-lg",
42223
+ className: "bg-primary text-primary-foreground",
42224
+ children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/arrow-up-right" })
42225
+ }
42226
+ ) }),
42227
+ /* @__PURE__ */ jsxRuntime.jsx(framerMotion.AnimatePresence, { mode: "wait", custom: direction, children: /* @__PURE__ */ jsxRuntime.jsx(
42228
+ framerMotion.motion.div,
42229
+ {
42230
+ custom: direction,
42231
+ variants: imageVariants,
42232
+ initial: "enter",
42233
+ animate: "center",
42234
+ exit: "exit",
42235
+ transition: {
42236
+ x: { type: "spring", stiffness: 300, damping: 30 },
42237
+ opacity: { duration: 0.3 }
42238
+ },
42239
+ className: "h-full w-full shadow-xl overflow-hidden rounded-2xl",
42240
+ children: /* @__PURE__ */ jsxRuntime.jsx(
42241
+ img.Img,
42242
+ {
42243
+ src: currentFeature.image,
42244
+ alt: currentFeature.imageAlt || (typeof currentFeature.title === "string" ? currentFeature.title : "Feature image"),
42245
+ className: "h-full w-full object-cover",
42246
+ optixFlowConfig
42247
+ }
42248
+ )
42249
+ },
42250
+ activeIndex
42251
+ ) })
42252
+ ] })
42253
+ ]
41864
42254
  }
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
- ) }) })
42255
+ )
41891
42256
  ] })
41892
42257
  }
41893
42258
  );