@opensite/ui 0.9.4 → 0.9.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 (45) hide show
  1. package/dist/navbar-animated-preview.cjs +71 -29
  2. package/dist/navbar-animated-preview.js +71 -29
  3. package/dist/navbar-centered-menu.cjs +101 -31
  4. package/dist/navbar-centered-menu.js +101 -31
  5. package/dist/navbar-dark-icons.cjs +72 -30
  6. package/dist/navbar-dark-icons.js +72 -30
  7. package/dist/navbar-dropdown-menu.cjs +97 -30
  8. package/dist/navbar-dropdown-menu.js +97 -30
  9. package/dist/navbar-education-platform.cjs +71 -26
  10. package/dist/navbar-education-platform.js +71 -26
  11. package/dist/navbar-enterprise-mega.cjs +71 -29
  12. package/dist/navbar-enterprise-mega.js +71 -29
  13. package/dist/navbar-feature-grid.cjs +81 -28
  14. package/dist/navbar-feature-grid.js +81 -28
  15. package/dist/navbar-floating-pill.cjs +71 -26
  16. package/dist/navbar-floating-pill.js +71 -26
  17. package/dist/navbar-fullscreen-menu.cjs +71 -26
  18. package/dist/navbar-fullscreen-menu.js +72 -27
  19. package/dist/navbar-icon-links.cjs +72 -27
  20. package/dist/navbar-icon-links.js +72 -27
  21. package/dist/navbar-image-preview.cjs +2 -2
  22. package/dist/navbar-image-preview.js +2 -2
  23. package/dist/navbar-mega-menu.cjs +71 -40
  24. package/dist/navbar-mega-menu.js +71 -40
  25. package/dist/navbar-multi-column-groups.cjs +2 -2
  26. package/dist/navbar-multi-column-groups.js +2 -2
  27. package/dist/navbar-platform-resources.cjs +71 -26
  28. package/dist/navbar-platform-resources.js +71 -26
  29. package/dist/navbar-search-focused.cjs +2 -2
  30. package/dist/navbar-search-focused.js +2 -2
  31. package/dist/navbar-sidebar-mobile.cjs +2 -2
  32. package/dist/navbar-sidebar-mobile.js +2 -2
  33. package/dist/navbar-simple-links.cjs +72 -27
  34. package/dist/navbar-simple-links.js +72 -27
  35. package/dist/navbar-split-cta.cjs +2 -2
  36. package/dist/navbar-split-cta.js +2 -2
  37. package/dist/navbar-sticky-compact.cjs +2 -2
  38. package/dist/navbar-sticky-compact.js +2 -2
  39. package/dist/navbar-tabbed-sections.cjs +2 -2
  40. package/dist/navbar-tabbed-sections.js +2 -2
  41. package/dist/navbar-transparent-overlay.cjs +2 -2
  42. package/dist/navbar-transparent-overlay.js +2 -2
  43. package/dist/registry.cjs +242 -345
  44. package/dist/registry.js +242 -345
  45. package/package.json +6 -1
@@ -934,6 +934,66 @@ var Section = React__namespace.default.forwardRef(
934
934
  }
935
935
  );
936
936
  Section.displayName = "Section";
