@opensite/ui 3.8.0 → 3.8.2

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.
@@ -7,10 +7,10 @@ var tailwindMerge = require('tailwind-merge');
7
7
  var pressable = require('@page-speed/pressable');
8
8
  var icon = require('@page-speed/icon');
9
9
  var jsxRuntime = require('react/jsx-runtime');
10
+ var img = require('@page-speed/img');
10
11
  var AccordionPrimitive = require('@radix-ui/react-accordion');
11
12
  var NavigationMenuPrimitive = require('@radix-ui/react-navigation-menu');
12
13
  var classVarianceAuthority = require('class-variance-authority');
13
- var img = require('@page-speed/img');
14
14
 
15
15
  function _interopNamespace(e) {
16
16
  if (e && e.__esModule) return e;
@@ -728,6 +728,11 @@ var NavbarLogo = ({
728
728
  );
729
729
  };
730
730
 
731
+ // components/blocks/navbars/types.ts
732
+ function getLinkUrl(item) {
733
+ return item.href || item.url || "#";
734
+ }
735
+
731
736
  // components/blocks/navbars/layout-variant-utils.ts
732
737
  function getNavbarLayoutClasses(layoutVariant = "fullScreenContainerizedLinks", customClasses) {
733
738
  const isFloatingBar = layoutVariant === "floatingBar";
@@ -763,6 +768,64 @@ function getNavbarLayoutClasses(layoutVariant = "fullScreenContainerizedLinks",
763
768
  spacingOverride: isFloatingBar ? "none" : "py-0 md:py-0"
764
769
  };
765
770
  }
771
+ var PANEL_MAX_WIDTH_CLASS = "max-w-[calc(100vw-4rem)]";
772
+ var hasItems = (items) => Array.isArray(items) && items.length > 0;
773
+ var hasFeaturedHeroCardContent = (card) => Boolean(
774
+ card && (card.title || card.subtitle || card.description || card.image)
775
+ );
776
+ var FeaturedHeroCardPanel = ({
777
+ card,
778
+ optixFlowConfig,
779
+ className,
780
+ contentClassName,
781
+ imageContainerClassName = "relative aspect-video w-full overflow-hidden",
782
+ imageClassName,
783
+ contentFirst
784
+ }) => {
785
+ const image = card.image ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: imageContainerClassName, children: /* @__PURE__ */ jsxRuntime.jsx(
786
+ img.Img,
787
+ {
788
+ src: card.image,
789
+ alt: card.title,
790
+ className: cn("h-full w-full object-cover", imageClassName),
791
+ optixFlowConfig,
792
+ loading: "eager"
793
+ }
794
+ ) }) : null;
795
+ const content = /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex flex-col p-5", contentClassName), children: [
796
+ card.subtitle && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "mb-2 text-xs font-medium tracking-wider uppercase", children: card.subtitle }),
797
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1.5 text-base font-semibold", children: [
798
+ card.title,
799
+ /* @__PURE__ */ jsxRuntime.jsx(
800
+ DynamicIcon,
801
+ {
802
+ name: "lucide/arrow-right",
803
+ size: 16,
804
+ className: "shrink-0 transition-transform group-hover:translate-x-1"
805
+ }
806
+ )
807
+ ] }),
808
+ card.description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-2 text-sm leading-relaxed opacity-90", children: card.description })
809
+ ] });
810
+ return /* @__PURE__ */ jsxRuntime.jsx(
811
+ pressable.Pressable,
812
+ {
813
+ href: card.href,
814
+ className: cn(
815
+ "group flex h-full flex-col overflow-hidden rounded-lg text-primary-foreground",
816
+ card.variant === "accent" ? "bg-accent text-accent-foreground" : "bg-primary",
817
+ className
818
+ ),
819
+ children: contentFirst ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
820
+ content,
821
+ image
822
+ ] }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
823
+ image,
824
+ content
825
+ ] })
826
+ }
827
+ );
828
+ };
766
829
  var SolutionsMenu = ({
767
830
  solutionCards,
768
831
  platformItems,
@@ -770,492 +833,458 @@ var SolutionsMenu = ({
770
833
  featuredHeroCard,
771
834
  optixFlowConfig
772
835
  }) => {
773
- const featuredCard = featuredHeroCard ? /* @__PURE__ */ jsxRuntime.jsxs(
774
- pressable.Pressable,
836
+ const visibleSolutionCards = solutionCards.filter(Boolean);
837
+ const visiblePlatformItems = platformItems.filter(Boolean);
838
+ const hasFeaturedCard = hasFeaturedHeroCardContent(featuredHeroCard);
839
+ const hasPlatformSection = hasItems(visiblePlatformItems);
840
+ const hasSolutionSection = hasItems(visibleSolutionCards);
841
+ const hasRightColumn = hasPlatformSection || hasSolutionSection;
842
+ if (!hasFeaturedCard && !hasRightColumn) return null;
843
+ const featuredCard = hasFeaturedCard && featuredHeroCard ? /* @__PURE__ */ jsxRuntime.jsx(
844
+ FeaturedHeroCardPanel,
775
845
  {
776
- href: featuredHeroCard.href,
777
- className: cn(
778
- "group flex h-full min-h-[420px] flex-col overflow-hidden rounded-lg text-primary-foreground",
779
- featuredHeroCard.variant === "accent" ? "bg-accent text-accent-foreground" : "bg-primary"
780
- ),
781
- children: [
782
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex shrink-0 flex-col justify-between p-5", children: [
783
- featuredHeroCard.subtitle && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "mb-2 text-xs font-medium tracking-wider uppercase", children: featuredHeroCard.subtitle }),
784
- /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
785
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1.5 text-base font-semibold", children: [
786
- featuredHeroCard.title,
787
- /* @__PURE__ */ jsxRuntime.jsx(
788
- DynamicIcon,
789
- {
790
- name: "lucide/arrow-right",
791
- size: 16,
792
- className: "transition-transform group-hover:translate-x-1"
793
- }
794
- )
795
- ] }),
796
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-2 text-sm leading-relaxed text-primary-foreground/85", children: featuredHeroCard.description })
797
- ] })
798
- ] }),
799
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative min-h-0 flex-1 overflow-hidden", children: /* @__PURE__ */ jsxRuntime.jsx(
800
- img.Img,
801
- {
802
- src: featuredHeroCard.image,
803
- alt: featuredHeroCard.title,
804
- className: "h-full w-full object-cover",
805
- optixFlowConfig,
806
- loading: "eager"
807
- }
808
- ) })
809
- ]
846
+ card: featuredHeroCard,
847
+ optixFlowConfig,
848
+ contentFirst: true,
849
+ className: cn(featuredHeroCard.image && "min-h-[420px]"),
850
+ imageContainerClassName: "relative min-h-0 flex-1 overflow-hidden"
810
851
  }
811
852
  ) : null;
