@opensite/ui 2.0.6 → 2.0.8

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.
Files changed (77) hide show
  1. package/dist/hero-adaptable-product-grid.cjs +1 -1
  2. package/dist/hero-adaptable-product-grid.js +1 -1
  3. package/dist/hero-agency-animated-images.cjs +795 -631
  4. package/dist/hero-agency-animated-images.d.cts +13 -9
  5. package/dist/hero-agency-animated-images.d.ts +13 -9
  6. package/dist/hero-agency-animated-images.js +794 -630
  7. package/dist/hero-business-carousel-dots.cjs +822 -911
  8. package/dist/hero-business-carousel-dots.d.cts +5 -1
  9. package/dist/hero-business-carousel-dots.d.ts +5 -1
  10. package/dist/hero-business-carousel-dots.js +824 -910
  11. package/dist/hero-coming-soon-countdown.cjs +267 -110
  12. package/dist/hero-coming-soon-countdown.d.cts +8 -11
  13. package/dist/hero-coming-soon-countdown.d.ts +8 -11
  14. package/dist/hero-coming-soon-countdown.js +268 -111
  15. package/dist/hero-conversation-intelligence.cjs +673 -639
  16. package/dist/hero-conversation-intelligence.js +663 -629
  17. package/dist/hero-creative-studio-stacked.cjs +899 -861
  18. package/dist/hero-creative-studio-stacked.d.cts +16 -15
  19. package/dist/hero-creative-studio-stacked.d.ts +16 -15
  20. package/dist/hero-creative-studio-stacked.js +897 -859
  21. package/dist/hero-customer-support-layered.cjs +89 -76
  22. package/dist/hero-customer-support-layered.js +89 -76
  23. package/dist/hero-developer-tools-code.cjs +721 -669
  24. package/dist/hero-developer-tools-code.d.cts +5 -1
  25. package/dist/hero-developer-tools-code.d.ts +5 -1
  26. package/dist/hero-developer-tools-code.js +719 -667
  27. package/dist/hero-digital-agency-fullscreen.cjs +722 -680
  28. package/dist/hero-digital-agency-fullscreen.d.cts +4 -20
  29. package/dist/hero-digital-agency-fullscreen.d.ts +4 -20
  30. package/dist/hero-digital-agency-fullscreen.js +722 -680
  31. package/dist/hero-ecommerce-product-showcase.cjs +892 -846
  32. package/dist/hero-ecommerce-product-showcase.js +889 -843
  33. package/dist/hero-enterprise-security.cjs +168 -132
  34. package/dist/hero-enterprise-security.d.cts +12 -19
  35. package/dist/hero-enterprise-security.d.ts +12 -19
  36. package/dist/hero-enterprise-security.js +168 -132
  37. package/dist/hero-event-registration.cjs +39 -39
  38. package/dist/hero-event-registration.js +39 -39
  39. package/dist/hero-fullscreen-background-image.cjs +3 -2
  40. package/dist/hero-fullscreen-background-image.js +3 -2
  41. package/dist/hero-fullscreen-logo-cta.cjs +4 -2
  42. package/dist/hero-fullscreen-logo-cta.js +4 -2
  43. package/dist/hero-innovation-image-grid.cjs +2 -2
  44. package/dist/hero-innovation-image-grid.js +2 -2
  45. package/dist/hero-mental-health-team.cjs +17 -17
  46. package/dist/hero-mental-health-team.d.cts +5 -5
  47. package/dist/hero-mental-health-team.d.ts +5 -5
  48. package/dist/hero-mental-health-team.js +17 -17
  49. package/dist/hero-mobile-app-download.cjs +2 -2
  50. package/dist/hero-mobile-app-download.js +2 -2
  51. package/dist/hero-newsletter-minimal.cjs +97 -57
  52. package/dist/hero-newsletter-minimal.d.cts +5 -1
  53. package/dist/hero-newsletter-minimal.d.ts +5 -1
  54. package/dist/hero-newsletter-minimal.js +97 -57
  55. package/dist/hero-shared-inbox-layered.cjs +522 -42
  56. package/dist/hero-shared-inbox-layered.d.cts +20 -4
  57. package/dist/hero-shared-inbox-layered.d.ts +20 -4
  58. package/dist/hero-shared-inbox-layered.js +505 -40
  59. package/dist/hero-startup-launch-cta.cjs +859 -816
  60. package/dist/hero-startup-launch-cta.d.cts +3 -2
  61. package/dist/hero-startup-launch-cta.d.ts +3 -2
  62. package/dist/hero-startup-launch-cta.js +858 -815
  63. package/dist/hero-therapy-testimonial-grid.cjs +1 -1
  64. package/dist/hero-therapy-testimonial-grid.js +1 -1
  65. package/dist/hero-video-dialog-gradient-BnCFFec0.d.ts +99 -0
  66. package/dist/hero-video-dialog-gradient-Dapebkzu.d.cts +99 -0
  67. package/dist/hero-video-dialog-gradient.cjs +24 -23
  68. package/dist/hero-video-dialog-gradient.d.cts +4 -94
  69. package/dist/hero-video-dialog-gradient.d.ts +4 -94
  70. package/dist/hero-video-dialog-gradient.js +24 -23
  71. package/dist/hero-welcome-asymmetric-images.cjs +652 -617
  72. package/dist/hero-welcome-asymmetric-images.d.cts +5 -1
  73. package/dist/hero-welcome-asymmetric-images.d.ts +5 -1
  74. package/dist/hero-welcome-asymmetric-images.js +651 -616
  75. package/dist/registry.cjs +1111 -848
  76. package/dist/registry.js +1111 -848
  77. package/package.json +1 -1
package/dist/registry.cjs CHANGED
@@ -53588,7 +53588,7 @@ function HeroFullscreenBackgroundImage({
53588
53588
  patternOpacity,
53589
53589
  className,
53590
53590
  containerClassName = "px-0 sm:px-0 lg:px-0 max-w-full relative z-10 h-screen w-screen flex justify-center items-center",
53591
- contentClassName = "relative flex flex-col gap-12 px-6 pt-28 pb-6 md:pt-0 md:pb-0",
53591
+ contentClassName = "",
53592
53592
  headingClassName,
53593
53593
  descriptionClassName,
53594
53594
  actionsClassName,
@@ -53628,7 +53628,8 @@ function HeroFullscreenBackgroundImage({
53628
53628
  "div",
53629
53629
  {
53630
53630
  className: cn(
53631
- "relative z-30 m-auto flex max-w-full md:max-w-md flex-col items-center justify-center gap-6 px-5",
53631
+ "flex flex-col gap-4 md:gap-6 px-6 pt-28 pb-6 md:pt-0 md:pb-0",
53632
+ "relative z-30 m-auto max-w-full md:max-w-md flex-col items-center justify-center text-center",
53632
53633
  contentClassName
53633
53634
  ),
53634
53635
  children: [
@@ -53681,7 +53682,7 @@ function HeroFullscreenLogoCta({
53681
53682
  patternOpacity,
53682
53683
  className,
53683
53684
  containerClassName = "px-0 sm:px-0 lg:px-0 max-w-full relative z-10 h-screen w-screen flex justify-center items-center",
53684
- contentClassName = "relative flex flex-col gap-12 px-6 pt-28 pb-6 md:pt-0 md:pb-0",
53685
+ contentClassName,
53685
53686
  headingClassName,
53686
53687
  descriptionClassName,
53687
53688
  optixFlowConfig
@@ -53751,7 +53752,9 @@ function HeroFullscreenLogoCta({
53751
53752
  "div",
53752
53753
  {
53753
53754
  className: cn(
53754
- "relative z-30 m-auto flex max-w-full flex-col items-start justify-center gap-4 md:gap-6 px-5",
53755
+ "z-30 m-auto max-w-full items-start justify-center flex flex-col",
53756
+ "relative gap-12 md:gap-6 px-5",
53757
+ "pt-8 pb-6 md:pt-0 md:pb-0",
53755
53758
  contentClassName
53756
53759
  ),
53757
53760
  children: [
@@ -54417,7 +54420,7 @@ function HeroAdaptableProductGrid({
54417
54420
  patternOpacity,
54418
54421
  className,
54419
54422
  containerClassName,
54420
- children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
54423
+ children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "pt-8 md:pt-0", children: [
54421
54424
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
54422
54425
  "h1",
54423
54426
  {
@@ -56988,11 +56991,11 @@ function HeroInnovationImageGrid({
56988
56991
  patternOpacity,
56989
56992
  className,
56990
56993
  containerClassName,
56991
- children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "pt-10 md:pt-0", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-22.5 lg:grid-cols-2", children: [
56994
+ children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "pt-10 md:pt-0", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-12 md:gap-22.5 lg:grid-cols-2", children: [
56992
56995
  /* @__PURE__ */ jsxRuntime.jsx("div", { children: /* @__PURE__ */ jsxRuntime.jsxs(
56993
56996
  "div",
56994
56997
  {
56995
- className: cn("flex flex-col gap-6 md:gap-12", contentClassName),
56998
+ className: cn("flex flex-col gap-2 md:gap-12", contentClassName),
56996
56999
  children: [
56997
57000
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
56998
57001
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
@@ -57056,6 +57059,7 @@ function HeroVideoDialogGradient({
57056
57059
  pattern,
57057
57060
  onVideoClick,
57058
57061
  patternOpacity,
57062
+ actionsClassName,
57059
57063
  className,
57060
57064
  headingClassName,
57061
57065
  descriptionClassName,
@@ -57109,16 +57113,7 @@ function HeroVideoDialogGradient({
57109
57113
  ),
57110
57114
  children: heading
57111
57115
  }
57112
- ) : /* @__PURE__ */ jsxRuntime.jsx(
57113
- "h1",
57114
- {
57115
- className: cn(
57116
- "max-w-[920px] text-center text-4xl leading-tight font-semibold md:text-6xl lg:text-7xl text-balance",
57117
- headingClassName
57118
- ),
57119
- children: heading
57120
- }
57121
- )),
57116
+ ) : heading),
57122
57117
  description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
57123
57118
  "p",
57124
57119
  {
@@ -57128,20 +57123,29 @@ function HeroVideoDialogGradient({
57128
57123
  ),
57129
57124
  children: description
57130
57125
  }
57131
- ) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description }))
57126
+ ) : description)
57132
57127
  ] }),
57133
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col md:flex-row flex-wrap gap-4", children: [
57134
- videoAction && videoDialog?.videoUrl ? /* @__PURE__ */ jsxRuntime.jsx(
57135
- ActionComponent,
57136
- {
57137
- action: {
57138
- ...videoAction,
57139
- onClick: handleVideoClick
57140
- }
57141
- }
57142
- ) : null,
57143
- actions?.map((action, index) => /* @__PURE__ */ jsxRuntime.jsx(ActionComponent, { action }, index))
57144
- ] })
57128
+ /* @__PURE__ */ jsxRuntime.jsxs(
57129
+ "div",
57130
+ {
57131
+ className: cn(
57132
+ "flex flex-col md:flex-row flex-wrap gap-4",
57133
+ actionsClassName
57134
+ ),
57135
+ children: [
57136
+ videoAction && videoDialog?.videoUrl ? /* @__PURE__ */ jsxRuntime.jsx(
57137
+ ActionComponent,
57138
+ {
57139
+ action: {
57140
+ ...videoAction,
57141
+ onClick: handleVideoClick
57142
+ }
57143
+ }
57144
+ ) : null,
57145
+ actions?.map((action, index) => /* @__PURE__ */ jsxRuntime.jsx(ActionComponent, { action }, index))
57146
+ ]
57147
+ }
57148
+ )
57145
57149
  ] }),
57146
57150
  renderImage
57147
57151
  ] })
@@ -57718,7 +57722,7 @@ function HeroTherapyTestimonialGrid({
57718
57722
  "p",
57719
57723
  {
57720
57724
  className: cn(
57721
- "text-center text-lg md:text-xl",
57725
+ "text-center text-lg md:text-xl text-balance",
57722
57726
  descriptionClassName
57723
57727
  ),
57724
57728
  children: description
@@ -57747,53 +57751,53 @@ function HeroMentalHealthTeam({
57747
57751
  actionsSlot,
57748
57752
  actionsClassName,
57749
57753
  heading,
57750
- teamImages,
57751
- teamImagesSlot,
57754
+ smallImages,
57755
+ smallImagesSlot,
57752
57756
  testimonial,
57753
57757
  testimonialSlot,
57754
57758
  featureImage,
57755
57759
  featureImageSlot,
57756
57760
  background,
57757
- spacing = "xl",
57758
57761
  pattern,
57759
57762
  patternOpacity,
57760
57763
  className,
57764
+ spacing = "xl",
57761
57765
  containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
57762
57766
  headerClassName,
57763
57767
  headingClassName,
57764
57768
  gridClassName,
57765
57769
  optixFlowConfig
57766
57770
  }) {
57767
- const renderTeamImages = React22.useMemo(() => {
57768
- if (teamImagesSlot) return teamImagesSlot;
57769
- if (!teamImages || teamImages.length === 0) return null;
57771
+ const renderSmallImages = React22.useMemo(() => {
57772
+ if (smallImagesSlot) return smallImagesSlot;
57773
+ if (!smallImages || smallImages.length === 0) return null;
57770
57774
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
57771
- teamImages[0] && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "col-[1/2] row-[1/2] w-full", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-full max-h-77.5 w-full overflow-hidden rounded-2xl", children: /* @__PURE__ */ jsxRuntime.jsx(
57775
+ smallImages[0] && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "col-[1/2] row-[1/2] w-full", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-full max-h-77.5 w-full overflow-hidden rounded-2xl", children: /* @__PURE__ */ jsxRuntime.jsx(
57772
57776
  img.Img,
57773
57777
  {
57774
- src: teamImages[0].src,
57775
- alt: teamImages[0].alt,
57778
+ src: smallImages[0].src,
57779
+ alt: smallImages[0].alt,
57776
57780
  className: cn(
57777
57781
  "block h-full w-full object-cover object-center",
57778
- teamImages[0].className
57782
+ smallImages[0].className
57779
57783
  ),
57780
57784
  optixFlowConfig
57781
57785
  }
57782
57786
  ) }) }),
57783
- teamImages[1] && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "col-[2/3] row-[1/2] w-full md:col-[2/3] md:row-[1/2]", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-full max-h-77.5 w-full overflow-hidden rounded-2xl", children: /* @__PURE__ */ jsxRuntime.jsx(
57787
+ smallImages[1] && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "col-[2/3] row-[1/2] w-full md:col-[2/3] md:row-[1/2]", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-full max-h-77.5 w-full overflow-hidden rounded-2xl", children: /* @__PURE__ */ jsxRuntime.jsx(
57784
57788
  img.Img,
57785
57789
  {
57786
- src: teamImages[1].src,
57787
- alt: teamImages[1].alt,
57790
+ src: smallImages[1].src,
57791
+ alt: smallImages[1].alt,
57788
57792
  className: cn(
57789
57793
  "block h-full w-full object-cover object-center",
57790
- teamImages[1].className
57794
+ smallImages[1].className
57791
57795
  ),
57792
57796
  optixFlowConfig
57793
57797
  }
57794
57798
  ) }) })
57795
57799
  ] });