937
+ var NavbarLogo = ({
938
+ logo,
939
+ logoSlot,
940
+ logoClassName,
941
+ optixFlowConfig
942
+ }) => {
943
+ if (logoSlot) return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: logoSlot });
944
+ if (!logo) return null;
945
+ const hasResponsiveSources = logo.desktopSrc || logo.mobileSrc;
946
+ return /* @__PURE__ */ jsxRuntime.jsx(
947
+ Pressable,
948
+ {
949
+ href: logo.url || "/",
950
+ className: cn("flex items-center", logoClassName),
951
+ children: hasResponsiveSources ? (
952
+ // Responsive logo with desktop/mobile sources
953
+ /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
954
+ /* @__PURE__ */ jsxRuntime.jsx(
955
+ img.Img,
956
+ {
957
+ src: logo.desktopSrc || logo.src || "",
958
+ className: cn(
959
+ "hidden h-8 w-auto object-contain md:block",
960
+ logo.className
961
+ ),
962
+ alt: logo.alt || "Logo",
963
+ optixFlowConfig
964
+ }
965
+ ),
966
+ /* @__PURE__ */ jsxRuntime.jsx(
967
+ img.Img,
968
+ {
969
+ src: logo.mobileSrc || logo.src || "",
970
+ className: cn(
971
+ "h-8 w-auto object-contain md:hidden",
972
+ logo.className
973
+ ),
974
+ alt: logo.alt || "Logo",
975
+ optixFlowConfig
976
+ }
977
+ )
978
+ ] })
979
+ ) : logo.src ? (
980
+ // Standard single logo image
981
+ /* @__PURE__ */ jsxRuntime.jsx(
982
+ img.Img,
983
+ {
984
+ src: logo.src,
985
+ className: cn("max-h-8 w-auto object-contain", logo.className),
986
+ alt: logo.alt || "Logo",
987
+ optixFlowConfig
988
+ }
989
+ )
990
+ ) : (
991
+ // Text-based logo (title as string or React element)
992
+ logo.title && (typeof logo.title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-lg font-semibold tracking-tighter", children: logo.title }) : logo.title)
993
+ )
994
+ }
995
+ );
996
+ };
937
997
  function Accordion({
938
998
  ...props
939
999
  }) {
@@ -1167,14 +1227,14 @@ function getNavbarLayoutClasses(layoutVariant = "fullScreenContainerizedLinks",
1167
1227
  ),
1168
1228
  // Navigation wrapper classes (for border and shadow)
1169
1229
  navWrapperClasses: cn(
1170
- "w-full",
1230
+ "w-full h-16 items-center",
1171
1231
  isFloatingBar ? "border border-border/50 shadow-sm rounded-full" : "border-b border-border/50 shadow-sm flex justify-center"
1172
1232
  ),
1173
1233
  // Section container configuration for full-width navbars
1174
1234
  sectionContainerClassName: "px-0 sm:px-0 lg:px-0",
1175
1235
  sectionContainerMaxWidth: "full",
1176
1236
  // Spacing adjustment for Section component
1177
- spacingOverride: isFloatingBar ? "none" : void 0
1237
+ spacingOverride: isFloatingBar ? "none" : "py-0 md:py-0"
1178
1238
  };
1179
1239
  }