812
- const platformSection = platformItems.length > 0 ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0", children: [
853
+ const platformSection = hasPlatformSection ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0", children: [
813
854
  /* @__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 }) }),
814
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-2 gap-2", children: platformItems.map((technology) => /* @__PURE__ */ jsxRuntime.jsxs(
815
- NavigationMenuLink,
855
+ /* @__PURE__ */ jsxRuntime.jsx(
856
+ "div",
816
857
  {
817
- href: technology.href,
818
- className: "group !flex !w-full min-w-0 items-center gap-2 rounded-lg p-2 hover:bg-muted",
819
- children: [
820
- /* @__PURE__ */ jsxRuntime.jsx(
821
- DynamicIcon,
822
- {
823
- name: technology.icon,
824
- size: 16,
825
- className: "shrink-0"
826
- }
827
- ),
828
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "min-w-0 flex-1 text-sm font-medium", children: technology.title })
829
- ]
830
- },
831
- technology.id
832
- )) })
833
- ] }) : null;
834
- const solutionSection = solutionCards.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-2 gap-3", children: solutionCards.map((solution) => /* @__PURE__ */ jsxRuntime.jsxs(
835
- "div",
836
- {
837
- className: "flex min-w-0 flex-col rounded-lg border border-border p-4",
838
- children: [
839
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "border-b border-border pb-3", children: /* @__PURE__ */ jsxRuntime.jsxs(
840
- pressable.Pressable,
841
- {
842
- href: solution.href,
843
- className: "group flex min-w-0 flex-col text-left",
844
- children: [
845
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex min-w-0 items-center gap-1", children: [
846
- /* @__PURE__ */ jsxRuntime.jsx("strong", { className: "min-w-0 break-words text-sm font-medium", children: solution.title }),
847
- /* @__PURE__ */ jsxRuntime.jsx(
848
- DynamicIcon,
849
- {
850
- name: "lucide/arrow-right",
851
- size: 14,
852
- className: "shrink-0 transition-transform group-hover:translate-x-1"
853
- }
854
- )
855
- ] }),
856
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-1 break-words text-xs text-muted-foreground", children: solution.description })
857
- ]
858
- }
859
- ) }),
860
- /* @__PURE__ */ jsxRuntime.jsx("menu", { className: "mt-3 grid gap-2", children: solution.subpages.map((subpage) => /* @__PURE__ */ jsxRuntime.jsxs(
858
+ className: cn(
859
+ "grid gap-2",
860
+ hasFeaturedCard ? "grid-cols-2" : "grid-cols-[repeat(auto-fit,minmax(160px,1fr))]"
861
+ ),
862
+ children: visiblePlatformItems.map((technology) => /* @__PURE__ */ jsxRuntime.jsxs(
861
863
  NavigationMenuLink,
862
864
  {
863
- href: subpage.href,
864
- className: "group !flex !w-full min-w-0 items-center gap-2 rounded-lg p-2 text-left hover:bg-muted",
865
+ href: technology.href,
866
+ className: "group !flex !w-full min-w-0 items-center gap-2 rounded-lg p-2 hover:bg-muted",
865
867
  children: [
866
868
  /* @__PURE__ */ jsxRuntime.jsx(
867
869
  DynamicIcon,
868
870
  {
869
- name: subpage.icon,
870
- size: 14,
871
+ name: technology.icon,
872
+ size: 16,
871
873
  className: "shrink-0"
872
874
  }
873
875
  ),
874
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "min-w-0 flex-1 break-words text-sm font-medium", children: subpage.title })
876
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "min-w-0 flex-1 text-sm font-medium", children: technology.title })
875
877
  ]
876
878
  },
877
- subpage.id
878
- )) })
879
- ]
880
- },
881
- solution.id
882
- )) }) : null;
883
- if (featuredCard) {
884
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid w-[1200px] max-w-[calc(100vw-4rem)] grid-cols-[minmax(380px,1fr)_minmax(360px,0.95fr)] gap-4", children: [
885
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "min-w-0", children: featuredCard }),
886
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex min-w-0 flex-col gap-4", children: [
887
- platformSection,
888
- solutionSection
889
- ] })
890
- ] });
891
- }
892
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid w-[1200px] max-w-[calc(100vw-4rem)] grid-cols-2 gap-4", children: [
893
- platformSection,
894
- solutionCards.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "col-span-2 grid grid-cols-4 gap-3", children: solutionCards.map((solution) => /* @__PURE__ */ jsxRuntime.jsxs(
895
- "div",
896
- {
897
- className: "flex min-w-0 flex-col rounded-lg border border-border p-4",
898
- children: [
899
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "border-b border-border pb-3", children: /* @__PURE__ */ jsxRuntime.jsxs(
900
- pressable.Pressable,
901
- {
902
- href: solution.href,
903
- className: "group flex min-w-0 flex-col text-left",
904
- children: [
905
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex min-w-0 items-center gap-1", children: [
906
- /* @__PURE__ */ jsxRuntime.jsx("strong", { className: "min-w-0 break-words text-sm font-medium", children: solution.title }),
879
+ technology.id
880
+ ))
881
+ }
882
+ )
883
+ ] }) : null;
884
+ const solutionSection = hasSolutionSection ? /* @__PURE__ */ jsxRuntime.jsx(
885
+ "div",
886
+ {
887
+ className: cn(
888
+ "grid gap-3",
889
+ hasFeaturedCard ? "grid-cols-2" : "grid-cols-[repeat(auto-fit,minmax(220px,1fr))]"
890
+ ),
891
+ children: visibleSolutionCards.map((solution) => /* @__PURE__ */ jsxRuntime.jsxs(
892
+ "div",
893
+ {
894
+ className: "flex min-w-0 flex-col rounded-lg border border-border p-4",
895
+ children: [
896
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "border-b border-border pb-3", children: /* @__PURE__ */ jsxRuntime.jsxs(
897
+ pressable.Pressable,
898
+ {
899
+ href: solution.href,
900
+ className: "group flex min-w-0 flex-col text-left",
901
+ children: [
902
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex min-w-0 items-center gap-1", children: [
903
+ /* @__PURE__ */ jsxRuntime.jsx("strong", { className: "min-w-0 break-words text-sm font-medium", children: solution.title }),
904
+ /* @__PURE__ */ jsxRuntime.jsx(
905
+ DynamicIcon,
906
+ {
907
+ name: "lucide/arrow-right",
908
+ size: 14,
909
+ className: "shrink-0 transition-transform group-hover:translate-x-1"
910
+ }
911
+ )
912
+ ] }),
913
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-1 break-words text-xs text-muted-foreground", children: solution.description })
914
+ ]
915
+ }
916
+ ) }),
917
+ /* @__PURE__ */ jsxRuntime.jsx("menu", { className: "mt-3 grid gap-2", children: (solution.subpages ?? []).map((subpage) => /* @__PURE__ */ jsxRuntime.jsxs(
918
+ NavigationMenuLink,
919
+ {
920
+ href: subpage.href,
921
+ className: "group !flex !w-full min-w-0 items-center gap-2 rounded-lg p-2 text-left hover:bg-muted",
922
+ children: [
907
923
  /* @__PURE__ */ jsxRuntime.jsx(
908
924
  DynamicIcon,
909
925
  {
910
- name: "lucide/arrow-right",
926
+ name: subpage.icon,
911
927
  size: 14,
912
- className: "shrink-0 transition-transform group-hover:translate-x-1"
928
+ className: "shrink-0"
913
929
  }
914
- )
915
- ] }),
916
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-1 break-words text-xs text-muted-foreground", children: solution.description })
917
- ]
918
- }
919
- ) }),
920
- /* @__PURE__ */ jsxRuntime.jsx("menu", { className: "mt-3 grid gap-2", children: solution.subpages.map((subpage) => /* @__PURE__ */ jsxRuntime.jsxs(
921
- NavigationMenuLink,
922
- {
923
- href: subpage.href,
924
- className: "group !flex !w-full min-w-0 items-center gap-2 rounded-lg p-2 text-left hover:bg-muted",
925
- children: [
926
- /* @__PURE__ */ jsxRuntime.jsx(
927
- DynamicIcon,
928
- {
929
- name: subpage.icon,
930
- size: 14,
931
- className: "shrink-0"
932
- }
933
- ),
934
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "min-w-0 flex-1 break-words text-sm font-medium", children: subpage.title })
935
- ]
936
- },
937
- subpage.id
938
- )) })
939
- ]
940
- },
941
- solution.id
942
- )) })
943
- ] });
930
+ ),
931
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "min-w-0 flex-1 break-words text-sm font-medium", children: subpage.title })
932
+ ]
933
+ },
934
+ subpage.id
935
+ )) })
936
+ ]
937
+ },
938
+ solution.id
939
+ ))
940
+ }
941
+ ) : null;
942
+ return /* @__PURE__ */ jsxRuntime.jsxs(
943
+ "div",
944
+ {
945
+ className: cn(
946
+ "grid gap-4",
947
+ PANEL_MAX_WIDTH_CLASS,
948
+ hasFeaturedCard && hasRightColumn ? "w-[1200px] grid-cols-[minmax(380px,1fr)_minmax(360px,0.95fr)]" : hasFeaturedCard ? "w-[560px] grid-cols-1" : hasSolutionSection ? "w-[900px] grid-cols-1" : "w-[520px] grid-cols-1"
949
+ ),
950
+ children: [
951
+ featuredCard && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "min-w-0", children: featuredCard }),
952
+ hasRightColumn && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex min-w-0 flex-col gap-4", children: [
953
+ platformSection,
954
+ solutionSection
955
+ ] })
956
+ ]
957
+ }
958
+ );
944
959
  };