57796
- }, [teamImagesSlot, teamImages, optixFlowConfig]);
57800
+ }, [smallImagesSlot, smallImages, optixFlowConfig]);
57797
57801
  const renderTestimonial = React22.useMemo(() => {
57798
57802
  if (testimonialSlot) return testimonialSlot;
57799
57803
  if (!testimonial) return null;
@@ -57883,7 +57887,7 @@ function HeroMentalHealthTeam({
57883
57887
  "p",
57884
57888
  {
57885
57889
  className: cn(
57886
- "text-center text-lg md:text-xl",
57890
+ "text-center text-lg md:text-xl text-balance",
57887
57891
  descriptionClassName
57888
57892
  ),
57889
57893
  children: description
@@ -57908,7 +57912,7 @@ function HeroMentalHealthTeam({
57908
57912
  gridClassName
57909
57913
  ),
57910
57914
  children: [
57911
- renderTeamImages,
57915
+ renderSmallImages,
57912
57916
  renderTestimonial,
57913
57917
  renderFeatureImage
57914
57918
  ]
@@ -58213,67 +58217,122 @@ function HeroBusinessOperationsMosaic({
58213
58217
  }
58214
58218
  );
58215
58219
  }
58220
+ var imageAnimationVariants = [
58221
+ // Top-left: slides in from left + up
58222
+ {
58223
+ hidden: { opacity: 0, x: -40, y: -30, scale: 0.92 },
58224
+ visible: { opacity: 1, x: 0, y: 0, scale: 1 }
58225
+ },
58226
+ // Bottom-left: slides in from left + down
58227
+ {
58228
+ hidden: { opacity: 0, x: -30, y: 40, scale: 0.92 },
58229
+ visible: { opacity: 1, x: 0, y: 0, scale: 1 }
58230
+ },
58231
+ // Top-right: slides in from right + up
58232
+ {
58233
+ hidden: { opacity: 0, x: 40, y: -30, scale: 0.92 },
58234
+ visible: { opacity: 1, x: 0, y: 0, scale: 1 }
58235
+ },
58236
+ // Bottom-right: slides in from right + down
58237
+ {
58238
+ hidden: { opacity: 0, x: 30, y: 40, scale: 0.92 },
58239
+ visible: { opacity: 1, x: 0, y: 0, scale: 1 }
58240
+ }
58241
+ ];
58242
+ var staggerDelays = [0, 0.15, 0.1, 0.25];
58243
+ var imageTransition = {
58244
+ type: "spring",
58245
+ stiffness: 80,
58246
+ damping: 20,
58247
+ mass: 0.8
58248
+ };
58216
58249
  function HeroAgencyAnimatedImages({
58217
58250
  heading,
58218
- subheading,
58219
- action,
58220
- actionSlot,
58251
+ description,
58252
+ descriptionClassName,
58253
+ actions,
58254
+ actionsSlot,
58255
+ actionsClassName,
58221
58256
  images,
58222
58257
  imagesSlot,
58223
58258
  background,
58224
- spacing,
58259
+ spacing = "xl",
58260
+ containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
58225
58261
  pattern,
58226
58262
  patternOpacity,
58227
58263
  className,
58228
- containerClassName,
58229
58264
  contentClassName,
58230
58265
  headingClassName,
58231
- subheadingClassName,
58232
58266
  imagesContainerClassName,
58233
58267
  optixFlowConfig
58234
58268
  }) {
58235
- const renderAction = React22.useMemo(() => {
58236
- if (actionSlot) return actionSlot;
58237
- if (!action) return null;
58238
- const { label, icon, iconAfter, children, className: actionClassName, ...pressableProps } = action;
58239
- return /* @__PURE__ */ jsxRuntime.jsx(
58240
- Pressable,
58241
- {
58242
- asButton: true,
58243
- className: actionClassName,
58244
- ...pressableProps,
58245
- children: children ?? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
58246
- icon,
58247
- label,
58248
- iconAfter
58249
- ] })
58250
- }
58251
- );
58252
- }, [actionSlot, action]);
58253
58269
  const renderImages = React22.useMemo(() => {
58254
58270
  if (imagesSlot) return imagesSlot;
58255
58271
  if (!images || images.length === 0) return null;
58256
58272
  const leftImages = images.slice(0, 2);
58257
58273
  const rightImages = images.slice(2, 4);
58258
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid w-full grid-cols-2 items-center justify-center gap-4", children: [
58259
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-col items-end justify-center gap-4", children: leftImages.map((image, index) => /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative overflow-hidden rounded-lg", children: /* @__PURE__ */ jsxRuntime.jsx(
58260
- img.Img,
58261
- {
58262
- src: image.src,
58263
- alt: image.alt,
58264
- className: cn("block h-full w-full object-cover object-center", image.className),
58265
- optixFlowConfig
58266
- }
58267
- ) }, index)) }),
58268
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-col items-start justify-center gap-4", children: rightImages.map((image, index) => /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative overflow-hidden rounded-lg", children: /* @__PURE__ */ jsxRuntime.jsx(
58269
- img.Img,
58270
- {
58271
- src: image.src,
58272
- alt: image.alt,
58273
- className: cn("block h-full w-full object-cover object-center", image.className),
58274
- optixFlowConfig
58275
- }
58276
- ) }, index)) })
58274
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid w-full grid-cols-2 items-center justify-center gap-5", children: [
58275
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-col items-end justify-center gap-5 pt-8", children: leftImages.map((image, index) => {
58276
+ const variant = imageAnimationVariants[index];
58277
+ const delay = staggerDelays[index];
58278
+ return /* @__PURE__ */ jsxRuntime.jsxs(
58279
+ framerMotion.motion.div,
58280
+ {
58281
+ initial: variant.hidden,
58282
+ whileInView: variant.visible,
58283
+ viewport: { once: true, amount: 0.3 },
58284
+ transition: { ...imageTransition, delay },
58285
+ className: "group relative overflow-hidden rounded-xl shadow-lg",
58286
+ children: [
58287
+ /* @__PURE__ */ jsxRuntime.jsx(
58288
+ img.Img,
58289
+ {
58290
+ src: image.src,
58291
+ alt: image.alt,
58292
+ className: cn(
58293
+ "block h-full w-full object-cover object-center transition-transform duration-500 ease-out group-hover:scale-105",
58294
+ image.className
58295
+ ),
58296
+ optixFlowConfig
58297
+ }
58298
+ ),
58299
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "pointer-events-none absolute inset-0 rounded-xl ring-1 ring-inset ring-foreground/5 transition-all duration-500 group-hover:ring-foreground/10" })
58300
+ ]
58301
+ },
58302
+ index
58303
+ );
58304
+ }) }),
58305
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-col items-start justify-center gap-5 pb-8", children: rightImages.map((image, index) => {
58306
+ const globalIndex = index + 2;
58307
+ const variant = imageAnimationVariants[globalIndex];
58308
+ const delay = staggerDelays[globalIndex];
58309
+ return /* @__PURE__ */ jsxRuntime.jsxs(
58310
+ framerMotion.motion.div,
58311
+ {
58312
+ initial: variant.hidden,
58313
+ whileInView: variant.visible,
58314
+ viewport: { once: true, amount: 0.3 },
58315
+ transition: { ...imageTransition, delay },
58316
+ className: "group relative overflow-hidden rounded-xl shadow-lg",
58317
+ children: [
58318
+ /* @__PURE__ */ jsxRuntime.jsx(
58319
+ img.Img,
58320
+ {
58321
+ src: image.src,
58322
+ alt: image.alt,
58323
+ className: cn(
58324
+ "block h-full w-full object-cover object-center transition-transform duration-500 ease-out group-hover:scale-105",
58325
+ image.className
58326
+ ),
58327
+ optixFlowConfig
58328
+ }
58329
+ ),
58330
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "pointer-events-none absolute inset-0 rounded-xl ring-1 ring-inset ring-foreground/5 transition-all duration-500 group-hover:ring-foreground/10" })
58331
+ ]
58332
+ },
58333
+ index
58334
+ );
58335
+ }) })
58277
58336
  ] });
58278
58337
  }, [imagesSlot, images, optixFlowConfig]);
58279
58338
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -58284,13 +58343,57 @@ function HeroAgencyAnimatedImages({
58284
58343
  pattern,
58285
58344
  patternOpacity,
58286
58345
  className,
58287
- children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("container max-w-444", containerClassName), children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid w-full grid-cols-1 items-center justify-between gap-14 lg:grid-cols-2", children: [
58288
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex w-full max-w-125 flex-col gap-8 md:gap-14 lg:max-w-full", contentClassName), children: [
58289
- heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h1", { className: cn("font-serif text-5xl md:text-6xl lg:text-7xl xl:text-[5rem]", headingClassName), children: heading }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: headingClassName, children: heading })),
58290
- subheading && (typeof subheading === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("font-montserrat text-2xl leading-snug lg:text-3xl xl:text-4xl", subheadingClassName), children: subheading }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: subheadingClassName, children: subheading })),
58291
- renderAction
58292
- ] }),
58293
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mx-auto w-full max-w-211.5 lg:mx-0", imagesContainerClassName), children: /* @__PURE__ */ jsxRuntime.jsx(AspectRatio, { ratio: 1.049627792 / 1, children: renderImages }) })
58346
+ containerClassName,
58347
+ children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "pt-10 md:pt-0", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid w-full grid-cols-1 items-center justify-between gap-14 lg:grid-cols-2", children: [
58348
+ /* @__PURE__ */ jsxRuntime.jsxs(
58349
+ "div",
58350
+ {
58351
+ className: cn(
58352
+ "flex w-full max-w-125 flex-col gap-8 md:gap-14 lg:max-w-full",
58353
+ contentClassName
58354
+ ),
58355
+ children: [
58356
+ heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
58357
+ "h1",
58358
+ {
58359
+ className: cn(
58360
+ "text-5xl md:text-6xl lg:text-7xl xl:text-[5rem] text-left text-pretty",
58361
+ headingClassName
58362
+ ),
58363
+ children: heading
58364
+ }
58365
+ ) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: headingClassName, children: heading })),
58366
+ description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
58367
+ "p",
58368
+ {
58369
+ className: cn(
58370
+ "text-left text-lg md:text-xl text-balance",
58371
+ descriptionClassName
58372
+ ),
58373
+ children: description
58374
+ }
58375
+ ) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description })),
58376
+ /* @__PURE__ */ jsxRuntime.jsx(
58377
+ BlockActions,
58378
+ {
58379
+ actions,
58380
+ actionsSlot,
58381
+ actionsClassName
58382
+ }
58383
+ )
58384
+ ]
58385
+ }
58386
+ ),
58387
+ /* @__PURE__ */ jsxRuntime.jsx(
58388
+ "div",
58389
+ {
58390
+ className: cn(
58391
+ "mx-auto w-full max-w-211.5 lg:mx-0",
58392
+ imagesContainerClassName
58393
+ ),
58394
+ children: /* @__PURE__ */ jsxRuntime.jsx(AspectRatio, { ratio: 1.049627792 / 1, children: renderImages })
58395
+ }
58396
+ )
58294
58397
  ] }) })
58295
58398
  }
58296
58399
  );
@@ -58300,6 +58403,7 @@ function HeroWelcomeAsymmetricImages({
58300
58403
  description,
58301
58404
  actions,
58302
58405
  actionsSlot,
58406
+ actionsClassName,
58303
58407
  images,
58304
58408
  imagesSlot,
58305
58409
  background,
@@ -58313,25 +58417,6 @@ function HeroWelcomeAsymmetricImages({
58313
58417
  descriptionClassName,
58314
58418
  optixFlowConfig
58315
58419
  }) {
58316
- const renderActions = React22.useMemo(() => {
58317
- if (actionsSlot) return actionsSlot;
58318
- if (!actions || actions.length === 0) return null;
58319
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-col gap-4 sm:flex-row", children: actions.map((action, idx) => /* @__PURE__ */ jsxRuntime.jsxs(
58320
- Pressable,
58321
- {
58322
- href: action.href,
58323
- onClick: action.onClick,
58324
- asButton: true,
58325
- variant: action.variant || "default",
58326
- size: action.size || "lg",
58327
- children: [
58328
- action.label,
58329
- action.icon
58330
- ]
58331
- },
58332
- idx
58333
- )) });
58334
- }, [actionsSlot, actions]);
58335
58420
  const renderImages = React22.useMemo(() => {
58336
58421
  if (imagesSlot) return imagesSlot;
58337
58422
  if (!images || images.length < 4) return null;
@@ -58400,36 +58485,25 @@ function HeroWelcomeAsymmetricImages({
58400
58485
  ),
58401
58486
  children: heading
58402
58487
  }
58403
- ) : /* @__PURE__ */ jsxRuntime.jsx(
58404
- "h1",
58405
- {
58406
- className: cn(
58407
- "mb-8 text-4xl font-normal text-balance md:text-7xl",
58408
- headingClassName
58409
- ),
58410
- children: heading
58411
- }
58412
- )),
58488
+ ) : heading),
58413
58489
  description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
58414
58490
  "p",
58415
58491
  {
58416
58492
  className: cn(
58417
- "mb-12 max-w-[70%] text-xl font-normal text-balance",
58493
+ "mb-12 max-w-full md:max-w-[70%] text-lg md:text-xl font-normal text-balance",
58418
58494
  descriptionClassName
58419
58495
  ),
58420
58496
  children: description
58421
58497
  }
58422
- ) : /* @__PURE__ */ jsxRuntime.jsx(
58423
- "div",
58498
+ ) : description),
58499
+ /* @__PURE__ */ jsxRuntime.jsx(
58500
+ BlockActions,
58424
58501
  {
58425
- className: cn(
58426
- "mb-12 max-w-[70%] text-xl font-normal text-balance",
58427
- descriptionClassName
58428
- ),
58429
- children: description
58502
+ actions,
58503
+ actionsSlot,
58504
+ actionsClassName
58430
58505
  }
58431
- )),
58432
- renderActions
58506
+ )
58433
58507
  ] }),
58434
58508
  renderImages
58435
58509
  ] }) })
