@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.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,31 @@ 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(
24396
+ "p",
24397
+ {
24398
+ className: cn(
24399
+ "max-w-lg md:max-w-md text-balance",
24400
+ descriptionClassName
24401
+ ),
24402
+ children: description
24403
+ }
24404
+ ) : /* @__PURE__ */ jsx(
24405
+ "div",
24406
+ {
24407
+ className: cn(
24408
+ "max-w-lg md:max-w-md text-balance",
24409
+ descriptionClassName
24410
+ ),
24411
+ children: description
24412
+ }
24413
+ ))
24389
24414
  ]
24390
24415
  }
24391
24416
  ) : null,
@@ -24435,7 +24460,7 @@ function FeatureCardGridLinked({
24435
24460
  features,
24436
24461
  featuresSlot,
24437
24462
  className,
24438
- containerClassName = "px-6 sm:px-6 md:mx-6 lg:px-8",
24463
+ containerClassName = "px-6 sm:px-6 md:px-6 lg:px-8",
24439
24464
  titleWrapperClassName,
24440
24465
  titleClassName,
24441
24466
  descriptionClassName,
@@ -24588,7 +24613,7 @@ function FeatureNumberedCards({
24588
24613
  features,
24589
24614
  featuresSlot,
24590
24615
  className,
24591
- containerClassName = "px-6 sm:px-6 md:mx-6 lg:px-8",
24616
+ containerClassName = "px-6 sm:px-6 md:px-6 lg:px-8",
24592
24617
  cardsWrapperClassName,
24593
24618
  cardClassName,
24594
24619
  titleClassName,
@@ -26808,6 +26833,7 @@ function FeatureBentoImageGrid({
26808
26833
  function FeatureImageCardsThreeColumn({
26809
26834
  title,
26810
26835
  description,
26836
+ headerClassName,
26811
26837
  cards,
26812
26838
  cardsSlot,
26813
26839
  className,
@@ -26823,28 +26849,34 @@ function FeatureImageCardsThreeColumn({
26823
26849
  patternOpacity,
26824
26850
  patternClassName
26825
26851
  }) {
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
26852
+ const renderImage = useCallback(
26853
+ (card, imageAlt) => {
26854
+ if (card.imageSlot) return card.imageSlot;
26855
+ if (!card.imageSrc) return null;
26856
+ return /* @__PURE__ */ jsx(
26857
+ Img,
26858
+ {
26859
+ src: card.imageSrc,
26860
+ alt: imageAlt,
26861
+ className: "h-full max-h-[450px] w-full rounded-xl object-cover object-center",
26862
+ loading: "lazy",
26863
+ optixFlowConfig
26864
+ }
26865
+ );
26866
+ },
26867
+ [optixFlowConfig]
26868
+ );
26869
+ const renderBadgeIcon = useCallback(
26870
+ (card) => {
26871
+ if (card.avatarSrc) {
26872
+ return /* @__PURE__ */ jsx(Avatar, { className: "size-7 rounded-full", children: /* @__PURE__ */ jsx(AvatarImage, { src: card.avatarSrc, alt: "Avatar" }) });
26837
26873
  }
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
- }, []);
26874
+ if (card.icon) return card.icon;
26875
+ if (!card.iconName) return null;
26876
+ return /* @__PURE__ */ jsx(DynamicIcon, { name: card.iconName, size: 24 });
26877
+ },
26878
+ []
26879
+ );
26848
26880
  const cardsContent = useMemo$1(() => {
26849
26881
  if (cardsSlot) return cardsSlot;
26850
26882
  if (!cards || cards.length === 0) return null;
@@ -26855,31 +26887,53 @@ function FeatureImageCardsThreeColumn({
26855
26887
  {
26856
26888
  href: card.link,
26857
26889
  onClick: card.onClick,
26858
- className: cn("group relative overflow-hidden rounded-xl", cardClassName, card.className),
26890
+ className: cn(
26891
+ "group relative overflow-hidden rounded-xl",
26892
+ cardClassName,
26893
+ card.className
26894
+ ),
26859
26895
  children: [
26860
26896
  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
- ),
26897
+ /* @__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" }),
26898
+ /* @__PURE__ */ jsxs("div", { className: "absolute top-0 flex h-full w-full flex-col justify-between p-4 md:p-6", children: [
26899
+ (card.badgeText || card.avatarSrc || card.icon || card.iconName) && /* @__PURE__ */ jsxs(Badge, { variant: "default", className: cn(card.badgeClassName), children: [
26900
+ renderBadgeIcon(card),
26901
+ card.badgeText
26902
+ ] }),
26877
26903
  /* @__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
- ] })
26904
+ card.title && (typeof card.title === "string" ? /* @__PURE__ */ jsx(
26905
+ "h3",
26906
+ {
26907
+ className: cn(
26908
+ "text-xl md:text-2xl font-semibold",
26909
+ card.titleClassName
26910
+ ),
26911
+ children: card.title
26912
+ }
26913
+ ) : /* @__PURE__ */ jsx(
26914
+ "div",
26915
+ {
26916
+ className: cn(
26917
+ "text-xl md:text-2xl font-semibold",
26918
+ card.titleClassName
26919
+ ),
26920
+ children: card.title
26921
+ }
26922
+ )),
26923
+ card.linkText && card.link && /* @__PURE__ */ jsxs(
26924
+ Pressable,
26925
+ {
26926
+ className: cn(
26927
+ "font-bold text-xs uppercase",
26928
+ card.linkClassName
26929
+ ),
26930
+ href: card.link,
26931
+ children: [
26932
+ card.linkText,
26933
+ /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/arrow-up-right", size: 18 })
26934
+ ]
26935
+ }
26936
+ )
26883
26937
  ] })
26884
26938
  ] })
26885
26939
  ]
@@ -26888,7 +26942,7 @@ function FeatureImageCardsThreeColumn({
26888
26942
  );
26889
26943
  });
26890
26944
  }, [cardsSlot, cards, cardClassName, renderImage, renderBadgeIcon]);
26891
- return /* @__PURE__ */ jsxs(
26945
+ return /* @__PURE__ */ jsx(
26892
26946
  Section,
26893
26947
  {
26894
26948
  background,
@@ -26898,11 +26952,46 @@ function FeatureImageCardsThreeColumn({
26898
26952
  patternClassName,
26899
26953
  className,
26900
26954
  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
- ]
26955
+ children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col space-y-6 md:space-y-16", children: [
26956
+ title || description ? /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col gap-6 text-left", headerClassName), children: [
26957
+ title && (typeof title === "string" ? /* @__PURE__ */ jsx(
26958
+ "h2",
26959
+ {
26960
+ className: cn(
26961
+ "text-xl font-semibold text-balance md:text-2xl lg:text-3xl max-w-lg md:max-w-md",
26962
+ titleClassName
26963
+ ),
26964
+ children: title
26965
+ }
26966
+ ) : /* @__PURE__ */ jsx(
26967
+ "div",
26968
+ {
26969
+ className: cn(
26970
+ "text-xl font-semibold text-balance md:text-2xl lg:text-3xl max-w-lg md:max-w-md",
26971
+ titleClassName
26972
+ ),
26973
+ children: title
26974
+ }
26975
+ )),
26976
+ description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("max-w-lg md:max-w-md", descriptionClassName), children: description }) : /* @__PURE__ */ jsx(
26977
+ "div",
26978
+ {
26979
+ className: cn("max-w-lg md:max-w-md", descriptionClassName),
26980
+ children: description
26981
+ }
26982
+ ))
26983
+ ] }) : null,
26984
+ /* @__PURE__ */ jsx(
26985
+ "div",
26986
+ {
26987
+ className: cn(
26988
+ "grid gap-4 md:gap-4 grid-cols-1 md:grid-cols-3",
26989
+ gridClassName
26990
+ ),
26991
+ children: cardsContent
26992
+ }
26993
+ )
26994
+ ] })
26906
26995
  }
