@opensite/ui 3.7.4 → 3.7.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (115) hide show
  1. package/dist/blog-featured-popular.cjs +13 -12
  2. package/dist/blog-featured-popular.d.cts +1 -1
  3. package/dist/blog-featured-popular.d.ts +1 -1
  4. package/dist/blog-featured-popular.js +13 -12
  5. package/dist/blog-horizontal-cards.cjs +22 -41
  6. package/dist/blog-horizontal-cards.d.cts +1 -1
  7. package/dist/blog-horizontal-cards.d.ts +1 -1
  8. package/dist/blog-horizontal-cards.js +22 -41
  9. package/dist/blog-related-articles.cjs +8 -7
  10. package/dist/blog-related-articles.js +8 -7
  11. package/dist/carousel-icon-tabs.cjs +6 -4
  12. package/dist/carousel-icon-tabs.d.cts +5 -1
  13. package/dist/carousel-icon-tabs.d.ts +5 -1
  14. package/dist/carousel-icon-tabs.js +6 -4
  15. package/dist/carousel-progress-slider.cjs +3 -2
  16. package/dist/carousel-progress-slider.js +3 -2
  17. package/dist/carousel-scale-focus.cjs +1 -1
  18. package/dist/carousel-scale-focus.js +1 -1
  19. package/dist/carousel-scrolling-feature-showcase.cjs +4 -2
  20. package/dist/carousel-scrolling-feature-showcase.js +4 -2
  21. package/dist/carousel-sidebar-resources.cjs +11 -15
  22. package/dist/carousel-sidebar-resources.d.cts +5 -1
  23. package/dist/carousel-sidebar-resources.d.ts +5 -1
  24. package/dist/carousel-sidebar-resources.js +11 -15
  25. package/dist/carousel-tabs-content.cjs +1 -1
  26. package/dist/carousel-tabs-content.js +1 -1
  27. package/dist/expandable-case-study-cards.cjs +3 -3
  28. package/dist/expandable-case-study-cards.js +3 -3
  29. package/dist/feature-animated-carousel.cjs +2 -1
  30. package/dist/feature-animated-carousel.js +2 -1
  31. package/dist/feature-bento-image-grid.cjs +8 -9
  32. package/dist/feature-bento-image-grid.js +8 -9
  33. package/dist/feature-image-overlay-badge.cjs +3 -40
  34. package/dist/feature-image-overlay-badge.js +3 -40
  35. package/dist/feature-integration-cards.cjs +4 -13
  36. package/dist/feature-integration-cards.js +4 -13
  37. package/dist/footer-newsletter-contact.cjs +4 -4
  38. package/dist/footer-newsletter-contact.js +4 -4
  39. package/dist/hero-adaptable-product-grid.cjs +2 -1
  40. package/dist/hero-adaptable-product-grid.js +2 -1
  41. package/dist/hero-ai-powered-carousel.cjs +2 -1
  42. package/dist/hero-ai-powered-carousel.js +2 -1
  43. package/dist/hero-architecture-fullscreen.cjs +3 -2
  44. package/dist/hero-architecture-fullscreen.js +3 -2
  45. package/dist/hero-badge-image-split.cjs +3 -2
  46. package/dist/hero-badge-image-split.js +3 -2
  47. package/dist/hero-badge-shadow-overlay.cjs +2 -1
  48. package/dist/hero-badge-shadow-overlay.js +2 -1
  49. package/dist/hero-billing-platform-logos.cjs +12 -8
  50. package/dist/hero-billing-platform-logos.js +12 -8
  51. package/dist/hero-business-carousel-dots.cjs +2 -1
  52. package/dist/hero-business-carousel-dots.js +2 -1
  53. package/dist/hero-centered-image-grid.cjs +4 -4
  54. package/dist/hero-centered-image-grid.js +4 -4
  55. package/dist/hero-conversation-intelligence.cjs +2 -1
  56. package/dist/hero-conversation-intelligence.js +2 -1
  57. package/dist/hero-crm-streamlined.cjs +2 -2
  58. package/dist/hero-crm-streamlined.js +2 -2
  59. package/dist/hero-design-carousel-portfolio.cjs +2 -1
  60. package/dist/hero-design-carousel-portfolio.js +2 -1
  61. package/dist/hero-ecommerce-product-showcase.cjs +8 -4
  62. package/dist/hero-ecommerce-product-showcase.js +8 -4
  63. package/dist/hero-event-registration.cjs +2 -1
  64. package/dist/hero-event-registration.js +2 -1
  65. package/dist/hero-gradient-avatars-rating.cjs +4 -2
  66. package/dist/hero-gradient-avatars-rating.js +4 -2
  67. package/dist/hero-mental-health-team.cjs +13 -18
  68. package/dist/hero-mental-health-team.js +13 -18
  69. package/dist/hero-mentorship-video-split.cjs +3 -10
  70. package/dist/hero-mentorship-video-split.js +3 -10
  71. package/dist/hero-pattern-logo-tech-stack.cjs +10 -6
  72. package/dist/hero-pattern-logo-tech-stack.js +10 -6
  73. package/dist/hero-product-showcase-floating.cjs +4 -2
  74. package/dist/hero-product-showcase-floating.js +4 -2
  75. package/dist/hero-saas-dashboard-preview.cjs +2 -1
  76. package/dist/hero-saas-dashboard-preview.js +2 -1
  77. package/dist/hero-software-growth-video-dialog.cjs +2 -1
  78. package/dist/hero-software-growth-video-dialog.js +2 -1
  79. package/dist/hero-split-icon-cards.cjs +7 -59
  80. package/dist/hero-split-icon-cards.js +7 -59
  81. package/dist/hero-task-timer-animated.cjs +155 -86
  82. package/dist/hero-task-timer-animated.d.cts +19 -18
  83. package/dist/hero-task-timer-animated.d.ts +19 -18
  84. package/dist/hero-task-timer-animated.js +156 -68
  85. package/dist/navbar-animated-preview.cjs +1 -1
  86. package/dist/navbar-animated-preview.js +1 -1
  87. package/dist/navbar-enterprise-mega.cjs +9 -3
  88. package/dist/navbar-enterprise-mega.d.cts +3 -0
  89. package/dist/navbar-enterprise-mega.d.ts +3 -0
  90. package/dist/navbar-enterprise-mega.js +9 -3
  91. package/dist/navbar-image-preview.cjs +10 -2
  92. package/dist/navbar-image-preview.d.cts +6 -6
  93. package/dist/navbar-image-preview.d.ts +6 -6
  94. package/dist/navbar-image-preview.js +10 -2
  95. package/dist/process-hover-cards.cjs +4 -2
  96. package/dist/process-hover-cards.js +4 -2
  97. package/dist/process-icon-timeline.cjs +1 -2
  98. package/dist/process-icon-timeline.d.cts +0 -4
  99. package/dist/process-icon-timeline.d.ts +0 -4
  100. package/dist/process-icon-timeline.js +1 -2
  101. package/dist/process-scroll-image.cjs +2 -2
  102. package/dist/process-scroll-image.js +2 -2
  103. package/dist/process-steps-grid.cjs +7 -5
  104. package/dist/process-steps-grid.js +7 -5
  105. package/dist/registry.cjs +405 -325
  106. package/dist/registry.js +405 -325
  107. package/dist/testimonials-animated-split.cjs +2 -1
  108. package/dist/testimonials-animated-split.js +2 -1
  109. package/dist/testimonials-carousel-image.cjs +4 -2
  110. package/dist/testimonials-carousel-image.js +4 -2
  111. package/dist/testimonials-company-logo.cjs +4 -2
  112. package/dist/testimonials-company-logo.js +4 -2
  113. package/dist/testimonials-scrolling-columns.cjs +4 -2
  114. package/dist/testimonials-scrolling-columns.js +4 -2
  115. package/package.json +1 -1
