@opensite/ui 0.4.5 → 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 +87 -53
  2. package/dist/navbar-animated-preview.d.cts +6 -2
  3. package/dist/navbar-animated-preview.d.ts +6 -2
  4. package/dist/navbar-animated-preview.js +87 -53
  5. package/dist/navbar-centered-menu.cjs +89 -59
  6. package/dist/navbar-centered-menu.d.cts +6 -2
  7. package/dist/navbar-centered-menu.d.ts +6 -2
  8. package/dist/navbar-centered-menu.js +89 -59
  9. package/dist/navbar-dark-icons.cjs +50 -10
  10. package/dist/navbar-dark-icons.d.cts +6 -2
  11. package/dist/navbar-dark-icons.d.ts +6 -2
  12. package/dist/navbar-dark-icons.js +50 -10
  13. package/dist/navbar-dropdown-menu.cjs +89 -59
  14. package/dist/navbar-dropdown-menu.d.cts +6 -2
  15. package/dist/navbar-dropdown-menu.d.ts +6 -2
  16. package/dist/navbar-dropdown-menu.js +89 -59
  17. package/dist/navbar-education-platform.cjs +48 -10
  18. package/dist/navbar-education-platform.d.cts +6 -2
  19. package/dist/navbar-education-platform.d.ts +6 -2
  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 +6 -2
  23. package/dist/navbar-enterprise-mega.d.ts +6 -2
  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 -2
  27. package/dist/navbar-feature-grid.d.ts +6 -2
  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 -2
  31. package/dist/navbar-floating-pill.d.ts +6 -2
  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 -2
  35. package/dist/navbar-fullscreen-menu.d.ts +6 -2
  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 +6 -2
  39. package/dist/navbar-icon-links.d.ts +6 -2
  40. package/dist/navbar-icon-links.js +46 -8
  41. package/dist/navbar-image-preview.cjs +47 -8
  42. package/dist/navbar-image-preview.d.cts +6 -2
  43. package/dist/navbar-image-preview.d.ts +6 -2
  44. package/dist/navbar-image-preview.js +47 -8
  45. package/dist/navbar-mega-menu.cjs +56 -12
  46. package/dist/navbar-mega-menu.d.cts +7 -3
  47. package/dist/navbar-mega-menu.d.ts +7 -3
  48. package/dist/navbar-mega-menu.js +56 -12
  49. package/dist/navbar-multi-column-groups.cjs +47 -11
  50. package/dist/navbar-multi-column-groups.d.cts +6 -2
  51. package/dist/navbar-multi-column-groups.d.ts +6 -2
  52. package/dist/navbar-multi-column-groups.js +47 -11
  53. package/dist/navbar-platform-resources.cjs +184 -154
  54. package/dist/navbar-platform-resources.d.cts +6 -2
  55. package/dist/navbar-platform-resources.d.ts +6 -2
  56. package/dist/navbar-platform-resources.js +184 -154
  57. package/dist/navbar-search-focused.cjs +45 -7
  58. package/dist/navbar-search-focused.d.cts +6 -2
  59. package/dist/navbar-search-focused.d.ts +6 -2
  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 -2
  63. package/dist/navbar-sidebar-mobile.d.ts +6 -2
  64. package/dist/navbar-sidebar-mobile.js +47 -8
  65. package/dist/navbar-simple-links.cjs +88 -59
  66. package/dist/navbar-simple-links.d.cts +6 -2
  67. package/dist/navbar-simple-links.d.ts +6 -2
  68. package/dist/navbar-simple-links.js +88 -59
  69. package/dist/navbar-split-cta.cjs +47 -8
  70. package/dist/navbar-split-cta.d.cts +6 -2
  71. package/dist/navbar-split-cta.d.ts +6 -2
  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 -2
  75. package/dist/navbar-sticky-compact.d.ts +6 -2
  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 -2
  79. package/dist/navbar-tabbed-sections.d.ts +6 -2
  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 -2
  83. package/dist/navbar-transparent-overlay.d.ts +6 -2
  84. package/dist/navbar-transparent-overlay.js +47 -9
  85. package/dist/registry.cjs +625 -463
  86. package/dist/registry.js +625 -463
  87. package/dist/{types-D2b35ylu.d.cts → types-COVDidbn.d.cts} +22 -1
  88. package/dist/{types-D2b35ylu.d.ts → types-COVDidbn.d.ts} +22 -1
  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 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
@@ -1100,6 +1101,36 @@ var logoPlaceholders = {
1100
1101
  function getLinkUrl(item) {
1101
1102
  return item.href || item.url || "#";
1102
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
+ }
1103
1134
  var NavbarPlatformResources = ({
1104
1135
  className,
1105
1136
  containerClassName,
@@ -1115,6 +1146,7 @@ var NavbarPlatformResources = ({
1115
1146
  logoSlot,
1116
1147
  menuLinks,
1117
1148
  actions,
1149
+ layoutVariant = "fullScreenContainerizedLinks",
1118
1150
  background = "white",
1119
1151
  spacing = "none",
1120
1152
  pattern,
@@ -1406,173 +1438,171 @@ var NavbarPlatformResources = ({
1406
1438
  ] }) }, index);
1407
1439
  });