26907
26996
  );
26908
26997
  }
@@ -26912,35 +27001,68 @@ function FeatureIconGridMuted({
26912
27001
  features,
26913
27002
  featuresSlot,
26914
27003
  className,
26915
- containerClassName,
26916
27004
  headerClassName,
26917
27005
  titleClassName,
26918
27006
  descriptionClassName,
26919
27007
  gridClassName,
26920
27008
  cardClassName,
26921
27009
  background,
26922
- spacing,
26923
27010
  pattern,
26924
27011
  patternOpacity,
26925
- patternClassName
27012
+ patternClassName,
27013
+ spacing = "py-12 md:py-32",
27014
+ containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8"
26926
27015
  }) {
26927
27016
  const renderFeatureIcon = useCallback((feature) => {
26928
27017
  if (feature.icon) return feature.icon;
26929
- if (feature.iconName) return /* @__PURE__ */ jsx(DynamicIcon, { name: feature.iconName, size: 24, className: feature.iconClassName });
27018
+ if (feature.iconName)
27019
+ return /* @__PURE__ */ jsx(
27020
+ DynamicIcon,
27021
+ {
27022
+ name: feature.iconName,
27023
+ size: 24,
27024
+ className: feature.iconClassName
27025
+ }
27026
+ );
26930
27027
  return null;
26931
27028
  }, []);
26932
27029
  const featuresContent = useMemo$1(() => {
26933
27030
  if (featuresSlot) return featuresSlot;
26934
27031
  if (!features || features.length === 0) return null;
26935
- return features.map((feature, index) => /* @__PURE__ */ jsxs(
27032
+ return features.map((feature, index) => /* @__PURE__ */ jsx(
26936
27033
  "div",
26937
27034
  {
26938
- className: cn("flex flex-col gap-2.5 rounded-xl border p-7", cardClassName, feature.className),
26939
- children: [
27035
+ className: cn(
27036
+ "flex flex-col gap-2.5 rounded-xl border p-7 bg-muted text-muted-foreground",
27037
+ cardClassName,
27038
+ feature.className
27039
+ ),
27040
+ children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-6 md:gap-12", children: [
26940
27041
  (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
- ]
27042
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2 md:gap-4", children: [
27043
+ feature.title && (typeof feature.title === "string" ? /* @__PURE__ */ jsx(
27044
+ Pressable,
27045
+ {
27046
+ href: feature.href,
27047
+ className: cn(
27048
+ "font-medium text-xl text-muted-foreground",
27049
+ feature.titleClassName
27050
+ ),
27051
+ children: feature.title
27052
+ }
27053
+ ) : /* @__PURE__ */ jsx(
27054
+ "div",
27055
+ {
27056
+ className: cn(
27057
+ "font-medium text-xl text-muted-foreground",
27058
+ feature.titleClassName
27059
+ ),
27060
+ children: feature.title
27061
+ }
27062
+ )),
27063
+ 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 }))
27064
+ ] })
27065
+ ] })
26944
27066
  },