@@ -58439,6 +58513,9 @@ function HeroWelcomeAsymmetricImages({
58439
58513
  function HeroStartupLaunchCta({
58440
58514
  badge,
58441
58515
  badgeIcon,
58516
+ badgeCard,
58517
+ badgeCardSlot,
58518
+ badgeClassName,
58442
58519
  heading,
58443
58520
  description,
58444
58521
  actions,
@@ -58448,17 +58525,14 @@ function HeroStartupLaunchCta({
58448
58525
  socialProofText,
58449
58526
  imageSrc,
58450
58527
  imageAlt,
58451
- badgeCard,
58452
- badgeCardSlot,
58453
58528
  background,
58454
58529
  pattern,
58455
58530
  patternOpacity,
58456
58531
  patternClassName,
58457
58532
  className,
58458
58533
  containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
58459
- spacing = "pt-28 pb-8 md:pt-32 md:pb-32",
58534
+ spacing = "xl",
58460
58535
  contentClassName,
58461
- badgeClassName,
58462
58536
  headingClassName,
58463
58537
  descriptionClassName,
58464
58538
  actionsClassName,
@@ -58466,34 +58540,6 @@ function HeroStartupLaunchCta({
58466
58540
  imageClassName,
58467
58541
  optixFlowConfig
58468
58542
  }) {
58469
- const renderActions = React22.useMemo(() => {
58470
- if (actionsSlot) return actionsSlot;
58471
- if (!actions || actions.length === 0) return null;
58472
- return actions.map((action, index) => {
58473
- const {
58474
- label,
58475
- icon,
58476
- iconAfter,
58477
- children,
58478
- className: actionClassName,
58479
- ...pressableProps
58480
- } = action;
58481
- return /* @__PURE__ */ jsxRuntime.jsx(
58482
- Pressable,
58483
- {
58484
- asButton: true,
58485
- className: actionClassName,
58486
- ...pressableProps,
58487
- children: children ?? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
58488
- icon,
58489
- label,
58490
- iconAfter
58491
- ] })
58492
- },
58493
- index
58494
- );
58495
- });
58496
- }, [actionsSlot, actions]);
58497
58543
  const renderAvatars = React22.useMemo(() => {
58498
58544
  if (avatarsSlot) return avatarsSlot;
58499
58545
  if (!avatars || avatars.length === 0) return null;
@@ -58540,7 +58586,7 @@ function HeroStartupLaunchCta({
58540
58586
  patternClassName,
58541
58587
  className,
58542
58588
  containerClassName,
58543
- children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid items-center gap-12 lg:grid-cols-2 lg:gap-20", children: [
58589
+ children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "pt-8 md:pt-0", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid items-center gap-12 lg:grid-cols-2 lg:gap-20", children: [
58544
58590
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex flex-col gap-8", contentClassName), children: [
58545
58591
  badge && /* @__PURE__ */ jsxRuntime.jsxs(Badge, { className: cn("px-4", badgeClassName), children: [
58546
58592
  badgeIcon,
@@ -58550,21 +58596,28 @@ function HeroStartupLaunchCta({
58550
58596
  "h1",
58551
58597
  {
58552
58598
  className: cn(
58553
- "text-4xl font-bold tracking-tight md:text-5xl lg:text-6xl leading-snug text-balance",
58599
+ "mb-8 text-4xl font-normal text-balance md:text-7xl",
58554
58600
  headingClassName
58555
58601
  ),
58556
58602
  children: heading
58557
58603
  }
58558
- ) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: headingClassName, children: heading })),
58559
- description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-lg text-balance", descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description })),
58560
- (actionsSlot || actions && actions.length > 0) && /* @__PURE__ */ jsxRuntime.jsx(
58561
- "div",
58604
+ ) : heading),
58605
+ description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
58606
+ "p",
58562
58607
  {
58563
58608
  className: cn(
58564
- "flex flex-col gap-4 sm:flex-row",
58565
- actionsClassName
58609
+ "mb-12 max-w-full md:max-w-[70%] text-lg md:text-xl font-normal text-balance",
58610
+ descriptionClassName
58566
58611
  ),
58567
- children: renderActions
58612
+ children: description
58613
+ }
58614
+ ) : description),
58615
+ /* @__PURE__ */ jsxRuntime.jsx(
58616
+ BlockActions,
58617
+ {
58618
+ actions,
58619
+ actionsSlot,
58620
+ actionsClassName
58568
58621
  }
58569
58622
  ),
58570
58623
  (avatarsSlot || avatars || socialProofText) && /* @__PURE__ */ jsxRuntime.jsxs(
@@ -58607,90 +58660,61 @@ function HeroStartupLaunchCta({
58607
58660
  );
58608
58661
  }
58609
58662
  function HeroEnterpriseSecurity({
58610
- badgeText,
58663
+ badge,
58611
58664
  badgeIcon,
58612
- badgeSlot,
58665
+ badgeClassName,
58613
58666
  heading,
58614
58667
  description,
58615
58668
  actions,
58616
58669
  actionsSlot,
58617
58670
  features,
58618
58671
  featuresSlot,
58619
- logos,
58620
- logosSlot,
58621
58672
  background,
58622
- spacing,
58623
58673
  pattern,
58624
58674
  patternOpacity,
58675
+ patternClassName,
58625
58676
  className,
58626
- containerClassName,
58677
+ containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
58678
+ spacing = "xl",
58627
58679
  contentClassName,
58628
58680
  headingClassName,
58629
58681
  descriptionClassName,
58630
58682
  actionsClassName,
58631
- featuresClassName,
58632
- logosClassName,
58633
- optixFlowConfig
58683
+ featuresClassName
58634
58684
  }) {
58635
- const renderBadge = React22.useMemo(() => {
58636
- if (badgeSlot) return badgeSlot;
58637
- if (!badgeText && !badgeIcon) return null;
58638
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn(
58639
- "inline-flex items-center gap-2 rounded-full border border-border px-4 py-2 text-sm",
58640
- getNestedCardBg(background, "muted"),
58641
- getNestedCardTextColor(background)
58642
- ), children: [
58643
- badgeIcon && /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: badgeIcon, size: 16, className: "text-success" }),
58644
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: badgeText })
58645
- ] });
58646
- }, [badgeSlot, badgeText, badgeIcon]);
58647
- const renderActions = React22.useMemo(() => {
58648
- if (actionsSlot) return actionsSlot;
58649
- if (!actions || actions.length === 0) return null;
58650
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mt-10 flex flex-col items-center gap-4 sm:flex-row sm:justify-center", actionsClassName), children: actions.map((action, index) => {
58651
- const { label, icon, iconAfter, children, className: actionClassName, ...pressableProps } = action;
58652
- return /* @__PURE__ */ jsxRuntime.jsx(
58653
- Pressable,
58654
- {
58655
- asButton: true,
58656
- className: actionClassName,
58657
- ...pressableProps,
58658
- children: children ?? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
58659
- icon,
58660
- label,
58661
- iconAfter
58662
- ] })
58663
- },
58664
- index
58665
- );
58666
- }) });
58667
- }, [actionsSlot, actions, actionsClassName]);
58668
58685
  const renderFeatures = React22.useMemo(() => {
58669
58686
  if (featuresSlot) return featuresSlot;
58670
58687
  if (!features || features.length === 0) return null;
58671
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mt-20 grid gap-8 md:grid-cols-3", featuresClassName), children: features.map((feature, index) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("rounded-2xl border border-border p-6 text-center", getNestedCardBg(background, "card")), children: [
58672
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mx-auto mb-4 flex h-12 w-12 items-center justify-center rounded-full", feature.iconBgClass || `${getAccentColor(background)}/10`), children: feature.icon ?? /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: feature.iconName || "lucide/check", size: 24, className: feature.iconColorClass || getAccentColor(background) }) }),
58673
- /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "mb-2 text-lg font-semibold ", children: feature.title }),
58674
- feature.description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-sm", getTextColor(background, "muted")), children: feature.description })
58675
- ] }, index)) });
58688
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mt-20 grid gap-8 md:grid-cols-3", featuresClassName), children: features.map((feature, index) => /* @__PURE__ */ jsxRuntime.jsxs(
58689
+ Pressable,
58690
+ {
58691
+ href: feature.href,
58692
+ className: cn("rounded-2xl border border-border p-6 text-center"),
58693
+ children: [
58694
+ /* @__PURE__ */ jsxRuntime.jsx(
58695
+ "div",
58696
+ {
58697
+ className: cn(
58698
+ "mx-auto mb-4 flex h-12 w-12 items-center justify-center rounded-full",
58699
+ feature.iconBgClass
58700
+ ),
58701
+ children: feature.icon ?? /* @__PURE__ */ jsxRuntime.jsx(
58702
+ DynamicIcon,
58703
+ {
58704
+ name: feature.iconName || "lucide/check",
58705
+ size: 24,
58706
+ className: feature.iconColorClass
58707
+ }
58708
+ )
58709
+ }
58710
+ ),
58711
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "mb-2 text-lg font-semibold ", children: feature.title }),
58712
+ feature.description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm", children: feature.description })
58713
+ ]
58714
+ },
58715
+ index
58716
+ )) });
58676
58717
  }, [featuresSlot, features, featuresClassName]);
58677
- const renderLogos = React22.useMemo(() => {
58678
- if (logosSlot) return logosSlot;
58679
- if (!logos || logos.length === 0) return null;
58680
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mt-16 flex flex-wrap items-center justify-center gap-8", logosClassName), children: logos.map((logo, index) => {
58681
- const logoSrc = typeof logo.src === "string" ? logo.src : logo.src.light;
58682
- return /* @__PURE__ */ jsxRuntime.jsx(
58683
- img.Img,
58684
- {
58685
- src: logoSrc,
58686
- alt: logo.alt,
58687
- className: cn("h-8 opacity-50 grayscale", logo.className),
58688
- optixFlowConfig
58689
- },
58690
- index
58691
- );
58692
- }) });
58693
- }, [logosSlot, logos, logosClassName, optixFlowConfig]);
58694
58718
  return /* @__PURE__ */ jsxRuntime.jsx(
58695
58719
  Section,
58696
58720
  {
@@ -58698,29 +58722,58 @@ function HeroEnterpriseSecurity({
58698
58722
  spacing,
58699
58723
  pattern,
58700
58724
  patternOpacity,
58725
+ patternClassName,
58701
58726
  className,
58702
- children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("container", containerClassName), children: [
58727
+ containerClassName,
58728
+ children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "pt-8 md:pt-0", children: [
58703
58729
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("mx-auto max-w-4xl text-center", contentClassName), children: [
58704
- renderBadge,
58705
- heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h1", { className: cn("mt-8 text-4xl font-bold tracking-tight md:text-5xl lg:text-6xl", headingClassName), children: heading }) : /* @__PURE__ */ jsxRuntime.jsx("h1", { className: cn("mt-8 text-4xl font-bold tracking-tight md:text-5xl lg:text-6xl", headingClassName), children: heading })),
58706
- description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mt-6 text-lg md:text-xl", getTextColor(background, "muted"), descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description })),
58707
- renderActions
58730
+ badge && /* @__PURE__ */ jsxRuntime.jsxs(Badge, { className: cn("px-4", badgeClassName), children: [
58731
+ badgeIcon,
58732
+ typeof badge === "string" ? /* @__PURE__ */ jsxRuntime.jsx("span", { children: badge }) : badge
58733
+ ] }),
58734
+ heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
58735
+ "h1",
58736
+ {
58737
+ className: cn(
58738
+ "mb-8 text-4xl font-normal text-balance md:text-7xl",
58739
+ headingClassName
58740
+ ),
58741
+ children: heading
58742
+ }
58743
+ ) : heading),
58744
+ description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
58745
+ "p",
58746
+ {
58747
+ className: cn(
58748
+ "mb-12 max-w-full md:max-w-[70%] text-lg md:text-xl font-normal text-balance",
58749
+ descriptionClassName
58750
+ ),
58751
+ children: description
58752
+ }
58753
+ ) : description),
58754
+ /* @__PURE__ */ jsxRuntime.jsx(
58755
+ BlockActions,
58756
+ {
58757
+ actions,
58758
+ actionsSlot,
58759
+ actionsClassName
58760
+ }
58761
+ )
58708
58762
  ] }),
58709
- renderFeatures,
58710
- renderLogos
58763
+ renderFeatures
58711
58764
  ] })
58712
58765
  }
58713
58766
  );
58714
58767
  }
58715
58768
  function HeroCreativeStudioStacked({
58769
+ videoAspectRatio = "horizontal",
58716
58770
  tagline,
58717
58771
  heading,
58718
58772
  description,
58719
- primaryAction,
58720
- videoButtonLabel = "How it works?",
58721
- videoUrl = "https://www.youtube.com/embed/your-video-id",
58722
- videoDialogTitle = "Presentation Video",
58723
- actionsSlot,
58773
+ videoAction,
58774
+ actions,
58775
+ onVideoClick,
58776
+ videoDialog,
58724
58777
  images,
58725
58778
  imagesSlot,
58726
58779
  background,
@@ -58738,100 +58791,85 @@ function HeroCreativeStudioStacked({
58738
58791
  optixFlowConfig
58739
58792
  }) {
58740
58793
  const [isVideoOpen, setIsVideoOpen] = React22.useState(false);
58741
- const renderActions = React22.useMemo(() => {
58742
- if (actionsSlot) return actionsSlot;
58743
- if (!primaryAction) return null;
58744
- const { label, icon, iconAfter, children, className: actionClassName, ...pressableProps } = primaryAction;
58745
- return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
58746
- /* @__PURE__ */ jsxRuntime.jsx(
58747
- Pressable,
58748
- {
58749
- asButton: true,
58750
- className: actionClassName,
58751
- ...pressableProps,
58752
- children: children ?? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
58753
- icon,
58754
- label,
58755
- iconAfter
58756
- ] })
58757
- }
58758
- ),
58759
- /* @__PURE__ */ jsxRuntime.jsxs(
58760
- Pressable,
58761
- {
58762
- href: "#",
58763
- onClick: () => setIsVideoOpen(true),
58764
- asButton: true,
58765
- variant: "ghost",
58766
- className: "flex h-fit w-fit flex-nowrap items-center gap-2 rounded-sm bg-transparent px-5 py-3.5 text-sm font-medium tracking-wider text-nowrap uppercase",
58767
- children: [
58768
- /* @__PURE__ */ jsxRuntime.jsx(
58769
- DynamicIcon,
58770
- {
58771
- name: "lucide/play",
58772
- size: 12,
58773
- className: "fill-neutral-950"
58774
- }
58775
- ),
58776
- /* @__PURE__ */ jsxRuntime.jsx("p", { children: videoButtonLabel })
58777
- ]
58778
- }
58779
- )
58780
- ] });
58781
- }, [actionsSlot, primaryAction, videoButtonLabel, setIsVideoOpen]);
58794
+ const handleVideoClick = () => {
58795
+ if (onVideoClick) {
58796
+ onVideoClick();
58797
+ } else {
58798
+ setIsVideoOpen(true);
58799
+ }
58800
+ };
58782
58801
  const renderImages = React22.useMemo(() => {
58783
58802
  if (imagesSlot) return imagesSlot;
58784
58803
  if (!images || images.length === 0) return null;
58785
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("relative mx-auto aspect-[0.789340102/1] max-w-100", imagesClassName), children: [
58786
- images[0] && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute bottom-0 left-0 z-30 w-[63%]", children: /* @__PURE__ */ jsxRuntime.jsx(
58787
- AspectRatio,
58788
- {
58789
- ratio: 0.724137931 / 1,
58790
- className: "overflow-hidden",
58791
- children: /* @__PURE__ */ jsxRuntime.jsx(
58792
- img.Img,
58804
+ const sharedImgWrapperClassName = "overflow-hidden rounded-xl shadow-xl";
58805
+ return /* @__PURE__ */ jsxRuntime.jsxs(
58806
+ "div",
58807
+ {
58808
+ className: cn(
58809
+ "relative mx-auto aspect-[0.789340102/1] max-w-100",
58810
+ imagesClassName
58811
+ ),
58812
+ children: [
58813
+ images[0] && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute bottom-0 left-0 z-30 w-[63%]", children: /* @__PURE__ */ jsxRuntime.jsx(
58814
+ AspectRatio,
58793
58815
  {
58794
- src: images[0].src,
58795
- alt: images[0].alt,
58796
- className: cn("size-full object-cover object-center", images[0].className),
58797
- optixFlowConfig
58816
+ ratio: 0.724137931 / 1,
58817
+ className: sharedImgWrapperClassName,
58818
+ children: /* @__PURE__ */ jsxRuntime.jsx(
58819
+ img.Img,
58820
+ {
58821
+ src: images[0].src,
58822
+ alt: images[0].alt,
58823
+ className: cn(
58824
+ "size-full object-cover object-center",
58825
+ images[0].className
58826
+ ),
58827
+ optixFlowConfig
58828
+ }
58829
+ )
58798
58830
  }
58799
- )
58800
- }
58801
- ) }),
58802
- images[1] && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute top-1/2 left-1/2 z-20 w-[63%] -translate-x-1/2 -translate-y-1/2", children: /* @__PURE__ */ jsxRuntime.jsx(
58803
- AspectRatio,
58804
- {
58805
- ratio: 0.724137931 / 1,
58806
- className: "overflow-hidden",
58807
- children: /* @__PURE__ */ jsxRuntime.jsx(
58808
- img.Img,
58831
+ ) }),
58832
+ images[1] && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute top-1/2 left-1/2 z-20 w-[63%] -translate-x-1/2 -translate-y-1/2", children: /* @__PURE__ */ jsxRuntime.jsx(
58833
+ AspectRatio,
58809
58834
  {
58810
- src: images[1].src,
58811
- alt: images[1].alt,
58812
- className: cn("size-full object-cover object-center", images[1].className),
58813
- optixFlowConfig
58835
+ ratio: 0.724137931 / 1,
58836
+ className: sharedImgWrapperClassName,
58837
+ children: /* @__PURE__ */ jsxRuntime.jsx(
58838
+ img.Img,
58839
+ {
58840
+ src: images[1].src,
58841
+ alt: images[1].alt,
58842
+ className: cn(
58843
+ "size-full object-cover object-center",
58844
+ images[1].className
58845
+ ),
58846
+ optixFlowConfig
58847
+ }
58848
+ )
58814
58849
  }
58815
- )
58816
- }
58817
- ) }),
58818
- images[2] && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute top-0 right-0 z-10 w-[63%]", children: /* @__PURE__ */ jsxRuntime.jsx(
58819
- AspectRatio,
58820
- {
58821
- ratio: 0.724137931 / 1,
58822
- className: "overflow-hidden",
58823
- children: /* @__PURE__ */ jsxRuntime.jsx(
58824
- img.Img,
58850
+ ) }),
58851
+ images[2] && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute top-0 right-0 z-10 w-[63%]", children: /* @__PURE__ */ jsxRuntime.jsx(
58852
+ AspectRatio,
58825
58853
  {
58826
- src: images[2].src,
58827
- alt: images[2].alt,
58828
- className: cn("size-full object-cover object-center", images[2].className),
58829
- optixFlowConfig
58854
+ ratio: 0.724137931 / 1,
58855
+ className: sharedImgWrapperClassName,
58856
+ children: /* @__PURE__ */ jsxRuntime.jsx(
58857
+ img.Img,
58858
+ {
58859
+ src: images[2].src,
58860
+ alt: images[2].alt,
58861
+ className: cn(
58862
+ "size-full object-cover object-center",
58863
+ images[2].className
58864
+ ),
58865
+ optixFlowConfig
58866
+ }
58867
+ )
58830
58868
  }
