@opensite/ui 0.4.4 → 0.4.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 (89) hide show
  1. package/dist/navbar-animated-preview.cjs +97 -58
  2. package/dist/navbar-animated-preview.d.cts +9 -64
  3. package/dist/navbar-animated-preview.d.ts +9 -64
  4. package/dist/navbar-animated-preview.js +97 -58
  5. package/dist/navbar-centered-menu.cjs +46 -7
  6. package/dist/navbar-centered-menu.d.cts +7 -11
  7. package/dist/navbar-centered-menu.d.ts +7 -11
  8. package/dist/navbar-centered-menu.js +46 -7
  9. package/dist/navbar-dark-icons.cjs +50 -10
  10. package/dist/navbar-dark-icons.d.cts +6 -11
  11. package/dist/navbar-dark-icons.d.ts +6 -11
  12. package/dist/navbar-dark-icons.js +50 -10
  13. package/dist/navbar-dropdown-menu.cjs +47 -8
  14. package/dist/navbar-dropdown-menu.d.cts +8 -12
  15. package/dist/navbar-dropdown-menu.d.ts +8 -12
  16. package/dist/navbar-dropdown-menu.js +47 -8
  17. package/dist/navbar-education-platform.cjs +48 -10
  18. package/dist/navbar-education-platform.d.cts +6 -11
  19. package/dist/navbar-education-platform.d.ts +6 -11
  20. package/dist/navbar-education-platform.js +48 -10
  21. package/dist/navbar-enterprise-mega.cjs +50 -10
  22. package/dist/navbar-enterprise-mega.d.cts +7 -37
  23. package/dist/navbar-enterprise-mega.d.ts +7 -37
  24. package/dist/navbar-enterprise-mega.js +50 -10
  25. package/dist/navbar-feature-grid.cjs +47 -8
  26. package/dist/navbar-feature-grid.d.cts +6 -11
  27. package/dist/navbar-feature-grid.d.ts +6 -11
  28. package/dist/navbar-feature-grid.js +47 -8
  29. package/dist/navbar-floating-pill.cjs +50 -11
  30. package/dist/navbar-floating-pill.d.cts +6 -11
  31. package/dist/navbar-floating-pill.d.ts +6 -11
  32. package/dist/navbar-floating-pill.js +50 -11
  33. package/dist/navbar-fullscreen-menu.cjs +44 -5
  34. package/dist/navbar-fullscreen-menu.d.cts +6 -11
  35. package/dist/navbar-fullscreen-menu.d.ts +6 -11
  36. package/dist/navbar-fullscreen-menu.js +44 -5
  37. package/dist/navbar-icon-links.cjs +46 -8
  38. package/dist/navbar-icon-links.d.cts +9 -11
  39. package/dist/navbar-icon-links.d.ts +9 -11
  40. package/dist/navbar-icon-links.js +46 -8
  41. package/dist/navbar-image-preview.cjs +56 -12
  42. package/dist/navbar-image-preview.d.cts +11 -17
  43. package/dist/navbar-image-preview.d.ts +11 -17
  44. package/dist/navbar-image-preview.js +56 -12
  45. package/dist/navbar-mega-menu.cjs +69 -20
  46. package/dist/navbar-mega-menu.d.cts +8 -74
  47. package/dist/navbar-mega-menu.d.ts +8 -74
  48. package/dist/navbar-mega-menu.js +69 -20
  49. package/dist/navbar-multi-column-groups.cjs +47 -11
  50. package/dist/navbar-multi-column-groups.d.cts +6 -11
  51. package/dist/navbar-multi-column-groups.d.ts +6 -11
  52. package/dist/navbar-multi-column-groups.js +47 -11
  53. package/dist/navbar-platform-resources.cjs +199 -164
  54. package/dist/navbar-platform-resources.d.cts +7 -37
  55. package/dist/navbar-platform-resources.d.ts +7 -37
  56. package/dist/navbar-platform-resources.js +199 -164
  57. package/dist/navbar-search-focused.cjs +45 -7
  58. package/dist/navbar-search-focused.d.cts +6 -11
  59. package/dist/navbar-search-focused.d.ts +6 -11
  60. package/dist/navbar-search-focused.js +45 -7
  61. package/dist/navbar-sidebar-mobile.cjs +47 -8
  62. package/dist/navbar-sidebar-mobile.d.cts +6 -11
  63. package/dist/navbar-sidebar-mobile.d.ts +6 -11
  64. package/dist/navbar-sidebar-mobile.js +47 -8
  65. package/dist/navbar-simple-links.cjs +45 -7
  66. package/dist/navbar-simple-links.d.cts +6 -11
  67. package/dist/navbar-simple-links.d.ts +6 -11
  68. package/dist/navbar-simple-links.js +45 -7
  69. package/dist/navbar-split-cta.cjs +47 -8
  70. package/dist/navbar-split-cta.d.cts +6 -11
  71. package/dist/navbar-split-cta.d.ts +6 -11
  72. package/dist/navbar-split-cta.js +47 -8
  73. package/dist/navbar-sticky-compact.cjs +49 -10
  74. package/dist/navbar-sticky-compact.d.cts +6 -11
  75. package/dist/navbar-sticky-compact.d.ts +6 -11
  76. package/dist/navbar-sticky-compact.js +49 -10
  77. package/dist/navbar-tabbed-sections.cjs +47 -8
  78. package/dist/navbar-tabbed-sections.d.cts +6 -11
  79. package/dist/navbar-tabbed-sections.d.ts +6 -11
  80. package/dist/navbar-tabbed-sections.js +47 -8
  81. package/dist/navbar-transparent-overlay.cjs +47 -9
  82. package/dist/navbar-transparent-overlay.d.cts +6 -11
  83. package/dist/navbar-transparent-overlay.d.ts +6 -11
  84. package/dist/navbar-transparent-overlay.js +47 -9
  85. package/dist/registry.cjs +522 -328
  86. package/dist/registry.js +522 -328
  87. package/dist/types-COVDidbn.d.cts +119 -0
  88. package/dist/types-COVDidbn.d.ts +119 -0
  89. package/package.json +2 -2