26945
27067
  index
26946
27068
  ));
@@ -26956,11 +27078,65 @@ function FeatureIconGridMuted({
26956
27078
  className,
26957
27079
  containerClassName,
26958
27080
  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 })
27081
+ (title || description) && /* @__PURE__ */ jsxs(
27082
+ "div",
27083
+ {
27084
+ className: cn(
27085
+ "mx-auto flex max-w-full md:max-w-md text-balance flex-col gap-2.5 text-center",
27086
+ headerClassName
27087
+ ),
27088
+ children: [
27089
+ title && (typeof title === "string" ? /* @__PURE__ */ jsx(
27090
+ "h2",
27091
+ {
27092
+ className: cn(
27093
+ "text-4xl font-semibold md:text-5xl",
27094
+ titleClassName
27095
+ ),
27096
+ children: title
27097
+ }
27098
+ ) : /* @__PURE__ */ jsx(
27099
+ "div",
27100
+ {
27101
+ className: cn(
27102
+ "text-4xl font-semibold md:text-5xl",
27103
+ titleClassName
27104
+ ),
27105
+ children: title
27106
+ }
27107
+ )),
27108
+ description && (typeof description === "string" ? /* @__PURE__ */ jsx(
27109
+ "p",
27110
+ {
27111
+ className: cn(
27112
+ getTextColor(background, "muted"),
27113
+ descriptionClassName
27114
+ ),
27115
+ children: description
27116
+ }
27117
+ ) : /* @__PURE__ */ jsx(
27118
+ "div",
27119
+ {
27120
+ className: cn(
27121
+ getTextColor(background, "muted"),
27122
+ descriptionClassName
27123
+ ),
27124
+ children: description
27125
+ }
27126
+ ))
27127
+ ]
27128
+ }
27129
+ ),
27130
+ (featuresSlot || features && features.length > 0) && /* @__PURE__ */ jsx(
27131
+ "div",
27132
+ {
27133
+ className: cn(
27134
+ "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",
27135
+ gridClassName
27136
+ ),
27137
+ children: featuresContent
27138
+ }
27139
+ )
26964
27140
  ] })
26965
27141
  }
26966
27142
  );