58831
- )
58832
- }
58833
- ) })
58834
- ] });
58869
+ ) })
58870
+ ]
58871
+ }
58872
+ );
58835
58873
  }, [imagesSlot, images, imagesClassName, optixFlowConfig]);
58836
58874
  return /* @__PURE__ */ jsxRuntime.jsxs(React22.Fragment, { children: [
58837
58875
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -58844,106 +58882,117 @@ function HeroCreativeStudioStacked({
58844
58882
  className: cn(className),
58845
58883
  children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("container", containerClassName), children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 items-center gap-10 lg:grid-cols-2", children: [
58846
58884
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex flex-col gap-6", contentClassName), children: [
58847
- tagline && (typeof tagline === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-sm font-medium tracking-wider uppercase", getTextColor(background, "muted"), taglineClassName), children: tagline }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: taglineClassName, children: tagline })),
58885
+ tagline && (typeof tagline === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
58886
+ "p",
58887
+ {
58888
+ className: cn(
58889
+ "text-sm font-medium tracking-wider uppercase",
58890
+ taglineClassName
58891
+ ),
58892
+ children: tagline
58893
+ }
58894
+ ) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: taglineClassName, children: tagline })),
58848
58895
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex max-w-160 flex-col gap-6", children: [
58849
- heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h1", { className: cn("text-4xl leading-tight font-medium md:text-5xl xl:text-6xl", headingClassName), children: heading }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: headingClassName, children: heading })),
58850
- description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-xl text-balance", getTextColor(background, "muted"), descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description }))
58896
+ heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
58897
+ "h1",
58898
+ {
58899
+ className: cn(
58900
+ "max-w-[920px] text-center text-4xl leading-tight font-semibold md:text-6xl lg:text-7xl text-balance",
58901
+ headingClassName
58902
+ ),
58903
+ children: heading
58904
+ }
58905
+ ) : heading),
58906
+ description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
58907
+ "p",
58908
+ {
58909
+ className: cn(
58910
+ "max-w-[750px] text-center text-base leading-relaxed font-normal md:text-xl text-balance",
58911
+ descriptionClassName
58912
+ ),
58913
+ children: description
58914
+ }
58915
+ ) : description)
58851
58916
  ] }),
58852
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex flex-wrap gap-4 py-4", actionsClassName), children: renderActions })
58917
+ /* @__PURE__ */ jsxRuntime.jsxs(
58918
+ "div",
58919
+ {
58920
+ className: cn(
58921
+ "flex flex-col md:flex-row flex-wrap gap-4",
58922
+ actionsClassName
58923
+ ),
58924
+ children: [
58925
+ videoAction && videoDialog?.videoUrl ? /* @__PURE__ */ jsxRuntime.jsx(
58926
+ ActionComponent,
58927
+ {
58928
+ action: {
58929
+ ...videoAction,
58930
+ onClick: handleVideoClick
58931
+ }
58932
+ }
58933
+ ) : null,
58934
+ actions?.map((action, index) => /* @__PURE__ */ jsxRuntime.jsx(ActionComponent, { action }, index))
58935
+ ]
58936
+ }
58937
+ )
58853
58938
  ] }),
58854
58939
  /* @__PURE__ */ jsxRuntime.jsx("div", { children: renderImages })
58855
58940
  ] }) })
58856
58941
  }
58857
58942
  ),
58858
- /* @__PURE__ */ jsxRuntime.jsx(Dialog, { open: isVideoOpen, onOpenChange: setIsVideoOpen, children: /* @__PURE__ */ jsxRuntime.jsxs(DialogContent, { className: "sm:max-w-[800px]", children: [
58859
- /* @__PURE__ */ jsxRuntime.jsx(DialogHeader, { children: /* @__PURE__ */ jsxRuntime.jsx(DialogTitle, { children: videoDialogTitle }) }),
58860
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "aspect-video", children: /* @__PURE__ */ jsxRuntime.jsx(
58861
- "iframe",
58862
- {
58863
- className: "h-full w-full",
58864
- src: videoUrl,
58865
- title: videoDialogTitle,
58866
- allow: "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",
58867
- allowFullScreen: true
58868
- }
58869
- ) })
58870
- ] }) })
58871
- ] });
58872
- }
58873
- function HeroDigitalAgencyFullscreen({
58874
- heading,
58875
- description,
58876
- actions,
58877
- actionsSlot,
58878
- footerLabel,
58879
- footerSublabel,
58880
- footerAction,
58881
- footerSlot,
58882
- backgroundImage,
58883
- background,
58884
- spacing,
58885
- pattern,
58886
- patternOpacity,
58887
- className,
58888
- containerClassName,
58889
- contentClassName,
58890
- headingClassName,
58891
- descriptionClassName,
58892
- actionsClassName,
58893
- footerClassName
58894
- }) {
58895
- const renderActions = React22.useMemo(() => {
58896
- if (actionsSlot) return actionsSlot;
58897
- if (!actions || actions.length === 0) return null;
58898
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mt-8 flex flex-wrap items-center justify-center gap-4", actionsClassName), children: actions.map((action, index) => {
58899
- const { label, icon, iconAfter, children, className: actionClassName, ...pressableProps } = action;
58900
- return /* @__PURE__ */ jsxRuntime.jsx(
58901
- Pressable,
58902
- {
58903
- asButton: true,
58904
- className: actionClassName,
58905
- ...pressableProps,
58906
- children: children ?? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
58907
- icon,
58908
- label,
58909
- iconAfter
58910
- ] })
58911
- },
58912
- index
58913
- );
58914
- }) });
58915
- }, [actionsSlot, actions, actionsClassName]);
58916
- const renderFooter = React22.useMemo(() => {
58917
- if (footerSlot) return footerSlot;
58918
- if (!footerAction) return null;
58919
- const { className: footerActionClassName, ...footerActionProps } = footerAction;
58920
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex items-center justify-between gap-4 rounded-lg bg-foreground/20 px-6 py-4 backdrop-blur-sm", footerClassName), children: [
58921
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
58922
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("h-8 w-1", getAccentColor(background)) }),
58923
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("text-sm font-medium", getTextColor(background, "muted")), children: [
58924
- footerLabel && (typeof footerLabel === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: getAccentColor(background), children: footerLabel }) : footerLabel),
58925
- footerSublabel && (typeof footerSublabel === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { children: footerSublabel }) : footerSublabel)
58926
- ] })
58927
- ] }),
58928
- /* @__PURE__ */ jsxRuntime.jsx(
58929
- Pressable,
58930
- {
58931
- asButton: true,
58932
- className: footerActionClassName,
58933
- ...footerActionProps,
58934
- children: /* @__PURE__ */ jsxRuntime.jsx(
58935
- DynamicIcon,
58943
+ /* @__PURE__ */ jsxRuntime.jsx(Dialog, { open: isVideoOpen, onOpenChange: setIsVideoOpen, children: /* @__PURE__ */ jsxRuntime.jsxs(
58944
+ DialogContent,
58945
+ {
58946
+ className: cn(
58947
+ videoAspectRatio === "vertical" ? "sm:max-w-100" : "sm:max-w-200"
58948
+ ),
58949
+ children: [
58950
+ /* @__PURE__ */ jsxRuntime.jsx(DialogHeader, { children: /* @__PURE__ */ jsxRuntime.jsx(DialogTitle, { children: videoDialog?.title }) }),
58951
+ /* @__PURE__ */ jsxRuntime.jsx(
58952
+ "div",
58936
58953
  {
58937
- name: "lucide/arrow-down",
58938
- size: 20,
58939
- className: "m-auto stroke-primary"
58954
+ className: videoAspectRatio === "vertical" ? "aspect-9/16" : "aspect-video",
58955
+ children: /* @__PURE__ */ jsxRuntime.jsx("video", { controls: true, autoPlay: true, className: "h-full w-full rounded-lg", children: /* @__PURE__ */ jsxRuntime.jsx("source", { src: videoDialog?.videoUrl, type: "video/mp4" }) })
58940
58956
  }
58941
58957
  )
58942
- }
58943
- )
58944
- ] });
58945
- }, [footerSlot, footerAction, footerLabel, footerSublabel, footerClassName]);
58946
- return /* @__PURE__ */ jsxRuntime.jsx(
58958
+ ]
58959
+ }
58960
+ ) })
58961
+ ] });
58962
+ }
58963
+ function HeroDigitalAgencyFullscreen({
58964
+ heading,
58965
+ description,
58966
+ actions,
58967
+ actionsSlot,
58968
+ backgroundImage,
58969
+ background,
58970
+ spacing = "none",
58971
+ pattern,
58972
+ patternOpacity,
58973
+ className,
58974
+ containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
58975
+ contentClassName,
58976
+ headingClassName,
58977
+ descriptionClassName,
58978
+ actionsClassName,
58979
+ optixFlowConfig
58980
+ }) {
58981
+ const [isImageLoaded, setIsImageLoaded] = React22.useState(false);
58982
+ const bgImageRef = React22.useRef(null);
58983
+ React22.useEffect(() => {
58984
+ if (!backgroundImage || !bgImageRef.current) return;
58985
+ const imgEl = bgImageRef.current.querySelector("img");
58986
+ if (!imgEl) return;
58987
+ if (imgEl.complete && imgEl.naturalWidth > 0) {
58988
+ setIsImageLoaded(true);
58989
+ return;
58990
+ }
58991
+ const handleLoad = () => setIsImageLoaded(true);
58992
+ imgEl.addEventListener("load", handleLoad);
58993
+ return () => imgEl.removeEventListener("load", handleLoad);
58994
+ }, [backgroundImage]);
58995
+ return /* @__PURE__ */ jsxRuntime.jsxs(
58947
58996
  Section,
58948
58997
  {
58949
58998
  background,
@@ -58951,18 +59000,71 @@ function HeroDigitalAgencyFullscreen({
58951
59000
  pattern,
58952
59001
  patternOpacity,
58953
59002
  className: cn(
58954
- "font-dm_sans dark relative h-svh max-h-[1400px] min-h-[600px] w-full bg-cover bg-center bg-no-repeat after:absolute after:inset-0 after:block after:size-full after:bg-zinc-950/50 after:content-['']",
59003
+ "relative flex h-full min-h-screen w-screen items-center justify-center overflow-hidden pb-0 pt-0 md:pt-0 px-0",
58955
59004
  className
58956
59005
  ),
58957
- style: { backgroundImage: backgroundImage ? `url('${backgroundImage}')` : void 0 },
58958
- children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("relative z-10 mx-auto flex size-full max-w-500 px-4 py-9", containerClassName), children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex w-full flex-col justify-between gap-10", children: [
58959
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("mx-auto flex max-w-125 flex-1 flex-col items-center justify-center gap-7 sm:max-w-150 md:max-w-200", contentClassName), children: [
58960
- heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h1", { className: cn("text-center text-4xl leading-tight font-medium sm:text-5xl md:text-6xl", headingClassName), children: heading }) : /* @__PURE__ */ jsxRuntime.jsx("h1", { className: cn("text-center text-4xl leading-tight font-medium sm:text-5xl md:text-6xl", headingClassName), children: heading })),
58961
- description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-center text-lg text-balance md:text-2xl", descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description })),
58962
- renderActions
58963
- ] }),
58964
- renderFooter
58965
- ] }) })
59006
+ containerClassName,
59007
+ children: [
59008
+ backgroundImage && /* @__PURE__ */ jsxRuntime.jsx(
59009
+ "div",
59010
+ {
59011
+ ref: bgImageRef,
59012
+ className: cn(
59013
+ "absolute inset-0 transition-[filter] duration-1000 ease-out",
59014
+ isImageLoaded ? "blur-0" : "blur-xl"
59015
+ ),
59016
+ children: /* @__PURE__ */ jsxRuntime.jsx(
59017
+ img.Img,
59018
+ {
59019
+ src: backgroundImage,
59020
+ alt: "",
59021
+ className: "h-full w-full brightness-50 object-cover object-center",
59022
+ eager: true,
59023
+ optixFlowConfig
59024
+ }
59025
+ )
59026
+ }
59027
+ ),
59028
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex w-full flex-col justify-between gap-10", children: /* @__PURE__ */ jsxRuntime.jsxs(
59029
+ "div",
59030
+ {
59031
+ className: cn(
59032
+ "mx-auto flex max-w-125 flex-1 flex-col items-center justify-center gap-7 sm:max-w-150 md:max-w-200",
59033
+ contentClassName
59034
+ ),
59035
+ children: [
59036
+ heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
59037
+ "h1",
59038
+ {
59039
+ className: cn(
59040
+ "mb-8 text-4xl font-normal text-balance md:text-7xl",
59041
+ headingClassName
59042
+ ),
59043
+ children: heading
59044
+ }
59045
+ ) : heading),
59046
+ description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
59047
+ "p",
59048
+ {
59049
+ className: cn(
59050
+ "mb-12 max-w-full md:max-w-[70%] text-lg md:text-xl font-normal text-balance",
59051
+ descriptionClassName
59052
+ ),
59053
+ children: description
59054
+ }
59055
+ ) : description),
59056
+ /* @__PURE__ */ jsxRuntime.jsx(
59057
+ BlockActions,
59058
+ {
59059
+ actions,
59060
+ actionsSlot,
59061
+ actionsClassName
59062
+ }
59063
+ )
59064
+ ]
59065
+ }
59066
+ ) }) })
59067
+ ]
58966
59068
  }
58967
59069
  );
58968
59070
  }
@@ -58980,7 +59082,7 @@ function HeroCustomerSupportLayered({
58980
59082
  actionsSlot,
58981
59083
  actionsClassName,
58982
59084
  containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
58983
- spacing = "py-32 md:py-32",
59085
+ spacing = "xl",
58984
59086
  contentClassName,
58985
59087
  taglineClassName,
58986
59088
  headingClassName,
@@ -59031,34 +59133,6 @@ function HeroCustomerSupportLayered({
59031
59133
  }
59032
59134
  );
59033
59135
  }, [imagesSlot, images, imagesClassName, optixFlowConfig]);