@@ -1,21 +1,15 @@
1
1
  "use client";
2
- import React, { useMemo } from 'react';
2
+ import React, { useState, useEffect, useCallback, useMemo } from 'react';
3
3
  import { clsx } from 'clsx';
4
4
  import { twMerge } from 'tailwind-merge';
5
- import { Img } from '@page-speed/img';
6
- import * as AspectRatioPrimitive from '@radix-ui/react-aspect-ratio';
7
5
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
8
6
  import { Pressable, buttonVariants } from '@page-speed/pressable';
7
+ import { Img } from '@page-speed/img';
9
8
 
10
9
  // components/blocks/hero/hero-task-timer-animated.tsx
11
10
  function cn(...inputs) {
12
11
  return twMerge(clsx(inputs));
13
12
  }
14
- function AspectRatio({
15
- ...props
16
- }) {
17
- return /* @__PURE__ */ jsx(AspectRatioPrimitive.Root, { "data-slot": "aspect-ratio", ...props });
18
- }
19
13
  var maxWidthStyles = {
20
14
  sm: "max-w-screen-sm",
21
15
  md: "max-w-screen-md",
@@ -511,69 +505,71 @@ var BrandLogo = ({
511
505
  }
512
506
  return /* @__PURE__ */ jsx("div", { className: cn("flex items-center", logoClassName), children: imgElement });
513
507
  };
508
+ function padTwo(n) {
509
+ return n.toString().padStart(2, "0");
510
+ }
511
+ var RING_RADIUS = 90;
512
+ var RING_CIRCUMFERENCE = 2 * Math.PI * RING_RADIUS;
514
513
  function HeroTaskTimerAnimated({
515
514
  sectionId = "hero-task-timer-animated",
516
515
  heading,
516
+ headingSlot,
517
517
  description,
518
- descriptionClassName,
519
518
  actions,
520
519
  actionsSlot,
521
520
  actionsClassName,
522
- images,
523
- imagesSlot,
521
+ taskItems,
522
+ timerMinutes = 25,
523
+ timerSeconds = 0,
524
524
  background,
525
525
  pattern,
526
526
  patternOpacity,
527
527
  className,
528
- spacing = "xl",
528
+ spacing = "hero",
529
529
  containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
530
530
  headerClassName,
531
531
  headingClassName,
532
- imagesClassName,
533
- optixFlowConfig,
532
+ descriptionClassName,
534
533
  logo,
535
534
  logoSlot,
536
535
  logoClassName
537
536
  }) {
538
- const renderImages = useMemo(() => {
539
- if (imagesSlot) return imagesSlot;
540
- if (!images || images.length < 2) return null;
541
- return /* @__PURE__ */ jsxs(
542
- "div",
537
+ const initialTotal = timerMinutes * 60 + timerSeconds;
538
+ const [remaining, setRemaining] = useState(initialTotal);
539
+ const [activeTaskIndex, setActiveTaskIndex] = useState(0);
540
+ useEffect(() => {
541
+ const interval = setInterval(() => {
542
+ setRemaining((prev) => prev <= 0 ? initialTotal : prev - 1);
543
+ }, 1e3);
544
+ return () => clearInterval(interval);
545
+ }, [initialTotal]);
546
+ const cycleTask = useCallback(() => {
547
+ if (!taskItems || taskItems.length <= 1) return;
548
+ setActiveTaskIndex((prev) => (prev + 1) % taskItems.length);
549
+ }, [taskItems]);
550
+ useEffect(() => {
551
+ if (!taskItems || taskItems.length <= 1) return;
552
+ const interval = setInterval(cycleTask, 3e3);
553
+ return () => clearInterval(interval);
554
+ }, [taskItems, cycleTask]);
555
+ const minutes = Math.floor(remaining / 60);
556
+ const seconds = remaining % 60;
557
+ const progress = initialTotal > 0 ? remaining / initialTotal : 1;
558
+ const strokeDashoffset = RING_CIRCUMFERENCE * (1 - progress);
559
+ const renderHeading = useMemo(() => {
560
+ if (headingSlot) return headingSlot;
561
+ if (!heading) return null;
562
+ return typeof heading === "string" ? /* @__PURE__ */ jsx(
563
+ "h1",
543
564
  {
544
565
  className: cn(
545
- "flex flex-col mt-6 gap-6 md:gap-10 lg:flex-row",
546
- imagesClassName
566
+ "max-w-3xl text-4xl font-bold tracking-tight md:text-5xl lg:text-6xl text-balance",
567
+ headingClassName
547
568
  ),
548
- children: [
549
- /* @__PURE__ */ jsx("div", { className: "flex flex-col gap-10 w-full lg:w-[60%]", children: /* @__PURE__ */ jsx("div", { className: "overflow-hidden rounded-lg shadow-xl", children: /* @__PURE__ */ jsx(AspectRatio, { ratio: 1.916786227 / 1, children: /* @__PURE__ */ jsx(
550
- Img,
551
- {
552
- src: images[0].src,
553
- alt: images[0].alt,
554
- className: cn(
555
- "block size-full object-cover object-center",
556
- images[0].className
557
- ),
558
- optixFlowConfig
559
- }
560
- ) }) }) }),
561
- /* @__PURE__ */ jsx("div", { className: "flex flex-col gap-10 w-full lg:w-[40%]", children: /* @__PURE__ */ jsx("div", { className: "overflow-hidden rounded-lg shadow-xl", children: /* @__PURE__ */ jsx(AspectRatio, { ratio: 1.916786227 / 1, children: /* @__PURE__ */ jsx(
562
- Img,
563
- {
564
- src: images[1].src,
565
- alt: images[1].alt,
566
- className: cn(
567
- "block size-full object-cover object-center",
568
- images[1].className
569
- ),
570
- optixFlowConfig
571
- }
572
- ) }) }) })
573
- ]
569
+ children: heading
574
570
  }
575
- );
576
- }, [imagesSlot, images, imagesClassName, optixFlowConfig]);
571
+ ) : heading;
572
+ }, [headingSlot, heading, headingClassName]);
577
573
  return /* @__PURE__ */ jsx(
578
574
  Section,
579
575
  {
@@ -584,48 +580,140 @@ function HeroTaskTimerAnimated({
584
580
  patternOpacity,
585
581
  className,
586
582
  containerClassName,
587
- children: /* @__PURE__ */ jsxs("div", { className: "relative flex flex-col gap-6 md:gap-16", children: [
583
+ children: /* @__PURE__ */ jsxs("div", { className: "relative flex flex-col items-center gap-10 lg:flex-row lg:items-center lg:gap-16", children: [
588
584
  /* @__PURE__ */ jsxs(
589
585
  "div",
590
586
  {
591
587
  className: cn(
592
- "flex flex-col gap-4 w-full pt-12 lg:pt-0",
588
+ "flex flex-col gap-5 w-full lg:w-1/2 pt-8 lg:pt-0",
593
589
  headerClassName
594
590
  ),
595
591
  children: [
596
592
  (logo || logoSlot) && /* @__PURE__ */ jsx("div", { className: cn("mb-4", logoClassName), children: /* @__PURE__ */ jsx(BrandLogo, { logo, logoSlot, size: "lg" }) }),
597
- heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
598
- "h1",
593
+ renderHeading,
594
+ description && (typeof description === "string" ? /* @__PURE__ */ jsx(
595
+ "p",
599
596
  {
600
597
  className: cn(
601
- "max-w-2xl text-6xl font-bold tracking-tight md:text-7xl lg:text-8xl text-balance",
602
- headingClassName
598
+ "max-w-xl text-lg text-muted-foreground text-balance",
599
+ descriptionClassName
603
600
  ),
604
- children: heading
601
+ children: description
605
602
  }
606
- ) : /* @__PURE__ */ jsx(
607
- "h1",
603
+ ) : description),
604
+ taskItems && taskItems.length > 0 && /* @__PURE__ */ jsx("div", { className: "mt-2 flex flex-col gap-3", children: taskItems.map((task, index) => /* @__PURE__ */ jsxs(
605
+ "div",
608
606
  {
609
- className: cn(
610
- "max-w-2xl text-6xl font-bold tracking-tight md:text-7xl lg:text-8xl text-balance",
611
- headingClassName
612
- ),
613
- children: heading
614
- }
615
- )),
616
- description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-lg text-balance", descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description })),
607
+ className: "flex items-center gap-3 transition-all duration-700 ease-in-out",
608
+ style: {
609
+ opacity: index === activeTaskIndex ? 1 : 0.35,
610
+ transform: index === activeTaskIndex ? "translateX(8px)" : "translateX(0)"
611
+ },
612
+ children: [
613
+ /* @__PURE__ */ jsx(
614
+ "div",
615
+ {
616
+ className: cn(
617
+ "size-2.5 shrink-0 rounded-full transition-colors duration-700",
618
+ index === activeTaskIndex ? "bg-primary" : "bg-muted-foreground/30"
619
+ )
620
+ }
621
+ ),
622
+ /* @__PURE__ */ jsx(
623
+ "span",
624
+ {
625
+ className: cn(
626
+ "text-sm font-medium transition-colors duration-700",
627
+ index === activeTaskIndex ? "text-foreground" : "text-muted-foreground/50"
628
+ ),
629
+ children: task
630
+ }
631
+ )
632
+ ]
633
+ },
634
+ index
635
+ )) }),
617
636
  /* @__PURE__ */ jsx(
618
637
  BlockActions,
619
638
  {
620
639
  actions,
621
640
  actionsSlot,
622
- actionsClassName
641
+ actionsClassName: cn("mt-2", actionsClassName)
623
642
  }
624
643
  )
625
644
  ]
626
645
  }
627
646
  ),
628
- renderImages
647
+ /* @__PURE__ */ jsx("div", { className: "flex w-full items-center justify-center lg:w-1/2", children: /* @__PURE__ */ jsxs("div", { className: "relative flex flex-col items-center gap-6", children: [
648
+ /* @__PURE__ */ jsxs("div", { className: "relative", children: [
649
+ /* @__PURE__ */ jsxs(
650
+ "svg",
651
+ {
652
+ width: "240",
653
+ height: "240",
654
+ viewBox: "0 0 220 220",
655
+ className: "drop-shadow-lg",
656
+ children: [
657
+ /* @__PURE__ */ jsx(
658
+ "circle",
659
+ {
660
+ cx: "110",
661
+ cy: "110",
662
+ r: RING_RADIUS,
663
+ fill: "none",
664
+ stroke: "currentColor",
665
+ strokeWidth: "5",
666
+ className: "text-muted-foreground/15"
667
+ }
668
+ ),
669
+ /* @__PURE__ */ jsx(
670
+ "circle",
671
+ {
672
+ cx: "110",
673
+ cy: "110",
674
+ r: RING_RADIUS,
675
+ fill: "none",
676
+ stroke: "currentColor",
677
+ strokeWidth: "5",
678
+ strokeLinecap: "round",
679
+ className: "text-primary transition-[stroke-dashoffset] duration-1000 ease-linear",
680
+ strokeDasharray: RING_CIRCUMFERENCE,
681
+ strokeDashoffset,
682
+ transform: "rotate(-90 110 110)"
683
+ }
684
+ )
685
+ ]
686
+ }
687
+ ),
688
+ /* @__PURE__ */ jsx("div", { className: "absolute inset-0 flex items-center justify-center", children: /* @__PURE__ */ jsxs("div", { className: "flex items-baseline gap-1 font-mono", children: [
689
+ /* @__PURE__ */ jsx("span", { className: "text-5xl font-bold tabular-nums tracking-tight md:text-6xl", children: padTwo(minutes) }),
690
+ /* @__PURE__ */ jsx("span", { className: "animate-pulse text-3xl font-bold text-primary md:text-4xl", children: ":" }),
691
+ /* @__PURE__ */ jsx("span", { className: "text-5xl font-bold tabular-nums tracking-tight md:text-6xl", children: padTwo(seconds) })
692
+ ] }) })
693
+ ] }),
694
+ taskItems && taskItems.length > 0 && /* @__PURE__ */ jsx("div", { className: "relative h-8 w-full max-w-[280px] overflow-hidden", children: taskItems.map((task, index) => /* @__PURE__ */ jsx(
695
+ "div",
696
+ {
697
+ className: "absolute inset-0 flex items-center justify-center transition-all duration-700 ease-in-out",
698
+ style: {
699
+ opacity: index === activeTaskIndex ? 1 : 0,
700
+ transform: index === activeTaskIndex ? "translateY(0)" : "translateY(12px)"
701
+ },
702
+ children: /* @__PURE__ */ jsx("span", { className: "truncate rounded-full bg-primary/10 px-4 py-1.5 text-sm font-medium text-primary", children: task })
703
+ },
704
+ index
705
+ )) }),
706
+ taskItems && taskItems.length > 1 && /* @__PURE__ */ jsx("div", { className: "flex gap-2", children: taskItems.map((_, index) => /* @__PURE__ */ jsx(
707
+ "div",
708
+ {
709
+ className: cn(
710
+ "size-2 rounded-full transition-all duration-500",
711
+ index === activeTaskIndex ? "scale-125 bg-primary" : "bg-muted-foreground/25"
712
+ )
713
+ },
714
+ index
715
+ )) })
716
+ ] }) })
629
717
  ] })
630
718
  }
631
719
  );
@@ -1238,7 +1238,7 @@ var FeaturedLink = ({ link, optixFlowConfig }) => {
1238
1238
  className: `group relative flex w-full overflow-hidden rounded-xl px-4 pt-24 pb-4 ${hasBgImg ? "" : "bg-primary"}`,
1239
1239
  children: [
1240
1240
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative z-10 flex w-full items-center gap-6", children: [
1241
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex size-12 shrink-0 rounded-lg border bg-card text-card-foreground shadow-lg", children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: link.icon || link.iconName, size: 20 }) }),
1241
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center justify-center size-12 shrink-0 rounded-lg border bg-card text-card-foreground shadow-lg", children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: link.icon || link.iconName, size: 20 }) }),
1242
1242
  /* @__PURE__ */ jsxRuntime.jsxs(
1243
1243
  "div",
1244
1244
  {
@@ -1213,7 +1213,7 @@ var FeaturedLink = ({ link, optixFlowConfig }) => {
1213
1213
  className: `group relative flex w-full overflow-hidden rounded-xl px-4 pt-24 pb-4 ${hasBgImg ? "" : "bg-primary"}`,
1214
1214
  children: [
1215
1215
  /* @__PURE__ */ jsxs("div", { className: "relative z-10 flex w-full items-center gap-6", children: [
1216
- /* @__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 }) }),
1216
+ /* @__PURE__ */ jsx("div", { className: "flex items-center justify-center 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 }) }),
1217
1217
  /* @__PURE__ */ jsxs(
1218
1218
  "div",
1219
1219
  {
@@ -766,6 +766,7 @@ function getNavbarLayoutClasses(layoutVariant = "fullScreenContainerizedLinks",
766
766
  var SolutionsMenu = ({
767
767
  solutionCards,
768
768
  platformItems,
769
+ platformTitle = "Platform",
769
770
  featuredHeroCard,
770
771
  optixFlowConfig
771
772
  }) => {
@@ -808,7 +809,7 @@ var SolutionsMenu = ({
808
809
  }
809
810
  ) : null;
810
811
  const platformSection = platformItems.length > 0 ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0", children: [
811
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-3 text-left", children: /* @__PURE__ */ jsxRuntime.jsx("strong", { className: "text-xs font-medium tracking-wider text-muted-foreground uppercase", children: "Developer Platform" }) }),
812
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-3 text-left", children: /* @__PURE__ */ jsxRuntime.jsx("strong", { className: "text-xs font-medium tracking-wider text-muted-foreground uppercase", children: platformTitle }) }),
812
813
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-2 gap-2", children: platformItems.map((technology) => /* @__PURE__ */ jsxRuntime.jsxs(
813
814
  NavigationMenuLink,
814
815
  {
@@ -1009,6 +1010,7 @@ var ProductsMenu = ({
1009
1010
  ] });
1010
1011
  var ResourcesMenu = ({
1011
1012
  resourceItems,
1013
+ resourcesTitle = "Resources",
1012
1014
  topicGroups,
1013
1015
  featuredHeroCard
1014
1016
  }) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid w-[1100px] grid-cols-[280px_1fr_220px] gap-6", children: [
@@ -1047,7 +1049,7 @@ var ResourcesMenu = ({
1047
1049
  }
1048
1050
  ) }),
1049
1051
  resourceItems.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "col-span-1", children: [
1050
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-3 text-left", children: /* @__PURE__ */ jsxRuntime.jsx("strong", { className: "text-xs font-medium tracking-wider text-muted-foreground uppercase", children: "Resources" }) }),
1052
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-3 text-left", children: /* @__PURE__ */ jsxRuntime.jsx("strong", { className: "text-xs font-medium tracking-wider text-muted-foreground uppercase", children: resourcesTitle }) }),
1051
1053
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-2 gap-3", children: resourceItems.map((resource) => /* @__PURE__ */ jsxRuntime.jsxs(
1052
1054
  NavigationMenuLink,
1053
1055
  {
@@ -1090,6 +1092,7 @@ var ResourcesMenu = ({
1090
1092
  var GlobalMenu = ({
1091
1093
  featureCategories,
1092
1094
  regions,
1095
+ locationsTitle = "Locations",
1093
1096
  featuredHeroCard,
1094
1097
  optixFlowConfig
1095
1098
  }) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "w-[1100px]", children: [
@@ -1149,7 +1152,7 @@ var GlobalMenu = ({
1149
1152
  ] }, category.title)) })
1150
1153
  ] }),
1151
1154
  regions.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-6", children: [
1152
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-3 border-b border-border pb-2 text-left", children: /* @__PURE__ */ jsxRuntime.jsx("strong", { className: "text-xs font-medium tracking-wider text-muted-foreground uppercase", children: "Popular Locations" }) }),
1155
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-3 border-b border-border pb-2 text-left", children: /* @__PURE__ */ jsxRuntime.jsx("strong", { className: "text-xs font-medium tracking-wider text-muted-foreground uppercase", children: locationsTitle }) }),
1153
1156
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-4 gap-4", children: regions.map((region) => /* @__PURE__ */ jsxRuntime.jsxs(
1154
1157
  "div",
1155
1158
  {
@@ -1442,6 +1445,7 @@ var renderDropdownContent = (item, optixFlowConfig) => {
1442
1445
  {
1443
1446
  solutionCards: item.solutionCards ?? [],
1444
1447
  platformItems: item.platformItems ?? [],
1448
+ platformTitle: item.platformTitle,
1445
1449
  featuredHeroCard: item.featuredHeroCard,
1446
1450
  optixFlowConfig
1447
1451
  }
@@ -1461,6 +1465,7 @@ var renderDropdownContent = (item, optixFlowConfig) => {
1461
1465
  {
1462
1466
  featureCategories: item.featureCategories ?? [],
1463
1467
  regions: item.regions ?? [],
1468
+ locationsTitle: item.locationsTitle,
1464
1469
  featuredHeroCard: item.featuredHeroCard,
1465
1470
  optixFlowConfig
1466
1471
  }
@@ -1479,6 +1484,7 @@ var renderDropdownContent = (item, optixFlowConfig) => {
1479
1484
  ResourcesMenu,
1480
1485
  {
1481
1486
  resourceItems: item.resourceItems ?? [],
1487
+ resourcesTitle: item.resourcesTitle,
1482
1488
  topicGroups: item.topicGroups ?? [],
1483
1489
  featuredHeroCard: item.featuredHeroCard
1484
1490
  }
@@ -198,11 +198,14 @@ interface IMenuLink {
198
198
  featuredHeroCard?: IFeaturedHeroCard;
199
199
  solutionCards?: ISolutionCard[];
200
200
  platformItems?: ITechnologyItem[];
201
+ platformTitle?: string;
201
202
  productCategories?: IProductCategory[];
202
203
  featureCategories?: IFeatureCategory[];
203
204
  regions?: IRegionItem[];
205
+ locationsTitle?: string;
204
206
  partnerCards?: IPartnerCard[];
205
207
  resourceItems?: IResourceItem[];
208
+ resourcesTitle?: string;
206
209
  topicGroups?: ITopicGroup[];
207
210
  }
208
211
  /**
@@ -198,11 +198,14 @@ interface IMenuLink {
198
198
  featuredHeroCard?: IFeaturedHeroCard;
199
199
  solutionCards?: ISolutionCard[];
200
200
  platformItems?: ITechnologyItem[];
201
+ platformTitle?: string;
201
202
  productCategories?: IProductCategory[];
202
203
  featureCategories?: IFeatureCategory[];
203
204
  regions?: IRegionItem[];
205
+ locationsTitle?: string;
204
206
  partnerCards?: IPartnerCard[];
205
207
  resourceItems?: IResourceItem[];
208
+ resourcesTitle?: string;
206
209
  topicGroups?: ITopicGroup[];
207
210
  }
208
211
  /**
@@ -743,6 +743,7 @@ function getNavbarLayoutClasses(layoutVariant = "fullScreenContainerizedLinks",
743
743
  var SolutionsMenu = ({
744
744
  solutionCards,
745
745
  platformItems,
746
+ platformTitle = "Platform",
746
747
  featuredHeroCard,
747
748
  optixFlowConfig
748
749
  }) => {
@@ -785,7 +786,7 @@ var SolutionsMenu = ({
785
786
  }
786
787
  ) : null;
787
788
  const platformSection = platformItems.length > 0 ? /* @__PURE__ */ jsxs("div", { className: "min-w-0", children: [
788
- /* @__PURE__ */ jsx("div", { className: "mb-3 text-left", children: /* @__PURE__ */ jsx("strong", { className: "text-xs font-medium tracking-wider text-muted-foreground uppercase", children: "Developer Platform" }) }),
789
+ /* @__PURE__ */ jsx("div", { className: "mb-3 text-left", children: /* @__PURE__ */ jsx("strong", { className: "text-xs font-medium tracking-wider text-muted-foreground uppercase", children: platformTitle }) }),
789
790
  /* @__PURE__ */ jsx("div", { className: "grid grid-cols-2 gap-2", children: platformItems.map((technology) => /* @__PURE__ */ jsxs(
790
791
  NavigationMenuLink,
791
792
  {
@@ -986,6 +987,7 @@ var ProductsMenu = ({
986
987
  ] });
987
988
  var ResourcesMenu = ({
988
989
  resourceItems,
990
+ resourcesTitle = "Resources",
989
991
  topicGroups,
990
992
  featuredHeroCard
991
993
  }) => /* @__PURE__ */ jsxs("div", { className: "grid w-[1100px] grid-cols-[280px_1fr_220px] gap-6", children: [
@@ -1024,7 +1026,7 @@ var ResourcesMenu = ({
1024
1026
  }
1025
1027
  ) }),
1026
1028
  resourceItems.length > 0 && /* @__PURE__ */ jsxs("div", { className: "col-span-1", children: [
1027
- /* @__PURE__ */ jsx("div", { className: "mb-3 text-left", children: /* @__PURE__ */ jsx("strong", { className: "text-xs font-medium tracking-wider text-muted-foreground uppercase", children: "Resources" }) }),
1029
+ /* @__PURE__ */ jsx("div", { className: "mb-3 text-left", children: /* @__PURE__ */ jsx("strong", { className: "text-xs font-medium tracking-wider text-muted-foreground uppercase", children: resourcesTitle }) }),
1028
1030
  /* @__PURE__ */ jsx("div", { className: "grid grid-cols-2 gap-3", children: resourceItems.map((resource) => /* @__PURE__ */ jsxs(
1029
1031
  NavigationMenuLink,
1030
1032
  {
@@ -1067,6 +1069,7 @@ var ResourcesMenu = ({
1067
1069
  var GlobalMenu = ({
1068
1070
  featureCategories,
1069
1071
  regions,
1072
+ locationsTitle = "Locations",
1070
1073
  featuredHeroCard,
1071
1074
  optixFlowConfig
1072
1075
  }) => /* @__PURE__ */ jsxs("div", { className: "w-[1100px]", children: [
@@ -1126,7 +1129,7 @@ var GlobalMenu = ({
1126
1129
  ] }, category.title)) })
1127
1130
  ] }),
1128
1131
  regions.length > 0 && /* @__PURE__ */ jsxs("div", { className: "mt-6", children: [
1129
- /* @__PURE__ */ jsx("div", { className: "mb-3 border-b border-border pb-2 text-left", children: /* @__PURE__ */ jsx("strong", { className: "text-xs font-medium tracking-wider text-muted-foreground uppercase", children: "Popular Locations" }) }),
1132
+ /* @__PURE__ */ jsx("div", { className: "mb-3 border-b border-border pb-2 text-left", children: /* @__PURE__ */ jsx("strong", { className: "text-xs font-medium tracking-wider text-muted-foreground uppercase", children: locationsTitle }) }),
1130
1133
  /* @__PURE__ */ jsx("div", { className: "grid grid-cols-4 gap-4", children: regions.map((region) => /* @__PURE__ */ jsxs(
1131
1134
  "div",
1132
1135
  {
@@ -1419,6 +1422,7 @@ var renderDropdownContent = (item, optixFlowConfig) => {
1419
1422
  {
1420
1423
  solutionCards: item.solutionCards ?? [],
1421
1424
  platformItems: item.platformItems ?? [],
1425
+ platformTitle: item.platformTitle,
1422
1426
  featuredHeroCard: item.featuredHeroCard,
1423
1427
  optixFlowConfig
1424
1428
  }
@@ -1438,6 +1442,7 @@ var renderDropdownContent = (item, optixFlowConfig) => {
1438
1442
  {
1439
1443
  featureCategories: item.featureCategories ?? [],
1440
1444
  regions: item.regions ?? [],
1445
+ locationsTitle: item.locationsTitle,
1441
1446
  featuredHeroCard: item.featuredHeroCard,
1442
1447
  optixFlowConfig
1443
1448
  }
@@ -1456,6 +1461,7 @@ var renderDropdownContent = (item, optixFlowConfig) => {
1456
1461
  ResourcesMenu,
1457
1462
  {
1458
1463
  resourceItems: item.resourceItems ?? [],
1464
+ resourcesTitle: item.resourcesTitle,
1459
1465
  topicGroups: item.topicGroups ?? [],
1460
1466
  featuredHeroCard: item.featuredHeroCard
1461
1467
  }
@@ -996,7 +996,8 @@ var DesktopMenuItem = ({
996
996
  src: link.image,
997
997
  alt: typeof link.label === "string" ? link.label : "",
998
998
  className: `absolute top-0 left-0 h-full w-full object-cover transition-opacity duration-300 ${linkIndex === 0 ? "opacity-100" : "opacity-0"}`,
999
- optixFlowConfig
999
+ optixFlowConfig,
1000
+ loading: "eager"
1000
1001
  },
1001
1002
  linkIndex
1002
1003
  )) }),
@@ -1082,7 +1083,14 @@ var MobileNavigationMenu = ({
1082
1083
  children: children ?? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1083
1084
  /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: icon, size: 16, className: "shrink-0" }),
1084
1085
  label,
1085
- /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: iconAfter, size: 16, className: "shrink-0" })
1086
+ /* @__PURE__ */ jsxRuntime.jsx(
1087
+ DynamicIcon,
1088
+ {
1089
+ name: iconAfter,
1090
+ size: 16,
1091
+ className: "shrink-0"
1092
+ }
1093
+ )
1086
1094
  ] })
1087
1095
  },
1088
1096
  index
@@ -31,16 +31,16 @@ interface SocialLink {
31
31
  */
32
32
  interface NavbarImagePreviewProps {
33
33
  /**
34
- * Logo configuration
35
- */
34
+ * Logo configuration
35
+ */
36
36
  logo?: LogoConfig;
37
37
  /**
38
- * Navigation menu items
39
- */
38
+ * Navigation menu items
39
+ */
40
40
  navigation?: MenuItem[];
41
41
  /**
42
- * Authentication action configurations
43
- */
42
+ * Authentication action configurations
43
+ */
44
44
  authActions?: ActionConfig[];
45
45
  }
46
46
  interface NavbarImagePreviewRuntimeProps {
@@ -31,16 +31,16 @@ interface SocialLink {
31
31
  */
32
32
  interface NavbarImagePreviewProps {
33
33
  /**
34
- * Logo configuration
35
- */
34
+ * Logo configuration
35
+ */
36
36
  logo?: LogoConfig;
37
37
  /**
38
- * Navigation menu items
39
- */
38
+ * Navigation menu items
39
+ */
40
40
  navigation?: MenuItem[];
41
41
  /**
42
- * Authentication action configurations
43
- */
42
+ * Authentication action configurations
43
+ */
44
44
  authActions?: ActionConfig[];
45
45
  }
46
46
  interface NavbarImagePreviewRuntimeProps {
@@ -973,7 +973,8 @@ var DesktopMenuItem = ({
973
973
  src: link.image,
974
974
  alt: typeof link.label === "string" ? link.label : "",
975
975
  className: `absolute top-0 left-0 h-full w-full object-cover transition-opacity duration-300 ${linkIndex === 0 ? "opacity-100" : "opacity-0"}`,
976
- optixFlowConfig
976
+ optixFlowConfig,
977
+ loading: "eager"
977
978
  },
978
979
  linkIndex
979
980
  )) }),
@@ -1059,7 +1060,14 @@ var MobileNavigationMenu = ({
1059
1060
  children: children ?? /* @__PURE__ */ jsxs(Fragment, { children: [
1060
1061
  /* @__PURE__ */ jsx(DynamicIcon, { name: icon, size: 16, className: "shrink-0" }),
1061
1062
  label,
1062
- /* @__PURE__ */ jsx(DynamicIcon, { name: iconAfter, size: 16, className: "shrink-0" })
1063
+ /* @__PURE__ */ jsx(
1064
+ DynamicIcon,
1065
+ {
1066
+ name: iconAfter,
1067
+ size: 16,
1068
+ className: "shrink-0"
1069
+ }
1070
+ )
1063
1071
  ] })
1064
1072
  },
1065
1073
  index
@@ -450,7 +450,8 @@ var ProcessCard = ({
450
450
  src: step.image,
451
451
  alt: titleText,
452
452
  className: "h-full w-full object-cover",
453
- optixFlowConfig
453
+ optixFlowConfig,
454
+ loading: "eager"
454
455
  }
455
456
  )
456
457
  }
@@ -461,7 +462,8 @@ var ProcessCard = ({
461
462
  src: step.image,
462
463
  alt: titleText,
463
464
  className: "mb-4 md:mb-0 md:hidden h-full w-full object-cover aspect-square rounded-xl shadow-lg ring-2 ring-primary",
464
- optixFlowConfig
465
+ optixFlowConfig,
466
+ loading: "eager"
465
467
  }
466
468
  ),
467
469
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-start justify-between gap-8", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start md:items-center gap-4 md:gap-8", children: [
@@ -429,7 +429,8 @@ var ProcessCard = ({
429
429
  src: step.image,
430
430
  alt: titleText,
431
431
  className: "h-full w-full object-cover",
432
- optixFlowConfig
432
+ optixFlowConfig,
433
+ loading: "eager"
433
434
  }
434
435
  )
435
436
  }
@@ -440,7 +441,8 @@ var ProcessCard = ({
440
441
  src: step.image,
441
442
  alt: titleText,
442
443
  className: "mb-4 md:mb-0 md:hidden h-full w-full object-cover aspect-square rounded-xl shadow-lg ring-2 ring-primary",
443
- optixFlowConfig
444
+ optixFlowConfig,
445
+ loading: "eager"
444
446
  }
445
447
  ),
446
448
  /* @__PURE__ */ jsx("div", { className: "flex items-start justify-between gap-8", children: /* @__PURE__ */ jsxs("div", { className: "flex items-start md:items-center gap-4 md:gap-8", children: [
@@ -458,8 +458,7 @@ function ProcessIconTimeline({
458
458
  "div",
459
459
  {
460
460
  className: cn(
461
- "absolute left-0 flex size-12 items-center justify-center rounded-full text-primary-foreground lg:left-1/2 lg:-translate-x-1/2",
462
- step.badgeColor || "bg-primary",
461
+ "absolute left-0 flex size-12 items-center justify-center rounded-full bg-primary text-primary-foreground lg:left-1/2 lg:-translate-x-1/2",
463
462
  stepBadgeClassName
464
463
  ),
465
464
  children: step.iconSlot ?? (step.icon && /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: step.icon, size: 24 }))