1180
1240
  var NavbarPlatformResources = ({
@@ -1200,29 +1260,6 @@ var NavbarPlatformResources = ({
1200
1260
  optixFlowConfig
1201
1261
  }) => {
1202
1262
  const [open, setOpen] = React.useState(false);
1203
- const renderLogo = React.useMemo(() => {
1204
- if (logoSlot) return logoSlot;
1205
- if (!logo) return null;
1206
- return /* @__PURE__ */ jsxRuntime.jsxs(
1207
- Pressable,
1208
- {
1209
- href: logo.url || "/",
1210
- className: cn("flex items-center gap-2", logoClassName),
1211
- children: [
1212
- logo.src && /* @__PURE__ */ jsxRuntime.jsx(
1213
- img.Img,
1214
- {
1215
- src: logo.src,
1216
- className: cn("max-h-8", logo.className),
1217
- alt: logo.alt || "Logo",
1218
- optixFlowConfig
1219
- }
1220
- ),
1221
- logo.title && (typeof logo.title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-lg font-semibold tracking-tighter", children: logo.title }) : logo.title)
1222
- ]
1223
- }
1224
- );
1225
- }, [logoSlot, logo, logoClassName, optixFlowConfig]);
1226
1263
  const hasDropdownItems = (link) => Boolean(link.links?.length || link.dropdownGroups?.length);
1227
1264
  const renderDropdownContent = (link) => {
1228
1265
  const layout = link.layout || "simple-list";
@@ -1509,7 +1546,15 @@ var NavbarPlatformResources = ({
1509
1546
  className: cn("min-w-full", navigationMenuClassName),
1510
1547
  children: [
1511
1548
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex w-full items-center justify-between gap-12 py-4", children: [
1512
- renderLogo,
1549
+ /* @__PURE__ */ jsxRuntime.jsx(
1550
+ NavbarLogo,
1551
+ {
1552
+ logo,
1553
+ logoSlot,
1554
+ logoClassName,
1555
+ optixFlowConfig
1556
+ }
1557
+ ),
1513
1558
  /* @__PURE__ */ jsxRuntime.jsx(
1514
1559
  NavigationMenuList,
1515
1560
  {
@@ -911,6 +911,66 @@ var Section = React__default.forwardRef(
911
911
  }
912
912
  );
913
913
  Section.displayName = "Section";
914
+ var NavbarLogo = ({
915
+ logo,
916
+ logoSlot,
917
+ logoClassName,
918
+ optixFlowConfig
919
+ }) => {
920
+ if (logoSlot) return /* @__PURE__ */ jsx(Fragment, { children: logoSlot });
921
+ if (!logo) return null;
922
+ const hasResponsiveSources = logo.desktopSrc || logo.mobileSrc;
923
+ return /* @__PURE__ */ jsx(
924
+ Pressable,
925
+ {
926
+ href: logo.url || "/",
927
+ className: cn("flex items-center", logoClassName),
928
+ children: hasResponsiveSources ? (
929
+ // Responsive logo with desktop/mobile sources
930
+ /* @__PURE__ */ jsxs(Fragment, { children: [
931
+ /* @__PURE__ */ jsx(
932
+ Img,
933
+ {
934
+ src: logo.desktopSrc || logo.src || "",
935
+ className: cn(
936
+ "hidden h-8 w-auto object-contain md:block",
937
+ logo.className
938
+ ),
939
+ alt: logo.alt || "Logo",
940
+ optixFlowConfig
941
+ }
942
+ ),
943
+ /* @__PURE__ */ jsx(
944
+ Img,
945
+ {
946
+ src: logo.mobileSrc || logo.src || "",
947
+ className: cn(
948
+ "h-8 w-auto object-contain md:hidden",
949
+ logo.className
950
+ ),
951
+ alt: logo.alt || "Logo",
952
+ optixFlowConfig
953
+ }
954
+ )
955
+ ] })
956
+ ) : logo.src ? (
957
+ // Standard single logo image
958
+ /* @__PURE__ */ jsx(
959
+ Img,
960
+ {
961
+ src: logo.src,
962
+ className: cn("max-h-8 w-auto object-contain", logo.className),
963
+ alt: logo.alt || "Logo",
964
+ optixFlowConfig
965
+ }
966
+ )
967
+ ) : (
968
+ // Text-based logo (title as string or React element)
969
+ logo.title && (typeof logo.title === "string" ? /* @__PURE__ */ jsx("span", { className: "text-lg font-semibold tracking-tighter", children: logo.title }) : logo.title)
970
+ )
971
+ }
972
+ );
973
+ };
914
974
  function Accordion({
915
975
  ...props
916
976
  }) {
@@ -1144,14 +1204,14 @@ function getNavbarLayoutClasses(layoutVariant = "fullScreenContainerizedLinks",
1144
1204
  ),
1145
1205
  // Navigation wrapper classes (for border and shadow)
1146
1206
  navWrapperClasses: cn(
1147
- "w-full",
1207
+ "w-full h-16 items-center",
1148
1208
  isFloatingBar ? "border border-border/50 shadow-sm rounded-full" : "border-b border-border/50 shadow-sm flex justify-center"
1149
1209
  ),
1150
1210
  // Section container configuration for full-width navbars
1151
1211
  sectionContainerClassName: "px-0 sm:px-0 lg:px-0",
1152
1212
  sectionContainerMaxWidth: "full",
1153
1213
  // Spacing adjustment for Section component
1154
- spacingOverride: isFloatingBar ? "none" : void 0
1214
+ spacingOverride: isFloatingBar ? "none" : "py-0 md:py-0"
1155
1215
  };
1156
1216
  }
1157
1217
  var NavbarPlatformResources = ({
@@ -1177,29 +1237,6 @@ var NavbarPlatformResources = ({
1177
1237
  optixFlowConfig
1178
1238
  }) => {
1179
1239
  const [open, setOpen] = useState(false);
1180
- const renderLogo = useMemo(() => {
1181
- if (logoSlot) return logoSlot;
1182
- if (!logo) return null;
1183
- return /* @__PURE__ */ jsxs(
1184
- Pressable,
1185
- {
1186
- href: logo.url || "/",
1187
- className: cn("flex items-center gap-2", logoClassName),
1188
- children: [
1189
- logo.src && /* @__PURE__ */ jsx(
1190
- Img,
1191
- {
1192
- src: logo.src,
1193
- className: cn("max-h-8", logo.className),
1194
- alt: logo.alt || "Logo",
1195
- optixFlowConfig
1196
- }
1197
- ),
1198
- logo.title && (typeof logo.title === "string" ? /* @__PURE__ */ jsx("span", { className: "text-lg font-semibold tracking-tighter", children: logo.title }) : logo.title)
1199
- ]
1200
- }
1201
- );
1202
- }, [logoSlot, logo, logoClassName, optixFlowConfig]);
1203
1240
  const hasDropdownItems = (link) => Boolean(link.links?.length || link.dropdownGroups?.length);
1204
1241
  const renderDropdownContent = (link) => {
1205
1242
  const layout = link.layout || "simple-list";
@@ -1486,7 +1523,15 @@ var NavbarPlatformResources = ({
1486
1523
  className: cn("min-w-full", navigationMenuClassName),
1487
1524
  children: [
1488
1525
  /* @__PURE__ */ jsxs("div", { className: "flex w-full items-center justify-between gap-12 py-4", children: [
1489
- renderLogo,
1526
+ /* @__PURE__ */ jsx(
1527
+ NavbarLogo,
1528
+ {
1529
+ logo,
1530
+ logoSlot,
1531
+ logoClassName,
1532
+ optixFlowConfig
1533
+ }
1534
+ ),
1490
1535
  /* @__PURE__ */ jsx(
1491
1536
  NavigationMenuList,
1492
1537
  {
@@ -1133,14 +1133,14 @@ function getNavbarLayoutClasses(layoutVariant = "fullScreenContainerizedLinks",
1133
1133
  ),
1134
1134
  // Navigation wrapper classes (for border and shadow)
1135
1135
  navWrapperClasses: cn(
1136
- "w-full",
1136
+ "w-full h-16 items-center",
1137
1137
  isFloatingBar ? "border border-border/50 shadow-sm rounded-full" : "border-b border-border/50 shadow-sm flex justify-center"
1138
1138
  ),
1139
1139
  // Section container configuration for full-width navbars
1140
1140
  sectionContainerClassName: "px-0 sm:px-0 lg:px-0",
1141
1141
  sectionContainerMaxWidth: "full",
1142
1142
  // Spacing adjustment for Section component
1143
- spacingOverride: isFloatingBar ? "none" : void 0
1143
+ spacingOverride: isFloatingBar ? "none" : "py-0 md:py-0"
1144
1144
  };
1145
1145
  }
1146
1146
  var NavbarSearchFocused = ({
@@ -1110,14 +1110,14 @@ function getNavbarLayoutClasses(layoutVariant = "fullScreenContainerizedLinks",
1110
1110
  ),
1111
1111
  // Navigation wrapper classes (for border and shadow)
1112
1112
  navWrapperClasses: cn(
1113
- "w-full",
1113
+ "w-full h-16 items-center",
1114
1114
  isFloatingBar ? "border border-border/50 shadow-sm rounded-full" : "border-b border-border/50 shadow-sm flex justify-center"
1115
1115
  ),
1116
1116
  // Section container configuration for full-width navbars
1117
1117
  sectionContainerClassName: "px-0 sm:px-0 lg:px-0",
1118
1118
  sectionContainerMaxWidth: "full",
1119
1119
  // Spacing adjustment for Section component
1120
- spacingOverride: isFloatingBar ? "none" : void 0
1120
+ spacingOverride: isFloatingBar ? "none" : "py-0 md:py-0"
1121
1121
  };
1122
1122
  }
1123
1123
  var NavbarSearchFocused = ({
@@ -1238,14 +1238,14 @@ function getNavbarLayoutClasses(layoutVariant = "fullScreenContainerizedLinks",
1238
1238
  ),
1239
1239
  // Navigation wrapper classes (for border and shadow)
1240
1240
  navWrapperClasses: cn(
1241
- "w-full",
1241
+ "w-full h-16 items-center",
1242
1242
  isFloatingBar ? "border border-border/50 shadow-sm rounded-full" : "border-b border-border/50 shadow-sm flex justify-center"
1243
1243
  ),
1244
1244
  // Section container configuration for full-width navbars
1245
1245
  sectionContainerClassName: "px-0 sm:px-0 lg:px-0",
1246
1246
  sectionContainerMaxWidth: "full",
1247
1247
  // Spacing adjustment for Section component
1248
- spacingOverride: isFloatingBar ? "none" : void 0
1248
+ spacingOverride: isFloatingBar ? "none" : "py-0 md:py-0"
1249
1249
  };
1250
1250
  }
1251
1251
  var NavbarSidebarMobile = ({
@@ -1214,14 +1214,14 @@ function getNavbarLayoutClasses(layoutVariant = "fullScreenContainerizedLinks",
1214
1214
  ),
1215
1215
  // Navigation wrapper classes (for border and shadow)
1216
1216
  navWrapperClasses: cn(
1217
- "w-full",
1217
+ "w-full h-16 items-center",
1218
1218
  isFloatingBar ? "border border-border/50 shadow-sm rounded-full" : "border-b border-border/50 shadow-sm flex justify-center"
1219
1219
  ),
1220
1220
  // Section container configuration for full-width navbars
1221
1221
  sectionContainerClassName: "px-0 sm:px-0 lg:px-0",
1222
1222
  sectionContainerMaxWidth: "full",
1223
1223
  // Spacing adjustment for Section component
1224
- spacingOverride: isFloatingBar ? "none" : void 0
1224
+ spacingOverride: isFloatingBar ? "none" : "py-0 md:py-0"
1225
1225
  };
1226
1226
  }
1227
1227
  var NavbarSidebarMobile = ({
@@ -6,9 +6,9 @@ var clsx = require('clsx');
6
6
  var tailwindMerge = require('tailwind-merge');
7
7
  var classVarianceAuthority = require('class-variance-authority');
8
8
  var jsxRuntime = require('react/jsx-runtime');
9
- var img = require('@page-speed/img');
10
9
  var NavigationMenuPrimitive = require('@radix-ui/react-navigation-menu');
11
10
  var PopoverPrimitive = require('@radix-ui/react-popover');
11
+ var img = require('@page-speed/img');
12
12
 
13
13
  function _interopNamespace(e) {
14
14
  if (e && e.__esModule) return e;
@@ -1059,6 +1059,66 @@ function PopoverContent({
1059
1059
  }
1060
1060
  ) });
1061
1061
  }
1062
+ var NavbarLogo = ({
1063
+ logo,
1064
+ logoSlot,
1065
+ logoClassName,
1066
+ optixFlowConfig
1067
+ }) => {
1068
+ if (logoSlot) return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: logoSlot });
1069
+ if (!logo) return null;
1070
+ const hasResponsiveSources = logo.desktopSrc || logo.mobileSrc;
1071
+ return /* @__PURE__ */ jsxRuntime.jsx(
1072
+ Pressable,
1073
+ {
1074
+ href: logo.url || "/",
1075
+ className: cn("flex items-center", logoClassName),
1076
+ children: hasResponsiveSources ? (
1077
+ // Responsive logo with desktop/mobile sources
1078
+ /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1079
+ /* @__PURE__ */ jsxRuntime.jsx(
1080
+ img.Img,
1081
+ {
1082
+ src: logo.desktopSrc || logo.src || "",
1083
+ className: cn(
1084
+ "hidden h-8 w-auto object-contain md:block",
1085
+ logo.className
1086
+ ),
1087
+ alt: logo.alt || "Logo",
1088
+ optixFlowConfig
1089
+ }
1090
+ ),
1091
+ /* @__PURE__ */ jsxRuntime.jsx(
1092
+ img.Img,
1093
+ {
1094
+ src: logo.mobileSrc || logo.src || "",
1095
+ className: cn(
1096
+ "h-8 w-auto object-contain md:hidden",
1097
+ logo.className
1098
+ ),
1099
+ alt: logo.alt || "Logo",
1100
+ optixFlowConfig
1101
+ }
1102
+ )
1103
+ ] })
1104
+ ) : logo.src ? (
1105
+ // Standard single logo image
1106
+ /* @__PURE__ */ jsxRuntime.jsx(
1107
+ img.Img,
1108
+ {
1109
+ src: logo.src,
1110
+ className: cn("max-h-8 w-auto object-contain", logo.className),
1111
+ alt: logo.alt || "Logo",
1112
+ optixFlowConfig
1113
+ }
1114
+ )
1115
+ ) : (
1116
+ // Text-based logo (title as string or React element)
1117
+ logo.title && (typeof logo.title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-lg font-semibold tracking-tighter", children: logo.title }) : logo.title)
1118
+ )
1119
+ }
1120
+ );
1121
+ };
1062
1122
 
1063
1123
  // lib/mediaPlaceholders.ts
1064
1124
  var logoPlaceholders = {
@@ -1089,14 +1149,14 @@ function getNavbarLayoutClasses(layoutVariant = "fullScreenContainerizedLinks",
1089
1149
  ),
1090
1150
  // Navigation wrapper classes (for border and shadow)
1091
1151
  navWrapperClasses: cn(
1092
- "w-full",
1152
+ "w-full h-16 items-center",
1093
1153
  isFloatingBar ? "border border-border/50 shadow-sm rounded-full" : "border-b border-border/50 shadow-sm flex justify-center"
1094
1154
  ),
1095
1155
  // Section container configuration for full-width navbars
1096
1156
  sectionContainerClassName: "px-0 sm:px-0 lg:px-0",
1097
1157
  sectionContainerMaxWidth: "full",
1098
1158
  // Spacing adjustment for Section component
1099
- spacingOverride: isFloatingBar ? "none" : void 0
1159
+ spacingOverride: isFloatingBar ? "none" : "py-0 md:py-0"
1100
1160
  };
1101
1161
  }
1102
1162
  var AnimatedHamburger = ({ isOpen }) => {
@@ -1225,29 +1285,6 @@ var NavbarSimpleLinks = ({
1225
1285
  window.addEventListener("resize", updateIndicator);
1226
1286
  return () => window.removeEventListener("resize", updateIndicator);
1227
1287
  }, [activeItem]);
1228
- const renderLogo = React.useMemo(() => {
1229
- if (logoSlot) return logoSlot;
1230
- if (!logo) return null;
1231
- return /* @__PURE__ */ jsxRuntime.jsxs(
1232
- Pressable,
1233
- {
1234
- href: logo.url || "/",
1235
- className: cn("flex items-center gap-2", logoClassName),
1236
- children: [
1237
- logo.src && /* @__PURE__ */ jsxRuntime.jsx(
1238
- img.Img,
1239
- {
1240
- src: logo.src,
1241
- className: cn("max-h-8 w-8", logo.className),
1242
- alt: logo.alt || "Logo",
1243
- optixFlowConfig
1244
- }
1245
- ),
1246
- logo.title && (typeof logo.title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-lg font-semibold tracking-tighter", children: logo.title }) : logo.title)
1247
- ]
1248
- }
1249
- );
1250
- }, [logoSlot, logo, logoClassName, optixFlowConfig]);
1251
1288
  const renderNavItems = React.useMemo(() => {
1252
1289
  if (navItemsSlot) return navItemsSlot;
1253
1290
  if (!navItems || navItems.length === 0) return null;
@@ -1319,7 +1356,15 @@ var NavbarSimpleLinks = ({
1319
1356
  navClassName
1320
1357
  ),
1321
1358
  children: [
1322
- renderLogo,
1359
+ /* @__PURE__ */ jsxRuntime.jsx(
1360
+ NavbarLogo,
1361
+ {
1362
+ logo,
1363
+ logoSlot,
1364
+ logoClassName,
1365
+ optixFlowConfig
1366
+ }
1367
+ ),
1323
1368
  /* @__PURE__ */ jsxRuntime.jsx(
1324
1369
  NavigationMenu,
1325
1370
  {
@@ -5,9 +5,9 @@ import { clsx } from 'clsx';
5
5
  import { twMerge } from 'tailwind-merge';
6
6
  import { cva } from 'class-variance-authority';
7
7
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
8
- import { Img } from '@page-speed/img';
9
8
  import * as NavigationMenuPrimitive from '@radix-ui/react-navigation-menu';
10
9
  import * as PopoverPrimitive from '@radix-ui/react-popover';
10
+ import { Img } from '@page-speed/img';
11
11
 
12
12
  // components/blocks/navbars/navbar-simple-links.tsx
13
13
  function cn(...inputs) {
@@ -1036,6 +1036,66 @@ function PopoverContent({
1036
1036
  }
1037
1037
  ) });
1038
1038
  }
1039
+ var NavbarLogo = ({
1040
+ logo,
1041
+ logoSlot,
1042
+ logoClassName,
1043
+ optixFlowConfig
1044
+ }) => {
1045
+ if (logoSlot) return /* @__PURE__ */ jsx(Fragment, { children: logoSlot });
1046
+ if (!logo) return null;
1047
+ const hasResponsiveSources = logo.desktopSrc || logo.mobileSrc;
1048
+ return /* @__PURE__ */ jsx(
1049
+ Pressable,
1050
+ {
1051
+ href: logo.url || "/",
1052
+ className: cn("flex items-center", logoClassName),
1053
+ children: hasResponsiveSources ? (
1054
+ // Responsive logo with desktop/mobile sources
1055
+ /* @__PURE__ */ jsxs(Fragment, { children: [
1056
+ /* @__PURE__ */ jsx(
1057
+ Img,
1058
+ {
1059
+ src: logo.desktopSrc || logo.src || "",
1060
+ className: cn(
1061
+ "hidden h-8 w-auto object-contain md:block",
1062
+ logo.className
1063
+ ),
1064
+ alt: logo.alt || "Logo",
1065
+ optixFlowConfig
1066
+ }
1067
+ ),
1068
+ /* @__PURE__ */ jsx(
1069
+ Img,
1070
+ {
1071
+ src: logo.mobileSrc || logo.src || "",
1072
+ className: cn(
1073
+ "h-8 w-auto object-contain md:hidden",
1074
+ logo.className
1075
+ ),
1076
+ alt: logo.alt || "Logo",
1077
+ optixFlowConfig
1078
+ }
1079
+ )
1080
+ ] })
1081
+ ) : logo.src ? (
1082
+ // Standard single logo image
1083
+ /* @__PURE__ */ jsx(
1084
+ Img,
1085
+ {
1086
+ src: logo.src,
1087
+ className: cn("max-h-8 w-auto object-contain", logo.className),
1088
+ alt: logo.alt || "Logo",
1089
+ optixFlowConfig
1090
+ }
1091
+ )
1092
+ ) : (
1093
+ // Text-based logo (title as string or React element)
1094
+ logo.title && (typeof logo.title === "string" ? /* @__PURE__ */ jsx("span", { className: "text-lg font-semibold tracking-tighter", children: logo.title }) : logo.title)
1095
+ )
1096
+ }
1097
+ );
1098
+ };
1039
1099
 
1040
1100
  // lib/mediaPlaceholders.ts
1041
1101
  var logoPlaceholders = {
@@ -1066,14 +1126,14 @@ function getNavbarLayoutClasses(layoutVariant = "fullScreenContainerizedLinks",
1066
1126
  ),
1067
1127
  // Navigation wrapper classes (for border and shadow)
1068
1128
  navWrapperClasses: cn(
1069
- "w-full",
1129
+ "w-full h-16 items-center",
1070
1130
  isFloatingBar ? "border border-border/50 shadow-sm rounded-full" : "border-b border-border/50 shadow-sm flex justify-center"
1071
1131
  ),
1072
1132
  // Section container configuration for full-width navbars
1073
1133
  sectionContainerClassName: "px-0 sm:px-0 lg:px-0",
1074
1134
  sectionContainerMaxWidth: "full",
1075
1135
  // Spacing adjustment for Section component
1076
- spacingOverride: isFloatingBar ? "none" : void 0
1136
+ spacingOverride: isFloatingBar ? "none" : "py-0 md:py-0"
1077
1137
  };
1078
1138
  }
1079
1139
  var AnimatedHamburger = ({ isOpen }) => {
@@ -1202,29 +1262,6 @@ var NavbarSimpleLinks = ({
1202
1262
  window.addEventListener("resize", updateIndicator);
1203
1263
  return () => window.removeEventListener("resize", updateIndicator);
1204
1264
  }, [activeItem]);
1205
- const renderLogo = useMemo(() => {
1206
- if (logoSlot) return logoSlot;
1207
- if (!logo) return null;
1208
- return /* @__PURE__ */ jsxs(
1209
- Pressable,
1210
- {
1211
- href: logo.url || "/",
1212
- className: cn("flex items-center gap-2", logoClassName),
1213
- children: [
1214
- logo.src && /* @__PURE__ */ jsx(
1215
- Img,
1216
- {
1217
- src: logo.src,
1218
- className: cn("max-h-8 w-8", logo.className),
1219
- alt: logo.alt || "Logo",
1220
- optixFlowConfig
1221
- }
1222
- ),
1223
- logo.title && (typeof logo.title === "string" ? /* @__PURE__ */ jsx("span", { className: "text-lg font-semibold tracking-tighter", children: logo.title }) : logo.title)
1224
- ]
1225
- }
1226
- );
1227
- }, [logoSlot, logo, logoClassName, optixFlowConfig]);
1228
1265
  const renderNavItems = useMemo(() => {
1229
1266
  if (navItemsSlot) return navItemsSlot;
1230
1267
  if (!navItems || navItems.length === 0) return null;
@@ -1296,7 +1333,15 @@ var NavbarSimpleLinks = ({
1296
1333
  navClassName
1297
1334
  ),
1298
1335
  children: [
1299
- renderLogo,
1336
+ /* @__PURE__ */ jsx(
1337
+ NavbarLogo,
1338
+ {
1339
+ logo,
1340
+ logoSlot,
1341
+ logoClassName,
1342
+ optixFlowConfig
1343
+ }
1344
+ ),
1300
1345
  /* @__PURE__ */ jsx(
1301
1346
  NavigationMenu,
1302
1347
  {
@@ -1176,14 +1176,14 @@ function getNavbarLayoutClasses(layoutVariant = "fullScreenContainerizedLinks",
1176
1176
  ),
1177
1177
  // Navigation wrapper classes (for border and shadow)
1178
1178
  navWrapperClasses: cn(
1179
- "w-full",
1179
+ "w-full h-16 items-center",
1180
1180
  isFloatingBar ? "border border-border/50 shadow-sm rounded-full" : "border-b border-border/50 shadow-sm flex justify-center"
1181
1181
  ),
1182
1182
  // Section container configuration for full-width navbars
1183
1183
  sectionContainerClassName: "px-0 sm:px-0 lg:px-0",
1184
1184
  sectionContainerMaxWidth: "full",
1185
1185
  // Spacing adjustment for Section component
1186
- spacingOverride: isFloatingBar ? "none" : void 0
1186
+ spacingOverride: isFloatingBar ? "none" : "py-0 md:py-0"
1187
1187
  };
1188
1188
  }
1189
1189
  var NavbarSplitCta = ({
@@ -1153,14 +1153,14 @@ function getNavbarLayoutClasses(layoutVariant = "fullScreenContainerizedLinks",
1153
1153
  ),
1154
1154
  // Navigation wrapper classes (for border and shadow)
1155
1155
  navWrapperClasses: cn(
1156
- "w-full",
1156
+ "w-full h-16 items-center",
1157
1157
  isFloatingBar ? "border border-border/50 shadow-sm rounded-full" : "border-b border-border/50 shadow-sm flex justify-center"
1158
1158
  ),
1159
1159
  // Section container configuration for full-width navbars
1160
1160
  sectionContainerClassName: "px-0 sm:px-0 lg:px-0",
1161
1161
  sectionContainerMaxWidth: "full",
1162
1162
  // Spacing adjustment for Section component
1163
- spacingOverride: isFloatingBar ? "none" : void 0
1163
+ spacingOverride: isFloatingBar ? "none" : "py-0 md:py-0"
1164
1164
  };
1165
1165
  }
1166
1166
  var NavbarSplitCta = ({
@@ -1176,14 +1176,14 @@ function getNavbarLayoutClasses(layoutVariant = "fullScreenContainerizedLinks",
1176
1176
  ),
1177
1177
  // Navigation wrapper classes (for border and shadow)
1178
1178
  navWrapperClasses: cn(
1179
- "w-full",
1179
+ "w-full h-16 items-center",
1180
1180
  isFloatingBar ? "border border-border/50 shadow-sm rounded-full" : "border-b border-border/50 shadow-sm flex justify-center"
1181
1181
  ),
1182
1182
  // Section container configuration for full-width navbars
1183
1183
  sectionContainerClassName: "px-0 sm:px-0 lg:px-0",
1184
1184
  sectionContainerMaxWidth: "full",
1185
1185
  // Spacing adjustment for Section component
1186
- spacingOverride: isFloatingBar ? "none" : void 0
1186
+ spacingOverride: isFloatingBar ? "none" : "py-0 md:py-0"
1187
1187
  };
1188
1188
  }
1189
1189
  var NavbarStickyCompact = ({