@opensite/ui 3.5.8 → 3.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/registry.js CHANGED
@@ -3570,13 +3570,13 @@ function isThemedLogo(logo) {
3570
3570
  }
3571
3571
  var FooterLogo = ({
3572
3572
  logo,
3573
- logoSlot,
3573
+ logoSlot: logoSlot2,
3574
3574
  logoClassName,
3575
3575
  logoImageClassName,
3576
3576
  logoTitleClassName,
3577
3577
  optixFlowConfig
3578
3578
  }) => {
3579
- if (logoSlot) return /* @__PURE__ */ jsx(Fragment, { children: logoSlot });
3579
+ if (logoSlot2) return /* @__PURE__ */ jsx(Fragment, { children: logoSlot2 });
3580
3580
  if (!logo) return null;
3581
3581
  const hasThemedSources = isThemedLogo(logo) && (logo.light || logo.dark);
3582
3582
  const hasStandardSource = !isThemedLogo(logo) && logo.src;
@@ -22422,7 +22422,7 @@ function FeatureSplitImage({
22422
22422
  description,
22423
22423
  imageSrc,
22424
22424
  imageAlt,
22425
- imageSlot,
22425
+ imageSlot: imageSlot2,
22426
22426
  actions,
22427
22427
  actionsSlot,
22428
22428
  className,
@@ -22469,7 +22469,7 @@ function FeatureSplitImage({
22469
22469
  });
22470
22470
  }, [actionsSlot, actions]);
22471
22471
  const imageContent = useMemo(() => {
22472
- if (imageSlot) return imageSlot;
22472
+ if (imageSlot2) return imageSlot2;
22473
22473
  if (!imageSrc) return null;
22474
22474
  return /* @__PURE__ */ jsx(
22475
22475
  Img,
@@ -22484,7 +22484,7 @@ function FeatureSplitImage({
22484
22484
  optixFlowConfig
22485
22485
  }
22486
22486
  );
22487
- }, [imageSlot, imageSrc, imageAlt, imageClassName, optixFlowConfig]);
22487
+ }, [imageSlot2, imageSrc, imageAlt, imageClassName, optixFlowConfig]);
22488
22488
  return /* @__PURE__ */ jsx(
22489
22489
  Section,
22490
22490
  {
@@ -22573,7 +22573,7 @@ function FeatureSplitImageReverse({
22573
22573
  description,
22574
22574
  imageSrc,
22575
22575
  imageAlt,
22576
- imageSlot,
22576
+ imageSlot: imageSlot2,
22577
22577
  actions,
22578
22578
  actionsSlot,
22579
22579
  className,
@@ -22620,7 +22620,7 @@ function FeatureSplitImageReverse({
22620
22620
  });
22621
22621
  }, [actionsSlot, actions]);
22622
22622
  const imageContent = useMemo(() => {
22623
- if (imageSlot) return imageSlot;
22623
+ if (imageSlot2) return imageSlot2;
22624
22624
  if (!imageSrc) return null;
22625
22625
  return /* @__PURE__ */ jsx(
22626
22626
  Img,
@@ -22635,7 +22635,7 @@ function FeatureSplitImageReverse({
22635
22635
  optixFlowConfig
22636
22636
  }
22637
22637
  );
22638
- }, [imageSlot, imageSrc, imageAlt, imageClassName, optixFlowConfig]);
22638
+ }, [imageSlot2, imageSrc, imageAlt, imageClassName, optixFlowConfig]);
22639
22639
  return /* @__PURE__ */ jsx(
22640
22640
  Section,
22641
22641
  {
@@ -22870,7 +22870,7 @@ function FeatureChecklistImage({
22870
22870
  descriptionClassName,
22871
22871
  imageSrc,
22872
22872
  imageAlt,
22873
- imageSlot,
22873
+ imageSlot: imageSlot2,
22874
22874
  actions,
22875
22875
  actionsSlot,
22876
22876
  checklistItems,
@@ -22931,7 +22931,7 @@ function FeatureChecklistImage({
22931
22931
  });
22932
22932
  }, [actionsSlot, actions]);
22933
22933
  const imageContent = useMemo(() => {
22934
- if (imageSlot) return imageSlot;
22934
+ if (imageSlot2) return imageSlot2;
22935
22935
  if (!imageSrc) return null;
22936
22936
  return /* @__PURE__ */ jsx(
22937
22937
  "div",
@@ -22955,7 +22955,7 @@ function FeatureChecklistImage({
22955
22955
  )
22956
22956
  }
22957
22957
  );
22958
- }, [imageSlot, imageSrc, imageAlt, imageClassName, optixFlowConfig]);
22958
+ }, [imageSlot2, imageSrc, imageAlt, imageClassName, optixFlowConfig]);
22959
22959
  const checklistContent = useMemo(() => {
22960
22960
  if (checklistSlot) return checklistSlot;
22961
22961
  const items = checklistItems ?? benefits;
@@ -25928,7 +25928,7 @@ function FeatureImageOverlayBadge({
25928
25928
  actionsSlot,
25929
25929
  imageSrc,
25930
25930
  imageAlt,
25931
- imageSlot,
25931
+ imageSlot: imageSlot2,
25932
25932
  avatarSrc,
25933
25933
  avatarBadgeText,
25934
25934
  overlayTitle,
@@ -25996,7 +25996,7 @@ function FeatureImageOverlayBadge({
25996
25996
  });
25997
25997
  }, [actionsSlot, actions]);
25998
25998
  const imageContent = useMemo(() => {
25999
- if (imageSlot) return imageSlot;
25999
+ if (imageSlot2) return imageSlot2;
26000
26000
  if (imageSrc) {
26001
26001
  return /* @__PURE__ */ jsx(
26002
26002
  Img,
@@ -26013,7 +26013,7 @@ function FeatureImageOverlayBadge({
26013
26013
  );
26014
26014
  }
26015
26015
  return null;
26016
- }, [imageSlot, imageSrc, imageAlt, imageClassName, optixFlowConfig]);
26016
+ }, [imageSlot2, imageSrc, imageAlt, imageClassName, optixFlowConfig]);
26017
26017
  return /* @__PURE__ */ jsx(
26018
26018
  Section,
26019
26019
  {
@@ -50869,13 +50869,13 @@ function HeroPatternBadgeLogos({
50869
50869
  function HeroLogoCenteredScreenshot({
50870
50870
  sectionId = "hero-logo-centered-screenshot",
50871
50871
  logo,
50872
- logoSlot,
50872
+ logoSlot: logoSlot2,
50873
50873
  heading,
50874
50874
  description,
50875
50875
  action,
50876
50876
  actionSlot,
50877
50877
  image,
50878
- imageSlot,
50878
+ imageSlot: imageSlot2,
50879
50879
  background,
50880
50880
  containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
50881
50881
  spacing = "pt-32 pb-8 md:pt-32 md:pb-32",
@@ -50889,7 +50889,7 @@ function HeroLogoCenteredScreenshot({
50889
50889
  optixFlowConfig
50890
50890
  }) {
50891
50891
  const renderLogo = useMemo(() => {
50892
- if (logoSlot) return logoSlot;
50892
+ if (logoSlot2) return logoSlot2;
50893
50893
  if (!logo) return null;
50894
50894
  const logoSrc = typeof logo.src === "string" ? logo.src : logo.src.light;
50895
50895
  return /* @__PURE__ */ jsx(
@@ -50901,7 +50901,7 @@ function HeroLogoCenteredScreenshot({
50901
50901
  optixFlowConfig
50902
50902
  }
50903
50903
  );
50904
- }, [logoSlot, logo, optixFlowConfig]);
50904
+ }, [logoSlot2, logo, optixFlowConfig]);
50905
50905
  const renderAction = useMemo(() => {
50906
50906
  if (actionSlot) return actionSlot;
50907
50907
  if (!action) return null;
@@ -50920,7 +50920,7 @@ function HeroLogoCenteredScreenshot({
50920
50920
  ] }) });
50921
50921
  }, [actionSlot, action]);
50922
50922
  const renderImage = useMemo(() => {
50923
- if (imageSlot) return imageSlot;
50923
+ if (imageSlot2) return imageSlot2;
50924
50924
  if (!image) return null;
50925
50925
  return /* @__PURE__ */ jsx(
50926
50926
  Img,
@@ -50935,7 +50935,7 @@ function HeroLogoCenteredScreenshot({
50935
50935
  optixFlowConfig
50936
50936
  }
50937
50937
  );
50938
- }, [imageSlot, image, imageClassName, optixFlowConfig]);
50938
+ }, [imageSlot2, image, imageClassName, optixFlowConfig]);
50939
50939
  return /* @__PURE__ */ jsx(
50940
50940
  Section,
50941
50941
  {
@@ -50998,7 +50998,7 @@ function HeroLogoCenteredScreenshot({
50998
50998
  function HeroPatternLogoTechStack({
50999
50999
  sectionId = "hero-pattern-logo-tech-stack",
51000
51000
  logo,
51001
- logoSlot,
51001
+ logoSlot: logoSlot2,
51002
51002
  heading,
51003
51003
  highlightedWord,
51004
51004
  description,
@@ -51021,7 +51021,7 @@ function HeroPatternLogoTechStack({
51021
51021
  optixFlowConfig
51022
51022
  }) {
51023
51023
  const renderLogo = useMemo(() => {
51024
- if (logoSlot) return logoSlot;
51024
+ if (logoSlot2) return logoSlot2;
51025
51025
  if (!logo) return null;
51026
51026
  const logoSrc = typeof logo.src === "string" ? logo.src : logo.src.light;
51027
51027
  return /* @__PURE__ */ jsx("div", { className: "relative", children: /* @__PURE__ */ jsx(
@@ -51033,7 +51033,7 @@ function HeroPatternLogoTechStack({
51033
51033
  optixFlowConfig
51034
51034
  }
51035
51035
  ) });
51036
- }, [logoSlot, logo, optixFlowConfig]);
51036
+ }, [logoSlot2, logo, optixFlowConfig]);
51037
51037
  const renderActions = useMemo(() => {
51038
51038
  if (actionsSlot) return actionsSlot;
51039
51039
  if (!actions || actions.length === 0) return null;
@@ -51268,7 +51268,7 @@ function HeroPanel({
51268
51268
  }) {
51269
51269
  const {
51270
51270
  logo,
51271
- logoSlot,
51271
+ logoSlot: logoSlot2,
51272
51272
  title,
51273
51273
  content,
51274
51274
  actions,
@@ -51349,7 +51349,7 @@ function HeroPanel({
51349
51349
  ]);
51350
51350
  const hasBackground = !!backgroundMedia && backgroundMedia.length > 0;
51351
51351
  const renderLogo = useMemo(() => {
51352
- if (logoSlot) return logoSlot;
51352
+ if (logoSlot2) return logoSlot2;
51353
51353
  if (!logo) return null;
51354
51354
  const src = resolveLogoSrc(logo);
51355
51355
  if (!src) return null;
@@ -51366,7 +51366,7 @@ function HeroPanel({
51366
51366
  optixFlowConfig: resolvedOptixFlow
51367
51367
  }
51368
51368
  );
51369
- }, [logoSlot, logo, logoClassName, resolvedOptixFlow]);
51369
+ }, [logoSlot2, logo, logoClassName, resolvedOptixFlow]);
51370
51370
  const renderTitle = useMemo(() => {
51371
51371
  if (title === void 0 || title === null || title === "") return null;
51372
51372
  if (typeof title === "string") {
@@ -51640,7 +51640,7 @@ function HeroSimpleCenteredImage({
51640
51640
  function HeroPlatformFeaturesGrid({
51641
51641
  sectionId = "hero-platform-features-grid",
51642
51642
  logo,
51643
- logoSlot,
51643
+ logoSlot: logoSlot2,
51644
51644
  subtitle,
51645
51645
  description,
51646
51646
  heading,
@@ -51660,7 +51660,7 @@ function HeroPlatformFeaturesGrid({
51660
51660
  optixFlowConfig
51661
51661
  }) {
51662
51662
  const renderLogo = useMemo(() => {
51663
- if (logoSlot) return logoSlot;
51663
+ if (logoSlot2) return logoSlot2;
51664
51664
  if (!logo) return null;
51665
51665
  const logoSrc = typeof logo.src === "string" ? logo.src : logo.src.light;
51666
51666
  return /* @__PURE__ */ jsx(
@@ -51675,7 +51675,7 @@ function HeroPlatformFeaturesGrid({
51675
51675
  optixFlowConfig
51676
51676
  }
51677
51677
  );
51678
- }, [logoSlot, logo, optixFlowConfig]);
51678
+ }, [logoSlot2, logo, optixFlowConfig]);
51679
51679
  const renderAction = useMemo(() => {
51680
51680
  if (actionSlot) return actionSlot;
51681
51681
  if (!action) return null;
@@ -53138,7 +53138,7 @@ function HeroDashedBorderFeatures({
53138
53138
  function HeroDesignCarouselPortfolio({
53139
53139
  sectionId = "hero-design-carousel-portfolio",
53140
53140
  logo,
53141
- logoSlot,
53141
+ logoSlot: logoSlot2,
53142
53142
  features,
53143
53143
  featuresSlot,
53144
53144
  heading,
@@ -53162,7 +53162,7 @@ function HeroDesignCarouselPortfolio({
53162
53162
  optixFlowConfig
53163
53163
  }) {
53164
53164
  const renderLogo = useMemo(() => {
53165
- if (logoSlot) return logoSlot;
53165
+ if (logoSlot2) return logoSlot2;
53166
53166
  if (!logo) return null;
53167
53167
  const logoSrc = typeof logo.src === "string" ? logo.src : logo.src.light;
53168
53168
  return /* @__PURE__ */ jsx(
@@ -53174,7 +53174,7 @@ function HeroDesignCarouselPortfolio({
53174
53174
  optixFlowConfig
53175
53175
  }
53176
53176
  );
53177
- }, [logoSlot, logo, optixFlowConfig]);
53177
+ }, [logoSlot2, logo, optixFlowConfig]);
53178
53178
  const renderFeatures = useMemo(() => {
53179
53179
  if (featuresSlot) return featuresSlot;
53180
53180
  if (!features || features.length === 0) return null;
@@ -53298,7 +53298,7 @@ function HeroGradientClientFocused({
53298
53298
  actions,
53299
53299
  actionsSlot,
53300
53300
  image,
53301
- imageSlot,
53301
+ imageSlot: imageSlot2,
53302
53302
  background,
53303
53303
  containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
53304
53304
  spacing = "xl",
@@ -53312,7 +53312,7 @@ function HeroGradientClientFocused({
53312
53312
  optixFlowConfig
53313
53313
  }) {
53314
53314
  const renderImage = useMemo(() => {
53315
- if (imageSlot) return imageSlot;
53315
+ if (imageSlot2) return imageSlot2;
53316
53316
  if (!image) return null;
53317
53317
  return /* @__PURE__ */ jsx(
53318
53318
  Img,
@@ -53327,7 +53327,7 @@ function HeroGradientClientFocused({
53327
53327
  optixFlowConfig
53328
53328
  }
53329
53329
  );
53330
- }, [imageSlot, image, imageClassName, optixFlowConfig]);
53330
+ }, [imageSlot2, image, imageClassName, optixFlowConfig]);
53331
53331
  return /* @__PURE__ */ jsx(
53332
53332
  Section,
53333
53333
  {
@@ -53394,7 +53394,7 @@ function HeroPremiumSplitAvatars({
53394
53394
  avatarsSlot,
53395
53395
  socialProofText,
53396
53396
  image,
53397
- imageSlot,
53397
+ imageSlot: imageSlot2,
53398
53398
  className,
53399
53399
  spacing = "hero",
53400
53400
  containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
@@ -53458,7 +53458,7 @@ function HeroPremiumSplitAvatars({
53458
53458
  ] });
53459
53459
  }, [avatarsSlot, avatars, socialProofText]);
53460
53460
  const renderImage = useMemo(() => {
53461
- if (imageSlot) return imageSlot;
53461
+ if (imageSlot2) return imageSlot2;
53462
53462
  if (!image) return null;
53463
53463
  return /* @__PURE__ */ jsx(
53464
53464
  MediaAspectRatio,
@@ -53480,7 +53480,7 @@ function HeroPremiumSplitAvatars({
53480
53480
  }
53481
53481
  );
53482
53482
  }, [
53483
- imageSlot,
53483
+ imageSlot2,
53484
53484
  image,
53485
53485
  imageClassName,
53486
53486
  optixFlowConfig,
@@ -53532,14 +53532,14 @@ function HeroPremiumSplitAvatars({
53532
53532
  function HeroUiLibraryShowcase({
53533
53533
  sectionId = "hero-ui-library-showcase",
53534
53534
  logo,
53535
- logoSlot,
53535
+ logoSlot: logoSlot2,
53536
53536
  heading,
53537
53537
  description,
53538
53538
  actions,
53539
53539
  actionsSlot,
53540
53540
  actionsClassName,
53541
53541
  image,
53542
- imageSlot,
53542
+ imageSlot: imageSlot2,
53543
53543
  background,
53544
53544
  pattern,
53545
53545
  patternOpacity,
@@ -53553,7 +53553,7 @@ function HeroUiLibraryShowcase({
53553
53553
  optixFlowConfig
53554
53554
  }) {
53555
53555
  const renderLogo = useMemo(() => {
53556
- if (logoSlot) return logoSlot;
53556
+ if (logoSlot2) return logoSlot2;
53557
53557
  if (!logo) return null;
53558
53558
  return /* @__PURE__ */ jsx(
53559
53559
  Img,
@@ -53564,9 +53564,9 @@ function HeroUiLibraryShowcase({
53564
53564
  optixFlowConfig
53565
53565
  }
53566
53566
  );
53567
- }, [logoSlot, logo, optixFlowConfig]);
53567
+ }, [logoSlot2, logo, optixFlowConfig]);
53568
53568
  const renderImage = useMemo(() => {
53569
- if (imageSlot) return imageSlot;
53569
+ if (imageSlot2) return imageSlot2;
53570
53570
  if (!image) return null;
53571
53571
  return /* @__PURE__ */ jsx("div", { className: "w-full overflow-hidden rounded-2xl shadow-xl mt-12 md:mt-20", children: /* @__PURE__ */ jsx(AspectRatio, { ratio: 1.916786227 / 1, children: /* @__PURE__ */ jsx(
53572
53572
  Img,
@@ -53581,7 +53581,7 @@ function HeroUiLibraryShowcase({
53581
53581
  optixFlowConfig
53582
53582
  }
53583
53583
  ) }) });
53584
- }, [imageSlot, image, imageClassName, optixFlowConfig]);
53584
+ }, [imageSlot2, image, imageClassName, optixFlowConfig]);
53585
53585
  return /* @__PURE__ */ jsxs(
53586
53586
  Section,
53587
53587
  {
@@ -53746,7 +53746,7 @@ function HeroFullscreenBackgroundImage({
53746
53746
  function HeroFullscreenLogoCta({
53747
53747
  sectionId = "hero-fullscreen-logo-cta",
53748
53748
  logo,
53749
- logoSlot,
53749
+ logoSlot: logoSlot2,
53750
53750
  heading,
53751
53751
  description,
53752
53752
  action,
@@ -53780,7 +53780,7 @@ function HeroFullscreenLogoCta({
53780
53780
  ] });
53781
53781
  }, [backgroundImage, optixFlowConfig]);
53782
53782
  const renderLogo = useMemo(() => {
53783
- if (logoSlot) return logoSlot;
53783
+ if (logoSlot2) return logoSlot2;
53784
53784
  if (!logo) return null;
53785
53785
  const logoSrc = typeof logo.src === "string" ? logo.src : logo.src.light;
53786
53786
  return /* @__PURE__ */ jsx(
@@ -53792,7 +53792,7 @@ function HeroFullscreenLogoCta({
53792
53792
  optixFlowConfig
53793
53793
  }
53794
53794
  );
53795
- }, [logoSlot, logo, optixFlowConfig]);
53795
+ }, [logoSlot2, logo, optixFlowConfig]);
53796
53796
  const renderAction = useMemo(() => {
53797
53797
  if (actionSlot) return actionSlot;
53798
53798
  if (!action) return null;
@@ -54898,7 +54898,7 @@ function HeroCrmStreamlined({
54898
54898
  actionsSlot,
54899
54899
  actionsClassName,
54900
54900
  image,
54901
- imageSlot,
54901
+ imageSlot: imageSlot2,
54902
54902
  background,
54903
54903
  pattern,
54904
54904
  patternOpacity,
@@ -54964,7 +54964,7 @@ function HeroCrmStreamlined({
54964
54964
  "div",
54965
54965
  {
54966
54966
  className: cn("relative basis-[42%] py-9 md:py-16", imageClassName),
54967
- children: imageSlot ? imageSlot : image ? /* @__PURE__ */ jsxs("div", { className: "aspect-square w-full overflow-hidden rounded-xl shadow-xl", children: [
54967
+ children: imageSlot2 ? imageSlot2 : image ? /* @__PURE__ */ jsxs("div", { className: "aspect-square w-full overflow-hidden rounded-xl shadow-xl", children: [
54968
54968
  /* @__PURE__ */ jsx(
54969
54969
  Img,
54970
54970
  {
@@ -55482,7 +55482,7 @@ function HeroConversionVideoPlay({
55482
55482
  videoDialogTitle,
55483
55483
  actionsSlot,
55484
55484
  image,
55485
- imageSlot,
55485
+ imageSlot: imageSlot2,
55486
55486
  logosTagline,
55487
55487
  logos,
55488
55488
  logosSlot,
@@ -55613,7 +55613,7 @@ function HeroConversionVideoPlay({
55613
55613
  ]
55614
55614
  }
55615
55615
  ),
55616
- /* @__PURE__ */ jsx("div", { className: "w-full", children: imageSlot ? imageSlot : image ? /* @__PURE__ */ jsx("div", { className: cn("relative h-fit w-full", imageClassName), children: /* @__PURE__ */ jsx("div", { className: "relative z-20 w-full max-w-330 overflow-hidden rounded-t-xl md:rounded-t-3xl", children: /* @__PURE__ */ jsx(AspectRatio, { ratio: 2.095238095 / 1, children: /* @__PURE__ */ jsx(
55616
+ /* @__PURE__ */ jsx("div", { className: "w-full", children: imageSlot2 ? imageSlot2 : image ? /* @__PURE__ */ jsx("div", { className: cn("relative h-fit w-full", imageClassName), children: /* @__PURE__ */ jsx("div", { className: "relative z-20 w-full max-w-330 overflow-hidden rounded-t-xl md:rounded-t-3xl", children: /* @__PURE__ */ jsx(AspectRatio, { ratio: 2.095238095 / 1, children: /* @__PURE__ */ jsx(
55617
55617
  Img,
55618
55618
  {
55619
55619
  src: image.src,
@@ -56189,7 +56189,7 @@ function HeroSplitImageNewsletter({
56189
56189
  helperText,
56190
56190
  formSlot,
56191
56191
  image,
56192
- imageSlot,
56192
+ imageSlot: imageSlot2,
56193
56193
  background,
56194
56194
  spacing = "xl",
56195
56195
  containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
@@ -56301,7 +56301,7 @@ function HeroSplitImageNewsletter({
56301
56301
  resetSubmissionState
56302
56302
  ]);
56303
56303
  const renderImage = React30.useMemo(() => {
56304
- if (imageSlot) return imageSlot;
56304
+ if (imageSlot2) return imageSlot2;
56305
56305
  if (!image) return null;
56306
56306
  return /* @__PURE__ */ jsx("div", { className: "relative lg:w-1/2", children: /* @__PURE__ */ jsx(
56307
56307
  Img,
@@ -56316,7 +56316,7 @@ function HeroSplitImageNewsletter({
56316
56316
  optixFlowConfig
56317
56317
  }
56318
56318
  ) });
56319
- }, [imageSlot, image, imageClassName, optixFlowConfig]);
56319
+ }, [imageSlot2, image, imageClassName, optixFlowConfig]);
56320
56320
  return /* @__PURE__ */ jsx(
56321
56321
  Section,
56322
56322
  {
@@ -57299,7 +57299,7 @@ function HeroVideoDialogGradient({
57299
57299
  actions,
57300
57300
  videoAction,
57301
57301
  image,
57302
- imageSlot,
57302
+ imageSlot: imageSlot2,
57303
57303
  modalVideo,
57304
57304
  videoDialogTitle,
57305
57305
  videoDialog,
@@ -57342,7 +57342,7 @@ function HeroVideoDialogGradient({
57342
57342
  }
57343
57343
  };
57344
57344
  const renderImage = useMemo(() => {
57345
- if (imageSlot) return imageSlot;
57345
+ if (imageSlot2) return imageSlot2;
57346
57346
  if (!image) return null;
57347
57347
  return /* @__PURE__ */ jsx("div", { className: "mx-auto mt-16 w-full max-w-[1000px] overflow-hidden rounded-xl shadow-[4px_2px_3.123rem_rgba(0,0,0,.15)]", children: /* @__PURE__ */ jsx(AspectRatio, { ratio: 1.406469761 / 1, children: /* @__PURE__ */ jsx(
57348
57348
  Img,
@@ -57357,7 +57357,7 @@ function HeroVideoDialogGradient({
57357
57357
  optixFlowConfig
57358
57358
  }
57359
57359
  ) }) });
57360
- }, [imageSlot, image, imageClassName, optixFlowConfig]);
57360
+ }, [imageSlot2, image, imageClassName, optixFlowConfig]);
57361
57361
  return /* @__PURE__ */ jsxs(Fragment$1, { children: [
57362
57362
  /* @__PURE__ */ jsx(
57363
57363
  Section,
@@ -58306,7 +58306,7 @@ function HeroMentorshipVideoSplit({
58306
58306
  videoTitle,
58307
58307
  videoSlot,
58308
58308
  image,
58309
- imageSlot,
58309
+ imageSlot: imageSlot2,
58310
58310
  background,
58311
58311
  spacing = "py-32 md:py-32",
58312
58312
  pattern,
@@ -58406,7 +58406,7 @@ function HeroMentorshipVideoSplit({
58406
58406
  setIsVideoOpen
58407
58407
  ]);
58408
58408
  const renderImage = useMemo(() => {
58409
- if (imageSlot) return imageSlot;
58409
+ if (imageSlot2) return imageSlot2;
58410
58410
  if (!image) return null;
58411
58411
  return /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(
58412
58412
  Img,
@@ -58421,7 +58421,7 @@ function HeroMentorshipVideoSplit({
58421
58421
  optixFlowConfig
58422
58422
  }
58423
58423
  ) });
58424
- }, [imageSlot, image, imageClassName, optixFlowConfig]);
58424
+ }, [imageSlot2, image, imageClassName, optixFlowConfig]);
58425
58425
  return /* @__PURE__ */ jsxs(Fragment$1, { children: [
58426
58426
  /* @__PURE__ */ jsx(
58427
58427
  Section,
@@ -59812,7 +59812,7 @@ function HeroConversationIntelligence({
59812
59812
  actions,
59813
59813
  actionsSlot,
59814
59814
  image,
59815
- imageSlot,
59815
+ imageSlot: imageSlot2,
59816
59816
  background,
59817
59817
  containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
59818
59818
  spacing = "hero",
@@ -59828,7 +59828,7 @@ function HeroConversationIntelligence({
59828
59828
  optixFlowConfig
59829
59829
  }) {
59830
59830
  const renderImage = useMemo(() => {
59831
- if (imageSlot) return imageSlot;
59831
+ if (imageSlot2) return imageSlot2;
59832
59832
  if (!image) return null;
59833
59833
  return /* @__PURE__ */ jsx(
59834
59834
  "div",
@@ -59851,7 +59851,7 @@ function HeroConversationIntelligence({
59851
59851
  )
59852
59852
  }
59853
59853
  );
59854
- }, [imageSlot, image, imageClassName, optixFlowConfig]);
59854
+ }, [imageSlot2, image, imageClassName, optixFlowConfig]);
59855
59855
  return /* @__PURE__ */ jsx(
59856
59856
  Section,
59857
59857
  {
@@ -60365,7 +60365,7 @@ function HeroMobileAppDownload({
60365
60365
  starCount,
60366
60366
  ratingSlot,
60367
60367
  image,
60368
- imageSlot,
60368
+ imageSlot: imageSlot2,
60369
60369
  notification,
60370
60370
  notificationSlot,
60371
60371
  background,
@@ -60473,7 +60473,7 @@ function HeroMobileAppDownload({
60473
60473
  );
60474
60474
  }, [notificationSlot, notification]);
60475
60475
  const renderImage = useMemo(() => {
60476
- if (imageSlot) return imageSlot;
60476
+ if (imageSlot2) return imageSlot2;
60477
60477
  if (!image) return null;
60478
60478
  return /* @__PURE__ */ jsx(
60479
60479
  "div",
@@ -60499,7 +60499,7 @@ function HeroMobileAppDownload({
60499
60499
  ] })
60500
60500
  }
60501
60501
  );
60502
- }, [imageSlot, image, imageClassName, optixFlowConfig, renderNotification]);
60502
+ }, [imageSlot2, image, imageClassName, optixFlowConfig, renderNotification]);
60503
60503
  return /* @__PURE__ */ jsx(
60504
60504
  Section,
60505
60505
  {
@@ -61077,7 +61077,7 @@ function HeroEventRegistration({
61077
61077
  stats,
61078
61078
  statsSlot,
61079
61079
  image,
61080
- imageSlot,
61080
+ imageSlot: imageSlot2,
61081
61081
  locationLabel,
61082
61082
  locationSublabel,
61083
61083
  locationSlot,
@@ -61196,7 +61196,7 @@ function HeroEventRegistration({
61196
61196
  );
61197
61197
  }, [locationSlot, locationLabel, locationSublabel]);
61198
61198
  const renderImage = useMemo(() => {
61199
- if (imageSlot) return imageSlot;
61199
+ if (imageSlot2) return imageSlot2;
61200
61200
  if (!image) return null;
61201
61201
  return /* @__PURE__ */ jsxs("div", { className: "relative w-full md:w-[50%]", children: [
61202
61202
  /* @__PURE__ */ jsx(
@@ -61219,7 +61219,7 @@ function HeroEventRegistration({
61219
61219
  ),
61220
61220
  renderLocation
61221
61221
  ] });
61222
- }, [imageSlot, image, imageClassName, optixFlowConfig, renderLocation]);
61222
+ }, [imageSlot2, image, imageClassName, optixFlowConfig, renderLocation]);
61223
61223
  const desktopOrder = directionConfig.desktop === "mediaRight" ? "md:flex-row" : "md:flex-row-reverse";
61224
61224
  const mobileOrder = directionConfig.mobile === "mediaTop" ? "flex-col-reverse" : "flex-col";
61225
61225
  return /* @__PURE__ */ jsx(
@@ -63111,11 +63111,11 @@ var NavbarMobileMenu = ({
63111
63111
  };
63112
63112
  var NavbarLogo = ({
63113
63113
  logo,
63114
- logoSlot,
63114
+ logoSlot: logoSlot2,
63115
63115
  logoClassName,
63116
63116
  optixFlowConfig
63117
63117
  }) => {
63118
- if (logoSlot) return /* @__PURE__ */ jsx(Fragment, { children: logoSlot });
63118
+ if (logoSlot2) return /* @__PURE__ */ jsx(Fragment, { children: logoSlot2 });
63119
63119
  if (!logo) return null;
63120
63120
  return /* @__PURE__ */ jsx(
63121
63121
  Pressable,
@@ -63232,7 +63232,7 @@ var renderMobileMenuItem = (item, optixFlowConfig) => {
63232
63232
  var NavbarDropdownMenu = ({
63233
63233
  sectionId = "navbar-dropdown-menu",
63234
63234
  logo,
63235
- logoSlot,
63235
+ logoSlot: logoSlot2,
63236
63236
  logoClassName,
63237
63237
  menu,
63238
63238
  menuSlot,
@@ -63324,7 +63324,7 @@ var NavbarDropdownMenu = ({
63324
63324
  NavbarLogo,
63325
63325
  {
63326
63326
  logo,
63327
- logoSlot,
63327
+ logoSlot: logoSlot2,
63328
63328
  logoClassName,
63329
63329
  optixFlowConfig
63330
63330
  }
@@ -63340,7 +63340,7 @@ var NavbarDropdownMenu = ({
63340
63340
  NavbarLogo,
63341
63341
  {
63342
63342
  logo,
63343
- logoSlot,
63343
+ logoSlot: logoSlot2,
63344
63344
  logoClassName,
63345
63345
  optixFlowConfig
63346
63346
  }
@@ -63460,7 +63460,7 @@ var renderMobileMenuItem2 = (item) => {
63460
63460
  var NavbarCenteredMenu = ({
63461
63461
  sectionId = "navbar-centered-menu",
63462
63462
  logo,
63463
- logoSlot,
63463
+ logoSlot: logoSlot2,
63464
63464
  logoClassName,
63465
63465
  menu,
63466
63466
  menuSlot,
@@ -63551,7 +63551,7 @@ var NavbarCenteredMenu = ({
63551
63551
  NavbarLogo,
63552
63552
  {
63553
63553
  logo,
63554
- logoSlot,
63554
+ logoSlot: logoSlot2,
63555
63555
  logoClassName,
63556
63556
  optixFlowConfig
63557
63557
  }
@@ -63572,7 +63572,7 @@ var NavbarCenteredMenu = ({
63572
63572
  NavbarLogo,
63573
63573
  {
63574
63574
  logo,
63575
- logoSlot,
63575
+ logoSlot: logoSlot2,
63576
63576
  logoClassName,
63577
63577
  optixFlowConfig
63578
63578
  }
@@ -63850,7 +63850,7 @@ var NavbarMegaMenu = ({
63850
63850
  logoClassName,
63851
63851
  mobileMenuClassName,
63852
63852
  logo,
63853
- logoSlot,
63853
+ logoSlot: logoSlot2,
63854
63854
  menuLinks,
63855
63855
  actions,
63856
63856
  layoutVariant = "fullScreenContainerizedLinks",
@@ -63928,7 +63928,7 @@ var NavbarMegaMenu = ({
63928
63928
  NavbarLogo,
63929
63929
  {
63930
63930
  logo,
63931
- logoSlot,
63931
+ logoSlot: logoSlot2,
63932
63932
  logoClassName,
63933
63933
  optixFlowConfig
63934
63934
  }
@@ -64579,7 +64579,7 @@ var NavbarEnterpriseMega = ({
64579
64579
  actionsClassName,
64580
64580
  logoClassName,
64581
64581
  logo,
64582
- logoSlot,
64582
+ logoSlot: logoSlot2,
64583
64583
  menuLinks,
64584
64584
  actions,
64585
64585
  actionsSlot,
@@ -64662,7 +64662,7 @@ var NavbarEnterpriseMega = ({
64662
64662
  NavbarLogo,
64663
64663
  {
64664
64664
  logo,
64665
- logoSlot,
64665
+ logoSlot: logoSlot2,
64666
64666
  logoClassName,
64667
64667
  optixFlowConfig
64668
64668
  }
@@ -64962,7 +64962,7 @@ var NavbarFeatureGrid = ({
64962
64962
  actionsClassName,
64963
64963
  logoClassName,
64964
64964
  logo,
64965
- logoSlot,
64965
+ logoSlot: logoSlot2,
64966
64966
  features,
64967
64967
  menu,
64968
64968
  authActions,
@@ -65023,7 +65023,7 @@ var NavbarFeatureGrid = ({
65023
65023
  NavbarLogo,
65024
65024
  {
65025
65025
  logo,
65026
- logoSlot,
65026
+ logoSlot: logoSlot2,
65027
65027
  logoClassName,
65028
65028
  optixFlowConfig
65029
65029
  }
@@ -65132,7 +65132,7 @@ var NavbarFeatureGrid = ({
65132
65132
  var NavbarFloatingPill = ({
65133
65133
  sectionId = "navbar-floating-pill",
65134
65134
  logo,
65135
- logoSlot,
65135
+ logoSlot: logoSlot2,
65136
65136
  logoClassName,
65137
65137
  items,
65138
65138
  menuSlot,
@@ -65225,7 +65225,7 @@ var NavbarFloatingPill = ({
65225
65225
  NavbarLogo,
65226
65226
  {
65227
65227
  logo,
65228
- logoSlot,
65228
+ logoSlot: logoSlot2,
65229
65229
  logoClassName,
65230
65230
  optixFlowConfig
65231
65231
  }
@@ -65401,7 +65401,7 @@ var NavbarPlatformResources = ({
65401
65401
  logoClassName,
65402
65402
  mobileMenuClassName,
65403
65403
  logo,
65404
- logoSlot,
65404
+ logoSlot: logoSlot2,
65405
65405
  menuLinks,
65406
65406
  actions,
65407
65407
  layoutVariant = "fullScreenContainerizedLinks",
@@ -65759,7 +65759,7 @@ var NavbarPlatformResources = ({
65759
65759
  NavbarLogo,
65760
65760
  {
65761
65761
  logo,
65762
- logoSlot,
65762
+ logoSlot: logoSlot2,
65763
65763
  logoClassName,
65764
65764
  optixFlowConfig
65765
65765
  }
@@ -65903,7 +65903,7 @@ var NavbarImagePreview = ({
65903
65903
  navigationMenuClassName,
65904
65904
  actionsClassName,
65905
65905
  logo,
65906
- logoSlot,
65906
+ logoSlot: logoSlot2,
65907
65907
  logoClassName,
65908
65908
  navigation,
65909
65909
  navigationSlot,
@@ -66029,7 +66029,7 @@ var NavbarImagePreview = ({
66029
66029
  NavbarLogo,
66030
66030
  {
66031
66031
  logo,
66032
- logoSlot,
66032
+ logoSlot: logoSlot2,
66033
66033
  logoClassName,
66034
66034
  optixFlowConfig
66035
66035
  }
@@ -66297,7 +66297,7 @@ var NavbarDarkIcons = ({
66297
66297
  navigationMenuClassName,
66298
66298
  actionsClassName,
66299
66299
  logo,
66300
- logoSlot,
66300
+ logoSlot: logoSlot2,
66301
66301
  logoClassName,
66302
66302
  navigation,
66303
66303
  navigationSlot,
@@ -66412,7 +66412,7 @@ var NavbarDarkIcons = ({
66412
66412
  NavbarLogo,
66413
66413
  {
66414
66414
  logo,
66415
- logoSlot,
66415
+ logoSlot: logoSlot2,
66416
66416
  logoClassName,
66417
66417
  optixFlowConfig
66418
66418
  }
@@ -66641,7 +66641,7 @@ var NavbarAnimatedPreview = ({
66641
66641
  navigationMenuClassName,
66642
66642
  actionsClassName,
66643
66643
  logo,
66644
- logoSlot,
66644
+ logoSlot: logoSlot2,
66645
66645
  logoClassName,
66646
66646
  menuLinks,
66647
66647
  navigationSlot,
@@ -66763,7 +66763,7 @@ var NavbarAnimatedPreview = ({
66763
66763
  NavbarLogo,
66764
66764
  {
66765
66765
  logo,
66766
- logoSlot,
66766
+ logoSlot: logoSlot2,
66767
66767
  logoClassName,
66768
66768
  optixFlowConfig
66769
66769
  }
@@ -67033,35 +67033,35 @@ var FeaturedImageLink = ({
67033
67033
  ) }) });
67034
67034
  };
67035
67035
  var FeaturedLink = ({ link, optixFlowConfig }) => {
67036
+ const hasBgImg = !!link.background;
67036
67037
  return /* @__PURE__ */ jsxs(
67037
67038
  Pressable,
67038
67039
  {
67039
67040
  href: getLinkUrl(link),
67040
- className: "group relative flex w-full overflow-hidden rounded-xl bg-muted px-4 pt-24 pb-4",
67041
+ className: `group relative flex w-full overflow-hidden rounded-xl px-4 pt-24 pb-4 ${hasBgImg ? "" : "bg-primary"}`,
67041
67042
  children: [
67042
67043
  /* @__PURE__ */ jsxs("div", { className: "relative z-10 flex w-full items-center gap-6", children: [
67043
- /* @__PURE__ */ jsx("div", { className: "flex size-12 shrink-0 rounded-lg border bg-background shadow-lg", children: /* @__PURE__ */ jsx(
67044
- DynamicIcon,
67044
+ /* @__PURE__ */ jsx("div", { className: "flex size-12 shrink-0 rounded-lg border bg-card text-card-foreground shadow-lg", children: /* @__PURE__ */ jsx(DynamicIcon, { name: link.icon || link.iconName, size: 20 }) }),
67045
+ /* @__PURE__ */ jsxs(
67046
+ "div",
67045
67047
  {
67046
- name: link.icon || link.iconName,
67047
- size: 20,
67048
- className: "m-auto stroke-white"
67048
+ className: `flex flex-col ${hasBgImg ? "text-white text-shadow-lg" : "text-primary-foreground"}`,
67049
+ children: [
67050
+ /* @__PURE__ */ jsx("div", { className: "text-lg font-semibold", children: link.label }),
67051
+ /* @__PURE__ */ jsx("div", { className: "font-medium", children: link.description })
67052
+ ]
67049
67053
  }
67050
- ) }),
67051
- /* @__PURE__ */ jsxs("div", { className: "flex flex-col text-white text-shadow-lg", children: [
67052
- /* @__PURE__ */ jsx("div", { className: "text-lg font-semibold", children: link.label }),
67053
- /* @__PURE__ */ jsx("div", { className: "font-medium", children: link.description })
67054
- ] })
67054
+ )
67055
67055
  ] }),
67056
- /* @__PURE__ */ jsx(
67056
+ link.background && link.background?.length > 0 ? /* @__PURE__ */ jsx(
67057
67057
  Img,
67058
67058
  {
67059
67059
  src: link.background,
67060
- alt: typeof link.label === "string" ? link.label : "",
67060
+ alt: link.label && typeof link.label === "string" ? link.label : "Featured link background image",
67061
67061
  className: "absolute top-0 left-0 size-full brightness-50 object-cover object-center opacity-90 transition-opacity duration-300 ease-in-out group-hover:opacity-100",
67062
67062
  optixFlowConfig
67063
67063
  }
67064
- )
67064
+ ) : null
67065
67065
  ]
67066
67066
  }
67067
67067
  );
@@ -67077,17 +67077,17 @@ var NavLink = forwardRef(
67077
67077
  onMouseEnter,
67078
67078
  onMouseLeave,
67079
67079
  children: [
67080
- (link.icon || link.iconName) && /* @__PURE__ */ jsx("div", { className: "flex size-6 shrink-0 rounded-md border shadow", children: /* @__PURE__ */ jsx(
67080
+ link.icon || link.iconName ? /* @__PURE__ */ jsx("div", { className: "flex size-6 shrink-0 rounded-md border shadow", children: /* @__PURE__ */ jsx(
67081
67081
  DynamicIcon,
67082
67082
  {
67083
67083
  name: link.icon || link.iconName,
67084
67084
  size: 14,
67085
67085
  className: "m-auto"
67086
67086
  }
67087
- ) }),
67088
- /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-start gap-2", children: [
67087
+ ) }) : null,
67088
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-start gap-1", children: [
67089
67089
  link.label && /* @__PURE__ */ jsx("div", { className: "text-sm leading-normal", children: link.label }),
67090
- /* @__PURE__ */ jsx("div", { className: "text-xs leading-normal text-muted-foreground", children: link.description })
67090
+ /* @__PURE__ */ jsx("div", { className: "text-xs leading-normal opacity-70", children: link.description })
67091
67091
  ] })
67092
67092
  ]
67093
67093
  }
@@ -67183,7 +67183,7 @@ var NavbarMultiColumnGroups = ({
67183
67183
  navigationMenuClassName,
67184
67184
  actionsClassName,
67185
67185
  logo,
67186
- logoSlot,
67186
+ logoSlot: logoSlot2,
67187
67187
  logoClassName,
67188
67188
  navigation,
67189
67189
  navigationSlot,
@@ -67294,7 +67294,7 @@ var NavbarMultiColumnGroups = ({
67294
67294
  NavbarLogo,
67295
67295
  {
67296
67296
  logo,
67297
- logoSlot,
67297
+ logoSlot: logoSlot2,
67298
67298
  logoClassName,
67299
67299
  optixFlowConfig
67300
67300
  }
@@ -67498,7 +67498,7 @@ var MobileNavigationMenu5 = ({
67498
67498
  };
67499
67499
  var NavbarSidebarMobile = ({
67500
67500
  logo,
67501
- logoSlot,
67501
+ logoSlot: logoSlot2,
67502
67502
  logoClassName,
67503
67503
  menu,
67504
67504
  menuSlot,
@@ -67608,7 +67608,7 @@ var NavbarSidebarMobile = ({
67608
67608
  NavbarLogo,
67609
67609
  {
67610
67610
  logo,
67611
- logoSlot,
67611
+ logoSlot: logoSlot2,
67612
67612
  logoClassName,
67613
67613
  optixFlowConfig
67614
67614
  }
@@ -67814,7 +67814,7 @@ var NavbarTransparentOverlay = ({
67814
67814
  mobileMenuClassName,
67815
67815
  socialLinksClassName,
67816
67816
  logo,
67817
- logoSlot,
67817
+ logoSlot: logoSlot2,
67818
67818
  logoClassName,
67819
67819
  navItems,
67820
67820
  navigationSlot,
@@ -67932,7 +67932,7 @@ var NavbarTransparentOverlay = ({
67932
67932
  NavbarLogo,
67933
67933
  {
67934
67934
  logo,
67935
- logoSlot,
67935
+ logoSlot: logoSlot2,
67936
67936
  logoClassName: cn(
67937
67937
  "z-50",
67938
67938
  !isScrolled && !isOpen && "[&_img]:brightness-0 [&_img]:invert [&_span]:text-background",
@@ -68099,7 +68099,7 @@ var NavbarEducationPlatform = ({
68099
68099
  logoClassName,
68100
68100
  mobileMenuClassName,
68101
68101
  logo,
68102
- logoSlot,
68102
+ logoSlot: logoSlot2,
68103
68103
  menu,
68104
68104
  menuSlot,
68105
68105
  authActions,
@@ -68194,7 +68194,7 @@ var NavbarEducationPlatform = ({
68194
68194
  NavbarLogo,
68195
68195
  {
68196
68196
  logo,
68197
- logoSlot,
68197
+ logoSlot: logoSlot2,
68198
68198
  logoClassName,
68199
68199
  optixFlowConfig
68200
68200
  }
@@ -68428,7 +68428,7 @@ var MobileNavigationMenu8 = ({
68428
68428
  };
68429
68429
  var NavbarStickyCompact = ({
68430
68430
  logo,
68431
- logoSlot,
68431
+ logoSlot: logoSlot2,
68432
68432
  logoClassName,
68433
68433
  menu,
68434
68434
  menuSlot,
@@ -68563,7 +68563,7 @@ var NavbarStickyCompact = ({
68563
68563
  NavbarLogo,
68564
68564
  {
68565
68565
  logo,
68566
- logoSlot,
68566
+ logoSlot: logoSlot2,
68567
68567
  logoClassName,
68568
68568
  optixFlowConfig
68569
68569
  }
@@ -68708,7 +68708,7 @@ var NavbarSearchFocused = ({
68708
68708
  navigationMenuClassName,
68709
68709
  actionsClassName,
68710
68710
  logo,
68711
- logoSlot,
68711
+ logoSlot: logoSlot2,
68712
68712
  logoClassName,
68713
68713
  navItems,
68714
68714
  navigationSlot,
@@ -68830,7 +68830,7 @@ var NavbarSearchFocused = ({
68830
68830
  NavbarLogo,
68831
68831
  {
68832
68832
  logo,
68833
- logoSlot,
68833
+ logoSlot: logoSlot2,
68834
68834
  logoClassName,
68835
68835
  optixFlowConfig
68836
68836
  }
@@ -68969,7 +68969,7 @@ var NavbarSimpleLinks = ({
68969
68969
  actionsClassName,
68970
68970
  mobileMenuClassName,
68971
68971
  logo,
68972
- logoSlot,
68972
+ logoSlot: logoSlot2,
68973
68973
  logoClassName,
68974
68974
  navItems,
68975
68975
  navItemsSlot,
@@ -69095,7 +69095,7 @@ var NavbarSimpleLinks = ({
69095
69095
  NavbarLogo,
69096
69096
  {
69097
69097
  logo,
69098
- logoSlot,
69098
+ logoSlot: logoSlot2,
69099
69099
  logoClassName,
69100
69100
  optixFlowConfig
69101
69101
  }
@@ -69236,7 +69236,7 @@ var MobileNavigationMenu11 = ({
69236
69236
  var NavbarSplitCta = ({
69237
69237
  sectionId = "navbar-split-cta",
69238
69238
  logo,
69239
- logoSlot,
69239
+ logoSlot: logoSlot2,
69240
69240
  logoClassName,
69241
69241
  menu,
69242
69242
  menuSlot,
@@ -69321,7 +69321,7 @@ var NavbarSplitCta = ({
69321
69321
  NavbarLogo,
69322
69322
  {
69323
69323
  logo,
69324
- logoSlot,
69324
+ logoSlot: logoSlot2,
69325
69325
  logoClassName,
69326
69326
  optixFlowConfig
69327
69327
  }
@@ -69441,7 +69441,7 @@ var NavbarSplitCta = ({
69441
69441
  var NavbarIconLinks = ({
69442
69442
  sectionId = "navbar-icon-links",
69443
69443
  logo,
69444
- logoSlot,
69444
+ logoSlot: logoSlot2,
69445
69445
  logoClassName,
69446
69446
  navItems,
69447
69447
  navItemsSlot,
@@ -69541,7 +69541,7 @@ var NavbarIconLinks = ({
69541
69541
  NavbarLogo,
69542
69542
  {
69543
69543
  logo,
69544
- logoSlot,
69544
+ logoSlot: logoSlot2,
69545
69545
  logoClassName,
69546
69546
  optixFlowConfig
69547
69547
  }
@@ -69580,7 +69580,7 @@ var NavbarIconLinks = ({
69580
69580
  NavbarLogo,
69581
69581
  {
69582
69582
  logo,
69583
- logoSlot,
69583
+ logoSlot: logoSlot2,
69584
69584
  logoClassName,
69585
69585
  optixFlowConfig
69586
69586
  }
@@ -69652,7 +69652,7 @@ var NavbarIconLinks = ({
69652
69652
  var NavbarTabbedSections = ({
69653
69653
  sectionId = "navbar-tabbed-sections",
69654
69654
  logo,
69655
- logoSlot,
69655
+ logoSlot: logoSlot2,
69656
69656
  logoClassName,
69657
69657
  menu,
69658
69658
  menuSlot,
@@ -69863,7 +69863,7 @@ var NavbarTabbedSections = ({
69863
69863
  NavbarLogo,
69864
69864
  {
69865
69865
  logo,
69866
- logoSlot,
69866
+ logoSlot: logoSlot2,
69867
69867
  logoClassName,
69868
69868
  optixFlowConfig
69869
69869
  }
@@ -69922,7 +69922,7 @@ var NavbarTabbedSections = ({
69922
69922
  };
69923
69923
  var NavbarFullscreenMenu = ({
69924
69924
  logo,
69925
- logoSlot,
69925
+ logoSlot: logoSlot2,
69926
69926
  logoClassName,
69927
69927
  menuItems,
69928
69928
  menuSlot,
@@ -70010,7 +70010,7 @@ var NavbarFullscreenMenu = ({
70010
70010
  NavbarLogo,
70011
70011
  {
70012
70012
  logo,
70013
- logoSlot,
70013
+ logoSlot: logoSlot2,
70014
70014
  logoClassName,
70015
70015
  optixFlowConfig
70016
70016
  }
@@ -70042,7 +70042,7 @@ var NavbarFullscreenMenu = ({
70042
70042
  NavbarLogo,
70043
70043
  {
70044
70044
  logo,
70045
- logoSlot,
70045
+ logoSlot: logoSlot2,
70046
70046
  logoClassName,
70047
70047
  optixFlowConfig
70048
70048
  }
@@ -85272,7 +85272,7 @@ function OfferModalMembershipImage({
85272
85272
  title,
85273
85273
  description,
85274
85274
  image,
85275
- imageSlot,
85275
+ imageSlot: imageSlot2,
85276
85276
  closeButtonSlot,
85277
85277
  formSlot,
85278
85278
  footerSlot,
@@ -85296,7 +85296,7 @@ function OfferModalMembershipImage({
85296
85296
  }) {
85297
85297
  const dialogProps = open !== void 0 ? { open, onOpenChange } : { defaultOpen };
85298
85298
  const renderImage = React30.useMemo(() => {
85299
- if (imageSlot) return imageSlot;
85299
+ if (imageSlot2) return imageSlot2;
85300
85300
  if (!image) return null;
85301
85301
  return /* @__PURE__ */ jsx(
85302
85302
  "div",
@@ -85320,7 +85320,7 @@ function OfferModalMembershipImage({
85320
85320
  }
85321
85321
  );
85322
85322
  }, [
85323
- imageSlot,
85323
+ imageSlot2,
85324
85324
  image,
85325
85325
  imageWrapperClassName,
85326
85326
  imageClassName,
@@ -85549,11 +85549,11 @@ var DEFAULT_FORM_FIELDS55 = [
85549
85549
  ];
85550
85550
  function OfferModalSheetNewsletter({
85551
85551
  logo,
85552
- logoSlot,
85552
+ logoSlot: logoSlot2,
85553
85553
  title,
85554
85554
  description,
85555
85555
  image,
85556
- imageSlot,
85556
+ imageSlot: imageSlot2,
85557
85557
  termsUrl,
85558
85558
  termsText,
85559
85559
  privacyUrl,
@@ -85582,7 +85582,7 @@ function OfferModalSheetNewsletter({
85582
85582
  }) {
85583
85583
  const sheetProps = open !== void 0 ? { open, onOpenChange } : { defaultOpen };
85584
85584
  const renderLogo = React30.useMemo(() => {
85585
- if (logoSlot) return logoSlot;
85585
+ if (logoSlot2) return logoSlot2;
85586
85586
  if (!logo) return null;
85587
85587
  const logoSrc = typeof logo.src === "string" ? logo.src : logo.src.light;
85588
85588
  return /* @__PURE__ */ jsx(
@@ -85594,7 +85594,7 @@ function OfferModalSheetNewsletter({
85594
85594
  optixFlowConfig
85595
85595
  }
85596
85596
  );
85597
- }, [logoSlot, logo, logoClassName, optixFlowConfig]);
85597
+ }, [logoSlot2, logo, logoClassName, optixFlowConfig]);
85598
85598
  const renderHeader = React30.useMemo(() => {
85599
85599
  if (headerSlot) return headerSlot;
85600
85600
  return /* @__PURE__ */ jsxs(SheetHeader, { className: cn("gap-8 p-0", headerClassName), children: [
@@ -85676,7 +85676,7 @@ function OfferModalSheetNewsletter({
85676
85676
  ] });
85677
85677
  }, [legalSlot, termsUrl, termsText, privacyUrl, privacyText, legalClassName]);
85678
85678
  const renderImage = React30.useMemo(() => {
85679
- if (imageSlot) return imageSlot;
85679
+ if (imageSlot2) return imageSlot2;
85680
85680
  if (!image) return null;
85681
85681
  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(
85682
85682
  Img,
@@ -85691,7 +85691,7 @@ function OfferModalSheetNewsletter({
85691
85691
  }
85692
85692
  ) }) });
85693
85693
  }, [
85694
- imageSlot,
85694
+ imageSlot2,
85695
85695
  image,
85696
85696
  imageWrapperClassName,
85697
85697
  imageClassName,
@@ -103460,6 +103460,1586 @@ function LinkPageBentoLayout({
103460
103460
  }
103461
103461
 
103462
103462
  // src/registry/blocks.ts
103463
+ var ABOUT_EXAMPLE_IMAGE_URL = "https://cdn.ing/assets/i/r/308196/g6bbn73f7gxal82uu49m9prfd0u8/workplace-in-cafe.webp";
103464
+ var ABOUT_MEDIA_NOTE = "All media src values must be absolute URLs to real assets; relative paths and placeholder media variables are not allowed.";
103465
+ var aboutImage = (alt) => ({
103466
+ src: ABOUT_EXAMPLE_IMAGE_URL,
103467
+ alt
103468
+ });
103469
+ var imageSlot = (path, note, roles = ["feature"], minPixelClass = "large", required = true, preferredAspect) => ({
103470
+ path,
103471
+ roles,
103472
+ disallowedRoles: ["logo", "favicon", "video-thumbnail"],
103473
+ minPixelClass,
103474
+ required,
103475
+ ...preferredAspect ? { preferredAspect } : {},
103476
+ note: `${note} IMAGE MEDIA ONLY. Do not use logos, favicons, or video assets.`
103477
+ });
103478
+ var logoSlot = (path, note, required = false) => ({
103479
+ path,
103480
+ roles: ["logo"],
103481
+ disallowedRoles: ["favicon", "video-thumbnail"],
103482
+ minPixelClass: "small",
103483
+ required,
103484
+ note: `${note} LOGO IMAGE ONLY. Do not use photos, favicons, or video assets.`
103485
+ });
103486
+ var aboutCapabilities = (...capabilities) => capabilities;
103487
+ var ABOUT_BLOCK_CONTRACTS = {
103488
+ "alternating-blocks": {
103489
+ exampleUsage: `
103490
+ <AlternatingBlocks
103491
+ title="How We Got Here"
103492
+ subtitle="A practical timeline of the decisions that shaped our company."
103493
+ sections={[
103494
+ {
103495
+ content: "We started by replacing disconnected tools with one focused workflow.",
103496
+ media: <img src="${ABOUT_EXAMPLE_IMAGE_URL}" alt="Team planning in a cafe workspace" />,
103497
+ mediaLeft: false,
103498
+ },
103499
+ {
103500
+ content: "Today our team helps operators launch better customer experiences faster.",
103501
+ media: <img src="${ABOUT_EXAMPLE_IMAGE_URL}" alt="Collaborative team workspace" />,
103502
+ mediaLeft: true,
103503
+ },
103504
+ ]}
103505
+ />
103506
+ `.trim(),
103507
+ importantUsageNotes: "Use for two or more narrative sections with alternating visual rhythm. The sections[].content and sections[].media props are ReactNode slots; authoring tools should render concrete text and image elements, not placeholder fragments. Keep each section focused on one milestone, value, or proof point.",
103508
+ usageRequirements: {
103509
+ requiredProps: ["sections"],
103510
+ propConstraints: {
103511
+ sections: { required: true, minItems: 2, maxItems: 5 },
103512
+ "sections[].content": {
103513
+ required: true,
103514
+ note: "ReactNode content slot. Use concise, source-backed story copy."
103515
+ },
103516
+ "sections[].media": {
103517
+ required: true,
103518
+ note: "ReactNode media slot. Provide an image element with an absolute src."
103519
+ }
103520
+ },
103521
+ mediaSlots: {
103522
+ "sections[].media": imageSlot(
103523
+ "sections[].media",
103524
+ "Alternating section visual.",
103525
+ ["feature", "hero"]
103526
+ )
103527
+ },
103528
+ requiresSiteCapabilities: aboutCapabilities("media_library"),
103529
+ notes: [ABOUT_MEDIA_NOTE]
103530
+ },
103531
+ exampleProps: {
103532
+ title: "How We Got Here",
103533
+ subtitle: "A practical timeline of the decisions that shaped our company.",
103534
+ sections: [
103535
+ {
103536
+ content: "We started by replacing disconnected tools with one focused workflow.",
103537
+ media: ABOUT_EXAMPLE_IMAGE_URL,
103538
+ mediaLeft: false
103539
+ },
103540
+ {
103541
+ content: "Today our team helps operators launch better customer experiences faster.",
103542
+ media: ABOUT_EXAMPLE_IMAGE_URL,
103543
+ mediaLeft: true
103544
+ }
103545
+ ]
103546
+ }
103547
+ },
103548
+ "about-mission-features": {
103549
+ exampleUsage: `
103550
+ <AboutMissionFeatures
103551
+ title="About OpenSite"
103552
+ description="We help service teams turn daily operations into polished digital experiences."
103553
+ missionLabel="Our Mission"
103554
+ missionText="Make professional site building faster, clearer, and easier to maintain."
103555
+ mainImage={{ src: "${ABOUT_EXAMPLE_IMAGE_URL}", alt: "Team working together in a cafe" }}
103556
+ missionBackgroundImage={{ src: "${ABOUT_EXAMPLE_IMAGE_URL}", alt: "Workspace background for mission statement" }}
103557
+ features={[
103558
+ { icon: "lucide/files", title: "Reusable systems", description: "Blocks stay consistent across every page." },
103559
+ { icon: "lucide/settings", title: "Operational clarity", description: "Teams can update content without redesigning layouts." },
103560
+ { icon: "lucide/shield", title: "Reliable delivery", description: "Contracts protect AI-generated pages from unsafe content." },
103561
+ ]}
103562
+ />
103563
+ `.trim(),
103564
+ importantUsageNotes: "Use when a page needs a mission statement plus feature proof points. Supply both image objects when visual impact matters, and keep feature cards limited to short, concrete benefits. Do not use logos, favicons, or video URLs in image props.",
103565
+ usageRequirements: {
103566
+ requiredProps: ["title", "missionText", "features"],
103567
+ propConstraints: {
103568
+ title: { required: true, maxLength: 70 },
103569
+ description: { maxLength: 180 },
103570
+ missionLabel: { maxLength: 35 },
103571
+ missionText: { required: true, maxLength: 180 },
103572
+ features: { required: true, minItems: 3, maxItems: 3 },
103573
+ mainImage: { required: true },
103574
+ missionBackgroundImage: { required: true }
103575
+ },
103576
+ mediaSlots: {
103577
+ mainImage: imageSlot(
103578
+ "mainImage",
103579
+ "Primary about image beside the mission card.",
103580
+ ["feature", "hero"]
103581
+ ),
103582
+ missionBackgroundImage: imageSlot(
103583
+ "missionBackgroundImage",
103584
+ "Background photo behind the mission statement.",
103585
+ ["background", "feature"]
103586
+ )
103587
+ },
103588
+ requiresSiteCapabilities: aboutCapabilities("media_library"),
103589
+ notes: [ABOUT_MEDIA_NOTE]
103590
+ },
103591
+ exampleProps: {
103592
+ title: "About OpenSite",
103593
+ description: "We help service teams turn daily operations into polished digital experiences.",
103594
+ missionLabel: "Our Mission",
103595
+ missionText: "Make professional site building faster, clearer, and easier to maintain.",
103596
+ mainImage: aboutImage("Team working together in a cafe"),
103597
+ missionBackgroundImage: aboutImage(
103598
+ "Workspace background for mission statement"
103599
+ ),
103600
+ features: [
103601
+ {
103602
+ icon: "lucide/files",
103603
+ title: "Reusable systems",
103604
+ description: "Blocks stay consistent across every page."
103605
+ },
103606
+ {
103607
+ icon: "lucide/settings",
103608
+ title: "Operational clarity",
103609
+ description: "Teams can update content without redesigning layouts."
103610
+ },
103611
+ {
103612
+ icon: "lucide/shield",
103613
+ title: "Reliable delivery",
103614
+ description: "Contracts protect AI-generated pages from unsafe content."
103615
+ }
103616
+ ]
103617
+ }
103618
+ },
103619
+ "about-stats-showcase": {
103620
+ exampleUsage: `
103621
+ <AboutStatsShowcase
103622
+ title="Our Background"
103623
+ description="We help teams launch reliable digital experiences at scale."
103624
+ images={[
103625
+ { src: "${ABOUT_EXAMPLE_IMAGE_URL}", alt: "Team workspace" },
103626
+ { src: "${ABOUT_EXAMPLE_IMAGE_URL}", alt: "Planning session" },
103627
+ ]}
103628
+ stats={[
103629
+ { value: "21M", label: "Audience reach" },
103630
+ { value: "12+", label: "Years of expertise" },
103631
+ ]}
103632
+ benefits={[
103633
+ {
103634
+ image: { src: "${ABOUT_EXAMPLE_IMAGE_URL}", alt: "Customer operations team" },
103635
+ stat: { value: "98%", label: "Retention", description: "Measured across supported accounts" },
103636
+ },
103637
+ ]}
103638
+ />
103639
+ `.trim(),
103640
+ importantUsageNotes: "Only use when metrics, social proof, and any testimonial-style content are sourced. Do not fabricate stats, company logos, testimonial quotes, authors, or roles. Image props must use absolute image URLs and must not receive video assets.",
103641
+ usageRequirements: {
103642
+ requiredProps: ["title", "stats"],
103643
+ propConstraints: {
103644
+ title: { required: true, maxLength: 70 },
103645
+ description: { maxLength: 180 },
103646
+ images: { minItems: 2, maxItems: 4 },
103647
+ stats: {
103648
+ required: true,
103649
+ minItems: 2,
103650
+ maxItems: 4,
103651
+ note: "Metrics must be sourced from the site or client data."
103652
+ },
103653
+ logos: {
103654
+ maxItems: 8,
103655
+ note: "Only include real customer or partner logos."
103656
+ },
103657
+ benefits: { maxItems: 3 },
103658
+ "benefits[].testimonial": {
103659
+ note: "Must be a real testimonial. Do not fabricate."
103660
+ }
103661
+ },
103662
+ mediaSlots: {
103663
+ "images[]": imageSlot(
103664
+ "images[]",
103665
+ "Hero showcase images.",
103666
+ ["feature", "gallery"]
103667
+ ),
103668
+ "logos[]": logoSlot("logos[]", "Trusted company logo."),
103669
+ "benefits[].image": imageSlot(
103670
+ "benefits[].image",
103671
+ "Benefit card image.",
103672
+ ["feature", "thumbnail"],
103673
+ "medium",
103674
+ false
103675
+ ),
103676
+ "benefits[].testimonial.logo": logoSlot(
103677
+ "benefits[].testimonial.logo",
103678
+ "Logo shown inside testimonial card."
103679
+ )
103680
+ },
103681
+ requiresSiteCapabilities: aboutCapabilities(
103682
+ "metrics_or_stats",
103683
+ "reviews_or_testimonials",
103684
+ "media_library"
103685
+ ),
103686
+ notes: [ABOUT_MEDIA_NOTE]
103687
+ },
103688
+ exampleProps: {
103689
+ title: "Our Background",
103690
+ description: "We help teams launch reliable digital experiences at scale.",
103691
+ images: [
103692
+ aboutImage("Team workspace"),
103693
+ aboutImage("Planning session")
103694
+ ],
103695
+ stats: [
103696
+ { value: "21M", label: "Audience reach" },
103697
+ { value: "12+", label: "Years of expertise" }
103698
+ ],
103699
+ benefits: [
103700
+ {
103701
+ image: aboutImage("Customer operations team"),
103702
+ stat: {
103703
+ value: "98%",
103704
+ label: "Retention",
103705
+ description: "Measured across supported accounts"
103706
+ }
103707
+ }
103708
+ ]
103709
+ }
103710
+ },
103711
+ "about-company-profile": {
103712
+ exampleUsage: `
103713
+ <AboutCompanyProfile
103714
+ title="A Team Built for Operational Clarity"
103715
+ description="We combine product craft and service operations experience to help brands move faster."
103716
+ mainImage={{ src: "${ABOUT_EXAMPLE_IMAGE_URL}", alt: "Team strategy session" }}
103717
+ secondaryImage={{ src: "${ABOUT_EXAMPLE_IMAGE_URL}", alt: "Workspace detail" }}
103718
+ breakout={{
103719
+ title: "Built for growing operators",
103720
+ description: "Reusable systems keep every location and campaign aligned.",
103721
+ action: { label: "Discover more", href: "/about", variant: "default" },
103722
+ }}
103723
+ achievements={[
103724
+ { label: "Customer sites launched", value: "300+" },
103725
+ { label: "Average satisfaction", value: "99%" },
103726
+ ]}
103727
+ />
103728
+ `.trim(),
103729
+ importantUsageNotes: "Use for credibility-oriented company profiles with sourced metrics and optional brand logos. Breakout actions must use the ActionConfig shape with label and href, not buttonText or buttonUrl. Image props must be image assets only.",
103730
+ usageRequirements: {
103731
+ requiredProps: ["title", "description", "mainImage"],
103732
+ propConstraints: {
103733
+ title: { required: true, maxLength: 80 },
103734
+ description: { required: true, maxLength: 220 },
103735
+ mainImage: { required: true },
103736
+ achievements: {
103737
+ minItems: 2,
103738
+ maxItems: 4,
103739
+ note: "Achievement metrics must be sourced."
103740
+ },
103741
+ companies: {
103742
+ maxItems: 8,
103743
+ note: "Only include real customer or partner logos."
103744
+ }
103745
+ },
103746
+ mediaSlots: {
103747
+ mainImage: imageSlot(
103748
+ "mainImage",
103749
+ "Primary company profile image.",
103750
+ ["feature", "hero"]
103751
+ ),
103752
+ secondaryImage: imageSlot(
103753
+ "secondaryImage",
103754
+ "Secondary supporting image.",
103755
+ ["feature", "thumbnail"],
103756
+ "medium",
103757
+ false
103758
+ ),
103759
+ "breakout.logo": logoSlot("breakout.logo", "Breakout card logo."),
103760
+ "companies[]": logoSlot("companies[]", "Customer or partner logo.")
103761
+ },
103762
+ requiresSiteCapabilities: aboutCapabilities(
103763
+ "metrics_or_stats",
103764
+ "media_library"
103765
+ ),
103766
+ notes: [ABOUT_MEDIA_NOTE]
103767
+ },
103768
+ exampleProps: {
103769
+ title: "A Team Built for Operational Clarity",
103770
+ description: "We combine product craft and service operations experience to help brands move faster.",
103771
+ mainImage: aboutImage("Team strategy session"),
103772
+ secondaryImage: aboutImage("Workspace detail"),
103773
+ breakout: {
103774
+ title: "Built for growing operators",
103775
+ description: "Reusable systems keep every location and campaign aligned.",
103776
+ action: { label: "Discover more", href: "/about", variant: "default" }
103777
+ },
103778
+ achievements: [
103779
+ { label: "Customer sites launched", value: "300+" },
103780
+ { label: "Average satisfaction", value: "99%" }
103781
+ ]
103782
+ }
103783
+ },
103784
+ "about-vision-gallery": {
103785
+ exampleUsage: `
103786
+ <AboutVisionGallery
103787
+ title="The Vision Behind Our Work"
103788
+ subtitle="We believe great digital systems should feel simple to run."
103789
+ images={[
103790
+ { src: "${ABOUT_EXAMPLE_IMAGE_URL}", alt: "Collaborative product session" },
103791
+ { src: "${ABOUT_EXAMPLE_IMAGE_URL}", alt: "Team reviewing site designs" },
103792
+ { src: "${ABOUT_EXAMPLE_IMAGE_URL}", alt: "Customer experience planning" },
103793
+ ]}
103794
+ primarySectionTitle="Our Vision"
103795
+ primarySectionContent="Give every operator the ability to publish excellent customer experiences without technical bottlenecks."
103796
+ secondarySectionTitle="How We Build"
103797
+ secondarySectionContent="We turn reusable components, semantic contracts, and real content into maintainable sites."
103798
+ ctaTitle="Part of Our Global Team"
103799
+ ctaAction={{ label: "Get to know the team", href: "/team", variant: "default" }}
103800
+ />
103801
+ `.trim(),
103802
+ importantUsageNotes: "Use when a brand has a clear vision story and enough supporting imagery for a gallery. Keep gallery images cohesive and source-backed. Do not use logo, favicon, or video assets in the gallery image props.",
103803
+ usageRequirements: {
103804
+ requiredProps: ["title", "images"],
103805
+ propConstraints: {
103806
+ title: { required: true, maxLength: 80 },
103807
+ subtitle: { maxLength: 160 },
103808
+ images: { required: true, minItems: 3, maxItems: 5 },
103809
+ primarySectionContent: { maxLength: 260 },
103810
+ secondarySectionContent: { maxLength: 260 }
103811
+ },
103812
+ mediaSlots: {
103813
+ "images[]": imageSlot(
103814
+ "images[]",
103815
+ "Vision gallery image.",
103816
+ ["gallery", "feature"]
103817
+ )
103818
+ },
103819
+ requiresSiteCapabilities: aboutCapabilities("media_library"),
103820
+ notes: [ABOUT_MEDIA_NOTE]
103821
+ },
103822
+ exampleProps: {
103823
+ title: "The Vision Behind Our Work",
103824
+ subtitle: "We believe great digital systems should feel simple to run.",
103825
+ images: [
103826
+ aboutImage("Collaborative product session"),
103827
+ aboutImage("Team reviewing site designs"),
103828
+ aboutImage("Customer experience planning")
103829
+ ],
103830
+ primarySectionTitle: "Our Vision",
103831
+ primarySectionContent: "Give every operator the ability to publish excellent customer experiences without technical bottlenecks.",
103832
+ secondarySectionTitle: "How We Build",
103833
+ secondarySectionContent: "We turn reusable components, semantic contracts, and real content into maintainable sites.",
103834
+ ctaTitle: "Part of Our Global Team",
103835
+ ctaAction: {
103836
+ label: "Get to know the team",
103837
+ href: "/team",
103838
+ variant: "default"
103839
+ }
103840
+ }
103841
+ },
103842
+ "about-developer-story": {
103843
+ exampleUsage: `
103844
+ <AboutDeveloperStory
103845
+ title="Developer-Focused Solutions for Modern Teams"
103846
+ description="We build tools that developers and operators can both trust."
103847
+ actions={[
103848
+ { label: "Get Started", href: "/contact", variant: "default" },
103849
+ { label: "View Docs", href: "/docs", variant: "outline" },
103850
+ ]}
103851
+ stats={[
103852
+ { value: "200+", label: "Projects completed" },
103853
+ { value: "50+", label: "Integrated workflows" },
103854
+ ]}
103855
+ storyTitle="Built from the work itself"
103856
+ storyContent="Our platform grew from years of solving the same operational problems for real teams."
103857
+ storyImage={{ src: "${ABOUT_EXAMPLE_IMAGE_URL}", alt: "Developer workspace" }}
103858
+ />
103859
+ `.trim(),
103860
+ importantUsageNotes: "Use for technical about pages with real metrics and a credible product story. Actions must use ActionConfig objects. Any stats or logos must come from sourced site data, and storyImage must be an image asset only.",
103861
+ usageRequirements: {
103862
+ requiredProps: ["title", "description", "storyImage"],
103863
+ propConstraints: {
103864
+ title: { required: true, maxLength: 80 },
103865
+ description: { required: true, maxLength: 190 },
103866
+ actions: { maxItems: 2 },
103867
+ stats: {
103868
+ minItems: 2,
103869
+ maxItems: 4,
103870
+ note: "Stats must be sourced."
103871
+ },
103872
+ logos: {
103873
+ maxItems: 8,
103874
+ note: "Only include real customer or partner logos."
103875
+ },
103876
+ storyImage: { required: true }
103877
+ },
103878
+ mediaSlots: {
103879
+ storyImage: imageSlot(
103880
+ "storyImage",
103881
+ "Story section image.",
103882
+ ["feature", "hero"]
103883
+ ),
103884
+ "logos[]": logoSlot("logos[]", "Customer or partner logo.")
103885
+ },
103886
+ requiresSiteCapabilities: aboutCapabilities(
103887
+ "metrics_or_stats",
103888
+ "media_library"
103889
+ ),
103890
+ notes: [ABOUT_MEDIA_NOTE]
103891
+ },
103892
+ exampleProps: {
103893
+ title: "Developer-Focused Solutions for Modern Teams",
103894
+ description: "We build tools that developers and operators can both trust.",
103895
+ actions: [
103896
+ { label: "Get Started", href: "/contact", variant: "default" },
103897
+ { label: "View Docs", href: "/docs", variant: "outline" }
103898
+ ],
103899
+ stats: [
103900
+ { value: "200+", label: "Projects completed" },
103901
+ { value: "50+", label: "Integrated workflows" }
103902
+ ],
103903
+ storyTitle: "Built from the work itself",
103904
+ storyContent: "Our platform grew from years of solving the same operational problems for real teams.",
103905
+ storyImage: aboutImage("Developer workspace")
103906
+ }
103907
+ },
103908
+ "about-story-gallery": {
103909
+ exampleUsage: `
103910
+ <AboutStoryGallery
103911
+ title="Our Story"
103912
+ description="We started with a simple idea: make high-quality site operations easier for every team."
103913
+ images={[
103914
+ { src: "${ABOUT_EXAMPLE_IMAGE_URL}", alt: "Early team workspace" },
103915
+ { src: "${ABOUT_EXAMPLE_IMAGE_URL}", alt: "Team collaborating on product direction" },
103916
+ { src: "${ABOUT_EXAMPLE_IMAGE_URL}", alt: "Operations planning board" },
103917
+ ]}
103918
+ />
103919
+ `.trim(),
103920
+ importantUsageNotes: "Use for concise origin stories with a small image gallery. Provide real, relevant gallery images with descriptive alt text. Do not use logos, favicons, or video URLs in images[].",
103921
+ usageRequirements: {
103922
+ requiredProps: ["title", "description", "images"],
103923
+ propConstraints: {
103924
+ title: { required: true, maxLength: 70 },
103925
+ description: { required: true, maxLength: 220 },
103926
+ images: { required: true, minItems: 3, maxItems: 5 }
103927
+ },
103928
+ mediaSlots: {
103929
+ "images[]": imageSlot(
103930
+ "images[]",
103931
+ "Story gallery image.",
103932
+ ["gallery", "feature"]
103933
+ )
103934
+ },
103935
+ requiresSiteCapabilities: aboutCapabilities("media_library"),
103936
+ notes: [ABOUT_MEDIA_NOTE]
103937
+ },
103938
+ exampleProps: {
103939
+ title: "Our Story",
103940
+ description: "We started with a simple idea: make high-quality site operations easier for every team.",
103941
+ images: [
103942
+ aboutImage("Early team workspace"),
103943
+ aboutImage("Team collaborating on product direction"),
103944
+ aboutImage("Operations planning board")
103945
+ ]
103946
+ }
103947
+ },
103948
+ "about-streamline-team": {
103949
+ exampleUsage: `
103950
+ <AboutStreamlineTeam
103951
+ title="Streamline Your Workflow"
103952
+ description="Our platform helps teams work smarter without losing creative control."
103953
+ primaryImage={{ src: "${ABOUT_EXAMPLE_IMAGE_URL}", alt: "Team workflow planning" }}
103954
+ secondaryImage={{ src: "${ABOUT_EXAMPLE_IMAGE_URL}", alt: "Detailed product planning session" }}
103955
+ teamTitle="Join the team building simpler operations"
103956
+ teamDescription="We look for pragmatic builders who care about durable systems."
103957
+ actions={[{ label: "View Open Roles", href: "/careers", variant: "default" }]}
103958
+ features={[
103959
+ { icon: "lucide/zap", title: "Faster launches", description: "Ship polished pages in less time." },
103960
+ { icon: "lucide/shield", title: "Reliable systems", description: "Keep content aligned as sites grow." },
103961
+ ]}
103962
+ />
103963
+ `.trim(),
103964
+ importantUsageNotes: "Use for workflow-focused about or recruiting sections with two supporting images and a concise team CTA. The team CTA should not imply open roles unless the site has that content. Image props must be image assets only.",
103965
+ usageRequirements: {
103966
+ requiredProps: ["title", "description", "primaryImage"],
103967
+ propConstraints: {
103968
+ title: { required: true, maxLength: 70 },
103969
+ description: { required: true, maxLength: 180 },
103970
+ primaryImage: { required: true },
103971
+ features: { minItems: 2, maxItems: 4 },
103972
+ actions: { maxItems: 2 }
103973
+ },
103974
+ mediaSlots: {
103975
+ primaryImage: imageSlot(
103976
+ "primaryImage",
103977
+ "Primary overlapping team/workflow image.",
103978
+ ["feature", "hero"]
103979
+ ),
103980
+ secondaryImage: imageSlot(
103981
+ "secondaryImage",
103982
+ "Secondary overlapping team/workflow image.",
103983
+ ["feature", "thumbnail"],
103984
+ "medium",
103985
+ false
103986
+ )
103987
+ },
103988
+ requiresSiteCapabilities: aboutCapabilities("media_library"),
103989
+ notes: [ABOUT_MEDIA_NOTE]
103990
+ },
103991
+ exampleProps: {
103992
+ title: "Streamline Your Workflow",
103993
+ description: "Our platform helps teams work smarter without losing creative control.",
103994
+ primaryImage: aboutImage("Team workflow planning"),
103995
+ secondaryImage: aboutImage("Detailed product planning session"),
103996
+ teamTitle: "Join the team building simpler operations",
103997
+ teamDescription: "We look for pragmatic builders who care about durable systems.",
103998
+ actions: [
103999
+ { label: "View Open Roles", href: "/careers", variant: "default" }
104000
+ ],
104001
+ features: [
104002
+ {
104003
+ icon: "lucide/zap",
104004
+ title: "Faster launches",
104005
+ description: "Ship polished pages in less time."
104006
+ },
104007
+ {
104008
+ icon: "lucide/shield",
104009
+ title: "Reliable systems",
104010
+ description: "Keep content aligned as sites grow."
104011
+ }
104012
+ ]
104013
+ }
104014
+ },
104015
+ "about-developer-profile": {
104016
+ exampleUsage: `
104017
+ <AboutDeveloperProfile
104018
+ name="Alex Johnson"
104019
+ role="Full-Stack Developer"
104020
+ bio="Alex builds maintainable product systems for growing service teams."
104021
+ avatar={{ src: "${ABOUT_EXAMPLE_IMAGE_URL}", alt: "Alex Johnson profile portrait" }}
104022
+ skills={["React", "TypeScript", "Rails", "PostgreSQL"]}
104023
+ skillsTitle="Core Skills"
104024
+ socialLinks={[{ href: "https://github.com/opensite-ai", label: "GitHub" }]}
104025
+ actions={[{ label: "Contact Alex", href: "/contact", variant: "default" }]}
104026
+ />
104027
+ `.trim(),
104028
+ importantUsageNotes: "Use only when the site has a real person, founder, or team member profile. Do not invent a person's name, role, bio, skills, or social links. Avatar must be a profile image, not a logo, favicon, or video URL.",
104029
+ usageRequirements: {
104030
+ requiredProps: ["name", "role", "bio", "avatar"],
104031
+ propConstraints: {
104032
+ name: { required: true, maxLength: 60 },
104033
+ role: { required: true, maxLength: 80 },
104034
+ bio: { required: true, maxLength: 260 },
104035
+ avatar: { required: true },
104036
+ skills: { minItems: 3, maxItems: 8 },
104037
+ socialLinks: { maxItems: 4 },
104038
+ actions: { maxItems: 2 }
104039
+ },
104040
+ mediaSlots: {
104041
+ avatar: imageSlot(
104042
+ "avatar",
104043
+ "Profile portrait for the person.",
104044
+ ["profile", "avatar"],
104045
+ "medium",
104046
+ true,
104047
+ "1:1"
104048
+ )
104049
+ },
104050
+ requiresSiteCapabilities: aboutCapabilities("team_members", "media_library"),
104051
+ notes: [ABOUT_MEDIA_NOTE]
104052
+ },
104053
+ exampleProps: {
104054
+ name: "Alex Johnson",
104055
+ role: "Full-Stack Developer",
104056
+ bio: "Alex builds maintainable product systems for growing service teams.",
104057
+ avatar: aboutImage("Alex Johnson profile portrait"),
104058
+ skills: ["React", "TypeScript", "Rails", "PostgreSQL"],
104059
+ skillsTitle: "Core Skills",
104060
+ socialLinks: [
104061
+ { href: "https://github.com/opensite-ai", label: "GitHub" }
104062
+ ],
104063
+ actions: [
104064
+ { label: "Contact Alex", href: "/contact", variant: "default" }
104065
+ ]
104066
+ }
104067
+ },
104068
+ "about-startup-team": {
104069
+ exampleUsage: `
104070
+ <AboutStartupTeam
104071
+ title="Building the Future of Site Operations"
104072
+ description="We are a team of product builders, operators, and customer experience specialists."
104073
+ sidebarLinks={[
104074
+ { label: "Leadership", value: "leadership" },
104075
+ { label: "Product", value: "product" },
104076
+ ]}
104077
+ teamTitle="Meet the Team"
104078
+ teamMembers={[
104079
+ {
104080
+ name: "Sarah Chen",
104081
+ role: "CEO and Co-Founder",
104082
+ avatar: { src: "${ABOUT_EXAMPLE_IMAGE_URL}", alt: "Sarah Chen portrait" },
104083
+ tab: "leadership",
104084
+ },
104085
+ {
104086
+ name: "Marcus Johnson",
104087
+ role: "Product Lead",
104088
+ avatar: { src: "${ABOUT_EXAMPLE_IMAGE_URL}", alt: "Marcus Johnson portrait" },
104089
+ tab: "product",
104090
+ },
104091
+ ]}
104092
+ />
104093
+ `.trim(),
104094
+ importantUsageNotes: "Use only when real team member data is available. Do not fabricate names, roles, avatars, or social links. Sidebar link values must match teamMembers[].tab values. Avatars must be profile images only.",
104095
+ usageRequirements: {
104096
+ requiredProps: ["title", "teamMembers"],
104097
+ propConstraints: {
104098
+ title: { required: true, maxLength: 80 },
104099
+ description: { maxLength: 220 },
104100
+ sidebarLinks: { minItems: 1, maxItems: 6 },
104101
+ teamMembers: {
104102
+ required: true,
104103
+ minItems: 2,
104104
+ maxItems: 12,
104105
+ note: "Must come from real team member data."
104106
+ },
104107
+ "teamMembers[].tab": {
104108
+ note: "When present, must match a sidebarLinks[].value."
104109
+ }
104110
+ },
104111
+ mediaSlots: {
104112
+ "teamMembers[].avatar": imageSlot(
104113
+ "teamMembers[].avatar",
104114
+ "Team member portrait.",
104115
+ ["profile", "avatar"],
104116
+ "medium",
104117
+ true,
104118
+ "1:1"
104119
+ )
104120
+ },
104121
+ requiresSiteCapabilities: aboutCapabilities("team_members", "media_library"),
104122
+ notes: [ABOUT_MEDIA_NOTE]
104123
+ },
104124
+ exampleProps: {
104125
+ title: "Building the Future of Site Operations",
104126
+ description: "We are a team of product builders, operators, and customer experience specialists.",
104127
+ sidebarLinks: [
104128
+ { label: "Leadership", value: "leadership" },
104129
+ { label: "Product", value: "product" }
104130
+ ],
104131
+ teamTitle: "Meet the Team",
104132
+ teamMembers: [
104133
+ {
104134
+ name: "Sarah Chen",
104135
+ role: "CEO and Co-Founder",
104136
+ avatar: aboutImage("Sarah Chen portrait"),
104137
+ tab: "leadership"
104138
+ },
104139
+ {
104140
+ name: "Marcus Johnson",
104141
+ role: "Product Lead",
104142
+ avatar: aboutImage("Marcus Johnson portrait"),
104143
+ tab: "product"
104144
+ }
104145
+ ]
104146
+ }
104147
+ },
104148
+ "about-minimal-story": {
104149
+ exampleUsage: `
104150
+ <AboutMinimalStory
104151
+ title="Our Story"
104152
+ content="Every durable product starts with a clear operational problem and a team willing to solve it carefully."
104153
+ author={{
104154
+ name: "Jordan Mitchell",
104155
+ role: "Founder and CEO",
104156
+ avatar: { src: "${ABOUT_EXAMPLE_IMAGE_URL}", alt: "Jordan Mitchell portrait" },
104157
+ }}
104158
+ featuredImage={{ src: "${ABOUT_EXAMPLE_IMAGE_URL}", alt: "Founder working with the team" }}
104159
+ />
104160
+ `.trim(),
104161
+ importantUsageNotes: "Use for sourced founder, author, or origin stories. Do not invent author identity or biographical details. Author avatars and featured images must use absolute image URLs and must not be logos, favicons, or video assets.",
104162
+ usageRequirements: {
104163
+ requiredProps: ["title", "content", "author"],
104164
+ propConstraints: {
104165
+ title: { required: true, maxLength: 80 },
104166
+ content: { required: true, maxLength: 360 },
104167
+ author: {
104168
+ required: true,
104169
+ note: "Author identity must be source-backed."
104170
+ }
104171
+ },
104172
+ mediaSlots: {
104173
+ "author.avatar": imageSlot(
104174
+ "author.avatar",
104175
+ "Author or founder profile image.",
104176
+ ["profile", "avatar"],
104177
+ "small",
104178
+ false,
104179
+ "1:1"
104180
+ ),
104181
+ featuredImage: imageSlot(
104182
+ "featuredImage",
104183
+ "Optional featured story image.",
104184
+ ["feature", "hero"],
104185
+ "large",
104186
+ false
104187
+ )
104188
+ },
104189
+ requiresSiteCapabilities: aboutCapabilities("team_members", "media_library"),
104190
+ notes: [ABOUT_MEDIA_NOTE]
104191
+ },
104192
+ exampleProps: {
104193
+ title: "Our Story",
104194
+ content: "Every durable product starts with a clear operational problem and a team willing to solve it carefully.",
104195
+ author: {
104196
+ name: "Jordan Mitchell",
104197
+ role: "Founder and CEO",
104198
+ avatar: aboutImage("Jordan Mitchell portrait")
104199
+ },
104200
+ featuredImage: aboutImage("Founder working with the team")
104201
+ }
104202
+ },
104203
+ "about-story-hero": {
104204
+ exampleUsage: `
104205
+ <AboutStoryHero
104206
+ title="Our Story"
104207
+ subtitle="Building the future, one practical system at a time"
104208
+ content="We started with a bold idea: customer-facing sites should be easier to operate after launch."
104209
+ heroImage={{ src: "${ABOUT_EXAMPLE_IMAGE_URL}", alt: "Team collaborating in a workspace" }}
104210
+ teamInfo={{
104211
+ title: "50+ Team Members",
104212
+ description: "Working across product, support, and customer operations",
104213
+ }}
104214
+ />
104215
+ `.trim(),
104216
+ importantUsageNotes: "Use for about-page hero storytelling with a real image and source-backed team information. Do not fabricate team size or geographic claims. heroImage must be an image asset only.",
104217
+ usageRequirements: {
104218
+ requiredProps: ["title", "content", "heroImage"],
104219
+ propConstraints: {
104220
+ title: { required: true, maxLength: 80 },
104221
+ subtitle: { maxLength: 120 },
104222
+ content: { required: true, maxLength: 320 },
104223
+ heroImage: { required: true },
104224
+ teamInfo: {
104225
+ note: "Team facts must be source-backed if provided."
104226
+ }
104227
+ },
104228
+ mediaSlots: {
104229
+ heroImage: imageSlot(
104230
+ "heroImage",
104231
+ "Large story hero image.",
104232
+ ["hero", "feature"]
104233
+ )
104234
+ },
104235
+ requiresSiteCapabilities: aboutCapabilities("team_members", "media_library"),
104236
+ notes: [ABOUT_MEDIA_NOTE]
104237
+ },
104238
+ exampleProps: {
104239
+ title: "Our Story",
104240
+ subtitle: "Building the future, one practical system at a time",
104241
+ content: "We started with a bold idea: customer-facing sites should be easier to operate after launch.",
104242
+ heroImage: aboutImage("Team collaborating in a workspace"),
104243
+ teamInfo: {
104244
+ title: "50+ Team Members",
104245
+ description: "Working across product, support, and customer operations"
104246
+ }
104247
+ }
104248
+ },
104249
+ "about-stats-sidebar": {
104250
+ exampleUsage: `
104251
+ <AboutStatsSidebar
104252
+ title="Why Choose Us"
104253
+ description="We have built a platform that scales with your operational needs."
104254
+ stats={[
104255
+ { icon: "lucide/users", value: "10M+", label: "Visitors supported" },
104256
+ { icon: "lucide/globe", value: "150+", label: "Markets served" },
104257
+ ]}
104258
+ features={[
104259
+ { icon: "lucide/zap", title: "Fast launch cycles", description: "Teams publish updates without waiting on engineering." },
104260
+ { icon: "lucide/lock", title: "Managed consistency", description: "Shared blocks keep every page aligned." },
104261
+ ]}
104262
+ />
104263
+ `.trim(),
104264
+ importantUsageNotes: "Use only when stats are real and source-backed. Do not invent large numbers, geographic reach, or performance claims. Feature cards should explain the metrics rather than introduce unrelated benefits.",
104265
+ usageRequirements: {
104266
+ requiredProps: ["title", "stats"],
104267
+ propConstraints: {
104268
+ title: { required: true, maxLength: 70 },
104269
+ description: { maxLength: 180 },
104270
+ stats: {
104271
+ required: true,
104272
+ minItems: 2,
104273
+ maxItems: 6,
104274
+ note: "Stats must be sourced."
104275
+ },
104276
+ features: { minItems: 2, maxItems: 4 }
104277
+ },
104278
+ mediaSlots: {},
104279
+ requiresSiteCapabilities: aboutCapabilities("metrics_or_stats"),
104280
+ notes: ["Do not fabricate metrics or quantified claims."]
104281
+ },
104282
+ exampleProps: {
104283
+ title: "Why Choose Us",
104284
+ description: "We have built a platform that scales with your operational needs.",
104285
+ stats: [
104286
+ { icon: "lucide/users", value: "10M+", label: "Visitors supported" },
104287
+ { icon: "lucide/globe", value: "150+", label: "Markets served" }
104288
+ ],
104289
+ features: [
104290
+ {
104291
+ icon: "lucide/zap",
104292
+ title: "Fast launch cycles",
104293
+ description: "Teams publish updates without waiting on engineering."
104294
+ },
104295
+ {
104296
+ icon: "lucide/lock",
104297
+ title: "Managed consistency",
104298
+ description: "Shared blocks keep every page aligned."
104299
+ }
104300
+ ]
104301
+ }
104302
+ },
104303
+ "about-interactive-tabs": {
104304
+ exampleUsage: `
104305
+ <AboutInteractiveTabs
104306
+ title="Discover Our Story"
104307
+ subtitle="Learn more about how we work and what we value."
104308
+ tabs={[
104309
+ {
104310
+ id: "work",
104311
+ label: "Our Work",
104312
+ content: {
104313
+ title: "Crafting Digital Experiences",
104314
+ description: "We create maintainable, high-performing customer experiences.",
104315
+ image: { src: "${ABOUT_EXAMPLE_IMAGE_URL}", alt: "Team reviewing digital experience work" },
104316
+ },
104317
+ },
104318
+ {
104319
+ id: "process",
104320
+ label: "Our Process",
104321
+ content: {
104322
+ title: "Built Around Real Operations",
104323
+ description: "Every workflow starts from the way teams already work.",
104324
+ image: { src: "${ABOUT_EXAMPLE_IMAGE_URL}", alt: "Team process planning session" },
104325
+ },
104326
+ },
104327
+ ]}
104328
+ />
104329
+ `.trim(),
104330
+ importantUsageNotes: "Use for two to five distinct company aspects such as work, process, values, or culture. Each tab id must be unique and stable. Tab images must be image assets only and should match the tab content.",
104331
+ usageRequirements: {
104332
+ requiredProps: ["title", "tabs"],
104333
+ propConstraints: {
104334
+ title: { required: true, maxLength: 70 },
104335
+ subtitle: { maxLength: 150 },
104336
+ tabs: { required: true, minItems: 2, maxItems: 5 },
104337
+ "tabs[].id": {
104338
+ required: true,
104339
+ note: "Must be unique within the tabs array."
104340
+ },
104341
+ "tabs[].content.title": { required: true, maxLength: 80 },
104342
+ "tabs[].content.description": { required: true, maxLength: 220 }
104343
+ },
104344
+ mediaSlots: {
104345
+ "tabs[].content.image": imageSlot(
104346
+ "tabs[].content.image",
104347
+ "Tab content image.",
104348
+ ["feature", "gallery"],
104349
+ "medium",
104350
+ false
104351
+ )
104352
+ },
104353
+ requiresSiteCapabilities: aboutCapabilities("media_library"),
104354
+ notes: [ABOUT_MEDIA_NOTE]
104355
+ },
104356
+ exampleProps: {
104357
+ title: "Discover Our Story",
104358
+ subtitle: "Learn more about how we work and what we value.",
104359
+ tabs: [
104360
+ {
104361
+ id: "work",
104362
+ label: "Our Work",
104363
+ content: {
104364
+ title: "Crafting Digital Experiences",
104365
+ description: "We create maintainable, high-performing customer experiences.",
104366
+ image: aboutImage("Team reviewing digital experience work")
104367
+ }
104368
+ },
104369
+ {
104370
+ id: "process",
104371
+ label: "Our Process",
104372
+ content: {
104373
+ title: "Built Around Real Operations",
104374
+ description: "Every workflow starts from the way teams already work.",
104375
+ image: aboutImage("Team process planning session")
104376
+ }
104377
+ }
104378
+ ]
104379
+ }
104380
+ },
104381
+ "about-mission-dual-image": {
104382
+ exampleUsage: `
104383
+ <AboutMissionDualImage
104384
+ missionTitle="Our Mission"
104385
+ missionContent="To make professional digital operations easier for every growing team."
104386
+ visionTitle="Our Vision"
104387
+ visionContent="A world where every business can keep its customer experience current."
104388
+ primaryImage={{ src: "${ABOUT_EXAMPLE_IMAGE_URL}", alt: "Team mission planning" }}
104389
+ secondaryImage={{ src: "${ABOUT_EXAMPLE_IMAGE_URL}", alt: "Product workshop" }}
104390
+ actions={[{ label: "Join Our Journey", href: "/careers", variant: "default" }]}
104391
+ />
104392
+ `.trim(),
104393
+ importantUsageNotes: "Use when both mission and vision copy are available. Avoid vague mission statements; keep each content block specific. primaryImage and secondaryImage must be image assets only.",
104394
+ usageRequirements: {
104395
+ requiredProps: ["missionTitle", "missionContent", "visionTitle", "visionContent"],
104396
+ propConstraints: {
104397
+ missionTitle: { required: true, maxLength: 70 },
104398
+ missionContent: { required: true, maxLength: 240 },
104399
+ visionTitle: { required: true, maxLength: 70 },
104400
+ visionContent: { required: true, maxLength: 240 },
104401
+ actions: { maxItems: 2 }
104402
+ },
104403
+ mediaSlots: {
104404
+ primaryImage: imageSlot(
104405
+ "primaryImage",
104406
+ "Primary mission/vision image.",
104407
+ ["feature", "hero"],
104408
+ "large",
104409
+ false
104410
+ ),
104411
+ secondaryImage: imageSlot(
104412
+ "secondaryImage",
104413
+ "Secondary mission/vision image.",
104414
+ ["feature", "thumbnail"],
104415
+ "medium",
104416
+ false
104417
+ )
104418
+ },
104419
+ requiresSiteCapabilities: aboutCapabilities("media_library"),
104420
+ notes: [ABOUT_MEDIA_NOTE]
104421
+ },
104422
+ exampleProps: {
104423
+ missionTitle: "Our Mission",
104424
+ missionContent: "To make professional digital operations easier for every growing team.",
104425
+ visionTitle: "Our Vision",
104426
+ visionContent: "A world where every business can keep its customer experience current.",
104427
+ primaryImage: aboutImage("Team mission planning"),
104428
+ secondaryImage: aboutImage("Product workshop"),
104429
+ actions: [
104430
+ { label: "Join Our Journey", href: "/careers", variant: "default" }
104431
+ ]
104432
+ }
104433
+ },
104434
+ "about-story-expertise": {
104435
+ exampleUsage: `
104436
+ <AboutStoryExpertise
104437
+ eyebrow="About Our Practice"
104438
+ heading="We turn operating complexity into clear digital systems."
104439
+ storyParagraphs={[
104440
+ "Our team works where brand, operations, and customer experience meet.",
104441
+ "Every engagement starts with the source material that makes a business distinct.",
104442
+ ]}
104443
+ actions={[
104444
+ { label: "Start a Project", href: "/contact", variant: "default" },
104445
+ { label: "See Our Work", href: "/work", variant: "outline" },
104446
+ ]}
104447
+ image={{ src: "${ABOUT_EXAMPLE_IMAGE_URL}", alt: "Team reviewing customer experience systems" }}
104448
+ highlight={{ label: "Trusted process", title: "Built around source-backed content", description: "Contracts keep generated pages accurate." }}
104449
+ expertiseAreas={[
104450
+ { title: "Content systems", description: "Reusable structures for every page." },
104451
+ { title: "AI workflows", description: "Guided generation with clear guardrails." },
104452
+ ]}
104453
+ />
104454
+ `.trim(),
104455
+ importantUsageNotes: "Use for trust-building story sections that combine narrative, a single supporting image, and capability tiles. Do not fabricate capabilities the business does not offer. The image prop must be an image asset only.",
104456
+ usageRequirements: {
104457
+ requiredProps: ["heading", "storyParagraphs", "image"],
104458
+ propConstraints: {
104459
+ eyebrow: { maxLength: 40 },
104460
+ heading: { required: true, maxLength: 90 },
104461
+ storyParagraphs: { required: true, minItems: 2, maxItems: 3 },
104462
+ actions: { maxItems: 2 },
104463
+ image: { required: true },
104464
+ expertiseAreas: { minItems: 2, maxItems: 4 }
104465
+ },
104466
+ mediaSlots: {
104467
+ image: imageSlot(
104468
+ "image",
104469
+ "Story and expertise image card.",
104470
+ ["feature", "hero"]
104471
+ )
104472
+ },
104473
+ requiresSiteCapabilities: aboutCapabilities("media_library"),
104474
+ notes: [ABOUT_MEDIA_NOTE]
104475
+ },
104476
+ exampleProps: {
104477
+ eyebrow: "About Our Practice",
104478
+ heading: "We turn operating complexity into clear digital systems.",
104479
+ storyParagraphs: [
104480
+ "Our team works where brand, operations, and customer experience meet.",
104481
+ "Every engagement starts with the source material that makes a business distinct."
104482
+ ],
104483
+ actions: [
104484
+ { label: "Start a Project", href: "/contact", variant: "default" },
104485
+ { label: "See Our Work", href: "/work", variant: "outline" }
104486
+ ],
104487
+ image: aboutImage("Team reviewing customer experience systems"),
104488
+ highlight: {
104489
+ label: "Trusted process",
104490
+ title: "Built around source-backed content",
104491
+ description: "Contracts keep generated pages accurate."
104492
+ },
104493
+ expertiseAreas: [
104494
+ {
104495
+ title: "Content systems",
104496
+ description: "Reusable structures for every page."
104497
+ },
104498
+ {
104499
+ title: "AI workflows",
104500
+ description: "Guided generation with clear guardrails."
104501
+ }
104502
+ ]
104503
+ }
104504
+ },
104505
+ "about-network-spotlight": {
104506
+ exampleUsage: `
104507
+ <AboutNetworkSpotlight
104508
+ eyebrow="Partner Network"
104509
+ heading="A practical network for teams building better customer experiences."
104510
+ description="We work with operators, designers, and implementation partners who care about durable systems."
104511
+ highlights={[
104512
+ "Shared delivery standards across every project",
104513
+ "Practical support for ongoing site operations",
104514
+ "Source-backed content and measurable outcomes",
104515
+ ]}
104516
+ actions={[
104517
+ { label: "Become a Partner", href: "/partners", variant: "default" },
104518
+ { label: "Explore the Network", href: "/network", variant: "outline" },
104519
+ ]}
104520
+ image={{ src: "${ABOUT_EXAMPLE_IMAGE_URL}", alt: "Partner team workshop" }}
104521
+ spotlightCard={{ icon: "lucide/network", label: "Partner reach", title: "Built for collaboration", description: "A shared system keeps every project aligned." }}
104522
+ />
104523
+ `.trim(),
104524
+ importantUsageNotes: "Use for partner, alliance, or community program spotlights with clear source-backed claims. Avoid implying a partner network exists unless the business has one. The image prop must be an image asset only.",
104525
+ usageRequirements: {
104526
+ requiredProps: ["heading", "description", "image"],
104527
+ propConstraints: {
104528
+ eyebrow: { maxLength: 40 },
104529
+ heading: { required: true, maxLength: 90 },
104530
+ description: { required: true, maxLength: 220 },
104531
+ highlights: { minItems: 2, maxItems: 4 },
104532
+ actions: { maxItems: 2 },
104533
+ image: { required: true }
104534
+ },
104535
+ mediaSlots: {
104536
+ image: imageSlot(
104537
+ "image",
104538
+ "Network spotlight image.",
104539
+ ["feature", "hero"]
104540
+ )
104541
+ },
104542
+ requiresSiteCapabilities: aboutCapabilities("media_library"),
104543
+ notes: [ABOUT_MEDIA_NOTE]
104544
+ },
104545
+ exampleProps: {
104546
+ eyebrow: "Partner Network",
104547
+ heading: "A practical network for teams building better customer experiences.",
104548
+ description: "We work with operators, designers, and implementation partners who care about durable systems.",
104549
+ highlights: [
104550
+ "Shared delivery standards across every project",
104551
+ "Practical support for ongoing site operations",
104552
+ "Source-backed content and measurable outcomes"
104553
+ ],
104554
+ actions: [
104555
+ { label: "Become a Partner", href: "/partners", variant: "default" },
104556
+ { label: "Explore the Network", href: "/network", variant: "outline" }
104557
+ ],
104558
+ image: aboutImage("Partner team workshop"),
104559
+ spotlightCard: {
104560
+ icon: "lucide/network",
104561
+ label: "Partner reach",
104562
+ title: "Built for collaboration",
104563
+ description: "A shared system keeps every project aligned."
104564
+ }
104565
+ }
104566
+ },
104567
+ "about-location-info-hero": {
104568
+ exampleUsage: `
104569
+ <AboutLocationInfoHero
104570
+ headline="Visit Our Flagship Workspace"
104571
+ address="123 Market Street, Phoenix, AZ"
104572
+ addressHref="https://maps.google.com/?q=123+Market+Street+Phoenix+AZ"
104573
+ phone="(555) 014-8821"
104574
+ phoneHref="tel:+15550148821"
104575
+ actions={[{ label: "Get Directions", href: "/locations", variant: "default" }]}
104576
+ hoursSections={[
104577
+ { label: "Weekdays", hours: [{ day: "Mon-Fri", time: "9:00 AM - 6:00 PM" }] },
104578
+ { label: "Weekend", hours: [{ day: "Sat", time: "10:00 AM - 2:00 PM" }] },
104579
+ ]}
104580
+ images={[
104581
+ { src: "${ABOUT_EXAMPLE_IMAGE_URL}", alt: "Flagship workspace interior" },
104582
+ { src: "${ABOUT_EXAMPLE_IMAGE_URL}", alt: "Team meeting area" },
104583
+ ]}
104584
+ />
104585
+ `.trim(),
104586
+ importantUsageNotes: "Use only when contact details, hours, and location facts are source-backed. Do not fabricate addresses, phone numbers, or business hours. images[] must contain image assets only, never logos, favicons, or videos.",
104587
+ usageRequirements: {
104588
+ requiredProps: ["headline", "address", "phone", "hoursSections", "images"],
104589
+ propConstraints: {
104590
+ headline: { required: true, maxLength: 80 },
104591
+ address: {
104592
+ required: true,
104593
+ note: "Must be source-backed contact information."
104594
+ },
104595
+ phone: {
104596
+ required: true,
104597
+ note: "Must be source-backed contact information."
104598
+ },
104599
+ hoursSections: { required: true, minItems: 1, maxItems: 4 },
104600
+ images: { required: true, minItems: 1, maxItems: 2 },
104601
+ actions: { maxItems: 2 }
104602
+ },
104603
+ mediaSlots: {
104604
+ "images[]": imageSlot(
104605
+ "images[]",
104606
+ "Location showcase image.",
104607
+ ["feature", "hero"]
104608
+ )
104609
+ },
104610
+ requiresSiteCapabilities: aboutCapabilities("contact_info", "media_library"),
104611
+ notes: [ABOUT_MEDIA_NOTE, "Location and hours data must be sourced."]
104612
+ },
104613
+ exampleProps: {
104614
+ headline: "Visit Our Flagship Workspace",
104615
+ address: "123 Market Street, Phoenix, AZ",
104616
+ addressHref: "https://maps.google.com/?q=123+Market+Street+Phoenix+AZ",
104617
+ phone: "(555) 014-8821",
104618
+ phoneHref: "tel:+15550148821",
104619
+ actions: [
104620
+ { label: "Get Directions", href: "/locations", variant: "default" }
104621
+ ],
104622
+ hoursSections: [
104623
+ {
104624
+ label: "Weekdays",
104625
+ hours: [{ day: "Mon-Fri", time: "9:00 AM - 6:00 PM" }]
104626
+ },
104627
+ {
104628
+ label: "Weekend",
104629
+ hours: [{ day: "Sat", time: "10:00 AM - 2:00 PM" }]
104630
+ }
104631
+ ],
104632
+ images: [
104633
+ aboutImage("Flagship workspace interior"),
104634
+ aboutImage("Team meeting area")
104635
+ ]
104636
+ }
104637
+ },
104638
+ "about-split-hero": {
104639
+ exampleUsage: `
104640
+ <AboutSplitHero
104641
+ brandText="Business"
104642
+ brandHighlight="PRO"
104643
+ heading="Achieve More with Elite Access"
104644
+ description="Give your team a polished about experience with clear positioning and a strong visual."
104645
+ ctaAction={{ label: "Upgrade to premium", href: "/upgrade", variant: "default" }}
104646
+ imageSrc="${ABOUT_EXAMPLE_IMAGE_URL}"
104647
+ imageAlt="Premium team workspace"
104648
+ />
104649
+ `.trim(),
104650
+ importantUsageNotes: "Use for premium, launch, or upgrade-oriented about hero sections. Use ctaAction, not ctaText or ctaUrl. imageSrc must be an absolute image URL and must not be a logo, favicon, or video asset.",
104651
+ usageRequirements: {
104652
+ requiredProps: ["heading", "description", "imageSrc"],
104653
+ propConstraints: {
104654
+ brandText: { maxLength: 30 },
104655
+ brandHighlight: { maxLength: 20 },
104656
+ heading: { required: true, maxLength: 70 },
104657
+ description: { required: true, maxLength: 180 },
104658
+ ctaAction: {
104659
+ note: "Use ActionConfig with label and href."
104660
+ },
104661
+ imageSrc: { required: true },
104662
+ imageAlt: { required: true, maxLength: 120 }
104663
+ },
104664
+ mediaSlots: {
104665
+ imageSrc: imageSlot(
104666
+ "imageSrc",
104667
+ "Split hero image.",
104668
+ ["hero", "feature"]
104669
+ )
104670
+ },
104671
+ requiresSiteCapabilities: aboutCapabilities("media_library"),
104672
+ notes: [ABOUT_MEDIA_NOTE]
104673
+ },
104674
+ exampleProps: {
104675
+ brandText: "Business",
104676
+ brandHighlight: "PRO",
104677
+ heading: "Achieve More with Elite Access",
104678
+ description: "Give your team a polished about experience with clear positioning and a strong visual.",
104679
+ ctaAction: {
104680
+ label: "Upgrade to premium",
104681
+ href: "/upgrade",
104682
+ variant: "default"
104683
+ },
104684
+ imageSrc: ABOUT_EXAMPLE_IMAGE_URL,
104685
+ imageAlt: "Premium team workspace"
104686
+ }
104687
+ },
104688
+ "about-mission-principles": {
104689
+ exampleUsage: `
104690
+ <AboutMissionPrinciples
104691
+ badgeText="Our Mission"
104692
+ missionHeading="To empower teams through practical technology"
104693
+ missionDescription="We believe digital systems should make daily operations clearer, not more complicated."
104694
+ missionAction={{ label: "Learn More", href: "/about", variant: "default" }}
104695
+ principles={[
104696
+ { number: "01", title: "Customer-Centric", description: "Start from the real work customers need to complete." },
104697
+ { number: "02", title: "Durable Systems", description: "Build patterns that stay maintainable as teams grow." },
104698
+ ]}
104699
+ visionHeading="Our Vision"
104700
+ visionDescription="A world where every team can keep its digital presence current."
104701
+ visionAction={{ label: "Join Us", href: "/careers", variant: "outline" }}
104702
+ />
104703
+ `.trim(),
104704
+ importantUsageNotes: "Use for mission, values, and vision content that the business can support with real messaging. Do not invent principles that contradict the brand. Keep principle cards concise and numbered.",
104705
+ usageRequirements: {
104706
+ requiredProps: ["missionHeading", "missionDescription", "principles"],
104707
+ propConstraints: {
104708
+ badgeText: { maxLength: 35 },
104709
+ missionHeading: { required: true, maxLength: 80 },
104710
+ missionDescription: { required: true, maxLength: 240 },
104711
+ principles: { required: true, minItems: 2, maxItems: 4 },
104712
+ visionHeading: { maxLength: 80 },
104713
+ visionDescription: { maxLength: 220 }
104714
+ },
104715
+ mediaSlots: {},
104716
+ requiresSiteCapabilities: aboutCapabilities(),
104717
+ notes: ["Mission and principle copy should come from brand source material."]
104718
+ },
104719
+ exampleProps: {
104720
+ badgeText: "Our Mission",
104721
+ missionHeading: "To empower teams through practical technology",
104722
+ missionDescription: "We believe digital systems should make daily operations clearer, not more complicated.",
104723
+ missionAction: { label: "Learn More", href: "/about", variant: "default" },
104724
+ principles: [
104725
+ {
104726
+ number: "01",
104727
+ title: "Customer-Centric",
104728
+ description: "Start from the real work customers need to complete."
104729
+ },
104730
+ {
104731
+ number: "02",
104732
+ title: "Durable Systems",
104733
+ description: "Build patterns that stay maintainable as teams grow."
104734
+ }
104735
+ ],
104736
+ visionHeading: "Our Vision",
104737
+ visionDescription: "A world where every team can keep its digital presence current.",
104738
+ visionAction: { label: "Join Us", href: "/careers", variant: "outline" }
104739
+ }
104740
+ },
104741
+ "about-expandable-values": {
104742
+ exampleUsage: `
104743
+ <AboutExpandableValues
104744
+ badgeText="Our Core Values"
104745
+ heading="The Principles That Guide Us"
104746
+ description="These values shape how we build, support, and improve every customer experience."
104747
+ values={[
104748
+ {
104749
+ id: "integrity",
104750
+ icon: "lucide/shield",
104751
+ title: "Integrity",
104752
+ shortDescription: "Do the right work the right way.",
104753
+ longDescription: "We make decisions that stay clear when the site grows and the team changes.",
104754
+ examples: ["Transparent tradeoffs", "Source-backed claims"],
104755
+ },
104756
+ {
104757
+ id: "momentum",
104758
+ icon: "lucide/zap",
104759
+ title: "Momentum",
104760
+ shortDescription: "Move quickly without losing quality.",
104761
+ longDescription: "We prefer reusable systems that make every future update easier.",
104762
+ examples: ["Reusable blocks", "Fast publishing workflows"],
104763
+ },
104764
+ ]}
104765
+ ctaHeading="Build With These Values"
104766
+ ctaDescription="Turn brand principles into a maintainable digital experience."
104767
+ actions={[{ label: "Start a Project", href: "/contact", variant: "default" }]}
104768
+ />
104769
+ `.trim(),
104770
+ importantUsageNotes: "Use for source-backed company values with enough detail for expandable cards. Do not invent values or examples. Each value id must be unique and stable.",
104771
+ usageRequirements: {
104772
+ requiredProps: ["heading", "values"],
104773
+ propConstraints: {
104774
+ badgeText: { maxLength: 35 },
104775
+ heading: { required: true, maxLength: 80 },
104776
+ description: { maxLength: 200 },
104777
+ values: { required: true, minItems: 2, maxItems: 6 },
104778
+ "values[].id": {
104779
+ required: true,
104780
+ note: "Must be unique within the values array."
104781
+ },
104782
+ "values[].shortDescription": { maxLength: 90 },
104783
+ "values[].longDescription": { maxLength: 260 },
104784
+ "values[].examples": { maxItems: 4 },
104785
+ actions: { maxItems: 2 }
104786
+ },
104787
+ mediaSlots: {},
104788
+ requiresSiteCapabilities: aboutCapabilities(),
104789
+ notes: ["Values and examples should come from brand source material."]
104790
+ },
104791
+ exampleProps: {
104792
+ badgeText: "Our Core Values",
104793
+ heading: "The Principles That Guide Us",
104794
+ description: "These values shape how we build, support, and improve every customer experience.",
104795
+ values: [
104796
+ {
104797
+ id: "integrity",
104798
+ icon: "lucide/shield",
104799
+ title: "Integrity",
104800
+ shortDescription: "Do the right work the right way.",
104801
+ longDescription: "We make decisions that stay clear when the site grows and the team changes.",
104802
+ examples: ["Transparent tradeoffs", "Source-backed claims"]
104803
+ },
104804
+ {
104805
+ id: "momentum",
104806
+ icon: "lucide/zap",
104807
+ title: "Momentum",
104808
+ shortDescription: "Move quickly without losing quality.",
104809
+ longDescription: "We prefer reusable systems that make every future update easier.",
104810
+ examples: ["Reusable blocks", "Fast publishing workflows"]
104811
+ }
104812
+ ],
104813
+ ctaHeading: "Build With These Values",
104814
+ ctaDescription: "Turn brand principles into a maintainable digital experience.",
104815
+ actions: [
104816
+ { label: "Start a Project", href: "/contact", variant: "default" }
104817
+ ]
104818
+ }
104819
+ },
104820
+ "community-initiatives": {
104821
+ exampleUsage: `
104822
+ <CommunityInitiatives
104823
+ badgeText="Community Impact"
104824
+ heading="Supporting the Communities We Serve"
104825
+ description="Our programs connect practical service with measurable local outcomes."
104826
+ categories={[
104827
+ {
104828
+ id: "food-drive",
104829
+ title: "Food Drive",
104830
+ description: "Supporting local families through coordinated food donations.",
104831
+ initiatives: [
104832
+ {
104833
+ id: "monthly-pantry",
104834
+ title: "Monthly Pantry Support",
104835
+ description: "A recurring program with neighborhood partners.",
104836
+ icon: "lucide/heart-handshake",
104837
+ metrics: [{ value: "2,400", label: "Meals donated" }],
104838
+ image: "${ABOUT_EXAMPLE_IMAGE_URL}",
104839
+ },
104840
+ ],
104841
+ },
104842
+ ]}
104843
+ ctaHeading="Partner With Us"
104844
+ ctaDescription="Help expand practical community programs in your area."
104845
+ actions={[{ label: "Get Involved", href: "/community", variant: "default" }]}
104846
+ />
104847
+ `.trim(),
104848
+ importantUsageNotes: "Use only when community program details and impact metrics are sourced. Do not fabricate initiatives, donation totals, partner names, or impact claims. Initiative images must be image assets only.",
104849
+ usageRequirements: {
104850
+ requiredProps: ["heading", "categories"],
104851
+ propConstraints: {
104852
+ badgeText: { maxLength: 35 },
104853
+ heading: { required: true, maxLength: 90 },
104854
+ description: { maxLength: 220 },
104855
+ categories: { required: true, minItems: 1, maxItems: 5 },
104856
+ "categories[].initiatives": { required: true, minItems: 1, maxItems: 6 },
104857
+ "categories[].initiatives[].metrics": {
104858
+ note: "Metrics must be sourced."
104859
+ },
104860
+ actions: { maxItems: 2 }
104861
+ },
104862
+ mediaSlots: {
104863
+ "categories[].initiatives[].image": imageSlot(
104864
+ "categories[].initiatives[].image",
104865
+ "Community initiative image.",
104866
+ ["feature", "thumbnail"],
104867
+ "medium",
104868
+ false
104869
+ )
104870
+ },
104871
+ requiresSiteCapabilities: aboutCapabilities(
104872
+ "metrics_or_stats",
104873
+ "media_library"
104874
+ ),
104875
+ notes: [ABOUT_MEDIA_NOTE, "Community impact claims must be sourced."]
104876
+ },
104877
+ exampleProps: {
104878
+ badgeText: "Community Impact",
104879
+ heading: "Supporting the Communities We Serve",
104880
+ description: "Our programs connect practical service with measurable local outcomes.",
104881
+ categories: [
104882
+ {
104883
+ id: "food-drive",
104884
+ title: "Food Drive",
104885
+ description: "Supporting local families through coordinated food donations.",
104886
+ initiatives: [
104887
+ {
104888
+ id: "monthly-pantry",
104889
+ title: "Monthly Pantry Support",
104890
+ description: "A recurring program with neighborhood partners.",
104891
+ icon: "lucide/heart-handshake",
104892
+ metrics: [{ value: "2,400", label: "Meals donated" }],
104893
+ image: ABOUT_EXAMPLE_IMAGE_URL
104894
+ }
104895
+ ]
104896
+ }
104897
+ ],
104898
+ ctaHeading: "Partner With Us",
104899
+ ctaDescription: "Help expand practical community programs in your area.",
104900
+ actions: [
104901
+ { label: "Get Involved", href: "/community", variant: "default" }
104902
+ ]
104903
+ }
104904
+ },
104905
+ "about-culture-tabs": {
104906
+ exampleUsage: `
104907
+ <AboutCultureTabs
104908
+ badgeText="Our Culture"
104909
+ heading="What Makes Us Different"
104910
+ description="We have built a workplace where practical innovation and clear communication matter."
104911
+ aspects={[
104912
+ {
104913
+ id: "innovation",
104914
+ title: "Innovation First",
104915
+ description: "Teams have room to test better ways to serve customers.",
104916
+ images: ["${ABOUT_EXAMPLE_IMAGE_URL}", "${ABOUT_EXAMPLE_IMAGE_URL}", "${ABOUT_EXAMPLE_IMAGE_URL}"],
104917
+ testimonial: {
104918
+ quote: "The freedom to improve the work is matched by real support from the team.",
104919
+ author: "Sarah Chen",
104920
+ role: "Senior Product Designer",
104921
+ avatar: "${ABOUT_EXAMPLE_IMAGE_URL}",
104922
+ },
104923
+ },
104924
+ {
104925
+ id: "collaboration",
104926
+ title: "Collaborative Spirit",
104927
+ description: "Cross-functional teams share context early and often.",
104928
+ images: ["${ABOUT_EXAMPLE_IMAGE_URL}", "${ABOUT_EXAMPLE_IMAGE_URL}", "${ABOUT_EXAMPLE_IMAGE_URL}"],
104929
+ testimonial: {
104930
+ quote: "People here are genuinely invested in helping each other succeed.",
104931
+ author: "Marcus Johnson",
104932
+ role: "Engineering Lead",
104933
+ avatar: "${ABOUT_EXAMPLE_IMAGE_URL}",
104934
+ },
104935
+ },
104936
+ ]}
104937
+ ctaHeading="Ready to Join Our Team?"
104938
+ ctaDescription="We are looking for people who share these values."
104939
+ actions={[{ label: "View Open Positions", href: "/careers", variant: "default" }]}
104940
+ ctaImages={["${ABOUT_EXAMPLE_IMAGE_URL}", "${ABOUT_EXAMPLE_IMAGE_URL}", "${ABOUT_EXAMPLE_IMAGE_URL}"]}
104941
+ />
104942
+ `.trim(),
104943
+ importantUsageNotes: "Use only when real culture aspects, employee testimonials, and team imagery are available. Do not fabricate quotes, authors, roles, or workplace claims. aspects[].images, testimonial.avatar, and ctaImages must be image media only.",
104944
+ usageRequirements: {
104945
+ requiredProps: ["heading", "aspects"],
104946
+ propConstraints: {
104947
+ badgeText: { maxLength: 35 },
104948
+ heading: { required: true, maxLength: 90 },
104949
+ description: { maxLength: 220 },
104950
+ aspects: { required: true, minItems: 2, maxItems: 5 },
104951
+ "aspects[].id": {
104952
+ required: true,
104953
+ note: "Must be unique within the aspects array."
104954
+ },
104955
+ "aspects[].images": { required: true, minItems: 2, maxItems: 4 },
104956
+ "aspects[].testimonial": {
104957
+ required: true,
104958
+ note: "Must be a real sourced employee or team testimonial."
104959
+ },
104960
+ ctaImages: { minItems: 3, maxItems: 6 },
104961
+ actions: { maxItems: 2 }
104962
+ },
104963
+ mediaSlots: {
104964
+ "aspects[].images[]": imageSlot(
104965
+ "aspects[].images[]",
104966
+ "Culture aspect gallery image.",
104967
+ ["gallery", "feature"]
104968
+ ),
104969
+ "aspects[].testimonial.avatar": imageSlot(
104970
+ "aspects[].testimonial.avatar",
104971
+ "Culture testimonial author avatar.",
104972
+ ["profile", "avatar"],
104973
+ "small",
104974
+ true,
104975
+ "1:1"
104976
+ ),
104977
+ "ctaImages[]": imageSlot(
104978
+ "ctaImages[]",
104979
+ "Careers CTA supporting image.",
104980
+ ["thumbnail", "gallery"],
104981
+ "small",
104982
+ false
104983
+ )
104984
+ },
104985
+ requiresSiteCapabilities: aboutCapabilities(
104986
+ "reviews_or_testimonials",
104987
+ "team_members",
104988
+ "media_library"
104989
+ ),
104990
+ notes: [ABOUT_MEDIA_NOTE, "Culture testimonials and team claims must be sourced."]
104991
+ },
104992
+ exampleProps: {
104993
+ badgeText: "Our Culture",
104994
+ heading: "What Makes Us Different",
104995
+ description: "We have built a workplace where practical innovation and clear communication matter.",
104996
+ aspects: [
104997
+ {
104998
+ id: "innovation",
104999
+ title: "Innovation First",
105000
+ description: "Teams have room to test better ways to serve customers.",
105001
+ images: [
105002
+ ABOUT_EXAMPLE_IMAGE_URL,
105003
+ ABOUT_EXAMPLE_IMAGE_URL,
105004
+ ABOUT_EXAMPLE_IMAGE_URL
105005
+ ],
105006
+ testimonial: {
105007
+ quote: "The freedom to improve the work is matched by real support from the team.",
105008
+ author: "Sarah Chen",
105009
+ role: "Senior Product Designer",
105010
+ avatar: ABOUT_EXAMPLE_IMAGE_URL
105011
+ }
105012
+ },
105013
+ {
105014
+ id: "collaboration",
105015
+ title: "Collaborative Spirit",
105016
+ description: "Cross-functional teams share context early and often.",
105017
+ images: [
105018
+ ABOUT_EXAMPLE_IMAGE_URL,
105019
+ ABOUT_EXAMPLE_IMAGE_URL,
105020
+ ABOUT_EXAMPLE_IMAGE_URL
105021
+ ],
105022
+ testimonial: {
105023
+ quote: "People here are genuinely invested in helping each other succeed.",
105024
+ author: "Marcus Johnson",
105025
+ role: "Engineering Lead",
105026
+ avatar: ABOUT_EXAMPLE_IMAGE_URL
105027
+ }
105028
+ }
105029
+ ],
105030
+ ctaHeading: "Ready to Join Our Team?",
105031
+ ctaDescription: "We are looking for people who share these values.",
105032
+ actions: [
105033
+ { label: "View Open Positions", href: "/careers", variant: "default" }
105034
+ ],
105035
+ ctaImages: [
105036
+ ABOUT_EXAMPLE_IMAGE_URL,
105037
+ ABOUT_EXAMPLE_IMAGE_URL,
105038
+ ABOUT_EXAMPLE_IMAGE_URL
105039
+ ]
105040
+ }
105041
+ }
105042
+ };
103463
105043
  var BLOCK_REGISTRY = {
103464
105044
  "alternating-blocks": {
103465
105045
  id: "alternating-blocks",
@@ -103479,38 +105059,7 @@ var BLOCK_REGISTRY = {
103479
105059
  category: "about",
103480
105060
  component: AlternatingBlocks,
103481
105061
  props: "AlternatingBlocksProps",
103482
- exampleUsage: `
103483
- <AlternatingBlocks
103484
- sections={[
103485
- {
103486
- content: (
103487
- <div>
103488
- <div className="flex items-center gap-2 mb-3">
103489
- <Lightbulb className="h-4 w-4 text-primary" />
103490
- <span className="text-sm font-medium text-muted-foreground">
103491
- The Origin
103492
- </span>
103493
- </div>
103494
- <h3 className="mb-3 text-2xl font-semibold tracking-tight">
103495
- It started with frustration
103496
- </h3>
103497
- <p className="text-muted-foreground leading-relaxed">
103498
- We spent years watching teams drown in tools that promised to help
103499
- but only added complexity. In 2018, we decided to build something better.
103500
- </p>
103501
- </div>
103502
- ),
103503
- media: <img src="..." alt="..." />,
103504
- mediaLeft: false
103505
- },
103506
- {
103507
- content: <div>...</div>,
103508
- media: <img src="..." alt="..." />,
103509
- mediaLeft: true
103510
- }
103511
- ]}
103512
- />
103513
- `.trim()
105062
+ ...ABOUT_BLOCK_CONTRACTS["alternating-blocks"]
103514
105063
  },
103515
105064
  "about-mission-features": {
103516
105065
  id: "about-mission-features",
@@ -103530,19 +105079,7 @@ var BLOCK_REGISTRY = {
103530
105079
  category: "about",
103531
105080
  component: AboutMissionFeatures,
103532
105081
  props: "AboutMissionFeaturesProps",
103533
- exampleUsage: `
103534
- <AboutMissionFeatures
103535
- title="About Us"
103536
- description="We make it easy to build customer portals and internal tools."
103537
- missionLabel="OUR MISSION"
103538
- missionText="We believe building software should be insanely easy."
103539
- mainImage={{ src: "/images/team.jpg", alt: "Our team" }}
103540
- features={[
103541
- { icon: "lucide/files", title: "Being radically open", description: "..." },
103542
- { icon: "lucide/settings", title: "Optimizing for empowerment", description: "..." }
103543
- ]}
103544
- />
103545
- `.trim()
105082
+ ...ABOUT_BLOCK_CONTRACTS["about-mission-features"]
103546
105083
  },
103547
105084
  "about-stats-showcase": {
103548
105085
  id: "about-stats-showcase",
@@ -103562,17 +105099,7 @@ var BLOCK_REGISTRY = {
103562
105099
  category: "about",
103563
105100
  component: AboutStatsShowcase,
103564
105101
  props: "AboutStatsShowcaseProps",
103565
- exampleUsage: `
103566
- <AboutStatsShowcase
103567
- title="Our Background"
103568
- description="Discover how our solution simplifies complex processes."
103569
- stats={[
103570
- { value: "21M", label: "Global Reach of Users" },
103571
- { value: "12+", label: "Years of Expertise" }
103572
- ]}
103573
- logosTitle="Trusted by leading product teams worldwide."
103574
- />
103575
- `.trim()
105102
+ ...ABOUT_BLOCK_CONTRACTS["about-stats-showcase"]
103576
105103
  },
103577
105104
  "about-company-profile": {
103578
105105
  id: "about-company-profile",
@@ -103592,22 +105119,7 @@ var BLOCK_REGISTRY = {
103592
105119
  category: "about",
103593
105120
  component: AboutCompanyProfile,
103594
105121
  props: "AboutCompanyProfileProps",
103595
- exampleUsage: `
103596
- <AboutCompanyProfile
103597
- title="About Us"
103598
- description="A passionate team dedicated to creating innovative solutions."
103599
- breakout={{
103600
- title: "Hundreds of blocks at Opensite AI",
103601
- description: "Providing businesses with effective tools.",
103602
- buttonText: "Discover more",
103603
- buttonUrl: "#"
103604
- }}
103605
- achievements={[
103606
- { label: "Companies", value: "300+" },
103607
- { label: "Happy Customers", value: "99%" }
103608
- ]}
103609
- />
103610
- `.trim()
105122
+ ...ABOUT_BLOCK_CONTRACTS["about-company-profile"]
103611
105123
  },
103612
105124
  "about-vision-gallery": {
103613
105125
  id: "about-vision-gallery",
@@ -103627,16 +105139,7 @@ var BLOCK_REGISTRY = {
103627
105139
  category: "about",
103628
105140
  component: AboutVisionGallery,
103629
105141
  props: "AboutVisionGalleryProps",
103630
- exampleUsage: `
103631
- <AboutVisionGallery
103632
- title="About Us"
103633
- subtitle="Meet our team and discover our values."
103634
- visionTitle="Our Vision"
103635
- visionContent="What if you could create custom software without code?"
103636
- ctaTitle="Part of Our Global Team"
103637
- ctaButtonText="Get to know the team"
103638
- />
103639
- `.trim()
105142
+ ...ABOUT_BLOCK_CONTRACTS["about-vision-gallery"]
103640
105143
  },
103641
105144
  "about-developer-story": {
103642
105145
  id: "about-developer-story",
@@ -103656,17 +105159,7 @@ var BLOCK_REGISTRY = {
103656
105159
  category: "about",
103657
105160
  component: AboutDeveloperStory,
103658
105161
  props: "AboutDeveloperStoryProps",
103659
- exampleUsage: `
103660
- <AboutDeveloperStory
103661
- title="Developer-Focused Solutions for Modern Teams"
103662
- description="We build tools that developers love."
103663
- primaryCta={{ text: "Get Started", url: "#" }}
103664
- stats={[
103665
- { value: "200+", label: "Projects Completed" },
103666
- { value: "50+", label: "Happy Clients" }
103667
- ]}
103668
- />
103669
- `.trim()
105162
+ ...ABOUT_BLOCK_CONTRACTS["about-developer-story"]
103670
105163
  },
103671
105164
  "about-story-gallery": {
103672
105165
  id: "about-story-gallery",
@@ -103685,16 +105178,7 @@ var BLOCK_REGISTRY = {
103685
105178
  category: "about",
103686
105179
  component: AboutStoryGallery,
103687
105180
  props: "AboutStoryGalleryProps",
103688
- exampleUsage: `
103689
- <AboutStoryGallery
103690
- title="Our Story"
103691
- description="We started with a vision to transform how businesses build software."
103692
- images={[
103693
- { src: "/images/story1.jpg", alt: "Our beginning" },
103694
- { src: "/images/story2.jpg", alt: "Growth phase" }
103695
- ]}
103696
- />
103697
- `.trim()
105181
+ ...ABOUT_BLOCK_CONTRACTS["about-story-gallery"]
103698
105182
  },
103699
105183
  "about-streamline-team": {
103700
105184
  id: "about-streamline-team",
@@ -103714,17 +105198,7 @@ var BLOCK_REGISTRY = {
103714
105198
  category: "about",
103715
105199
  component: AboutStreamlineTeam,
103716
105200
  props: "AboutStreamlineTeamProps",
103717
- exampleUsage: `
103718
- <AboutStreamlineTeam
103719
- title="Streamline Your Workflow"
103720
- description="Our platform helps teams work smarter, not harder."
103721
- features={[
103722
- { icon: "lucide/zap", title: "Lightning Fast", description: "Build in minutes." },
103723
- { icon: "lucide/shield", title: "Enterprise Security", description: "Bank-grade security." }
103724
- ]}
103725
- teamCta={{ text: "Join Our Team", url: "#" }}
103726
- />
103727
- `.trim()
105201
+ ...ABOUT_BLOCK_CONTRACTS["about-streamline-team"]
103728
105202
  },
103729
105203
  "about-developer-profile": {
103730
105204
  id: "about-developer-profile",
@@ -103744,17 +105218,7 @@ var BLOCK_REGISTRY = {
103744
105218
  category: "about",
103745
105219
  component: AboutDeveloperProfile,
103746
105220
  props: "AboutDeveloperProfileProps",
103747
- exampleUsage: `
103748
- <AboutDeveloperProfile
103749
- name="Alex Johnson"
103750
- role="Full-Stack Developer"
103751
- bio="I'm a passionate developer with 8+ years of experience."
103752
- skills={["React", "TypeScript", "Node.js", "Python"]}
103753
- socialLinks={[
103754
- { icon: "lucide/github", url: "#", label: "GitHub" }
103755
- ]}
103756
- />
103757
- `.trim()
105221
+ ...ABOUT_BLOCK_CONTRACTS["about-developer-profile"]
103758
105222
  },
103759
105223
  "about-startup-team": {
103760
105224
  id: "about-startup-team",
@@ -103774,19 +105238,7 @@ var BLOCK_REGISTRY = {
103774
105238
  category: "about",
103775
105239
  component: AboutStartupTeam,
103776
105240
  props: "AboutStartupTeamProps",
103777
- exampleUsage: `
103778
- <AboutStartupTeam
103779
- title="Building the Future of Software Development"
103780
- description="We're a team of passionate builders."
103781
- sidebarLinks={[
103782
- { label: "About Us", href: "#about", isActive: true },
103783
- { label: "Our Team", href: "#team" }
103784
- ]}
103785
- teamMembers={[
103786
- { name: "Sarah Chen", role: "CEO & Co-Founder" }
103787
- ]}
103788
- />
103789
- `.trim()
105241
+ ...ABOUT_BLOCK_CONTRACTS["about-startup-team"]
103790
105242
  },
103791
105243
  "about-minimal-story": {
103792
105244
  id: "about-minimal-story",
@@ -103805,16 +105257,7 @@ var BLOCK_REGISTRY = {
103805
105257
  category: "about",
103806
105258
  component: AboutMinimalStory,
103807
105259
  props: "AboutMinimalStoryProps",
103808
- exampleUsage: `
103809
- <AboutMinimalStory
103810
- title="Our Story"
103811
- content="Every great company starts with a simple idea."
103812
- author={{
103813
- name: "Jordan Mitchell",
103814
- role: "Founder & CEO"
103815
- }}
103816
- />
103817
- `.trim()
105260
+ ...ABOUT_BLOCK_CONTRACTS["about-minimal-story"]
103818
105261
  },
103819
105262
  "about-story-hero": {
103820
105263
  id: "about-story-hero",
@@ -103833,17 +105276,7 @@ var BLOCK_REGISTRY = {
103833
105276
  category: "about",
103834
105277
  component: AboutStoryHero,
103835
105278
  props: "AboutStoryHeroProps",
103836
- exampleUsage: `
103837
- <AboutStoryHero
103838
- title="Our Story"
103839
- subtitle="Building the future, one line of code at a time"
103840
- content="We started with a bold idea..."
103841
- teamInfo={{
103842
- title: "50+ Team Members",
103843
- description: "Working across 12 countries"
103844
- }}
103845
- />
103846
- `.trim()
105279
+ ...ABOUT_BLOCK_CONTRACTS["about-story-hero"]
103847
105280
  },
103848
105281
  "about-stats-sidebar": {
103849
105282
  id: "about-stats-sidebar",
@@ -103862,16 +105295,7 @@ var BLOCK_REGISTRY = {
103862
105295
  category: "about",
103863
105296
  component: AboutStatsSidebar,
103864
105297
  props: "AboutStatsSidebarProps",
103865
- exampleUsage: `
103866
- <AboutStatsSidebar
103867
- title="Why Choose Us"
103868
- description="We've built a platform that scales with your needs."
103869
- stats={[
103870
- { icon: "lucide/users", value: "10M+", label: "Active Users" },
103871
- { icon: "lucide/globe", value: "150+", label: "Countries" }
103872
- ]}
103873
- />
103874
- `.trim()
105298
+ ...ABOUT_BLOCK_CONTRACTS["about-stats-sidebar"]
103875
105299
  },
103876
105300
  "about-interactive-tabs": {
103877
105301
  id: "about-interactive-tabs",
@@ -103890,22 +105314,7 @@ var BLOCK_REGISTRY = {
103890
105314
  category: "about",
103891
105315
  component: AboutInteractiveTabs,
103892
105316
  props: "AboutInteractiveTabsProps",
103893
- exampleUsage: `
103894
- <AboutInteractiveTabs
103895
- title="Discover Our Story"
103896
- subtitle="Learn more about who we are"
103897
- tabs={[
103898
- {
103899
- id: "work",
103900
- label: "Our Work",
103901
- content: {
103902
- title: "Crafting Digital Experiences",
103903
- description: "We create beautiful, functional products."
103904
- }
103905
- }
103906
- ]}
103907
- />
103908
- `.trim()
105317
+ ...ABOUT_BLOCK_CONTRACTS["about-interactive-tabs"]
103909
105318
  },
103910
105319
  "about-mission-dual-image": {
103911
105320
  id: "about-mission-dual-image",
@@ -103924,15 +105333,7 @@ var BLOCK_REGISTRY = {
103924
105333
  category: "about",
103925
105334
  component: AboutMissionDualImage,
103926
105335
  props: "AboutMissionDualImageProps",
103927
- exampleUsage: `
103928
- <AboutMissionDualImage
103929
- missionTitle="Our Mission"
103930
- missionContent="To democratize software development."
103931
- visionTitle="Our Vision"
103932
- visionContent="A world where every idea can become reality."
103933
- cta={{ text: "Join Our Journey", url: "#" }}
103934
- />
103935
- `.trim()
105336
+ ...ABOUT_BLOCK_CONTRACTS["about-mission-dual-image"]
103936
105337
  },
103937
105338
  "about-story-expertise": {
103938
105339
  id: "about-story-expertise",
@@ -103953,7 +105354,7 @@ var BLOCK_REGISTRY = {
103953
105354
  category: "about",
103954
105355
  component: AboutStoryExpertise,
103955
105356
  props: "AboutStoryExpertiseProps",
103956
- exampleUsage: `<AboutStoryExpertise />`.trim()
105357
+ ...ABOUT_BLOCK_CONTRACTS["about-story-expertise"]
103957
105358
  },
103958
105359
  "about-network-spotlight": {
103959
105360
  id: "about-network-spotlight",
@@ -103974,7 +105375,7 @@ var BLOCK_REGISTRY = {
103974
105375
  category: "about",
103975
105376
  component: AboutNetworkSpotlight,
103976
105377
  props: "AboutNetworkSpotlightProps",
103977
- exampleUsage: `<AboutNetworkSpotlight />`.trim()
105378
+ ...ABOUT_BLOCK_CONTRACTS["about-network-spotlight"]
103978
105379
  },
103979
105380
  "about-location-info-hero": {
103980
105381
  id: "about-location-info-hero",
@@ -103995,7 +105396,7 @@ var BLOCK_REGISTRY = {
103995
105396
  category: "about",
103996
105397
  component: AboutLocationInfoHero,
103997
105398
  props: "AboutLocationInfoHeroProps",
103998
- exampleUsage: `<AboutLocationInfoHero />`.trim()
105399
+ ...ABOUT_BLOCK_CONTRACTS["about-location-info-hero"]
103999
105400
  },
104000
105401
  "media-hover-ctas": {
104001
105402
  id: "media-hover-ctas",
@@ -112031,17 +113432,27 @@ var BLOCK_REGISTRY = {
112031
113432
  heading="Compassionate care for your mental wellbeing"
112032
113433
  description="Our team of experienced mental health professionals is dedicated to providing compassionate care and support to individuals in need."
112033
113434
  smallImages={[
112034
- { src: "/images/team-1.jpg", alt: "Dr. Smith" },
112035
- { src: "/images/team-2.jpg", alt: "Dr. Johnson" },
113435
+ {
113436
+ src: "https://cdn.ing/assets/i/r/308196/g6bbn73f7gxal82uu49m9prfd0u8/workplace-in-cafe.webp",
113437
+ alt: "Dr. Smith",
113438
+ },
113439
+ {
113440
+ src: "https://cdn.ing/assets/i/r/308196/g6bbn73f7gxal82uu49m9prfd0u8/workplace-in-cafe.webp",
113441
+ alt: "Dr. Johnson",
113442
+ },
112036
113443
  ]}
112037
113444
  testimonial={{
112038
113445
  quote:
112039
113446
  "The support I received changed my life. I'm so grateful for the compassionate care.",
112040
113447
  author: "Sarah M.",
112041
113448
  role: "Client",
112042
- avatarSrc: "/images/avatar.jpg",
113449
+ avatarSrc:
113450
+ "https://cdn.ing/assets/i/r/308196/g6bbn73f7gxal82uu49m9prfd0u8/workplace-in-cafe.webp",
113451
+ }}
113452
+ featureImage={{
113453
+ src: "https://cdn.ing/assets/i/r/308196/g6bbn73f7gxal82uu49m9prfd0u8/workplace-in-cafe.webp",
113454
+ alt: "Mental health support",
112043
113455
  }}
112044
- featureImage={{ src: "/images/feature.jpg", alt: "Mental health support" }}
112045
113456
  actions={[
112046
113457
  { label: "Get Started", href: "#", variant: "default" },
112047
113458
  { label: "Talk to Sales", href: "#", variant: "outline" },
@@ -112049,7 +113460,7 @@ var BLOCK_REGISTRY = {
112049
113460
  background="gray"
112050
113461
  />
112051
113462
  `.trim(),
112052
- importantUsageNotes: "Only use if you have a valid testimonial - DO NOT MAKE UP A TESTIMONIAL/REVIEW. Supply exactly 2 images to the 'smallImages' prop and ensure you supply a 'featureImage' prop object. Do not exceed 40 characters for the 'heading' prop. Do not exceed 130 characters for the 'description' prop. If you supply multiple 'actions', ensure to use a variant of 'default' for the first action, and 'outline' for the second action to ensure proper visual distinction between the two CTAs. Follow the example props closely for this block.",
113463
+ importantUsageNotes: "Only use if you have a valid testimonial - DO NOT MAKE UP A TESTIMONIAL/REVIEW. Supply exactly 2 images to the 'smallImages' prop and ensure you supply a 'featureImage' prop object. Do not exceed 40 characters for the 'heading' prop. Do not exceed 130 characters for the 'description' prop. If you supply multiple 'actions', ensure to use a variant of 'default' for the first action, and 'outline' for the second action to ensure proper visual distinction between the two CTAs. All media src values must be absolute URLs to real CDN assets \u2014 never relative paths (e.g. '/images/...') or placeholder strings. Follow the example props closely for this block.",
112053
113464
  usageRequirements: {
112054
113465
  requiredProps: ["heading", "smallImages", "featureImage", "testimonial"],
112055
113466
  propConstraints: {
@@ -120089,15 +121500,7 @@ var BLOCK_REGISTRY = {
120089
121500
  category: "about",
120090
121501
  component: AboutSplitHero,
120091
121502
  props: "AboutSplitHeroProps",
120092
- exampleUsage: `
120093
- <AboutSplitHero
120094
- brandText="Business"
120095
- brandHighlight="PRO"
120096
- heading="Achieve More with Elite Access Pro"
120097
- description="Enhance your career hunt with increased visibility."
120098
- ctaText="Upgrade to premium"
120099
- ctaUrl="/upgrade"
120100
- />`.trim()
121503
+ ...ABOUT_BLOCK_CONTRACTS["about-split-hero"]
120101
121504
  },
120102
121505
  "about-mission-principles": {
120103
121506
  id: "about-mission-principles",
@@ -120117,15 +121520,7 @@ var BLOCK_REGISTRY = {
120117
121520
  category: "about",
120118
121521
  component: AboutMissionPrinciples,
120119
121522
  props: "AboutMissionPrinciplesProps",
120120
- exampleUsage: `
120121
- <AboutMissionPrinciples
120122
- badgeText="Our Mission"
120123
- missionHeading="To empower people through technology"
120124
- missionDescription="We believe technology should serve humanity."
120125
- principles={[
120126
- { number: "01", title: "Customer-Centric", description: "..." },
120127
- ]}
120128
- />`.trim()
121523
+ ...ABOUT_BLOCK_CONTRACTS["about-mission-principles"]
120129
121524
  },
120130
121525
  "about-expandable-values": {
120131
121526
  id: "about-expandable-values",
@@ -120145,21 +121540,7 @@ var BLOCK_REGISTRY = {
120145
121540
  category: "about",
120146
121541
  component: AboutExpandableValues,
120147
121542
  props: "AboutExpandableValuesProps",
120148
- exampleUsage: `
120149
- <AboutExpandableValues
120150
- badgeText="Our Core Values"
120151
- heading="The Principles That Guide Us"
120152
- values={[
120153
- {
120154
- id: "integrity",
120155
- icon: "lucide/shield",
120156
- title: "Integrity",
120157
- shortDescription: "Doing what's right.",
120158
- longDescription: "We believe in honesty...",
120159
- examples: ["Transparent pricing", "Honest communication"],
120160
- },
120161
- ]}
120162
- />`.trim()
121543
+ ...ABOUT_BLOCK_CONTRACTS["about-expandable-values"]
120163
121544
  },
120164
121545
  "community-initiatives": {
120165
121546
  id: "community-initiatives",
@@ -120178,19 +121559,7 @@ var BLOCK_REGISTRY = {
120178
121559
  category: "about",
120179
121560
  component: CommunityInitiatives,
120180
121561
  props: "CommunityInitiativesProps",
120181
- exampleUsage: `
120182
- <CommunityInitiatives
120183
- badgeText="Food Drive"
120184
- heading="Supporting Our Community"
120185
- categories={[
120186
- {
120187
- id: "food-drive",
120188
- title: "Food Drive",
120189
- description: "Supporting our community through food donations.",
120190
- initiatives: [...]
120191
- },
120192
- ]}
120193
- />`.trim()
121562
+ ...ABOUT_BLOCK_CONTRACTS["community-initiatives"]
120194
121563
  },
120195
121564
  "about-culture-tabs": {
120196
121565
  id: "about-culture-tabs",
@@ -120210,20 +121579,7 @@ var BLOCK_REGISTRY = {
120210
121579
  category: "about",
120211
121580
  component: AboutCultureTabs,
120212
121581
  props: "AboutCultureTabsProps",
120213
- exampleUsage: `
120214
- <AboutCultureTabs
120215
- badgeText="Our Culture"
120216
- heading="What Makes Us Different"
120217
- aspects={[
120218
- {
120219
- id: "innovation",
120220
- title: "Innovation First",
120221
- description: "We believe in challenging the status quo.",
120222
- images: [...],
120223
- testimonial: { quote: "...", author: "...", role: "...", avatar: "..." },
120224
- },
120225
- ]}
120226
- />`.trim()
121582
+ ...ABOUT_BLOCK_CONTRACTS["about-culture-tabs"]
120227
121583
  },
120228
121584
  // New Feature components
120229
121585
  "feature-animated-carousel": {