@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.js CHANGED
@@ -24053,7 +24053,7 @@ function FeatureChecklistImage({
24053
24053
  checklistItems,
24054
24054
  checklistSlot,
24055
24055
  className,
24056
- containerClassName = "px-6 sm:px-6 md:mx-6 lg:px-8",
24056
+ containerClassName = "px-6 sm:px-6 md:px-6 lg:px-8",
24057
24057
  contentWrapperClassName,
24058
24058
  imageClassName,
24059
24059
  contentClassName,
@@ -24248,7 +24248,7 @@ function FeatureCarouselProgress({
24248
24248
  slides,
24249
24249
  slidesSlot,
24250
24250
  className,
24251
- containerClassName = "px-6 sm:px-6 md:mx-6 lg:px-8",
24251
+ containerClassName = "mx-0 w-full relative z-10 max-w-full px-6 sm:px-6 md:mx-0 lg:px-8",
24252
24252
  headerClassName,
24253
24253
  badgeClassName,
24254
24254
  carouselClassName,
@@ -24256,7 +24256,7 @@ function FeatureCarouselProgress({
24256
24256
  progressClassName,
24257
24257
  cardClassName,
24258
24258
  background,
24259
- spacing = "py-6 md:py-32",
24259
+ spacing = "py-12 md:py-32",
24260
24260
  pattern,
24261
24261
  patternOpacity,
24262
24262
  patternClassName
@@ -24289,7 +24289,11 @@ function FeatureCarouselProgress({
24289
24289
  children: /* @__PURE__ */ jsx("div", { className: "p-1 h-auto md:h-full", children: /* @__PURE__ */ jsx(
24290
24290
  Card,
24291
24291
  {
24292
- className: cn("h-auto md:h-full", cardClassName, slide.className),
24292
+ className: cn(
24293
+ "h-auto md:h-full py-0",
24294
+ cardClassName,
24295
+ slide.className
24296
+ ),
24293
24297
  children: /* @__PURE__ */ jsx(CardContent, { className: "flex flex-col justify-center p-6 h-full", children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col h-full justify-between", children: [
24294
24298
  (slide.icon || slide.iconName) && /* @__PURE__ */ jsx(
24295
24299
  "span",
@@ -24301,7 +24305,7 @@ function FeatureCarouselProgress({
24301
24305
  children: renderSlideIcon(slide)
24302
24306
  }
24303
24307
  ),
24304
- /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-4", children: [
24308
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2", children: [
24305
24309
  slide.title && (typeof slide.title === "string" ? /* @__PURE__ */ jsx(
24306
24310
  Pressable,
24307
24311
  {
@@ -24326,7 +24330,7 @@ function FeatureCarouselProgress({
24326
24330
  "p",
24327
24331
  {
24328
24332
  className: cn(
24329
- "pt-2 text-card-foreground",
24333
+ "text-card-foreground",
24330
24334
  slide.descriptionClassName
24331
24335
  ),
24332
24336
  children: slide.description
@@ -24335,7 +24339,7 @@ function FeatureCarouselProgress({
24335
24339
  "div",
24336
24340
  {
24337
24341
  className: cn(
24338
- "pt-2 text-card-foreground",
24342
+ "text-card-foreground",
24339
24343
  slide.descriptionClassName
24340
24344
  ),
24341
24345
  children: slide.description
@@ -24363,14 +24367,17 @@ function FeatureCarouselProgress({
24363
24367
  badge || title || description ? /* @__PURE__ */ jsxs(
24364
24368
  "div",
24365
24369
  {
24366
- className: cn("flex flex-col items-center gap-6", headerClassName),
24370
+ className: cn(
24371
+ "flex flex-col items-center gap-6 text-center",
24372
+ headerClassName
24373
+ ),
24367
24374
  children: [
24368
24375
  badge && /* @__PURE__ */ jsx(Badge, { className: badgeClassName, children: badge }),
24369
24376
  title && (typeof title === "string" ? /* @__PURE__ */ jsx(
24370
24377
  "h2",
24371
24378
  {
24372
24379
  className: cn(
24373
- "text-xl font-semibold text-balance md:text-2xl lg:text-3xl",
24380
+ "text-xl font-semibold text-balance md:text-2xl lg:text-3xl max-w-lg md:max-w-md",
24374
24381
  titleClassName
24375
24382
  ),
24376
24383
  children: title
@@ -24379,13 +24386,19 @@ function FeatureCarouselProgress({
24379
24386
  "div",
24380
24387
  {
24381
24388
  className: cn(
24382
- "text-xl font-semibold text-balance md:text-2xl lg:text-3xl",
24389
+ "text-xl font-semibold text-balance md:text-2xl lg:text-3xl max-w-lg md:max-w-md",
24383
24390
  titleClassName
24384
24391
  ),
24385
24392
  children: title
24386
24393
  }
24387
24394
  )),
24388
- description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mt-1 md:mt-6", descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: cn("mt-1 md:mt-6", descriptionClassName), children: description }))
24395
+ description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("max-w-lg md:max-w-md", descriptionClassName), children: description }) : /* @__PURE__ */ jsx(
24396
+ "div",
24397
+ {
24398
+ className: cn("max-w-lg md:max-w-md", descriptionClassName),
24399
+ children: description
24400
+ }
24401
+ ))
24389
24402
  ]
24390
24403
  }
24391
24404
  ) : null,
@@ -24435,7 +24448,7 @@ function FeatureCardGridLinked({
24435
24448
  features,
24436
24449
  featuresSlot,
24437
24450
  className,
24438
- containerClassName = "px-6 sm:px-6 md:mx-6 lg:px-8",
24451
+ containerClassName = "px-6 sm:px-6 md:px-6 lg:px-8",
24439
24452
  titleWrapperClassName,
24440
24453
  titleClassName,
24441
24454
  descriptionClassName,
@@ -24588,7 +24601,7 @@ function FeatureNumberedCards({
24588
24601
  features,
24589
24602
  featuresSlot,
24590
24603
  className,
24591
- containerClassName = "px-6 sm:px-6 md:mx-6 lg:px-8",
24604
+ containerClassName = "px-6 sm:px-6 md:px-6 lg:px-8",
24592
24605
  cardsWrapperClassName,
24593
24606
  cardClassName,
24594
24607
  titleClassName,
@@ -26808,6 +26821,7 @@ function FeatureBentoImageGrid({
26808
26821
  function FeatureImageCardsThreeColumn({
26809
26822
  title,
26810
26823
  description,
26824
+ headerClassName,
26811
26825
  cards,
26812
26826
  cardsSlot,
26813
26827
  className,
@@ -26823,28 +26837,34 @@ function FeatureImageCardsThreeColumn({
26823
26837
  patternOpacity,
26824
26838
  patternClassName
26825
26839
  }) {
26826
- const renderImage = useCallback((card, imageAlt) => {
26827
- if (card.imageSlot) return card.imageSlot;
26828
- if (!card.imageSrc) return null;
26829
- return /* @__PURE__ */ jsx(
26830
- Img,
26831
- {
26832
- src: card.imageSrc,
26833
- alt: imageAlt,
26834
- className: "h-full max-h-[450px] w-full rounded-xl object-cover object-center",
26835
- loading: "lazy",
26836
- optixFlowConfig
26840
+ const renderImage = useCallback(
26841
+ (card, imageAlt) => {
26842
+ if (card.imageSlot) return card.imageSlot;
26843
+ if (!card.imageSrc) return null;
26844
+ return /* @__PURE__ */ jsx(
26845
+ Img,
26846
+ {
26847
+ src: card.imageSrc,
26848
+ alt: imageAlt,
26849
+ className: "h-full max-h-[450px] w-full rounded-xl object-cover object-center",
26850
+ loading: "lazy",
26851
+ optixFlowConfig
26852
+ }
26853
+ );
26854
+ },
26855
+ [optixFlowConfig]
26856
+ );
26857
+ const renderBadgeIcon = useCallback(
26858
+ (card) => {
26859
+ if (card.avatarSrc) {
26860
+ return /* @__PURE__ */ jsx(Avatar, { className: "size-7 rounded-full", children: /* @__PURE__ */ jsx(AvatarImage, { src: card.avatarSrc, alt: "Avatar" }) });
26837
26861
  }
26838
- );
26839
- }, [optixFlowConfig]);
26840
- const renderBadgeIcon = useCallback((card) => {
26841
- if (card.avatarSrc) {
26842
- return /* @__PURE__ */ jsx(Avatar, { className: "size-7 rounded-full", children: /* @__PURE__ */ jsx(AvatarImage, { src: card.avatarSrc, alt: "Avatar" }) });
26843
- }
26844
- if (card.icon) return card.icon;
26845
- if (!card.iconName) return null;
26846
- return /* @__PURE__ */ jsx(DynamicIcon, { name: card.iconName, size: 24 });
26847
- }, []);
26862
+ if (card.icon) return card.icon;
26863
+ if (!card.iconName) return null;
26864
+ return /* @__PURE__ */ jsx(DynamicIcon, { name: card.iconName, size: 24 });
26865
+ },
26866
+ []
26867
+ );
26848
26868
  const cardsContent = useMemo$1(() => {
26849
26869
  if (cardsSlot) return cardsSlot;
26850
26870
  if (!cards || cards.length === 0) return null;
@@ -26855,31 +26875,53 @@ function FeatureImageCardsThreeColumn({
26855
26875
  {
26856
26876
  href: card.link,
26857
26877
  onClick: card.onClick,
26858
- className: cn("group relative overflow-hidden rounded-xl", cardClassName, card.className),
26878
+ className: cn(
26879
+ "group relative overflow-hidden rounded-xl",
26880
+ cardClassName,
26881
+ card.className
26882
+ ),
26859
26883
  children: [
26860
26884
  renderImage(card, imageAlt),
26861
- /* @__PURE__ */ 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" }),
26862
- /* @__PURE__ */ jsxs("div", { className: "absolute top-0 flex h-full w-full flex-col justify-between p-7", children: [
26863
- (card.badgeText || card.avatarSrc || card.icon || card.iconName) && /* @__PURE__ */ jsxs(
26864
- "span",
26865
- {
26866
- className: cn(
26867
- "ml-auto flex w-fit items-center gap-2 text-sm font-semibold",
26868
- 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",
26869
- card.badgeClassName
26870
- ),
26871
- children: [
26872
- renderBadgeIcon(card),
26873
- card.badgeText
26874
- ]
26875
- }
26876
- ),
26885
+ /* @__PURE__ */ 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" }),
26886
+ /* @__PURE__ */ jsxs("div", { className: "absolute top-0 flex h-full w-full flex-col justify-between p-4 md:p-6", children: [
26887
+ (card.badgeText || card.avatarSrc || card.icon || card.iconName) && /* @__PURE__ */ jsxs(Badge, { variant: "default", className: cn(card.badgeClassName), children: [
26888
+ renderBadgeIcon(card),
26889
+ card.badgeText
26890
+ ] }),
26877
26891
  /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-5", children: [
26878
- card.title && (typeof card.title === "string" ? /* @__PURE__ */ jsx("h4", { className: cn("text-2xl font-semibold lg:text-3xl", card.titleClassName), children: card.title }) : /* @__PURE__ */ jsx("div", { className: cn("text-2xl font-semibold lg:text-3xl", card.titleClassName), children: card.title })),
26879
- card.linkText && /* @__PURE__ */ jsxs("p", { className: cn("flex items-center gap-1 font-medium", card.linkClassName), children: [
26880
- card.linkText,
26881
- /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/chevron-right", size: 16 })
26882
- ] })
26892
+ card.title && (typeof card.title === "string" ? /* @__PURE__ */ jsx(
26893
+ "h3",
26894
+ {
26895
+ className: cn(
26896
+ "text-xl md:text-2xl font-semibold",
26897
+ card.titleClassName
26898
+ ),
26899
+ children: card.title
26900
+ }
26901
+ ) : /* @__PURE__ */ jsx(
26902
+ "div",
26903
+ {
26904
+ className: cn(
26905
+ "text-xl md:text-2xl font-semibold",
26906
+ card.titleClassName
26907
+ ),
26908
+ children: card.title
26909
+ }
26910
+ )),
26911
+ card.linkText && card.link && /* @__PURE__ */ jsxs(
26912
+ Pressable,
26913
+ {
26914
+ className: cn(
26915
+ "font-bold text-xs uppercase",
26916
+ card.linkClassName
26917
+ ),
26918
+ href: card.link,
26919
+ children: [
26920
+ card.linkText,
26921
+ /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/arrow-up-right", size: 18 })
26922
+ ]
26923
+ }
26924
+ )
26883
26925
  ] })
26884
26926
  ] })
26885
26927
  ]
@@ -26888,7 +26930,7 @@ function FeatureImageCardsThreeColumn({
26888
26930
  );
26889
26931
  });
26890
26932
  }, [cardsSlot, cards, cardClassName, renderImage, renderBadgeIcon]);
26891
- return /* @__PURE__ */ jsxs(
26933
+ return /* @__PURE__ */ jsx(
26892
26934
  Section,
26893
26935
  {
26894
26936
  background,
@@ -26898,11 +26940,46 @@ function FeatureImageCardsThreeColumn({
26898
26940
  patternClassName,
26899
26941
  className,
26900
26942
  containerClassName,
26901
- children: [
26902
- title && (typeof title === "string" ? /* @__PURE__ */ jsx("h1", { className: cn("mb-4 text-center text-4xl font-semibold", titleClassName), children: title }) : /* @__PURE__ */ jsx("div", { className: cn("mb-4 text-center text-4xl font-semibold", titleClassName), children: title })),
26903
- description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-center", getTextColor(background, "muted"), descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: cn("text-center", getTextColor(background, "muted"), descriptionClassName), children: description })),
26904
- /* @__PURE__ */ jsx("div", { className: cn("grid gap-5 pt-14 xl:grid-cols-3", gridClassName), children: cardsContent })
26905
- ]
26943
+ children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col space-y-6 md:space-y-16", children: [
26944
+ title || description ? /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col gap-6 text-left", headerClassName), children: [
26945
+ title && (typeof title === "string" ? /* @__PURE__ */ jsx(
26946
+ "h2",
26947
+ {
26948
+ className: cn(
26949
+ "text-xl font-semibold text-balance md:text-2xl lg:text-3xl max-w-lg md:max-w-md",
26950
+ titleClassName
26951
+ ),
26952
+ children: title
26953
+ }
26954
+ ) : /* @__PURE__ */ jsx(
26955
+ "div",
26956
+ {
26957
+ className: cn(
26958
+ "text-xl font-semibold text-balance md:text-2xl lg:text-3xl max-w-lg md:max-w-md",
26959
+ titleClassName
26960
+ ),
26961
+ children: title
26962
+ }
26963
+ )),
26964
+ description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("max-w-lg md:max-w-md", descriptionClassName), children: description }) : /* @__PURE__ */ jsx(
26965
+ "div",
26966
+ {
26967
+ className: cn("max-w-lg md:max-w-md", descriptionClassName),
26968
+ children: description
26969
+ }
26970
+ ))
26971
+ ] }) : null,
26972
+ /* @__PURE__ */ jsx(
26973
+ "div",
26974
+ {
26975
+ className: cn(
26976
+ "grid gap-4 md:gap-4 grid-cols-1 md:grid-cols-3",
26977
+ gridClassName
26978
+ ),
26979
+ children: cardsContent
26980
+ }
26981
+ )
26982
+ ] })
26906
26983
  }
26907
26984
  );
26908
26985
  }
@@ -26912,35 +26989,68 @@ function FeatureIconGridMuted({
26912
26989
  features,
26913
26990
  featuresSlot,
26914
26991
  className,
26915
- containerClassName,
26916
26992
  headerClassName,
26917
26993
  titleClassName,
26918
26994
  descriptionClassName,
26919
26995
  gridClassName,
26920
26996
  cardClassName,
26921
26997
  background,
26922
- spacing,
26923
26998
  pattern,
26924
26999
  patternOpacity,
26925
- patternClassName
27000
+ patternClassName,
27001
+ spacing = "py-12 md:py-32",
27002
+ containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8"
26926
27003
  }) {
26927
27004
  const renderFeatureIcon = useCallback((feature) => {
26928
27005
  if (feature.icon) return feature.icon;
26929
- if (feature.iconName) return /* @__PURE__ */ jsx(DynamicIcon, { name: feature.iconName, size: 24, className: feature.iconClassName });
27006
+ if (feature.iconName)
27007
+ return /* @__PURE__ */ jsx(
27008
+ DynamicIcon,
27009
+ {
27010
+ name: feature.iconName,
27011
+ size: 24,
27012
+ className: feature.iconClassName
27013
+ }
27014
+ );
26930
27015
  return null;
26931
27016
  }, []);
26932
27017
  const featuresContent = useMemo$1(() => {
26933
27018
  if (featuresSlot) return featuresSlot;
26934
27019
  if (!features || features.length === 0) return null;
26935
- return features.map((feature, index) => /* @__PURE__ */ jsxs(
27020
+ return features.map((feature, index) => /* @__PURE__ */ jsx(
26936
27021
  "div",
26937
27022
  {
26938
- className: cn("flex flex-col gap-2.5 rounded-xl border p-7", cardClassName, feature.className),
26939
- children: [
27023
+ className: cn(
27024
+ "flex flex-col gap-2.5 rounded-xl border p-7 bg-muted text-muted-foreground",
27025
+ cardClassName,
27026
+ feature.className
27027
+ ),
27028
+ children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-6 md:gap-12", children: [
26940
27029
  (feature.icon || feature.iconName) && renderFeatureIcon(feature),
26941
- feature.title && (typeof feature.title === "string" ? /* @__PURE__ */ jsx("h3", { className: cn("font-semibold", feature.titleClassName), children: feature.title }) : /* @__PURE__ */ jsx("div", { className: cn("font-semibold", feature.titleClassName), children: feature.title })),
26942
- feature.description && (typeof feature.description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-sm", getTextColor(background, "muted"), feature.descriptionClassName), children: feature.description }) : /* @__PURE__ */ jsx("div", { className: cn("text-sm", getTextColor(background, "muted"), feature.descriptionClassName), children: feature.description }))
26943
- ]
27030
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2 md:gap-4", children: [
27031
+ feature.title && (typeof feature.title === "string" ? /* @__PURE__ */ jsx(
27032
+ Pressable,
27033
+ {
27034
+ href: feature.href,
27035
+ className: cn(
27036
+ "font-medium text-xl text-muted-foreground",
27037
+ feature.titleClassName
27038
+ ),
27039
+ children: feature.title
27040
+ }
27041
+ ) : /* @__PURE__ */ jsx(
27042
+ "div",
27043
+ {
27044
+ className: cn(
27045
+ "font-medium text-xl text-muted-foreground",
27046
+ feature.titleClassName
27047
+ ),
27048
+ children: feature.title
27049
+ }
27050
+ )),
27051
+ feature.description && (typeof feature.description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-sm", feature.descriptionClassName), children: feature.description }) : /* @__PURE__ */ jsx("div", { className: cn("text-sm", feature.descriptionClassName), children: feature.description }))
27052
+ ] })
27053
+ ] })
26944
27054
  },
26945
27055
  index
26946
27056
  ));
@@ -26956,11 +27066,65 @@ function FeatureIconGridMuted({
26956
27066
  className,
26957
27067
  containerClassName,
26958
27068
  children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-10", children: [
26959
- (title || description) && /* @__PURE__ */ jsxs("div", { className: cn("mx-auto flex max-w-xl flex-col gap-2.5 text-center", headerClassName), children: [
26960
- title && (typeof title === "string" ? /* @__PURE__ */ jsx("h1", { className: cn("text-4xl font-semibold md:text-5xl", titleClassName), children: title }) : /* @__PURE__ */ jsx("div", { className: cn("text-4xl font-semibold md:text-5xl", titleClassName), children: title })),
26961
- description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn(getTextColor(background, "muted"), descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: cn(getTextColor(background, "muted"), descriptionClassName), children: description }))
26962
- ] }),
26963
- (featuresSlot || features && features.length > 0) && /* @__PURE__ */ 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 })
27069
+ (title || description) && /* @__PURE__ */ jsxs(
27070
+ "div",
27071
+ {
27072
+ className: cn(
27073
+ "mx-auto flex max-w-full md:max-w-md text-balance flex-col gap-2.5 text-center",
27074
+ headerClassName
27075
+ ),
27076
+ children: [
27077
+ title && (typeof title === "string" ? /* @__PURE__ */ jsx(
27078
+ "h2",
27079
+ {
27080
+ className: cn(
27081
+ "text-4xl font-semibold md:text-5xl",
27082
+ titleClassName
27083
+ ),
27084
+ children: title
27085
+ }
27086
+ ) : /* @__PURE__ */ jsx(
27087
+ "div",
27088
+ {
27089
+ className: cn(
27090
+ "text-4xl font-semibold md:text-5xl",
27091
+ titleClassName
27092
+ ),
27093
+ children: title
27094
+ }
27095
+ )),
27096
+ description && (typeof description === "string" ? /* @__PURE__ */ jsx(
27097
+ "p",
27098
+ {
27099
+ className: cn(
27100
+ getTextColor(background, "muted"),
27101
+ descriptionClassName
27102
+ ),
27103
+ children: description
27104
+ }
27105
+ ) : /* @__PURE__ */ jsx(
27106
+ "div",
27107
+ {
27108
+ className: cn(
27109
+ getTextColor(background, "muted"),
27110
+ descriptionClassName
27111
+ ),
27112
+ children: description
27113
+ }
27114
+ ))
27115
+ ]
27116
+ }
27117
+ ),
27118
+ (featuresSlot || features && features.length > 0) && /* @__PURE__ */ jsx(
27119
+ "div",
27120
+ {
27121
+ className: cn(
27122
+ "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",
27123
+ gridClassName
27124
+ ),
27125
+ children: featuresContent
27126
+ }
27127
+ )
26964
27128
  ] })
26965
27129
  }
26966
27130
  );
@@ -26974,7 +27138,7 @@ function FeatureStatsHighlight({
26974
27138
  stats,
26975
27139
  statsSlot,
26976
27140
  className,
26977
- containerClassName,
27141
+ containerClassName = "px-6 sm:px-6 md:px-6 lg:px-8",
26978
27142
  gridClassName,
26979
27143
  contentClassName,
26980
27144
  badgeClassName,
@@ -26984,7 +27148,7 @@ function FeatureStatsHighlight({
26984
27148
  statsGridClassName,
26985
27149
  statCardClassName,
26986
27150
  background,
26987
- spacing = "py-6 md:py-32",
27151
+ spacing = "py-12 md:py-32",
26988
27152
  pattern,
26989
27153
  patternOpacity,
26990
27154
  patternClassName
@@ -27024,9 +27188,7 @@ function FeatureStatsHighlight({
27024
27188
  "div",
27025
27189
  {
27026
27190
  className: cn(
27027
- "flex flex-col gap-2 rounded-xl border p-6",
27028
- getNestedCardBg(background, "card"),
27029
- getNestedCardTextColor(background),
27191
+ "flex flex-col gap-2 rounded-xl border p-4 md:p-6 bg-card text-card-foreground h-full justify-between",
27030
27192
  statCardClassName,
27031
27193
  stat.className
27032
27194
  ),
@@ -27035,13 +27197,22 @@ function FeatureStatsHighlight({
27035
27197
  "span",
27036
27198
  {
27037
27199
  className: cn(
27038
- "text-4xl font-bold lg:text-5xl",
27200
+ "text-3xl font-bold lg:text-4xl xl:text-5xl",
27039
27201
  stat.valueClassName
27040
27202
  ),
27041
27203
  children: stat.value
27042
27204
  }
27043
27205
  ),
27044
- stat.label && /* @__PURE__ */ jsx("span", { className: cn("", stat.labelClassName), children: stat.label })
27206
+ stat.label && /* @__PURE__ */ jsx(
27207
+ "span",
27208
+ {
27209
+ className: cn(
27210
+ "uppercase font-bold text-sm opacity-60",
27211
+ stat.labelClassName
27212
+ ),
27213
+ children: stat.label
27214
+ }
27215
+ )
27045
27216
  ]
27046
27217
  },
27047
27218
  index
@@ -27063,7 +27234,7 @@ function FeatureStatsHighlight({
27063
27234
  className: cn("grid gap-10 lg:grid-cols-2 lg:gap-20", gridClassName),
27064
27235
  children: [
27065
27236
  /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col gap-5", contentClassName), children: [
27066
- badge && /* @__PURE__ */ jsx(Badge, { variant: "outline", className: cn("w-fit", badgeClassName), children: badge }),
27237
+ badge && /* @__PURE__ */ jsx(Badge, { variant: "default", className: cn("", badgeClassName), children: badge }),
27067
27238
  title && (typeof title === "string" ? /* @__PURE__ */ jsx(
27068
27239
  "h2",
27069
27240
  {
@@ -27086,7 +27257,16 @@ function FeatureStatsHighlight({
27086
27257
  description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn(" lg:text-lg", descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: cn(" lg:text-lg", descriptionClassName), children: description })),
27087
27258
  (actionsSlot || actions && actions.length > 0) && /* @__PURE__ */ jsx("div", { className: actionsClassName, children: actionsContent })
27088
27259
  ] }),
27089
- (statsSlot || stats && stats.length > 0) && /* @__PURE__ */ jsx("div", { className: cn("grid grid-cols-2 gap-6", statsGridClassName), children: statsContent })
27260
+ (statsSlot || stats && stats.length > 0) && /* @__PURE__ */ jsx(
27261
+ "div",
27262
+ {
27263
+ className: cn(
27264
+ "grid grid-cols-1 gap-4 md:grid-cols-2 md:gap-6",
27265
+ statsGridClassName
27266
+ ),
27267
+ children: statsContent
27268
+ }
27269
+ )
27090
27270
  ]
27091
27271
  }
27092
27272
  )
@@ -27160,7 +27340,7 @@ function FeatureAccordionImage({
27160
27340
  itemsSlot,
27161
27341
  defaultValue,
27162
27342
  className,
27163
- containerClassName,
27343
+ containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
27164
27344
  headerClassName,
27165
27345
  titleClassName,
27166
27346
  descriptionClassName,
@@ -27181,55 +27361,129 @@ function FeatureAccordionImage({
27181
27361
  const accordionItemsContent = useMemo$1(() => {
27182
27362
  if (itemsSlot) return itemsSlot;
27183
27363
  if (!items || items.length === 0) return null;
27184
- return items.map((item, index) => /* @__PURE__ */ jsxs(AccordionItem, { value: `item-${index}`, className: item.className, children: [
27185
- item.title && /* @__PURE__ */ jsx(AccordionTrigger, { className: cn("text-left text-lg font-medium", item.triggerClassName), children: item.title }),
27186
- item.content && /* @__PURE__ */ jsx(AccordionContent, { className: cn(getTextColor(background, "muted"), item.contentClassName), children: item.content })
27187
- ] }, index));
27188
- }, [itemsSlot, items]);
27189
- const imageContent = useMemo$1(() => {
27190
- if (currentImage?.imageSlot) return currentImage.imageSlot;
27191
- if (!currentImage?.imageSrc) return null;
27192
- return /* @__PURE__ */ jsx(
27193
- Img,
27364
+ return items.map((item, index) => /* @__PURE__ */ jsxs(
27365
+ AccordionItem,
27194
27366
  {
27195
- src: currentImage.imageSrc,
27196
- alt: currentImage.imageAlt || "",
27197
- className: cn("h-full w-full object-cover transition-opacity duration-300", imageClassName),
27198
- loading: "lazy",
27199
- optixFlowConfig
27200
- }
27201
- );
27202
- }, [currentImage, imageClassName, optixFlowConfig]);
27203
- return /* @__PURE__ */ jsxs(
27204
- Section,
27205
- {
27206
- background,
27367
+ value: `item-${index}`,
27368
+ className: item.className,
27369
+ children: [
27370
+ item.title && /* @__PURE__ */ jsx(
27371
+ AccordionTrigger,
27372
+ {
27373
+ className: cn(
27374
+ "text-left text-lg font-medium",
27375
+ item.triggerClassName
27376
+ ),
27377
+ children: item.title
27378
+ }
27379
+ ),
27380
+ item.content && /* @__PURE__ */ jsx(
27381
+ AccordionContent,
27382
+ {
27383
+ className: cn(
27384
+ getTextColor(background, "muted"),
27385
+ item.contentClassName
27386
+ ),
27387
+ children: item.content
27388
+ }
27389
+ )
27390
+ ]
27391
+ },
27392
+ index
27393
+ ));
27394
+ }, [itemsSlot, items]);
27395
+ const imageContent = useMemo$1(() => {
27396
+ if (currentImage?.imageSlot) return currentImage.imageSlot;
27397
+ if (!currentImage?.imageSrc) return null;
27398
+ return /* @__PURE__ */ jsx(
27399
+ Img,
27400
+ {
27401
+ src: currentImage.imageSrc,
27402
+ alt: currentImage.imageAlt || "",
27403
+ className: cn(
27404
+ "h-full w-full object-cover transition-opacity duration-300",
27405
+ imageClassName
27406
+ ),
27407
+ loading: "lazy",
27408
+ optixFlowConfig
27409
+ }
27410
+ );
27411
+ }, [currentImage, imageClassName, optixFlowConfig]);
27412
+ return /* @__PURE__ */ jsx(
27413
+ Section,
27414
+ {
27415
+ background,
27207
27416
  spacing,
27208
27417
  pattern,
27209
27418
  patternOpacity,
27210
27419
  patternClassName,
27211
27420
  className,
27212
27421
  containerClassName,
27213
- children: [
27214
- (title || description) && /* @__PURE__ */ jsxs("div", { className: cn("mb-12 text-center", headerClassName), children: [
27215
- title && (typeof title === "string" ? /* @__PURE__ */ jsx("h2", { className: cn("text-3xl font-semibold md:text-4xl lg:text-5xl", titleClassName), children: title }) : /* @__PURE__ */ jsx("div", { className: cn("text-3xl font-semibold md:text-4xl lg:text-5xl", titleClassName), children: title })),
27216
- description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mt-4 lg:text-lg", getTextColor(background, "muted"), descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: cn("mt-4 lg:text-lg", getTextColor(background, "muted"), descriptionClassName), children: description }))
27217
- ] }),
27218
- (itemsSlot || items && items.length > 0) && /* @__PURE__ */ jsxs("div", { className: cn("grid gap-10 lg:grid-cols-2 lg:gap-16", gridClassName), children: [
27219
- /* @__PURE__ */ jsx(
27220
- Accordion,
27221
- {
27222
- type: "single",
27223
- collapsible: true,
27224
- value: activeItem,
27225
- onValueChange: setActiveItem,
27226
- className: cn("w-full", accordionClassName),
27227
- children: accordionItemsContent
27228
- }
27229
- ),
27230
- /* @__PURE__ */ jsx("div", { className: cn("relative aspect-video overflow-hidden rounded-xl lg:aspect-square", imageWrapperClassName), children: imageContent })
27231
- ] })
27232
- ]
27422
+ children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col space-y-6 md:space-y-16", children: [
27423
+ (title || description) && /* @__PURE__ */ jsxs(
27424
+ "div",
27425
+ {
27426
+ className: cn(
27427
+ "text-center max-w-full md:max-w-md text-balance",
27428
+ headerClassName
27429
+ ),
27430
+ children: [
27431
+ title && (typeof title === "string" ? /* @__PURE__ */ jsx(
27432
+ "h2",
27433
+ {
27434
+ className: cn(
27435
+ "text-xl font-semibold md:text-2xl lg:text-3xl",
27436
+ titleClassName
27437
+ ),
27438
+ children: title
27439
+ }
27440
+ ) : /* @__PURE__ */ jsx(
27441
+ "div",
27442
+ {
27443
+ className: cn(
27444
+ "text-xl font-semibold md:text-2xl lg:text-3xl",
27445
+ titleClassName
27446
+ ),
27447
+ children: title
27448
+ }
27449
+ )),
27450
+ description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mt-4 lg:text-lg", descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: cn("mt-4 lg:text-lg", descriptionClassName), children: description }))
27451
+ ]
27452
+ }
27453
+ ),
27454
+ (itemsSlot || items && items.length > 0) && /* @__PURE__ */ jsxs(
27455
+ "div",
27456
+ {
27457
+ className: cn(
27458
+ "grid gap-10 lg:grid-cols-2 lg:gap-16",
27459
+ gridClassName
27460
+ ),
27461
+ children: [
27462
+ /* @__PURE__ */ jsx(
27463
+ Accordion,
27464
+ {
27465
+ type: "single",
27466
+ collapsible: true,
27467
+ value: activeItem,
27468
+ onValueChange: setActiveItem,
27469
+ className: cn("w-full", accordionClassName),
27470
+ children: accordionItemsContent
27471
+ }
27472
+ ),
27473
+ /* @__PURE__ */ jsx(
27474
+ "div",
27475
+ {
27476
+ className: cn(
27477
+ "relative aspect-video overflow-hidden rounded-xl shadow-xl lg:aspect-square",
27478
+ imageWrapperClassName
27479
+ ),
27480
+ children: imageContent
27481
+ }
27482
+ )
27483
+ ]
27484
+ }
27485
+ )
27486
+ ] })
27233
27487
  }
27234
27488
  );
27235
27489
  }
@@ -41501,236 +41755,268 @@ function FaqSplitHero({
41501
41755
  imageArea
41502
41756
  ] }) });
41503
41757
  }
41504
- var Controls = React52.memo(({
41505
- handleNext,
41506
- handlePrevious,
41507
- isPreviousDisabled,
41508
- isNextDisabled
41509
- }) => {
41510
- return /* @__PURE__ */ jsxs("div", { className: "hidden flex-col items-start gap-8 lg:flex", children: [
41511
- /* @__PURE__ */ jsx(
41512
- "button",
41513
- {
41514
- className: "rounded-full border bg-background/50 p-2 hover:bg-background disabled:opacity-50",
41515
- onClick: handlePrevious,
41516
- disabled: isPreviousDisabled,
41517
- type: "button",
41518
- children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/chevron-up", size: 24 })
41519
- }
41520
- ),
41521
- /* @__PURE__ */ jsx(
41522
- "button",
41523
- {
41524
- className: "rounded-full border bg-background/50 p-2 hover:bg-background disabled:opacity-50",
41525
- onClick: handleNext,
41526
- disabled: isNextDisabled,
41527
- type: "button",
41528
- children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/chevron-down", size: 24 })
41529
- }
41530
- )
41531
- ] });
41532
- });
41533
- var FeatureCard = React52.memo(({ feature, isActive, onClick }) => {
41534
- const variants2 = useMemo$1(() => ({
41535
- initial: {
41536
- opacity: 0
41537
- },
41538
- animate: {
41539
- opacity: 1
41540
- },
41541
- exit: {
41542
- opacity: 0
41543
- }
41544
- }), []);
41545
- return /* @__PURE__ */ jsx(AnimatePresence, { mode: "popLayout", children: /* @__PURE__ */ jsx(
41546
- motion.div,
41547
- {
41548
- layout: true,
41549
- transition: {
41550
- layout: {
41551
- duration: 0.4,
41552
- ease: "easeOut"
41758
+ var Controls = React52.memo(
41759
+ ({
41760
+ handleNext,
41761
+ handlePrevious,
41762
+ isPreviousDisabled,
41763
+ isNextDisabled
41764
+ }) => {
41765
+ return /* @__PURE__ */ jsxs("div", { className: "hidden flex-col items-start gap-8 lg:flex", children: [
41766
+ /* @__PURE__ */ jsx(
41767
+ "button",
41768
+ {
41769
+ className: "rounded-full border p-2 flex items-center justify-center disabled:opacity-50 h-fit w-fit bg-card text-card-foreground",
41770
+ onClick: handlePrevious,
41771
+ disabled: isPreviousDisabled,
41772
+ type: "button",
41773
+ children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/chevron-up", size: 24 })
41553
41774
  }
41554
- },
41555
- style: {
41556
- borderRadius: "24px"
41557
- },
41558
- className: "flex cursor-pointer items-start gap-4 overflow-hidden bg-background md:w-fit md:max-w-sm",
41559
- onClick,
41560
- children: isActive ? /* @__PURE__ */ jsx(
41561
- motion.div,
41775
+ ),
41776
+ /* @__PURE__ */ jsx(
41777
+ "button",
41562
41778
  {
41563
- layout: true,
41564
- variants: variants2,
41565
- initial: "initial",
41566
- animate: "animate",
41567
- exit: "exit",
41568
- transition: {
41779
+ className: "rounded-full border p-2 flex items-center justify-center disabled:opacity-50 h-fit w-fit bg-card text-card-foreground",
41780
+ onClick: handleNext,
41781
+ disabled: isNextDisabled,
41782
+ type: "button",
41783
+ children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/chevron-down", size: 24 })
41784
+ }
41785
+ )
41786
+ ] });
41787
+ }
41788
+ );
41789
+ var FeatureCard = React52.memo(
41790
+ ({ feature, isActive, onClick }) => {
41791
+ const variants2 = useMemo$1(
41792
+ () => ({
41793
+ initial: {
41794
+ opacity: 0
41795
+ },
41796
+ animate: {
41797
+ opacity: 1
41798
+ },
41799
+ exit: {
41800
+ opacity: 0
41801
+ }
41802
+ }),
41803
+ []
41804
+ );
41805
+ return /* @__PURE__ */ jsx(AnimatePresence, { mode: "popLayout", children: /* @__PURE__ */ jsxs(
41806
+ motion.div,
41807
+ {
41808
+ layout: true,
41809
+ transition: {
41810
+ layout: {
41569
41811
  duration: 0.4,
41570
- delay: 0.3,
41571
41812
  ease: "easeOut"
41813
+ }
41814
+ },
41815
+ style: {
41816
+ borderRadius: "24px"
41817
+ },
41818
+ className: cn(
41819
+ "relative flex items-start gap-4 overflow-hidden bg-background text-foreground md:w-fit md:max-w-sm",
41820
+ isActive ? "shadow-xl" : "cursor-pointer shadow-none"
41821
+ ),
41822
+ onClick,
41823
+ children: [
41824
+ isActive && feature.href && /* @__PURE__ */ 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__ */ jsx(
41825
+ Pressable,
41826
+ {
41827
+ href: feature.href,
41828
+ size: "icon-lg",
41829
+ className: "text-foreground",
41830
+ children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/arrow-up-right" })
41831
+ }
41832
+ ) }),
41833
+ isActive ? /* @__PURE__ */ jsx(
41834
+ motion.div,
41835
+ {
41836
+ layout: true,
41837
+ variants: variants2,
41838
+ initial: "initial",
41839
+ animate: "animate",
41840
+ exit: "exit",
41841
+ transition: {
41842
+ duration: 0.4,
41843
+ delay: 0.3,
41844
+ ease: "easeOut"
41845
+ },
41846
+ className: "p-6 text-sm md:p-8 md:text-base",
41847
+ children: (feature.title || feature.description) && /* @__PURE__ */ jsxs("p", { children: [
41848
+ feature.title && /* @__PURE__ */ jsxs("span", { className: "font-semibold", children: [
41849
+ feature.title,
41850
+ "."
41851
+ ] }),
41852
+ feature.title && feature.description && " ",
41853
+ feature.description && /* @__PURE__ */ jsx("span", { children: feature.description })
41854
+ ] })
41855
+ },
41856
+ `feature-description-active-${feature.title}`
41857
+ ) : /* @__PURE__ */ jsxs(
41858
+ motion.div,
41859
+ {
41860
+ layout: true,
41861
+ variants: variants2,
41862
+ initial: "initial",
41863
+ animate: "animate",
41864
+ exit: "exit",
41865
+ transition: {
41866
+ duration: 0.4,
41867
+ delay: 0.2,
41868
+ ease: "easeOut"
41869
+ },
41870
+ className: cn(
41871
+ "flex h-fit shrink-0 items-center gap-4 text-sm md:py-3.5 md:pr-6 md:pl-3 md:text-base",
41872
+ !isActive && "h-0 w-0 md:h-auto md:w-auto"
41873
+ ),
41874
+ style: {
41875
+ height: "auto",
41876
+ lineHeight: "normal"
41877
+ },
41878
+ children: [
41879
+ /* @__PURE__ */ jsx(
41880
+ DynamicIcon,
41881
+ {
41882
+ name: "lucide/plus-circle",
41883
+ size: 24,
41884
+ className: "shrink-0"
41885
+ }
41886
+ ),
41887
+ feature.title && /* @__PURE__ */ jsx("p", { className: "shrink-0 font-semibold", children: feature.title })
41888
+ ]
41889
+ },
41890
+ `feature-description-inactive-${feature.title}`
41891
+ )
41892
+ ]
41893
+ }
41894
+ ) });
41895
+ }
41896
+ );
41897
+ var FeaturesDesktop = React52.memo(
41898
+ ({
41899
+ features,
41900
+ handleNext,
41901
+ handlePrevious,
41902
+ activeIndex,
41903
+ handleFeatureClick,
41904
+ isPreviousDisabled,
41905
+ isNextDisabled
41906
+ }) => {
41907
+ return /* @__PURE__ */ jsxs("div", { className: "relative z-10 hidden items-center gap-8 md:flex", children: [
41908
+ /* @__PURE__ */ jsx(
41909
+ Controls,
41910
+ {
41911
+ handleNext,
41912
+ handlePrevious,
41913
+ isPreviousDisabled,
41914
+ isNextDisabled
41915
+ }
41916
+ ),
41917
+ /* @__PURE__ */ jsx("div", { className: "flex flex-col gap-4", children: features.map((feature, index) => {
41918
+ return /* @__PURE__ */ jsx(
41919
+ FeatureCard,
41920
+ {
41921
+ feature,
41922
+ isActive: index === activeIndex,
41923
+ onClick: () => handleFeatureClick(index)
41572
41924
  },
41573
- className: "p-6 text-sm md:p-8 md:text-base",
41574
- children: (feature.title || feature.description) && /* @__PURE__ */ jsxs("p", { children: [
41575
- feature.title && /* @__PURE__ */ jsxs("span", { className: "font-semibold", children: [
41576
- feature.title,
41577
- "."
41578
- ] }),
41579
- feature.title && feature.description && " ",
41580
- feature.description && /* @__PURE__ */ jsx("span", { children: feature.description })
41581
- ] })
41925
+ `feature-card-${index}`
41926
+ );
41927
+ }) })
41928
+ ] });
41929
+ }
41930
+ );
41931
+ var FeaturesMobile = React52.memo(
41932
+ ({
41933
+ features,
41934
+ handleNext,
41935
+ handlePrevious,
41936
+ activeIndex,
41937
+ direction,
41938
+ isPreviousDisabled,
41939
+ isNextDisabled
41940
+ }) => {
41941
+ const variants2 = useMemo$1(
41942
+ () => ({
41943
+ enter: (direction2) => ({
41944
+ x: direction2 > 0 ? 100 : -100,
41945
+ opacity: 0
41946
+ }),
41947
+ center: {
41948
+ x: 0,
41949
+ opacity: 1
41582
41950
  },
41583
- `feature-description-active-${feature.title}`
41584
- ) : /* @__PURE__ */ jsxs(
41951
+ exit: (direction2) => ({
41952
+ x: direction2 < 0 ? 100 : -100,
41953
+ opacity: 0
41954
+ })
41955
+ }),
41956
+ []
41957
+ );
41958
+ const currentFeature = features[activeIndex];
41959
+ return /* @__PURE__ */ jsx("div", { className: "relative z-10 flex flex-col gap-4 md:hidden", children: /* @__PURE__ */ jsxs("div", { className: "flex w-full items-stretch gap-4", children: [
41960
+ /* @__PURE__ */ jsx("div", { className: "flex-1 overflow-hidden", children: /* @__PURE__ */ jsx(AnimatePresence, { mode: "wait", custom: direction, children: /* @__PURE__ */ jsx(
41585
41961
  motion.div,
41586
41962
  {
41587
- layout: true,
41963
+ custom: direction,
41588
41964
  variants: variants2,
41589
- initial: "initial",
41590
- animate: "animate",
41965
+ initial: "enter",
41966
+ animate: "center",
41591
41967
  exit: "exit",
41592
41968
  transition: {
41593
- duration: 0.4,
41594
- delay: 0.2,
41595
- ease: "easeOut"
41969
+ x: { type: "spring", stiffness: 300, damping: 30 },
41970
+ opacity: { duration: 0.2 }
41596
41971
  },
41597
- className: cn(
41598
- "flex h-fit shrink-0 items-center gap-4 text-sm md:py-3.5 md:pr-6 md:pl-3 md:text-base",
41599
- !isActive && "h-0 w-0 md:h-auto md:w-auto"
41600
- ),
41601
- style: {
41602
- height: "auto",
41603
- lineHeight: "normal"
41604
- },
41605
- children: [
41606
- /* @__PURE__ */ jsx(
41607
- DynamicIcon,
41608
- {
41609
- name: "lucide/plus-circle",
41610
- size: 24,
41611
- className: "shrink-0"
41612
- }
41613
- ),
41614
- feature.title && /* @__PURE__ */ jsx("p", { className: "shrink-0 font-semibold", children: feature.title })
41615
- ]
41616
- },
41617
- `feature-description-inactive-${feature.title}`
41618
- )
41619
- }
41620
- ) });
41621
- });
41622
- var FeaturesDesktop = React52.memo(({
41623
- features,
41624
- handleNext,
41625
- handlePrevious,
41626
- activeIndex,
41627
- handleFeatureClick,
41628
- isPreviousDisabled,
41629
- isNextDisabled
41630
- }) => {
41631
- return /* @__PURE__ */ jsxs("div", { className: "relative z-10 hidden items-center gap-8 md:flex", children: [
41632
- /* @__PURE__ */ jsx(
41633
- Controls,
41634
- {
41635
- handleNext,
41636
- handlePrevious,
41637
- isPreviousDisabled,
41638
- isNextDisabled
41639
- }
41640
- ),
41641
- /* @__PURE__ */ jsx("div", { className: "flex flex-col gap-4", children: features.map((feature, index) => {
41642
- return /* @__PURE__ */ jsx(
41643
- FeatureCard,
41644
- {
41645
- feature,
41646
- isActive: index === activeIndex,
41647
- onClick: () => handleFeatureClick(index)
41648
- },
41649
- `feature-card-${index}`
41650
- );
41651
- }) })
41652
- ] });
41653
- });
41654
- var FeaturesMobile = React52.memo(({
41655
- features,
41656
- handleNext,
41657
- handlePrevious,
41658
- activeIndex,
41659
- direction,
41660
- isPreviousDisabled,
41661
- isNextDisabled
41662
- }) => {
41663
- const variants2 = useMemo$1(() => ({
41664
- enter: (direction2) => ({
41665
- x: direction2 > 0 ? 100 : -100,
41666
- opacity: 0
41667
- }),
41668
- center: {
41669
- x: 0,
41670
- opacity: 1
41671
- },
41672
- exit: (direction2) => ({
41673
- x: direction2 < 0 ? 100 : -100,
41674
- opacity: 0
41675
- })
41676
- }), []);
41677
- const currentFeature = features[activeIndex];
41678
- return /* @__PURE__ */ jsx("div", { className: "relative z-10 flex flex-col items-center gap-6 md:hidden", children: /* @__PURE__ */ jsxs("div", { className: "flex w-full items-center justify-between gap-4", children: [
41679
- /* @__PURE__ */ jsx(
41680
- "button",
41681
- {
41682
- className: "rounded-full border bg-background/50 p-2 hover:bg-background disabled:opacity-50",
41683
- onClick: handlePrevious,
41684
- disabled: isPreviousDisabled,
41685
- type: "button",
41686
- children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/chevron-left", size: 24 })
41687
- }
41688
- ),
41689
- /* @__PURE__ */ jsx("div", { className: "relative h-24 w-full overflow-hidden", children: /* @__PURE__ */ jsx(AnimatePresence, { mode: "wait", custom: direction, children: /* @__PURE__ */ jsx(
41690
- motion.div,
41691
- {
41692
- custom: direction,
41693
- variants: variants2,
41694
- initial: "enter",
41695
- animate: "center",
41696
- exit: "exit",
41697
- transition: {
41698
- x: { type: "spring", stiffness: 300, damping: 30 },
41699
- opacity: { duration: 0.2 }
41972
+ className: "rounded-3xl bg-background p-4 text-left",
41973
+ children: (currentFeature?.title || currentFeature?.description) && /* @__PURE__ */ jsxs("div", { className: "text-sm", children: [
41974
+ currentFeature.title && /* @__PURE__ */ jsx("p", { className: "font-semibold", children: currentFeature.title }),
41975
+ currentFeature.description && /* @__PURE__ */ jsx("p", { className: "mt-1", children: currentFeature.description })
41976
+ ] })
41700
41977
  },
41701
- className: "absolute inset-0 flex items-center justify-center rounded-3xl bg-background p-4",
41702
- children: (currentFeature?.title || currentFeature?.description) && /* @__PURE__ */ jsxs("p", { className: "text-center text-sm", children: [
41703
- currentFeature.title && /* @__PURE__ */ jsxs("span", { className: "font-semibold", children: [
41704
- currentFeature.title,
41705
- "."
41706
- ] }),
41707
- currentFeature.title && currentFeature.description && " ",
41708
- currentFeature.description && /* @__PURE__ */ jsx("span", { children: currentFeature.description })
41709
- ] })
41710
- },
41711
- activeIndex
41712
- ) }) }),
41713
- /* @__PURE__ */ jsx(
41714
- "button",
41715
- {
41716
- className: "rounded-full border bg-background/50 p-2 hover:bg-background disabled:opacity-50",
41717
- onClick: handleNext,
41718
- disabled: isNextDisabled,
41719
- type: "button",
41720
- children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/chevron-right", size: 24 })
41721
- }
41722
- )
41723
- ] }) });
41724
- });
41978
+ activeIndex
41979
+ ) }) }),
41980
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col justify-center gap-2", children: [
41981
+ /* @__PURE__ */ jsx(
41982
+ "button",
41983
+ {
41984
+ className: "rounded-full border bg-background/50 p-2 hover:bg-background disabled:opacity-50",
41985
+ onClick: handlePrevious,
41986
+ disabled: isPreviousDisabled,
41987
+ type: "button",
41988
+ children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/chevron-up", size: 20 })
41989
+ }
41990
+ ),
41991
+ /* @__PURE__ */ jsx(
41992
+ "button",
41993
+ {
41994
+ className: "rounded-full border bg-background/50 p-2 hover:bg-background disabled:opacity-50",
41995
+ onClick: handleNext,
41996
+ disabled: isNextDisabled,
41997
+ type: "button",
41998
+ children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/chevron-down", size: 20 })
41999
+ }
42000
+ )
42001
+ ] })
42002
+ ] }) });
42003
+ }
42004
+ );
41725
42005
  function FeatureAnimatedCarousel({
42006
+ title,
42007
+ description,
42008
+ titleClassName,
42009
+ descriptionClassName,
41726
42010
  features,
41727
42011
  className,
41728
42012
  optixFlowConfig,
41729
42013
  background,
41730
- spacing,
41731
42014
  pattern,
41732
42015
  patternOpacity,
41733
- patternClassName
42016
+ patternClassName,
42017
+ headerClassName,
42018
+ spacing = "py-12 md:py-32",
42019
+ containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8"
41734
42020
  }) {
41735
42021
  const [activeIndex, setActiveIndex] = React52.useState(0);
41736
42022
  const [direction, setDirection] = React52.useState(1);
@@ -41746,26 +42032,32 @@ function FeatureAnimatedCarousel({
41746
42032
  setActiveIndex(activeIndex - 1);
41747
42033
  }
41748
42034
  }, [activeIndex]);
41749
- const handleFeatureClick = useCallback((index) => {
41750
- setDirection(index > activeIndex ? 1 : -1);
41751
- setActiveIndex(index);
41752
- }, [activeIndex]);
42035
+ const handleFeatureClick = useCallback(
42036
+ (index) => {
42037
+ setDirection(index > activeIndex ? 1 : -1);
42038
+ setActiveIndex(index);
42039
+ },
42040
+ [activeIndex]
42041
+ );
41753
42042
  const isPreviousDisabled = activeIndex === 0;
41754
42043
  const isNextDisabled = !features || activeIndex === features.length - 1;
41755
- const imageVariants = useMemo$1(() => ({
41756
- enter: (direction2) => ({
41757
- x: direction2 > 0 ? 300 : -300,
41758
- opacity: 0
42044
+ const imageVariants = useMemo$1(
42045
+ () => ({
42046
+ enter: (direction2) => ({
42047
+ x: direction2 > 0 ? 300 : -300,
42048
+ opacity: 0
42049
+ }),
42050
+ center: {
42051
+ x: 0,
42052
+ opacity: 1
42053
+ },
42054
+ exit: (direction2) => ({
42055
+ x: direction2 < 0 ? 300 : -300,
42056
+ opacity: 0
42057
+ })
41759
42058
  }),
41760
- center: {
41761
- x: 0,
41762
- opacity: 1
41763
- },
41764
- exit: (direction2) => ({
41765
- x: direction2 < 0 ? 300 : -300,
41766
- opacity: 0
41767
- })
41768
- }), []);
42059
+ []
42060
+ );
41769
42061
  if (!features || features.length === 0) {
41770
42062
  return /* @__PURE__ */ jsx(
41771
42063
  Section,
@@ -41776,11 +42068,17 @@ function FeatureAnimatedCarousel({
41776
42068
  patternOpacity,
41777
42069
  patternClassName,
41778
42070
  className,
41779
- children: /* @__PURE__ */ jsx("div", { className: cn(
41780
- "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]",
41781
- getNestedCardBg(background),
41782
- getNestedCardTextColor(background)
41783
- ) })
42071
+ containerClassName,
42072
+ children: /* @__PURE__ */ jsx(
42073
+ "div",
42074
+ {
42075
+ className: cn(
42076
+ "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]",
42077
+ getNestedCardBg(background),
42078
+ getNestedCardTextColor(background)
42079
+ )
42080
+ }
42081
+ )
41784
42082
  }
41785
42083
  );
41786
42084
  }
@@ -41794,60 +42092,105 @@ function FeatureAnimatedCarousel({
41794
42092
  patternOpacity,
41795
42093
  patternClassName,
41796
42094
  className,
41797
- children: /* @__PURE__ */ jsxs("div", { className: cn(
41798
- "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]",
41799
- getNestedCardBg(background),
41800
- getNestedCardTextColor(background)
41801
- ), children: [
41802
- /* @__PURE__ */ jsx(
41803
- FeaturesDesktop,
41804
- {
41805
- features,
41806
- handleNext,
41807
- handlePrevious,
41808
- activeIndex,
41809
- handleFeatureClick,
41810
- isPreviousDisabled,
41811
- isNextDisabled
41812
- }
41813
- ),
41814
- /* @__PURE__ */ jsx(
41815
- FeaturesMobile,
42095
+ children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col space-y-6 md:space-y-16", children: [
42096
+ title || description ? /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col gap-6 text-left", headerClassName), children: [
42097
+ title && (typeof title === "string" ? /* @__PURE__ */ jsx(
42098
+ "h2",
42099
+ {
42100
+ className: cn(
42101
+ "text-xl font-semibold text-balance md:text-2xl lg:text-3xl max-w-lg md:max-w-md",
42102
+ titleClassName
42103
+ ),
42104
+ children: title
42105
+ }
42106
+ ) : /* @__PURE__ */ jsx(
42107
+ "div",
42108
+ {
42109
+ className: cn(
42110
+ "text-xl font-semibold text-balance md:text-2xl lg:text-3xl max-w-lg md:max-w-md",
42111
+ titleClassName
42112
+ ),
42113
+ children: title
42114
+ }
42115
+ )),
42116
+ description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("max-w-lg md:max-w-md", descriptionClassName), children: description }) : /* @__PURE__ */ jsx(
42117
+ "div",
42118
+ {
42119
+ className: cn("max-w-lg md:max-w-md", descriptionClassName),
42120
+ children: description
42121
+ }
42122
+ ))
42123
+ ] }) : null,
42124
+ /* @__PURE__ */ jsxs(
42125
+ "div",
41816
42126
  {
41817
- features,
41818
- handleNext,
41819
- handlePrevious,
41820
- activeIndex,
41821
- direction,
41822
- isPreviousDisabled,
41823
- isNextDisabled
42127
+ className: cn(
42128
+ "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]"
42129
+ ),
42130
+ children: [
42131
+ /* @__PURE__ */ jsx(
42132
+ FeaturesDesktop,
42133
+ {
42134
+ features,
42135
+ handleNext,
42136
+ handlePrevious,
42137
+ activeIndex,
42138
+ handleFeatureClick,
42139
+ isPreviousDisabled,
42140
+ isNextDisabled
42141
+ }
42142
+ ),
42143
+ /* @__PURE__ */ jsx(
42144
+ FeaturesMobile,
42145
+ {
42146
+ features,
42147
+ handleNext,
42148
+ handlePrevious,
42149
+ activeIndex,
42150
+ direction,
42151
+ isPreviousDisabled,
42152
+ isNextDisabled
42153
+ }
42154
+ ),
42155
+ currentFeature?.image && /* @__PURE__ */ 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: [
42156
+ currentFeature.href && /* @__PURE__ */ 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__ */ jsx(
42157
+ Pressable,
42158
+ {
42159
+ href: currentFeature.href,
42160
+ size: "icon-lg",
42161
+ className: "text-foreground",
42162
+ children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/arrow-up-right" })
42163
+ }
42164
+ ) }),
42165
+ /* @__PURE__ */ jsx(AnimatePresence, { mode: "wait", custom: direction, children: /* @__PURE__ */ jsx(
42166
+ motion.div,
42167
+ {
42168
+ custom: direction,
42169
+ variants: imageVariants,
42170
+ initial: "enter",
42171
+ animate: "center",
42172
+ exit: "exit",
42173
+ transition: {
42174
+ x: { type: "spring", stiffness: 300, damping: 30 },
42175
+ opacity: { duration: 0.2 }
42176
+ },
42177
+ className: "h-full w-full",
42178
+ children: /* @__PURE__ */ jsx(
42179
+ Img,
42180
+ {
42181
+ src: currentFeature.image,
42182
+ alt: currentFeature.imageAlt || (typeof currentFeature.title === "string" ? currentFeature.title : "Feature image"),
42183
+ className: "h-full w-full object-cover",
42184
+ optixFlowConfig
42185
+ }
42186
+ )
42187
+ },
42188
+ activeIndex
42189
+ ) })
42190
+ ] })
42191
+ ]
41824
42192
  }
41825
- ),
41826
- currentFeature?.image && /* @__PURE__ */ 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__ */ jsx(AnimatePresence, { mode: "wait", custom: direction, children: /* @__PURE__ */ jsx(
41827
- motion.div,
41828
- {
41829
- custom: direction,
41830
- variants: imageVariants,
41831
- initial: "enter",
41832
- animate: "center",
41833
- exit: "exit",
41834
- transition: {
41835
- x: { type: "spring", stiffness: 300, damping: 30 },
41836
- opacity: { duration: 0.2 }
41837
- },
41838
- className: "h-full w-full",
41839
- children: /* @__PURE__ */ jsx(
41840
- Img,
41841
- {
41842
- src: currentFeature.image,
41843
- alt: currentFeature.imageAlt || (typeof currentFeature.title === "string" ? currentFeature.title : "Feature image"),
41844
- className: "h-full w-full object-cover",
41845
- optixFlowConfig
41846
- }
41847
- )
41848
- },
41849
- activeIndex
41850
- ) }) })
42193
+ )
41851
42194
  ] })
41852
42195
  }
41853
42196
  );