@@ -26974,7 +27150,7 @@ function FeatureStatsHighlight({
26974
27150
  stats,
26975
27151
  statsSlot,
26976
27152
  className,
26977
- containerClassName,
27153
+ containerClassName = "px-6 sm:px-6 md:px-6 lg:px-8",
26978
27154
  gridClassName,
26979
27155
  contentClassName,
26980
27156
  badgeClassName,
@@ -26984,7 +27160,7 @@ function FeatureStatsHighlight({
26984
27160
  statsGridClassName,
26985
27161
  statCardClassName,
26986
27162
  background,
26987
- spacing = "py-6 md:py-32",
27163
+ spacing = "py-12 md:py-32",
26988
27164
  pattern,
26989
27165
  patternOpacity,
26990
27166
  patternClassName
@@ -27024,9 +27200,7 @@ function FeatureStatsHighlight({
27024
27200
  "div",
27025
27201
  {
27026
27202
  className: cn(
27027
- "flex flex-col gap-2 rounded-xl border p-6",
27028
- getNestedCardBg(background, "card"),
27029
- getNestedCardTextColor(background),
27203
+ "flex flex-col gap-2 rounded-xl border p-4 md:p-6 bg-card text-card-foreground h-full justify-between",
27030
27204
  statCardClassName,
27031
27205
  stat.className
27032
27206
  ),
@@ -27035,13 +27209,22 @@ function FeatureStatsHighlight({
27035
27209
  "span",
27036
27210
  {
27037
27211
  className: cn(
27038
- "text-4xl font-bold lg:text-5xl",
27212
+ "text-3xl font-bold lg:text-4xl xl:text-5xl",
27039
27213
  stat.valueClassName
27040
27214
  ),
27041
27215
  children: stat.value
27042
27216
  }
27043
27217
  ),
27044
- stat.label && /* @__PURE__ */ jsx("span", { className: cn("", stat.labelClassName), children: stat.label })
27218
+ stat.label && /* @__PURE__ */ jsx(
27219
+ "span",
27220
+ {
27221
+ className: cn(
27222
+ "uppercase font-bold text-sm opacity-60",
27223
+ stat.labelClassName
27224
+ ),
27225
+ children: stat.label
27226
+ }
27227
+ )
27045
27228
  ]
27046
27229
  },
27047
27230
  index
@@ -27063,7 +27246,7 @@ function FeatureStatsHighlight({
27063
27246
  className: cn("grid gap-10 lg:grid-cols-2 lg:gap-20", gridClassName),
27064
27247
  children: [
27065
27248
  /* @__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 }),
27249
+ badge && /* @__PURE__ */ jsx(Badge, { variant: "default", className: cn("", badgeClassName), children: badge }),
27067
27250
  title && (typeof title === "string" ? /* @__PURE__ */ jsx(
27068
27251
  "h2",
27069
27252
  {
@@ -27086,7 +27269,16 @@ function FeatureStatsHighlight({
27086
27269
  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
27270
  (actionsSlot || actions && actions.length > 0) && /* @__PURE__ */ jsx("div", { className: actionsClassName, children: actionsContent })
27088
27271
  ] }),
27089
- (statsSlot || stats && stats.length > 0) && /* @__PURE__ */ jsx("div", { className: cn("grid grid-cols-2 gap-6", statsGridClassName), children: statsContent })
27272
+ (statsSlot || stats && stats.length > 0) && /* @__PURE__ */ jsx(
27273
+ "div",
27274
+ {
27275
+ className: cn(
27276
+ "grid grid-cols-1 gap-4 md:grid-cols-2 md:gap-6",
27277
+ statsGridClassName
27278
+ ),
27279
+ children: statsContent
27280
+ }
27281
+ )
27090
27282
  ]
27091
27283
  }
27092
27284
  )
@@ -27160,7 +27352,7 @@ function FeatureAccordionImage({
27160
27352
  itemsSlot,
27161
27353
  defaultValue,
27162
27354
  className,
27163
- containerClassName,
27355
+ containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
27164
27356
  headerClassName,
27165
27357
  titleClassName,
27166
27358
  descriptionClassName,
@@ -27181,26 +27373,55 @@ function FeatureAccordionImage({
27181
27373
  const accordionItemsContent = useMemo$1(() => {
27182
27374
  if (itemsSlot) return itemsSlot;
27183
27375
  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,
27194
- {
27376
+ return items.map((item, index) => /* @__PURE__ */ jsxs(
27377
+ AccordionItem,
27378
+ {
27379
+ value: `item-${index}`,
27380
+ className: item.className,
27381
+ children: [
27382
+ item.title && /* @__PURE__ */ jsx(
27383
+ AccordionTrigger,
27384
+ {
27385
+ className: cn(
27386
+ "text-left text-md md:text-lg font-medium",
27387
+ item.triggerClassName
27388
+ ),
27389
+ children: item.title
27390
+ }
27391
+ ),
27392
+ item.content && /* @__PURE__ */ jsx(
27393
+ AccordionContent,
27394
+ {
27395
+ className: cn(
27396
+ getTextColor(background, "muted"),
27397
+ item.contentClassName
27398
+ ),
27399
+ children: item.content
27400
+ }
27401
+ )
27402
+ ]
27403
+ },
27404
+ index
27405
+ ));
27406
+ }, [itemsSlot, items]);
27407
+ const imageContent = useMemo$1(() => {
27408
+ if (currentImage?.imageSlot) return currentImage.imageSlot;
27409
+ if (!currentImage?.imageSrc) return null;
27410
+ return /* @__PURE__ */ jsx(
27411
+ Img,
27412
+ {
27195
27413
  src: currentImage.imageSrc,
27196
27414
  alt: currentImage.imageAlt || "",
27197
- className: cn("h-full w-full object-cover transition-opacity duration-300", imageClassName),
27415
+ className: cn(
27416
+ "h-full w-full object-cover transition-opacity duration-300",
27417
+ imageClassName
27418
+ ),
27198
27419
  loading: "lazy",
27199
27420
  optixFlowConfig
27200
27421
  }
27201
27422
  );
27202
27423
  }, [currentImage, imageClassName, optixFlowConfig]);
27203
- return /* @__PURE__ */ jsxs(
27424
+ return /* @__PURE__ */ jsx(
27204
27425
  Section,
27205
27426
  {
27206
27427
  background,
@@ -27210,26 +27431,71 @@ function FeatureAccordionImage({
27210
27431
  patternClassName,
27211
27432
  className,
27212
27433
  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
- ]
27434
+ children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center space-y-6 md:space-y-16", children: [
27435
+ (title || description) && /* @__PURE__ */ jsxs(
27436
+ "div",
27437
+ {
27438
+ className: cn(
27439
+ "text-left md:text-center max-w-full md:max-w-md text-balance",
27440
+ headerClassName
27441
+ ),
27442
+ children: [
27443
+ title && (typeof title === "string" ? /* @__PURE__ */ jsx(
27444
+ "h2",
27445
+ {
27446
+ className: cn(
27447
+ "text-2xl font-semibold md:text-3xl lg:text-4xl",
27448
+ titleClassName
27449
+ ),
27450
+ children: title
27451
+ }
27452
+ ) : /* @__PURE__ */ jsx(
27453
+ "div",
27454
+ {
27455
+ className: cn(
27456
+ "text-xl font-semibold md:text-2xl lg:text-3xl",
27457
+ titleClassName
27458
+ ),
27459
+ children: title
27460
+ }
27461
+ )),
27462
+ 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 }))
27463
+ ]
27464
+ }
27465
+ ),
27466
+ (itemsSlot || items && items.length > 0) && /* @__PURE__ */ jsxs(
27467
+ "div",
27468
+ {
27469
+ className: cn(
27470
+ "grid gap-10 lg:grid-cols-2 lg:gap-16",
27471
+ gridClassName
27472
+ ),
27473
+ children: [
27474
+ /* @__PURE__ */ jsx(
27475
+ Accordion,
27476
+ {
27477
+ type: "single",
27478
+ collapsible: true,
27479
+ value: activeItem,
27480
+ onValueChange: setActiveItem,
27481
+ className: cn("w-full", accordionClassName),
27482
+ children: accordionItemsContent
27483
+ }
27484
+ ),
27485
+ /* @__PURE__ */ jsx(
27486
+ "div",
27487
+ {
27488
+ className: cn(
27489
+ "relative aspect-video overflow-hidden rounded-xl shadow-xl lg:aspect-square",
27490
+ imageWrapperClassName
27491
+ ),
27492
+ children: imageContent
27493
+ }
27494
+ )
27495
+ ]
27496
+ }
27497
+ )
27498
+ ] })
27233
27499
  }
27234
27500
  );
27235
27501
  }
@@ -41501,236 +41767,269 @@ function FaqSplitHero({
41501
41767
  imageArea
41502
41768
  ] }) });
41503
41769
  }
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"
41770
+ var Controls = React52.memo(
41771
+ ({
41772
+ handleNext,
41773
+ handlePrevious,
41774
+ isPreviousDisabled,
41775
+ isNextDisabled
41776
+ }) => {
41777
+ return /* @__PURE__ */ jsxs("div", { className: "hidden flex-col items-start gap-8 lg:flex", children: [
41778
+ /* @__PURE__ */ jsx(
41779
+ "button",
41780
+ {
41781
+ className: "rounded-full border p-2 flex items-center justify-center disabled:opacity-50 h-fit w-fit bg-card text-card-foreground",
41782
+ onClick: handlePrevious,
41783
+ disabled: isPreviousDisabled,
41784
+ type: "button",
41785
+ children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/chevron-up", size: 24 })
41553
41786
  }
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,
41787
+ ),
41788
+ /* @__PURE__ */ jsx(
41789
+ "button",
41562
41790
  {
41563
- layout: true,
41564
- variants: variants2,
41565
- initial: "initial",
41566
- animate: "animate",
41567
- exit: "exit",
41568
- transition: {
41791
+ className: "rounded-full border p-2 flex items-center justify-center disabled:opacity-50 h-fit w-fit bg-card text-card-foreground",
41792
+ onClick: handleNext,
41793
+ disabled: isNextDisabled,
41794
+ type: "button",
41795
+ children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/chevron-down", size: 24 })
41796
+ }
41797
+ )
41798
+ ] });
41799
+ }
41800
+ );
41801
+ var FeatureCard = React52.memo(
41802
+ ({ feature, isActive, onClick }) => {
41803
+ const variants2 = useMemo$1(
41804
+ () => ({
41805
+ initial: {
41806
+ opacity: 0
41807
+ },
41808
+ animate: {
41809
+ opacity: 1
41810
+ },
41811
+ exit: {
41812
+ opacity: 0
41813
+ }
41814
+ }),
41815
+ []
41816
+ );
41817
+ return /* @__PURE__ */ jsx(AnimatePresence, { mode: "popLayout", children: /* @__PURE__ */ jsxs(
41818
+ motion.div,
41819
+ {
41820
+ layout: true,
41821
+ transition: {
41822
+ layout: {
41569
41823
  duration: 0.4,
41570
- delay: 0.3,
41571
41824
  ease: "easeOut"
41825
+ }
41826
+ },
41827
+ style: {
41828
+ borderRadius: "24px"
41829
+ },
41830
+ className: cn(
41831
+ "relative flex items-start gap-4 bg-background text-foreground md:w-fit md:max-w-sm",
41832
+ isActive ? "shadow-xl overflow-visible" : "cursor-pointer shadow-none hover:shadow-xl transition-shadow duration-500 overflow-hidden"
41833
+ ),
41834
+ onClick,
41835
+ children: [
41836
+ isActive && feature.href && /* @__PURE__ */ 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__ */ jsx(
41837
+ Pressable,
41838
+ {
41839
+ href: feature.href,
41840
+ size: "icon-lg",
41841
+ className: "bg-primary text-primary-foreground",
41842
+ children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/arrow-up-right" })
41843
+ }
41844
+ ) }),
41845
+ isActive ? /* @__PURE__ */ jsx(
41846
+ motion.div,
41847
+ {
41848
+ layout: true,
41849
+ variants: variants2,
41850
+ initial: "initial",
41851
+ animate: "animate",
41852
+ exit: "exit",
41853
+ transition: {
41854
+ duration: 0.4,
41855
+ delay: 0.3,
41856
+ ease: "easeOut"
41857
+ },
41858
+ className: "p-6 text-sm md:p-8 md:text-base",
41859
+ children: (feature.title || feature.description) && /* @__PURE__ */ jsxs("p", { children: [
41860
+ feature.title && /* @__PURE__ */ jsxs("span", { className: "font-semibold", children: [
41861
+ feature.title,
41862
+ "."
41863
+ ] }),
41864
+ feature.title && feature.description && " ",
41865
+ feature.description && /* @__PURE__ */ jsx("span", { children: feature.description })
41866
+ ] })
41867
+ },
41868
+ `feature-description-active-${feature.title}`
41869
+ ) : /* @__PURE__ */ jsxs(
41870
+ motion.div,
41871
+ {
41872
+ layout: true,
41873
+ variants: variants2,
41874
+ initial: "initial",
41875
+ animate: "animate",
41876
+ exit: "exit",
41877
+ transition: {
41878
+ duration: 0.4,
41879
+ delay: 0.2,
41880
+ ease: "easeOut"
41881
+ },
41882
+ className: cn(
41883
+ "flex h-fit shrink-0 items-center gap-4 text-sm md:py-3.5 md:pr-6 md:pl-3 md:text-base",
41884
+ !isActive && "h-0 w-0 md:h-auto md:w-auto"
41885
+ ),
41886
+ style: {
41887
+ height: "auto",
41888
+ lineHeight: "normal"
41889
+ },
41890
+ children: [
41891
+ /* @__PURE__ */ jsx(
41892
+ DynamicIcon,
41893
+ {
41894
+ name: "lucide/plus-circle",
41895
+ size: 24,
41896
+ className: "shrink-0"
41897
+ }
41898
+ ),
41899
+ feature.title && /* @__PURE__ */ jsx("p", { className: "shrink-0 font-semibold", children: feature.title })
41900
+ ]
41901
+ },
41902
+ `feature-description-inactive-${feature.title}`
41903
+ )
41904
+ ]
41905
+ }
41906
+ ) });
41907
+ }
41908
+ );
41909
+ var FeaturesDesktop = React52.memo(
41910
+ ({
41911
+ features,
41912
+ handleNext,
41913
+ handlePrevious,
41914
+ activeIndex,
41915
+ handleFeatureClick,
41916
+ isPreviousDisabled,
41917
+ isNextDisabled
41918
+ }) => {
41919
+ return /* @__PURE__ */ jsxs("div", { className: "relative z-10 hidden items-center gap-8 md:flex", children: [
41920
+ /* @__PURE__ */ jsx(
41921
+ Controls,
41922
+ {
41923
+ handleNext,
41924
+ handlePrevious,
41925
+ isPreviousDisabled,
41926
+ isNextDisabled
41927
+ }
41928
+ ),
41929
+ /* @__PURE__ */ jsx("div", { className: "flex flex-col gap-4", children: features.map((feature, index) => {
41930
+ return /* @__PURE__ */ jsx(
41931
+ FeatureCard,
41932
+ {
41933
+ feature,
41934
+ isActive: index === activeIndex,
41935
+ onClick: () => handleFeatureClick(index)
41572
41936
  },
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
- ] })
41937
+ `feature-card-${index}`
41938
+ );
41939
+ }) })
41940
+ ] });
41941
+ }
41942
+ );
41943
+ var FeaturesMobile = React52.memo(
41944
+ ({
41945
+ features,
41946
+ handleNext,
41947
+ handlePrevious,
41948
+ activeIndex,
41949
+ direction,
41950
+ isPreviousDisabled,
41951
+ isNextDisabled
41952
+ }) => {
41953
+ const variants2 = useMemo$1(
41954
+ () => ({
41955
+ enter: (direction2) => ({
41956
+ x: direction2 > 0 ? 100 : -100,
41957
+ opacity: 0
41958
+ }),
41959
+ center: {
41960
+ x: 0,
41961
+ opacity: 1
41582
41962
  },
41583
- `feature-description-active-${feature.title}`
41584
- ) : /* @__PURE__ */ jsxs(
41963
+ exit: (direction2) => ({
41964
+ x: direction2 < 0 ? 100 : -100,
41965
+ opacity: 0
41966
+ })
41967
+ }),
41968
+ []
41969
+ );
41970
+ const currentFeature = features[activeIndex];
41971
+ 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: [
41972
+ /* @__PURE__ */ jsx("div", { className: "flex-1 overflow-hidden", children: /* @__PURE__ */ jsx(AnimatePresence, { mode: "wait", custom: direction, children: /* @__PURE__ */ jsx(
41585
41973
  motion.div,
41586
41974
  {
41587
- layout: true,
41975
+ custom: direction,
41588
41976
  variants: variants2,
41589
- initial: "initial",
41590
- animate: "animate",
41977
+ initial: "enter",
41978
+ animate: "center",
41591
41979
  exit: "exit",
41592
41980
  transition: {
41593
- duration: 0.4,
41594
- delay: 0.2,
41595
- ease: "easeOut"
41981
+ x: { type: "spring", stiffness: 300, damping: 30 },
41982
+ opacity: { duration: 0.2 }
41596
41983
  },
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 }
41984
+ className: "rounded-3xl bg-background p-4 text-left",
41985
+ children: (currentFeature?.title || currentFeature?.description) && /* @__PURE__ */ jsxs("div", { className: "text-sm", children: [
41986
+ currentFeature.title && /* @__PURE__ */ jsx("p", { className: "font-semibold", children: currentFeature.title }),
41987
+ currentFeature.description && /* @__PURE__ */ jsx("p", { className: "mt-1", children: currentFeature.description })
41988
+ ] })
41700
41989
  },
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
- });
41990
+ activeIndex
41991
+ ) }) }),
41992
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col justify-center gap-2", children: [
41993
+ /* @__PURE__ */ jsx(
41994
+ "button",
41995
+ {
41996
+ className: "rounded-full border p-2 flex items-center justify-center disabled:opacity-50 h-fit w-fit bg-card text-card-foreground",
41997
+ onClick: handlePrevious,
41998
+ disabled: isPreviousDisabled,
41999
+ type: "button",
42000
+ children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/chevron-up", size: 20 })
42001
+ }
42002
+ ),
42003
+ /* @__PURE__ */ jsx(
42004
+ "button",
42005
+ {
42006
+ className: "rounded-full border p-2 flex items-center justify-center disabled:opacity-50 h-fit w-fit bg-card text-card-foreground",
42007
+ onClick: handleNext,
42008
+ disabled: isNextDisabled,
42009
+ type: "button",
42010
+ children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/chevron-down", size: 20 })
42011
+ }
42012
+ )
42013
+ ] })
42014
+ ] }) });
42015
+ }
42016
+ );
41725
42017
  function FeatureAnimatedCarousel({
42018
+ title,
42019
+ description,
42020
+ titleClassName,
42021
+ descriptionClassName,
41726
42022
  features,
41727
42023
  className,
41728
42024
  optixFlowConfig,
41729
42025
  background,
41730
- spacing,
41731
42026
  pattern,
41732
42027
  patternOpacity,
41733
- patternClassName
42028
+ patternClassName,
42029
+ headerClassName,
42030
+ blockCardClassName,
42031
+ spacing = "py-12 md:py-32",
42032
+ containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8"
41734
42033
  }) {
41735
42034
  const [activeIndex, setActiveIndex] = React52.useState(0);
41736
42035
  const [direction, setDirection] = React52.useState(1);
@@ -41746,26 +42045,32 @@ function FeatureAnimatedCarousel({
41746
42045
  setActiveIndex(activeIndex - 1);
41747
42046
  }
41748
42047
  }, [activeIndex]);