945
960
  var ProductsMenu = ({
946
961
  productCategories,
947
962
  featuredHeroCard,
948
963
  optixFlowConfig
949
- }) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid w-[1100px] grid-cols-[320px_1fr] gap-6", children: [
950
- featuredHeroCard && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "col-span-1", children: /* @__PURE__ */ jsxRuntime.jsxs(
951
- pressable.Pressable,
964
+ }) => {
965
+ const visibleCategories = productCategories.filter(
966
+ (category) => hasItems(category.products)
967
+ );
968
+ const hasFeaturedCard = hasFeaturedHeroCardContent(featuredHeroCard);
969
+ const hasProductContent = hasItems(visibleCategories);
970
+ if (!hasFeaturedCard && !hasProductContent) return null;
971
+ return /* @__PURE__ */ jsxRuntime.jsxs(
972
+ "div",
952
973
  {
953
- href: featuredHeroCard.href,
954
974
  className: cn(
955
- "group flex h-full flex-col overflow-hidden rounded-lg text-primary-foreground",
956
- featuredHeroCard.variant === "accent" ? "bg-accent text-accent-foreground" : "bg-primary"
975
+ "grid gap-6",
976
+ PANEL_MAX_WIDTH_CLASS,
977
+ hasFeaturedCard && hasProductContent ? "w-[1100px] grid-cols-[320px_1fr]" : hasProductContent ? "w-[860px] grid-cols-1" : "w-[360px] grid-cols-1"
957
978
  ),
958
979
  children: [
959
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative aspect-video w-full overflow-hidden", children: /* @__PURE__ */ jsxRuntime.jsx(
960
- img.Img,
980
+ hasFeaturedCard && featuredHeroCard && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "col-span-1 min-w-0", children: /* @__PURE__ */ jsxRuntime.jsx(
981
+ FeaturedHeroCardPanel,
961
982
  {
962
- src: featuredHeroCard.image,
963
- alt: featuredHeroCard.title,
964
- className: "h-full w-full object-cover",
965
- optixFlowConfig,
966
- loading: "eager"
983
+ card: featuredHeroCard,
984
+ optixFlowConfig
967
985
  }
968
986
  ) }),
969
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col p-5", children: [
970
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1.5 text-base font-semibold", children: [
971
- featuredHeroCard.title,
972
- /* @__PURE__ */ jsxRuntime.jsx(
973
- DynamicIcon,
974
- {
975
- name: "lucide/arrow-right",
976
- size: 16,
977
- className: "transition-transform group-hover:translate-x-1"
978
- }
979
- )
980
- ] }),
981
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-2 text-sm leading-relaxed text-primary-foreground/85", children: featuredHeroCard.description })
982
- ] })
983
- ]
984
- }
985
- ) }),
986
- productCategories.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "col-span-1 flex flex-col gap-6", children: productCategories.map((category) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-3", children: [
987
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "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: category.title }) }),
988
- /* @__PURE__ */ jsxRuntime.jsx("menu", { className: "grid grid-cols-3 gap-3", children: category.products.map((product) => /* @__PURE__ */ jsxRuntime.jsxs(
989
- NavigationMenuLink,
990
- {
991
- href: product.href,
992
- className: "group col-span-1 !flex !w-full items-center gap-3 rounded-lg p-3 text-left hover:bg-muted",
993
- children: [
994
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative flex size-12 shrink-0 items-center justify-center overflow-hidden rounded", children: /* @__PURE__ */ jsxRuntime.jsx(
995
- img.Img,
987
+ hasProductContent && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "col-span-1 flex min-w-0 flex-col gap-6", children: visibleCategories.map((category) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex min-w-0 flex-col gap-3", children: [
988
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "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: category.title }) }),
989
+ /* @__PURE__ */ jsxRuntime.jsx(
990
+ "menu",
996
991
  {
997
- src: product.image,
998
- alt: product.title,
999
- className: "h-full w-full object-cover",
1000
- optixFlowConfig,
1001
- loading: "eager"
992
+ className: cn(
993
+ "grid gap-3",
994
+ hasFeaturedCard ? "grid-cols-3" : "grid-cols-[repeat(auto-fit,minmax(220px,1fr))]"
995
+ ),
996
+ children: category.products.map((product) => /* @__PURE__ */ jsxRuntime.jsxs(
997
+ NavigationMenuLink,
998
+ {
999
+ href: product.href,
1000
+ className: "group col-span-1 !flex !w-full min-w-0 items-center gap-3 rounded-lg p-3 text-left hover:bg-muted",
1001
+ children: [
1002
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative flex size-12 shrink-0 items-center justify-center overflow-hidden rounded bg-muted text-muted-foreground", children: product.image ? /* @__PURE__ */ jsxRuntime.jsx(
1003
+ img.Img,
1004
+ {
1005
+ src: product.image,
1006
+ alt: product.title,
1007
+ className: "h-full w-full object-cover",
1008
+ optixFlowConfig,
1009
+ loading: "eager"
1010
+ }
1011
+ ) : /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/package", size: 18 }) }),
1012
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0 flex-1", children: [
1013
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "break-words text-sm font-medium", children: product.title }),
1014
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-0.5 break-words text-xs text-muted-foreground", children: product.description })
1015
+ ] })
1016
+ ]
1017
+ },
1018
+ product.id
1019
+ ))
1002
1020
  }
1003
- ) }),
1004
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0 flex-1", children: [
1005
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm font-medium", children: product.title }),
1006
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-0.5 text-xs text-muted-foreground", children: product.description })
1007
- ] })
1008
- ]
1009
- },
1010
- product.id
1011
- )) })
1012
- ] }, category.title)) })
1013
- ] });
1021
+ )
1022
+ ] }, category.title)) })
1023
+ ]
1024
+ }
1025
+ );
1026
+ };
1014
1027
  var ResourcesMenu = ({
1015
1028
  resourceItems,
1016
1029
  resourcesTitle = "Resources",
1017
1030
  topicGroups,
1018
- featuredHeroCard
1019
- }) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid w-[1100px] grid-cols-[280px_1fr_220px] gap-6", children: [
1020
- featuredHeroCard && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "col-span-1", children: /* @__PURE__ */ jsxRuntime.jsxs(
1021
- pressable.Pressable,
1031
+ featuredHeroCard,
1032
+ optixFlowConfig
1033
+ }) => {
1034
+ const visibleTopicGroups = topicGroups.filter(
1035
+ (group) => hasItems(group.topics)
1036
+ );
1037
+ const hasFeaturedCard = hasFeaturedHeroCardContent(featuredHeroCard);
1038
+ const hasResourceContent = hasItems(resourceItems);
1039
+ const hasTopicContent = hasItems(visibleTopicGroups);
1040
+ if (!hasFeaturedCard && !hasResourceContent && !hasTopicContent) return null;
1041
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1042
+ "div",
1022
1043
  {
1023
- href: featuredHeroCard.href,
1024
1044
  className: cn(
1025
- "group flex h-full flex-col overflow-hidden rounded-lg text-primary-foreground",
1026
- featuredHeroCard.variant === "accent" ? "bg-accent text-accent-foreground" : "bg-primary"
1045
+ "grid gap-6",
1046
+ PANEL_MAX_WIDTH_CLASS,
1047
+ hasFeaturedCard && hasResourceContent && hasTopicContent ? "w-[1100px] grid-cols-[280px_1fr_220px]" : hasFeaturedCard && hasResourceContent ? "w-[900px] grid-cols-[280px_1fr]" : hasFeaturedCard && hasTopicContent ? "w-[560px] grid-cols-[280px_220px]" : hasResourceContent && hasTopicContent ? "w-[900px] grid-cols-[1fr_220px]" : hasResourceContent ? "w-[700px] grid-cols-1" : hasTopicContent ? "w-[280px] grid-cols-1" : "w-[320px] grid-cols-1"
1027
1048
  ),
1028
1049
  children: [
1029
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative aspect-[4/3] w-full overflow-hidden", children: /* @__PURE__ */ jsxRuntime.jsx(
1030
- img.Img,
1050
+ hasFeaturedCard && featuredHeroCard && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "col-span-1 min-w-0", children: /* @__PURE__ */ jsxRuntime.jsx(
1051
+ FeaturedHeroCardPanel,
1031
1052
  {
1032
- src: featuredHeroCard.image,
1033
- alt: featuredHeroCard.title,
1034
- className: "h-full w-full object-cover invert",
1035
- loading: "eager"
1053
+ card: featuredHeroCard,
1054
+ optixFlowConfig,
1055
+ imageContainerClassName: "relative aspect-[4/3] w-full overflow-hidden",
1056
+ imageClassName: "invert"
1036
1057
  }
1037
1058
  ) }),
1038
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col p-5", children: [
1039
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1.5 text-base font-semibold", children: [
1040
- featuredHeroCard.title,
1041
- /* @__PURE__ */ jsxRuntime.jsx(
1042
- DynamicIcon,
1043
- {
1044
- name: "lucide/arrow-right",
1045
- size: 16,
1046
- className: "transition-transform group-hover:translate-x-1"
1047
- }
1048
- )
1049
- ] }),
1050
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-2 text-sm leading-relaxed", children: featuredHeroCard.description })
1051
- ] })
1052
- ]
1053
- }
1054
- ) }),
1055
- resourceItems.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "col-span-1", children: [
1056
- /* @__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 }) }),
1057
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-2 gap-3", children: resourceItems.map((resource) => /* @__PURE__ */ jsxRuntime.jsxs(
1058
- NavigationMenuLink,
1059
- {
1060
- href: resource.href,
1061
- className: "group col-span-1 !flex !w-full items-start gap-3 rounded-lg border border-border p-3 hover:bg-muted",
1062
- children: [
1059
+ hasResourceContent && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "col-span-1 min-w-0", children: [
1060
+ /* @__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 }) }),
1063
1061
  /* @__PURE__ */ jsxRuntime.jsx(
1064
- DynamicIcon,
1062
+ "div",
1065
1063
  {
1066
- name: resource.icon,
1067
- size: 18,
1068
- className: "mt-0.5 shrink-0"
1064
+ className: cn(
1065
+ "grid gap-3",
1066
+ resourceItems.length > 1 ? "grid-cols-2" : "grid-cols-1"
1067
+ ),
1068
+ children: resourceItems.map((resource) => /* @__PURE__ */ jsxRuntime.jsxs(
1069
+ NavigationMenuLink,
1070
+ {
1071
+ href: resource.href,
1072
+ className: "group col-span-1 !flex !w-full min-w-0 items-start gap-3 rounded-lg border border-border p-3 hover:bg-muted",
1073
+ children: [
1074
+ /* @__PURE__ */ jsxRuntime.jsx(
1075
+ DynamicIcon,
1076
+ {
1077
+ name: resource.icon,
1078
+ size: 18,
1079
+ className: "mt-0.5 shrink-0"
1080
+ }
1081
+ ),
1082
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0 flex-1", children: [
1083
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "break-words text-sm font-medium", children: resource.title }),
1084
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-0.5 break-words text-xs text-muted-foreground", children: resource.description })
1085
+ ] })
1086
+ ]
1087
+ },
1088
+ resource.id
1089
+ ))
1069
1090
  }
1070
- ),
1071
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0 flex-1", children: [
1072
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm font-medium", children: resource.title }),
1073
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-0.5 text-xs text-muted-foreground", children: resource.description })
1074
- ] })
1075
- ]
1076
- },
1077
- resource.id
1078
- )) })
1079
- ] }),
1080
- topicGroups.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "col-span-1", children: topicGroups.map((group) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-5 last:mb-0", children: [
1081
- /* @__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: group.title }) }),
1082
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-1.5", children: group.topics.map((topic) => /* @__PURE__ */ jsxRuntime.jsxs(
1083
- NavigationMenuLink,
1084
- {
1085
- href: topic.href,
1086
- className: "group !flex !w-full items-center gap-2 rounded-lg p-2 hover:bg-muted",
1087
- children: [
1088
- /* @__PURE__ */ jsxRuntime.jsx(
1089
- DynamicIcon,
1091
+ )
1092
+ ] }),
1093
+ hasTopicContent && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "col-span-1 min-w-0", children: visibleTopicGroups.map((group) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-5 last:mb-0", children: [
1094
+ /* @__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: group.title }) }),
1095
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-1.5", children: group.topics.map((topic) => /* @__PURE__ */ jsxRuntime.jsxs(
1096
+ NavigationMenuLink,
1090
1097
  {
1091
- name: topic.icon,
1092
- size: 14,
1093
- className: "shrink-0"
1094
- }
1095
- ),
1096
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "min-w-0 flex-1 text-sm font-medium", children: topic.title })
1097
- ]
1098
- },
1099
- topic.id
1100
- )) })
1101
- ] }, group.title)) })
1102
- ] });
1098
+ href: topic.href,
1099
+ className: "group !flex !w-full min-w-0 items-center gap-2 rounded-lg p-2 hover:bg-muted",
1100
+ children: [
1101
+ /* @__PURE__ */ jsxRuntime.jsx(
1102
+ DynamicIcon,
1103
+ {
1104
+ name: topic.icon,
1105
+ size: 14,
1106
+ className: "shrink-0"
1107
+ }
1108
+ ),
1109
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "min-w-0 flex-1 break-words text-sm font-medium", children: topic.title })
1110
+ ]
1111
+ },
1112
+ topic.id
1113
+ )) })
1114
+ ] }, group.title)) })
1115
+ ]
1116
+ }
1117
+ );
1118
+ };
1103
1119
  var GlobalMenu = ({
1104
1120
  featureCategories,
1105
1121
  regions,
1106
1122
  locationsTitle = "Locations",
1107
1123
  featuredHeroCard,
1108
1124
  optixFlowConfig
1109
- }) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "w-[1100px]", children: [
1110
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-[280px_1fr] gap-6", children: [
1111
- featuredHeroCard && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "col-span-1", children: /* @__PURE__ */ jsxRuntime.jsxs(
1112
- pressable.Pressable,
1113
- {
1114
- href: featuredHeroCard.href,
1115
- className: cn(
1116
- "group flex h-full flex-col overflow-hidden rounded-lg text-primary-foreground",
1117
- featuredHeroCard.variant === "accent" ? "bg-accent text-accent-foreground" : "bg-primary"
1118
- ),
1119
- children: [
1120
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative aspect-[4/3] w-full overflow-hidden", children: /* @__PURE__ */ jsxRuntime.jsx(
1121
- img.Img,
1122
- {
1123
- src: featuredHeroCard.image,
1124
- alt: featuredHeroCard.title,
1125
- className: "h-full w-full object-cover",
1126
- optixFlowConfig,
1127
- loading: "eager"
1128
- }
1129
- ) }),
1130
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col p-5", children: [
1131
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1.5 text-base font-semibold", children: [
1132
- featuredHeroCard.title,
1133
- /* @__PURE__ */ jsxRuntime.jsx(
1134
- DynamicIcon,
1125
+ }) => {
1126
+ const visibleFeatureCategories = featureCategories.filter(
1127
+ (category) => hasItems(category.features)
1128
+ );
1129
+ const visibleRegions = regions.filter((region) => hasItems(region.locations));
1130
+ const hasFeaturedCard = hasFeaturedHeroCardContent(featuredHeroCard);
1131
+ const hasFeatureContent = hasItems(visibleFeatureCategories);
1132
+ const hasRegionContent = hasItems(visibleRegions);
1133
+ if (!hasFeaturedCard && !hasFeatureContent && !hasRegionContent) return null;
1134
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1135
+ "div",
1136
+ {
1137
+ className: cn(
1138
+ PANEL_MAX_WIDTH_CLASS,
1139
+ hasFeatureContent && hasFeaturedCard ? "w-[1100px]" : hasFeatureContent || hasRegionContent ? "w-[900px]" : "w-[320px]"
1140
+ ),
1141
+ children: [
1142
+ (hasFeaturedCard || hasFeatureContent) && /* @__PURE__ */ jsxRuntime.jsxs(
1143
+ "div",
1144
+ {
1145
+ className: cn(
1146
+ "grid gap-6",
1147
+ hasFeaturedCard && hasFeatureContent ? "grid-cols-[280px_1fr]" : "grid-cols-1"
1148
+ ),
1149
+ children: [
1150
+ hasFeaturedCard && featuredHeroCard && /* @__PURE__ */ jsxRuntime.jsx(
1151
+ "div",
1135
1152
  {
1136
- name: "lucide/arrow-right",
1137
- size: 16,
1138
- className: "transition-transform group-hover:translate-x-1"
1153
+ className: cn(
1154
+ "col-span-1 min-w-0",
1155
+ !hasFeatureContent && hasRegionContent && "max-w-[320px]"
1156
+ ),
1157
+ children: /* @__PURE__ */ jsxRuntime.jsx(
1158
+ FeaturedHeroCardPanel,
1159
+ {
1160
+ card: featuredHeroCard,
1161
+ optixFlowConfig,
1162
+ imageContainerClassName: "relative aspect-[4/3] w-full overflow-hidden"
1163
+ }
1164
+ )
1139
1165
  }
1140
- )
1141
- ] }),
1142
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-2 text-sm leading-relaxed text-primary-foreground/85", children: featuredHeroCard.description })
1143
- ] })
1144
- ]
1145
- }
1146
- ) }),
1147
- featureCategories.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "col-span-1 flex flex-col gap-6", children: featureCategories.map((category) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-3", children: [
1148
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "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: category.title }) }),
1149
- /* @__PURE__ */ jsxRuntime.jsx("menu", { className: "grid grid-cols-3 gap-3", children: category.features.map((feature) => /* @__PURE__ */ jsxRuntime.jsxs(
1150
- NavigationMenuLink,
1151
- {
1152
- href: feature.href,
1153
- className: "group col-span-1 !flex !w-full items-center gap-2 rounded-lg p-2 text-left hover:bg-muted",
1154
- children: [
1155
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex size-8 shrink-0 items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: feature.icon, size: 18 }) }),
1156
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0 flex-1", children: [
1157
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm font-medium", children: feature.title }),
1158
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-0.5 text-xs text-muted-foreground", children: feature.description })
1159
- ] })
1160
- ]
1161
- },
1162
- feature.id
1163
- )) })
1164
- ] }, category.title)) })
1165
- ] }),
1166
- regions.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-6", children: [
1167
- /* @__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 }) }),
1168
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-4 gap-4", children: regions.map((region) => /* @__PURE__ */ jsxRuntime.jsxs(
1169
- "div",
1170
- {
1171
- className: "col-span-1 flex w-full flex-col gap-3",
1172
- children: [
1173
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-left text-xs font-medium text-muted-foreground", children: region.title }),
1174
- /* @__PURE__ */ jsxRuntime.jsx("menu", { className: "grid gap-1.5", children: region.locations.map((location) => /* @__PURE__ */ jsxRuntime.jsxs(
1175
- NavigationMenuLink,
1166
+ ),
1167
+ hasFeatureContent && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "col-span-1 flex min-w-0 flex-col gap-6", children: visibleFeatureCategories.map((category) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex min-w-0 flex-col gap-3", children: [
1168
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "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: category.title }) }),
1169
+ /* @__PURE__ */ jsxRuntime.jsx(
1170
+ "menu",
1171
+ {
1172
+ className: cn(
1173
+ "grid gap-3",
1174
+ hasFeaturedCard ? "grid-cols-3" : "grid-cols-[repeat(auto-fit,minmax(220px,1fr))]"
1175
+ ),
1176
+ children: category.features.map((feature) => /* @__PURE__ */ jsxRuntime.jsxs(
1177
+ NavigationMenuLink,
1178
+ {
1179
+ href: feature.href,
1180
+ className: "group col-span-1 !flex !w-full min-w-0 items-center gap-2 rounded-lg p-2 text-left hover:bg-muted",
1181
+ children: [
1182
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex size-8 shrink-0 items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: feature.icon, size: 18 }) }),
1183
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0 flex-1", children: [
1184
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "break-words text-sm font-medium", children: feature.title }),
1185
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-0.5 break-words text-xs text-muted-foreground", children: feature.description })
1186
+ ] })
1187
+ ]
1188
+ },
1189
+ feature.id
1190
+ ))
1191
+ }
1192
+ )
1193
+ ] }, category.title)) })
1194
+ ]
1195
+ }
1196
+ ),
1197
+ hasRegionContent && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn(hasFeaturedCard || hasFeatureContent ? "mt-6" : ""), children: [
1198
+ /* @__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 }) }),
1199
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-[repeat(auto-fit,minmax(150px,1fr))] gap-4", children: visibleRegions.map((region) => /* @__PURE__ */ jsxRuntime.jsxs(
1200
+ "div",
1176
1201
  {
1177
- href: location.href,
1178
- className: "group !flex !w-full items-center gap-2 rounded-lg p-2 text-left hover:bg-muted",
1202
+ className: "col-span-1 flex w-full min-w-0 flex-col gap-3",
1179
1203
  children: [
1180
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex size-4 shrink-0 items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(
1181
- DynamicIcon,
1204
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "break-words text-left text-xs font-medium text-muted-foreground", children: region.title }),
1205
+ /* @__PURE__ */ jsxRuntime.jsx("menu", { className: "grid gap-1.5", children: region.locations.map((location) => /* @__PURE__ */ jsxRuntime.jsxs(
1206
+ NavigationMenuLink,
1182
1207
  {
1183
- name: location.icon,
1184
- size: 16,
1185
- className: "shrink-0"
1186
- }
1187
- ) }),
1188
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "min-w-0 flex-1 text-sm font-medium", children: location.title })
1208
+ href: location.href,
1209
+ className: "group !flex !w-full min-w-0 items-center gap-2 rounded-lg p-2 text-left hover:bg-muted",
1210
+ children: [
1211
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex size-4 shrink-0 items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(
1212
+ DynamicIcon,
1213
+ {
1214
+ name: location.icon,
1215
+ size: 16,
1216
+ className: "shrink-0"
1217
+ }
1218
+ ) }),
1219
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "min-w-0 flex-1 break-words text-sm font-medium", children: location.title })
1220
+ ]
1221
+ },
1222
+ location.title
1223
+ )) })
1189
1224
  ]