@@ -930,7 +930,7 @@ function NavigationMenuList({
930
930
  {
931
931
  "data-slot": "navigation-menu-list",
932
932
  className: cn(
933
- "group flex flex-1 list-none items-center justify-center gap-6",
933
+ "group flex flex-1 list-none items-center justify-center gap-2 lg:gap-4 xl:gap-6",
934
934
  className
935
935
  ),
936
936
  ...props
@@ -970,8 +970,9 @@ function NavigationMenuTrigger({
970
970
  /* @__PURE__ */ jsx(
971
971
  DynamicIcon,
972
972
  {
973
+ size: 18,
973
974
  name: "lucide/chevron-down",
974
- className: "relative top-[1px] ml-1 size-2.5 transition duration-300 group-data-[state=open]:rotate-180",
975
+ className: "relative top-px opacity-50 transition duration-300 group-data-[state=open]:rotate-180",
975
976
  "aria-hidden": "true"
976
977
  }
977
978
  )
@@ -1011,7 +1012,7 @@ function NavigationMenuViewport({
1011
1012
  {
1012
1013
  "data-slot": "navigation-menu-viewport",
1013
1014
  className: cn(
1014
- "origin-top-center bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border shadow md:w-[var(--radix-navigation-menu-viewport-width)]",
1015
+ "origin-top-center bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 relative mt-1.5 h-(--radix-navigation-menu-viewport-height) w-full overflow-hidden rounded-md border border-border/50 shadow-sm md:w-(--radix-navigation-menu-viewport-width)",
1015
1016
  className
1016
1017
  ),
1017
1018
  ...props
@@ -1029,13 +1030,48 @@ function NavigationMenuLink({
1029
1030
  {
1030
1031
  "data-slot": "navigation-menu-link",
1031
1032
  className: cn(
1032
- "data-[active=true]:focus:bg-muted data-[active=true]:hover:bg-muted data-[active=true]:bg-muted/50 data-[active=true]:text-foreground hover:bg-muted hover:text-foreground focus:bg-muted focus:text-foreground focus-visible:ring-ring/50 [&_svg:not([class*='text-'])]:text-muted-foreground flex flex-col gap-1 rounded-sm p-2 text-sm transition-all outline-none focus-visible:ring-[3px] focus-visible:outline-1 [&_svg:not([class*='size-'])]:size-4",
1033
+ "group inline-flex w-max items-center justify-center rounded-md text-sm disabled:pointer-events-none disabled:opacity-50 data-[state=open]:hover:bg-muted data-[state=open]:focus:bg-muted focus-visible:ring-ring/50 outline-none transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 group h-auto bg-transparent px-3 py-2 font-normal text-foreground/80 hover:bg-muted hover:text-foreground focus:bg-muted focus:text-foreground data-[state=open]:bg-muted/50 data-[state=open]:text-foreground",
1033
1034
  className
1034
1035
  ),
1035
1036
  ...props
1036
1037
  }
1037
1038
  );
1038
1039
  }
1040
+
1041
+ // components/blocks/navbars/types.ts
1042
+ function getLinkUrl(item) {
1043
+ return item.href || item.url || "#";
1044
+ }
1045
+
1046
+ // components/blocks/navbars/layout-variant-utils.ts
1047
+ function getNavbarLayoutClasses(layoutVariant = "fullScreenContainerizedLinks", customClasses) {
1048
+ const isFloatingBar = layoutVariant === "floatingBar";
1049
+ const isFullWidthLinks = layoutVariant === "fullScreenFullWidthLinks";
1050
+ return {
1051
+ // Section wrapper classes
1052
+ sectionClasses: cn(
1053
+ "inset-x-0 z-20",
1054
+ isFloatingBar ? "sticky top-4" : "top-0",
1055
+ customClasses?.className
1056
+ ),
1057
+ // Outer container wrapper (only for floating bar)
1058
+ containerWrapperClasses: cn(
1059
+ isFloatingBar && "mx-auto w-full px-2 sm:px-4 lg:px-8 max-w-7xl relative z-10"
1060
+ ),
1061
+ // Inner container classes
1062
+ innerContainerClasses: cn(
1063
+ !isFloatingBar && !isFullWidthLinks && "container",
1064
+ isFullWidthLinks && "mx-auto w-full px-2 sm:px-4 lg:px-8",
1065
+ customClasses?.containerClassName
1066
+ ),
1067
+ // Navigation wrapper classes (for border and shadow)
1068
+ navWrapperClasses: cn(
1069
+ isFloatingBar ? "border border-border/50 shadow-sm rounded-full" : "border-b border-border/50 shadow-sm"
1070
+ ),
1071
+ // Spacing adjustment for Section component
1072
+ spacingOverride: isFloatingBar ? "none" : void 0
1073
+ };
1074
+ }
1039
1075
  var DesktopMenuItem = ({
1040
1076
  link,
1041
1077
  index,
@@ -1064,8 +1100,8 @@ var DesktopMenuItem = ({
1064
1100
  if (layout === "animated-image-preview" && link.links) {
1065
1101
  return /* @__PURE__ */ jsxs(NavigationMenuItem, { children: [
1066
1102
  /* @__PURE__ */ jsx(NavigationMenuTrigger, { className: "h-auto bg-transparent px-3 py-2 font-normal text-foreground/80 hover:bg-muted hover:text-foreground focus:bg-muted focus:text-foreground data-[state=open]:bg-muted/50 data-[state=open]:text-foreground", children: link.label }),
1067
- /* @__PURE__ */ jsx(NavigationMenuContent, { className: "!rounded-2xl !p-0", children: /* @__PURE__ */ jsxs("div", { className: "grid min-h-[18.75rem] w-[45.25rem] grid-cols-[22.5rem_1fr] gap-4 p-3", children: [
1068
- /* @__PURE__ */ jsx("div", { className: "relative aspect-square w-full overflow-hidden rounded-xl", children: link.links.map((item, idx) => /* @__PURE__ */ jsx(
1103
+ /* @__PURE__ */ jsx(NavigationMenuContent, { className: "rounded-2xl! p-0!", children: /* @__PURE__ */ jsxs("div", { className: "grid min-h-75 w-181 grid-cols-[22.5rem_1fr] gap-4 p-3", children: [
1104
+ /* @__PURE__ */ jsx("div", { className: "relative aspect-square w-full overflow-hidden rounded-xl shadow-xl", children: link.links.map((item, idx) => /* @__PURE__ */ jsx(
1069
1105
  Img,
1070
1106
  {
1071
1107
  ref: (el) => {
@@ -1088,14 +1124,14 @@ var DesktopMenuItem = ({
1088
1124
  /* @__PURE__ */ jsx("ul", { children: link.links.map((item, idx) => /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(
1089
1125
  NavigationMenuLink,
1090
1126
  {
1091
- href: item.url,
1127
+ href: getLinkUrl(item),
1092
1128
  className: "flex items-center gap-4 rounded-lg px-4 py-3 hover:bg-muted",
1093
1129
  "data-index": idx,
1094
1130
  onMouseEnter: handleMouseEnter,
1095
1131
  onMouseLeave: handleMouseLeave,
1096
1132
  children: /* @__PURE__ */ jsxs("div", { children: [
1097
- /* @__PURE__ */ jsx("h3", { className: "leading-normal font-medium", children: item.label }),
1098
- item.description && /* @__PURE__ */ jsx("p", { className: "leading-normal text-muted-foreground", children: item.description })
1133
+ /* @__PURE__ */ jsx("div", { className: "text-sm font-medium", children: item.label }),
1134
+ item.description && /* @__PURE__ */ jsx("p", { className: "text-xs leading-normal text-muted-foreground", children: item.description })
1099
1135
  ] })
1100
1136
  }
1101
1137
  ) }, `desktop-nav-sublink-${idx}`)) })
@@ -1106,13 +1142,13 @@ var DesktopMenuItem = ({
1106
1142
  if (layout === "simple-grid" && link.links) {
1107
1143
  return /* @__PURE__ */ jsxs(NavigationMenuItem, { children: [
1108
1144
  /* @__PURE__ */ jsx(NavigationMenuTrigger, { className: "h-auto bg-transparent px-3 py-2 font-normal text-foreground/80 hover:bg-muted hover:text-foreground focus:bg-muted focus:text-foreground data-[state=open]:bg-muted/50 data-[state=open]:text-foreground", children: link.label }),
1109
- /* @__PURE__ */ jsx(NavigationMenuContent, { className: "min-w-[520px] p-6", children: /* @__PURE__ */ jsx("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2", children: link.links.map((item, itemIndex) => /* @__PURE__ */ jsxs(
1145
+ /* @__PURE__ */ jsx(NavigationMenuContent, { className: "min-w-[700px] p-6", children: /* @__PURE__ */ jsx("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2", children: link.links.map((item, itemIndex) => /* @__PURE__ */ jsxs(
1110
1146
  NavigationMenuLink,
1111
1147
  {
1112
- href: item.url,
1148
+ href: getLinkUrl(item),
1113
1149
  className: "flex flex-row items-start gap-4 rounded-lg border border-input bg-background p-4 hover:bg-muted hover:text-foreground",
1114
1150
  children: [
1115
- item.image && /* @__PURE__ */ jsx("div", { className: "h-16 w-16 shrink-0 overflow-hidden rounded-md border border-border", children: /* @__PURE__ */ jsx(
1151
+ item.image && /* @__PURE__ */ jsx("div", { className: "h-20 w-20 shrink-0 overflow-hidden rounded-md border border-border", children: /* @__PURE__ */ jsx(
1116
1152
  Img,
1117
1153
  {
1118
1154
  src: item.image,
@@ -1121,7 +1157,7 @@ var DesktopMenuItem = ({
1121
1157
  optixFlowConfig
1122
1158
  }
1123
1159
  ) }),
1124
- !item.image && (item.icon || item.iconName) && /* @__PURE__ */ jsx("div", { className: "flex h-16 w-16 shrink-0 items-center justify-center rounded-md border border-border bg-muted/40 text-muted-foreground", children: item.icon ? item.icon : item.iconName ? /* @__PURE__ */ jsx(DynamicIcon, { name: item.iconName, size: 20 }) : null }),
1160
+ !item.image && (item.icon || item.iconName) && /* @__PURE__ */ jsx("div", { className: "flex h-10 w-10 shrink-0 items-center justify-center rounded-md border border-border bg-muted/40 text-muted-foreground", children: item.icon ? item.icon : item.iconName ? /* @__PURE__ */ jsx(DynamicIcon, { name: item.iconName, size: 20 }) : null }),
1125
1161
  /* @__PURE__ */ jsxs("div", { children: [
1126
1162
  /* @__PURE__ */ jsx("div", { className: "text-sm font-medium", children: item.label }),
1127
1163
  item.description && /* @__PURE__ */ jsx("div", { className: "text-sm font-normal text-muted-foreground", children: item.description })
@@ -1138,7 +1174,7 @@ var DesktopMenuItem = ({
1138
1174
  /* @__PURE__ */ jsx(NavigationMenuContent, { className: "min-w-[400px] p-4", children: /* @__PURE__ */ jsx("ul", { className: "flex flex-col gap-1", children: link.links.map((item, itemIndex) => /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsxs(
1139
1175
  NavigationMenuLink,
1140
1176
  {
1141
- href: item.url,
1177
+ href: getLinkUrl(item),
1142
1178
  className: "flex items-start gap-3 rounded-lg p-3 hover:bg-muted",
1143
1179
  children: [
1144
1180
  (item.icon || item.iconName) && /* @__PURE__ */ jsx("div", { className: "flex h-8 w-8 items-center justify-center rounded-md bg-muted/40 text-muted-foreground", children: item.icon ? item.icon : item.iconName ? /* @__PURE__ */ jsx(DynamicIcon, { name: item.iconName, size: 16 }) : null }),
@@ -1182,7 +1218,7 @@ var MobileSubmenu = ({
1182
1218
  return /* @__PURE__ */ jsxs(
1183
1219
  Pressable,
1184
1220
  {
1185
- href: item.url,
1221
+ href: getLinkUrl(item),
1186
1222
  className: "flex items-start gap-4 border-b border-border px-8 py-5",
1187
1223
  children: [
1188
1224
  item.image && /* @__PURE__ */ jsx("div", { className: "h-10 w-10 overflow-hidden rounded-md border border-border", children: /* @__PURE__ */ jsx(
@@ -1222,6 +1258,7 @@ var NavbarMegaMenu = ({
1222
1258
  logoSlot,
1223
1259
  menuLinks,
1224
1260
  actions,
1261
+ layoutVariant = "fullScreenContainerizedLinks",
1225
1262
  background = "white",
1226
1263
  spacing = "none",
1227
1264
  pattern,
@@ -1281,15 +1318,27 @@ var NavbarMegaMenu = ({
1281
1318
  ] }) }, index);
1282
1319
  });
1283
1320
  };
1321
+ const {
1322
+ sectionClasses,
1323
+ containerWrapperClasses,
1324
+ innerContainerClasses,
1325
+ navWrapperClasses: baseNavWrapperClasses,
1326
+ spacingOverride
1327
+ } = getNavbarLayoutClasses(layoutVariant, { className, containerClassName });
1328
+ const navWrapperClasses = cn(
1329
+ "flex w-full items-center justify-between gap-12 py-4",
1330
+ baseNavWrapperClasses,
1331
+ layoutVariant === "floatingBar" && "pr-4 pl-8"
1332
+ );
1284
1333
  return /* @__PURE__ */ jsx(
1285
1334
  Section,
1286
1335
  {
1287
1336
  background,
1288
- spacing,
1289
- className: cn("inset-x-0 top-0 z-20", className),
1337
+ spacing: spacingOverride ?? spacing,
1338
+ className: sectionClasses,
1290
1339
  pattern,
1291
1340
  patternOpacity,
1292
- children: /* @__PURE__ */ jsx("div", { className: cn("container", containerClassName), children: /* @__PURE__ */ jsxs(
1341
+ children: /* @__PURE__ */ jsx("div", { className: containerWrapperClasses, children: /* @__PURE__ */ jsx("div", { className: innerContainerClasses, children: /* @__PURE__ */ jsxs(
1293
1342
  NavigationMenu,
1294
1343
  {
1295
1344
  className: cn(
@@ -1297,7 +1346,7 @@ var NavbarMegaMenu = ({
1297
1346
  navClassName
1298
1347
  ),
1299
1348
  children: [
1300
- /* @__PURE__ */ jsxs("div", { className: "flex w-full items-center justify-between gap-12 py-4", children: [
1349
+ /* @__PURE__ */ jsxs("div", { className: navWrapperClasses, children: [
1301
1350
  /* @__PURE__ */ jsxs("div", { children: [
1302
1351
  (!open || submenuIndex === null) && renderLogo(),
1303
1352
  open && submenuIndex !== null && /* @__PURE__ */ jsxs(
@@ -1442,7 +1491,7 @@ var NavbarMegaMenu = ({
1442
1491
  )
1443
1492
  ]
1444
1493
  }
1445
- ) })
1494
+ ) }) })
1446
1495
  }
1447
1496
  );
1448
1497
  };
@@ -1010,7 +1010,7 @@ function NavigationMenuList({
1010
1010
  {
1011
1011
  "data-slot": "navigation-menu-list",
1012
1012
  className: cn(
1013
- "group flex flex-1 list-none items-center justify-center gap-6",
1013
+ "group flex flex-1 list-none items-center justify-center gap-2 lg:gap-4 xl:gap-6",
1014
1014
  className
1015
1015
  ),
1016
1016
  ...props
@@ -1050,8 +1050,9 @@ function NavigationMenuTrigger({
1050
1050
  /* @__PURE__ */ jsxRuntime.jsx(
1051
1051
  DynamicIcon,
1052
1052
  {
1053
+ size: 18,
1053
1054
  name: "lucide/chevron-down",
1054
- className: "relative top-[1px] ml-1 size-2.5 transition duration-300 group-data-[state=open]:rotate-180",
1055
+ className: "relative top-px opacity-50 transition duration-300 group-data-[state=open]:rotate-180",
1055
1056
  "aria-hidden": "true"
1056
1057
  }
1057
1058
  )
@@ -1091,7 +1092,7 @@ function NavigationMenuViewport({
1091
1092
  {
1092
1093
  "data-slot": "navigation-menu-viewport",
1093
1094
  className: cn(
1094
- "origin-top-center bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border shadow md:w-[var(--radix-navigation-menu-viewport-width)]",
1095
+ "origin-top-center bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 relative mt-1.5 h-(--radix-navigation-menu-viewport-height) w-full overflow-hidden rounded-md border border-border/50 shadow-sm md:w-(--radix-navigation-menu-viewport-width)",
1095
1096
  className
1096
1097
  ),
1097
1098
  ...props
@@ -1109,7 +1110,7 @@ function NavigationMenuLink({
1109
1110
  {
1110
1111
  "data-slot": "navigation-menu-link",
1111
1112
  className: cn(
1112
- "data-[active=true]:focus:bg-muted data-[active=true]:hover:bg-muted data-[active=true]:bg-muted/50 data-[active=true]:text-foreground hover:bg-muted hover:text-foreground focus:bg-muted focus:text-foreground focus-visible:ring-ring/50 [&_svg:not([class*='text-'])]:text-muted-foreground flex flex-col gap-1 rounded-sm p-2 text-sm transition-all outline-none focus-visible:ring-[3px] focus-visible:outline-1 [&_svg:not([class*='size-'])]:size-4",
1113
+ "group inline-flex w-max items-center justify-center rounded-md text-sm disabled:pointer-events-none disabled:opacity-50 data-[state=open]:hover:bg-muted data-[state=open]:focus:bg-muted focus-visible:ring-ring/50 outline-none transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 group h-auto bg-transparent px-3 py-2 font-normal text-foreground/80 hover:bg-muted hover:text-foreground focus:bg-muted focus:text-foreground data-[state=open]:bg-muted/50 data-[state=open]:text-foreground",
1113
1114
  className
1114
1115
  ),
1115
1116
  ...props
@@ -1189,6 +1190,36 @@ function SheetTitle({
1189
1190
  // lib/mediaPlaceholders.ts
1190
1191
  var logoPlaceholders = {
1191
1192
  logoMark: "https://cdn.ing/assets/i/r/285975/eud79qeya11q5w6ueyhklueardyx/monochrome-rounded-square-app-icon-circular-emblem.png"};
1193
+
1194
+ // components/blocks/navbars/layout-variant-utils.ts
1195
+ function getNavbarLayoutClasses(layoutVariant = "fullScreenContainerizedLinks", customClasses) {
1196
+ const isFloatingBar = layoutVariant === "floatingBar";
1197
+ const isFullWidthLinks = layoutVariant === "fullScreenFullWidthLinks";
1198
+ return {
1199
+ // Section wrapper classes
1200
+ sectionClasses: cn(
1201
+ "inset-x-0 z-20",
1202
+ isFloatingBar ? "sticky top-4" : "top-0",
1203
+ customClasses?.className
1204
+ ),
1205
+ // Outer container wrapper (only for floating bar)
1206
+ containerWrapperClasses: cn(
1207
+ isFloatingBar && "mx-auto w-full px-2 sm:px-4 lg:px-8 max-w-7xl relative z-10"
1208
+ ),
1209
+ // Inner container classes
1210
+ innerContainerClasses: cn(
1211
+ !isFloatingBar && !isFullWidthLinks && "container",
1212
+ isFullWidthLinks && "mx-auto w-full px-2 sm:px-4 lg:px-8",
1213
+ customClasses?.containerClassName
1214
+ ),
1215
+ // Navigation wrapper classes (for border and shadow)
1216
+ navWrapperClasses: cn(
1217
+ isFloatingBar ? "border border-border/50 shadow-sm rounded-full" : "border-b border-border/50 shadow-sm"
1218
+ ),
1219
+ // Spacing adjustment for Section component
1220
+ spacingOverride: isFloatingBar ? "none" : void 0
1221
+ };
1222
+ }
1192
1223
  var MOBILE_BREAKPOINT = 1024;
1193
1224
  var NavbarMultiColumnGroups = ({
1194
1225
  className,
@@ -1208,6 +1239,7 @@ var NavbarMultiColumnGroups = ({
1208
1239
  authActionsSlot,
1209
1240
  mobileAuthActions,
1210
1241
  mobileAuthActionsSlot,
1242
+ layoutVariant = "fullScreenContainerizedLinks",
1211
1243
  background = "white",
1212
1244
  spacing = "none",
1213
1245
  pattern,
@@ -1302,19 +1334,23 @@ var NavbarMultiColumnGroups = ({
1302
1334
  );
1303
1335
  });
1304
1336
  };
1337
+ const {
1338
+ sectionClasses,
1339
+ containerWrapperClasses,
1340
+ innerContainerClasses,
1341
+ navWrapperClasses,
1342
+ spacingOverride
1343
+ } = getNavbarLayoutClasses(layoutVariant, { className, containerClassName });
1305
1344
  return /* @__PURE__ */ jsxRuntime.jsxs(
1306
1345
  Section,
1307
1346
  {
1308
1347
  background,
1309
- spacing,
1310
- className: cn(
1311
- "pointer-events-auto fixed top-0 z-999 flex h-16 w-full items-center justify-center",
1312
- className
1313
- ),
1348
+ spacing: spacingOverride ?? spacing,
1349
+ className: sectionClasses,
1314
1350
  pattern,
1315
1351
  patternOpacity,
1316
1352
  children: [
1317
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("container", containerClassName), children: /* @__PURE__ */ jsxRuntime.jsxs(
1353
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: containerWrapperClasses, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn(innerContainerClasses, navWrapperClasses), children: /* @__PURE__ */ jsxRuntime.jsxs(
1318
1354
  "div",
1319
1355
  {
1320
1356
  className: cn(
@@ -1369,7 +1405,7 @@ var NavbarMultiColumnGroups = ({
1369
1405
  ) })
1370
1406
  ]
1371
1407
  }
1372
- ) }),
1408
+ ) }) }),
1373
1409
  /* @__PURE__ */ jsxRuntime.jsx(
1374
1410
  MobileNavigationMenu,
1375
1411
  {
@@ -2,6 +2,7 @@ import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import * as React from 'react';
3
3
  import { P as PatternName } from './pattern-background-a7gKHzHy.cjs';
4
4
  import { SectionBackground, SectionSpacing } from './types.cjs';
5
+ import { L as LogoConfig, N as NavbarLayoutVariant } from './types-COVDidbn.cjs';
5
6
  import { A as ActionConfig, O as OptixFlowConfig } from './blocks-Cohq4eio.cjs';
6
7
  import 'class-variance-authority';
7
8
  import './button-variants-lRElsmTc.cjs';
@@ -23,16 +24,6 @@ interface MenuItem {
23
24
  url?: string;
24
25
  groups?: MenuGroup[];
25
26
  }
26
- /**
27
- * Logo configuration interface
28
- */
29
- interface LogoConfig {
30
- url?: string;
31
- src?: string;
32
- alt?: string;
33
- title?: React.ReactNode;
34
- className?: string;
35
- }
36
27
  /**
37
28
  * Props for the NavbarMultiColumnGroups component
38
29
  */
@@ -113,6 +104,10 @@ interface NavbarMultiColumnGroupsProps {
113
104
  * OptixFlow image optimization configuration
114
105
  */
115
106
  optixFlowConfig?: OptixFlowConfig;
107
+ /**
108
+ * Layout variant for the navbar
109
+ */
110
+ layoutVariant?: NavbarLayoutVariant;
116
111
  }
117
112
  /**
118
113
  * NavbarMultiColumnGroups - A navigation bar with multi-column grouped dropdown menus.
@@ -123,6 +118,6 @@ interface NavbarMultiColumnGroupsProps {
123
118
  * full-screen sheet with accordion navigation and CTA buttons at the top. Ideal for SaaS
124
119
  * platforms, enterprise software, and products with many features to showcase.
125
120
  */
126
- declare const NavbarMultiColumnGroups: ({ className, containerClassName, navClassName, navigationMenuClassName, actionsClassName, logo, logoSlot, logoClassName, navigation, navigationSlot, authActions, authActionsSlot, mobileAuthActions, mobileAuthActionsSlot, background, spacing, pattern, patternOpacity, optixFlowConfig, }: NavbarMultiColumnGroupsProps) => react_jsx_runtime.JSX.Element;
121
+ declare const NavbarMultiColumnGroups: ({ className, containerClassName, navClassName, navigationMenuClassName, actionsClassName, logo, logoSlot, logoClassName, navigation, navigationSlot, authActions, authActionsSlot, mobileAuthActions, mobileAuthActionsSlot, layoutVariant, background, spacing, pattern, patternOpacity, optixFlowConfig, }: NavbarMultiColumnGroupsProps) => react_jsx_runtime.JSX.Element;
127
122
 
128
123
  export { NavbarMultiColumnGroups, type NavbarMultiColumnGroupsProps };
@@ -2,6 +2,7 @@ import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import * as React from 'react';
3
3
  import { P as PatternName } from './pattern-background-a7gKHzHy.js';
4
4
  import { SectionBackground, SectionSpacing } from './types.js';
5
+ import { L as LogoConfig, N as NavbarLayoutVariant } from './types-COVDidbn.js';
5
6
  import { A as ActionConfig, O as OptixFlowConfig } from './blocks-k17uluAz.js';
6
7
  import 'class-variance-authority';
7
8
  import './button-variants-lRElsmTc.js';
@@ -23,16 +24,6 @@ interface MenuItem {
23
24
  url?: string;
24
25
  groups?: MenuGroup[];
25
26
  }
26
- /**
27
- * Logo configuration interface
28
- */
29
- interface LogoConfig {
30
- url?: string;
31
- src?: string;
32
- alt?: string;
33
- title?: React.ReactNode;
34
- className?: string;
35
- }
36
27
  /**
37
28
  * Props for the NavbarMultiColumnGroups component
38
29
  */
@@ -113,6 +104,10 @@ interface NavbarMultiColumnGroupsProps {
113
104
  * OptixFlow image optimization configuration
114
105
  */
115
106
  optixFlowConfig?: OptixFlowConfig;
107
+ /**
108
+ * Layout variant for the navbar
109
+ */
110
+ layoutVariant?: NavbarLayoutVariant;
116
111
  }
117
112
  /**
118
113
  * NavbarMultiColumnGroups - A navigation bar with multi-column grouped dropdown menus.
@@ -123,6 +118,6 @@ interface NavbarMultiColumnGroupsProps {
123
118
  * full-screen sheet with accordion navigation and CTA buttons at the top. Ideal for SaaS
124
119
  * platforms, enterprise software, and products with many features to showcase.
125
120
  */
126
- declare const NavbarMultiColumnGroups: ({ className, containerClassName, navClassName, navigationMenuClassName, actionsClassName, logo, logoSlot, logoClassName, navigation, navigationSlot, authActions, authActionsSlot, mobileAuthActions, mobileAuthActionsSlot, background, spacing, pattern, patternOpacity, optixFlowConfig, }: NavbarMultiColumnGroupsProps) => react_jsx_runtime.JSX.Element;
121
+ declare const NavbarMultiColumnGroups: ({ className, containerClassName, navClassName, navigationMenuClassName, actionsClassName, logo, logoSlot, logoClassName, navigation, navigationSlot, authActions, authActionsSlot, mobileAuthActions, mobileAuthActionsSlot, layoutVariant, background, spacing, pattern, patternOpacity, optixFlowConfig, }: NavbarMultiColumnGroupsProps) => react_jsx_runtime.JSX.Element;
127
122
 
128
123
  export { NavbarMultiColumnGroups, type NavbarMultiColumnGroupsProps };
@@ -986,7 +986,7 @@ function NavigationMenuList({
986
986
  {
987
987
  "data-slot": "navigation-menu-list",
988
988
  className: cn(
989
- "group flex flex-1 list-none items-center justify-center gap-6",
989
+ "group flex flex-1 list-none items-center justify-center gap-2 lg:gap-4 xl:gap-6",
990
990
  className
991
991
  ),
992
992
  ...props
@@ -1026,8 +1026,9 @@ function NavigationMenuTrigger({
1026
1026
  /* @__PURE__ */ jsx(
1027
1027
  DynamicIcon,
1028
1028
  {
1029
+ size: 18,
1029
1030
  name: "lucide/chevron-down",
1030
- className: "relative top-[1px] ml-1 size-2.5 transition duration-300 group-data-[state=open]:rotate-180",
1031
+ className: "relative top-px opacity-50 transition duration-300 group-data-[state=open]:rotate-180",
1031
1032
  "aria-hidden": "true"
1032
1033
  }
1033
1034
  )
@@ -1067,7 +1068,7 @@ function NavigationMenuViewport({
1067
1068
  {
1068
1069
  "data-slot": "navigation-menu-viewport",
1069
1070
  className: cn(
1070
- "origin-top-center bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border shadow md:w-[var(--radix-navigation-menu-viewport-width)]",
1071
+ "origin-top-center bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 relative mt-1.5 h-(--radix-navigation-menu-viewport-height) w-full overflow-hidden rounded-md border border-border/50 shadow-sm md:w-(--radix-navigation-menu-viewport-width)",
1071
1072
  className
1072
1073
  ),
1073
1074
  ...props
@@ -1085,7 +1086,7 @@ function NavigationMenuLink({
1085
1086
  {
1086
1087
  "data-slot": "navigation-menu-link",
1087
1088
  className: cn(
1088
- "data-[active=true]:focus:bg-muted data-[active=true]:hover:bg-muted data-[active=true]:bg-muted/50 data-[active=true]:text-foreground hover:bg-muted hover:text-foreground focus:bg-muted focus:text-foreground focus-visible:ring-ring/50 [&_svg:not([class*='text-'])]:text-muted-foreground flex flex-col gap-1 rounded-sm p-2 text-sm transition-all outline-none focus-visible:ring-[3px] focus-visible:outline-1 [&_svg:not([class*='size-'])]:size-4",
1089
+ "group inline-flex w-max items-center justify-center rounded-md text-sm disabled:pointer-events-none disabled:opacity-50 data-[state=open]:hover:bg-muted data-[state=open]:focus:bg-muted focus-visible:ring-ring/50 outline-none transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 group h-auto bg-transparent px-3 py-2 font-normal text-foreground/80 hover:bg-muted hover:text-foreground focus:bg-muted focus:text-foreground data-[state=open]:bg-muted/50 data-[state=open]:text-foreground",
1089
1090
  className
1090
1091
  ),
1091
1092
  ...props
@@ -1165,6 +1166,36 @@ function SheetTitle({
1165
1166
  // lib/mediaPlaceholders.ts
1166
1167
  var logoPlaceholders = {
1167
1168
  logoMark: "https://cdn.ing/assets/i/r/285975/eud79qeya11q5w6ueyhklueardyx/monochrome-rounded-square-app-icon-circular-emblem.png"};
1169
+
1170
+ // components/blocks/navbars/layout-variant-utils.ts
1171
+ function getNavbarLayoutClasses(layoutVariant = "fullScreenContainerizedLinks", customClasses) {
1172
+ const isFloatingBar = layoutVariant === "floatingBar";
1173
+ const isFullWidthLinks = layoutVariant === "fullScreenFullWidthLinks";
1174
+ return {
1175
+ // Section wrapper classes
1176
+ sectionClasses: cn(
1177
+ "inset-x-0 z-20",
1178
+ isFloatingBar ? "sticky top-4" : "top-0",
1179
+ customClasses?.className
1180
+ ),
1181
+ // Outer container wrapper (only for floating bar)
1182
+ containerWrapperClasses: cn(
1183
+ isFloatingBar && "mx-auto w-full px-2 sm:px-4 lg:px-8 max-w-7xl relative z-10"
1184
+ ),
1185
+ // Inner container classes
1186
+ innerContainerClasses: cn(
1187
+ !isFloatingBar && !isFullWidthLinks && "container",
1188
+ isFullWidthLinks && "mx-auto w-full px-2 sm:px-4 lg:px-8",
1189
+ customClasses?.containerClassName
1190
+ ),
1191
+ // Navigation wrapper classes (for border and shadow)
1192
+ navWrapperClasses: cn(
1193
+ isFloatingBar ? "border border-border/50 shadow-sm rounded-full" : "border-b border-border/50 shadow-sm"
1194
+ ),
1195
+ // Spacing adjustment for Section component
1196
+ spacingOverride: isFloatingBar ? "none" : void 0
1197
+ };
1198
+ }
1168
1199
  var MOBILE_BREAKPOINT = 1024;
1169
1200
  var NavbarMultiColumnGroups = ({
1170
1201
  className,
@@ -1184,6 +1215,7 @@ var NavbarMultiColumnGroups = ({
1184
1215
  authActionsSlot,
1185
1216
  mobileAuthActions,
1186
1217
  mobileAuthActionsSlot,
1218
+ layoutVariant = "fullScreenContainerizedLinks",
1187
1219
  background = "white",
1188
1220
  spacing = "none",
1189
1221
  pattern,
@@ -1278,19 +1310,23 @@ var NavbarMultiColumnGroups = ({
1278
1310
  );
1279
1311
  });
1280
1312
  };
1313
+ const {
1314
+ sectionClasses,
1315
+ containerWrapperClasses,
1316
+ innerContainerClasses,
1317
+ navWrapperClasses,
1318
+ spacingOverride
1319
+ } = getNavbarLayoutClasses(layoutVariant, { className, containerClassName });
1281
1320
  return /* @__PURE__ */ jsxs(
1282
1321
  Section,
1283
1322
  {
1284
1323
  background,
1285
- spacing,
1286
- className: cn(
1287
- "pointer-events-auto fixed top-0 z-999 flex h-16 w-full items-center justify-center",
1288
- className
1289
- ),
1324
+ spacing: spacingOverride ?? spacing,
1325
+ className: sectionClasses,
1290
1326
  pattern,
1291
1327
  patternOpacity,
1292
1328
  children: [
1293
- /* @__PURE__ */ jsx("div", { className: cn("container", containerClassName), children: /* @__PURE__ */ jsxs(
1329
+ /* @__PURE__ */ jsx("div", { className: containerWrapperClasses, children: /* @__PURE__ */ jsx("div", { className: cn(innerContainerClasses, navWrapperClasses), children: /* @__PURE__ */ jsxs(
1294
1330
  "div",
1295
1331
  {
1296
1332
  className: cn(
@@ -1345,7 +1381,7 @@ var NavbarMultiColumnGroups = ({
1345
1381
  ) })
1346
1382
  ]
1347
1383
  }
1348
- ) }),
1384
+ ) }) }),
1349
1385
  /* @__PURE__ */ jsx(
1350
1386
  MobileNavigationMenu,
1351
1387
  {