1408
1440
  };
1441
+ const {
1442
+ sectionClasses,
1443
+ containerWrapperClasses,
1444
+ innerContainerClasses,
1445
+ navWrapperClasses,
1446
+ spacingOverride
1447
+ } = getNavbarLayoutClasses(layoutVariant, { className, containerClassName });
1409
1448
  return /* @__PURE__ */ jsx(
1410
1449
  Section,
1411
1450
  {
1412
1451
  background,
1413
- spacing,
1414
- className: cn("inset-x-0 top-0 z-20", className),
1452
+ spacing: spacingOverride ?? spacing,
1453
+ className: sectionClasses,
1415
1454
  pattern,
1416
1455
  patternOpacity,
1417
- children: /* @__PURE__ */ jsx(
1418
- "div",
1419
- {
1420
- className: cn(
1421
- "container px-4 sm:px-6 md:px-8 lg:px-40 xl:px-52",
1422
- containerClassName
1423
- ),
1424
- children: /* @__PURE__ */ jsxs(NavigationMenu, { className: cn("min-w-full", navigationMenuClassName), children: [
1425
- /* @__PURE__ */ jsxs("div", { className: "flex w-full items-center justify-between gap-12 py-4", children: [
1426
- renderLogo(),
1427
- /* @__PURE__ */ jsx(
1428
- NavigationMenuList,
1429
- {
1430
- className: cn("hidden lg:flex", navigationMenuListClassName),
1431
- children: menuLinks?.map((link, index) => {
1432
- if (hasDropdownItems(link)) {
1433
- return /* @__PURE__ */ jsxs(
1434
- NavigationMenuItem,
1435
- {
1436
- children: [
1437
- /* @__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 }),
1438
- renderDropdownContent(link)
1439
- ]
1440
- },
1441
- `${typeof link.label === "string" ? link.label : "menu"}-${index}`
1442
- );
1443
- }
1444
- if (!link.href) {
1445
- return null;
1446
- }
1447
- return /* @__PURE__ */ jsx(
1448
- 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,
1449
1484
  {
1450
- children: /* @__PURE__ */ jsx(
1451
- 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,
1452
1540
  {
1453
- href: link.href,
1454
- 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",
1455
- children: link.label
1456
- }
1457
- )
1458
- },
1459
- `${typeof link.label === "string" ? link.label : "menu"}-${index}`
1460
- );
1461
- })
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
+ );
1462
1572
  }
1463
- ),
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
+ }) }),
1464
1592
  /* @__PURE__ */ jsx(
1465
1593
  "div",
1466
1594
  {
1467
1595
  className: cn(
1468
- "hidden items-center gap-4 lg:flex",
1596
+ "mx-8 mt-auto flex flex-col gap-4 py-12",
1469
1597
  actionsClassName
1470
1598
  ),
1471
1599
  children: renderActions()
1472
1600
  }
1473
- ),
1474
- /* @__PURE__ */ jsx("div", { className: "flex items-center gap-4 lg:hidden", children: /* @__PURE__ */ jsxs(
1475
- Pressable,
1476
- {
1477
- variant: "outline",
1478
- size: "icon",
1479
- asButton: true,
1480
- "aria-label": "Main Menu",
1481
- onClick: () => setOpen(!open),
1482
- children: [
1483
- !open && /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/menu", size: 16 }),
1484
- open && /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/x", size: 16 })
1485
- ]
1486
- }
1487
- ) })
1488
- ] }),
1489
- open && /* @__PURE__ */ jsxs(
1490
- "div",
1491
- {
1492
- className: cn(
1493
- "absolute inset-0 top-[72px] flex h-[calc(100vh-72px)] w-full flex-col overflow-scroll border-t border-border bg-background lg:hidden",
1494
- mobileMenuClassName
1495
- ),
1496
- children: [
1497
- /* @__PURE__ */ jsx(Accordion, { type: "single", collapsible: true, className: "w-full", children: menuLinks?.map((link, index) => {
1498
- if (hasDropdownItems(link)) {
1499
- return /* @__PURE__ */ jsxs(
1500
- AccordionItem,
1501
- {
1502
- value: `menu-${index}`,
1503
- className: "border-b-2 border-dashed",
1504
- children: [
1505
- /* @__PURE__ */ jsx(AccordionTrigger, { className: "px-2 py-4 text-left hover:no-underline", children: link.label }),
1506
- /* @__PURE__ */ jsx(AccordionContent, { className: "px-2 pb-4", children: /* @__PURE__ */ jsx("div", { className: "space-y-3", children: link.links?.map((item, itemIndex) => /* @__PURE__ */ jsxs(
1507
- Pressable,
1508
- {
1509
- href: getLinkUrl(item),
1510
- className: "group flex items-start gap-4 rounded-lg p-2 hover:bg-muted",
1511
- children: [
1512
- item.image && /* @__PURE__ */ jsx("div", { className: "h-10 w-10 overflow-hidden rounded-md border border-border", children: /* @__PURE__ */ jsx(
1513
- Img,
1514
- {
1515
- src: item.image,
1516
- alt: typeof item.label === "string" ? item.label : "Menu item",
1517
- className: "h-full w-full object-cover object-center",
1518
- optixFlowConfig
1519
- }
1520
- ) }),
1521
- !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(
1522
- DynamicIcon,
1523
- {
1524
- name: item.iconName,
1525
- size: 16
1526
- }
1527
- ) : null }),
1528
- /* @__PURE__ */ jsxs("div", { className: "flex-1", children: [
1529
- /* @__PURE__ */ jsx("div", { className: "text-sm font-medium text-foreground", children: item.label }),
1530
- item.description && /* @__PURE__ */ jsx("div", { className: "text-xs text-muted-foreground", children: item.description })
1531
- ] })
1532
- ]
1533
- },
1534
- `${typeof item.label === "string" ? item.label : "item"}-${itemIndex}`
1535
- )) }) })
1536
- ]
1537
- },
1538
- `${typeof link.label === "string" ? link.label : "menu"}-${index}`
1539
- );
1540
- }
1541
- if (!link.href) {
1542
- return null;
1543
- }
1544
- return /* @__PURE__ */ jsx(
1545
- "div",
1546
- {
1547
- className: "border-b-2 border-dashed",
1548
- children: /* @__PURE__ */ jsx(
1549
- Pressable,
1550
- {
1551
- href: link.href,
1552
- className: "flex w-full items-center px-2 py-4 text-left text-sm font-medium",
1553
- children: link.label
1554
- }
1555
- )
1556
- },
1557
- `${typeof link.label === "string" ? link.label : "menu"}-${index}`
1558
- );
1559
- }) }),
1560
- /* @__PURE__ */ jsx(
1561
- "div",
1562
- {
1563
- className: cn(
1564
- "mx-8 mt-auto flex flex-col gap-4 py-12",
1565
- actionsClassName
1566
- ),
1567
- children: renderActions()
1568
- }
1569
- )
1570
- ]
1571
- }
1572
- )
1573
- ] })
1574
- }
1575
- )
1601
+ )
1602
+ ]
1603
+ }
1604
+ )
1605
+ ] }) }) })
1576
1606
  }