41749
- const handleFeatureClick = useCallback((index) => {
41750
- setDirection(index > activeIndex ? 1 : -1);
41751
- setActiveIndex(index);
41752
- }, [activeIndex]);
42048
+ const handleFeatureClick = useCallback(
42049
+ (index) => {
42050
+ setDirection(index > activeIndex ? 1 : -1);
42051
+ setActiveIndex(index);
42052
+ },
42053
+ [activeIndex]
42054
+ );
41753
42055
  const isPreviousDisabled = activeIndex === 0;
41754
42056
  const isNextDisabled = !features || activeIndex === features.length - 1;
41755
- const imageVariants = useMemo$1(() => ({
41756
- enter: (direction2) => ({
41757
- x: direction2 > 0 ? 300 : -300,
41758
- opacity: 0
42057
+ const imageVariants = useMemo$1(
42058
+ () => ({
42059
+ enter: (direction2) => ({
42060
+ x: direction2 > 0 ? 300 : -300,
42061
+ opacity: 0
42062
+ }),
42063
+ center: {
42064
+ x: 0,
42065
+ opacity: 1
42066
+ },
42067
+ exit: (direction2) => ({
42068
+ x: direction2 < 0 ? 300 : -300,
42069
+ opacity: 0
42070
+ })
41759
42071
  }),
41760
- center: {
41761
- x: 0,
41762
- opacity: 1
41763
- },
41764
- exit: (direction2) => ({
41765
- x: direction2 < 0 ? 300 : -300,
41766
- opacity: 0
41767
- })
41768
- }), []);
42072
+ []
42073
+ );
41769
42074
  if (!features || features.length === 0) {
41770
42075
  return /* @__PURE__ */ jsx(
41771
42076
  Section,
@@ -41776,11 +42081,15 @@ function FeatureAnimatedCarousel({
41776
42081
  patternOpacity,
41777
42082
  patternClassName,
41778
42083
  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
- ) })
42084
+ containerClassName,
42085
+ children: /* @__PURE__ */ jsx(
42086
+ "div",
42087
+ {
42088
+ className: cn(
42089
+ "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]"
42090
+ )
42091
+ }
42092
+ )
41784
42093
  }
41785
42094
  );
41786
42095
  }