1190
1225
  },
1191
- location.title
1226
+ region.title
1192
1227
  )) })
1193
- ]
1194
- },
1195
- region.title
1196
- )) })
1197
- ] })
1198
- ] });
1228
+ ] })
1229
+ ]
1230
+ }
1231
+ );
1232
+ };
1199
1233
  var PartnersMenu = ({
1200
1234
  partnerCards,
1201
1235
  featuredHeroCard,
1202
1236
  optixFlowConfig
1203
- }) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid w-[1000px] grid-cols-[2fr_1fr] gap-6", children: [
1204
- featuredHeroCard && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "col-span-1", children: /* @__PURE__ */ jsxRuntime.jsxs(
1205
- pressable.Pressable,
1237
+ }) => {
1238
+ const hasFeaturedCard = hasFeaturedHeroCardContent(featuredHeroCard);
1239
+ const hasPartnerContent = hasItems(partnerCards);
1240
+ if (!hasFeaturedCard && !hasPartnerContent) return null;
1241
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1242
+ "div",
1206
1243
  {
1207
- href: featuredHeroCard.href,
1208
1244
  className: cn(
1209
- "group flex h-full flex-col overflow-hidden rounded-lg text-primary-foreground",
1210
- featuredHeroCard.variant === "accent" ? "bg-accent text-accent-foreground" : "bg-primary"
1245
+ "grid gap-6",
1246
+ PANEL_MAX_WIDTH_CLASS,
1247
+ hasFeaturedCard && hasPartnerContent ? "w-[1000px] grid-cols-[2fr_1fr]" : hasPartnerContent ? "w-[680px] grid-cols-1" : "w-[360px] grid-cols-1"
1211
1248
  ),
1212
1249
  children: [
1213
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative aspect-video w-full overflow-hidden", children: /* @__PURE__ */ jsxRuntime.jsx(
1214
- img.Img,
1250
+ hasFeaturedCard && featuredHeroCard && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "col-span-1 min-w-0", children: /* @__PURE__ */ jsxRuntime.jsx(
1251
+ FeaturedHeroCardPanel,
1215
1252
  {
1216
- src: featuredHeroCard.image,
1217
- alt: featuredHeroCard.title,
1218
- className: cn(
1219
- "h-full w-full object-cover",
1220
- featuredHeroCard.imagePosition === "background" && "invert"
1221
- ),
1253
+ card: featuredHeroCard,
1222
1254
  optixFlowConfig,
1223
- loading: "eager"
1255
+ imageClassName: cn(
1256
+ featuredHeroCard.imagePosition === "background" && "invert"
1257
+ )
1224
1258
  }
1225
1259
  ) }),
1226
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col p-5", children: [
1227
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1.5 text-base font-semibold", children: [
1228
- featuredHeroCard.title,
1229
- /* @__PURE__ */ jsxRuntime.jsx(
1230
- DynamicIcon,
1260
+ hasPartnerContent && /* @__PURE__ */ jsxRuntime.jsx(
1261
+ "div",
1262
+ {
1263
+ className: cn(
1264
+ "col-span-1 min-w-0 gap-3",
1265
+ hasFeaturedCard ? "flex flex-col" : "grid grid-cols-[repeat(auto-fit,minmax(240px,1fr))]"
1266
+ ),
1267
+ children: partnerCards.map((card) => /* @__PURE__ */ jsxRuntime.jsxs(
1268
+ NavigationMenuLink,
1231
1269
  {
1232
- name: "lucide/arrow-right",
1233
- size: 16,
1234
- className: "transition-transform group-hover:translate-x-1"
1235
- }
1236
- )
1237
- ] }),
1238
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-2 text-sm leading-relaxed", children: featuredHeroCard.description })
1239
- ] })
1270
+ href: card.href,
1271
+ className: "group !flex !w-full min-w-0 items-start gap-3 rounded-lg border border-border p-4 hover:bg-muted",
1272
+ children: [
1273
+ /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: card.icon, size: 28, className: "shrink-0" }),
1274
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0 flex-1", children: [
1275
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "break-words text-sm font-bold", children: card.title }),
1276
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-0.5 break-words text-xs text-muted-foreground", children: card.description })
1277
+ ] })
1278
+ ]
1279
+ },
1280
+ card.title
1281
+ ))
1282
+ }
1283
+ )
1240
1284
  ]