59034
- const renderActions = React22.useMemo(() => {
59035
- if (actionsSlot) return actionsSlot;
59036
- if (!actions || actions.length === 0) return null;
59037
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex flex-col md:flex-row gap-4", actionsClassName), children: actions.map((action, index) => {
59038
- const {
59039
- label,
59040
- icon,
59041
- iconAfter,
59042
- children,
59043
- className: actionClassName,
59044
- ...pressableProps
59045
- } = action;
59046
- return /* @__PURE__ */ jsxRuntime.jsx(
59047
- Pressable,
59048
- {
59049
- asButton: true,
59050
- className: actionClassName,
59051
- ...pressableProps,
59052
- children: children ?? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
59053
- icon,
59054
- label,
59055
- iconAfter
59056
- ] })
59057
- },
59058
- index
59059
- );
59060
- }) });
59061
- }, [actionsSlot, actions, actionsClassName]);
59062
59136
  return /* @__PURE__ */ jsxRuntime.jsx(
59063
59137
  Section,
59064
59138
  {
@@ -59069,43 +59143,53 @@ function HeroCustomerSupportLayered({
59069
59143
  patternClassName,
59070
59144
  className,
59071
59145
  containerClassName,
59072
- children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 items-center gap-8 md:gap-20 md:grid-cols-2", children: [
59146
+ children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "pt-8 md:pt-0", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 items-center gap-8 md:gap-20 md:grid-cols-2", children: [
59073
59147
  /* @__PURE__ */ jsxRuntime.jsxs(
59074
59148
  "div",
59075
59149
  {
59076
59150
  className: cn(
59077
- "flex w-full max-w-125 flex-col gap-9",
59151
+ "flex w-full max-w-125 flex-col gap-4 md:gap-6",
59078
59152
  contentClassName
59079
59153
  ),
59080
59154
  children: [
59081
- tagline && (typeof tagline === "string" ? /* @__PURE__ */ jsxRuntime.jsx(Badge, { children: tagline }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: taglineClassName, children: tagline })),
59082
- heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
59083
- "h1",
59155
+ tagline && (typeof tagline === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
59156
+ "div",
59084
59157
  {
59085
59158
  className: cn(
59086
- "text-5xl md:text-6xl lg:text-7xl font-semibold text-balance leading-snug",
59087
- headingClassName
59159
+ "font-light tracking-widest text-sm md:text-md uppercase",
59160
+ taglineClassName
59088
59161
  ),
59089
- children: heading
59162
+ children: tagline
59090
59163
  }
59091
- ) : /* @__PURE__ */ jsxRuntime.jsx(
59164
+ ) : tagline),
59165
+ heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
59092
59166
  "h1",
59093
59167
  {
59094
59168
  className: cn(
59095
- "text-2xl md:text-3xl lg:text-4xl font-semibold text-balance",
59169
+ "text-4xl font-semibold text-balance md:text-7xl",
59096
59170
  headingClassName
59097
59171
  ),
59098
59172
  children: heading
59099
59173
  }
59100
- )),
59174
+ ) : heading),
59101
59175
  description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
59102
59176
  "p",
59103
59177
  {
59104
- className: cn("leading-normal text-lg", descriptionClassName),
59178
+ className: cn(
59179
+ "max-w-full md:max-w-[70%] text-lg md:text-xl font-normal text-balance",
59180
+ descriptionClassName
59181
+ ),
59105
59182
  children: description
59106
59183
  }
59107
- ) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description })),
59108
- renderActions
59184
+ ) : description),
59185
+ /* @__PURE__ */ jsxRuntime.jsx(
59186
+ BlockActions,
59187
+ {
59188
+ actions,
59189
+ actionsSlot,
59190
+ actionsClassName
59191
+ }
59192
+ )
59109
59193
  ]
59110
59194
  }
59111
59195
  ),
@@ -59115,14 +59199,18 @@ function HeroCustomerSupportLayered({
59115
59199
  );
59116
59200
  }
59117
59201
  function HeroSharedInboxLayered({
59118
- subtitle,
59202
+ eyebrow,
59203
+ eyebrowClassName,
59119
59204
  heading,
59120
59205
  description,
59121
59206
  layeredImages,
59122
59207
  layeredImagesSlot,
59123
59208
  background,
59209
+ actions,
59210
+ actionsSlot,
59211
+ actionsClassName,
59124
59212
  containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
59125
- spacing = "py-12 md:py-32",
59213
+ spacing = "xl",
59126
59214
  pattern,
59127
59215
  patternOpacity,
59128
59216
  className,
@@ -59182,7 +59270,7 @@ function HeroSharedInboxLayered({
59182
59270
  patternClassName,
59183
59271
  className,
59184
59272
  containerClassName,
59185
- children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 items-center gap-4 md:gap-20 md:grid-cols-2", children: [
59273
+ children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "pt-8 md:pt-0", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 items-center gap-4 md:gap-20 md:grid-cols-2", children: [
59186
59274
  /* @__PURE__ */ jsxRuntime.jsxs(
59187
59275
  "div",
59188
59276
  {
@@ -59191,33 +59279,44 @@ function HeroSharedInboxLayered({
59191
59279
  contentClassName
59192
59280
  ),
59193
59281
  children: [
59194
- subtitle && (typeof subtitle === "string" ? /* @__PURE__ */ jsxRuntime.jsx(Badge, { children: subtitle }) : subtitle),
59195
- heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
59196
- "h1",
59282
+ eyebrow && (typeof eyebrow === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
59283
+ "div",
59197
59284
  {
59198
59285
  className: cn(
59199
- "text-5xl md:text-6xl lg:text-7xl font-semibold text-balance leading-snug",
59200
- headingClassName
59286
+ "font-light tracking-widest text-sm md:text-md uppercase",
59287
+ eyebrowClassName
59201
59288
  ),
59202
- children: heading
59289
+ children: eyebrow
59203
59290
  }
59204
- ) : /* @__PURE__ */ jsxRuntime.jsx(
59291
+ ) : eyebrow),
59292
+ heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
59205
59293
  "h1",
59206
59294
  {
59207
59295
  className: cn(
59208
- "text-2xl md:text-3xl lg:text-4xl font-semibold text-balance",
59296
+ "text-4xl font-semibold text-balance md:text-7xl",
59209
59297
  headingClassName
59210
59298
  ),
59211
59299
  children: heading
59212
59300
  }
59213
- )),
59301
+ ) : heading),
59214
59302
  description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
59215
59303
  "p",
59216
59304
  {
59217
- className: cn("leading-normal text-lg", descriptionClassName),
59305
+ className: cn(
59306
+ "max-w-full md:max-w-[70%] text-lg md:text-xl font-normal text-balance",
59307
+ descriptionClassName
59308
+ ),
59218
59309
  children: description
59219
59310
  }
59220
- ) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description }))
59311
+ ) : description),
59312
+ /* @__PURE__ */ jsxRuntime.jsx(
59313
+ BlockActions,
59314
+ {
59315
+ actions,
59316
+ actionsSlot,
59317
+ actionsClassName
59318
+ }
59319
+ )
59221
59320
  ]
59222
59321
  }
59223
59322
  ),
@@ -59247,34 +59346,6 @@ function HeroConversationIntelligence({
59247
59346
  imageClassName,
59248
59347
  optixFlowConfig
59249
59348
  }) {
59250
- const renderActions = React22.useMemo(() => {
59251
- if (actionsSlot) return actionsSlot;
59252
- if (!actions || actions.length === 0) return null;
59253
- return actions.map((action, index) => {
59254
- const {
59255
- label,
59256
- icon,
59257
- iconAfter,
59258
- children,
59259
- className: actionClassName,
59260
- ...pressableProps
59261
- } = action;
59262
- return /* @__PURE__ */ jsxRuntime.jsx(
59263
- Pressable,
59264
- {
59265
- asButton: true,
59266
- className: actionClassName,
59267
- ...pressableProps,
59268
- children: children ?? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
59269
- icon,
59270
- label,
59271
- iconAfter
59272
- ] })
59273
- },
59274
- index
59275
- );
59276
- });
59277
- }, [actionsSlot, actions]);
59278
59349
  const renderImage = React22.useMemo(() => {
59279
59350
  if (imageSlot) return imageSlot;
59280
59351
  if (!image) return null;
@@ -59339,14 +59410,12 @@ function HeroConversationIntelligence({
59339
59410
  children: description
59340
59411
  }
59341
59412
  ) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description })),
59342
- (actionsSlot || actions && actions.length > 0) && /* @__PURE__ */ jsxRuntime.jsx(
59343
- "div",
59413
+ /* @__PURE__ */ jsxRuntime.jsx(
59414
+ BlockActions,
59344
59415
  {
59345
- className: cn(
59346
- "flex flex-col md:flex-row items-center justify-center gap-4",
59347
- actionsClassName
59348
- ),
59349
- children: renderActions
59416
+ actions,
59417
+ actionsSlot,
59418
+ actionsClassName
59350
59419
  }
59351
59420
  )
59352
59421
  ]
@@ -59357,9 +59426,20 @@ function HeroConversationIntelligence({
59357
59426
  }
59358
59427
  );
59359
59428
  }
59429
+ var fadeVariants2 = {
59430
+ initial: { opacity: 0 },
59431
+ animate: {
59432
+ opacity: 1,
59433
+ transition: { duration: 0.8, ease: [0.4, 0, 0.2, 1] }
59434
+ },
59435
+ exit: {
59436
+ opacity: 0,
59437
+ transition: { duration: 0.8, ease: [0.4, 0, 0.2, 1] }
59438
+ }
59439
+ };
59360
59440
  function HeroBusinessCarouselDots({
59361
59441
  badge,
59362
- badgeVariant = "outline",
59442
+ badgeVariant,
59363
59443
  heading,
59364
59444
  description,
59365
59445
  actions,
@@ -59370,6 +59450,7 @@ function HeroBusinessCarouselDots({
59370
59450
  spacing,
59371
59451
  pattern,
59372
59452
  patternOpacity,
59453
+ patternClassName,
59373
59454
  className,
59374
59455
  containerClassName,
59375
59456
  contentClassName,
@@ -59380,40 +59461,22 @@ function HeroBusinessCarouselDots({
59380
59461
  carouselClassName,
59381
59462
  optixFlowConfig
59382
59463
  }) {
59383
- const [api, setApi] = React22.useState();
59384
- const [current, setCurrent] = React22.useState(0);
59464
+ const [currentIndex, setCurrentIndex] = React22.useState(0);
59465
+ const timerRef = React22.useRef(null);
59466
+ const imageCount = carouselImages?.length ?? 0;
59467
+ const startTimer = React22.useCallback(() => {
59468
+ if (imageCount <= 1) return;
59469
+ timerRef.current = setInterval(() => {
59470
+ setCurrentIndex((prev) => (prev + 1) % imageCount);
59471
+ }, 4e3);
59472
+ }, [imageCount]);
59385
59473
  React22.useEffect(() => {
59386
- if (!api) return;
59387
- const updateCurrent = () => {
59388
- setCurrent(api.selectedScrollSnap() + 1);
59389
- };
59390
- updateCurrent();
59391
- api.on("select", updateCurrent);
59474
+ startTimer();
59392
59475
  return () => {
59393
- api.off("select", updateCurrent);
59476
+ if (timerRef.current) clearInterval(timerRef.current);
59394
59477
  };
59395
- }, [api]);
59396
- const renderActions = React22.useMemo(() => {
59397
- if (actionsSlot) return actionsSlot;
59398
- if (!actions || actions.length === 0) return null;
59399
- return actions.map((action, index) => {
59400
- const { label, icon, iconAfter, children, className: actionClassName, ...pressableProps } = action;
59401
- return /* @__PURE__ */ jsxRuntime.jsx(
59402
- Pressable,
59403
- {
59404
- asButton: true,
59405
- className: actionClassName,
59406
- ...pressableProps,
59407
- children: children ?? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
59408
- icon,
59409
- label,
59410
- iconAfter
59411
- ] })
59412
- },
59413
- index
59414
- );
59415
- });
59416
- }, [actionsSlot, actions]);
59478
+ }, [startTimer]);
59479
+ const activeImage = carouselImages && carouselImages.length > 0 ? carouselImages[currentIndex] : null;
59417
59480
  return /* @__PURE__ */ jsxRuntime.jsx(
59418
59481
  Section,
59419
59482
  {
@@ -59421,42 +59484,79 @@ function HeroBusinessCarouselDots({
59421
59484
  spacing,
59422
59485
  pattern,
59423
59486
  patternOpacity,
59487
+ patternClassName,
59424
59488
  className: cn("overflow-hidden", className),
59425
- children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("container", containerClassName), children: [
59489
+ containerClassName,
59490
+ children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "pt-8 md:pt-0", children: [
59426
59491
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("mx-auto max-w-5xl text-center", contentClassName), children: [
59427
59492
  badge && /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: badgeVariant, className: badgeClassName, children: badge }),
59428
- heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h1", { className: cn("mt-6 text-4xl font-bold md:text-6xl", headingClassName), children: heading }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: headingClassName, children: heading })),
59429
- description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mt-5 text-lg md:text-xl lg:px-32", getTextColor(background, "muted"), descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description })),
59430
- (actionsSlot || actions && actions.length > 0) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mt-8 flex justify-center gap-2", actionsClassName), children: renderActions })
59493
+ heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
59494
+ "h1",
59495
+ {
59496
+ className: cn(
59497
+ "mt-6 text-4xl font-bold md:text-6xl text-balance",
59498
+ headingClassName
59499
+ ),
59500
+ children: heading
59501
+ }
59502
+ ) : heading),
59503
+ description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
59504
+ "p",
59505
+ {
59506
+ className: cn(
59507
+ "mt-5 text-lg md:text-xl lg:px-32 text-balance",
59508
+ descriptionClassName
59509
+ ),
59510
+ children: description
59511
+ }
59512
+ ) : description),
59513
+ /* @__PURE__ */ jsxRuntime.jsx(
59514
+ BlockActions,
59515
+ {
59516
+ actions,
59517
+ actionsSlot,
59518
+ actionsClassName
59519
+ }
59520
+ )
59431
59521
  ] }),