@@ -41794,60 +42103,116 @@ function FeatureAnimatedCarousel({
41794
42103
  patternOpacity,
41795
42104
  patternClassName,
41796
42105
  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,
42106
+ containerClassName,
42107
+ children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col space-y-6 md:space-y-16", children: [
42108
+ title || description ? /* @__PURE__ */ jsxs(
42109
+ "div",
41804
42110
  {
41805
- features,
41806
- handleNext,
41807
- handlePrevious,
41808
- activeIndex,
41809
- handleFeatureClick,
41810
- isPreviousDisabled,
41811
- isNextDisabled
42111
+ className: cn(
42112
+ "flex flex-col gap-4 md:gap-6 text-left",
42113
+ headerClassName
42114
+ ),
42115
+ children: [
42116
+ title && (typeof title === "string" ? /* @__PURE__ */ jsx(
42117
+ "h2",
42118
+ {
42119
+ className: cn(
42120
+ "text-xl font-semibold text-balance md:text-2xl lg:text-3xl max-w-lg md:max-w-md",
42121
+ titleClassName
42122
+ ),
42123
+ children: title
42124
+ }
42125
+ ) : /* @__PURE__ */ jsx(
42126
+ "div",
42127
+ {
42128
+ className: cn(
42129
+ "text-xl font-semibold text-balance md:text-2xl lg:text-3xl max-w-lg md:max-w-md",
42130
+ titleClassName
42131
+ ),
42132
+ children: title
42133
+ }
42134
+ )),
42135
+ description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("max-w-lg md:max-w-md", descriptionClassName), children: description }) : /* @__PURE__ */ jsx(
42136
+ "div",
42137
+ {
42138
+ className: cn("max-w-lg md:max-w-md", descriptionClassName),
42139
+ children: description
42140
+ }
42141
+ ))
42142
+ ]
41812
42143
  }
