@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
@@ -985,7 +985,7 @@ function NavigationMenuList({
985
985
  {
986
986
  "data-slot": "navigation-menu-list",
987
987
  className: cn(
988
- "group flex flex-1 list-none items-center justify-center gap-6",
988
+ "group flex flex-1 list-none items-center justify-center gap-2 lg:gap-4 xl:gap-6",
989
989
  className
990
990
  ),
991
991
  ...props
@@ -1025,8 +1025,9 @@ function NavigationMenuTrigger({
1025
1025
  /* @__PURE__ */ jsx(
1026
1026
  DynamicIcon,
1027
1027
  {
1028
+ size: 18,
1028
1029
  name: "lucide/chevron-down",
1029
- className: "relative top-[1px] ml-1 size-2.5 transition duration-300 group-data-[state=open]:rotate-180",
1030
+ className: "relative top-px opacity-50 transition duration-300 group-data-[state=open]:rotate-180",
1030
1031
  "aria-hidden": "true"
1031
1032
  }
1032
1033
  )
@@ -1066,7 +1067,7 @@ function NavigationMenuViewport({
1066
1067
  {
1067
1068
  "data-slot": "navigation-menu-viewport",
1068
1069
  className: cn(
1069
- "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)]",
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-(--radix-navigation-menu-viewport-height) w-full overflow-hidden rounded-md border border-border/50 shadow-sm md:w-(--radix-navigation-menu-viewport-width)",
1070
1071
  className
1071
1072
  ),
1072
1073
  ...props
@@ -1084,7 +1085,7 @@ function NavigationMenuLink({
1084
1085
  {
1085
1086
  "data-slot": "navigation-menu-link",
1086
1087
  className: cn(
1087
- "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",
1088
+ "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",
1088
1089
  className
1089
1090
  ),
1090
1091
  ...props
@@ -1095,6 +1096,41 @@ function NavigationMenuLink({
1095
1096
  // lib/mediaPlaceholders.ts
1096
1097
  var logoPlaceholders = {
1097
1098
  logoMark: "https://cdn.ing/assets/i/r/285975/eud79qeya11q5w6ueyhklueardyx/monochrome-rounded-square-app-icon-circular-emblem.png"};
1099
+
1100
+ // components/blocks/navbars/types.ts
1101
+ function getLinkUrl(item) {
1102
+ return item.href || item.url || "#";
1103
+ }
1104
+
1105
+ // components/blocks/navbars/layout-variant-utils.ts
1106
+ function getNavbarLayoutClasses(layoutVariant = "fullScreenContainerizedLinks", customClasses) {
1107
+ const isFloatingBar = layoutVariant === "floatingBar";
1108
+ const isFullWidthLinks = layoutVariant === "fullScreenFullWidthLinks";
1109
+ return {
1110
+ // Section wrapper classes
1111
+ sectionClasses: cn(
1112
+ "inset-x-0 z-20",
1113
+ isFloatingBar ? "sticky top-4" : "top-0",
1114
+ customClasses?.className
1115
+ ),
1116
+ // Outer container wrapper (only for floating bar)
1117
+ containerWrapperClasses: cn(
1118
+ isFloatingBar && "mx-auto w-full px-2 sm:px-4 lg:px-8 max-w-7xl relative z-10"
1119
+ ),
1120
+ // Inner container classes
1121
+ innerContainerClasses: cn(
1122
+ !isFloatingBar && !isFullWidthLinks && "container",
1123
+ isFullWidthLinks && "mx-auto w-full px-2 sm:px-4 lg:px-8",
1124
+ customClasses?.containerClassName
1125
+ ),
1126
+ // Navigation wrapper classes (for border and shadow)
1127
+ navWrapperClasses: cn(
1128
+ isFloatingBar ? "border border-border/50 shadow-sm rounded-full" : "border-b border-border/50 shadow-sm"
1129
+ ),
1130
+ // Spacing adjustment for Section component
1131
+ spacingOverride: isFloatingBar ? "none" : void 0
1132
+ };
1133
+ }
1098
1134
  var NavbarPlatformResources = ({
1099
1135
  className,
1100
1136
  containerClassName,
@@ -1110,6 +1146,7 @@ var NavbarPlatformResources = ({
1110
1146
  logoSlot,
1111
1147
  menuLinks,
1112
1148
  actions,
1149
+ layoutVariant = "fullScreenContainerizedLinks",
1113
1150
  background = "white",
1114
1151
  spacing = "none",
1115
1152
  pattern,
@@ -1147,7 +1184,7 @@ var NavbarPlatformResources = ({
1147
1184
  return /* @__PURE__ */ jsx(NavigationMenuContent, { className: "min-w-[640px] p-4", children: /* @__PURE__ */ jsx("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3", children: link.links?.map((item, itemIndex) => /* @__PURE__ */ jsxs(
1148
1185
  NavigationMenuLink,
1149
1186
  {
1150
- href: item.url,
1187
+ href: getLinkUrl(item),
1151
1188
  className: "flex flex-row items-start gap-4 rounded-lg border border-input bg-background p-4 hover:bg-accent hover:text-accent-foreground",
1152
1189
  children: [
1153
1190
  item.image && /* @__PURE__ */ jsx("div", { className: "h-12 w-12 overflow-hidden rounded-md border border-border", children: /* @__PURE__ */ jsx(
@@ -1176,7 +1213,7 @@ var NavbarPlatformResources = ({
1176
1213
  /* @__PURE__ */ jsx(
1177
1214
  NavigationMenuLink,
1178
1215
  {
1179
- href: featuredItem.url,
1216
+ href: getLinkUrl(featuredItem),
1180
1217
  className: "group w-1/3 p-0 hover:bg-transparent",
1181
1218
  children: /* @__PURE__ */ jsxs("div", { className: "overflow-clip rounded-lg border border-input bg-background", children: [
1182
1219
  /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(
@@ -1200,7 +1237,7 @@ var NavbarPlatformResources = ({
1200
1237
  /* @__PURE__ */ jsx("div", { className: "grid grid-cols-1 gap-6 lg:grid-cols-2 lg:gap-8", children: gridItems.map((item, itemIndex) => /* @__PURE__ */ jsxs(
1201
1238
  NavigationMenuLink,
1202
1239
  {
1203
- href: item.url,
1240
+ href: getLinkUrl(item),
1204
1241
  className: "group block p-4",
1205
1242
  children: [
1206
1243
  (item.icon || item.iconName) && /* @__PURE__ */ jsx("div", { className: "mb-5 group-hover:opacity-60", children: item.icon ? item.icon : item.iconName ? /* @__PURE__ */ jsx(DynamicIcon, { name: item.iconName, size: 20 }) : null }),
@@ -1221,7 +1258,7 @@ var NavbarPlatformResources = ({
1221
1258
  /* @__PURE__ */ jsx("div", { className: "grid grid-cols-2 gap-4", children: link.dropdownGroups[0].links.map((item, itemIndex) => /* @__PURE__ */ jsxs(
1222
1259
  NavigationMenuLink,
1223
1260
  {
1224
- href: item.url,
1261
+ href: getLinkUrl(item),
1225
1262
  className: "group flex flex-row items-center gap-5",
1226
1263
  children: [
1227
1264
  (item.icon || item.iconName) && /* @__PURE__ */ jsx("div", { className: "group-hover:opacity-60", children: item.icon ? item.icon : item.iconName ? /* @__PURE__ */ jsx(DynamicIcon, { name: item.iconName, size: 16 }) : null }),
@@ -1234,7 +1271,7 @@ var NavbarPlatformResources = ({
1234
1271
  ctaItem && /* @__PURE__ */ jsx(
1235
1272
  NavigationMenuLink,
1236
1273
  {
1237
- href: ctaItem.url,
1274
+ href: getLinkUrl(ctaItem),
1238
1275
  className: "group flex-1 p-0 hover:bg-transparent",
1239
1276
  children: /* @__PURE__ */ jsxs("div", { className: "flex h-full rounded-lg border border-input bg-background p-0 hover:bg-transparent", children: [
1240
1277
  ctaItem.image && /* @__PURE__ */ jsx("div", { className: "w-2/5 max-w-[310px] shrink-0 overflow-clip rounded-tl-lg rounded-bl-lg", children: /* @__PURE__ */ jsx(
@@ -1268,7 +1305,7 @@ var NavbarPlatformResources = ({
1268
1305
  /* @__PURE__ */ jsx("div", { className: "-ml-2.5 space-y-2.5", children: listItems.map((item, itemIndex) => /* @__PURE__ */ jsxs(
1269
1306
  NavigationMenuLink,
1270
1307
  {
1271
- href: item.url,
1308
+ href: getLinkUrl(item),
1272
1309
  className: "group flex flex-row items-center gap-2.5 rounded-md p-2.5 focus:text-accent-foreground",
1273
1310
  children: [
1274
1311
  (item.icon || item.iconName) && (item.icon ? item.icon : item.iconName ? /* @__PURE__ */ jsx(DynamicIcon, { name: item.iconName, size: 16 }) : null),
@@ -1281,7 +1318,7 @@ var NavbarPlatformResources = ({
1281
1318
  /* @__PURE__ */ jsx("div", { className: "max-w-[716px] flex-1 space-y-6", children: showcaseItems.map((showcase, showcaseIndex) => /* @__PURE__ */ jsxs(
1282
1319
  NavigationMenuLink,
1283
1320
  {
1284
- href: showcase.url,
1321
+ href: getLinkUrl(showcase),
1285
1322
  className: "flex flex-row items-center overflow-clip rounded-lg border border-input bg-background p-0 hover:bg-transparent",
1286
1323
  children: [
1287
1324
  /* @__PURE__ */ jsxs("div", { className: "flex-1 p-5 xl:p-8", children: [
@@ -1315,7 +1352,7 @@ var NavbarPlatformResources = ({
1315
1352
  /* @__PURE__ */ jsx("div", { className: "grid flex-1 grid-cols-1 gap-6 md:grid-cols-2", children: group.links.map((item, itemIndex) => /* @__PURE__ */ jsx(
1316
1353
  NavigationMenuLink,
1317
1354
  {
1318
- href: item.url,
1355
+ href: getLinkUrl(item),
1319
1356
  className: "flex h-full flex-col overflow-clip rounded-lg border border-input bg-background p-5 hover:bg-accent hover:text-accent-foreground xl:p-8",
1320
1357
  children: /* @__PURE__ */ jsxs("div", { className: "mt-auto", children: [
1321
1358
  /* @__PURE__ */ jsx("div", { className: "mb-2 text-base", children: item.label }),
@@ -1332,7 +1369,7 @@ var NavbarPlatformResources = ({
1332
1369
  /* @__PURE__ */ jsxs(
1333
1370
  NavigationMenuLink,
1334
1371
  {
1335
- href: ctaItem.url,
1372
+ href: getLinkUrl(ctaItem),
1336
1373
  className: "mb-6 flex flex-row overflow-clip rounded-lg border border-input bg-background p-0 hover:bg-transparent",
1337
1374
  children: [
1338
1375
  /* @__PURE__ */ jsxs("div", { className: "flex-1 p-5 xl:p-8", children: [
@@ -1361,7 +1398,7 @@ var NavbarPlatformResources = ({
1361
1398
  return /* @__PURE__ */ jsx(NavigationMenuContent, { className: "min-w-[640px] p-4", children: /* @__PURE__ */ jsx("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3", children: link.links?.map((item, itemIndex) => /* @__PURE__ */ jsxs(
1362
1399
  NavigationMenuLink,
1363
1400
  {
1364
- href: item.url,
1401
+ href: getLinkUrl(item),
1365
1402
  className: "flex flex-row items-start gap-4 rounded-lg border border-input bg-background p-4 hover:bg-accent hover:text-accent-foreground",
1366
1403
  children: [
1367
1404
  item.image && /* @__PURE__ */ jsx("div", { className: "h-12 w-12 overflow-hidden rounded-md border border-border", children: /* @__PURE__ */ jsx(
@@ -1401,173 +1438,171 @@ var NavbarPlatformResources = ({
1401
1438
  ] }) }, index);
1402
1439
  });
1403
1440
  };
1441
+ const {
1442
+ sectionClasses,
1443
+ containerWrapperClasses,
1444
+ innerContainerClasses,
1445
+ navWrapperClasses,
1446
+ spacingOverride
1447
+ } = getNavbarLayoutClasses(layoutVariant, { className, containerClassName });
1404
1448
  return /* @__PURE__ */ jsx(
1405
1449
  Section,
1406
1450
  {
1407
1451
  background,
1408
- spacing,
1409
- className: cn("inset-x-0 top-0 z-20", className),
1452
+ spacing: spacingOverride ?? spacing,
1453
+ className: sectionClasses,
1410
1454
  pattern,
1411
1455
  patternOpacity,
1412
- children: /* @__PURE__ */ jsx(
1413
- "div",
1414
- {
1415
- className: cn(
1416
- "container px-4 sm:px-6 md:px-8 lg:px-40 xl:px-52",
1417
- containerClassName
1418
- ),
1419
- children: /* @__PURE__ */ jsxs(NavigationMenu, { className: cn("min-w-full", navigationMenuClassName), children: [
1420
- /* @__PURE__ */ jsxs("div", { className: "flex w-full items-center justify-between gap-12 py-4", children: [
1421
- renderLogo(),
1422
- /* @__PURE__ */ jsx(
1423
- NavigationMenuList,
1424
- {
1425
- className: cn("hidden lg:flex", navigationMenuListClassName),
1426
- children: menuLinks?.map((link, index) => {
1427
- if (hasDropdownItems(link)) {
1428
- return /* @__PURE__ */ jsxs(
1429
- NavigationMenuItem,
1430
- {
1431
- children: [
1432
- /* @__PURE__ */ jsx(NavigationMenuTrigger, { className: "h-auto bg-transparent px-0 py-0 font-normal text-foreground/60 hover:bg-transparent hover:text-foreground focus:bg-transparent focus:text-foreground data-[state=open]:bg-transparent data-[state=open]:text-foreground", children: link.label }),
1433
- renderDropdownContent(link)
1434
- ]
1435
- },
1436
- `${typeof link.label === "string" ? link.label : "menu"}-${index}`
1437
- );
1438
- }
1439
- if (!link.href) {
1440
- return null;
1441
- }
1442
- return /* @__PURE__ */ jsx(
1443
- NavigationMenuItem,
1456
+ children: /* @__PURE__ */ jsx("div", { className: containerWrapperClasses, children: /* @__PURE__ */ jsx("div", { className: cn(innerContainerClasses, navWrapperClasses), children: /* @__PURE__ */ jsxs(NavigationMenu, { className: cn("min-w-full", navigationMenuClassName), children: [
1457
+ /* @__PURE__ */ jsxs("div", { className: "flex w-full items-center justify-between gap-12 py-4", children: [
1458
+ renderLogo(),
1459
+ /* @__PURE__ */ jsx(
1460
+ NavigationMenuList,
1461
+ {
1462
+ className: cn("hidden lg:flex", navigationMenuListClassName),
1463
+ children: menuLinks?.map((link, index) => {
1464
+ if (hasDropdownItems(link)) {
1465
+ return /* @__PURE__ */ jsxs(
1466
+ NavigationMenuItem,
1467
+ {
1468
+ children: [
1469
+ /* @__PURE__ */ jsx(NavigationMenuTrigger, { className: "h-auto bg-transparent px-0 py-0 font-normal text-foreground/60 hover:bg-transparent hover:text-foreground focus:bg-transparent focus:text-foreground data-[state=open]:bg-transparent data-[state=open]:text-foreground", children: link.label }),
1470
+ renderDropdownContent(link)
1471
+ ]
1472
+ },
1473
+ `${typeof link.label === "string" ? link.label : "menu"}-${index}`
1474
+ );
1475
+ }
1476
+ if (!link.href) {
1477
+ return null;
1478
+ }
1479
+ return /* @__PURE__ */ jsx(
1480
+ NavigationMenuItem,
1481
+ {
1482
+ children: /* @__PURE__ */ jsx(
1483
+ NavigationMenuLink,
1444
1484
  {
1445
- children: /* @__PURE__ */ jsx(
1446
- NavigationMenuLink,
1485
+ href: link.href,
1486
+ className: "group inline-flex h-10 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium transition-colors hover:bg-muted hover:text-accent-foreground",
1487
+ children: link.label
1488
+ }
1489
+ )
1490
+ },
1491
+ `${typeof link.label === "string" ? link.label : "menu"}-${index}`
1492
+ );
1493
+ })
1494
+ }
1495
+ ),
1496
+ /* @__PURE__ */ jsx(
1497
+ "div",
1498
+ {
1499
+ className: cn(
1500
+ "hidden items-center gap-4 lg:flex",
1501
+ actionsClassName
1502
+ ),
1503
+ children: renderActions()
1504
+ }
1505
+ ),
1506
+ /* @__PURE__ */ jsx("div", { className: "flex items-center gap-4 lg:hidden", children: /* @__PURE__ */ jsxs(
1507
+ Pressable,
1508
+ {
1509
+ variant: "outline",
1510
+ size: "icon",
1511
+ asButton: true,
1512
+ "aria-label": "Main Menu",
1513
+ onClick: () => setOpen(!open),
1514
+ children: [
1515
+ !open && /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/menu", size: 16 }),
1516
+ open && /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/x", size: 16 })
1517
+ ]
1518
+ }
1519
+ ) })
1520
+ ] }),
1521
+ open && /* @__PURE__ */ jsxs(
1522
+ "div",
1523
+ {
1524
+ className: cn(
1525
+ "absolute inset-0 top-[72px] flex h-[calc(100vh-72px)] w-full flex-col overflow-scroll border-t border-border bg-background lg:hidden",
1526
+ mobileMenuClassName
1527
+ ),
1528
+ children: [
1529
+ /* @__PURE__ */ jsx(Accordion, { type: "single", collapsible: true, className: "w-full", children: menuLinks?.map((link, index) => {
1530
+ if (hasDropdownItems(link)) {
1531
+ return /* @__PURE__ */ jsxs(
1532
+ AccordionItem,
1533
+ {
1534
+ value: `menu-${index}`,
1535
+ className: "border-b-2 border-dashed",
1536
+ children: [
1537
+ /* @__PURE__ */ jsx(AccordionTrigger, { className: "px-2 py-4 text-left hover:no-underline", children: link.label }),
1538
+ /* @__PURE__ */ jsx(AccordionContent, { className: "px-2 pb-4", children: /* @__PURE__ */ jsx("div", { className: "space-y-3", children: link.links?.map((item, itemIndex) => /* @__PURE__ */ jsxs(
1539
+ Pressable,
1447
1540
  {
1448
- href: link.href,
1449
- className: "group inline-flex h-10 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium transition-colors hover:bg-muted hover:text-accent-foreground",
1450
- children: link.label
1451
- }
1452
- )
1453
- },
1454
- `${typeof link.label === "string" ? link.label : "menu"}-${index}`
1455
- );
1456
- })
1541
+ href: getLinkUrl(item),
1542
+ className: "group flex items-start gap-4 rounded-lg p-2 hover:bg-muted",
1543
+ children: [
1544
+ item.image && /* @__PURE__ */ jsx("div", { className: "h-10 w-10 overflow-hidden rounded-md border border-border", children: /* @__PURE__ */ jsx(
1545
+ Img,
1546
+ {
1547
+ src: item.image,
1548
+ alt: typeof item.label === "string" ? item.label : "Menu item",
1549
+ className: "h-full w-full object-cover object-center",
1550
+ optixFlowConfig
1551
+ }
1552
+ ) }),
1553
+ !item.image && (item.icon || item.iconName) && /* @__PURE__ */ jsx("div", { className: "flex h-10 w-10 items-center justify-center rounded-md border border-border bg-muted/40 text-muted-foreground", children: item.icon ? item.icon : item.iconName ? /* @__PURE__ */ jsx(
1554
+ DynamicIcon,
1555
+ {
1556
+ name: item.iconName,
1557
+ size: 16
1558
+ }
1559
+ ) : null }),
1560
+ /* @__PURE__ */ jsxs("div", { className: "flex-1", children: [
1561
+ /* @__PURE__ */ jsx("div", { className: "text-sm font-medium text-foreground", children: item.label }),
1562
+ item.description && /* @__PURE__ */ jsx("div", { className: "text-xs text-muted-foreground", children: item.description })
1563
+ ] })
1564
+ ]
1565
+ },
1566
+ `${typeof item.label === "string" ? item.label : "item"}-${itemIndex}`
1567
+ )) }) })
1568
+ ]
1569
+ },
1570
+ `${typeof link.label === "string" ? link.label : "menu"}-${index}`
1571
+ );
1457
1572
  }
1458
- ),
1573
+ if (!link.href) {
1574
+ return null;
1575
+ }
1576
+ return /* @__PURE__ */ jsx(
1577
+ "div",
1578
+ {
1579
+ className: "border-b-2 border-dashed",
1580
+ children: /* @__PURE__ */ jsx(
1581
+ Pressable,
1582
+ {
1583
+ href: link.href,
1584
+ className: "flex w-full items-center px-2 py-4 text-left text-sm font-medium",
1585
+ children: link.label
1586
+ }
1587
+ )
1588
+ },
1589
+ `${typeof link.label === "string" ? link.label : "menu"}-${index}`
1590
+ );
1591
+ }) }),
1459
1592
  /* @__PURE__ */ jsx(
1460
1593
  "div",
1461
1594
  {
1462
1595
  className: cn(
1463
- "hidden items-center gap-4 lg:flex",
1596
+ "mx-8 mt-auto flex flex-col gap-4 py-12",
1464
1597
  actionsClassName
1465
1598
  ),
1466
1599
  children: renderActions()
1467
1600
  }
1468
- ),
1469
- /* @__PURE__ */ jsx("div", { className: "flex items-center gap-4 lg:hidden", children: /* @__PURE__ */ jsxs(
1470
- Pressable,
1471
- {
1472
- variant: "outline",
1473
- size: "icon",
1474
- asButton: true,
1475
- "aria-label": "Main Menu",
1476
- onClick: () => setOpen(!open),
1477
- children: [
1478
- !open && /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/menu", size: 16 }),
1479
- open && /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/x", size: 16 })
1480
- ]
1481
- }
1482
- ) })
1483
- ] }),
1484
- open && /* @__PURE__ */ jsxs(
1485
- "div",
1486
- {
1487
- className: cn(
1488
- "absolute inset-0 top-[72px] flex h-[calc(100vh-72px)] w-full flex-col overflow-scroll border-t border-border bg-background lg:hidden",
1489
- mobileMenuClassName
1490
- ),
1491
- children: [
1492
- /* @__PURE__ */ jsx(Accordion, { type: "single", collapsible: true, className: "w-full", children: menuLinks?.map((link, index) => {
1493
- if (hasDropdownItems(link)) {
1494
- return /* @__PURE__ */ jsxs(
1495
- AccordionItem,
1496
- {
1497
- value: `menu-${index}`,
1498
- className: "border-b-2 border-dashed",
1499
- children: [
1500
- /* @__PURE__ */ jsx(AccordionTrigger, { className: "px-2 py-4 text-left hover:no-underline", children: link.label }),
1501
- /* @__PURE__ */ jsx(AccordionContent, { className: "px-2 pb-4", children: /* @__PURE__ */ jsx("div", { className: "space-y-3", children: link.links?.map((item, itemIndex) => /* @__PURE__ */ jsxs(
1502
- Pressable,
1503
- {
1504
- href: item.url,
1505
- className: "group flex items-start gap-4 rounded-lg p-2 hover:bg-muted",
1506
- children: [
1507
- item.image && /* @__PURE__ */ jsx("div", { className: "h-10 w-10 overflow-hidden rounded-md border border-border", children: /* @__PURE__ */ jsx(
1508
- Img,
1509
- {
1510
- src: item.image,
1511
- alt: typeof item.label === "string" ? item.label : "Menu item",
1512
- className: "h-full w-full object-cover object-center",
1513
- optixFlowConfig
1514
- }
1515
- ) }),
1516
- !item.image && (item.icon || item.iconName) && /* @__PURE__ */ jsx("div", { className: "flex h-10 w-10 items-center justify-center rounded-md border border-border bg-muted/40 text-muted-foreground", children: item.icon ? item.icon : item.iconName ? /* @__PURE__ */ jsx(
1517
- DynamicIcon,
1518
- {
1519
- name: item.iconName,
1520
- size: 16
1521
- }
1522
- ) : null }),
1523
- /* @__PURE__ */ jsxs("div", { className: "flex-1", children: [
1524
- /* @__PURE__ */ jsx("div", { className: "text-sm font-medium text-foreground", children: item.label }),
1525
- item.description && /* @__PURE__ */ jsx("div", { className: "text-xs text-muted-foreground", children: item.description })
1526
- ] })
1527
- ]
1528
- },
1529
- `${typeof item.label === "string" ? item.label : "item"}-${itemIndex}`
1530
- )) }) })
1531
- ]
1532
- },
1533
- `${typeof link.label === "string" ? link.label : "menu"}-${index}`
1534
- );
1535
- }
1536
- if (!link.href) {
1537
- return null;
1538
- }
1539
- return /* @__PURE__ */ jsx(
1540
- "div",
1541
- {
1542
- className: "border-b-2 border-dashed",
1543
- children: /* @__PURE__ */ jsx(
1544
- Pressable,
1545
- {
1546
- href: link.href,
1547
- className: "flex w-full items-center px-2 py-4 text-left text-sm font-medium",
1548
- children: link.label
1549
- }
1550
- )
1551
- },
1552
- `${typeof link.label === "string" ? link.label : "menu"}-${index}`
1553
- );
1554
- }) }),
1555
- /* @__PURE__ */ jsx(
1556
- "div",
1557
- {
1558
- className: cn(
1559
- "mx-8 mt-auto flex flex-col gap-4 py-12",
1560
- actionsClassName
1561
- ),
1562
- children: renderActions()
1563
- }
1564
- )
1565
- ]
1566
- }
1567
- )
1568
- ] })
1569
- }
1570
- )
1601
+ )
1602
+ ]
1603
+ }
1604
+ )
1605
+ ] }) }) })
1571
1606
  }
1572
1607
  );
1573
1608
  };
@@ -954,7 +954,7 @@ function NavigationMenuList({
954
954
  {
955
955
  "data-slot": "navigation-menu-list",
956
956
  className: cn(
957
- "group flex flex-1 list-none items-center justify-center gap-6",
957
+ "group flex flex-1 list-none items-center justify-center gap-2 lg:gap-4 xl:gap-6",
958
958
  className
959
959
  ),
960
960
  ...props
@@ -992,7 +992,7 @@ function NavigationMenuViewport({
992
992
  {
993
993
  "data-slot": "navigation-menu-viewport",
994
994
  className: cn(
995
- "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)]",
995
+ "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)",
996
996
  className
997
997
  ),
998
998
  ...props
@@ -1010,7 +1010,7 @@ function NavigationMenuLink({
1010
1010
  {
1011
1011
  "data-slot": "navigation-menu-link",
1012
1012
  className: cn(
1013
- "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",
1013
+ "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",
1014
1014
  className
1015
1015
  ),
1016
1016
  ...props
@@ -1095,6 +1095,36 @@ function SheetTitle({
1095
1095
  // lib/mediaPlaceholders.ts
1096
1096
  var logoPlaceholders = {
1097
1097
  logoMark: "https://cdn.ing/assets/i/r/285975/eud79qeya11q5w6ueyhklueardyx/monochrome-rounded-square-app-icon-circular-emblem.png"};
1098
+
1099
+ // components/blocks/navbars/layout-variant-utils.ts
1100
+ function getNavbarLayoutClasses(layoutVariant = "fullScreenContainerizedLinks", customClasses) {
1101
+ const isFloatingBar = layoutVariant === "floatingBar";
1102
+ const isFullWidthLinks = layoutVariant === "fullScreenFullWidthLinks";
1103
+ return {
1104
+ // Section wrapper classes
1105
+ sectionClasses: cn(
1106
+ "inset-x-0 z-20",
1107
+ isFloatingBar ? "sticky top-4" : "top-0",
1108
+ customClasses?.className
1109
+ ),
1110
+ // Outer container wrapper (only for floating bar)
1111
+ containerWrapperClasses: cn(
1112
+ isFloatingBar && "mx-auto w-full px-2 sm:px-4 lg:px-8 max-w-7xl relative z-10"
1113
+ ),
1114
+ // Inner container classes
1115
+ innerContainerClasses: cn(
1116
+ !isFloatingBar && !isFullWidthLinks && "container",
1117
+ isFullWidthLinks && "mx-auto w-full px-2 sm:px-4 lg:px-8",
1118
+ customClasses?.containerClassName
1119
+ ),
1120
+ // Navigation wrapper classes (for border and shadow)
1121
+ navWrapperClasses: cn(
1122
+ isFloatingBar ? "border border-border/50 shadow-sm rounded-full" : "border-b border-border/50 shadow-sm"
1123
+ ),
1124
+ // Spacing adjustment for Section component
1125
+ spacingOverride: isFloatingBar ? "none" : void 0
1126
+ };
1127
+ }
1098
1128
  var NavbarSearchFocused = ({
1099
1129
  className,
1100
1130
  containerClassName,
@@ -1116,6 +1146,7 @@ var NavbarSearchFocused = ({
1116
1146
  authActionsSlot,
1117
1147
  mobileMenuActions,
1118
1148
  mobileMenuActionsSlot,
1149
+ layoutVariant = "fullScreenContainerizedLinks",
1119
1150
  background = "white",
1120
1151
  spacing = "none",
1121
1152
  pattern,
@@ -1211,15 +1242,22 @@ var NavbarSearchFocused = ({
1211
1242
  );
1212
1243
  }) });
1213
1244
  };
1245
+ const {
1246
+ sectionClasses,
1247
+ containerWrapperClasses,
1248
+ innerContainerClasses,
1249
+ navWrapperClasses,
1250
+ spacingOverride
1251
+ } = getNavbarLayoutClasses(layoutVariant, { className, containerClassName });
1214
1252
  return /* @__PURE__ */ jsxRuntime.jsx(
1215
1253
  Section,
1216
1254
  {
1217
1255
  background,
1218
- spacing,
1219
- className: cn("border-b", className),
1256
+ spacing: spacingOverride ?? spacing,
1257
+ className: sectionClasses,
1220
1258
  pattern,
1221
1259
  patternOpacity,
1222
- children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("container", containerClassName), children: /* @__PURE__ */ jsxRuntime.jsxs(
1260
+ children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: containerWrapperClasses, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn(innerContainerClasses, navWrapperClasses), children: /* @__PURE__ */ jsxRuntime.jsxs(
1223
1261
  "nav",
1224
1262
  {
1225
1263
  className: cn("flex items-center gap-4 py-3 lg:gap-8", navClassName),
@@ -1287,7 +1325,7 @@ var NavbarSearchFocused = ({
1287
1325
  ] })
1288
1326
  ]
1289
1327
  }
1290
- ) })
1328
+ ) }) })
1291
1329
  }
1292
1330
  );
1293
1331
  };
@@ -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';
@@ -13,16 +14,6 @@ interface NavItem {
13
14
  icon?: React.ReactNode;
14
15
  iconName?: string;
15
16
  }
16
- /**
17
- * Logo configuration interface
18
- */
19
- interface LogoConfig {
20
- url?: string;
21
- src?: string;
22
- alt?: string;
23
- title?: React.ReactNode;
24
- className?: string;
25
- }
26
17
  /**
27
18
  * Props for the NavbarSearchFocused component
28
19
  */
@@ -115,6 +106,10 @@ interface NavbarSearchFocusedProps {
115
106
  * OptixFlow image optimization configuration
116
107
  */
117
108
  optixFlowConfig?: OptixFlowConfig;
109
+ /**
110
+ * Layout variant for the navbar
111
+ */
112
+ layoutVariant?: NavbarLayoutVariant;
118
113
  }
119
114
  /**
120
115
  * NavbarSearchFocused - A navigation bar with a prominent search input.
@@ -125,6 +120,6 @@ interface NavbarSearchFocusedProps {
125
120
  * below the logo and hamburger menu, with navigation in a slide-out sheet. Ideal for
126
121
  * e-commerce sites, marketplaces, documentation sites, and content-heavy platforms.
127
122
  */
128
- declare const NavbarSearchFocused: ({ className, containerClassName, navClassName, navigationMenuClassName, actionsClassName, logo, logoSlot, logoClassName, navItems, navigationSlot, searchPlaceholder, onSearch, searchSlot, authActions, authActionsSlot, mobileMenuActions, mobileMenuActionsSlot, background, spacing, pattern, patternOpacity, optixFlowConfig, }: NavbarSearchFocusedProps) => react_jsx_runtime.JSX.Element;
123
+ declare const NavbarSearchFocused: ({ className, containerClassName, navClassName, navigationMenuClassName, actionsClassName, logo, logoSlot, logoClassName, navItems, navigationSlot, searchPlaceholder, onSearch, searchSlot, authActions, authActionsSlot, mobileMenuActions, mobileMenuActionsSlot, layoutVariant, background, spacing, pattern, patternOpacity, optixFlowConfig, }: NavbarSearchFocusedProps) => react_jsx_runtime.JSX.Element;
129
124
 
130
125
  export { NavbarSearchFocused, type NavbarSearchFocusedProps };