@opensite/ui 3.4.9 → 3.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (139) hide show
  1. package/dist/components.cjs +13 -7
  2. package/dist/components.js +13 -7
  3. package/dist/footer-accordion-social.cjs +1 -1
  4. package/dist/footer-accordion-social.js +1 -1
  5. package/dist/footer-animated-social.cjs +1 -1
  6. package/dist/footer-animated-social.js +1 -1
  7. package/dist/footer-background-card.cjs +1 -1
  8. package/dist/footer-background-card.js +1 -1
  9. package/dist/footer-brand-description.cjs +1 -0
  10. package/dist/footer-brand-description.js +1 -0
  11. package/dist/footer-brand-links-contact.cjs +1 -1
  12. package/dist/footer-brand-links-contact.js +1 -1
  13. package/dist/footer-comprehensive-links.cjs +1 -1
  14. package/dist/footer-comprehensive-links.js +1 -1
  15. package/dist/footer-contact-card.cjs +1 -1
  16. package/dist/footer-contact-card.js +1 -1
  17. package/dist/footer-cta-banner.cjs +1 -1
  18. package/dist/footer-cta-banner.js +1 -1
  19. package/dist/footer-cta-social.cjs +1 -1
  20. package/dist/footer-cta-social.js +1 -1
  21. package/dist/footer-info-cards-accordion.cjs +1 -1
  22. package/dist/footer-info-cards-accordion.js +1 -1
  23. package/dist/footer-links-grid.cjs +1 -0
  24. package/dist/footer-links-grid.js +1 -0
  25. package/dist/footer-nav-social.cjs +1 -0
  26. package/dist/footer-nav-social.js +1 -0
  27. package/dist/footer-newsletter-contact.cjs +1 -1
  28. package/dist/footer-newsletter-contact.js +1 -1
  29. package/dist/footer-newsletter-grid.cjs +1 -0
  30. package/dist/footer-newsletter-grid.js +1 -0
  31. package/dist/footer-newsletter-minimal.cjs +1 -1
  32. package/dist/footer-newsletter-minimal.js +1 -1
  33. package/dist/footer-simple-centered.cjs +1 -1
  34. package/dist/footer-simple-centered.js +1 -1
  35. package/dist/footer-social-apps.cjs +1 -0
  36. package/dist/footer-social-apps.js +1 -0
  37. package/dist/footer-social-newsletter.cjs +1 -0
  38. package/dist/footer-social-newsletter.js +1 -0
  39. package/dist/footer-split-image-accordion.cjs +1 -1
  40. package/dist/footer-split-image-accordion.js +1 -1
  41. package/dist/hero-stats-social-proof.cjs +35 -5
  42. package/dist/hero-stats-social-proof.d.cts +1 -1
  43. package/dist/hero-stats-social-proof.d.ts +1 -1
  44. package/dist/hero-stats-social-proof.js +19 -4
  45. package/dist/hero-tech-carousel.cjs +489 -292
  46. package/dist/hero-tech-carousel.d.cts +137 -32
  47. package/dist/hero-tech-carousel.d.ts +137 -32
  48. package/dist/hero-tech-carousel.js +490 -289
  49. package/dist/index.cjs +13 -7
  50. package/dist/index.js +13 -7
  51. package/dist/navbar-animated-preview.cjs +1 -0
  52. package/dist/navbar-animated-preview.d.cts +15 -1
  53. package/dist/navbar-animated-preview.d.ts +15 -1
  54. package/dist/navbar-animated-preview.js +1 -0
  55. package/dist/navbar-centered-menu.cjs +1 -1
  56. package/dist/navbar-centered-menu.d.cts +15 -1
  57. package/dist/navbar-centered-menu.d.ts +15 -1
  58. package/dist/navbar-centered-menu.js +1 -1
  59. package/dist/navbar-dark-icons.cjs +1 -1
  60. package/dist/navbar-dark-icons.d.cts +15 -1
  61. package/dist/navbar-dark-icons.d.ts +15 -1
  62. package/dist/navbar-dark-icons.js +1 -1
  63. package/dist/navbar-dropdown-menu.cjs +1 -1
  64. package/dist/navbar-dropdown-menu.d.cts +15 -1
  65. package/dist/navbar-dropdown-menu.d.ts +15 -1
  66. package/dist/navbar-dropdown-menu.js +1 -1
  67. package/dist/navbar-education-platform.cjs +1 -0
  68. package/dist/navbar-education-platform.d.cts +15 -1
  69. package/dist/navbar-education-platform.d.ts +15 -1
  70. package/dist/navbar-education-platform.js +1 -0
  71. package/dist/navbar-enterprise-mega.cjs +2 -1
  72. package/dist/navbar-enterprise-mega.d.cts +15 -1
  73. package/dist/navbar-enterprise-mega.d.ts +15 -1
  74. package/dist/navbar-enterprise-mega.js +2 -1
  75. package/dist/navbar-feature-grid.cjs +1 -1
  76. package/dist/navbar-feature-grid.d.cts +19 -1
  77. package/dist/navbar-feature-grid.d.ts +19 -1
  78. package/dist/navbar-feature-grid.js +1 -1
  79. package/dist/navbar-floating-pill.cjs +1 -1
  80. package/dist/navbar-floating-pill.d.cts +15 -1
  81. package/dist/navbar-floating-pill.d.ts +15 -1
  82. package/dist/navbar-floating-pill.js +1 -1
  83. package/dist/navbar-fullscreen-menu.cjs +1 -0
  84. package/dist/navbar-fullscreen-menu.d.cts +15 -1
  85. package/dist/navbar-fullscreen-menu.d.ts +15 -1
  86. package/dist/navbar-fullscreen-menu.js +1 -0
  87. package/dist/navbar-icon-links.cjs +1 -1
  88. package/dist/navbar-icon-links.d.cts +15 -1
  89. package/dist/navbar-icon-links.d.ts +15 -1
  90. package/dist/navbar-icon-links.js +1 -1
  91. package/dist/navbar-image-preview.cjs +1 -1
  92. package/dist/navbar-image-preview.d.cts +15 -1
  93. package/dist/navbar-image-preview.d.ts +15 -1
  94. package/dist/navbar-image-preview.js +1 -1
  95. package/dist/navbar-mega-menu.cjs +1 -1
  96. package/dist/navbar-mega-menu.d.cts +15 -1
  97. package/dist/navbar-mega-menu.d.ts +15 -1
  98. package/dist/navbar-mega-menu.js +1 -1
  99. package/dist/navbar-multi-column-groups.cjs +1 -0
  100. package/dist/navbar-multi-column-groups.d.cts +15 -1
  101. package/dist/navbar-multi-column-groups.d.ts +15 -1
  102. package/dist/navbar-multi-column-groups.js +1 -0
  103. package/dist/navbar-platform-resources.cjs +59 -26
  104. package/dist/navbar-platform-resources.d.cts +16 -2
  105. package/dist/navbar-platform-resources.d.ts +16 -2
  106. package/dist/navbar-platform-resources.js +59 -26
  107. package/dist/navbar-search-focused.cjs +1 -0
  108. package/dist/navbar-search-focused.d.cts +19 -1
  109. package/dist/navbar-search-focused.d.ts +19 -1
  110. package/dist/navbar-search-focused.js +1 -0
  111. package/dist/navbar-sidebar-mobile.cjs +1 -0
  112. package/dist/navbar-sidebar-mobile.d.cts +15 -1
  113. package/dist/navbar-sidebar-mobile.d.ts +15 -1
  114. package/dist/navbar-sidebar-mobile.js +1 -0
  115. package/dist/navbar-simple-links.cjs +1 -0
  116. package/dist/navbar-simple-links.d.cts +19 -1
  117. package/dist/navbar-simple-links.d.ts +19 -1
  118. package/dist/navbar-simple-links.js +1 -0
  119. package/dist/navbar-split-cta.cjs +1 -1
  120. package/dist/navbar-split-cta.d.cts +15 -1
  121. package/dist/navbar-split-cta.d.ts +15 -1
  122. package/dist/navbar-split-cta.js +1 -1
  123. package/dist/navbar-sticky-compact.cjs +1 -0
  124. package/dist/navbar-sticky-compact.d.cts +15 -1
  125. package/dist/navbar-sticky-compact.d.ts +15 -1
  126. package/dist/navbar-sticky-compact.js +1 -0
  127. package/dist/navbar-tabbed-sections.cjs +1 -1
  128. package/dist/navbar-tabbed-sections.d.cts +15 -1
  129. package/dist/navbar-tabbed-sections.d.ts +15 -1
  130. package/dist/navbar-tabbed-sections.js +1 -1
  131. package/dist/navbar-transparent-overlay.cjs +1 -0
  132. package/dist/navbar-transparent-overlay.d.cts +15 -1
  133. package/dist/navbar-transparent-overlay.d.ts +15 -1
  134. package/dist/navbar-transparent-overlay.js +1 -0
  135. package/dist/registry.cjs +380 -223
  136. package/dist/registry.js +380 -223
  137. package/dist/social-link-icon.d.cts +1 -1
  138. package/dist/social-link-icon.d.ts +1 -1
  139. package/package.json +1 -1