41813
- ),
41814
- /* @__PURE__ */ jsx(
41815
- FeaturesMobile,
42144
+ ) : null,
42145
+ /* @__PURE__ */ jsxs(
42146
+ "div",
41816
42147
  {
41817
- features,
41818
- handleNext,
41819
- handlePrevious,
41820
- activeIndex,
41821
- direction,
41822
- isPreviousDisabled,
41823
- isNextDisabled
42148
+ className: cn(
42149
+ "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]",
42150
+ blockCardClassName
42151
+ ),
42152
+ children: [
42153
+ /* @__PURE__ */ jsx(
42154
+ FeaturesDesktop,
42155
+ {
42156
+ features,
42157
+ handleNext,
42158
+ handlePrevious,
42159
+ activeIndex,
42160
+ handleFeatureClick,
42161
+ isPreviousDisabled,
42162
+ isNextDisabled
42163
+ }
42164
+ ),
42165
+ /* @__PURE__ */ jsx(
42166
+ FeaturesMobile,
42167
+ {
42168
+ features,
42169
+ handleNext,
42170
+ handlePrevious,
42171
+ activeIndex,
42172
+ direction,
42173
+ isPreviousDisabled,
42174
+ isNextDisabled
42175
+ }
42176
+ ),
42177
+ currentFeature?.image && /* @__PURE__ */ 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: [
42178
+ currentFeature.href && /* @__PURE__ */ 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__ */ jsx(
42179
+ Pressable,
42180
+ {
42181
+ href: currentFeature.href,
42182
+ size: "icon-lg",
42183
+ className: "bg-primary text-primary-foreground",
42184
+ children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/arrow-up-right" })
42185
+ }
42186
+ ) }),
42187
+ /* @__PURE__ */ jsx(AnimatePresence, { mode: "wait", custom: direction, children: /* @__PURE__ */ jsx(
42188
+ motion.div,
42189
+ {
42190
+ custom: direction,
42191
+ variants: imageVariants,
42192
+ initial: "enter",
42193
+ animate: "center",
42194
+ exit: "exit",
42195
+ transition: {
42196
+ x: { type: "spring", stiffness: 300, damping: 30 },
42197
+ opacity: { duration: 0.3 }
42198
+ },
42199
+ className: "h-full w-full shadow-xl overflow-hidden rounded-2xl",
42200
+ children: /* @__PURE__ */ jsx(
42201
+ Img,
42202
+ {
42203
+ src: currentFeature.image,
42204
+ alt: currentFeature.imageAlt || (typeof currentFeature.title === "string" ? currentFeature.title : "Feature image"),
42205
+ className: "h-full w-full object-cover",
42206
+ optixFlowConfig
42207
+ }
42208
+ )
42209
+ },
42210
+ activeIndex
42211
+ ) })
42212
+ ] })
42213
+ ]
41824
42214
  }
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
- ) }) })
42215
+ )
41851
42216
  ] })
41852
42217
  }
41853
42218
  );