1577
1607
  );
1578
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,7 +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 } from './types-D2b35ylu.cjs';
5
+ import { L as LogoConfig, N as NavbarLayoutVariant } from './types-COVDidbn.cjs';
6
6
  import { A as ActionConfig, O as OptixFlowConfig } from './blocks-Cohq4eio.cjs';
7
7
  import 'class-variance-authority';
8
8
  import './button-variants-lRElsmTc.cjs';
@@ -106,6 +106,10 @@ interface NavbarSearchFocusedProps {
106
106
  * OptixFlow image optimization configuration
107
107
  */
108
108
  optixFlowConfig?: OptixFlowConfig;
109
+ /**
110
+ * Layout variant for the navbar
111
+ */
112
+ layoutVariant?: NavbarLayoutVariant;
109
113
  }
110
114
  /**
111
115
  * NavbarSearchFocused - A navigation bar with a prominent search input.
@@ -116,6 +120,6 @@ interface NavbarSearchFocusedProps {
116
120
  * below the logo and hamburger menu, with navigation in a slide-out sheet. Ideal for
117
121
  * e-commerce sites, marketplaces, documentation sites, and content-heavy platforms.
118
122
  */
119
- 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;
120
124
 
121
125
  export { NavbarSearchFocused, type NavbarSearchFocusedProps };
@@ -2,7 +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 } from './types-D2b35ylu.js';
5
+ import { L as LogoConfig, N as NavbarLayoutVariant } from './types-COVDidbn.js';
6
6
  import { A as ActionConfig, O as OptixFlowConfig } from './blocks-k17uluAz.js';
7
7
  import 'class-variance-authority';
8
8
  import './button-variants-lRElsmTc.js';
@@ -106,6 +106,10 @@ interface NavbarSearchFocusedProps {
106
106
  * OptixFlow image optimization configuration
107
107
  */
108
108
  optixFlowConfig?: OptixFlowConfig;
109
+ /**
110
+ * Layout variant for the navbar
111
+ */
112
+ layoutVariant?: NavbarLayoutVariant;
109
113
  }
110
114
  /**
111
115
  * NavbarSearchFocused - A navigation bar with a prominent search input.
@@ -116,6 +120,6 @@ interface NavbarSearchFocusedProps {
116
120
  * below the logo and hamburger menu, with navigation in a slide-out sheet. Ideal for
117
121
  * e-commerce sites, marketplaces, documentation sites, and content-heavy platforms.
118
122
  */
119
- 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;
120
124
 
121
125
  export { NavbarSearchFocused, type NavbarSearchFocusedProps };