1241
1285
  }
1242
- ) }),
1243
- partnerCards.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "col-span-1 flex flex-col gap-3", children: partnerCards.map((card) => /* @__PURE__ */ jsxRuntime.jsxs(
1244
- NavigationMenuLink,
1245
- {
1246
- href: card.href,
1247
- className: "group !flex !w-full items-start gap-3 rounded-lg border border-border p-4 hover:bg-muted",
1248
- children: [
1249
- /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: card.icon, size: 28, className: "shrink-0" }),
1250
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0 flex-1", children: [
1251
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm font-bold", children: card.title }),
1252
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-0.5 text-xs text-muted-foreground", children: card.description })
1253
- ] })
1254
- ]
1255
- },
1256
- card.title
1257
- )) })
1258
- ] });
1286
+ );
1287
+ };
1259
1288
  var MOBILE_BREAKPOINT = 1024;
1260
1289
  var NavbarEnterpriseMega = ({
1261
1290
  className,
@@ -1425,20 +1454,48 @@ var NavbarEnterpriseMega = ({
1425
1454
  )
1426
1455
  ] });
1427
1456
  };
1457
+ var hasItems2 = (items) => Array.isArray(items) && items.length > 0;
1458
+ var hasFeaturedHeroCardContent2 = (card) => Boolean(
1459
+ card && (card.title || card.subtitle || card.description || card.image)
1460
+ );
1461
+ var hasGenericDropdownContent = (item) => hasItems2(item.links) || Boolean(item.dropdownGroups?.some((group) => hasItems2(group.links)));
1462
+ var hasLayoutSpecificDropdownContent = (item) => {
1463
+ switch (item.layout) {
1464
+ case "solutions-with-platform":
1465
+ return hasItems2(item.solutionCards) || hasItems2(item.platformItems) || hasFeaturedHeroCardContent2(item.featuredHeroCard);
1466
+ case "products-categorized":
1467
+ return Boolean(
1468
+ item.productCategories?.some(
1469
+ (category) => hasItems2(category.products)
1470
+ )
1471
+ ) || hasFeaturedHeroCardContent2(item.featuredHeroCard);
1472
+ case "features-with-locations":
1473
+ return Boolean(
1474
+ item.featureCategories?.some(
1475
+ (category) => hasItems2(category.features)
1476
+ )
1477
+ ) || Boolean(item.regions?.some((region) => hasItems2(region.locations))) || hasFeaturedHeroCardContent2(item.featuredHeroCard);
1478
+ case "partners-promotional":
1479
+ return hasItems2(item.partnerCards) || hasFeaturedHeroCardContent2(item.featuredHeroCard);
1480
+ case "resources-with-topics":
1481
+ return hasItems2(item.resourceItems) || Boolean(
1482
+ item.topicGroups?.some((group) => hasItems2(group.topics))
1483
+ ) || hasFeaturedHeroCardContent2(item.featuredHeroCard);
1484
+ default:
1485
+ return false;
1486
+ }
1487
+ };
1488
+ var hasDropdownContent = (item) => hasLayoutSpecificDropdownContent(item) || hasGenericDropdownContent(item);
1428
1489
  var DesktopMenuItem = ({
1429
1490
  item,
1430
1491
  index,
1431
1492
  optixFlowConfig
1432
1493
  }) => {
1433
- const hasDropdown = Boolean(item.layout);
1434
- const effectiveLayout = item.layout || "solutions-with-platform";
1494
+ const hasDropdown = hasDropdownContent(item);
1435
1495
  if (hasDropdown) {
1436
1496
  return /* @__PURE__ */ jsxRuntime.jsxs(NavigationMenuItem, { value: `${index}`, children: [
1437
1497
  /* @__PURE__ */ jsxRuntime.jsx(NavigationMenuTrigger, { className: "h-auto bg-transparent px-3 py-2 font-normal hover:bg-muted focus:bg-muted data-[state=open]:bg-muted/50", children: item.label }),
1438
- /* @__PURE__ */ jsxRuntime.jsx(NavigationMenuContent, { className: "max-h-[calc(100vh-6rem)] overflow-y-auto rounded-xl! border-0! p-4!", children: renderDropdownContent(
1439
- { ...item, layout: effectiveLayout },
1440
- optixFlowConfig
1441
- ) })
1498
+ /* @__PURE__ */ jsxRuntime.jsx(NavigationMenuContent, { className: "max-h-[calc(100vh-6rem)] overflow-y-auto rounded-xl! border-0! p-4!", children: renderDropdownContent(item, optixFlowConfig) })
1442
1499
  ] }, `desktop-menu-item-${index}`);
1443
1500
  }
1444
1501
  return /* @__PURE__ */ jsxRuntime.jsx(NavigationMenuItem, { value: `${index}`, children: /* @__PURE__ */ jsxRuntime.jsx(
@@ -1451,6 +1508,9 @@ var DesktopMenuItem = ({
1451
1508
  ) }, `desktop-menu-item-${index}`);
1452
1509
  };
1453
1510
  var renderDropdownContent = (item, optixFlowConfig) => {
1511
+ if (!hasLayoutSpecificDropdownContent(item)) {
1512
+ return renderGenericDropdownContent(item, optixFlowConfig);
1513
+ }
1454
1514
  switch (item.layout) {
1455
1515
  case "solutions-with-platform":
1456
1516
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -1499,73 +1559,287 @@ var renderDropdownContent = (item, optixFlowConfig) => {
1499
1559
  resourceItems: item.resourceItems ?? [],
1500
1560
  resourcesTitle: item.resourcesTitle,
1501
1561
  topicGroups: item.topicGroups ?? [],
1502
- featuredHeroCard: item.featuredHeroCard
1562
+ featuredHeroCard: item.featuredHeroCard,
1563
+ optixFlowConfig
1503
1564
  }
1504
1565
  );
1505
1566
  default:
1506
- return null;
1567
+ return renderGenericDropdownContent(item, optixFlowConfig);
1507
1568
  }
1508
1569
  };
1509
- var renderMobileDropdownContent = (item) => {
1510
- switch (item.layout) {
1511
- case "solutions-with-platform":
1512
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-col space-y-2", children: item.solutionCards?.map((solution) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
1513
- /* @__PURE__ */ jsxRuntime.jsx(
1514
- pressable.Pressable,
1570
+ var renderGenericDropdownContent = (item, optixFlowConfig) => {
1571
+ const links = item.links ?? [];
1572
+ const groups = (item.dropdownGroups ?? []).filter(
1573
+ (group) => hasItems2(group.links)
1574
+ );
1575
+ const hasLinks = hasItems2(links);
1576
+ const hasGroups = hasItems2(groups);
1577
+ if (!hasLinks && !hasGroups) return null;
1578
+ const renderGenericLink = (link, key) => {
1579
+ const iconName = link.icon ?? link.iconName;
1580
+ const label = typeof link.label === "string" ? link.label : "";
1581
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1582
+ NavigationMenuLink,
1583
+ {
1584
+ href: getLinkUrl(link),
1585
+ className: "group !flex !w-full min-w-0 items-start gap-3 rounded-lg p-3 text-left hover:bg-muted",
1586
+ children: [
1587
+ link.image ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative flex size-10 shrink-0 items-center justify-center overflow-hidden rounded bg-muted", children: /* @__PURE__ */ jsxRuntime.jsx(
1588
+ img.Img,
1589
+ {
1590
+ src: link.image,
1591
+ alt: label,
1592
+ className: "h-full w-full object-cover",
1593
+ optixFlowConfig,
1594
+ loading: "eager"
1595
+ }
1596
+ ) }) : iconName ? /* @__PURE__ */ jsxRuntime.jsx(
1597
+ DynamicIcon,
1598
+ {
1599
+ name: iconName,
1600
+ size: 18,
1601
+ className: "mt-0.5 shrink-0"
1602
+ }
1603
+ ) : null,
1604
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0 flex-1", children: [
1605
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "break-words text-sm font-medium", children: link.label }),
1606
+ link.description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-0.5 break-words text-xs text-muted-foreground", children: link.description })
1607
+ ] })
1608
+ ]
1609
+ },
1610
+ key
1611
+ );
1612
+ };
1613
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1614
+ "div",
1615
+ {
1616
+ className: cn(
1617
+ "grid max-w-[calc(100vw-4rem)] gap-6",
1618
+ hasLinks && hasGroups ? "w-[900px] grid-cols-[minmax(0,1fr)_minmax(220px,0.45fr)]" : hasGroups ? "w-[780px] grid-cols-1" : "w-[420px] grid-cols-1"
1619
+ ),
1620
+ children: [
1621
+ hasGroups && /* @__PURE__ */ jsxRuntime.jsx(
1622
+ "div",
1515
1623
  {
1516
- href: solution.href,
1517
- className: "block pt-4 text-sm font-medium",
1518
- children: solution.title
1624
+ className: cn(
1625
+ "grid min-w-0 gap-5",
1626
+ !hasLinks && groups.length > 1 ? "grid-cols-[repeat(auto-fit,minmax(220px,1fr))]" : "grid-cols-1"
1627
+ ),
1628
+ children: groups.map((group, groupIndex) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0", children: [
1629
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-3 border-b border-border pb-2 text-left", children: [
1630
+ /* @__PURE__ */ jsxRuntime.jsx("strong", { className: "text-xs font-medium tracking-wider text-muted-foreground uppercase", children: group.label }),
1631
+ group.description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-1 text-xs text-muted-foreground", children: group.description })
1632
+ ] }),
1633
+ /* @__PURE__ */ jsxRuntime.jsx("menu", { className: "grid gap-1.5", children: group.links.map(
1634
+ (link, linkIndex) => renderGenericLink(link, `${groupIndex}-${linkIndex}`)
1635
+ ) })
1636
+ ] }, groupIndex))
1519
1637
  }