package/dist/registry.cjs CHANGED
@@ -4229,6 +4229,7 @@ function FooterLinksGrid({
4229
4229
  return /* @__PURE__ */ jsxRuntime.jsx(
4230
4230
  Section,
4231
4231
  {
4232
+ id: "footer-links-grid",
4232
4233
  background,
4233
4234
  spacing,
4234
4235
  pattern,
@@ -4347,6 +4348,7 @@ function FooterSocialNewsletter({
4347
4348
  return /* @__PURE__ */ jsxRuntime.jsx(
4348
4349
  Section,
4349
4350
  {
4351
+ id: "footer-social-newsletter",
4350
4352
  background,
4351
4353
  spacing,
4352
4354
  pattern,
@@ -4504,6 +4506,7 @@ function FooterSocialApps({
4504
4506
  return /* @__PURE__ */ jsxRuntime.jsx(
4505
4507
  Section,
4506
4508
  {
4509
+ id: "footer-social-apps",
4507
4510
  background,
4508
4511
  spacing,
4509
4512
  pattern,
@@ -4619,7 +4622,7 @@ function FooterSimpleCentered({
4619
4622
  return /* @__PURE__ */ jsxRuntime.jsx(
4620
4623
  Section,
4621
4624
  {
4622
- id: sectionId,
4625
+ id: "footer-simple-centered",
4623
4626
  background,
4624
4627
  spacing,
4625
4628
  pattern,
@@ -4749,6 +4752,7 @@ function FooterBrandDescription({
4749
4752
  return /* @__PURE__ */ jsxRuntime.jsx(
4750
4753
  Section,
4751
4754
  {
4755
+ id: "footer-brand-description",
4752
4756
  background,
4753
4757
  spacing,
4754
4758
  pattern,
@@ -4960,6 +4964,7 @@ function FooterNewsletterGrid({
4960
4964
  return /* @__PURE__ */ jsxRuntime.jsx(
4961
4965
  Section,
4962
4966
  {
4967
+ id: "footer-newsletter-grid",
4963
4968
  background,
4964
4969
  spacing,
4965
4970
  pattern,
@@ -5076,7 +5081,7 @@ function FooterCtaBanner({
5076
5081
  return /* @__PURE__ */ jsxRuntime.jsx(
5077
5082
  Section,
5078
5083
  {
5079
- id: sectionId,
5084
+ id: "footer-cta-banner",
5080
5085
  background,
5081
5086
  spacing,
5082
5087
  pattern,
@@ -5297,7 +5302,7 @@ function FooterContactCard({
5297
5302
  return /* @__PURE__ */ jsxRuntime.jsx(
5298
5303
  Section,
5299
5304
  {
5300
- id: sectionId,
5305
+ id: "footer-contact-card",
5301
5306
  background,
5302
5307
  spacing,
5303
5308
  pattern,
@@ -5482,7 +5487,7 @@ function FooterBackgroundCard({
5482
5487
  return /* @__PURE__ */ jsxRuntime.jsx(
5483
5488
  Section,
5484
5489
  {
5485
- id: sectionId,
5490
+ id: "footer-background-card",
5486
5491
  background,
5487
5492
  spacing,
5488
5493
  pattern,
@@ -5782,7 +5787,7 @@ function FooterAnimatedSocial({
5782
5787
  return /* @__PURE__ */ jsxRuntime.jsx(
5783
5788
  Section,
5784
5789
  {
5785
- id: sectionId,
5790
+ id: "footer-animated-social",
5786
5791
  background,
5787
5792
  spacing,
5788
5793
  pattern,
@@ -6050,7 +6055,7 @@ function FooterNewsletterMinimal({
6050
6055
  return /* @__PURE__ */ jsxRuntime.jsx(
6051
6056
  Section,
6052
6057
  {
6053
- id: sectionId,
6058
+ id: "footer-newsletter-minimal",
6054
6059
  background,
6055
6060
  spacing,
6056
6061
  pattern,
@@ -6267,7 +6272,7 @@ function FooterCtaSocial({
6267
6272
  return /* @__PURE__ */ jsxRuntime.jsx(
6268
6273
  Section,
6269
6274
  {
6270
- id: sectionId,
6275
+ id: "footer-cta-social",
6271
6276
  background,
6272
6277
  spacing,
6273
6278
  pattern,
@@ -6402,6 +6407,7 @@ function FooterNavSocial({
6402
6407
  return /* @__PURE__ */ jsxRuntime.jsx(
6403
6408
  Section,
6404
6409
  {
6410
+ id: "footer-nav-social",
6405
6411
  background,
6406
6412
  spacing,
6407
6413
  pattern,
@@ -27732,7 +27738,7 @@ function FooterBrandLinksContact({
27732
27738
  return /* @__PURE__ */ jsxRuntime.jsxs(
27733
27739
  Section,
27734
27740
  {
27735
- id: sectionId,
27741
+ id: "footer-brand-links-contact",
27736
27742
  background,
27737
27743
  spacing,
27738
27744
  pattern,
@@ -27877,7 +27883,7 @@ function FooterComprehensiveLinks({
27877
27883
  return /* @__PURE__ */ jsxRuntime.jsxs(
27878
27884
  Section,
27879
27885
  {
27880
- id: sectionId,
27886
+ id: "footer-comprehensive-links",
27881
27887
  background,
27882
27888
  spacing,
27883
27889
  pattern,
@@ -42882,7 +42888,7 @@ function FooterNewsletterContact({
42882
42888
  return /* @__PURE__ */ jsxRuntime.jsx(
42883
42889
  Section,
42884
42890
  {
42885
- id: sectionId,
42891
+ id: "footer-newsletter-contact",
42886
42892
  background,
42887
42893
  spacing,
42888
42894
  pattern,
@@ -43029,7 +43035,7 @@ function FooterSplitImageAccordion({
43029
43035
  return /* @__PURE__ */ jsxRuntime.jsx(
43030
43036
  Section,
43031
43037
  {
43032
- id: sectionId,
43038
+ id: "footer-split-image-accordion",
43033
43039
  background,
43034
43040
  spacing,
43035
43041
  pattern,
@@ -43287,7 +43293,7 @@ function FooterAccordionSocial({
43287
43293
  return /* @__PURE__ */ jsxRuntime.jsx(
43288
43294
  Section,
43289
43295
  {
43290
- id: sectionId,
43296
+ id: "footer-accordion-social",
43291
43297
  background,
43292
43298
  spacing,
43293
43299
  pattern,
@@ -43409,7 +43415,7 @@ function FooterInfoCardsAccordion({
43409
43415
  return /* @__PURE__ */ jsxRuntime.jsx(
43410
43416
  Section,
43411
43417
  {
43412
- id: sectionId,
43418
+ id: "footer-info-cards-accordion",
43413
43419
  background,
43414
43420
  spacing,
43415
43421
  pattern,
@@ -51232,105 +51238,219 @@ function HeroAnnouncementBadge({
51232
51238
  }
51233
51239
  );
51234
51240
  }
51241
+ var HERO_TECH_CAROUSEL_MAX_ITEMS = 4;
51242
+ function resolveLogoSrc(logo) {
51243
+ if (typeof logo.src === "string") return logo.src;
51244
+ return logo.src?.light;
51245
+ }
51246
+ function HeroPanel({
51247
+ item,
51248
+ defaultAutoplayIntervalMs,
51249
+ optixFlowConfig,
51250
+ panelContentClassName
51251
+ }) {
51252
+ const {
51253
+ logo,
51254
+ logoSlot,
51255
+ title,
51256
+ content,
51257
+ actions,
51258
+ backgroundMedia,
51259
+ backgroundAutoplayIntervalMs,
51260
+ id,
51261
+ className,
51262
+ contentClassName,
51263
+ logoClassName,
51264
+ titleClassName,
51265
+ textClassName,
51266
+ actionsClassName,
51267
+ overlayClassName,
51268
+ optixFlowConfig: itemOptixFlowConfig
51269
+ } = item;
51270
+ const resolvedOptixFlow = itemOptixFlowConfig ?? optixFlowConfig;
51271
+ const renderBackground = React30.useMemo(() => {
51272
+ if (!backgroundMedia || backgroundMedia.length === 0) return null;
51273
+ if (backgroundMedia.length === 1) {
51274
+ const image = backgroundMedia[0];
51275
+ if (!image?.src) return null;
51276
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "absolute inset-0 z-0", children: [
51277
+ /* @__PURE__ */ jsxRuntime.jsx(
51278
+ img.Img,
51279
+ {
51280
+ src: image.src,
51281
+ alt: image.alt ?? "",
51282
+ className: cn(
51283
+ "h-full w-full object-cover object-center",
51284
+ image.className
51285
+ ),
51286
+ optixFlowConfig: image.optixFlowConfig ?? resolvedOptixFlow,
51287
+ loading: "eager"
51288
+ }
51289
+ ),
51290
+ /* @__PURE__ */ jsxRuntime.jsx(
51291
+ "div",
51292
+ {
51293
+ className: cn(
51294
+ "absolute inset-0 bg-linear-to-b from-black/55 via-black/45 to-black/65",
51295
+ overlayClassName
51296
+ )
51297
+ }
51298
+ )
51299
+ ] });
51300
+ }
51301
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "absolute inset-0 z-0", children: [
51302
+ /* @__PURE__ */ jsxRuntime.jsx(
51303
+ ImageSlider,
51304
+ {
51305
+ images: backgroundMedia,
51306
+ className: "h-full w-full rounded-none border-0 shadow-none",
51307
+ imageClassName: "object-cover object-center",
51308
+ transition: "fade",
51309
+ autoplay: true,
51310
+ autoplayIntervalMs: backgroundAutoplayIntervalMs ?? defaultAutoplayIntervalMs,
51311
+ enableKeyboard: false,
51312
+ overlay: false,
51313
+ optixFlowConfig: resolvedOptixFlow
51314
+ }
51315
+ ),
51316
+ /* @__PURE__ */ jsxRuntime.jsx(
51317
+ "div",
51318
+ {
51319
+ className: cn(
51320
+ "absolute inset-0 bg-linear-to-b from-black/55 via-black/45 to-black/65",
51321
+ overlayClassName
51322
+ )
51323
+ }
51324
+ )
51325
+ ] });
51326
+ }, [
51327
+ backgroundMedia,
51328
+ backgroundAutoplayIntervalMs,
51329
+ defaultAutoplayIntervalMs,
51330
+ resolvedOptixFlow,
51331
+ overlayClassName
51332
+ ]);
51333
+ const hasBackground = !!backgroundMedia && backgroundMedia.length > 0;
51334
+ const renderLogo = React30.useMemo(() => {
51335
+ if (logoSlot) return logoSlot;
51336
+ if (!logo) return null;
51337
+ const src = resolveLogoSrc(logo);
51338
+ if (!src) return null;
51339
+ return /* @__PURE__ */ jsxRuntime.jsx(
51340
+ img.Img,
51341
+ {
51342
+ src,
51343
+ alt: logo.alt,
51344
+ className: cn(
51345
+ "h-10 md:h-12 lg:h-14 w-auto max-w-[70%] object-contain",
51346
+ logo.imgClassName,
51347
+ logoClassName
51348
+ ),
51349
+ optixFlowConfig: resolvedOptixFlow
51350
+ }
51351
+ );
51352
+ }, [logoSlot, logo, logoClassName, resolvedOptixFlow]);
51353
+ const renderTitle = React30.useMemo(() => {
51354
+ if (title === void 0 || title === null || title === "") return null;
51355
+ if (typeof title === "string") {
51356
+ return /* @__PURE__ */ jsxRuntime.jsx(
51357
+ "h2",
51358
+ {
51359
+ className: cn(
51360
+ "text-3xl md:text-4xl lg:text-5xl font-semibold text-balance",
51361
+ hasBackground && "text-white text-shadow-lg",
51362
+ titleClassName
51363
+ ),
51364
+ children: title
51365
+ }
51366
+ );
51367
+ }
51368
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: titleClassName, children: title });
51369
+ }, [title, titleClassName, hasBackground]);
51370
+ const renderContent = React30.useMemo(() => {
51371
+ if (content === void 0 || content === null || content === "") return null;
51372
+ if (typeof content === "string") {
51373
+ return /* @__PURE__ */ jsxRuntime.jsx(
51374
+ "p",
51375
+ {
51376
+ className: cn(
51377
+ "text-base md:text-lg leading-relaxed text-balance",
51378
+ hasBackground ? "text-white/90 text-shadow" : "text-muted-foreground",
51379
+ textClassName
51380
+ ),
51381
+ children: content
51382
+ }
51383
+ );
51384
+ }
51385
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: textClassName, children: content });
51386
+ }, [content, textClassName, hasBackground]);
51387
+ return /* @__PURE__ */ jsxRuntime.jsxs(
51388
+ "div",
51389
+ {
51390
+ id,
51391
+ "data-slot": "hero-tech-carousel-panel",
51392
+ className: cn(
51393
+ // Mobile: stack vertically with content-fit height + padding.
51394
+ "relative w-full overflow-hidden",
51395
+ // Desktop: flex children share the row equally and fill height.
51396
+ "md:h-full md:flex-1 md:basis-0 md:min-w-0",
51397
+ // Provide a default panel background when no media is supplied so
51398
+ // separators between panels remain visible.
51399
+ !hasBackground && "bg-muted/30",
51400
+ className
51401
+ ),
51402
+ children: [
51403
+ renderBackground,
51404
+ /* @__PURE__ */ jsxRuntime.jsxs(
51405
+ "div",
51406
+ {
51407
+ className: cn(
51408
+ "relative z-10 flex h-full w-full flex-col items-center justify-center gap-4 md:gap-6",
51409
+ // Mobile padding keeps content readable when stacked.
51410
+ "px-6 py-12 md:px-8 md:py-12 lg:px-10",
51411
+ // Center content vertically; on desktop columns can be quite tall.
51412
+ "text-center",
51413
+ panelContentClassName,
51414
+ contentClassName
51415
+ ),
51416
+ children: [
51417
+ renderLogo,
51418
+ renderTitle,
51419
+ renderContent,
51420
+ /* @__PURE__ */ jsxRuntime.jsx(
51421
+ BlockActions,
51422
+ {
51423
+ actions,
51424
+ actionsClassName,
51425
+ verticalSpacing: "mt-2 md:mt-4",
51426
+ mobileConfig: { width: "fit", position: "center" }
51427
+ }
51428
+ )
51429
+ ]
51430
+ }
51431
+ )
51432
+ ]
51433
+ }
51434
+ );
51435
+ }
51235
51436
  function HeroTechCarousel({
51236
51437
  sectionId = "hero-tech-carousel",
51237
- heading,
51238
- description,
51239
- technologies,
51240
- carouselSlot,
51241
- autoplayDelay = 5e3,
51438
+ items,
51439
+ backgroundAutoplayIntervalMs = 5e3,
51242
51440
  background,
51441
+ spacing = "none",
51243
51442
  pattern,
51244
51443
  patternOpacity,
51245
51444
  className,
51246
- containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
51247
- spacing = "py-32",
51248
- headingClassName,
51249
- descriptionClassName,
51445
+ containerClassName = "px-0 sm:px-0 lg:px-0 max-w-full relative z-10 h-auto md:h-dvh w-screen flex items-stretch",
51446
+ panelsClassName,
51447
+ panelContentClassName,
51250
51448
  optixFlowConfig
51251
51449
  }) {
51252
- const plugin = React30.useRef(
51253
- Autoplay__default.default({ delay: autoplayDelay, stopOnInteraction: false })
51254
- );
51255
- const [api, setApi] = React30.useState();
51256
- const [current, setCurrent] = React30.useState(0);
51257
- const [fadeIn, setFadeIn] = React30.useState(true);
51258
- React30.useEffect(() => {
51259
- if (!api) return;
51260
- setCurrent(api.selectedScrollSnap());
51261
- const updateCurrent = () => {
51262
- setFadeIn(false);
51263
- setTimeout(() => {
51264
- setCurrent(api.selectedScrollSnap());
51265
- setFadeIn(true);
51266
- }, 200);
51267
- };
51268
- api.on("select", updateCurrent);
51269
- api.on("settle", updateCurrent);
51270
- return () => {
51271
- api.off("select", updateCurrent);
51272
- api.off("settle", updateCurrent);
51273
- };
51274
- }, [api]);
51275
- const selectTechnology = (index) => {
51276
- if (api) {
51277
- api.scrollTo(index);
51278
- }
51279
- };
51280
- const renderCarousel = React30.useMemo(() => {
51281
- if (carouselSlot) return carouselSlot;
51282
- if (!technologies || technologies.length === 0) return null;
51283
- return /* @__PURE__ */ jsxRuntime.jsx(
51284
- Carousel,
51285
- {
51286
- setApi,
51287
- plugins: [plugin.current],
51288
- opts: {
51289
- loop: true
51290
- },
51291
- className: "relative mx-auto w-full max-w-3xl before:absolute before:top-0 before:bottom-0 before:left-0 before:z-10 before:w-36 before:bg-linear-to-r before:from-background before:to-transparent after:absolute after:top-0 after:right-0 after:bottom-0 after:z-10 after:w-36 after:bg-linear-to-l after:from-background after:to-transparent",
51292
- onMouseEnter: plugin.current.stop,
51293
- onMouseLeave: plugin.current.reset,
51294
- children: /* @__PURE__ */ jsxRuntime.jsx(CarouselContent, { children: technologies.map((technology, idx) => /* @__PURE__ */ jsxRuntime.jsx(
51295
- CarouselItem,
51296
- {
51297
- className: "basis-1/3 select-none sm:basis-1/4 md:basis-1/6",
51298
- children: /* @__PURE__ */ jsxRuntime.jsxs(
51299
- "div",
51300
- {
51301
- className: cn(
51302
- "flex cursor-pointer items-center justify-center gap-2 rounded-md border px-4 py-2",
51303
- idx === current ? "border-input" : "border-transparent"
51304
- ),
51305
- onClick: () => selectTechnology(idx),
51306
- children: [
51307
- technology.logo && /* @__PURE__ */ jsxRuntime.jsx(
51308
- img.Img,
51309
- {
51310
- className: "h-4 shrink-0 md:h-7",
51311
- src: technology.logo,
51312
- alt: technology.name,
51313
- optixFlowConfig
51314
- }
51315
- ),
51316
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-nowrap", children: technology.name })
51317
- ]
51318
- }
51319
- )
51320
- },
51321
- idx
51322
- )) })
51323
- }
51324
- );
51325
- }, [
51326
- carouselSlot,
51327
- technologies,
51328
- setApi,
51329
- plugin,
51330
- current,
51331
- selectTechnology,
51332
- optixFlowConfig
51333
- ]);
51450
+ const visibleItems = React30.useMemo(() => {
51451
+ if (!items || items.length === 0) return [];
51452
+ return items.slice(0, HERO_TECH_CAROUSEL_MAX_ITEMS);
51453
+ }, [items]);
51334
51454
  return /* @__PURE__ */ jsxRuntime.jsx(
51335
51455
  Section,
51336
51456
  {
@@ -51339,80 +51459,37 @@ function HeroTechCarousel({
51339
51459
  spacing,
51340
51460
  pattern,
51341
51461
  patternOpacity,
51342
- className,
51462
+ className: cn(
51463
+ "relative w-screen overflow-hidden",
51464
+ // Desktop fills the viewport; on mobile content drives the height.
51465
+ "h-auto md:h-dvh",
51466
+ "px-0 pt-0 pb-0",
51467
+ className
51468
+ ),
51343
51469
  containerClassName,
51344
- children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
51345
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col justify-center", children: [
51346
- heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
51347
- "h1",
51348
- {
51349
- className: cn(
51350
- "mx-auto mb-4 max-w-2xl text-center text-4xl font-bold md:text-6xl text-balance",
51351
- headingClassName
51352
- ),
51353
- children: heading
51354
- }
51355
- ) : /* @__PURE__ */ jsxRuntime.jsx(
51356
- "h1",
51357
- {
51358
- className: cn(
51359
- "mx-auto mb-4 max-w-2xl text-center text-4xl font-bold md:text-6xl text-balance",
51360
- headingClassName
51361
- ),
51362
- children: heading
51363
- }
51364
- )),
51365
- description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
51366
- "p",
51367
- {
51368
- className: cn(
51369
- "mx-auto mt-4 max-w-xl text-center text-lg text-balance",
51370
- descriptionClassName
51371
- ),
51372
- children: description
51373
- }
51374
- ) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description })),
51375
- technologies && technologies.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(
51376
- "div",
51470
+ children: visibleItems.length === 0 ? null : /* @__PURE__ */ jsxRuntime.jsx(
51471
+ "div",
51472
+ {
51473
+ "data-slot": "hero-tech-carousel-panels",
51474
+ className: cn(
51475
+ // Mobile: vertical stack with auto height per panel.
51476
+ "flex w-full flex-col",
51477
+ // Desktop: equal-width row that fills section height.
51478
+ "md:h-full md:flex-row md:items-stretch",
51479
+ panelsClassName
51480
+ ),
51481
+ children: visibleItems.map((item, idx) => /* @__PURE__ */ jsxRuntime.jsx(
51482
+ HeroPanel,
51377
51483
  {
51378
- className: cn(
51379
- "mx-auto bg-muted mt-8 mb-12 flex h-[60px] w-fit items-center gap-2 rounded-md px-4 py-2 text-center"
51380
- ),
51381
- children: /* @__PURE__ */ jsxRuntime.jsxs(
51382
- "div",
51383
- {
51384
- className: cn(
51385
- "flex items-center gap-2 transition-opacity duration-300",
51386
- fadeIn ? "opacity-100" : "opacity-0"
51387
- ),
51388
- children: [
51389
- technologies && current && technologies[current] && technologies[current].logo ? /* @__PURE__ */ jsxRuntime.jsx(
51390
- img.Img,
51391
- {
51392
- src: technologies[current]?.logo,
51393
- alt: technologies[current]?.name,
51394
- className: "h-4 md:h-7",
51395
- optixFlowConfig
51396
- }
51397
- ) : null,
51398
- /* @__PURE__ */ jsxRuntime.jsx(
51399
- "p",
51400
- {
51401
- className: cn(
51402
- "px-2 font-mono text-sm",
51403
- technologies && technologies[current] && technologies[current].logo ? "border-l" : ""
51404
- ),
51405
- children: technologies[current]?.command
51406
- }
51407
- )
51408
- ]
51409
- }
51410
- )
51411
- }
51412
- )
51413
- ] }),
51414
- renderCarousel
51415
- ] })
51484
+ item,
51485
+ defaultAutoplayIntervalMs: backgroundAutoplayIntervalMs,
51486
+ optixFlowConfig,
51487
+ panelContentClassName
51488
+ },
51489
+ item.id ?? idx
51490
+ ))
51491
+ }
51492
+ )
51416
51493
  }
51417
51494
  );
51418
51495
  }
@@ -56433,7 +56510,7 @@ function HeroStatsSocialProof({
56433
56510
  "pr-4 md:pr-6 shadow-2xl bg-card text-card-foreground"
56434
56511
  ),
56435
56512
  children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
56436
- statusCard.icon && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex shrink-0 h-12 w-12 items-center justify-center rounded-full bg-primary text-primary-foreground shadow-lg", children: statusCard.icon }),
56513
+ statusCard.icon ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex shrink-0 h-12 w-12 items-center justify-center rounded-full bg-primary text-primary-foreground shadow-lg", children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: statusCard.icon }) }) : null,
56437
56514
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-balance", children: [
56438
56515
  statusCard.title && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "font-semibold text-sm md:text-md leading-snug", children: statusCard.title }),
56439
56516
  statusCard.subtitle && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm leading-snug tracking-tight", children: statusCard.subtitle })
@@ -63207,7 +63284,7 @@ var NavbarDropdownMenu = ({
63207
63284
  return /* @__PURE__ */ jsxRuntime.jsx(
63208
63285
  Section,
63209
63286
  {
63210
- id: sectionId,
63287
+ id: "navbar-dropdown-menu",
63211
63288
  background,
63212
63289
  spacing: spacingOverride ?? spacing,
63213
63290
  className: sectionClasses,
@@ -63435,7 +63512,7 @@ var NavbarCenteredMenu = ({
63435
63512
  return /* @__PURE__ */ jsxRuntime.jsx(
63436
63513
  Section,
63437
63514
  {
63438
- id: sectionId,
63515
+ id: "navbar-centered-menu",
63439
63516
  background,
63440
63517
  spacing: spacingOverride ?? spacing,
63441
63518
  className: sectionClasses,
@@ -63812,7 +63889,7 @@ var NavbarMegaMenu = ({
63812
63889
  return /* @__PURE__ */ jsxRuntime.jsx(
63813
63890
  Section,
63814
63891
  {
63815
- id: sectionId,
63892
+ id: "navbar-mega-menu",
63816
63893
  background,
63817
63894
  spacing: spacingOverride ?? spacing,
63818
63895
  className: sectionClasses,
@@ -64489,7 +64566,7 @@ var NavbarEnterpriseMega = ({
64489
64566
  actions,
64490
64567
  actionsSlot,
64491
64568
  layoutVariant = "fullScreenContainerizedLinks",
64492
- background,
64569
+ background = "white",
64493
64570
  spacing,
64494
64571
  pattern,
64495
64572
  patternOpacity,
@@ -64544,6 +64621,7 @@ var NavbarEnterpriseMega = ({
64544
64621
  /* @__PURE__ */ jsxRuntime.jsx(
64545
64622
  Section,
64546
64623
  {
64624
+ id: "navbar-enterprise-mega",
64547
64625
  background,
64548
64626
  spacing: spacingOverride ?? spacing,
64549
64627
  className: cn(
@@ -64910,7 +64988,7 @@ var NavbarFeatureGrid = ({
64910
64988
  return /* @__PURE__ */ jsxRuntime.jsx(
64911
64989
  Section,
64912
64990
  {
64913
- id: sectionId,
64991
+ id: "navbar-feature-grid",
64914
64992
  background,
64915
64993
  spacing: spacingOverride ?? spacing,
64916
64994
  className: sectionClasses,
@@ -65101,7 +65179,7 @@ var NavbarFloatingPill = ({
65101
65179
  return /* @__PURE__ */ jsxRuntime.jsx(
65102
65180
  Section,
65103
65181
  {
65104
- id: sectionId,
65182
+ id: "navbar-floating-pill",
65105
65183
  background,
65106
65184
  spacing: spacingOverride ?? spacing,
65107
65185
  className: sectionClasses,
@@ -65319,8 +65397,41 @@ var NavbarPlatformResources = ({
65319
65397
  const hasDropdownItems = (link) => Boolean(link.links?.length || link.dropdownGroups?.length);
65320
65398
  const renderDropdownContent3 = (link) => {
65321
65399
  const layout = link.layout || "simple-list";
65400
+ if (layout === "list-with-icons") {
65401
+ return /* @__PURE__ */ jsxRuntime.jsx(NavigationMenuContent, { className: "md:left-1/2 md:-translate-x-1/2 !w-[900px] max-w-[calc(100vw-2rem)] overflow-y-auto p-4 md:!w-[900px]", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid w-full grid-cols-3 gap-4", children: link.links?.map((item, itemIndex) => /* @__PURE__ */ jsxRuntime.jsxs(
65402
+ NavigationMenuLink,
65403
+ {
65404
+ href: getLinkUrl(item),
65405
+ className: "!flex h-full min-h-20 !w-full min-w-0 flex-row items-center gap-4 rounded-lg border border-input bg-background p-4 hover:bg-accent hover:text-accent-foreground",
65406
+ children: [
65407
+ item.image && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-12 w-12 shrink-0 overflow-hidden rounded-md border border-border", children: /* @__PURE__ */ jsxRuntime.jsx(
65408
+ img.Img,
65409
+ {
65410
+ src: item.image,
65411
+ alt: typeof item.label === "string" ? item.label : "Menu item",
65412
+ className: "h-full w-full object-cover object-center",
65413
+ optixFlowConfig
65414
+ }
65415
+ ) }),
65416
+ !item.image && (item.icon || item.iconName) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-12 w-12 shrink-0 items-center justify-center rounded-md border border-border bg-muted/40 text-muted-foreground", children: /* @__PURE__ */ jsxRuntime.jsx(
65417
+ DynamicIcon,
65418
+ {
65419
+ name: item.icon || item.iconName,
65420
+ size: 18,
65421
+ className: "shrink-0"
65422
+ }
65423
+ ) }),
65424
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0 flex-1 overflow-hidden", children: [
65425
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm font-medium truncate", children: item.label }),
65426
+ item.description && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "truncate text-sm font-normal text-muted-foreground", children: item.description })
65427
+ ] })
65428
+ ]
65429
+ },
65430
+ `${typeof item.label === "string" ? item.label : "item"}-${itemIndex}`
65431
+ )) }) });
65432
+ }
65322
65433
  if (layout === "simple-list") {
65323
- return /* @__PURE__ */ jsxRuntime.jsx(NavigationMenuContent, { className: "w-[400px] max-w-[calc(100vw-2rem)] p-3", children: /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "w-full space-y-1", children: link.links?.map((item, itemIndex) => /* @__PURE__ */ jsxRuntime.jsx(
65434
+ return /* @__PURE__ */ jsxRuntime.jsx(NavigationMenuContent, { className: "md:left-1/2 md:-translate-x-1/2 !w-[400px] max-w-[calc(100vw-2rem)] p-3 md:!w-[400px]", children: /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "w-full space-y-1", children: link.links?.map((item, itemIndex) => /* @__PURE__ */ jsxRuntime.jsx(
65324
65435
  "li",
65325
65436
  {
65326
65437
  className: "w-full",
@@ -65339,8 +65450,8 @@ var NavbarPlatformResources = ({
65339
65450
  }
65340
65451
  ) }),
65341
65452
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex min-w-0 flex-1 flex-col gap-0.5", children: [
65342
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm font-medium", children: item.label }),
65343
- item.description && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "break-words text-xs text-muted-foreground group-hover/link:text-foreground", children: item.description })
65453
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm font-medium truncate", children: item.label }),
65454
+ item.description && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "truncate text-xs text-muted-foreground group-hover/link:text-foreground", children: item.description })
65344
65455
  ] })
65345
65456
  ]
65346
65457
  }
@@ -65352,7 +65463,7 @@ var NavbarPlatformResources = ({
65352
65463
  if (layout === "featured-grid" && link.links && link.links.length > 0) {
65353
65464
  const featuredItem = link.links[0];
65354
65465
  const gridItems = link.links.slice(1);
65355
- return /* @__PURE__ */ jsxRuntime.jsx(NavigationMenuContent, { className: "w-[900px] max-w-[calc(100vw-2rem)] p-6", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-[minmax(260px,0.8fr)_minmax(0,1.2fr)] gap-8", children: [
65466
+ return /* @__PURE__ */ jsxRuntime.jsx(NavigationMenuContent, { className: "md:left-1/2 md:-translate-x-1/2 !w-[900px] max-w-[calc(100vw-2rem)] p-6 md:!w-[900px]", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-[minmax(260px,0.8fr)_minmax(0,1.2fr)] gap-8", children: [
65356
65467
  /* @__PURE__ */ jsxRuntime.jsx(
65357
65468
  NavigationMenuLink,
65358
65469
  {
@@ -65369,8 +65480,8 @@ var NavbarPlatformResources = ({
65369
65480
  }
65370
65481
  ) }),
65371
65482
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "p-5 xl:p-8", children: [
65372
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-2 text-base", children: featuredItem.label }),
65373
- featuredItem.description && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm font-normal text-muted-foreground", children: featuredItem.description })
65483
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-2 text-base truncate", children: featuredItem.label }),
65484
+ featuredItem.description && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "truncate text-sm font-normal text-muted-foreground", children: featuredItem.description })
65374
65485
  ] })
65375
65486
  ] })
65376
65487
  }
@@ -65390,8 +65501,8 @@ var NavbarPlatformResources = ({
65390
65501
  size: 20
65391
65502
  }
65392
65503
  ) }),
65393
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-1 break-words text-base", children: item.label }),
65394
- item.description && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "break-words text-sm font-normal text-muted-foreground", children: item.description })
65504
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-1 truncate text-base", children: item.label }),
65505
+ item.description && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "truncate text-sm font-normal text-muted-foreground", children: item.description })
65395
65506
  ]
65396
65507
  },
65397
65508
  `${typeof item.label === "string" ? item.label : "item"}-${itemIndex}`
@@ -65401,7 +65512,7 @@ var NavbarPlatformResources = ({
65401
65512
  }
65402
65513
  if (layout === "two-column-cta" && link.dropdownGroups && link.dropdownGroups.length > 0) {
65403
65514
  const ctaItem = link.links && link.links.length > 0 ? link.links[link.links.length - 1] : null;
65404
- return /* @__PURE__ */ jsxRuntime.jsx(NavigationMenuContent, { className: "w-[900px] max-w-[calc(100vw-2rem)] p-6", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-[minmax(0,1fr)_minmax(0,1fr)] gap-4", children: [
65515
+ return /* @__PURE__ */ jsxRuntime.jsx(NavigationMenuContent, { className: "md:left-1/2 md:-translate-x-1/2 !w-[900px] max-w-[calc(100vw-2rem)] p-6 md:!w-[900px]", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-[minmax(0,1fr)_minmax(0,1fr)] gap-4", children: [
65405
65516
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "min-w-0", children: link.dropdownGroups[0] && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
65406
65517
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-6 text-xs tracking-widest text-muted-foreground uppercase", children: link.dropdownGroups[0].label }),
65407
65518
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-2 gap-4", children: link.dropdownGroups[0].links.map((item, itemIndex) => /* @__PURE__ */ jsxRuntime.jsxs(
@@ -65417,7 +65528,7 @@ var NavbarPlatformResources = ({
65417
65528
  size: 16
65418
65529
  }
65419
65530
  ) }),
65420
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "min-w-0 break-words text-base", children: item.label })
65531
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "min-w-0 truncate text-base", children: item.label })
65421
65532
  ]
65422
65533
  },
65423
65534
  `${typeof item.label === "string" ? item.label : "item"}-${itemIndex}`
@@ -65441,8 +65552,8 @@ var NavbarPlatformResources = ({
65441
65552
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex min-w-0 flex-col p-5 xl:p-8", children: [
65442
65553
  ctaItem.background && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-8 text-xs tracking-widest text-muted-foreground uppercase", children: ctaItem.background }),
65443
65554
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-auto", children: [
65444
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-4 break-words text-xl", children: ctaItem.label }),
65445
- ctaItem.description && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "break-words text-sm font-normal text-muted-foreground", children: ctaItem.description })
65555
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-4 truncate text-xl", children: ctaItem.label }),
65556
+ ctaItem.description && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "truncate text-sm font-normal text-muted-foreground", children: ctaItem.description })
65446
65557
  ] })
65447
65558
  ] })
65448
65559
  ] })
@@ -65453,7 +65564,7 @@ var NavbarPlatformResources = ({
65453
65564
  if (layout === "list-showcase" && link.dropdownGroups && link.dropdownGroups.length > 0) {
65454
65565
  const listItems = link.dropdownGroups[0].links;
65455
65566
  const showcaseItems = link.links || [];
65456
- return /* @__PURE__ */ jsxRuntime.jsx(NavigationMenuContent, { className: "w-[900px] max-w-[calc(100vw-2rem)] p-6", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-[minmax(260px,0.7fr)_minmax(0,1.3fr)] gap-8", children: [
65567
+ return /* @__PURE__ */ jsxRuntime.jsx(NavigationMenuContent, { className: "md:left-1/2 md:-translate-x-1/2 !w-[900px] max-w-[calc(100vw-2rem)] p-6 md:!w-[900px]", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-[minmax(260px,0.7fr)_minmax(0,1.3fr)] gap-8", children: [
65457
65568
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "min-w-0", children: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
65458
65569
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-4 text-xs tracking-widest text-muted-foreground uppercase", children: link.dropdownGroups[0].label }),
65459
65570
  link.dropdownGroups[0].description && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-6 text-sm font-normal text-muted-foreground", children: link.dropdownGroups[0].description }),
@@ -65470,7 +65581,7 @@ var NavbarPlatformResources = ({
65470
65581
  size: 16
65471
65582
  }
65472
65583
  ),
65473
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "min-w-0 break-words text-base", children: item.label })
65584
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "min-w-0 truncate text-base", children: item.label })
65474
65585
  ]
65475
65586
  },
65476
65587
  `${typeof item.label === "string" ? item.label : "item"}-${itemIndex}`
@@ -65483,8 +65594,8 @@ var NavbarPlatformResources = ({
65483
65594
  className: "!flex !w-full min-w-0 flex-row items-center overflow-clip rounded-lg border border-input bg-background p-0 hover:bg-transparent",
65484
65595
  children: [
65485
65596
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0 flex-1 p-5 xl:p-8", children: [
65486
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-2 break-words text-base", children: showcase.label }),
65487
- showcase.description && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "break-words text-sm font-normal text-muted-foreground", children: showcase.description })
65597
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-2 truncate text-base", children: showcase.label }),
65598
+ showcase.description && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "truncate text-sm font-normal text-muted-foreground", children: showcase.description })
65488
65599
  ] }),
65489
65600
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-[154px] max-w-[264px] shrink-0", children: /* @__PURE__ */ jsxRuntime.jsx(
65490
65601
  img.Img,
@@ -65503,7 +65614,7 @@ var NavbarPlatformResources = ({
65503
65614
  }
65504
65615
  if (layout === "multi-section" && link.dropdownGroups) {
65505
65616
  const ctaItem = link.links && link.links.length > 0 ? link.links[link.links.length - 1] : null;
65506
- return /* @__PURE__ */ jsxRuntime.jsx(NavigationMenuContent, { className: "w-[900px] max-w-[calc(100vw-2rem)] p-8", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-8", children: [
65617
+ return /* @__PURE__ */ jsxRuntime.jsx(NavigationMenuContent, { className: "md:left-1/2 md:-translate-x-1/2 !w-[900px] max-w-[calc(100vw-2rem)] p-8 md:!w-[900px]", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-8", children: [
65507
65618
  link.dropdownGroups.map((group, groupIndex) => /* @__PURE__ */ jsxRuntime.jsxs(
65508
65619
  "div",
65509
65620
  {
@@ -65516,8 +65627,8 @@ var NavbarPlatformResources = ({
65516
65627
  href: getLinkUrl(item),
65517
65628
  className: "!flex h-full w-full min-w-0 flex-col overflow-clip rounded-lg border border-input bg-background p-5 hover:bg-accent hover:text-accent-foreground xl:p-8",
65518
65629
  children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-auto", children: [
65519
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-2 break-words text-base", children: item.label }),
65520
- item.description && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "break-words text-sm font-normal text-muted-foreground", children: item.description })
65630
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-2 truncate text-base", children: item.label }),
65631
+ item.description && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "truncate text-sm font-normal text-muted-foreground", children: item.description })
65521
65632
  ] })
65522
65633
  },
65523
65634
  `${typeof item.label === "string" ? item.label : "item"}-${itemIndex}`
@@ -65534,8 +65645,8 @@ var NavbarPlatformResources = ({
65534
65645
  className: "mb-6 !flex !w-full min-w-0 flex-row overflow-clip rounded-lg border border-input bg-background p-0 hover:bg-transparent",
65535
65646
  children: [
65536
65647
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0 flex-1 p-5 xl:p-8", children: [
65537
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-2 break-words text-base", children: ctaItem.label }),
65538
- ctaItem.description && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "break-words text-sm font-normal text-muted-foreground", children: ctaItem.description })
65648
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-2 truncate text-base", children: ctaItem.label }),
65649
+ ctaItem.description && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "truncate text-sm font-normal text-muted-foreground", children: ctaItem.description })
65539
65650
  ] }),
65540
65651
  ctaItem.image && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-1/3 max-w-[130px] shrink-0", children: /* @__PURE__ */ jsxRuntime.jsx(
65541
65652
  img.Img,
@@ -65551,12 +65662,12 @@ var NavbarPlatformResources = ({
65551
65662
  ),
65552
65663
  ctaItem.background && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-row items-center gap-3 rounded-lg bg-secondary/30 p-3 hover:bg-secondary/80 focus:bg-secondary/80", children: [
65553
65664
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "rounded-md bg-secondary px-2 py-1 text-xs font-semibold text-secondary-foreground", children: ctaItem.background }),
65554
- ctaItem.description && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm text-ellipsis text-secondary-foreground", children: ctaItem.description })
65665
+ ctaItem.description && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate text-sm text-secondary-foreground", children: ctaItem.description })
65555
65666
  ] })
65556
65667
  ] })
65557
65668
  ] }) });
65558
65669
  }
65559
- return /* @__PURE__ */ jsxRuntime.jsx(NavigationMenuContent, { className: "w-[900px] max-w-[calc(100vw-2rem)] p-4", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3", children: link.links?.map((item, itemIndex) => /* @__PURE__ */ jsxRuntime.jsxs(
65670
+ return /* @__PURE__ */ jsxRuntime.jsx(NavigationMenuContent, { className: "md:left-1/2 md:-translate-x-1/2 !w-[900px] max-w-[calc(100vw-2rem)] p-4 md:!w-[900px]", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3", children: link.links?.map((item, itemIndex) => /* @__PURE__ */ jsxRuntime.jsxs(
65560
65671
  NavigationMenuLink,
65561
65672
  {
65562
65673
  href: getLinkUrl(item),
@@ -65573,8 +65684,8 @@ var NavbarPlatformResources = ({
65573
65684
  ) }),
65574
65685
  !item.image && (item.icon || item.iconName) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-12 w-12 shrink-0 items-center justify-center rounded-md border border-border bg-muted/40 text-muted-foreground", children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: item.icon || item.iconName, size: 18 }) }),
65575
65686
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0 flex-1", children: [
65576
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "break-words text-sm font-medium text-foreground", children: item.label }),
65577
- item.description && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "break-words text-sm font-normal text-muted-foreground", children: item.description })
65687
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "truncate text-sm font-medium text-foreground", children: item.label }),
65688
+ item.description && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "truncate text-sm font-normal text-muted-foreground", children: item.description })
65578
65689
  ] })
65579
65690
  ]
65580
65691
  },
@@ -65611,7 +65722,7 @@ var NavbarPlatformResources = ({
65611
65722
  return /* @__PURE__ */ jsxRuntime.jsx(
65612
65723
  Section,
65613
65724
  {
65614
- id: sectionId,
65725
+ id: "navbar-platform-resources",
65615
65726
  background,
65616
65727
  spacing: spacingOverride ?? spacing,
65617
65728
  className: sectionClasses,
@@ -65879,7 +65990,7 @@ var NavbarImagePreview = ({
65879
65990
  return /* @__PURE__ */ jsxRuntime.jsxs(
65880
65991
  Section,
65881
65992
  {
65882
- id: sectionId,
65993
+ id: "navbar-image-preview",
65883
65994
  background,
65884
65995
  spacing: spacingOverride ?? spacing,
65885
65996
  className: sectionClasses,
@@ -66262,7 +66373,7 @@ var NavbarDarkIcons = ({
66262
66373
  return /* @__PURE__ */ jsxRuntime.jsxs(
66263
66374
  Section,
66264
66375
  {
66265
- id: sectionId,
66376
+ id: "navbar-dark-icons",
66266
66377
  background,
66267
66378
  spacing: spacingOverride ?? spacing,
66268
66379
  className: cn("dark pointer-events-auto relative z-999", sectionClasses),
@@ -66612,6 +66723,7 @@ var NavbarAnimatedPreview = ({
66612
66723
  /* @__PURE__ */ jsxRuntime.jsx(
66613
66724
  Section,
66614
66725
  {
66726
+ id: "navbar-animated-preview",
66615
66727
  background,
66616
66728
  spacing: spacingOverride ?? spacing,
66617
66729
  className: cn(
@@ -67137,6 +67249,7 @@ var NavbarMultiColumnGroups = ({
67137
67249
  /* @__PURE__ */ jsxRuntime.jsx(
67138
67250
  Section,
67139
67251
  {
67252
+ id: "navbar-multi-column-groups",
67140
67253
  background,
67141
67254
  spacing: spacingOverride ?? spacing,
67142
67255
  className: sectionClasses,
@@ -67450,6 +67563,7 @@ var NavbarSidebarMobile = ({
67450
67563
  /* @__PURE__ */ jsxRuntime.jsx(
67451
67564
  Section,
67452
67565
  {
67566
+ id: "navbar-sidebar-mobile",
67453
67567
  background,
67454
67568
  spacing: spacingOverride ?? spacing,
67455
67569
  className: sectionClasses,
@@ -67772,6 +67886,7 @@ var NavbarTransparentOverlay = ({
67772
67886
  /* @__PURE__ */ jsxRuntime.jsx(
67773
67887
  Section,
67774
67888
  {
67889
+ id: "navbar-transparent-overlay",
67775
67890
  background,
67776
67891
  spacing: spacingOverride ?? spacing,
67777
67892
  className: sectionClasses,
@@ -68034,6 +68149,7 @@ var NavbarEducationPlatform = ({
68034
68149
  /* @__PURE__ */ jsxRuntime.jsx(
68035
68150
  Section,
68036
68151
  {
68152
+ id: "navbar-education-platform",
68037
68153
  background,
68038
68154
  spacing: spacingOverride ?? spacing,
68039
68155
  className: sectionClasses,
@@ -68398,6 +68514,7 @@ var NavbarStickyCompact = ({
68398
68514
  /* @__PURE__ */ jsxRuntime.jsx(
68399
68515
  Section,
68400
68516
  {
68517
+ id: "navbar-sticky-compact",
68401
68518
  background,
68402
68519
  spacing: spacingOverride ?? spacing,
68403
68520
  className: cn(
@@ -68669,6 +68786,7 @@ var NavbarSearchFocused = ({
68669
68786
  /* @__PURE__ */ jsxRuntime.jsx(
68670
68787
  Section,
68671
68788
  {
68789
+ id: "navbar-search-focused",
68672
68790
  background,
68673
68791
  spacing: spacingOverride ?? spacing,
68674
68792
  className: sectionClasses,
@@ -68936,6 +69054,7 @@ var NavbarSimpleLinks = ({
68936
69054
  /* @__PURE__ */ jsxRuntime.jsx(
68937
69055
  Section,
68938
69056
  {
69057
+ id: "navbar-simple-links",
68939
69058
  background,
68940
69059
  spacing: spacingOverride ?? spacing,
68941
69060
  className: sectionClasses,
@@ -69157,7 +69276,7 @@ var NavbarSplitCta = ({
69157
69276
  return /* @__PURE__ */ jsxRuntime.jsx(
69158
69277
  Section,
69159
69278
  {
69160
- id: sectionId,
69279
+ id: "navbar-split-cta",
69161
69280
  background,
69162
69281
  spacing: spacingOverride ?? spacing,
69163
69282
  className: sectionClasses,
@@ -69376,7 +69495,7 @@ var NavbarIconLinks = ({
69376
69495
  return /* @__PURE__ */ jsxRuntime.jsx(
69377
69496
  Section,
69378
69497
  {
69379
- id: sectionId,
69498
+ id: "navbar-icon-links",
69380
69499
  background,
69381
69500
  spacing: spacingOverride ?? spacing,
69382
69501
  className: sectionClasses,
@@ -69699,7 +69818,7 @@ var NavbarTabbedSections = ({
69699
69818
  return /* @__PURE__ */ jsxRuntime.jsx(
69700
69819
  Section,
69701
69820
  {
69702
- id: sectionId,
69821
+ id: "navbar-tabbed-sections",
69703
69822
  background,
69704
69823
  spacing: spacingOverride ?? spacing,
69705
69824
  className: sectionClasses,
@@ -69847,6 +69966,7 @@ var NavbarFullscreenMenu = ({
69847
69966
  /* @__PURE__ */ jsxRuntime.jsx(
69848
69967
  Section,
69849
69968
  {
69969
+ id: "navbar-fullscreen-menu",
69850
69970
  background,
69851
69971
  spacing: spacingOverride ?? spacing,
69852
69972
  className: sectionClasses,
@@ -110960,22 +111080,59 @@ var BLOCK_REGISTRY = {
110960
111080
  },
110961
111081
  "hero-tech-carousel": {
110962
111082
  id: "hero-tech-carousel",
110963
- name: "Tech Carousel Hero",
110964
- description: "A hero section with a carousel of technology logos or partner brands. Features headline, description, and auto-scrolling logo carousel. Perfect for showcasing integrations.",
111083
+ name: "Multi-Panel Hero",
111084
+ description: "A full-bleed hero with up to four side-by-side panels on desktop that stack vertically on mobile. Each panel supports an optional logo, title, content, action buttons, and an optional background image or autoplaying image carousel.",
110965
111085
  semanticTags: [
110966
111086
  "hero",
110967
- "carousel",
110968
- "tech",
110969
- "logos",
110970
- "partners",
110971
- "integrations",
111087
+ "multi-panel",
111088
+ "split",
111089
+ "full-bleed",
111090
+ "fullscreen",
111091
+ "background-image",
111092
+ "image-carousel",
110972
111093
  "brands",
110973
- "auto-scroll"
111094
+ "showcase",
111095
+ "cta"
110974
111096
  ],
110975
111097
  category: "hero",
110976
111098
  component: HeroTechCarousel,
110977
111099
  props: "HeroTechCarouselProps",
110978
- exampleUsage: `<HeroTechCarousel />`.trim()
111100
+ exampleUsage: `
111101
+ <HeroTechCarousel
111102
+ items={[
111103
+ {
111104
+ logo: { src: "/logos/insurance.svg", alt: "InsuranceSite" },
111105
+ title: "InsuranceSite",
111106
+ content: "Built for modern brokers",
111107
+ actions: [{ label: "Get Started", href: "/insurance" }],
111108
+ backgroundMedia: [
111109
+ { src: "/img/insurance-1.jpg", alt: "" },
111110
+ { src: "/img/insurance-2.jpg", alt: "" },
111111
+ ],
111112
+ },
111113
+ {
111114
+ logo: { src: "/logos/realtor.svg", alt: "RealtorSite" },
111115
+ title: "RealtorSite",
111116
+ content: "For high-volume listing agents",
111117
+ actions: [{ label: "Get Started", href: "/realtor" }],
111118
+ backgroundMedia: [{ src: "/img/realtor.jpg", alt: "" }],
111119
+ },
111120
+ {
111121
+ logo: { src: "/logos/castkit.svg", alt: "CastKit" },
111122
+ title: "CastKit",
111123
+ content: "AI-powered podcast production",
111124
+ actions: [{ label: "Get Started", href: "/castkit" }],
111125
+ },
111126
+ {
111127
+ logo: { src: "/logos/opensite.svg", alt: "OpenSite" },
111128
+ title: "OpenSite",
111129
+ content: "The platform behind it all",
111130
+ actions: [{ label: "Get Started", href: "/opensite" }],
111131
+ backgroundMedia: [{ src: "/img/opensite.jpg", alt: "" }],
111132
+ },
111133
+ ]}
111134
+ />
111135
+ `.trim()
110979
111136
  },
110980
111137
  "hero-simple-centered-image": {
110981
111138
  id: "hero-simple-centered-image",