@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.js CHANGED
@@ -53548,7 +53548,7 @@ function HeroFullscreenBackgroundImage({
53548
53548
  patternOpacity,
53549
53549
  className,
53550
53550
  containerClassName = "px-0 sm:px-0 lg:px-0 max-w-full relative z-10 h-screen w-screen flex justify-center items-center",
53551
- contentClassName = "relative flex flex-col gap-12 px-6 pt-28 pb-6 md:pt-0 md:pb-0",
53551
+ contentClassName = "",
53552
53552
  headingClassName,
53553
53553
  descriptionClassName,
53554
53554
  actionsClassName,
@@ -53588,7 +53588,8 @@ function HeroFullscreenBackgroundImage({
53588
53588
  "div",
53589
53589
  {
53590
53590
  className: cn(
53591
- "relative z-30 m-auto flex max-w-full md:max-w-md flex-col items-center justify-center gap-6 px-5",
53591
+ "flex flex-col gap-4 md:gap-6 px-6 pt-28 pb-6 md:pt-0 md:pb-0",
53592
+ "relative z-30 m-auto max-w-full md:max-w-md flex-col items-center justify-center text-center",
53592
53593
  contentClassName
53593
53594
  ),
53594
53595
  children: [
@@ -53641,7 +53642,7 @@ function HeroFullscreenLogoCta({
53641
53642
  patternOpacity,
53642
53643
  className,
53643
53644
  containerClassName = "px-0 sm:px-0 lg:px-0 max-w-full relative z-10 h-screen w-screen flex justify-center items-center",
53644
- contentClassName = "relative flex flex-col gap-12 px-6 pt-28 pb-6 md:pt-0 md:pb-0",
53645
+ contentClassName,
53645
53646
  headingClassName,
53646
53647
  descriptionClassName,
53647
53648
  optixFlowConfig
@@ -53711,7 +53712,9 @@ function HeroFullscreenLogoCta({
53711
53712
  "div",
53712
53713
  {
53713
53714
  className: cn(
53714
- "relative z-30 m-auto flex max-w-full flex-col items-start justify-center gap-4 md:gap-6 px-5",
53715
+ "z-30 m-auto max-w-full items-start justify-center flex flex-col",
53716
+ "relative gap-12 md:gap-6 px-5",
53717
+ "pt-8 pb-6 md:pt-0 md:pb-0",
53715
53718
  contentClassName
53716
53719
  ),
53717
53720
  children: [
@@ -54377,7 +54380,7 @@ function HeroAdaptableProductGrid({
54377
54380
  patternOpacity,
54378
54381
  className,
54379
54382
  containerClassName,
54380
- children: /* @__PURE__ */ jsxs("div", { className: "relative", children: [
54383
+ children: /* @__PURE__ */ jsxs("div", { className: "pt-8 md:pt-0", children: [
54381
54384
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
54382
54385
  "h1",
54383
54386
  {
@@ -56948,11 +56951,11 @@ function HeroInnovationImageGrid({
56948
56951
  patternOpacity,
56949
56952
  className,
56950
56953
  containerClassName,
56951
- children: /* @__PURE__ */ jsx("div", { className: "pt-10 md:pt-0", children: /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 gap-22.5 lg:grid-cols-2", children: [
56954
+ children: /* @__PURE__ */ jsx("div", { className: "pt-10 md:pt-0", children: /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 gap-12 md:gap-22.5 lg:grid-cols-2", children: [
56952
56955
  /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsxs(
56953
56956
  "div",
56954
56957
  {
56955
- className: cn("flex flex-col gap-6 md:gap-12", contentClassName),
56958
+ className: cn("flex flex-col gap-2 md:gap-12", contentClassName),
56956
56959
  children: [
56957
56960
  /* @__PURE__ */ jsxs("div", { children: [
56958
56961
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
@@ -57016,6 +57019,7 @@ function HeroVideoDialogGradient({
57016
57019
  pattern,
57017
57020
  onVideoClick,
57018
57021
  patternOpacity,
57022
+ actionsClassName,
57019
57023
  className,
57020
57024
  headingClassName,
57021
57025
  descriptionClassName,
@@ -57069,16 +57073,7 @@ function HeroVideoDialogGradient({
57069
57073
  ),
57070
57074
  children: heading
57071
57075
  }
57072
- ) : /* @__PURE__ */ jsx(
57073
- "h1",
57074
- {
57075
- className: cn(
57076
- "max-w-[920px] text-center text-4xl leading-tight font-semibold md:text-6xl lg:text-7xl text-balance",
57077
- headingClassName
57078
- ),
57079
- children: heading
57080
- }
57081
- )),
57076
+ ) : heading),
57082
57077
  description && (typeof description === "string" ? /* @__PURE__ */ jsx(
57083
57078
  "p",
57084
57079
  {
@@ -57088,20 +57083,29 @@ function HeroVideoDialogGradient({
57088
57083
  ),
57089
57084
  children: description
57090
57085
  }
57091
- ) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description }))
57086
+ ) : description)
57092
57087
  ] }),
57093
- /* @__PURE__ */ jsxs("div", { className: "flex flex-col md:flex-row flex-wrap gap-4", children: [
57094
- videoAction && videoDialog?.videoUrl ? /* @__PURE__ */ jsx(
57095
- ActionComponent,
57096
- {
57097
- action: {
57098
- ...videoAction,
57099
- onClick: handleVideoClick
57100
- }
57101
- }
57102
- ) : null,
57103
- actions?.map((action, index) => /* @__PURE__ */ jsx(ActionComponent, { action }, index))
57104
- ] })
57088
+ /* @__PURE__ */ jsxs(
57089
+ "div",
57090
+ {
57091
+ className: cn(
57092
+ "flex flex-col md:flex-row flex-wrap gap-4",
57093
+ actionsClassName
57094
+ ),
57095
+ children: [
57096
+ videoAction && videoDialog?.videoUrl ? /* @__PURE__ */ jsx(
57097
+ ActionComponent,
57098
+ {
57099
+ action: {
57100
+ ...videoAction,
57101
+ onClick: handleVideoClick
57102
+ }
57103
+ }
57104
+ ) : null,
57105
+ actions?.map((action, index) => /* @__PURE__ */ jsx(ActionComponent, { action }, index))
57106
+ ]
57107
+ }
57108
+ )
57105
57109
  ] }),
57106
57110
  renderImage
57107
57111
  ] })
@@ -57678,7 +57682,7 @@ function HeroTherapyTestimonialGrid({
57678
57682
  "p",
57679
57683
  {
57680
57684
  className: cn(
57681
- "text-center text-lg md:text-xl",
57685
+ "text-center text-lg md:text-xl text-balance",
57682
57686
  descriptionClassName
57683
57687
  ),
57684
57688
  children: description
@@ -57707,53 +57711,53 @@ function HeroMentalHealthTeam({
57707
57711
  actionsSlot,
57708
57712
  actionsClassName,
57709
57713
  heading,
57710
- teamImages,
57711
- teamImagesSlot,
57714
+ smallImages,
57715
+ smallImagesSlot,
57712
57716
  testimonial,
57713
57717
  testimonialSlot,
57714
57718
  featureImage,
57715
57719
  featureImageSlot,
57716
57720
  background,
57717
- spacing = "xl",
57718
57721
  pattern,
57719
57722
  patternOpacity,
57720
57723
  className,
57724
+ spacing = "xl",
57721
57725
  containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
57722
57726
  headerClassName,
57723
57727
  headingClassName,
57724
57728
  gridClassName,
57725
57729
  optixFlowConfig
57726
57730
  }) {
57727
- const renderTeamImages = useMemo(() => {
57728
- if (teamImagesSlot) return teamImagesSlot;
57729
- if (!teamImages || teamImages.length === 0) return null;
57731
+ const renderSmallImages = useMemo(() => {
57732
+ if (smallImagesSlot) return smallImagesSlot;
57733
+ if (!smallImages || smallImages.length === 0) return null;
57730
57734
  return /* @__PURE__ */ jsxs(Fragment$1, { children: [
57731
- teamImages[0] && /* @__PURE__ */ jsx("div", { className: "col-[1/2] row-[1/2] w-full", children: /* @__PURE__ */ jsx("div", { className: "h-full max-h-77.5 w-full overflow-hidden rounded-2xl", children: /* @__PURE__ */ jsx(
57735
+ smallImages[0] && /* @__PURE__ */ jsx("div", { className: "col-[1/2] row-[1/2] w-full", children: /* @__PURE__ */ jsx("div", { className: "h-full max-h-77.5 w-full overflow-hidden rounded-2xl", children: /* @__PURE__ */ jsx(
57732
57736
  Img,
57733
57737
  {
57734
- src: teamImages[0].src,
57735
- alt: teamImages[0].alt,
57738
+ src: smallImages[0].src,
57739
+ alt: smallImages[0].alt,
57736
57740
  className: cn(
57737
57741
  "block h-full w-full object-cover object-center",
57738
- teamImages[0].className
57742
+ smallImages[0].className
57739
57743
  ),
57740
57744
  optixFlowConfig
57741
57745
  }
57742
57746
  ) }) }),
57743
- teamImages[1] && /* @__PURE__ */ jsx("div", { className: "col-[2/3] row-[1/2] w-full md:col-[2/3] md:row-[1/2]", children: /* @__PURE__ */ jsx("div", { className: "h-full max-h-77.5 w-full overflow-hidden rounded-2xl", children: /* @__PURE__ */ jsx(
57747
+ smallImages[1] && /* @__PURE__ */ jsx("div", { className: "col-[2/3] row-[1/2] w-full md:col-[2/3] md:row-[1/2]", children: /* @__PURE__ */ jsx("div", { className: "h-full max-h-77.5 w-full overflow-hidden rounded-2xl", children: /* @__PURE__ */ jsx(
57744
57748
  Img,
57745
57749
  {
57746
- src: teamImages[1].src,
57747
- alt: teamImages[1].alt,
57750
+ src: smallImages[1].src,
57751
+ alt: smallImages[1].alt,
57748
57752
  className: cn(
57749
57753
  "block h-full w-full object-cover object-center",
57750
- teamImages[1].className
57754
+ smallImages[1].className
57751
57755
  ),
57752
57756
  optixFlowConfig
57753
57757
  }
57754
57758
  ) }) })
57755
57759
  ] });
57756
- }, [teamImagesSlot, teamImages, optixFlowConfig]);
57760
+ }, [smallImagesSlot, smallImages, optixFlowConfig]);
57757
57761
  const renderTestimonial = useMemo(() => {
57758
57762
  if (testimonialSlot) return testimonialSlot;
57759
57763
  if (!testimonial) return null;
@@ -57843,7 +57847,7 @@ function HeroMentalHealthTeam({
57843
57847
  "p",
57844
57848
  {
57845
57849
  className: cn(
57846
- "text-center text-lg md:text-xl",
57850
+ "text-center text-lg md:text-xl text-balance",
57847
57851
  descriptionClassName
57848
57852
  ),
57849
57853
  children: description
@@ -57868,7 +57872,7 @@ function HeroMentalHealthTeam({
57868
57872
  gridClassName
57869
57873
  ),
57870
57874
  children: [
57871
- renderTeamImages,
57875
+ renderSmallImages,
57872
57876
  renderTestimonial,
57873
57877
  renderFeatureImage
57874
57878
  ]
@@ -58173,67 +58177,122 @@ function HeroBusinessOperationsMosaic({
58173
58177
  }
58174
58178
  );
58175
58179
  }
58180
+ var imageAnimationVariants = [
58181
+ // Top-left: slides in from left + up
58182
+ {
58183
+ hidden: { opacity: 0, x: -40, y: -30, scale: 0.92 },
58184
+ visible: { opacity: 1, x: 0, y: 0, scale: 1 }
58185
+ },
58186
+ // Bottom-left: slides in from left + down
58187
+ {
58188
+ hidden: { opacity: 0, x: -30, y: 40, scale: 0.92 },
58189
+ visible: { opacity: 1, x: 0, y: 0, scale: 1 }
58190
+ },
58191
+ // Top-right: slides in from right + up
58192
+ {
58193
+ hidden: { opacity: 0, x: 40, y: -30, scale: 0.92 },
58194
+ visible: { opacity: 1, x: 0, y: 0, scale: 1 }
58195
+ },
58196
+ // Bottom-right: slides in from right + down
58197
+ {
58198
+ hidden: { opacity: 0, x: 30, y: 40, scale: 0.92 },
58199
+ visible: { opacity: 1, x: 0, y: 0, scale: 1 }
58200
+ }
58201
+ ];
58202
+ var staggerDelays = [0, 0.15, 0.1, 0.25];
58203
+ var imageTransition = {
58204
+ type: "spring",
58205
+ stiffness: 80,
58206
+ damping: 20,
58207
+ mass: 0.8
58208
+ };
58176
58209
  function HeroAgencyAnimatedImages({
58177
58210
  heading,
58178
- subheading,
58179
- action,
58180
- actionSlot,
58211
+ description,
58212
+ descriptionClassName,
58213
+ actions,
58214
+ actionsSlot,
58215
+ actionsClassName,
58181
58216
  images,
58182
58217
  imagesSlot,
58183
58218
  background,
58184
- spacing,
58219
+ spacing = "xl",
58220
+ containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
58185
58221
  pattern,
58186
58222
  patternOpacity,
58187
58223
  className,
58188
- containerClassName,
58189
58224
  contentClassName,
58190
58225
  headingClassName,
58191
- subheadingClassName,
58192
58226
  imagesContainerClassName,
58193
58227
  optixFlowConfig
58194
58228
  }) {
58195
- const renderAction = useMemo(() => {
58196
- if (actionSlot) return actionSlot;
58197
- if (!action) return null;
58198
- const { label, icon, iconAfter, children, className: actionClassName, ...pressableProps } = action;
58199
- return /* @__PURE__ */ jsx(
58200
- Pressable,
58201
- {
58202
- asButton: true,
58203
- className: actionClassName,
58204
- ...pressableProps,
58205
- children: children ?? /* @__PURE__ */ jsxs(Fragment$1, { children: [
58206
- icon,
58207
- label,
58208
- iconAfter
58209
- ] })
58210
- }
58211
- );
58212
- }, [actionSlot, action]);
58213
58229
  const renderImages = useMemo(() => {
58214
58230
  if (imagesSlot) return imagesSlot;
58215
58231
  if (!images || images.length === 0) return null;
58216
58232
  const leftImages = images.slice(0, 2);
58217
58233
  const rightImages = images.slice(2, 4);
58218
- return /* @__PURE__ */ jsxs("div", { className: "grid w-full grid-cols-2 items-center justify-center gap-4", children: [
58219
- /* @__PURE__ */ jsx("div", { className: "flex flex-col items-end justify-center gap-4", children: leftImages.map((image, index) => /* @__PURE__ */ jsx("div", { className: "relative overflow-hidden rounded-lg", children: /* @__PURE__ */ jsx(
58220
- Img,
58221
- {
58222
- src: image.src,
58223
- alt: image.alt,
58224
- className: cn("block h-full w-full object-cover object-center", image.className),
58225
- optixFlowConfig
58226
- }
58227
- ) }, index)) }),
58228
- /* @__PURE__ */ jsx("div", { className: "flex flex-col items-start justify-center gap-4", children: rightImages.map((image, index) => /* @__PURE__ */ jsx("div", { className: "relative overflow-hidden rounded-lg", children: /* @__PURE__ */ jsx(
58229
- Img,
58230
- {
58231
- src: image.src,
58232
- alt: image.alt,
58233
- className: cn("block h-full w-full object-cover object-center", image.className),
58234
- optixFlowConfig
58235
- }
58236
- ) }, index)) })
58234
+ return /* @__PURE__ */ jsxs("div", { className: "grid w-full grid-cols-2 items-center justify-center gap-5", children: [
58235
+ /* @__PURE__ */ jsx("div", { className: "flex flex-col items-end justify-center gap-5 pt-8", children: leftImages.map((image, index) => {
58236
+ const variant = imageAnimationVariants[index];
58237
+ const delay = staggerDelays[index];
58238
+ return /* @__PURE__ */ jsxs(
58239
+ motion.div,
58240
+ {
58241
+ initial: variant.hidden,
58242
+ whileInView: variant.visible,
58243
+ viewport: { once: true, amount: 0.3 },
58244
+ transition: { ...imageTransition, delay },
58245
+ className: "group relative overflow-hidden rounded-xl shadow-lg",
58246
+ children: [
58247
+ /* @__PURE__ */ jsx(
58248
+ Img,
58249
+ {
58250
+ src: image.src,
58251
+ alt: image.alt,
58252
+ className: cn(
58253
+ "block h-full w-full object-cover object-center transition-transform duration-500 ease-out group-hover:scale-105",
58254
+ image.className
58255
+ ),
58256
+ optixFlowConfig
58257
+ }
58258
+ ),
58259
+ /* @__PURE__ */ 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" })
58260
+ ]
58261
+ },
58262
+ index
58263
+ );
58264
+ }) }),
58265
+ /* @__PURE__ */ jsx("div", { className: "flex flex-col items-start justify-center gap-5 pb-8", children: rightImages.map((image, index) => {
58266
+ const globalIndex = index + 2;
58267
+ const variant = imageAnimationVariants[globalIndex];
58268
+ const delay = staggerDelays[globalIndex];
58269
+ return /* @__PURE__ */ jsxs(
58270
+ motion.div,
58271
+ {
58272
+ initial: variant.hidden,
58273
+ whileInView: variant.visible,
58274
+ viewport: { once: true, amount: 0.3 },
58275
+ transition: { ...imageTransition, delay },
58276
+ className: "group relative overflow-hidden rounded-xl shadow-lg",
58277
+ children: [
58278
+ /* @__PURE__ */ jsx(
58279
+ Img,
58280
+ {
58281
+ src: image.src,
58282
+ alt: image.alt,
58283
+ className: cn(
58284
+ "block h-full w-full object-cover object-center transition-transform duration-500 ease-out group-hover:scale-105",
58285
+ image.className
58286
+ ),
58287
+ optixFlowConfig
58288
+ }
58289
+ ),
58290
+ /* @__PURE__ */ 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" })
58291
+ ]
58292
+ },
58293
+ index
58294
+ );
58295
+ }) })
58237
58296
  ] });
58238
58297
  }, [imagesSlot, images, optixFlowConfig]);
58239
58298
  return /* @__PURE__ */ jsx(
@@ -58244,13 +58303,57 @@ function HeroAgencyAnimatedImages({
58244
58303
  pattern,
58245
58304
  patternOpacity,
58246
58305
  className,
58247
- children: /* @__PURE__ */ jsx("div", { className: cn("container max-w-444", containerClassName), children: /* @__PURE__ */ jsxs("div", { className: "grid w-full grid-cols-1 items-center justify-between gap-14 lg:grid-cols-2", children: [
58248
- /* @__PURE__ */ jsxs("div", { className: cn("flex w-full max-w-125 flex-col gap-8 md:gap-14 lg:max-w-full", contentClassName), children: [
58249
- heading && (typeof heading === "string" ? /* @__PURE__ */ jsx("h1", { className: cn("font-serif text-5xl md:text-6xl lg:text-7xl xl:text-[5rem]", headingClassName), children: heading }) : /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading })),
58250
- subheading && (typeof subheading === "string" ? /* @__PURE__ */ jsx("p", { className: cn("font-montserrat text-2xl leading-snug lg:text-3xl xl:text-4xl", subheadingClassName), children: subheading }) : /* @__PURE__ */ jsx("div", { className: subheadingClassName, children: subheading })),
58251
- renderAction
58252
- ] }),
58253
- /* @__PURE__ */ jsx("div", { className: cn("mx-auto w-full max-w-211.5 lg:mx-0", imagesContainerClassName), children: /* @__PURE__ */ jsx(AspectRatio, { ratio: 1.049627792 / 1, children: renderImages }) })
58306
+ containerClassName,
58307
+ children: /* @__PURE__ */ jsx("div", { className: "pt-10 md:pt-0", children: /* @__PURE__ */ jsxs("div", { className: "grid w-full grid-cols-1 items-center justify-between gap-14 lg:grid-cols-2", children: [
58308
+ /* @__PURE__ */ jsxs(
58309
+ "div",
58310
+ {
58311
+ className: cn(
58312
+ "flex w-full max-w-125 flex-col gap-8 md:gap-14 lg:max-w-full",
58313
+ contentClassName
58314
+ ),
58315
+ children: [
58316
+ heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
58317
+ "h1",
58318
+ {
58319
+ className: cn(
58320
+ "text-5xl md:text-6xl lg:text-7xl xl:text-[5rem] text-left text-pretty",
58321
+ headingClassName
58322
+ ),
58323
+ children: heading
58324
+ }
58325
+ ) : /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading })),
58326
+ description && (typeof description === "string" ? /* @__PURE__ */ jsx(
58327
+ "p",
58328
+ {
58329
+ className: cn(
58330
+ "text-left text-lg md:text-xl text-balance",
58331
+ descriptionClassName
58332
+ ),
58333
+ children: description
58334
+ }
58335
+ ) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description })),
58336
+ /* @__PURE__ */ jsx(
58337
+ BlockActions,
58338
+ {
58339
+ actions,
58340
+ actionsSlot,
58341
+ actionsClassName
58342
+ }
58343
+ )
58344
+ ]
58345
+ }
58346
+ ),
58347
+ /* @__PURE__ */ jsx(
58348
+ "div",
58349
+ {
58350
+ className: cn(
58351
+ "mx-auto w-full max-w-211.5 lg:mx-0",
58352
+ imagesContainerClassName
58353
+ ),
58354
+ children: /* @__PURE__ */ jsx(AspectRatio, { ratio: 1.049627792 / 1, children: renderImages })
58355
+ }
58356
+ )
58254
58357
  ] }) })
58255
58358
  }
58256
58359
  );
@@ -58260,6 +58363,7 @@ function HeroWelcomeAsymmetricImages({
58260
58363
  description,
58261
58364
  actions,
58262
58365
  actionsSlot,
58366
+ actionsClassName,
58263
58367
  images,
58264
58368
  imagesSlot,
58265
58369
  background,
@@ -58273,25 +58377,6 @@ function HeroWelcomeAsymmetricImages({
58273
58377
  descriptionClassName,
58274
58378
  optixFlowConfig
58275
58379
  }) {
58276
- const renderActions = useMemo(() => {
58277
- if (actionsSlot) return actionsSlot;
58278
- if (!actions || actions.length === 0) return null;
58279
- return /* @__PURE__ */ jsx("div", { className: "flex flex-col gap-4 sm:flex-row", children: actions.map((action, idx) => /* @__PURE__ */ jsxs(
58280
- Pressable,
58281
- {
58282
- href: action.href,
58283
- onClick: action.onClick,
58284
- asButton: true,
58285
- variant: action.variant || "default",
58286
- size: action.size || "lg",
58287
- children: [
58288
- action.label,
58289
- action.icon
58290
- ]
58291
- },
58292
- idx
58293
- )) });
58294
- }, [actionsSlot, actions]);
58295
58380
  const renderImages = useMemo(() => {
58296
58381
  if (imagesSlot) return imagesSlot;
58297
58382
  if (!images || images.length < 4) return null;
@@ -58360,36 +58445,25 @@ function HeroWelcomeAsymmetricImages({
58360
58445
  ),
58361
58446
  children: heading
58362
58447
  }
58363
- ) : /* @__PURE__ */ jsx(
58364
- "h1",
58365
- {
58366
- className: cn(
58367
- "mb-8 text-4xl font-normal text-balance md:text-7xl",
58368
- headingClassName
58369
- ),
58370
- children: heading
58371
- }
58372
- )),
58448
+ ) : heading),
58373
58449
  description && (typeof description === "string" ? /* @__PURE__ */ jsx(
58374
58450
  "p",
58375
58451
  {
58376
58452
  className: cn(
58377
- "mb-12 max-w-[70%] text-xl font-normal text-balance",
58453
+ "mb-12 max-w-full md:max-w-[70%] text-lg md:text-xl font-normal text-balance",
58378
58454
  descriptionClassName
58379
58455
  ),
58380
58456
  children: description
58381
58457
  }
58382
- ) : /* @__PURE__ */ jsx(
58383
- "div",
58458
+ ) : description),
58459
+ /* @__PURE__ */ jsx(
58460
+ BlockActions,
58384
58461
  {
58385
- className: cn(
58386
- "mb-12 max-w-[70%] text-xl font-normal text-balance",
58387
- descriptionClassName
58388
- ),
58389
- children: description
58462
+ actions,
58463
+ actionsSlot,
58464
+ actionsClassName
58390
58465
  }
58391
- )),
58392
- renderActions
58466
+ )
58393
58467
  ] }),
58394
58468
  renderImages
58395
58469
  ] }) })
@@ -58399,6 +58473,9 @@ function HeroWelcomeAsymmetricImages({
58399
58473
  function HeroStartupLaunchCta({
58400
58474
  badge,
58401
58475
  badgeIcon,
58476
+ badgeCard,
58477
+ badgeCardSlot,
58478
+ badgeClassName,
58402
58479
  heading,
58403
58480
  description,
58404
58481
  actions,
@@ -58408,17 +58485,14 @@ function HeroStartupLaunchCta({
58408
58485
  socialProofText,
58409
58486
  imageSrc,
58410
58487
  imageAlt,
58411
- badgeCard,
58412
- badgeCardSlot,
58413
58488
  background,
58414
58489
  pattern,
58415
58490
  patternOpacity,
58416
58491
  patternClassName,
58417
58492
  className,
58418
58493
  containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
58419
- spacing = "pt-28 pb-8 md:pt-32 md:pb-32",
58494
+ spacing = "xl",
58420
58495
  contentClassName,
58421
- badgeClassName,
58422
58496
  headingClassName,
58423
58497
  descriptionClassName,
58424
58498
  actionsClassName,
@@ -58426,34 +58500,6 @@ function HeroStartupLaunchCta({
58426
58500
  imageClassName,
58427
58501
  optixFlowConfig
58428
58502
  }) {
58429
- const renderActions = useMemo(() => {
58430
- if (actionsSlot) return actionsSlot;
58431
- if (!actions || actions.length === 0) return null;
58432
- return actions.map((action, index) => {
58433
- const {
58434
- label,
58435
- icon,
58436
- iconAfter,
58437
- children,
58438
- className: actionClassName,
58439
- ...pressableProps
58440
- } = action;
58441
- return /* @__PURE__ */ jsx(
58442
- Pressable,
58443
- {
58444
- asButton: true,
58445
- className: actionClassName,
58446
- ...pressableProps,
58447
- children: children ?? /* @__PURE__ */ jsxs(Fragment$1, { children: [
58448
- icon,
58449
- label,
58450
- iconAfter
58451
- ] })
58452
- },
58453
- index
58454
- );
58455
- });
58456
- }, [actionsSlot, actions]);
58457
58503
  const renderAvatars = useMemo(() => {
58458
58504
  if (avatarsSlot) return avatarsSlot;
58459
58505
  if (!avatars || avatars.length === 0) return null;
@@ -58500,7 +58546,7 @@ function HeroStartupLaunchCta({
58500
58546
  patternClassName,
58501
58547
  className,
58502
58548
  containerClassName,
58503
- children: /* @__PURE__ */ jsx("div", { className: "relative", children: /* @__PURE__ */ jsxs("div", { className: "grid items-center gap-12 lg:grid-cols-2 lg:gap-20", children: [
58549
+ children: /* @__PURE__ */ jsx("div", { className: "pt-8 md:pt-0", children: /* @__PURE__ */ jsxs("div", { className: "grid items-center gap-12 lg:grid-cols-2 lg:gap-20", children: [
58504
58550
  /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col gap-8", contentClassName), children: [
58505
58551
  badge && /* @__PURE__ */ jsxs(Badge, { className: cn("px-4", badgeClassName), children: [
58506
58552
  badgeIcon,
@@ -58510,21 +58556,28 @@ function HeroStartupLaunchCta({
58510
58556
  "h1",
58511
58557
  {
58512
58558
  className: cn(
58513
- "text-4xl font-bold tracking-tight md:text-5xl lg:text-6xl leading-snug text-balance",
58559
+ "mb-8 text-4xl font-normal text-balance md:text-7xl",
58514
58560
  headingClassName
58515
58561
  ),
58516
58562
  children: heading
58517
58563
  }
58518
- ) : /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading })),
58519
- description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-lg text-balance", descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description })),
58520
- (actionsSlot || actions && actions.length > 0) && /* @__PURE__ */ jsx(
58521
- "div",
58564
+ ) : heading),
58565
+ description && (typeof description === "string" ? /* @__PURE__ */ jsx(
58566
+ "p",
58522
58567
  {
58523
58568
  className: cn(
58524
- "flex flex-col gap-4 sm:flex-row",
58525
- actionsClassName
58569
+ "mb-12 max-w-full md:max-w-[70%] text-lg md:text-xl font-normal text-balance",
58570
+ descriptionClassName
58526
58571
  ),
58527
- children: renderActions
58572
+ children: description
58573
+ }
58574
+ ) : description),
58575
+ /* @__PURE__ */ jsx(
58576
+ BlockActions,
58577
+ {
58578
+ actions,
58579
+ actionsSlot,
58580
+ actionsClassName
58528
58581
  }
58529
58582
  ),
58530
58583
  (avatarsSlot || avatars || socialProofText) && /* @__PURE__ */ jsxs(
@@ -58567,90 +58620,61 @@ function HeroStartupLaunchCta({
58567
58620
  );
58568
58621
  }
58569
58622
  function HeroEnterpriseSecurity({
58570
- badgeText,
58623
+ badge,
58571
58624
  badgeIcon,
58572
- badgeSlot,
58625
+ badgeClassName,
58573
58626
  heading,
58574
58627
  description,
58575
58628
  actions,
58576
58629
  actionsSlot,
58577
58630
  features,
58578
58631
  featuresSlot,
58579
- logos,
58580
- logosSlot,
58581
58632
  background,
58582
- spacing,
58583
58633
  pattern,
58584
58634
  patternOpacity,
58635
+ patternClassName,
58585
58636
  className,
58586
- containerClassName,
58637
+ containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
58638
+ spacing = "xl",
58587
58639
  contentClassName,
58588
58640
  headingClassName,
58589
58641
  descriptionClassName,
58590
58642
  actionsClassName,
58591
- featuresClassName,
58592
- logosClassName,
58593
- optixFlowConfig
58643
+ featuresClassName
58594
58644
  }) {
58595
- const renderBadge = useMemo(() => {
58596
- if (badgeSlot) return badgeSlot;
58597
- if (!badgeText && !badgeIcon) return null;
58598
- return /* @__PURE__ */ jsxs("div", { className: cn(
58599
- "inline-flex items-center gap-2 rounded-full border border-border px-4 py-2 text-sm",
58600
- getNestedCardBg(background, "muted"),
58601
- getNestedCardTextColor(background)
58602
- ), children: [
58603
- badgeIcon && /* @__PURE__ */ jsx(DynamicIcon, { name: badgeIcon, size: 16, className: "text-success" }),
58604
- /* @__PURE__ */ jsx("span", { children: badgeText })
58605
- ] });
58606
- }, [badgeSlot, badgeText, badgeIcon]);
58607
- const renderActions = useMemo(() => {
58608
- if (actionsSlot) return actionsSlot;
58609
- if (!actions || actions.length === 0) return null;
58610
- return /* @__PURE__ */ 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) => {
58611
- const { label, icon, iconAfter, children, className: actionClassName, ...pressableProps } = action;
58612
- return /* @__PURE__ */ jsx(
58613
- Pressable,
58614
- {
58615
- asButton: true,
58616
- className: actionClassName,
58617
- ...pressableProps,
58618
- children: children ?? /* @__PURE__ */ jsxs(Fragment$1, { children: [
58619
- icon,
58620
- label,
58621
- iconAfter
58622
- ] })
58623
- },
58624
- index
58625
- );
58626
- }) });
58627
- }, [actionsSlot, actions, actionsClassName]);
58628
58645
  const renderFeatures = useMemo(() => {
58629
58646
  if (featuresSlot) return featuresSlot;
58630
58647
  if (!features || features.length === 0) return null;
58631
- return /* @__PURE__ */ jsx("div", { className: cn("mt-20 grid gap-8 md:grid-cols-3", featuresClassName), children: features.map((feature, index) => /* @__PURE__ */ jsxs("div", { className: cn("rounded-2xl border border-border p-6 text-center", getNestedCardBg(background, "card")), children: [
58632
- /* @__PURE__ */ 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__ */ jsx(DynamicIcon, { name: feature.iconName || "lucide/check", size: 24, className: feature.iconColorClass || getAccentColor(background) }) }),
58633
- /* @__PURE__ */ jsx("h3", { className: "mb-2 text-lg font-semibold ", children: feature.title }),
58634
- feature.description && /* @__PURE__ */ jsx("p", { className: cn("text-sm", getTextColor(background, "muted")), children: feature.description })
58635
- ] }, index)) });
58648
+ return /* @__PURE__ */ jsx("div", { className: cn("mt-20 grid gap-8 md:grid-cols-3", featuresClassName), children: features.map((feature, index) => /* @__PURE__ */ jsxs(
58649
+ Pressable,
58650
+ {
58651
+ href: feature.href,
58652
+ className: cn("rounded-2xl border border-border p-6 text-center"),
58653
+ children: [
58654
+ /* @__PURE__ */ jsx(
58655
+ "div",
58656
+ {
58657
+ className: cn(
58658
+ "mx-auto mb-4 flex h-12 w-12 items-center justify-center rounded-full",
58659
+ feature.iconBgClass
58660
+ ),
58661
+ children: feature.icon ?? /* @__PURE__ */ jsx(
58662
+ DynamicIcon,
58663
+ {
58664
+ name: feature.iconName || "lucide/check",
58665
+ size: 24,
58666
+ className: feature.iconColorClass
58667
+ }
58668
+ )
58669
+ }
58670
+ ),
58671
+ /* @__PURE__ */ jsx("h3", { className: "mb-2 text-lg font-semibold ", children: feature.title }),
58672
+ feature.description && /* @__PURE__ */ jsx("p", { className: "text-sm", children: feature.description })
58673
+ ]
58674
+ },
58675
+ index
58676
+ )) });
58636
58677
  }, [featuresSlot, features, featuresClassName]);
58637
- const renderLogos = useMemo(() => {
58638
- if (logosSlot) return logosSlot;
58639
- if (!logos || logos.length === 0) return null;
58640
- return /* @__PURE__ */ jsx("div", { className: cn("mt-16 flex flex-wrap items-center justify-center gap-8", logosClassName), children: logos.map((logo, index) => {
58641
- const logoSrc = typeof logo.src === "string" ? logo.src : logo.src.light;
58642
- return /* @__PURE__ */ jsx(
58643
- Img,
58644
- {
58645
- src: logoSrc,
58646
- alt: logo.alt,
58647
- className: cn("h-8 opacity-50 grayscale", logo.className),
58648
- optixFlowConfig
58649
- },
58650
- index
58651
- );
58652
- }) });
58653
- }, [logosSlot, logos, logosClassName, optixFlowConfig]);
58654
58678
  return /* @__PURE__ */ jsx(
58655
58679
  Section,
58656
58680
  {
@@ -58658,29 +58682,58 @@ function HeroEnterpriseSecurity({
58658
58682
  spacing,
58659
58683
  pattern,
58660
58684
  patternOpacity,
58685
+ patternClassName,
58661
58686
  className,
58662
- children: /* @__PURE__ */ jsxs("div", { className: cn("container", containerClassName), children: [
58687
+ containerClassName,
58688
+ children: /* @__PURE__ */ jsxs("div", { className: "pt-8 md:pt-0", children: [
58663
58689
  /* @__PURE__ */ jsxs("div", { className: cn("mx-auto max-w-4xl text-center", contentClassName), children: [
58664
- renderBadge,
58665
- heading && (typeof heading === "string" ? /* @__PURE__ */ jsx("h1", { className: cn("mt-8 text-4xl font-bold tracking-tight md:text-5xl lg:text-6xl", headingClassName), children: heading }) : /* @__PURE__ */ jsx("h1", { className: cn("mt-8 text-4xl font-bold tracking-tight md:text-5xl lg:text-6xl", headingClassName), children: heading })),
58666
- description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mt-6 text-lg md:text-xl", getTextColor(background, "muted"), descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description })),
58667
- renderActions
58690
+ badge && /* @__PURE__ */ jsxs(Badge, { className: cn("px-4", badgeClassName), children: [
58691
+ badgeIcon,
58692
+ typeof badge === "string" ? /* @__PURE__ */ jsx("span", { children: badge }) : badge
58693
+ ] }),
58694
+ heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
58695
+ "h1",
58696
+ {
58697
+ className: cn(
58698
+ "mb-8 text-4xl font-normal text-balance md:text-7xl",
58699
+ headingClassName
58700
+ ),
58701
+ children: heading
58702
+ }
58703
+ ) : heading),
58704
+ description && (typeof description === "string" ? /* @__PURE__ */ jsx(
58705
+ "p",
58706
+ {
58707
+ className: cn(
58708
+ "mb-12 max-w-full md:max-w-[70%] text-lg md:text-xl font-normal text-balance",
58709
+ descriptionClassName
58710
+ ),
58711
+ children: description
58712
+ }
58713
+ ) : description),
58714
+ /* @__PURE__ */ jsx(
58715
+ BlockActions,
58716
+ {
58717
+ actions,
58718
+ actionsSlot,
58719
+ actionsClassName
58720
+ }
58721
+ )
58668
58722
  ] }),
58669
- renderFeatures,
58670
- renderLogos
58723
+ renderFeatures
58671
58724
  ] })
58672
58725
  }
58673
58726
  );
58674
58727
  }
58675
58728
  function HeroCreativeStudioStacked({
58729
+ videoAspectRatio = "horizontal",
58676
58730
  tagline,
58677
58731
  heading,
58678
58732
  description,
58679
- primaryAction,
58680
- videoButtonLabel = "How it works?",
58681
- videoUrl = "https://www.youtube.com/embed/your-video-id",
58682
- videoDialogTitle = "Presentation Video",
58683
- actionsSlot,
58733
+ videoAction,
58734
+ actions,
58735
+ onVideoClick,
58736
+ videoDialog,
58684
58737
  images,
58685
58738
  imagesSlot,
58686
58739
  background,
@@ -58698,100 +58751,85 @@ function HeroCreativeStudioStacked({
58698
58751
  optixFlowConfig
58699
58752
  }) {
58700
58753
  const [isVideoOpen, setIsVideoOpen] = useState(false);
58701
- const renderActions = useMemo(() => {
58702
- if (actionsSlot) return actionsSlot;
58703
- if (!primaryAction) return null;
58704
- const { label, icon, iconAfter, children, className: actionClassName, ...pressableProps } = primaryAction;
58705
- return /* @__PURE__ */ jsxs(Fragment$1, { children: [
58706
- /* @__PURE__ */ jsx(
58707
- Pressable,
58708
- {
58709
- asButton: true,
58710
- className: actionClassName,
58711
- ...pressableProps,
58712
- children: children ?? /* @__PURE__ */ jsxs(Fragment$1, { children: [
58713
- icon,
58714
- label,
58715
- iconAfter
58716
- ] })
58717
- }
58718
- ),
58719
- /* @__PURE__ */ jsxs(
58720
- Pressable,
58721
- {
58722
- href: "#",
58723
- onClick: () => setIsVideoOpen(true),
58724
- asButton: true,
58725
- variant: "ghost",
58726
- 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",
58727
- children: [
58728
- /* @__PURE__ */ jsx(
58729
- DynamicIcon,
58730
- {
58731
- name: "lucide/play",
58732
- size: 12,
58733
- className: "fill-neutral-950"
58734
- }
58735
- ),
58736
- /* @__PURE__ */ jsx("p", { children: videoButtonLabel })
58737
- ]
58738
- }
58739
- )
58740
- ] });
58741
- }, [actionsSlot, primaryAction, videoButtonLabel, setIsVideoOpen]);
58754
+ const handleVideoClick = () => {
58755
+ if (onVideoClick) {
58756
+ onVideoClick();
58757
+ } else {
58758
+ setIsVideoOpen(true);
58759
+ }
58760
+ };
58742
58761
  const renderImages = useMemo(() => {
58743
58762
  if (imagesSlot) return imagesSlot;
58744
58763
  if (!images || images.length === 0) return null;
58745
- return /* @__PURE__ */ jsxs("div", { className: cn("relative mx-auto aspect-[0.789340102/1] max-w-100", imagesClassName), children: [
58746
- images[0] && /* @__PURE__ */ jsx("div", { className: "absolute bottom-0 left-0 z-30 w-[63%]", children: /* @__PURE__ */ jsx(
58747
- AspectRatio,
58748
- {
58749
- ratio: 0.724137931 / 1,
58750
- className: "overflow-hidden",
58751
- children: /* @__PURE__ */ jsx(
58752
- Img,
58764
+ const sharedImgWrapperClassName = "overflow-hidden rounded-xl shadow-xl";
58765
+ return /* @__PURE__ */ jsxs(
58766
+ "div",
58767
+ {
58768
+ className: cn(
58769
+ "relative mx-auto aspect-[0.789340102/1] max-w-100",
58770
+ imagesClassName
58771
+ ),
58772
+ children: [
58773
+ images[0] && /* @__PURE__ */ jsx("div", { className: "absolute bottom-0 left-0 z-30 w-[63%]", children: /* @__PURE__ */ jsx(
58774
+ AspectRatio,
58753
58775
  {
58754
- src: images[0].src,
58755
- alt: images[0].alt,
58756
- className: cn("size-full object-cover object-center", images[0].className),
58757
- optixFlowConfig
58776
+ ratio: 0.724137931 / 1,
58777
+ className: sharedImgWrapperClassName,
58778
+ children: /* @__PURE__ */ jsx(
58779
+ Img,
58780
+ {
58781
+ src: images[0].src,
58782
+ alt: images[0].alt,
58783
+ className: cn(
58784
+ "size-full object-cover object-center",
58785
+ images[0].className
58786
+ ),
58787
+ optixFlowConfig
58788
+ }
58789
+ )
58758
58790
  }
58759
- )
58760
- }
58761
- ) }),
58762
- images[1] && /* @__PURE__ */ jsx("div", { className: "absolute top-1/2 left-1/2 z-20 w-[63%] -translate-x-1/2 -translate-y-1/2", children: /* @__PURE__ */ jsx(
58763
- AspectRatio,
58764
- {
58765
- ratio: 0.724137931 / 1,
58766
- className: "overflow-hidden",
58767
- children: /* @__PURE__ */ jsx(
58768
- Img,
58791
+ ) }),
58792
+ images[1] && /* @__PURE__ */ jsx("div", { className: "absolute top-1/2 left-1/2 z-20 w-[63%] -translate-x-1/2 -translate-y-1/2", children: /* @__PURE__ */ jsx(
58793
+ AspectRatio,
58769
58794
  {
58770
- src: images[1].src,
58771
- alt: images[1].alt,
58772
- className: cn("size-full object-cover object-center", images[1].className),
58773
- optixFlowConfig
58795
+ ratio: 0.724137931 / 1,
58796
+ className: sharedImgWrapperClassName,
58797
+ children: /* @__PURE__ */ jsx(
58798
+ Img,
58799
+ {
58800
+ src: images[1].src,
58801
+ alt: images[1].alt,
58802
+ className: cn(
58803
+ "size-full object-cover object-center",
58804
+ images[1].className
58805
+ ),
58806
+ optixFlowConfig
58807
+ }
58808
+ )
58774
58809
  }
58775
- )
58776
- }
58777
- ) }),
58778
- images[2] && /* @__PURE__ */ jsx("div", { className: "absolute top-0 right-0 z-10 w-[63%]", children: /* @__PURE__ */ jsx(
58779
- AspectRatio,
58780
- {
58781
- ratio: 0.724137931 / 1,
58782
- className: "overflow-hidden",
58783
- children: /* @__PURE__ */ jsx(
58784
- Img,
58810
+ ) }),
58811
+ images[2] && /* @__PURE__ */ jsx("div", { className: "absolute top-0 right-0 z-10 w-[63%]", children: /* @__PURE__ */ jsx(
58812
+ AspectRatio,
58785
58813
  {
58786
- src: images[2].src,
58787
- alt: images[2].alt,
58788
- className: cn("size-full object-cover object-center", images[2].className),
58789
- optixFlowConfig
58814
+ ratio: 0.724137931 / 1,
58815
+ className: sharedImgWrapperClassName,
58816
+ children: /* @__PURE__ */ jsx(
58817
+ Img,
58818
+ {
58819
+ src: images[2].src,
58820
+ alt: images[2].alt,
58821
+ className: cn(
58822
+ "size-full object-cover object-center",
58823
+ images[2].className
58824
+ ),
58825
+ optixFlowConfig
58826
+ }
58827
+ )
58790
58828
  }
58791
- )
58792
- }
58793
- ) })
58794
- ] });
58829
+ ) })
58830
+ ]
58831
+ }
58832
+ );
58795
58833
  }, [imagesSlot, images, imagesClassName, optixFlowConfig]);
58796
58834
  return /* @__PURE__ */ jsxs(Fragment, { children: [
58797
58835
  /* @__PURE__ */ jsx(
@@ -58804,106 +58842,117 @@ function HeroCreativeStudioStacked({
58804
58842
  className: cn(className),
58805
58843
  children: /* @__PURE__ */ jsx("div", { className: cn("container", containerClassName), children: /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 items-center gap-10 lg:grid-cols-2", children: [
58806
58844
  /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col gap-6", contentClassName), children: [
58807
- tagline && (typeof tagline === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-sm font-medium tracking-wider uppercase", getTextColor(background, "muted"), taglineClassName), children: tagline }) : /* @__PURE__ */ jsx("div", { className: taglineClassName, children: tagline })),
58845
+ tagline && (typeof tagline === "string" ? /* @__PURE__ */ jsx(
58846
+ "p",
58847
+ {
58848
+ className: cn(
58849
+ "text-sm font-medium tracking-wider uppercase",
58850
+ taglineClassName
58851
+ ),
58852
+ children: tagline
58853
+ }
58854
+ ) : /* @__PURE__ */ jsx("div", { className: taglineClassName, children: tagline })),
58808
58855
  /* @__PURE__ */ jsxs("div", { className: "flex max-w-160 flex-col gap-6", children: [
58809
- heading && (typeof heading === "string" ? /* @__PURE__ */ jsx("h1", { className: cn("text-4xl leading-tight font-medium md:text-5xl xl:text-6xl", headingClassName), children: heading }) : /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading })),
58810
- description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-xl text-balance", getTextColor(background, "muted"), descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description }))
58856
+ heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
58857
+ "h1",
58858
+ {
58859
+ className: cn(
58860
+ "max-w-[920px] text-center text-4xl leading-tight font-semibold md:text-6xl lg:text-7xl text-balance",
58861
+ headingClassName
58862
+ ),
58863
+ children: heading
58864
+ }
58865
+ ) : heading),
58866
+ description && (typeof description === "string" ? /* @__PURE__ */ jsx(
58867
+ "p",
58868
+ {
58869
+ className: cn(
58870
+ "max-w-[750px] text-center text-base leading-relaxed font-normal md:text-xl text-balance",
58871
+ descriptionClassName
58872
+ ),
58873
+ children: description
58874
+ }
58875
+ ) : description)
58811
58876
  ] }),
58812
- /* @__PURE__ */ jsx("div", { className: cn("flex flex-wrap gap-4 py-4", actionsClassName), children: renderActions })
58877
+ /* @__PURE__ */ jsxs(
58878
+ "div",
58879
+ {
58880
+ className: cn(
58881
+ "flex flex-col md:flex-row flex-wrap gap-4",
58882
+ actionsClassName
58883
+ ),
58884
+ children: [
58885
+ videoAction && videoDialog?.videoUrl ? /* @__PURE__ */ jsx(
58886
+ ActionComponent,
58887
+ {
58888
+ action: {
58889
+ ...videoAction,
58890
+ onClick: handleVideoClick
58891
+ }
58892
+ }
58893
+ ) : null,
58894
+ actions?.map((action, index) => /* @__PURE__ */ jsx(ActionComponent, { action }, index))
58895
+ ]
58896
+ }
58897
+ )
58813
58898
  ] }),
58814
58899
  /* @__PURE__ */ jsx("div", { children: renderImages })
58815
58900
  ] }) })
58816
58901
  }
58817
58902
  ),
58818
- /* @__PURE__ */ jsx(Dialog, { open: isVideoOpen, onOpenChange: setIsVideoOpen, children: /* @__PURE__ */ jsxs(DialogContent, { className: "sm:max-w-[800px]", children: [
58819
- /* @__PURE__ */ jsx(DialogHeader, { children: /* @__PURE__ */ jsx(DialogTitle, { children: videoDialogTitle }) }),
58820
- /* @__PURE__ */ jsx("div", { className: "aspect-video", children: /* @__PURE__ */ jsx(
58821
- "iframe",
58822
- {
58823
- className: "h-full w-full",
58824
- src: videoUrl,
58825
- title: videoDialogTitle,
58826
- allow: "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",
58827
- allowFullScreen: true
58828
- }
58829
- ) })
58830
- ] }) })
58831
- ] });
58832
- }
58833
- function HeroDigitalAgencyFullscreen({
58834
- heading,
58835
- description,
58836
- actions,
58837
- actionsSlot,
58838
- footerLabel,
58839
- footerSublabel,
58840
- footerAction,
58841
- footerSlot,
58842
- backgroundImage,
58843
- background,
58844
- spacing,
58845
- pattern,
58846
- patternOpacity,
58847
- className,
58848
- containerClassName,
58849
- contentClassName,
58850
- headingClassName,
58851
- descriptionClassName,
58852
- actionsClassName,
58853
- footerClassName
58854
- }) {
58855
- const renderActions = useMemo(() => {
58856
- if (actionsSlot) return actionsSlot;
58857
- if (!actions || actions.length === 0) return null;
58858
- return /* @__PURE__ */ jsx("div", { className: cn("mt-8 flex flex-wrap items-center justify-center gap-4", actionsClassName), children: actions.map((action, index) => {
58859
- const { label, icon, iconAfter, children, className: actionClassName, ...pressableProps } = action;
58860
- return /* @__PURE__ */ jsx(
58861
- Pressable,
58862
- {
58863
- asButton: true,
58864
- className: actionClassName,
58865
- ...pressableProps,
58866
- children: children ?? /* @__PURE__ */ jsxs(Fragment$1, { children: [
58867
- icon,
58868
- label,
58869
- iconAfter
58870
- ] })
58871
- },
58872
- index
58873
- );
58874
- }) });
58875
- }, [actionsSlot, actions, actionsClassName]);
58876
- const renderFooter = useMemo(() => {
58877
- if (footerSlot) return footerSlot;
58878
- if (!footerAction) return null;
58879
- const { className: footerActionClassName, ...footerActionProps } = footerAction;
58880
- return /* @__PURE__ */ 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: [
58881
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3", children: [
58882
- /* @__PURE__ */ jsx("div", { className: cn("h-8 w-1", getAccentColor(background)) }),
58883
- /* @__PURE__ */ jsxs("div", { className: cn("text-sm font-medium", getTextColor(background, "muted")), children: [
58884
- footerLabel && (typeof footerLabel === "string" ? /* @__PURE__ */ jsx("p", { className: getAccentColor(background), children: footerLabel }) : footerLabel),
58885
- footerSublabel && (typeof footerSublabel === "string" ? /* @__PURE__ */ jsx("p", { children: footerSublabel }) : footerSublabel)
58886
- ] })
58887
- ] }),
58888
- /* @__PURE__ */ jsx(
58889
- Pressable,
58890
- {
58891
- asButton: true,
58892
- className: footerActionClassName,
58893
- ...footerActionProps,
58894
- children: /* @__PURE__ */ jsx(
58895
- DynamicIcon,
58903
+ /* @__PURE__ */ jsx(Dialog, { open: isVideoOpen, onOpenChange: setIsVideoOpen, children: /* @__PURE__ */ jsxs(
58904
+ DialogContent,
58905
+ {
58906
+ className: cn(
58907
+ videoAspectRatio === "vertical" ? "sm:max-w-100" : "sm:max-w-200"
58908
+ ),
58909
+ children: [
58910
+ /* @__PURE__ */ jsx(DialogHeader, { children: /* @__PURE__ */ jsx(DialogTitle, { children: videoDialog?.title }) }),
58911
+ /* @__PURE__ */ jsx(
58912
+ "div",
58896
58913
  {
58897
- name: "lucide/arrow-down",
58898
- size: 20,
58899
- className: "m-auto stroke-primary"
58914
+ className: videoAspectRatio === "vertical" ? "aspect-9/16" : "aspect-video",
58915
+ children: /* @__PURE__ */ jsx("video", { controls: true, autoPlay: true, className: "h-full w-full rounded-lg", children: /* @__PURE__ */ jsx("source", { src: videoDialog?.videoUrl, type: "video/mp4" }) })
58900
58916
  }
58901
58917
  )
58902
- }
58903
- )
58904
- ] });
58905
- }, [footerSlot, footerAction, footerLabel, footerSublabel, footerClassName]);
58906
- return /* @__PURE__ */ jsx(
58918
+ ]
58919
+ }
58920
+ ) })
58921
+ ] });
58922
+ }
58923
+ function HeroDigitalAgencyFullscreen({
58924
+ heading,
58925
+ description,
58926
+ actions,
58927
+ actionsSlot,
58928
+ backgroundImage,
58929
+ background,
58930
+ spacing = "none",
58931
+ pattern,
58932
+ patternOpacity,
58933
+ className,
58934
+ containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
58935
+ contentClassName,
58936
+ headingClassName,
58937
+ descriptionClassName,
58938
+ actionsClassName,
58939
+ optixFlowConfig
58940
+ }) {
58941
+ const [isImageLoaded, setIsImageLoaded] = useState(false);
58942
+ const bgImageRef = useRef(null);
58943
+ useEffect(() => {
58944
+ if (!backgroundImage || !bgImageRef.current) return;
58945
+ const imgEl = bgImageRef.current.querySelector("img");
58946
+ if (!imgEl) return;
58947
+ if (imgEl.complete && imgEl.naturalWidth > 0) {
58948
+ setIsImageLoaded(true);
58949
+ return;
58950
+ }
58951
+ const handleLoad = () => setIsImageLoaded(true);
58952
+ imgEl.addEventListener("load", handleLoad);
58953
+ return () => imgEl.removeEventListener("load", handleLoad);
58954
+ }, [backgroundImage]);
58955
+ return /* @__PURE__ */ jsxs(
58907
58956
  Section,
58908
58957
  {
58909
58958
  background,
@@ -58911,18 +58960,71 @@ function HeroDigitalAgencyFullscreen({
58911
58960
  pattern,
58912
58961
  patternOpacity,
58913
58962
  className: cn(
58914
- "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-['']",
58963
+ "relative flex h-full min-h-screen w-screen items-center justify-center overflow-hidden pb-0 pt-0 md:pt-0 px-0",
58915
58964
  className
58916
58965
  ),
58917
- style: { backgroundImage: backgroundImage ? `url('${backgroundImage}')` : void 0 },
58918
- children: /* @__PURE__ */ jsx("div", { className: cn("relative z-10 mx-auto flex size-full max-w-500 px-4 py-9", containerClassName), children: /* @__PURE__ */ jsxs("div", { className: "flex w-full flex-col justify-between gap-10", children: [
58919
- /* @__PURE__ */ 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: [
58920
- heading && (typeof heading === "string" ? /* @__PURE__ */ jsx("h1", { className: cn("text-center text-4xl leading-tight font-medium sm:text-5xl md:text-6xl", headingClassName), children: heading }) : /* @__PURE__ */ jsx("h1", { className: cn("text-center text-4xl leading-tight font-medium sm:text-5xl md:text-6xl", headingClassName), children: heading })),
58921
- description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-center text-lg text-balance md:text-2xl", descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description })),
58922
- renderActions
58923
- ] }),
58924
- renderFooter
58925
- ] }) })
58966
+ containerClassName,
58967
+ children: [
58968
+ backgroundImage && /* @__PURE__ */ jsx(
58969
+ "div",
58970
+ {
58971
+ ref: bgImageRef,
58972
+ className: cn(
58973
+ "absolute inset-0 transition-[filter] duration-1000 ease-out",
58974
+ isImageLoaded ? "blur-0" : "blur-xl"
58975
+ ),
58976
+ children: /* @__PURE__ */ jsx(
58977
+ Img,
58978
+ {
58979
+ src: backgroundImage,
58980
+ alt: "",
58981
+ className: "h-full w-full brightness-50 object-cover object-center",
58982
+ eager: true,
58983
+ optixFlowConfig
58984
+ }
58985
+ )
58986
+ }
58987
+ ),
58988
+ /* @__PURE__ */ jsx("div", { className: "relative", children: /* @__PURE__ */ jsx("div", { className: "flex w-full flex-col justify-between gap-10", children: /* @__PURE__ */ jsxs(
58989
+ "div",
58990
+ {
58991
+ className: cn(
58992
+ "mx-auto flex max-w-125 flex-1 flex-col items-center justify-center gap-7 sm:max-w-150 md:max-w-200",
58993
+ contentClassName
58994
+ ),
58995
+ children: [
58996
+ heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
58997
+ "h1",
58998
+ {
58999
+ className: cn(
59000
+ "mb-8 text-4xl font-normal text-balance md:text-7xl",
59001
+ headingClassName
59002
+ ),
59003
+ children: heading
59004
+ }
59005
+ ) : heading),
59006
+ description && (typeof description === "string" ? /* @__PURE__ */ jsx(
59007
+ "p",
59008
+ {
59009
+ className: cn(
59010
+ "mb-12 max-w-full md:max-w-[70%] text-lg md:text-xl font-normal text-balance",
59011
+ descriptionClassName
59012
+ ),
59013
+ children: description
59014
+ }
59015
+ ) : description),
59016
+ /* @__PURE__ */ jsx(
59017
+ BlockActions,
59018
+ {
59019
+ actions,
59020
+ actionsSlot,
59021
+ actionsClassName
59022
+ }
59023
+ )
59024
+ ]
59025
+ }
59026
+ ) }) })
59027
+ ]
58926
59028
  }
58927
59029
  );
58928
59030
  }
@@ -58940,7 +59042,7 @@ function HeroCustomerSupportLayered({
58940
59042
  actionsSlot,
58941
59043
  actionsClassName,
58942
59044
  containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
58943
- spacing = "py-32 md:py-32",
59045
+ spacing = "xl",
58944
59046
  contentClassName,
58945
59047
  taglineClassName,
58946
59048
  headingClassName,
@@ -58991,34 +59093,6 @@ function HeroCustomerSupportLayered({
58991
59093
  }
58992
59094
  );
58993
59095
  }, [imagesSlot, images, imagesClassName, optixFlowConfig]);
58994
- const renderActions = useMemo(() => {
58995
- if (actionsSlot) return actionsSlot;
58996
- if (!actions || actions.length === 0) return null;
58997
- return /* @__PURE__ */ jsx("div", { className: cn("flex flex-col md:flex-row gap-4", actionsClassName), children: actions.map((action, index) => {
58998
- const {
58999
- label,
59000
- icon,
59001
- iconAfter,
59002
- children,
59003
- className: actionClassName,
59004
- ...pressableProps
59005
- } = action;
59006
- return /* @__PURE__ */ jsx(
59007
- Pressable,
59008
- {
59009
- asButton: true,
59010
- className: actionClassName,
59011
- ...pressableProps,
59012
- children: children ?? /* @__PURE__ */ jsxs(Fragment$1, { children: [
59013
- icon,
59014
- label,
59015
- iconAfter
59016
- ] })
59017
- },
59018
- index
59019
- );
59020
- }) });
59021
- }, [actionsSlot, actions, actionsClassName]);
59022
59096
  return /* @__PURE__ */ jsx(
59023
59097
  Section,
59024
59098
  {
@@ -59029,43 +59103,53 @@ function HeroCustomerSupportLayered({
59029
59103
  patternClassName,
59030
59104
  className,
59031
59105
  containerClassName,
59032
- children: /* @__PURE__ */ jsx("div", { className: "relative", children: /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 items-center gap-8 md:gap-20 md:grid-cols-2", children: [
59106
+ children: /* @__PURE__ */ jsx("div", { className: "pt-8 md:pt-0", children: /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 items-center gap-8 md:gap-20 md:grid-cols-2", children: [
59033
59107
  /* @__PURE__ */ jsxs(
59034
59108
  "div",
59035
59109
  {
59036
59110
  className: cn(
59037
- "flex w-full max-w-125 flex-col gap-9",
59111
+ "flex w-full max-w-125 flex-col gap-4 md:gap-6",
59038
59112
  contentClassName
59039
59113
  ),
59040
59114
  children: [
59041
- tagline && (typeof tagline === "string" ? /* @__PURE__ */ jsx(Badge, { children: tagline }) : /* @__PURE__ */ jsx("div", { className: taglineClassName, children: tagline })),
59042
- heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
59043
- "h1",
59115
+ tagline && (typeof tagline === "string" ? /* @__PURE__ */ jsx(
59116
+ "div",
59044
59117
  {
59045
59118
  className: cn(
59046
- "text-5xl md:text-6xl lg:text-7xl font-semibold text-balance leading-snug",
59047
- headingClassName
59119
+ "font-light tracking-widest text-sm md:text-md uppercase",
59120
+ taglineClassName
59048
59121
  ),
59049
- children: heading
59122
+ children: tagline
59050
59123
  }
59051
- ) : /* @__PURE__ */ jsx(
59124
+ ) : tagline),
59125
+ heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
59052
59126
  "h1",
59053
59127
  {
59054
59128
  className: cn(
59055
- "text-2xl md:text-3xl lg:text-4xl font-semibold text-balance",
59129
+ "text-4xl font-semibold text-balance md:text-7xl",
59056
59130
  headingClassName
59057
59131
  ),
59058
59132
  children: heading
59059
59133
  }
59060
- )),
59134
+ ) : heading),
59061
59135
  description && (typeof description === "string" ? /* @__PURE__ */ jsx(
59062
59136
  "p",
59063
59137
  {
59064
- className: cn("leading-normal text-lg", descriptionClassName),
59138
+ className: cn(
59139
+ "max-w-full md:max-w-[70%] text-lg md:text-xl font-normal text-balance",
59140
+ descriptionClassName
59141
+ ),
59065
59142
  children: description
59066
59143
  }
59067
- ) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description })),
59068
- renderActions
59144
+ ) : description),
59145
+ /* @__PURE__ */ jsx(
59146
+ BlockActions,
59147
+ {
59148
+ actions,
59149
+ actionsSlot,
59150
+ actionsClassName
59151
+ }
59152
+ )
59069
59153
  ]
59070
59154
  }
59071
59155
  ),
@@ -59075,14 +59159,18 @@ function HeroCustomerSupportLayered({
59075
59159
  );
59076
59160
  }
59077
59161
  function HeroSharedInboxLayered({
59078
- subtitle,
59162
+ eyebrow,
59163
+ eyebrowClassName,
59079
59164
  heading,
59080
59165
  description,
59081
59166
  layeredImages,
59082
59167
  layeredImagesSlot,
59083
59168
  background,
59169
+ actions,
59170
+ actionsSlot,
59171
+ actionsClassName,
59084
59172
  containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
59085
- spacing = "py-12 md:py-32",
59173
+ spacing = "xl",
59086
59174
  pattern,
59087
59175
  patternOpacity,
59088
59176
  className,
@@ -59142,7 +59230,7 @@ function HeroSharedInboxLayered({
59142
59230
  patternClassName,
59143
59231
  className,
59144
59232
  containerClassName,
59145
- children: /* @__PURE__ */ jsx("div", { className: "relative", children: /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 items-center gap-4 md:gap-20 md:grid-cols-2", children: [
59233
+ children: /* @__PURE__ */ jsx("div", { className: "pt-8 md:pt-0", children: /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 items-center gap-4 md:gap-20 md:grid-cols-2", children: [
59146
59234
  /* @__PURE__ */ jsxs(
59147
59235
  "div",
59148
59236
  {
@@ -59151,33 +59239,44 @@ function HeroSharedInboxLayered({
59151
59239
  contentClassName
59152
59240
  ),
59153
59241
  children: [
59154
- subtitle && (typeof subtitle === "string" ? /* @__PURE__ */ jsx(Badge, { children: subtitle }) : subtitle),
59155
- heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
59156
- "h1",
59242
+ eyebrow && (typeof eyebrow === "string" ? /* @__PURE__ */ jsx(
59243
+ "div",
59157
59244
  {
59158
59245
  className: cn(
59159
- "text-5xl md:text-6xl lg:text-7xl font-semibold text-balance leading-snug",
59160
- headingClassName
59246
+ "font-light tracking-widest text-sm md:text-md uppercase",
59247
+ eyebrowClassName
59161
59248
  ),
59162
- children: heading
59249
+ children: eyebrow
59163
59250
  }
59164
- ) : /* @__PURE__ */ jsx(
59251
+ ) : eyebrow),
59252
+ heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
59165
59253
  "h1",
59166
59254
  {
59167
59255
  className: cn(
59168
- "text-2xl md:text-3xl lg:text-4xl font-semibold text-balance",
59256
+ "text-4xl font-semibold text-balance md:text-7xl",
59169
59257
  headingClassName
59170
59258
  ),
59171
59259
  children: heading
59172
59260
  }
59173
- )),
59261
+ ) : heading),
59174
59262
  description && (typeof description === "string" ? /* @__PURE__ */ jsx(
59175
59263
  "p",
59176
59264
  {
59177
- className: cn("leading-normal text-lg", descriptionClassName),
59265
+ className: cn(
59266
+ "max-w-full md:max-w-[70%] text-lg md:text-xl font-normal text-balance",
59267
+ descriptionClassName
59268
+ ),
59178
59269
  children: description
59179
59270
  }
59180
- ) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description }))
59271
+ ) : description),
59272
+ /* @__PURE__ */ jsx(
59273
+ BlockActions,
59274
+ {
59275
+ actions,
59276
+ actionsSlot,
59277
+ actionsClassName
59278
+ }
59279
+ )
59181
59280
  ]
59182
59281
  }
59183
59282
  ),
@@ -59207,34 +59306,6 @@ function HeroConversationIntelligence({
59207
59306
  imageClassName,
59208
59307
  optixFlowConfig
59209
59308
  }) {
59210
- const renderActions = useMemo(() => {
59211
- if (actionsSlot) return actionsSlot;
59212
- if (!actions || actions.length === 0) return null;
59213
- return actions.map((action, index) => {
59214
- const {
59215
- label,
59216
- icon,
59217
- iconAfter,
59218
- children,
59219
- className: actionClassName,
59220
- ...pressableProps
59221
- } = action;
59222
- return /* @__PURE__ */ jsx(
59223
- Pressable,
59224
- {
59225
- asButton: true,
59226
- className: actionClassName,
59227
- ...pressableProps,
59228
- children: children ?? /* @__PURE__ */ jsxs(Fragment$1, { children: [
59229
- icon,
59230
- label,
59231
- iconAfter
59232
- ] })
59233
- },
59234
- index
59235
- );
59236
- });
59237
- }, [actionsSlot, actions]);
59238
59309
  const renderImage = useMemo(() => {
59239
59310
  if (imageSlot) return imageSlot;
59240
59311
  if (!image) return null;
@@ -59299,14 +59370,12 @@ function HeroConversationIntelligence({
59299
59370
  children: description
59300
59371
  }
59301
59372
  ) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description })),
59302
- (actionsSlot || actions && actions.length > 0) && /* @__PURE__ */ jsx(
59303
- "div",
59373
+ /* @__PURE__ */ jsx(
59374
+ BlockActions,
59304
59375
  {
59305
- className: cn(
59306
- "flex flex-col md:flex-row items-center justify-center gap-4",
59307
- actionsClassName
59308
- ),
59309
- children: renderActions
59376
+ actions,
59377
+ actionsSlot,
59378
+ actionsClassName
59310
59379
  }
59311
59380
  )
59312
59381
  ]
@@ -59317,9 +59386,20 @@ function HeroConversationIntelligence({
59317
59386
  }
59318
59387
  );
59319
59388
  }
59389
+ var fadeVariants2 = {
59390
+ initial: { opacity: 0 },
59391
+ animate: {
59392
+ opacity: 1,
59393
+ transition: { duration: 0.8, ease: [0.4, 0, 0.2, 1] }
59394
+ },
59395
+ exit: {
59396
+ opacity: 0,
59397
+ transition: { duration: 0.8, ease: [0.4, 0, 0.2, 1] }
59398
+ }
59399
+ };
59320
59400
  function HeroBusinessCarouselDots({
59321
59401
  badge,
59322
- badgeVariant = "outline",
59402
+ badgeVariant,
59323
59403
  heading,
59324
59404
  description,
59325
59405
  actions,
@@ -59330,6 +59410,7 @@ function HeroBusinessCarouselDots({
59330
59410
  spacing,
59331
59411
  pattern,
59332
59412
  patternOpacity,
59413
+ patternClassName,
59333
59414
  className,
59334
59415
  containerClassName,
59335
59416
  contentClassName,
@@ -59340,40 +59421,22 @@ function HeroBusinessCarouselDots({
59340
59421
  carouselClassName,
59341
59422
  optixFlowConfig
59342
59423
  }) {
59343
- const [api, setApi] = useState();
59344
- const [current, setCurrent] = useState(0);
59424
+ const [currentIndex, setCurrentIndex] = useState(0);
59425
+ const timerRef = useRef(null);
59426
+ const imageCount = carouselImages?.length ?? 0;
59427
+ const startTimer = useCallback(() => {
59428
+ if (imageCount <= 1) return;
59429
+ timerRef.current = setInterval(() => {
59430
+ setCurrentIndex((prev) => (prev + 1) % imageCount);
59431
+ }, 4e3);
59432
+ }, [imageCount]);
59345
59433
  useEffect(() => {
59346
- if (!api) return;
59347
- const updateCurrent = () => {
59348
- setCurrent(api.selectedScrollSnap() + 1);
59349
- };
59350
- updateCurrent();
59351
- api.on("select", updateCurrent);
59434
+ startTimer();
59352
59435
  return () => {
59353
- api.off("select", updateCurrent);
59436
+ if (timerRef.current) clearInterval(timerRef.current);
59354
59437
  };
59355
- }, [api]);
59356
- const renderActions = useMemo(() => {
59357
- if (actionsSlot) return actionsSlot;
59358
- if (!actions || actions.length === 0) return null;
59359
- return actions.map((action, index) => {
59360
- const { label, icon, iconAfter, children, className: actionClassName, ...pressableProps } = action;
59361
- return /* @__PURE__ */ jsx(
59362
- Pressable,
59363
- {
59364
- asButton: true,
59365
- className: actionClassName,
59366
- ...pressableProps,
59367
- children: children ?? /* @__PURE__ */ jsxs(Fragment$1, { children: [
59368
- icon,
59369
- label,
59370
- iconAfter
59371
- ] })
59372
- },
59373
- index
59374
- );
59375
- });
59376
- }, [actionsSlot, actions]);
59438
+ }, [startTimer]);
59439
+ const activeImage = carouselImages && carouselImages.length > 0 ? carouselImages[currentIndex] : null;
59377
59440
  return /* @__PURE__ */ jsx(
59378
59441
  Section,
59379
59442
  {
@@ -59381,42 +59444,79 @@ function HeroBusinessCarouselDots({
59381
59444
  spacing,
59382
59445
  pattern,
59383
59446
  patternOpacity,
59447
+ patternClassName,
59384
59448
  className: cn("overflow-hidden", className),
59385
- children: /* @__PURE__ */ jsxs("div", { className: cn("container", containerClassName), children: [
59449
+ containerClassName,
59450
+ children: /* @__PURE__ */ jsxs("div", { className: "pt-8 md:pt-0", children: [
59386
59451
  /* @__PURE__ */ jsxs("div", { className: cn("mx-auto max-w-5xl text-center", contentClassName), children: [
59387
59452
  badge && /* @__PURE__ */ jsx(Badge, { variant: badgeVariant, className: badgeClassName, children: badge }),
59388
- heading && (typeof heading === "string" ? /* @__PURE__ */ jsx("h1", { className: cn("mt-6 text-4xl font-bold md:text-6xl", headingClassName), children: heading }) : /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading })),
59389
- description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mt-5 text-lg md:text-xl lg:px-32", getTextColor(background, "muted"), descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description })),
59390
- (actionsSlot || actions && actions.length > 0) && /* @__PURE__ */ jsx("div", { className: cn("mt-8 flex justify-center gap-2", actionsClassName), children: renderActions })
59453
+ heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
59454
+ "h1",
59455
+ {
59456
+ className: cn(
59457
+ "mt-6 text-4xl font-bold md:text-6xl text-balance",
59458
+ headingClassName
59459
+ ),
59460
+ children: heading
59461
+ }
59462
+ ) : heading),
59463
+ description && (typeof description === "string" ? /* @__PURE__ */ jsx(
59464
+ "p",
59465
+ {
59466
+ className: cn(
59467
+ "mt-5 text-lg md:text-xl lg:px-32 text-balance",
59468
+ descriptionClassName
59469
+ ),
59470
+ children: description
59471
+ }
59472
+ ) : description),
59473
+ /* @__PURE__ */ jsx(
59474
+ BlockActions,
59475
+ {
59476
+ actions,
59477
+ actionsSlot,
59478
+ actionsClassName
59479
+ }
59480
+ )
59391
59481
  ] }),
59392
- /* @__PURE__ */ jsxs("div", { className: cn("relative mx-10 mt-16 hidden md:block", carouselClassName), children: [
59393
- /* @__PURE__ */ 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)]" }),
59394
- /* @__PURE__ */ 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)]" }),
59395
- /* @__PURE__ */ 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)]" }),
59396
- /* @__PURE__ */ 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)]" }),
59397
- carouselSlot ? carouselSlot : carouselImages && carouselImages.length > 0 ? /* @__PURE__ */ jsxs(Fragment$1, { children: [
59398
- /* @__PURE__ */ jsx(Carousel, { setApi, className: "w-full", children: /* @__PURE__ */ jsx(CarouselContent, { children: carouselImages.map((image, index) => /* @__PURE__ */ jsx(CarouselItem, { children: /* @__PURE__ */ jsx(
59399
- Img,
59400
- {
59401
- src: image.src,
59402
- alt: image.alt,
59403
- className: cn("aspect-video w-full rounded-lg object-cover", image.className),
59404
- optixFlowConfig
59405
- }
59406
- ) }, index)) }) }),
59407
- /* @__PURE__ */ jsx("div", { className: "mt-4 flex justify-center gap-2", children: carouselImages.map((_, index) => /* @__PURE__ */ jsx(
59408
- "button",
59409
- {
59410
- onClick: () => api?.scrollTo(index),
59411
- className: cn(
59412
- "h-2 w-2 rounded-full transition-colors",
59413
- current === index + 1 ? "bg-primary" : getNestedCardBg(background)
59414
- )
59415
- },
59416
- index
59417
- )) })
59418
- ] }) : null
59419
- ] })
59482
+ /* @__PURE__ */ jsxs(
59483
+ "div",
59484
+ {
59485
+ className: cn(
59486
+ "relative mx-4 mt-10 md:mx-10 md:mt-16",
59487
+ carouselClassName
59488
+ ),
59489
+ children: [
59490
+ /* @__PURE__ */ 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" }),
59491
+ /* @__PURE__ */ 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" }),
59492
+ /* @__PURE__ */ 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)]" }),
59493
+ /* @__PURE__ */ 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)]" }),
59494
+ carouselSlot ? carouselSlot : activeImage ? /* @__PURE__ */ jsx("div", { className: "relative aspect-video w-full overflow-hidden", children: /* @__PURE__ */ jsx(AnimatePresence, { mode: "wait", initial: false, children: /* @__PURE__ */ jsx(
59495
+ motion.div,
59496
+ {
59497
+ variants: fadeVariants2,
59498
+ initial: "initial",
59499
+ animate: "animate",
59500
+ exit: "exit",
59501
+ className: "absolute inset-0",
59502
+ children: /* @__PURE__ */ jsx(
59503
+ Img,
59504
+ {
59505
+ src: activeImage.src,
59506
+ alt: activeImage.alt,
59507
+ className: cn(
59508
+ "h-full w-full object-cover",
59509
+ activeImage.className
59510
+ ),
59511
+ optixFlowConfig
59512
+ }
59513
+ )
59514
+ },
59515
+ currentIndex
59516
+ ) }) }) : null
59517
+ ]
59518
+ }
59519
+ )
59420
59520
  ] })
59421
59521
  }
59422
59522
  );
@@ -59433,70 +59533,66 @@ function HeroDeveloperToolsCode({
59433
59533
  terminalLines,
59434
59534
  terminalSlot,
59435
59535
  background,
59436
- spacing,
59536
+ containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
59537
+ spacing = "xl",
59437
59538
  pattern,
59438
59539
  patternOpacity,
59439
59540
  className,
59440
- containerClassName,
59441
59541
  contentClassName,
59442
59542
  headingClassName,
59443
59543
  descriptionClassName,
59444
59544
  actionsClassName,
59545
+ patternClassName,
59445
59546
  terminalClassName
59446
59547
  }) {
59447
59548
  const renderBadge = useMemo(() => {
59448
59549
  if (badgeSlot) return badgeSlot;
59449
59550
  if (!badgeText && !badgeIcon) return null;
59450
- return /* @__PURE__ */ jsxs(Badge, { variant: "outline", className: "w-fit", children: [
59451
- badgeIcon && /* @__PURE__ */ jsx(DynamicIcon, { name: badgeIcon, size: 14, className: "mr-1" }),
59551
+ return /* @__PURE__ */ jsxs(Badge, { className: "w-fit gap-2 mx-4", children: [
59552
+ badgeIcon && /* @__PURE__ */ jsx(DynamicIcon, { name: badgeIcon, size: 14 }),
59452
59553
  badgeText
59453
59554
  ] });
59454
59555
  }, [badgeSlot, badgeText, badgeIcon]);
59455
- const renderActions = useMemo(() => {
59456
- if (actionsSlot) return actionsSlot;
59457
- if (!actions || actions.length === 0) return null;
59458
- return /* @__PURE__ */ jsx("div", { className: cn("flex flex-col gap-4 sm:flex-row", actionsClassName), children: actions.map((action, index) => {
59459
- const { label, icon, iconAfter, children, className: actionClassName, ...pressableProps } = action;
59460
- return /* @__PURE__ */ jsx(
59461
- Pressable,
59462
- {
59463
- asButton: true,
59464
- className: actionClassName,
59465
- ...pressableProps,
59466
- children: children ?? /* @__PURE__ */ jsxs(Fragment$1, { children: [
59467
- icon,
59468
- label,
59469
- iconAfter
59470
- ] })
59471
- },
59472
- index
59473
- );
59474
- }) });
59475
- }, [actionsSlot, actions, actionsClassName]);
59476
59556
  const renderTerminal = useMemo(() => {
59477
59557
  if (terminalSlot) return terminalSlot;
59478
59558
  if (!terminalLines || terminalLines.length === 0) return null;
59479
- return /* @__PURE__ */ jsxs("div", { className: cn("overflow-hidden rounded-xl border border-border bg-zinc-950 shadow-2xl", terminalClassName), children: [
59480
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 border-b border-zinc-800 bg-zinc-900 px-4 py-3", children: [
59481
- /* @__PURE__ */ jsxs("div", { className: "flex gap-1.5", children: [
59482
- /* @__PURE__ */ jsx("div", { className: "h-3 w-3 rounded-full bg-red-500" }),
59483
- /* @__PURE__ */ jsx("div", { className: "h-3 w-3 rounded-full bg-yellow-500" }),
59484
- /* @__PURE__ */ jsx("div", { className: "h-3 w-3 rounded-full bg-green-500" })
59485
- ] }),
59486
- /* @__PURE__ */ jsx("div", { className: "flex-1 text-center text-sm text-zinc-500", children: terminalTitle })
59487
- ] }),
59488
- /* @__PURE__ */ jsxs("div", { className: "p-4 font-mono text-sm", children: [
59489
- terminalLines.map((line, index) => /* @__PURE__ */ jsxs("div", { className: cn(index > 0 && "mt-1", line.colorClass), children: [
59490
- line.prefix && /* @__PURE__ */ jsx("span", { className: line.prefixColorClass, children: line.prefix }),
59491
- " ",
59492
- line.text
59493
- ] }, index)),
59494
- /* @__PURE__ */ jsxs("div", { className: "mt-2 flex items-center", children: [
59495
- /* @__PURE__ */ jsx("span", { className: "text-zinc-500", children: "$" }),
59496
- /* @__PURE__ */ jsx("span", { className: "ml-1 h-4 w-2 animate-pulse bg-zinc-400" })
59497
- ] })
59498
- ] })
59499
- ] });
59559
+ return /* @__PURE__ */ jsxs(
59560
+ "div",
59561
+ {
59562
+ className: cn(
59563
+ "overflow-hidden rounded-xl border border-border bg-zinc-950 shadow-2xl",
59564
+ terminalClassName
59565
+ ),
59566
+ children: [
59567
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 border-b border-zinc-800 bg-zinc-900 px-4 py-3", children: [
59568
+ /* @__PURE__ */ jsxs("div", { className: "flex gap-1.5", children: [
59569
+ /* @__PURE__ */ jsx("div", { className: "h-3 w-3 rounded-full bg-red-500" }),
59570
+ /* @__PURE__ */ jsx("div", { className: "h-3 w-3 rounded-full bg-yellow-500" }),
59571
+ /* @__PURE__ */ jsx("div", { className: "h-3 w-3 rounded-full bg-green-500" })
59572
+ ] }),
59573
+ /* @__PURE__ */ jsx("div", { className: "flex-1 text-center text-sm text-zinc-500", children: terminalTitle })
59574
+ ] }),
59575
+ /* @__PURE__ */ jsxs("div", { className: "p-4 font-mono text-sm", children: [
59576
+ terminalLines.map((line, index) => /* @__PURE__ */ jsxs(
59577
+ "div",
59578
+ {
59579
+ className: cn(index > 0 && "mt-1", line.colorClass),
59580
+ children: [
59581
+ line.prefix && /* @__PURE__ */ jsx("span", { className: line.prefixColorClass, children: line.prefix }),
59582
+ " ",
59583
+ line.text
59584
+ ]
59585
+ },
59586
+ index
59587
+ )),
59588
+ /* @__PURE__ */ jsxs("div", { className: "mt-2 flex items-center", children: [
59589
+ /* @__PURE__ */ jsx("span", { className: "text-zinc-500", children: "$" }),
59590
+ /* @__PURE__ */ jsx("span", { className: "ml-1 h-4 w-2 animate-pulse bg-zinc-400" })
59591
+ ] })
59592
+ ] })
59593
+ ]
59594
+ }
59595
+ );
59500
59596
  }, [terminalSlot, terminalLines, terminalTitle, terminalClassName]);
59501
59597
  return /* @__PURE__ */ jsx(
59502
59598
  Section,
@@ -59505,13 +59601,31 @@ function HeroDeveloperToolsCode({
59505
59601
  spacing,
59506
59602
  pattern,
59507
59603
  patternOpacity,
59604
+ patternClassName,
59508
59605
  className,
59509
- children: /* @__PURE__ */ jsx("div", { className: cn("container", containerClassName), children: /* @__PURE__ */ jsxs("div", { className: "grid items-center gap-12 lg:grid-cols-2 lg:gap-20", children: [
59606
+ containerClassName,
59607
+ children: /* @__PURE__ */ jsx("div", { className: "pt-8 md:pt-0", children: /* @__PURE__ */ jsxs("div", { className: "grid items-center gap-12 lg:grid-cols-2 lg:gap-20", children: [
59510
59608
  /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col gap-8", contentClassName), children: [
59511
59609
  renderBadge,
59512
- heading && (typeof heading === "string" ? /* @__PURE__ */ jsx("h1", { className: cn("text-4xl font-bold tracking-tight md:text-5xl lg:text-6xl", headingClassName), children: heading }) : /* @__PURE__ */ jsx("h1", { className: cn("text-4xl font-bold tracking-tight md:text-5xl lg:text-6xl", headingClassName), children: heading })),
59513
- description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-lg", getTextColor(background, "muted"), descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description })),
59514
- renderActions
59610
+ heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
59611
+ "h1",
59612
+ {
59613
+ className: cn(
59614
+ "text-4xl font-bold tracking-tight md:text-5xl lg:text-6xl text-pretty",
59615
+ headingClassName
59616
+ ),
59617
+ children: heading
59618
+ }
59619
+ ) : heading),
59620
+ description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-lg text-balance", descriptionClassName), children: description }) : description),
59621
+ /* @__PURE__ */ jsx(
59622
+ BlockActions,
59623
+ {
59624
+ actions,
59625
+ actionsSlot,
59626
+ actionsClassName
59627
+ }
59628
+ )
59515
59629
  ] }),
59516
59630
  /* @__PURE__ */ jsx("div", { className: "relative", children: renderTerminal })
59517
59631
  ] }) })
@@ -59532,7 +59646,7 @@ function HeroEcommerceProductShowcase({
59532
59646
  imagesSlot,
59533
59647
  background,
59534
59648
  containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
59535
- spacing = "py-32 md:py-32",
59649
+ spacing = "xl",
59536
59650
  pattern,
59537
59651
  patternOpacity,
59538
59652
  patternClassName,
@@ -59552,41 +59666,34 @@ function HeroEcommerceProductShowcase({
59552
59666
  /* @__PURE__ */ jsx("span", { children: badgeText })
59553
59667
  ] });
59554
59668
  }, [badgeSlot, badgeIcon, badgeText]);
59555
- const renderActions = useMemo(() => {
59556
- if (actionsSlot) return actionsSlot;
59557
- if (!actions || actions.length === 0) return null;
59558
- return /* @__PURE__ */ jsx("div", { className: cn("flex flex-col gap-4 sm:flex-row", actionsClassName), children: actions.map((action, index) => {
59559
- const {
59560
- label,
59561
- icon,
59562
- iconAfter,
59563
- children,
59564
- className: actionClassName,
59565
- ...pressableProps
59566
- } = action;
59567
- return /* @__PURE__ */ jsx(
59568
- Pressable,
59569
- {
59570
- asButton: true,
59571
- className: actionClassName,
59572
- ...pressableProps,
59573
- children: children ?? /* @__PURE__ */ jsxs(Fragment$1, { children: [
59574
- icon,
59575
- label,
59576
- iconAfter
59577
- ] })
59578
- },
59579
- index
59580
- );
59581
- }) });
59582
- }, [actionsSlot, actions, actionsClassName]);
59583
59669
  const renderStats = useMemo(() => {
59584
59670
  if (statsSlot) return statsSlot;
59585
59671
  if (!stats || stats.length === 0) return null;
59586
59672
  return /* @__PURE__ */ jsx("div", { className: cn("flex items-center gap-6 pt-4", statsClassName), children: stats.map((stat, index) => /* @__PURE__ */ jsxs(React22.Fragment, { children: [
59587
59673
  index > 0 && /* @__PURE__ */ jsx("div", { className: "h-12 w-px bg-border" }),
59588
59674
  /* @__PURE__ */ jsxs("div", { className: "text-center", children: [
59589
- /* @__PURE__ */ jsx("div", { className: "text-2xl font-bold ", children: stat.value }),
59675
+ /* @__PURE__ */ jsxs(
59676
+ "div",
59677
+ {
59678
+ className: cn(
59679
+ "flex items-center",
59680
+ stat.icon ? "justify-between" : "justify-center"
59681
+ ),
59682
+ children: [
59683
+ stat.icon,
59684
+ /* @__PURE__ */ jsx(
59685
+ "div",
59686
+ {
59687
+ className: cn(
59688
+ "font-bold ",
59689
+ stat.icon ? "text-xl" : "text-2xl"
59690
+ ),
59691
+ children: stat.value
59692
+ }
59693
+ )
59694
+ ]
59695
+ }
59696
+ ),
59590
59697
  /* @__PURE__ */ jsx("div", { className: cn("text-sm"), children: stat.label })
59591
59698
  ] })
59592
59699
  ] }, index)) });
@@ -59659,42 +59766,31 @@ function HeroEcommerceProductShowcase({
59659
59766
  patternClassName,
59660
59767
  className,
59661
59768
  containerClassName,
59662
- children: /* @__PURE__ */ jsx("div", { className: "relative", children: /* @__PURE__ */ jsxs("div", { className: "grid items-center gap-12 lg:grid-cols-2 lg:gap-20", children: [
59663
- /* @__PURE__ */ jsx("div", { className: "order-2 lg:order-1", children: renderImages }),
59664
- /* @__PURE__ */ jsxs(
59665
- "div",
59666
- {
59667
- className: cn(
59668
- "order-1 flex flex-col gap-8 lg:order-2",
59669
- contentClassName
59670
- ),
59671
- children: [
59672
- renderBadge,
59673
- heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
59674
- "h1",
59675
- {
59676
- className: cn(
59677
- "text-4xl font-bold tracking-tight md:text-5xl lg:text-6xl text-balance",
59678
- headingClassName
59679
- ),
59680
- children: heading
59681
- }
59682
- ) : /* @__PURE__ */ jsx(
59683
- "h1",
59684
- {
59685
- className: cn(
59686
- "text-4xl font-bold tracking-tight md:text-5xl lg:text-6xl text-balance",
59687
- headingClassName
59688
- ),
59689
- children: heading
59690
- }
59691
- )),
59692
- description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-lg text-balance", descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description })),
59693
- renderActions,
59694
- renderStats
59695
- ]
59696
- }
59697
- )
59769
+ children: /* @__PURE__ */ jsx("div", { className: "pt-8 md:pt-0", children: /* @__PURE__ */ jsxs("div", { className: "grid items-center gap-12 lg:grid-cols-2 lg:gap-20", children: [
59770
+ /* @__PURE__ */ jsx("div", { className: "order-1", children: renderImages }),
59771
+ /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col gap-8 order-2", contentClassName), children: [
59772
+ renderBadge,
59773
+ heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
59774
+ "h1",
59775
+ {
59776
+ className: cn(
59777
+ "text-4xl font-bold tracking-tight md:text-5xl lg:text-6xl text-balance",
59778
+ headingClassName
59779
+ ),
59780
+ children: heading
59781
+ }
59782
+ ) : heading),
59783
+ description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-lg text-balance", descriptionClassName), children: description }) : description),
59784
+ /* @__PURE__ */ jsx(
59785
+ BlockActions,
59786
+ {
59787
+ actions,
59788
+ actionsSlot,
59789
+ actionsClassName
59790
+ }
59791
+ ),
59792
+ renderStats
59793
+ ] })
59698
59794
  ] }) })
59699
59795
  }
59700
59796
  );
@@ -59716,7 +59812,7 @@ function HeroMobileAppDownload({
59716
59812
  notificationSlot,
59717
59813
  background,
59718
59814
  containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
59719
- spacing = "pt-28 pb-8 md:pt-32 md:pb-32",
59815
+ spacing = "xl",
59720
59816
  pattern,
59721
59817
  patternOpacity,
59722
59818
  className,
@@ -59855,7 +59951,7 @@ function HeroMobileAppDownload({
59855
59951
  patternOpacity,
59856
59952
  className,
59857
59953
  containerClassName,
59858
- children: /* @__PURE__ */ jsx("div", { className: "relative", children: /* @__PURE__ */ jsxs("div", { className: "grid items-center gap-12 grid-cols-1 md:grid-cols-2 md:gap-20", children: [
59954
+ children: /* @__PURE__ */ jsx("div", { className: "pt-8 md:pt-0", children: /* @__PURE__ */ jsxs("div", { className: "grid items-center gap-12 grid-cols-1 md:grid-cols-2 md:gap-20", children: [
59859
59955
  /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col gap-8", contentClassName), children: [
59860
59956
  renderBadge,
59861
59957
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
@@ -59970,11 +60066,12 @@ function HeroPricingComparison({
59970
60066
  function HeroNewsletterMinimal({
59971
60067
  heading,
59972
60068
  description,
59973
- inputPlaceholder = "Enter your email",
60069
+ inputPlaceholder,
59974
60070
  submitAction,
59975
60071
  formSlot,
59976
- disclaimer = "Free forever. No spam. Unsubscribe anytime.",
60072
+ disclaimer,
59977
60073
  stats,
60074
+ patternClassName,
59978
60075
  statsSlot,
59979
60076
  background,
59980
60077
  spacing,
@@ -59992,15 +60089,40 @@ function HeroNewsletterMinimal({
59992
60089
  const renderStats = useMemo(() => {
59993
60090
  if (statsSlot) return statsSlot;
59994
60091
  if (!stats || stats.length === 0) return null;
59995
- return stats.map((stat, index) => /* @__PURE__ */ jsxs("div", { className: cn("flex items-center gap-2 text-sm", getTextColor(background, "muted"), stat.className), children: [
59996
- stat.icon,
59997
- /* @__PURE__ */ jsx("span", { children: stat.value })
59998
- ] }, index));
60092
+ return stats.map((stat, index) => /* @__PURE__ */ jsx("div", { className: cn("flex items-center", stat.className), children: /* @__PURE__ */ jsxs("div", { className: "text-center", children: [
60093
+ /* @__PURE__ */ jsxs(
60094
+ "div",
60095
+ {
60096
+ className: cn(
60097
+ "flex items-center",
60098
+ stat.icon ? "justify-between" : "justify-center"
60099
+ ),
60100
+ children: [
60101
+ stat.icon,
60102
+ /* @__PURE__ */ jsx(
60103
+ "div",
60104
+ {
60105
+ className: cn("font-bold ", stat.icon ? "text-xl" : "text-2xl"),
60106
+ children: stat.value
60107
+ }
60108
+ )
60109
+ ]
60110
+ }
60111
+ ),
60112
+ /* @__PURE__ */ jsx("div", { className: cn("text-sm"), children: stat.label })
60113
+ ] }) }, index));
59999
60114
  }, [statsSlot, stats]);
60000
60115
  const renderForm = useMemo(() => {
60001
60116
  if (formSlot) return formSlot;
60002
60117
  if (!submitAction) return null;
60003
- const { label, icon, iconAfter, children, className: actionClassName, ...pressableProps } = submitAction;
60118
+ const {
60119
+ label,
60120
+ icon,
60121
+ iconAfter,
60122
+ children,
60123
+ className: actionClassName,
60124
+ ...pressableProps
60125
+ } = submitAction;
60004
60126
  return /* @__PURE__ */ jsxs(Fragment$1, { children: [
60005
60127
  /* @__PURE__ */ jsx(
60006
60128
  Input,
@@ -60010,44 +60132,122 @@ function HeroNewsletterMinimal({
60010
60132
  className: cn("h-12 flex-1", inputClassName)
60011
60133
  }
60012
60134
  ),
60013
- /* @__PURE__ */ jsx(
60014
- Pressable,
60015
- {
60016
- asButton: true,
60017
- className: actionClassName,
60018
- ...pressableProps,
60019
- children: children ?? /* @__PURE__ */ jsxs(Fragment$1, { children: [
60020
- icon,
60021
- label,
60022
- iconAfter
60023
- ] })
60024
- }
60025
- )
60135
+ /* @__PURE__ */ jsx(Pressable, { asButton: true, className: actionClassName, ...pressableProps, children: children ?? /* @__PURE__ */ jsxs(Fragment$1, { children: [
60136
+ icon,
60137
+ label,
60138
+ iconAfter
60139
+ ] }) })
60026
60140
  ] });
60027
60141
  }, [formSlot, submitAction, inputPlaceholder, inputClassName]);
60028
60142
  return /* @__PURE__ */ jsx(
60029
60143
  Section,
60030
60144
  {
60031
- className: cn(
60032
- "relative min-h-[80vh] bg-background py-32",
60033
- className
60034
- ),
60035
- children: /* @__PURE__ */ jsxs("div", { className: cn("container flex flex-col items-center justify-center text-center", containerClassName), children: [
60036
- heading && (typeof heading === "string" ? /* @__PURE__ */ jsx("h1", { className: cn("max-w-3xl text-5xl font-bold tracking-tight md:text-6xl lg:text-7xl", headingClassName), children: heading }) : /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading })),
60037
- description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mt-6 max-w-xl text-lg md:text-xl", getTextColor(background, "muted"), descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description })),
60038
- /* @__PURE__ */ jsx("div", { className: cn("mt-10 flex w-full max-w-md flex-col gap-4 sm:flex-row", formClassName), children: renderForm }),
60039
- disclaimer && (typeof disclaimer === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mt-4 text-sm", getTextColor(background, "muted"), disclaimerClassName), children: disclaimer }) : /* @__PURE__ */ jsx("div", { className: disclaimerClassName, children: disclaimer })),
60040
- (statsSlot || stats && stats.length > 0) && /* @__PURE__ */ jsx("div", { className: cn("mt-16 flex flex-wrap items-center justify-center gap-8", statsClassName), children: renderStats })
60041
- ] })
60145
+ background,
60146
+ spacing,
60147
+ pattern,
60148
+ patternOpacity,
60149
+ patternClassName,
60150
+ className,
60151
+ containerClassName,
60152
+ children: /* @__PURE__ */ jsxs(
60153
+ "div",
60154
+ {
60155
+ className: cn(
60156
+ "container flex flex-col items-center justify-center text-center",
60157
+ containerClassName
60158
+ ),
60159
+ children: [
60160
+ heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
60161
+ "h1",
60162
+ {
60163
+ className: cn(
60164
+ "max-w-3xl text-5xl font-bold tracking-tight md:text-6xl lg:text-7xl text-pretty",
60165
+ headingClassName
60166
+ ),
60167
+ children: heading
60168
+ }
60169
+ ) : heading),
60170
+ description && (typeof description === "string" ? /* @__PURE__ */ jsx(
60171
+ "p",
60172
+ {
60173
+ className: cn(
60174
+ "mt-6 max-w-full md:max-w-lg text-lg md:text-xl text-balance",
60175
+ descriptionClassName
60176
+ ),
60177
+ children: description
60178
+ }
60179
+ ) : description),
60180
+ /* @__PURE__ */ jsx(
60181
+ "div",
60182
+ {
60183
+ className: cn(
60184
+ "mt-10 flex w-full max-w-md flex-col gap-4 sm:flex-row",
60185
+ formClassName
60186
+ ),
60187
+ children: renderForm
60188
+ }
60189
+ ),
60190
+ disclaimer && (typeof disclaimer === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mt-4 text-sm", disclaimerClassName), children: disclaimer }) : disclaimer),
60191
+ (statsSlot || stats && stats.length > 0) && /* @__PURE__ */ jsx(
60192
+ "div",
60193
+ {
60194
+ className: cn(
60195
+ "mt-16 flex flex-wrap items-center justify-center gap-8",
60196
+ statsClassName
60197
+ ),
60198
+ children: renderStats
60199
+ }
60200
+ )
60201
+ ]
60202
+ }
60203
+ )
60042
60204
  }
60043
60205
  );
60044
60206
  }
60207
+ var digitVariants = {
60208
+ initial: { y: -20, opacity: 0 },
60209
+ animate: {
60210
+ y: 0,
60211
+ opacity: 1,
60212
+ transition: { type: "spring", stiffness: 300, damping: 25 }
60213
+ },
60214
+ exit: {
60215
+ y: 20,
60216
+ opacity: 0,
60217
+ transition: { duration: 0.15 }
60218
+ }
60219
+ };
60220
+ function CountdownDigit({ value, label }) {
60221
+ const display = value.toString().padStart(2, "0");
60222
+ return /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center", children: [
60223
+ /* @__PURE__ */ jsx(
60224
+ "div",
60225
+ {
60226
+ className: cn(
60227
+ "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"
60228
+ ),
60229
+ children: /* @__PURE__ */ jsx(AnimatePresence, { mode: "popLayout", initial: false, children: /* @__PURE__ */ jsx(
60230
+ motion.span,
60231
+ {
60232
+ variants: digitVariants,
60233
+ initial: "initial",
60234
+ animate: "animate",
60235
+ exit: "exit",
60236
+ children: display
60237
+ },
60238
+ display
60239
+ ) })
60240
+ }
60241
+ ),
60242
+ /* @__PURE__ */ jsx("span", { className: cn("mt-2 text-sm"), children: label })
60243
+ ] });
60244
+ }
60045
60245
  function HeroComingSoonCountdown({
60046
60246
  badgeIcon,
60047
60247
  badgeText,
60048
60248
  heading,
60049
60249
  description,
60050
- countdownItems,
60250
+ countdownDate,
60051
60251
  countdownSlot,
60052
60252
  emailPlaceholder = "Enter your email",
60053
60253
  submitAction,
@@ -60055,11 +60255,12 @@ function HeroComingSoonCountdown({
60055
60255
  socialLinks,
60056
60256
  socialLinksSlot,
60057
60257
  background,
60058
- spacing,
60258
+ containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
60259
+ spacing = "xl",
60059
60260
  pattern,
60060
60261
  patternOpacity,
60262
+ patternClassName,
60061
60263
  className,
60062
- containerClassName,
60063
60264
  badgeClassName,
60064
60265
  headingClassName,
60065
60266
  descriptionClassName,
@@ -60067,55 +60268,69 @@ function HeroComingSoonCountdown({
60067
60268
  formClassName,
60068
60269
  socialLinksClassName
60069
60270
  }) {
60070
- const renderCountdown = useMemo(() => {
60071
- if (countdownSlot) return countdownSlot;
60072
- if (!countdownItems || countdownItems.length === 0) return null;
60073
- return countdownItems.map((item) => /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center", children: [
60074
- /* @__PURE__ */ jsx("div", { className: cn(
60075
- "flex h-16 w-16 items-center justify-center rounded-xl text-3xl font-bold md:h-24 md:w-24 md:text-5xl",
60076
- getNestedCardBg(background, "muted"),
60077
- getNestedCardTextColor(background)
60078
- ), children: item.value }),
60079
- /* @__PURE__ */ jsx("span", { className: cn("mt-2 text-sm", getTextColor(background, "muted")), children: item.label })
60080
- ] }, item.label));
60081
- }, [countdownSlot, countdownItems, background]);
60271
+ const [timeLeft, setTimeLeft] = useState(null);
60272
+ const calculateTimeLeft = useCallback(() => {
60273
+ if (!countdownDate) return null;
60274
+ const now = Date.now();
60275
+ const target = countdownDate.getTime();
60276
+ const diff = target - now;
60277
+ if (diff <= 0) return null;
60278
+ return {
60279
+ days: Math.floor(diff / (1e3 * 60 * 60 * 24)),
60280
+ hours: Math.floor(diff % (1e3 * 60 * 60 * 24) / (1e3 * 60 * 60)),
60281
+ minutes: Math.floor(diff % (1e3 * 60 * 60) / (1e3 * 60)),
60282
+ seconds: Math.floor(diff % (1e3 * 60) / 1e3)
60283
+ };
60284
+ }, [countdownDate]);
60285
+ useEffect(() => {
60286
+ setTimeLeft(calculateTimeLeft());
60287
+ if (!countdownDate) return;
60288
+ const timer = setInterval(() => {
60289
+ const remaining = calculateTimeLeft();
60290
+ setTimeLeft(remaining);
60291
+ if (!remaining) clearInterval(timer);
60292
+ }, 1e3);
60293
+ return () => clearInterval(timer);
60294
+ }, [countdownDate, calculateTimeLeft]);
60295
+ const showCountdown = countdownSlot || timeLeft;
60082
60296
  const renderForm = useMemo(() => {
60083
60297
  if (formSlot) return formSlot;
60084
60298
  if (!submitAction) return null;
60085
- const { label, icon, iconAfter, children, className: actionClassName, ...pressableProps } = submitAction;
60299
+ const {
60300
+ label,
60301
+ icon,
60302
+ iconAfter,
60303
+ children,
60304
+ className: actionClassName,
60305
+ ...pressableProps
60306
+ } = submitAction;
60086
60307
  return /* @__PURE__ */ jsxs(Fragment$1, { children: [
60087
60308
  /* @__PURE__ */ jsx(
60088
60309
  Input,
60089
60310
  {
60090
60311
  type: "email",
60091
60312
  placeholder: emailPlaceholder,
60092
- className: cn("h-12 flex-1 border-border/50", `${getNestedCardBg(background, "muted")}/30`)
60313
+ className: cn("h-12 flex-1 border-border/50")
60093
60314
  }
60094
60315
  ),
60095
- /* @__PURE__ */ jsx(
60096
- Pressable,
60097
- {
60098
- asButton: true,
60099
- className: actionClassName,
60100
- ...pressableProps,
60101
- children: children ?? /* @__PURE__ */ jsxs(Fragment$1, { children: [
60102
- icon,
60103
- label,
60104
- iconAfter
60105
- ] })
60106
- }
60107
- )
60316
+ /* @__PURE__ */ jsx(Pressable, { asButton: true, className: actionClassName, ...pressableProps, children: children ?? /* @__PURE__ */ jsxs(Fragment$1, { children: [
60317
+ icon,
60318
+ label,
60319
+ iconAfter
60320
+ ] }) })
60108
60321
  ] });
60109
60322
  }, [formSlot, submitAction, emailPlaceholder]);
60110
60323
  const renderSocialLinks = useMemo(() => {
60111
60324
  if (socialLinksSlot) return socialLinksSlot;
60112
60325
  if (!socialLinks || socialLinks.length === 0) return null;
60113
60326
  return socialLinks.map((link, index) => /* @__PURE__ */ jsx(
60114
- Pressable,
60327
+ SocialLinkIcon,
60115
60328
  {
60116
60329
  href: link.href,
60117
- className: cn(getTextColor(background, "muted"), "hover:opacity-80", link.className),
60118
- children: link.icon ?? (link.iconName && /* @__PURE__ */ jsx(DynamicIcon, { name: link.iconName, size: 20 }))
60330
+ className: cn("hover:opacity-80", link.className),
60331
+ asButton: true,
60332
+ variant: "outline",
60333
+ size: "icon"
60119
60334
  },
60120
60335
  index
60121
60336
  ));
@@ -60123,25 +60338,73 @@ function HeroComingSoonCountdown({
60123
60338
  return /* @__PURE__ */ jsx(
60124
60339
  Section,
60125
60340
  {
60126
- className: cn(
60127
- "dark relative min-h-screen bg-background py-32",
60128
- className
60129
- ),
60130
- children: /* @__PURE__ */ jsxs("div", { className: cn("container flex flex-col items-center justify-center text-center", containerClassName), children: [
60131
- (badgeText || badgeIcon) && /* @__PURE__ */ jsxs("div", { className: cn(
60132
- "inline-flex items-center gap-2 rounded-full border border-border/50 px-4 py-2 text-sm",
60133
- getNestedCardBg(background, "muted"),
60134
- getNestedCardTextColor(background),
60135
- badgeClassName
60136
- ), children: [
60137
- badgeIcon && /* @__PURE__ */ jsx(DynamicIcon, { name: badgeIcon, size: 16, className: getAccentColor(background) }),
60341
+ background,
60342
+ spacing,
60343
+ pattern,
60344
+ patternOpacity,
60345
+ patternClassName,
60346
+ className,
60347
+ containerClassName,
60348
+ children: /* @__PURE__ */ jsxs("div", { className: "pt-8 md:pt-0", children: [
60349
+ (badgeText || badgeIcon) && /* @__PURE__ */ jsxs(Badge, { className: cn("gap-2 px-4 py-2", badgeClassName), children: [
60350
+ badgeIcon && /* @__PURE__ */ jsx(DynamicIcon, { name: badgeIcon, size: 16 }),
60138
60351
  /* @__PURE__ */ jsx("span", { children: badgeText })
60139
60352
  ] }),
60140
- heading && (typeof heading === "string" ? /* @__PURE__ */ 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__ */ jsx("div", { className: cn("mt-8", headingClassName), children: heading })),
60141
- description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mt-6 max-w-xl text-lg md:text-xl", getTextColor(background, "muted"), descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: cn("mt-6", descriptionClassName), children: description })),
60142
- (countdownSlot || countdownItems && countdownItems.length > 0) && /* @__PURE__ */ jsx("div", { className: cn("mt-12 grid grid-cols-4 gap-4 md:gap-8", countdownClassName), children: renderCountdown }),
60143
- /* @__PURE__ */ jsx("div", { className: cn("mt-12 flex w-full max-w-md flex-col gap-4 sm:flex-row", formClassName), children: renderForm }),
60144
- (socialLinksSlot || socialLinks && socialLinks.length > 0) && /* @__PURE__ */ jsx("div", { className: cn("mt-16 flex items-center gap-6", socialLinksClassName), children: renderSocialLinks })
60353
+ heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
60354
+ "h1",
60355
+ {
60356
+ className: cn(
60357
+ "mt-8 max-w-3xl text-5xl font-bold tracking-tight md:text-6xl lg:text-7xl text-balance",
60358
+ headingClassName
60359
+ ),
60360
+ children: heading
60361
+ }
60362
+ ) : heading),
60363
+ description && (typeof description === "string" ? /* @__PURE__ */ jsx(
60364
+ "p",
60365
+ {
60366
+ className: cn(
60367
+ "mt-6 max-w-xl text-lg md:text-xl text-balance",
60368
+ descriptionClassName
60369
+ ),
60370
+ children: description
60371
+ }
60372
+ ) : description),
60373
+ showCountdown && /* @__PURE__ */ jsx(
60374
+ "div",
60375
+ {
60376
+ className: cn(
60377
+ "mt-12 grid grid-cols-4 gap-4 md:gap-8",
60378
+ countdownClassName
60379
+ ),
60380
+ children: countdownSlot ?? /* @__PURE__ */ jsxs(Fragment$1, { children: [
60381
+ /* @__PURE__ */ jsx(CountdownDigit, { value: timeLeft.days, label: "Days" }),
60382
+ /* @__PURE__ */ jsx(CountdownDigit, { value: timeLeft.hours, label: "Hours" }),
60383
+ /* @__PURE__ */ jsx(CountdownDigit, { value: timeLeft.minutes, label: "Minutes" }),
60384
+ /* @__PURE__ */ jsx(CountdownDigit, { value: timeLeft.seconds, label: "Seconds" })
60385
+ ] })
60386
+ }
60387
+ ),
60388
+ /* @__PURE__ */ jsx(
60389
+ "div",
60390
+ {
60391
+ className: cn(
60392
+ "mt-12 flex w-full max-w-md flex-col gap-4 sm:flex-row",
60393
+ formClassName
60394
+ ),
60395
+ children: renderForm
60396
+ }
60397
+ ),
60398
+ (socialLinksSlot || socialLinks && socialLinks.length > 0) && /* @__PURE__ */ jsx(
60399
+ "div",
60400
+ {
60401
+ className: cn(
60402
+ "mt-16 flex items-center gap-6",
60403
+ socialLinksClassName
60404
+ ),
60405
+ children: renderSocialLinks
60406
+ }
60407
+ )
60145
60408
  ] })
60146
60409
  }
60147
60410
  );
@@ -60162,8 +60425,8 @@ function HeroEventRegistration({
60162
60425
  locationSublabel,
60163
60426
  locationSlot,
60164
60427
  background,
60165
- containerClassName = "px-6 sm:px-0 md:px-0 lg:px-0",
60166
- spacing = "pt-32 pb-8 md:pt-32 md:pb-32",
60428
+ containerClassName = "px-6 sm:px-0 md:px-0 lg:px-0",
60429
+ spacing = "xl",
60167
60430
  pattern,
60168
60431
  patternOpacity,
60169
60432
  className,
@@ -60177,18 +60440,18 @@ function HeroEventRegistration({
60177
60440
  }) {
60178
60441
  const renderBadge = useMemo(() => {
60179
60442
  if (badgeSlot) return badgeSlot;
60180
- return /* @__PURE__ */ jsxs(Badge, { variant: "outline", className: "w-fit", children: [
60181
- badgeIcon && /* @__PURE__ */ jsx(DynamicIcon, { name: badgeIcon, size: 14, className: "mr-1" }),
60443
+ return /* @__PURE__ */ jsxs(Badge, { className: "px-4 gap-2", children: [
60444
+ badgeIcon && /* @__PURE__ */ jsx(DynamicIcon, { name: badgeIcon }),
60182
60445
  badgeText
60183
60446
  ] });
60184
60447
  }, [badgeSlot, badgeIcon, badgeText]);
60185
60448
  const renderStats = useMemo(() => {
60186
60449
  if (statsSlot) return statsSlot;
60187
60450
  if (!stats || stats.length === 0) return null;
60188
- return /* @__PURE__ */ jsx("div", { className: cn("grid grid-cols-3 gap-4 pt-4", statsClassName), children: stats.map((stat, index) => /* @__PURE__ */ jsxs("div", { className: "text-center", children: [
60451
+ return /* @__PURE__ */ jsx("div", { className: "flex justify-center w-full", children: /* @__PURE__ */ jsx("div", { className: cn("grid grid-cols-3 gap-4 pt-4", statsClassName), children: stats.map((stat, index) => /* @__PURE__ */ jsxs("div", { className: "text-center", children: [
60189
60452
  /* @__PURE__ */ jsx("div", { className: "text-2xl font-bold ", children: stat.value }),
60190
60453
  /* @__PURE__ */ jsx("div", { className: cn("text-sm"), children: stat.label })
60191
- ] }, index)) });
60454
+ ] }, index)) }) });
60192
60455
  }, [statsSlot, stats, statsClassName]);
60193
60456
  const renderLocation = useMemo(() => {
60194
60457
  if (locationSlot) return locationSlot;
@@ -60234,41 +60497,41 @@ function HeroEventRegistration({
60234
60497
  patternOpacity,
60235
60498
  className,
60236
60499
  containerClassName,
60237
- children: /* @__PURE__ */ jsxs("div", { className: "grid items-center gap-12 lg:grid-cols-2 lg:gap-20", children: [
60238
- /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col gap-8", contentClassName), children: [
60239
- renderBadge,
60240
- heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
60241
- "h1",
60242
- {
60243
- className: cn(
60244
- "text-4xl font-bold tracking-tight md:text-5xl lg:text-6xl",
60245
- headingClassName
60246
- ),
60247
- children: heading
60248
- }
60249
- ) : /* @__PURE__ */ jsx(
60250
- "h1",
60251
- {
60252
- className: cn(
60253
- "text-4xl font-bold tracking-tight md:text-5xl lg:text-6xl",
60254
- headingClassName
60500
+ children: /* @__PURE__ */ jsx("div", { className: "pt-8 md:pt-0", children: /* @__PURE__ */ jsxs("div", { className: "grid items-center gap-12 lg:grid-cols-2 lg:gap-20", children: [
60501
+ /* @__PURE__ */ jsxs(
60502
+ "div",
60503
+ {
60504
+ className: cn(
60505
+ "flex flex-col items-start gap-6 md:gap-8",
60506
+ contentClassName
60507
+ ),
60508
+ children: [
60509
+ renderBadge,
60510
+ heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
60511
+ "h1",
60512
+ {
60513
+ className: cn(
60514
+ "text-4xl font-bold tracking-tight md:text-5xl lg:text-6xl text-pretty",
60515
+ headingClassName
60516
+ ),
60517
+ children: heading
60518
+ }
60519
+ ) : heading),
60520
+ description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-lg text-balance", descriptionClassName), children: description }) : description),
60521
+ /* @__PURE__ */ jsx(
60522
+ BlockActions,
60523
+ {
60524
+ actions,
60525
+ actionsSlot,
60526
+ actionsClassName
60527
+ }
60255
60528
  ),
60256
- children: heading
60257
- }
60258
- )),
60259
- description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-lg", descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description })),
60260
- /* @__PURE__ */ jsx(
60261
- BlockActions,
60262
- {
60263
- actions,
60264
- actionsSlot,
60265
- actionsClassName
60266
- }
60267
- ),
60268
- renderStats
60269
- ] }),
60529
+ renderStats
60530
+ ]
60531
+ }
60532
+ ),
60270
60533
  renderImage
60271
- ] })
60534
+ ] }) })
60272
60535
  }
60273
60536
  );
60274
60537
  }
@@ -83711,7 +83974,7 @@ function ListSearchableGrid({
83711
83974
  }
83712
83975
  );
83713
83976
  }
83714
- var { useMemo: useMemo433 } = React22;
83977
+ var { useMemo: useMemo431 } = React22;
83715
83978
  function OfferModalNewsletterDiscount({
83716
83979
  title,
83717
83980
  emailPlaceholder,
@@ -83779,7 +84042,7 @@ function OfferModalNewsletterDiscount({
83779
84042
  });
83780
84043
  const formMethod = formConfig?.method?.toLowerCase() === "get" ? "get" : "post";
83781
84044
  const dialogProps = open !== void 0 ? { open, onOpenChange } : { defaultOpen };
83782
- const renderCloseButton = useMemo433(() => {
84045
+ const renderCloseButton = useMemo431(() => {
83783
84046
  if (closeButtonSlot) return closeButtonSlot;
83784
84047
  if (!closeButtonText) return null;
83785
84048
  return /* @__PURE__ */ jsx("div", { className: "absolute end-1.5 top-1.5", children: /* @__PURE__ */ jsx(DialogClose, { asChild: true, children: /* @__PURE__ */ jsx(
@@ -83793,12 +84056,12 @@ function OfferModalNewsletterDiscount({
83793
84056
  }
83794
84057
  ) }) });
83795
84058
  }, [closeButtonSlot, closeButtonText, closeClassName]);
83796
- const renderHeader = useMemo433(() => {
84059
+ const renderHeader = useMemo431(() => {
83797
84060
  if (headerSlot) return headerSlot;
83798
84061
  if (!title) return null;
83799
84062
  return /* @__PURE__ */ jsx(DialogHeader, { className: headerClassName, children: typeof title === "string" ? /* @__PURE__ */ jsx(DialogTitle, { className: cn("text-start font-serif text-2xl font-normal leading-snug", titleClassName), children: title }) : /* @__PURE__ */ jsx(DialogTitle, { className: cn("text-start font-serif text-2xl font-normal leading-snug", titleClassName), children: title }) });
83800
84063
  }, [headerSlot, title, headerClassName, titleClassName]);
83801
- const renderForm = useMemo433(() => {
84064
+ const renderForm = useMemo431(() => {
83802
84065
  if (formSlot) return formSlot;
83803
84066
  return /* @__PURE__ */ jsxs(
83804
84067
  Form,
@@ -83860,7 +84123,7 @@ function OfferModalNewsletterDiscount({
83860
84123
  }
83861
84124
  ) });
83862
84125
  }
83863
- var { useMemo: useMemo434 } = React22;
84126
+ var { useMemo: useMemo432 } = React22;
83864
84127
  function OfferModalMembershipImage({
83865
84128
  overline,
83866
84129
  title,
@@ -83937,7 +84200,7 @@ function OfferModalMembershipImage({
83937
84200
  });
83938
84201
  const formMethod = formConfig?.method?.toLowerCase() === "get" ? "get" : "post";
83939
84202
  const dialogProps = open !== void 0 ? { open, onOpenChange } : { defaultOpen };
83940
- const renderImage = useMemo434(() => {
84203
+ const renderImage = useMemo432(() => {
83941
84204
  if (imageSlot) return imageSlot;
83942
84205
  if (!image) return null;
83943
84206
  return /* @__PURE__ */ jsx("div", { className: cn("max-h-[290px] h-full overflow-hidden max-lg:hidden", imageWrapperClassName), children: /* @__PURE__ */ jsx(
@@ -83950,7 +84213,7 @@ function OfferModalMembershipImage({
83950
84213
  }
83951
84214
  ) });
83952
84215
  }, [imageSlot, image, imageWrapperClassName, imageClassName, optixFlowConfig]);
83953
- const renderCloseButton = useMemo434(() => {
84216
+ const renderCloseButton = useMemo432(() => {
83954
84217
  if (closeButtonSlot) return closeButtonSlot;
83955
84218
  return /* @__PURE__ */ jsx("div", { className: "absolute -end-px -top-px z-10", children: /* @__PURE__ */ jsx(DialogClose, { asChild: true, children: /* @__PURE__ */ jsx(
83956
84219
  Pressable,
@@ -83966,7 +84229,7 @@ function OfferModalMembershipImage({
83966
84229
  }
83967
84230
  ) }) });
83968
84231
  }, [closeButtonSlot, closeClassName]);
83969
- const renderForm = useMemo434(() => {
84232
+ const renderForm = useMemo432(() => {
83970
84233
  if (formSlot) return formSlot;
83971
84234
  return /* @__PURE__ */ jsxs(
83972
84235
  Form,
@@ -84029,7 +84292,7 @@ function OfferModalMembershipImage({
84029
84292
  }
84030
84293
  );
84031
84294
  }, [formSlot, form, formConfig, formMethod, emailPlaceholder, inputClassName, submitClassName, buttonText, formClassName]);
84032
- const renderFooter = useMemo434(() => {
84295
+ const renderFooter = useMemo432(() => {
84033
84296
  if (footerSlot) return footerSlot;
84034
84297
  if (!description) return null;
84035
84298
  return /* @__PURE__ */ jsx(DialogFooter, { className: footerClassName, children: /* @__PURE__ */ jsx(DialogDescription, { className: cn("text-muted-foreground text-center text-xs leading-relaxed", descriptionClassName), children: description }) });
@@ -84149,7 +84412,7 @@ function SheetDescription({
84149
84412
  }
84150
84413
  );
84151
84414
  }
84152
- var { useMemo: useMemo435 } = React22;
84415
+ var { useMemo: useMemo433 } = React22;
84153
84416
  function OfferModalSheetNewsletter({
84154
84417
  logo,
84155
84418
  logoSlot,
@@ -84232,7 +84495,7 @@ function OfferModalSheetNewsletter({
84232
84495
  });
84233
84496
  const formMethod = formConfig?.method?.toLowerCase() === "get" ? "get" : "post";
84234
84497
  const sheetProps = open !== void 0 ? { open, onOpenChange } : { defaultOpen };
84235
- const renderLogo = useMemo435(() => {
84498
+ const renderLogo = useMemo433(() => {
84236
84499
  if (logoSlot) return logoSlot;
84237
84500
  if (!logo) return null;
84238
84501
  const logoSrc = typeof logo.src === "string" ? logo.src : logo.src.light;
@@ -84246,7 +84509,7 @@ function OfferModalSheetNewsletter({
84246
84509
  }
84247
84510
  );
84248
84511
  }, [logoSlot, logo, logoClassName, optixFlowConfig]);
84249
- const renderHeader = useMemo435(() => {
84512
+ const renderHeader = useMemo433(() => {
84250
84513
  if (headerSlot) return headerSlot;
84251
84514
  return /* @__PURE__ */ jsxs(SheetHeader, { className: cn("gap-8 p-0", headerClassName), children: [
84252
84515
  renderLogo,
@@ -84256,7 +84519,7 @@ function OfferModalSheetNewsletter({
84256
84519
  ] })
84257
84520
  ] });
84258
84521
  }, [headerSlot, renderLogo, headerClassName, title, titleClassName, description, descriptionClassName]);
84259
- const renderForm = useMemo435(() => {
84522
+ const renderForm = useMemo433(() => {
84260
84523
  if (formSlot) return formSlot;
84261
84524
  return /* @__PURE__ */ jsx(
84262
84525
  Form,
@@ -84304,7 +84567,7 @@ function OfferModalSheetNewsletter({
84304
84567
  }
84305
84568
  );
84306
84569
  }, [formSlot, form, formConfig, formMethod, emailPlaceholder, inputClassName, submitClassName, buttonText, formClassName]);
84307
- const renderLegal = useMemo435(() => {
84570
+ const renderLegal = useMemo433(() => {
84308
84571
  if (legalSlot) return legalSlot;
84309
84572
  if (!termsUrl || !termsText || !privacyUrl || !privacyText) return null;
84310
84573
  return /* @__PURE__ */ jsxs("p", { className: cn("text-muted-foreground text-xs", legalClassName), children: [
@@ -84318,7 +84581,7 @@ function OfferModalSheetNewsletter({
84318
84581
  "."
84319
84582
  ] });
84320
84583
  }, [legalSlot, termsUrl, termsText, privacyUrl, privacyText, legalClassName]);
84321
- const renderImage = useMemo435(() => {
84584
+ const renderImage = useMemo433(() => {
84322
84585
  if (imageSlot) return imageSlot;
84323
84586
  if (!image) return null;
84324
84587
  return /* @__PURE__ */ jsx("div", { className: cn("h-1/2 basis-1/2", imageWrapperClassName), children: /* @__PURE__ */ jsx(AspectRatio, { ratio: 1, className: "overflow-hidden", children: /* @__PURE__ */ jsx(