1520
1638
  ),
1521
- solution.subpages.map((subpage) => /* @__PURE__ */ jsxRuntime.jsxs(
1639
+ hasLinks && /* @__PURE__ */ jsxRuntime.jsx("menu", { className: "grid min-w-0 gap-1.5", children: links.map((link, linkIndex) => renderGenericLink(link, linkIndex)) })
1640
+ ]
1641
+ }
1642
+ );
1643
+ };
1644
+ var renderMobileFeaturedHeroCard = (card) => {
1645
+ if (!hasFeaturedHeroCardContent2(card) || !card) return null;
1646
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1647
+ pressable.Pressable,
1648
+ {
1649
+ href: card.href,
1650
+ className: cn(
1651
+ "block rounded-lg p-4 text-sm font-medium text-primary-foreground",
1652
+ card.variant === "accent" ? "bg-accent text-accent-foreground" : "bg-primary"
1653
+ ),
1654
+ children: [
1655
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: card.title }),
1656
+ card.description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-1 text-xs leading-relaxed opacity-90", children: card.description })
1657
+ ]
1658
+ }
1659
+ );
1660
+ };
1661
+ var renderMobileDropdownContent = (item) => {
1662
+ if (!hasLayoutSpecificDropdownContent(item)) {
1663
+ return renderMobileGenericDropdownContent(item);
1664
+ }
1665
+ switch (item.layout) {
1666
+ case "solutions-with-platform":
1667
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col space-y-2", children: [
1668
+ renderMobileFeaturedHeroCard(item.featuredHeroCard),
1669
+ item.platformItems?.map((technology) => /* @__PURE__ */ jsxRuntime.jsxs(
1522
1670
  pressable.Pressable,
1523
1671
  {
1524
- href: subpage.href,
1672
+ href: technology.href,
1525
1673
  className: "flex items-center gap-2 pl-4 text-sm text-muted-foreground",
1526
1674
  children: [
1527
- /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: subpage.icon, size: 14 }),
1528
- subpage.title
1675
+ /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: technology.icon, size: 14 }),
1676
+ technology.title
1529
1677
  ]
1530
1678
  },