59432
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("relative mx-10 mt-16 hidden md:block", carouselClassName), children: [
59433
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute top-0 -right-20 -left-20 z-10 h-px bg-[linear-gradient(to_right,transparent,hsl(var(--border))_4%,hsl(var(--border))_96%,transparent)]" }),
59434
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute bottom-0 -right-20 -left-20 z-10 h-px bg-[linear-gradient(to_right,transparent,hsl(var(--border))_4%,hsl(var(--border))_96%,transparent)]" }),
59435
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute -top-20 left-0 z-10 h-[calc(100%+160px)] w-px bg-[linear-gradient(to_bottom,transparent,hsl(var(--border))_4%,hsl(var(--border))_96%,transparent)]" }),
59436
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute -top-20 right-0 z-10 h-[calc(100%+160px)] w-px bg-[linear-gradient(to_bottom,transparent,hsl(var(--border))_4%,hsl(var(--border))_96%,transparent)]" }),
59437
- carouselSlot ? carouselSlot : carouselImages && carouselImages.length > 0 ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
59438
- /* @__PURE__ */ jsxRuntime.jsx(Carousel, { setApi, className: "w-full", children: /* @__PURE__ */ jsxRuntime.jsx(CarouselContent, { children: carouselImages.map((image, index) => /* @__PURE__ */ jsxRuntime.jsx(CarouselItem, { children: /* @__PURE__ */ jsxRuntime.jsx(
59439
- img.Img,
59440
- {
59441
- src: image.src,
59442
- alt: image.alt,
59443
- className: cn("aspect-video w-full rounded-lg object-cover", image.className),
59444
- optixFlowConfig
59445
- }
59446
- ) }, index)) }) }),
59447
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-4 flex justify-center gap-2", children: carouselImages.map((_, index) => /* @__PURE__ */ jsxRuntime.jsx(
59448
- "button",
59449
- {
59450
- onClick: () => api?.scrollTo(index),
59451
- className: cn(
59452
- "h-2 w-2 rounded-full transition-colors",
59453
- current === index + 1 ? "bg-primary" : getNestedCardBg(background)
59454
- )
59455
- },
59456
- index
59457
- )) })
59458
- ] }) : null
59459
- ] })
59522
+ /* @__PURE__ */ jsxRuntime.jsxs(
59523
+ "div",
59524
+ {
59525
+ className: cn(
59526
+ "relative mx-4 mt-10 md:mx-10 md:mt-16",
59527
+ carouselClassName
59528
+ ),
59529
+ children: [
59530
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute top-0 -right-4 -left-4 z-10 h-px bg-[linear-gradient(to_right,transparent,hsl(var(--border))_4%,hsl(var(--border))_96%,transparent)] md:-right-20 md:-left-20" }),
59531
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute bottom-0 -right-4 -left-4 z-10 h-px bg-[linear-gradient(to_right,transparent,hsl(var(--border))_4%,hsl(var(--border))_96%,transparent)] md:-right-20 md:-left-20" }),
59532
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute -top-10 left-0 z-10 h-[calc(100%+80px)] w-px bg-[linear-gradient(to_bottom,transparent,hsl(var(--border))_4%,hsl(var(--border))_96%,transparent)] md:-top-20 md:h-[calc(100%+160px)]" }),
59533
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute -top-10 right-0 z-10 h-[calc(100%+80px)] w-px bg-[linear-gradient(to_bottom,transparent,hsl(var(--border))_4%,hsl(var(--border))_96%,transparent)] md:-top-20 md:h-[calc(100%+160px)]" }),
59534
+ carouselSlot ? carouselSlot : activeImage ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative aspect-video w-full overflow-hidden", children: /* @__PURE__ */ jsxRuntime.jsx(framerMotion.AnimatePresence, { mode: "wait", initial: false, children: /* @__PURE__ */ jsxRuntime.jsx(
59535
+ framerMotion.motion.div,
59536
+ {
59537
+ variants: fadeVariants2,
59538
+ initial: "initial",
59539
+ animate: "animate",
59540
+ exit: "exit",
59541
+ className: "absolute inset-0",
59542
+ children: /* @__PURE__ */ jsxRuntime.jsx(
59543
+ img.Img,
59544
+ {
59545
+ src: activeImage.src,
59546
+ alt: activeImage.alt,
59547
+ className: cn(
59548
+ "h-full w-full object-cover",
59549
+ activeImage.className
59550
+ ),
59551
+ optixFlowConfig
59552
+ }
59553
+ )
59554
+ },
59555
+ currentIndex
59556
+ ) }) }) : null
59557
+ ]
59558
+ }
59559
+ )
59460
59560
  ] })
59461
59561
  }
59462
59562
  );
@@ -59473,70 +59573,66 @@ function HeroDeveloperToolsCode({
59473
59573
  terminalLines,
59474
59574
  terminalSlot,
59475
59575
  background,
59476
- spacing,
59576
+ containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
59577
+ spacing = "xl",
59477
59578
  pattern,
59478
59579
  patternOpacity,
59479
59580
  className,
59480
- containerClassName,
59481
59581
  contentClassName,
59482
59582
  headingClassName,
59483
59583
  descriptionClassName,
59484
59584
  actionsClassName,
59585
+ patternClassName,
59485
59586
  terminalClassName
59486
59587
  }) {
59487
59588
  const renderBadge = React22.useMemo(() => {
59488
59589
  if (badgeSlot) return badgeSlot;
59489
59590
  if (!badgeText && !badgeIcon) return null;
59490
- return /* @__PURE__ */ jsxRuntime.jsxs(Badge, { variant: "outline", className: "w-fit", children: [
59491
- badgeIcon && /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: badgeIcon, size: 14, className: "mr-1" }),
59591
+ return /* @__PURE__ */ jsxRuntime.jsxs(Badge, { className: "w-fit gap-2 mx-4", children: [
59592
+ badgeIcon && /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: badgeIcon, size: 14 }),
59492
59593
  badgeText
59493
59594
  ] });
59494
59595
  }, [badgeSlot, badgeText, badgeIcon]);
59495
- const renderActions = React22.useMemo(() => {
59496
- if (actionsSlot) return actionsSlot;
59497
- if (!actions || actions.length === 0) return null;
59498
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex flex-col gap-4 sm:flex-row", actionsClassName), children: actions.map((action, index) => {
59499
- const { label, icon, iconAfter, children, className: actionClassName, ...pressableProps } = action;
59500
- return /* @__PURE__ */ jsxRuntime.jsx(
59501
- Pressable,
59502
- {
59503
- asButton: true,
59504
- className: actionClassName,
59505
- ...pressableProps,
59506
- children: children ?? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
59507
- icon,
59508
- label,
59509
- iconAfter
59510
- ] })
59511
- },
59512
- index
59513
- );
59514
- }) });
59515
- }, [actionsSlot, actions, actionsClassName]);
59516
59596
  const renderTerminal = React22.useMemo(() => {
59517
59597
  if (terminalSlot) return terminalSlot;
59518
59598
  if (!terminalLines || terminalLines.length === 0) return null;
59519
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("overflow-hidden rounded-xl border border-border bg-zinc-950 shadow-2xl", terminalClassName), children: [
59520
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 border-b border-zinc-800 bg-zinc-900 px-4 py-3", children: [
59521
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-1.5", children: [
59522
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-3 w-3 rounded-full bg-red-500" }),
59523
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-3 w-3 rounded-full bg-yellow-500" }),
59524
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-3 w-3 rounded-full bg-green-500" })
59525
- ] }),
59526
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1 text-center text-sm text-zinc-500", children: terminalTitle })
59527
- ] }),
59528
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "p-4 font-mono text-sm", children: [
59529
- terminalLines.map((line, index) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn(index > 0 && "mt-1", line.colorClass), children: [
59530
- line.prefix && /* @__PURE__ */ jsxRuntime.jsx("span", { className: line.prefixColorClass, children: line.prefix }),
59531
- " ",
59532
- line.text
59533
- ] }, index)),
59534
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-2 flex items-center", children: [
59535
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-zinc-500", children: "$" }),
59536
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-1 h-4 w-2 animate-pulse bg-zinc-400" })
59537
- ] })
59538
- ] })
59539
- ] });
59599
+ return /* @__PURE__ */ jsxRuntime.jsxs(
59600
+ "div",
59601
+ {
59602
+ className: cn(
59603
+ "overflow-hidden rounded-xl border border-border bg-zinc-950 shadow-2xl",
59604
+ terminalClassName
59605
+ ),
59606
+ children: [
59607
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 border-b border-zinc-800 bg-zinc-900 px-4 py-3", children: [
59608
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-1.5", children: [
59609
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-3 w-3 rounded-full bg-red-500" }),
59610
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-3 w-3 rounded-full bg-yellow-500" }),
59611
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-3 w-3 rounded-full bg-green-500" })
59612
+ ] }),
59613
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1 text-center text-sm text-zinc-500", children: terminalTitle })
59614
+ ] }),
59615
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "p-4 font-mono text-sm", children: [
59616
+ terminalLines.map((line, index) => /* @__PURE__ */ jsxRuntime.jsxs(
59617
+ "div",
59618
+ {
59619
+ className: cn(index > 0 && "mt-1", line.colorClass),
59620
+ children: [
59621
+ line.prefix && /* @__PURE__ */ jsxRuntime.jsx("span", { className: line.prefixColorClass, children: line.prefix }),
59622
+ " ",
59623
+ line.text
59624
+ ]
59625
+ },
59626
+ index
59627
+ )),
59628
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-2 flex items-center", children: [
59629
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-zinc-500", children: "$" }),
59630
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-1 h-4 w-2 animate-pulse bg-zinc-400" })
59631
+ ] })
59632
+ ] })
59633
+ ]
59634
+ }
59635
+ );
59540
59636
  }, [terminalSlot, terminalLines, terminalTitle, terminalClassName]);
59541
59637
  return /* @__PURE__ */ jsxRuntime.jsx(
59542
59638
  Section,
@@ -59545,13 +59641,31 @@ function HeroDeveloperToolsCode({
59545
59641
  spacing,
59546
59642
  pattern,
59547
59643
  patternOpacity,
59644
+ patternClassName,
59548
59645
  className,
59549
- children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("container", containerClassName), children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid items-center gap-12 lg:grid-cols-2 lg:gap-20", children: [
59646
+ containerClassName,
59647
+ children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "pt-8 md:pt-0", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid items-center gap-12 lg:grid-cols-2 lg:gap-20", children: [
59550
59648
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex flex-col gap-8", contentClassName), children: [
59551
59649
  renderBadge,
59552
- heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h1", { className: cn("text-4xl font-bold tracking-tight md:text-5xl lg:text-6xl", headingClassName), children: heading }) : /* @__PURE__ */ jsxRuntime.jsx("h1", { className: cn("text-4xl font-bold tracking-tight md:text-5xl lg:text-6xl", headingClassName), children: heading })),
59553
- description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-lg", getTextColor(background, "muted"), descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description })),
59554
- renderActions
59650
+ heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
59651
+ "h1",
59652
+ {
59653
+ className: cn(
59654
+ "text-4xl font-bold tracking-tight md:text-5xl lg:text-6xl text-pretty",
59655
+ headingClassName
59656
+ ),
59657
+ children: heading
59658
+ }
59659
+ ) : heading),
59660
+ description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-lg text-balance", descriptionClassName), children: description }) : description),
59661
+ /* @__PURE__ */ jsxRuntime.jsx(
59662
+ BlockActions,
59663
+ {
59664
+ actions,
59665
+ actionsSlot,
59666
+ actionsClassName
59667
+ }
59668
+ )
59555
59669
  ] }),
59556
59670
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative", children: renderTerminal })
59557
59671
  ] }) })
@@ -59572,7 +59686,7 @@ function HeroEcommerceProductShowcase({
59572
59686
  imagesSlot,
59573
59687
  background,
59574
59688
  containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
59575
- spacing = "py-32 md:py-32",
59689
+ spacing = "xl",
59576
59690
  pattern,
59577
59691
  patternOpacity,
59578
59692
  patternClassName,
@@ -59592,41 +59706,34 @@ function HeroEcommerceProductShowcase({
59592
59706
  /* @__PURE__ */ jsxRuntime.jsx("span", { children: badgeText })
59593
59707
  ] });
59594
59708
  }, [badgeSlot, badgeIcon, badgeText]);
59595
- const renderActions = React22.useMemo(() => {
59596
- if (actionsSlot) return actionsSlot;
59597
- if (!actions || actions.length === 0) return null;
59598
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex flex-col gap-4 sm:flex-row", actionsClassName), children: actions.map((action, index) => {
59599
- const {
59600
- label,
59601
- icon,
59602
- iconAfter,
59603
- children,
59604
- className: actionClassName,
59605
- ...pressableProps
59606
- } = action;
59607
- return /* @__PURE__ */ jsxRuntime.jsx(
59608
- Pressable,
59609
- {
59610
- asButton: true,
59611
- className: actionClassName,
59612
- ...pressableProps,
59613
- children: children ?? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
59614
- icon,
59615
- label,
59616
- iconAfter
59617
- ] })
59618
- },
59619
- index
59620
- );
59621
- }) });
59622
- }, [actionsSlot, actions, actionsClassName]);
59623
59709
  const renderStats = React22.useMemo(() => {
59624
59710
  if (statsSlot) return statsSlot;
59625
59711
  if (!stats || stats.length === 0) return null;
59626
59712
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex items-center gap-6 pt-4", statsClassName), children: stats.map((stat, index) => /* @__PURE__ */ jsxRuntime.jsxs(React22__namespace.Fragment, { children: [
59627
59713
  index > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-12 w-px bg-border" }),
59628
59714
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-center", children: [
59629
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-2xl font-bold ", children: stat.value }),
59715
+ /* @__PURE__ */ jsxRuntime.jsxs(
59716
+ "div",
59717
+ {
59718
+ className: cn(
59719
+ "flex items-center",
59720
+ stat.icon ? "justify-between" : "justify-center"
59721
+ ),
59722
+ children: [
59723
+ stat.icon,
59724
+ /* @__PURE__ */ jsxRuntime.jsx(
59725
+ "div",
59726
+ {
59727
+ className: cn(
59728
+ "font-bold ",
59729
+ stat.icon ? "text-xl" : "text-2xl"
59730
+ ),
59731
+ children: stat.value
59732
+ }
59733
+ )
59734
+ ]
59735
+ }
59736
+ ),
59630
59737
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-sm"), children: stat.label })
59631
59738
  ] })
59632
59739
  ] }, index)) });
@@ -59699,42 +59806,31 @@ function HeroEcommerceProductShowcase({
59699
59806
  patternClassName,
59700
59807
  className,
59701
59808
  containerClassName,
59702
- children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid items-center gap-12 lg:grid-cols-2 lg:gap-20", children: [
59703
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "order-2 lg:order-1", children: renderImages }),
59704
- /* @__PURE__ */ jsxRuntime.jsxs(
59705
- "div",
59706
- {
59707
- className: cn(
59708
- "order-1 flex flex-col gap-8 lg:order-2",
59709
- contentClassName
59710
- ),
59711
- children: [
59712
- renderBadge,
59713
- heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
59714
- "h1",
59715
- {
59716
- className: cn(
59717
- "text-4xl font-bold tracking-tight md:text-5xl lg:text-6xl text-balance",
59718
- headingClassName
59719
- ),
59720
- children: heading
59721
- }
59722
- ) : /* @__PURE__ */ jsxRuntime.jsx(
59723
- "h1",
59724
- {
59725
- className: cn(
59726
- "text-4xl font-bold tracking-tight md:text-5xl lg:text-6xl text-balance",
59727
- headingClassName
59728
- ),
59729
- children: heading
59730
- }
59731
- )),
59732
- description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-lg text-balance", descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description })),
59733
- renderActions,
59734
- renderStats
59735
- ]
59736
- }
59737
- )
59809
+ children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "pt-8 md:pt-0", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid items-center gap-12 lg:grid-cols-2 lg:gap-20", children: [
59810
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "order-1", children: renderImages }),
59811
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex flex-col gap-8 order-2", contentClassName), children: [
59812
+ renderBadge,
59813
+ heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
59814
+ "h1",
59815
+ {
59816
+ className: cn(
59817
+ "text-4xl font-bold tracking-tight md:text-5xl lg:text-6xl text-balance",
59818
+ headingClassName
59819
+ ),
59820
+ children: heading
59821
+ }
59822
+ ) : heading),
59823
+ description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-lg text-balance", descriptionClassName), children: description }) : description),
59824
+ /* @__PURE__ */ jsxRuntime.jsx(
59825
+ BlockActions,
59826
+ {
59827
+ actions,
59828
+ actionsSlot,
59829
+ actionsClassName
59830
+ }
59831
+ ),
59832
+ renderStats
59833
+ ] })
59738
59834
  ] }) })
59739
59835
  }
59740
59836
  );