1531
- subpage.id
1532
- ))
1533
- ] }, solution.id)) });
1679
+ technology.id
1680
+ )),
1681
+ item.solutionCards?.map((solution) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
1682
+ /* @__PURE__ */ jsxRuntime.jsx(
1683
+ pressable.Pressable,
1684
+ {
1685
+ href: solution.href,
1686
+ className: "block pt-4 text-sm font-medium",
1687
+ children: solution.title
1688
+ }
1689
+ ),
1690
+ (solution.subpages ?? []).map((subpage) => /* @__PURE__ */ jsxRuntime.jsxs(
1691
+ pressable.Pressable,
1692
+ {
1693
+ href: subpage.href,
1694
+ className: "flex items-center gap-2 pl-4 text-sm text-muted-foreground",
1695
+ children: [
1696
+ /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: subpage.icon, size: 14 }),
1697
+ subpage.title
1698
+ ]
1699
+ },
1700
+ subpage.id
1701
+ ))
1702
+ ] }, solution.id))
1703
+ ] });
1534
1704
  case "products-categorized":
1535
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-4", children: item.productCategories?.flatMap(
1536
- (category) => category.products.map((product) => /* @__PURE__ */ jsxRuntime.jsx(
1705
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
1706
+ renderMobileFeaturedHeroCard(item.featuredHeroCard),
1707
+ item.productCategories?.flatMap(
1708
+ (category) => (category.products ?? []).map((product) => /* @__PURE__ */ jsxRuntime.jsx(
1709
+ pressable.Pressable,
1710
+ {
1711
+ href: product.href,
1712
+ className: "flex items-center pl-4 gap-2 text-sm text-muted-foreground",
1713
+ children: product.title
1714
+ },
1715
+ product.id
1716
+ ))
1717
+ )
1718
+ ] });
1719
+ case "resources-with-topics":
1720
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
1721
+ renderMobileFeaturedHeroCard(item.featuredHeroCard),
1722
+ item.resourceItems?.map((resource) => /* @__PURE__ */ jsxRuntime.jsxs(
1537
1723
  pressable.Pressable,
1538
1724
  {
1539
- href: product.href,
1725
+ href: resource.href,
1540
1726
  className: "flex items-center pl-4 gap-2 text-sm text-muted-foreground",
1541
- children: product.title
1727
+ children: [
1728
+ /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: resource.icon, size: 14 }),
1729
+ resource.title
1730
+ ]
1542
1731
  },