@@ -59756,7 +59852,7 @@ function HeroMobileAppDownload({
59756
59852
  notificationSlot,
59757
59853
  background,
59758
59854
  containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
59759
- spacing = "pt-28 pb-8 md:pt-32 md:pb-32",
59855
+ spacing = "xl",
59760
59856
  pattern,
59761
59857
  patternOpacity,
59762
59858
  className,
@@ -59895,7 +59991,7 @@ function HeroMobileAppDownload({
59895
59991
  patternOpacity,
59896
59992
  className,
59897
59993
  containerClassName,
59898
- children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid items-center gap-12 grid-cols-1 md:grid-cols-2 md:gap-20", children: [
59994
+ children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "pt-8 md:pt-0", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid items-center gap-12 grid-cols-1 md:grid-cols-2 md:gap-20", children: [
59899
59995
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex flex-col gap-8", contentClassName), children: [
59900
59996
  renderBadge,
59901
59997
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
@@ -60010,11 +60106,12 @@ function HeroPricingComparison({
60010
60106
  function HeroNewsletterMinimal({
60011
60107
  heading,
60012
60108
  description,
60013
- inputPlaceholder = "Enter your email",
60109
+ inputPlaceholder,
60014
60110
  submitAction,
60015
60111
  formSlot,
60016
- disclaimer = "Free forever. No spam. Unsubscribe anytime.",
60112
+ disclaimer,
60017
60113
  stats,
60114
+ patternClassName,
60018
60115
  statsSlot,
60019
60116
  background,
60020
60117
  spacing,
@@ -60032,15 +60129,40 @@ function HeroNewsletterMinimal({
60032
60129
  const renderStats = React22.useMemo(() => {
60033
60130
  if (statsSlot) return statsSlot;
60034
60131
  if (!stats || stats.length === 0) return null;
60035
- return stats.map((stat, index) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex items-center gap-2 text-sm", getTextColor(background, "muted"), stat.className), children: [
60036
- stat.icon,
60037
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: stat.value })
60038
- ] }, index));
60132
+ return stats.map((stat, index) => /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex items-center", stat.className), children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-center", children: [
60133
+ /* @__PURE__ */ jsxRuntime.jsxs(
60134
+ "div",
60135
+ {
60136
+ className: cn(
60137
+ "flex items-center",
60138
+ stat.icon ? "justify-between" : "justify-center"
60139
+ ),
60140
+ children: [
60141
+ stat.icon,
60142
+ /* @__PURE__ */ jsxRuntime.jsx(
60143
+ "div",
60144
+ {
60145
+ className: cn("font-bold ", stat.icon ? "text-xl" : "text-2xl"),
60146
+ children: stat.value
60147
+ }
60148
+ )
60149
+ ]
60150
+ }
60151
+ ),
60152
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-sm"), children: stat.label })
60153
+ ] }) }, index));
60039
60154
  }, [statsSlot, stats]);
60040
60155
  const renderForm = React22.useMemo(() => {
60041
60156
  if (formSlot) return formSlot;
60042
60157
  if (!submitAction) return null;
60043
- const { label, icon, iconAfter, children, className: actionClassName, ...pressableProps } = submitAction;
60158
+ const {
60159
+ label,
60160
+ icon,
60161
+ iconAfter,
60162
+ children,
60163
+ className: actionClassName,
60164
+ ...pressableProps
60165
+ } = submitAction;
60044
60166
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
60045
60167
  /* @__PURE__ */ jsxRuntime.jsx(
60046
60168
  Input,
@@ -60050,44 +60172,122 @@ function HeroNewsletterMinimal({
60050
60172
  className: cn("h-12 flex-1", inputClassName)
60051
60173
  }
60052
60174
  ),
60053
- /* @__PURE__ */ jsxRuntime.jsx(
60054
- Pressable,
60055
- {
60056
- asButton: true,
60057
- className: actionClassName,
60058
- ...pressableProps,
60059
- children: children ?? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
60060
- icon,
60061
- label,
60062
- iconAfter
60063
- ] })
60064
- }
60065
- )
60175
+ /* @__PURE__ */ jsxRuntime.jsx(Pressable, { asButton: true, className: actionClassName, ...pressableProps, children: children ?? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
60176
+ icon,
60177
+ label,
60178
+ iconAfter
60179
+ ] }) })
60066
60180
  ] });
60067
60181
  }, [formSlot, submitAction, inputPlaceholder, inputClassName]);
60068
60182
  return /* @__PURE__ */ jsxRuntime.jsx(
60069
60183
  Section,
60070
60184
  {
60071
- className: cn(
60072
- "relative min-h-[80vh] bg-background py-32",
60073
- className
60074
- ),
60075
- children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("container flex flex-col items-center justify-center text-center", containerClassName), children: [
60076
- heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h1", { className: cn("max-w-3xl text-5xl font-bold tracking-tight md:text-6xl lg:text-7xl", headingClassName), children: heading }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: headingClassName, children: heading })),
60077
- description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mt-6 max-w-xl text-lg md:text-xl", getTextColor(background, "muted"), descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description })),
60078
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mt-10 flex w-full max-w-md flex-col gap-4 sm:flex-row", formClassName), children: renderForm }),
60079
- disclaimer && (typeof disclaimer === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mt-4 text-sm", getTextColor(background, "muted"), disclaimerClassName), children: disclaimer }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: disclaimerClassName, children: disclaimer })),
60080
- (statsSlot || stats && stats.length > 0) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mt-16 flex flex-wrap items-center justify-center gap-8", statsClassName), children: renderStats })
60081
- ] })
60185
+ background,
60186
+ spacing,
60187
+ pattern,
60188
+ patternOpacity,
60189
+ patternClassName,
60190
+ className,
60191
+ containerClassName,
60192
+ children: /* @__PURE__ */ jsxRuntime.jsxs(
60193
+ "div",
60194
+ {
60195
+ className: cn(
60196
+ "container flex flex-col items-center justify-center text-center",
60197
+ containerClassName
60198
+ ),
60199
+ children: [
60200
+ heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
60201
+ "h1",
60202
+ {
60203
+ className: cn(
60204
+ "max-w-3xl text-5xl font-bold tracking-tight md:text-6xl lg:text-7xl text-pretty",
60205
+ headingClassName
60206
+ ),
60207
+ children: heading
60208
+ }
60209
+ ) : heading),
60210
+ description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
60211
+ "p",
60212
+ {
60213
+ className: cn(
60214
+ "mt-6 max-w-full md:max-w-lg text-lg md:text-xl text-balance",
60215
+ descriptionClassName
60216
+ ),
60217
+ children: description
60218
+ }
60219
+ ) : description),
60220
+ /* @__PURE__ */ jsxRuntime.jsx(
60221
+ "div",
60222
+ {
60223
+ className: cn(
60224
+ "mt-10 flex w-full max-w-md flex-col gap-4 sm:flex-row",
60225
+ formClassName
60226
+ ),
60227
+ children: renderForm
60228
+ }
60229
+ ),
60230
+ disclaimer && (typeof disclaimer === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mt-4 text-sm", disclaimerClassName), children: disclaimer }) : disclaimer),
60231
+ (statsSlot || stats && stats.length > 0) && /* @__PURE__ */ jsxRuntime.jsx(
60232
+ "div",
60233
+ {
60234
+ className: cn(
60235
+ "mt-16 flex flex-wrap items-center justify-center gap-8",
60236
+ statsClassName
60237
+ ),
60238
+ children: renderStats
60239
+ }
60240
+ )
60241
+ ]
60242
+ }
60243
+ )
60082
60244
  }
60083
60245
  );
60084
60246
  }
60247
+ var digitVariants = {
60248
+ initial: { y: -20, opacity: 0 },
60249
+ animate: {
60250
+ y: 0,
60251
+ opacity: 1,
60252
+ transition: { type: "spring", stiffness: 300, damping: 25 }
60253
+ },
60254
+ exit: {
60255
+ y: 20,
60256
+ opacity: 0,
60257
+ transition: { duration: 0.15 }
60258
+ }
60259
+ };
60260
+ function CountdownDigit({ value, label }) {
60261
+ const display = value.toString().padStart(2, "0");
60262
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center", children: [
60263
+ /* @__PURE__ */ jsxRuntime.jsx(
60264
+ "div",
60265
+ {
60266
+ className: cn(
60267
+ "flex h-16 w-16 items-center justify-center overflow-hidden rounded-xl text-3xl font-bold md:h-24 md:w-24 md:text-5xl"
60268
+ ),
60269
+ children: /* @__PURE__ */ jsxRuntime.jsx(framerMotion.AnimatePresence, { mode: "popLayout", initial: false, children: /* @__PURE__ */ jsxRuntime.jsx(
60270
+ framerMotion.motion.span,
60271
+ {
60272
+ variants: digitVariants,
60273
+ initial: "initial",
60274
+ animate: "animate",
60275
+ exit: "exit",
60276
+ children: display
60277
+ },
60278
+ display
60279
+ ) })
60280
+ }
60281
+ ),
60282
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("mt-2 text-sm"), children: label })
60283
+ ] });
60284
+ }
60085
60285
  function HeroComingSoonCountdown({
60086
60286
  badgeIcon,
60087
60287
  badgeText,
60088
60288
  heading,
60089
60289
  description,
60090
- countdownItems,
60290
+ countdownDate,
60091
60291
  countdownSlot,
60092
60292
  emailPlaceholder = "Enter your email",
60093
60293
  submitAction,
@@ -60095,11 +60295,12 @@ function HeroComingSoonCountdown({
60095
60295
  socialLinks,
60096
60296
  socialLinksSlot,
60097
60297
  background,
60098
- spacing,
60298
+ containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
60299
+ spacing = "xl",
60099
60300
  pattern,
60100
60301
  patternOpacity,
60302
+ patternClassName,
60101
60303
  className,
60102
- containerClassName,
60103
60304
  badgeClassName,
60104
60305
  headingClassName,
60105
60306
  descriptionClassName,
@@ -60107,55 +60308,69 @@ function HeroComingSoonCountdown({
60107
60308
  formClassName,
60108
60309
  socialLinksClassName
60109
60310
  }) {
60110
- const renderCountdown = React22.useMemo(() => {
60111
- if (countdownSlot) return countdownSlot;
60112
- if (!countdownItems || countdownItems.length === 0) return null;
60113
- return countdownItems.map((item) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center", children: [
60114
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn(
60115
- "flex h-16 w-16 items-center justify-center rounded-xl text-3xl font-bold md:h-24 md:w-24 md:text-5xl",
60116
- getNestedCardBg(background, "muted"),
60117
- getNestedCardTextColor(background)
60118
- ), children: item.value }),
60119
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("mt-2 text-sm", getTextColor(background, "muted")), children: item.label })
60120
- ] }, item.label));
60121
- }, [countdownSlot, countdownItems, background]);
60311
+ const [timeLeft, setTimeLeft] = React22.useState(null);
60312
+ const calculateTimeLeft = React22.useCallback(() => {
60313
+ if (!countdownDate) return null;
60314
+ const now = Date.now();
60315
+ const target = countdownDate.getTime();
60316
+ const diff = target - now;
60317
+ if (diff <= 0) return null;
60318
+ return {
60319
+ days: Math.floor(diff / (1e3 * 60 * 60 * 24)),
60320
+ hours: Math.floor(diff % (1e3 * 60 * 60 * 24) / (1e3 * 60 * 60)),
60321
+ minutes: Math.floor(diff % (1e3 * 60 * 60) / (1e3 * 60)),
60322
+ seconds: Math.floor(diff % (1e3 * 60) / 1e3)
60323
+ };
60324
+ }, [countdownDate]);
60325
+ React22.useEffect(() => {
60326
+ setTimeLeft(calculateTimeLeft());
60327
+ if (!countdownDate) return;
60328
+ const timer = setInterval(() => {
60329
+ const remaining = calculateTimeLeft();
60330
+ setTimeLeft(remaining);
60331
+ if (!remaining) clearInterval(timer);
60332
+ }, 1e3);
60333
+ return () => clearInterval(timer);
60334
+ }, [countdownDate, calculateTimeLeft]);
60335
+ const showCountdown = countdownSlot || timeLeft;
60122
60336
  const renderForm = React22.useMemo(() => {
60123
60337
  if (formSlot) return formSlot;
60124
60338
  if (!submitAction) return null;
60125
- const { label, icon, iconAfter, children, className: actionClassName, ...pressableProps } = submitAction;
60339
+ const {
60340
+ label,
60341
+ icon,
60342
+ iconAfter,
60343
+ children,
60344
+ className: actionClassName,
60345
+ ...pressableProps
60346
+ } = submitAction;
60126
60347
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
60127
60348
  /* @__PURE__ */ jsxRuntime.jsx(
60128
60349
  Input,
60129
60350
  {
60130
60351
  type: "email",
60131
60352
  placeholder: emailPlaceholder,
60132
- className: cn("h-12 flex-1 border-border/50", `${getNestedCardBg(background, "muted")}/30`)
60353
+ className: cn("h-12 flex-1 border-border/50")
60133
60354
  }
60134
60355
  ),
60135
- /* @__PURE__ */ jsxRuntime.jsx(
60136
- Pressable,
60137
- {
60138
- asButton: true,
60139
- className: actionClassName,
60140
- ...pressableProps,
60141
- children: children ?? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
60142
- icon,
60143
- label,
60144
- iconAfter
60145
- ] })
60146
- }
60147
- )
60356
+ /* @__PURE__ */ jsxRuntime.jsx(Pressable, { asButton: true, className: actionClassName, ...pressableProps, children: children ?? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
60357
+ icon,
60358
+ label,
60359
+ iconAfter
60360
+ ] }) })
60148
60361
  ] });
60149
60362
  }, [formSlot, submitAction, emailPlaceholder]);
60150
60363
  const renderSocialLinks = React22.useMemo(() => {
60151
60364
  if (socialLinksSlot) return socialLinksSlot;
60152
60365
  if (!socialLinks || socialLinks.length === 0) return null;
60153
60366
  return socialLinks.map((link, index) => /* @__PURE__ */ jsxRuntime.jsx(
60154
- Pressable,
60367
+ SocialLinkIcon,
60155
60368
  {
60156
60369
  href: link.href,
60157
- className: cn(getTextColor(background, "muted"), "hover:opacity-80", link.className),
60158
- children: link.icon ?? (link.iconName && /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: link.iconName, size: 20 }))
60370
+ className: cn("hover:opacity-80", link.className),
60371
+ asButton: true,
60372
+ variant: "outline",
60373
+ size: "icon"
60159
60374
  },
60160
60375
  index
60161
60376
  ));