1543
- product.id
1732
+ resource.id
1733
+ )),
1734
+ item.topicGroups?.map((group) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
1735
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "pt-2 text-xs font-medium tracking-wider text-muted-foreground uppercase", children: group.title }),
1736
+ group.topics.map((topic) => /* @__PURE__ */ jsxRuntime.jsxs(
1737
+ pressable.Pressable,
1738
+ {
1739
+ href: topic.href,
1740
+ className: "flex items-center gap-2 pl-4 text-sm text-muted-foreground",
1741
+ children: [
1742
+ /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: topic.icon, size: 14 }),
1743
+ topic.title
1744
+ ]
1745
+ },
1746
+ topic.id
1747
+ ))
1748
+ ] }, group.title))
1749
+ ] });
1750
+ case "features-with-locations":
1751
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
1752
+ renderMobileFeaturedHeroCard(item.featuredHeroCard),
1753
+ item.featureCategories?.flatMap(
1754
+ (category) => (category.features ?? []).map((feature) => /* @__PURE__ */ jsxRuntime.jsxs(
1755
+ pressable.Pressable,
1756
+ {
1757
+ href: feature.href,
1758
+ className: "flex items-center gap-2 pl-4 text-sm text-muted-foreground",
1759
+ children: [
1760
+ /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: feature.icon, size: 14 }),
1761
+ feature.title
1762
+ ]
1763
+ },
1764
+ feature.id
1765
+ ))
1766
+ ),
1767
+ item.regions?.map((region) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
1768
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "pt-2 text-xs font-medium tracking-wider text-muted-foreground uppercase", children: region.title }),
1769
+ region.locations.map((location) => /* @__PURE__ */ jsxRuntime.jsxs(
1770
+ pressable.Pressable,
1771
+ {
1772
+ href: location.href,
1773
+ className: "flex items-center gap-2 pl-4 text-sm text-muted-foreground",
1774
+ children: [
1775
+ /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: location.icon, size: 14 }),
1776
+ location.title
1777
+ ]
1778
+ },
1779
+ location.title
1780
+ ))
1781
+ ] }, region.title))
1782
+ ] });
1783
+ case "partners-promotional":
1784
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
1785
+ renderMobileFeaturedHeroCard(item.featuredHeroCard),
1786
+ item.partnerCards?.map((card) => /* @__PURE__ */ jsxRuntime.jsxs(
1787
+ pressable.Pressable,
1788
+ {
1789
+ href: card.href,
1790
+ className: "flex items-start gap-2 pl-4 text-sm text-muted-foreground",
1791
+ children: [
1792
+ /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: card.icon, size: 14, className: "mt-0.5" }),
1793
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: card.title })
1794
+ ]
1795
+ },
1796
+ card.title
1544
1797
  ))
1545
- ) });
1546
- case "resources-with-topics":
1547
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-4", children: item.resourceItems?.map((resource) => /* @__PURE__ */ jsxRuntime.jsxs(
1798
+ ] });
1799
+ default:
1800
+ return renderMobileGenericDropdownContent(item);
1801
+ }
1802
+ };
1803
+ var renderMobileGenericDropdownContent = (item) => {
1804
+ const links = item.links ?? [];
1805
+ const groups = (item.dropdownGroups ?? []).filter(
1806
+ (group) => hasItems2(group.links)
1807
+ );
1808
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
1809
+ groups.map((group, groupIndex) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
1810
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "pt-2 text-xs font-medium tracking-wider text-muted-foreground uppercase", children: group.label }),
1811
+ group.links.map((link, linkIndex) => {
1812
+ const iconName = link.icon ?? link.iconName;
1813
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1814
+ pressable.Pressable,
1815
+ {
1816
+ href: getLinkUrl(link),
1817
+ className: "flex items-center gap-2 pl-4 text-sm text-muted-foreground",
1818
+ children: [
1819
+ iconName && /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: iconName, size: 14 }),
1820
+ link.label
1821
+ ]
1822
+ },
1823
+ `${groupIndex}-${linkIndex}`
1824
+ );
1825
+ })
1826
+ ] }, groupIndex)),
1827
+ links.map((link, linkIndex) => {
1828
+ const iconName = link.icon ?? link.iconName;
1829
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1548
1830
  pressable.Pressable,
1549
1831
  {
1550
- href: resource.href,
1551
- className: "flex items-center pl-4 gap-2 text-sm text-muted-foreground",
1832
+ href: getLinkUrl(link),
1833
+ className: "flex items-center gap-2 pl-4 text-sm text-muted-foreground",
1552
1834
  children: [
1553
- /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: resource.icon, size: 14 }),
1554
- resource.title
1835
+ iconName && /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: iconName, size: 14 }),
1836
+ link.label
1555
1837
  ]
1556
1838
  },
1557
- resource.id
1558
- )) });
1559
- case "features-with-locations":
1560
- case "partners-promotional":
1561
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm text-muted-foreground", children: /* @__PURE__ */ jsxRuntime.jsxs(pressable.Pressable, { href: "#", children: [
1562
- "View all",
1563
- " ",
1564
- typeof item.label === "string" ? item.label.toLowerCase() : "items"
1565
- ] }) });
1566
- default:
1567
- return null;
1568
- }
1839
+ linkIndex
1840
+ );
1841
+ })
1842
+ ] });
1569
1843
  };
1570
1844
  var MobileNavigationMenu = ({
1571
1845
  open,
@@ -1612,7 +1886,7 @@ var MobileNavigationMenu = ({
1612
1886
  title: "Mobile Navigation",
1613
1887
  children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "max-w-screen-sm mx-auto", children: [
1614
1888
  /* @__PURE__ */ jsxRuntime.jsx(Accordion, { type: "multiple", className: "w-full", children: menuLinks.map((item, index) => {
1615
- const hasDropdown = Boolean(item.layout);
1889
+ const hasDropdown = hasDropdownContent(item);
1616
1890
  if (hasDropdown) {
1617
1891
  return /* @__PURE__ */ jsxRuntime.jsxs(
1618
1892
  AccordionItem,