@@ -60163,25 +60378,73 @@ function HeroComingSoonCountdown({
60163
60378
  return /* @__PURE__ */ jsxRuntime.jsx(
60164
60379
  Section,
60165
60380
  {
60166
- className: cn(
60167
- "dark relative min-h-screen bg-background py-32",
60168
- className
60169
- ),
60170
- children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("container flex flex-col items-center justify-center text-center", containerClassName), children: [
60171
- (badgeText || badgeIcon) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn(
60172
- "inline-flex items-center gap-2 rounded-full border border-border/50 px-4 py-2 text-sm",
60173
- getNestedCardBg(background, "muted"),
60174
- getNestedCardTextColor(background),
60175
- badgeClassName
60176
- ), children: [
60177
- badgeIcon && /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: badgeIcon, size: 16, className: getAccentColor(background) }),
60381
+ background,
60382
+ spacing,
60383
+ pattern,
60384
+ patternOpacity,
60385
+ patternClassName,
60386
+ className,
60387
+ containerClassName,
60388
+ children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "pt-8 md:pt-0", children: [
60389
+ (badgeText || badgeIcon) && /* @__PURE__ */ jsxRuntime.jsxs(Badge, { className: cn("gap-2 px-4 py-2", badgeClassName), children: [
60390
+ badgeIcon && /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: badgeIcon, size: 16 }),
60178
60391
  /* @__PURE__ */ jsxRuntime.jsx("span", { children: badgeText })
60179
60392
  ] }),
60180
- heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h1", { className: cn("mt-8 max-w-3xl text-5xl font-bold tracking-tight md:text-6xl lg:text-7xl", headingClassName), children: heading }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mt-8", headingClassName), children: heading })),
60181
- description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mt-6 max-w-xl text-lg md:text-xl", getTextColor(background, "muted"), descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mt-6", descriptionClassName), children: description })),
60182
- (countdownSlot || countdownItems && countdownItems.length > 0) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mt-12 grid grid-cols-4 gap-4 md:gap-8", countdownClassName), children: renderCountdown }),
60183
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mt-12 flex w-full max-w-md flex-col gap-4 sm:flex-row", formClassName), children: renderForm }),
60184
- (socialLinksSlot || socialLinks && socialLinks.length > 0) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mt-16 flex items-center gap-6", socialLinksClassName), children: renderSocialLinks })
60393
+ heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
60394
+ "h1",
60395
+ {
60396
+ className: cn(
60397
+ "mt-8 max-w-3xl text-5xl font-bold tracking-tight md:text-6xl lg:text-7xl text-balance",
60398
+ headingClassName
60399
+ ),
60400
+ children: heading
60401
+ }
60402
+ ) : heading),
60403
+ description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
60404
+ "p",
60405
+ {
60406
+ className: cn(
60407
+ "mt-6 max-w-xl text-lg md:text-xl text-balance",
60408
+ descriptionClassName
60409
+ ),
60410
+ children: description
60411
+ }
60412
+ ) : description),
60413
+ showCountdown && /* @__PURE__ */ jsxRuntime.jsx(
60414
+ "div",
60415
+ {
60416
+ className: cn(
60417
+ "mt-12 grid grid-cols-4 gap-4 md:gap-8",
60418
+ countdownClassName
60419
+ ),
60420
+ children: countdownSlot ?? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
60421
+ /* @__PURE__ */ jsxRuntime.jsx(CountdownDigit, { value: timeLeft.days, label: "Days" }),
60422
+ /* @__PURE__ */ jsxRuntime.jsx(CountdownDigit, { value: timeLeft.hours, label: "Hours" }),
60423
+ /* @__PURE__ */ jsxRuntime.jsx(CountdownDigit, { value: timeLeft.minutes, label: "Minutes" }),
60424
+ /* @__PURE__ */ jsxRuntime.jsx(CountdownDigit, { value: timeLeft.seconds, label: "Seconds" })
60425
+ ] })
60426
+ }
60427
+ ),
60428
+ /* @__PURE__ */ jsxRuntime.jsx(
60429
+ "div",
60430
+ {
60431
+ className: cn(
60432
+ "mt-12 flex w-full max-w-md flex-col gap-4 sm:flex-row",
60433
+ formClassName
60434
+ ),
60435
+ children: renderForm
60436
+ }
60437
+ ),
60438
+ (socialLinksSlot || socialLinks && socialLinks.length > 0) && /* @__PURE__ */ jsxRuntime.jsx(
60439
+ "div",
60440
+ {
60441
+ className: cn(
60442
+ "mt-16 flex items-center gap-6",
60443
+ socialLinksClassName
60444
+ ),
60445
+ children: renderSocialLinks
60446
+ }
60447
+ )
60185
60448
  ] })
60186
60449
  }
60187
60450
  );
@@ -60202,8 +60465,8 @@ function HeroEventRegistration({
60202
60465
  locationSublabel,
60203
60466
  locationSlot,
60204
60467
  background,
60205
- containerClassName = "px-6 sm:px-0 md:px-0 lg:px-0",
60206
- spacing = "pt-32 pb-8 md:pt-32 md:pb-32",
60468
+ containerClassName = "px-6 sm:px-0 md:px-0 lg:px-0",
60469
+ spacing = "xl",
60207
60470
  pattern,
60208
60471
  patternOpacity,
60209
60472
  className,
@@ -60217,18 +60480,18 @@ function HeroEventRegistration({
60217
60480
  }) {
60218
60481
  const renderBadge = React22.useMemo(() => {
60219
60482
  if (badgeSlot) return badgeSlot;
60220
- return /* @__PURE__ */ jsxRuntime.jsxs(Badge, { variant: "outline", className: "w-fit", children: [
60221
- badgeIcon && /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: badgeIcon, size: 14, className: "mr-1" }),
60483
+ return /* @__PURE__ */ jsxRuntime.jsxs(Badge, { className: "px-4 gap-2", children: [
60484
+ badgeIcon && /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: badgeIcon }),
60222
60485
  badgeText
60223
60486
  ] });
60224
60487
  }, [badgeSlot, badgeIcon, badgeText]);
60225
60488
  const renderStats = React22.useMemo(() => {
60226
60489
  if (statsSlot) return statsSlot;
60227
60490
  if (!stats || stats.length === 0) return null;
60228
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("grid grid-cols-3 gap-4 pt-4", statsClassName), children: stats.map((stat, index) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-center", children: [
60491
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex justify-center w-full", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("grid grid-cols-3 gap-4 pt-4", statsClassName), children: stats.map((stat, index) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-center", children: [
60229
60492
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-2xl font-bold ", children: stat.value }),
60230
60493
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-sm"), children: stat.label })
60231
- ] }, index)) });
60494
+ ] }, index)) }) });
60232
60495
  }, [statsSlot, stats, statsClassName]);
60233
60496
  const renderLocation = React22.useMemo(() => {
60234
60497
  if (locationSlot) return locationSlot;
@@ -60274,41 +60537,41 @@ function HeroEventRegistration({
60274
60537
  patternOpacity,
60275
60538
  className,
60276
60539
  containerClassName,
60277
- children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid items-center gap-12 lg:grid-cols-2 lg:gap-20", children: [
60278
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex flex-col gap-8", contentClassName), children: [
60279
- renderBadge,
60280
- heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
60281
- "h1",
60282
- {
60283
- className: cn(
60284
- "text-4xl font-bold tracking-tight md:text-5xl lg:text-6xl",
60285
- headingClassName
60286
- ),
60287
- children: heading
60288
- }
60289
- ) : /* @__PURE__ */ jsxRuntime.jsx(
60290
- "h1",
60291
- {
60292
- className: cn(
60293
- "text-4xl font-bold tracking-tight md:text-5xl lg:text-6xl",
60294
- headingClassName
60540
+ children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "pt-8 md:pt-0", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid items-center gap-12 lg:grid-cols-2 lg:gap-20", children: [
60541
+ /* @__PURE__ */ jsxRuntime.jsxs(
60542
+ "div",
60543
+ {
60544
+ className: cn(
60545
+ "flex flex-col items-start gap-6 md:gap-8",
60546
+ contentClassName
60547
+ ),
60548
+ children: [
60549
+ renderBadge,
60550
+ heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
60551
+ "h1",
60552
+ {
60553
+ className: cn(
60554
+ "text-4xl font-bold tracking-tight md:text-5xl lg:text-6xl text-pretty",
60555
+ headingClassName
60556
+ ),
60557
+ children: heading
60558
+ }
60559
+ ) : heading),
60560
+ description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-lg text-balance", descriptionClassName), children: description }) : description),
60561
+ /* @__PURE__ */ jsxRuntime.jsx(
60562
+ BlockActions,
60563
+ {
60564
+ actions,
60565
+ actionsSlot,
60566
+ actionsClassName
60567
+ }
60295
60568
  ),
60296
- children: heading
60297
- }
60298
- )),
60299
- description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-lg", descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description })),
60300
- /* @__PURE__ */ jsxRuntime.jsx(
60301
- BlockActions,
60302
- {
60303
- actions,
60304
- actionsSlot,
60305
- actionsClassName
60306
- }
60307
- ),
60308
- renderStats
60309
- ] }),
60569
+ renderStats
60570
+ ]
60571
+ }
60572
+ ),
60310
60573
  renderImage
60311
- ] })
60574
+ ] }) })
60312
60575
  }
60313
60576
  );
60314
60577
  }
@@ -83751,7 +84014,7 @@ function ListSearchableGrid({
83751
84014
  }
83752
84015
  );
83753
84016
  }
83754
- var { useMemo: useMemo433 } = React22__namespace;
84017
+ var { useMemo: useMemo431 } = React22__namespace;
83755
84018
  function OfferModalNewsletterDiscount({
83756
84019
  title,
83757
84020
  emailPlaceholder,
@@ -83819,7 +84082,7 @@ function OfferModalNewsletterDiscount({
83819
84082
  });
83820
84083
  const formMethod = formConfig?.method?.toLowerCase() === "get" ? "get" : "post";
83821
84084
  const dialogProps = open !== void 0 ? { open, onOpenChange } : { defaultOpen };
83822
- const renderCloseButton = useMemo433(() => {
84085
+ const renderCloseButton = useMemo431(() => {
83823
84086
  if (closeButtonSlot) return closeButtonSlot;
83824
84087
  if (!closeButtonText) return null;
83825
84088
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute end-1.5 top-1.5", children: /* @__PURE__ */ jsxRuntime.jsx(DialogClose, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(
@@ -83833,12 +84096,12 @@ function OfferModalNewsletterDiscount({
83833
84096
  }
83834
84097
  ) }) });
83835
84098
  }, [closeButtonSlot, closeButtonText, closeClassName]);
83836
- const renderHeader = useMemo433(() => {
84099
+ const renderHeader = useMemo431(() => {
83837
84100
  if (headerSlot) return headerSlot;
83838
84101
  if (!title) return null;
83839
84102
  return /* @__PURE__ */ jsxRuntime.jsx(DialogHeader, { className: headerClassName, children: typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx(DialogTitle, { className: cn("text-start font-serif text-2xl font-normal leading-snug", titleClassName), children: title }) : /* @__PURE__ */ jsxRuntime.jsx(DialogTitle, { className: cn("text-start font-serif text-2xl font-normal leading-snug", titleClassName), children: title }) });
83840
84103
  }, [headerSlot, title, headerClassName, titleClassName]);
83841
- const renderForm = useMemo433(() => {
84104
+ const renderForm = useMemo431(() => {
83842
84105
  if (formSlot) return formSlot;
83843
84106
  return /* @__PURE__ */ jsxRuntime.jsxs(
83844
84107
  forms.Form,
@@ -83900,7 +84163,7 @@ function OfferModalNewsletterDiscount({
83900
84163
  }
83901
84164
  ) });
83902
84165
  }
83903
- var { useMemo: useMemo434 } = React22__namespace;
84166
+ var { useMemo: useMemo432 } = React22__namespace;
83904
84167
  function OfferModalMembershipImage({
83905
84168
  overline,
83906
84169
  title,
@@ -83977,7 +84240,7 @@ function OfferModalMembershipImage({
83977
84240
  });
83978
84241
  const formMethod = formConfig?.method?.toLowerCase() === "get" ? "get" : "post";
83979
84242
  const dialogProps = open !== void 0 ? { open, onOpenChange } : { defaultOpen };
83980
- const renderImage = useMemo434(() => {
84243
+ const renderImage = useMemo432(() => {
83981
84244
  if (imageSlot) return imageSlot;
83982
84245
  if (!image) return null;
83983
84246
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("max-h-[290px] h-full overflow-hidden max-lg:hidden", imageWrapperClassName), children: /* @__PURE__ */ jsxRuntime.jsx(
@@ -83990,7 +84253,7 @@ function OfferModalMembershipImage({
83990
84253
  }
83991
84254
  ) });
83992
84255
  }, [imageSlot, image, imageWrapperClassName, imageClassName, optixFlowConfig]);
83993
- const renderCloseButton = useMemo434(() => {
84256
+ const renderCloseButton = useMemo432(() => {
83994
84257
  if (closeButtonSlot) return closeButtonSlot;
83995
84258
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute -end-px -top-px z-10", children: /* @__PURE__ */ jsxRuntime.jsx(DialogClose, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(
83996
84259
  Pressable,
@@ -84006,7 +84269,7 @@ function OfferModalMembershipImage({
84006
84269
  }
84007
84270
  ) }) });
84008
84271
  }, [closeButtonSlot, closeClassName]);
84009
- const renderForm = useMemo434(() => {
84272
+ const renderForm = useMemo432(() => {
84010
84273
  if (formSlot) return formSlot;
84011
84274
  return /* @__PURE__ */ jsxRuntime.jsxs(
84012
84275
  forms.Form,
@@ -84069,7 +84332,7 @@ function OfferModalMembershipImage({
84069
84332
  }
84070
84333
  );
84071
84334
  }, [formSlot, form, formConfig, formMethod, emailPlaceholder, inputClassName, submitClassName, buttonText, formClassName]);
84072
- const renderFooter = useMemo434(() => {
84335
+ const renderFooter = useMemo432(() => {
84073
84336
  if (footerSlot) return footerSlot;
84074
84337
  if (!description) return null;
84075
84338
  return /* @__PURE__ */ jsxRuntime.jsx(DialogFooter, { className: footerClassName, children: /* @__PURE__ */ jsxRuntime.jsx(DialogDescription, { className: cn("text-muted-foreground text-center text-xs leading-relaxed", descriptionClassName), children: description }) });
@@ -84189,7 +84452,7 @@ function SheetDescription({
84189
84452
  }
84190
84453
  );
84191
84454
  }
84192
- var { useMemo: useMemo435 } = React22__namespace;
84455
+ var { useMemo: useMemo433 } = React22__namespace;
84193
84456
  function OfferModalSheetNewsletter({
84194
84457
  logo,
84195
84458
  logoSlot,
@@ -84272,7 +84535,7 @@ function OfferModalSheetNewsletter({
84272
84535
  });
84273
84536
  const formMethod = formConfig?.method?.toLowerCase() === "get" ? "get" : "post";
84274
84537
  const sheetProps = open !== void 0 ? { open, onOpenChange } : { defaultOpen };
84275
- const renderLogo = useMemo435(() => {
84538
+ const renderLogo = useMemo433(() => {
84276
84539
  if (logoSlot) return logoSlot;
84277
84540
  if (!logo) return null;
84278
84541
  const logoSrc = typeof logo.src === "string" ? logo.src : logo.src.light;
@@ -84286,7 +84549,7 @@ function OfferModalSheetNewsletter({
84286
84549
  }
84287
84550
  );
84288
84551
  }, [logoSlot, logo, logoClassName, optixFlowConfig]);
84289
- const renderHeader = useMemo435(() => {
84552
+ const renderHeader = useMemo433(() => {
84290
84553
  if (headerSlot) return headerSlot;
84291
84554
  return /* @__PURE__ */ jsxRuntime.jsxs(SheetHeader, { className: cn("gap-8 p-0", headerClassName), children: [
84292
84555
  renderLogo,
@@ -84296,7 +84559,7 @@ function OfferModalSheetNewsletter({
84296
84559
  ] })
84297
84560
  ] });
84298
84561
  }, [headerSlot, renderLogo, headerClassName, title, titleClassName, description, descriptionClassName]);
84299
- const renderForm = useMemo435(() => {
84562
+ const renderForm = useMemo433(() => {
84300
84563
  if (formSlot) return formSlot;
84301
84564
  return /* @__PURE__ */ jsxRuntime.jsx(
84302
84565
  forms.Form,
@@ -84344,7 +84607,7 @@ function OfferModalSheetNewsletter({
84344
84607
  }
84345
84608
  );
84346
84609
  }, [formSlot, form, formConfig, formMethod, emailPlaceholder, inputClassName, submitClassName, buttonText, formClassName]);
84347
- const renderLegal = useMemo435(() => {
84610
+ const renderLegal = useMemo433(() => {
84348
84611
  if (legalSlot) return legalSlot;
84349
84612
  if (!termsUrl || !termsText || !privacyUrl || !privacyText) return null;
84350
84613
  return /* @__PURE__ */ jsxRuntime.jsxs("p", { className: cn("text-muted-foreground text-xs", legalClassName), children: [
@@ -84358,7 +84621,7 @@ function OfferModalSheetNewsletter({
84358
84621
  "."
84359
84622
  ] });
84360
84623
  }, [legalSlot, termsUrl, termsText, privacyUrl, privacyText, legalClassName]);
84361
- const renderImage = useMemo435(() => {
84624
+ const renderImage = useMemo433(() => {
84362
84625
  if (imageSlot) return imageSlot;
84363
84626
  if (!image) return null;
84364
84627
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("h-1/2 basis-1/2", imageWrapperClassName), children: /* @__PURE__ */ jsxRuntime.jsx(AspectRatio, { ratio: 1, className: "overflow-hidden", children: /* @__PURE__ */ jsxRuntime.jsx(