@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
@@ -989,7 +989,7 @@ function NavigationMenuList({
989
989
  {
990
990
  "data-slot": "navigation-menu-list",
991
991
  className: cn(
992
- "group flex flex-1 list-none items-center justify-center gap-6",
992
+ "group flex flex-1 list-none items-center justify-center gap-2 lg:gap-4 xl:gap-6",
993
993
  className
994
994
  ),
995
995
  ...props
@@ -1029,8 +1029,9 @@ function NavigationMenuTrigger({
1029
1029
  /* @__PURE__ */ jsx(
1030
1030
  DynamicIcon,
1031
1031
  {
1032
+ size: 18,
1032
1033
  name: "lucide/chevron-down",
1033
- className: "relative top-[1px] ml-1 size-2.5 transition duration-300 group-data-[state=open]:rotate-180",
1034
+ className: "relative top-px opacity-50 transition duration-300 group-data-[state=open]:rotate-180",
1034
1035
  "aria-hidden": "true"
1035
1036
  }
1036
1037
  )
@@ -1070,7 +1071,7 @@ function NavigationMenuViewport({
1070
1071
  {
1071
1072
  "data-slot": "navigation-menu-viewport",
1072
1073
  className: cn(
1073
- "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)]",
1074
+ "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)",
1074
1075
  className
1075
1076
  ),
1076
1077
  ...props
@@ -1088,7 +1089,7 @@ function NavigationMenuLink({
1088
1089
  {
1089
1090
  "data-slot": "navigation-menu-link",
1090
1091
  className: cn(
1091
- "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",
1092
+ "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",
1092
1093
  className
1093
1094
  ),
1094
1095
  ...props
@@ -1342,6 +1343,41 @@ var imagePlaceholders = [
1342
1343
  "https://toastability-production.s3.amazonaws.com/e13qu3083lkhdg7th64vb628172a",
1343
1344
  "https://toastability-production.s3.amazonaws.com/w87w0fyjdol9yzwo7yywkgxidvzo"
1344
1345
  ];
1346
+
1347
+ // components/blocks/navbars/types.ts
1348
+ function getLinkUrl(item) {
1349
+ return item.href || item.url || "#";
1350
+ }
1351
+
1352
+ // components/blocks/navbars/layout-variant-utils.ts
1353
+ function getNavbarLayoutClasses(layoutVariant = "fullScreenContainerizedLinks", customClasses) {
1354
+ const isFloatingBar = layoutVariant === "floatingBar";
1355
+ const isFullWidthLinks = layoutVariant === "fullScreenFullWidthLinks";
1356
+ return {
1357
+ // Section wrapper classes
1358
+ sectionClasses: cn(
1359
+ "inset-x-0 z-20",
1360
+ isFloatingBar ? "sticky top-4" : "top-0",
1361
+ customClasses?.className
1362
+ ),
1363
+ // Outer container wrapper (only for floating bar)
1364
+ containerWrapperClasses: cn(
1365
+ isFloatingBar && "mx-auto w-full px-2 sm:px-4 lg:px-8 max-w-7xl relative z-10"
1366
+ ),
1367
+ // Inner container classes
1368
+ innerContainerClasses: cn(
1369
+ !isFloatingBar && !isFullWidthLinks && "container",
1370
+ isFullWidthLinks && "mx-auto w-full px-2 sm:px-4 lg:px-8",
1371
+ customClasses?.containerClassName
1372
+ ),
1373
+ // Navigation wrapper classes (for border and shadow)
1374
+ navWrapperClasses: cn(
1375
+ isFloatingBar ? "border border-border/50 shadow-sm rounded-full" : "border-b border-border/50 shadow-sm"
1376
+ ),
1377
+ // Spacing adjustment for Section component
1378
+ spacingOverride: isFloatingBar ? "none" : void 0
1379
+ };
1380
+ }
1345
1381
  var MOBILE_BREAKPOINT = 1280;
1346
1382
  var NavbarAnimatedPreview = ({
1347
1383
  className,
@@ -1359,6 +1395,7 @@ var NavbarAnimatedPreview = ({
1359
1395
  navigationSlot,
1360
1396
  actions,
1361
1397
  actionsSlot,
1398
+ layoutVariant = "fullScreenContainerizedLinks",
1362
1399
  background = "white",
1363
1400
  spacing = "none",
1364
1401
  pattern,
@@ -1454,68 +1491,70 @@ var NavbarAnimatedPreview = ({
1454
1491
  `desktop-link-${index}`
1455
1492
  )) });
1456
1493
  };
1457
- return /* @__PURE__ */ jsxs(
1494
+ const {
1495
+ sectionClasses,
1496
+ containerWrapperClasses,
1497
+ innerContainerClasses,
1498
+ navWrapperClasses: baseNavWrapperClasses,
1499
+ spacingOverride
1500
+ } = getNavbarLayoutClasses(layoutVariant, { className, containerClassName });
1501
+ const navWrapperClasses = cn(
1502
+ "h-20 max-w-full after:absolute after:inset-0 after:z-998 after:block after:size-full after:bg-background after:content-[''] [&>div:last-child>div]:mt-0 [&>div:last-child>div]:animate-none [&>div:last-child>div]:rounded-none [&>div:last-child>div]:border-0 [&>div:last-child>div]:shadow-[0px_-1px_0px_0px_rgba(0,0,0,0.05),0px_0px_0px_1px_rgba(17,26,37,0.05),0px_2px_5px_0px_rgba(16,25,36,0.1),0px_5px_20px_0px_rgba(16,25,36,0.1)]!",
1503
+ baseNavWrapperClasses,
1504
+ navigationMenuClassName
1505
+ );
1506
+ return /* @__PURE__ */ jsx(
1458
1507
  Section,
1459
1508
  {
1460
1509
  background,
1461
- spacing,
1510
+ spacing: spacingOverride ?? spacing,
1462
1511
  className: cn(
1463
1512
  "pointer-events-auto fixed top-0 z-999 flex w-full items-center justify-center",
1464
- className
1513
+ sectionClasses
1465
1514
  ),
1466
1515
  pattern,
1467
1516
  patternOpacity,
1468
- children: [
1469
- /* @__PURE__ */ jsx(
1470
- NavigationMenu,
1517
+ children: /* @__PURE__ */ jsx("div", { className: containerWrapperClasses, children: /* @__PURE__ */ jsxs("div", { className: innerContainerClasses, children: [
1518
+ /* @__PURE__ */ jsx(NavigationMenu, { className: navWrapperClasses, children: /* @__PURE__ */ jsxs(
1519
+ "div",
1471
1520
  {
1472
1521
  className: cn(
1473
- "h-20 max-w-full after:absolute after:inset-0 after:z-998 after:block after:size-full after:bg-background after:content-[''] [&>div:last-child>div]:mt-0 [&>div:last-child>div]:animate-none [&>div:last-child>div]:rounded-none [&>div:last-child>div]:border-0 [&>div:last-child>div]:shadow-[0px_-1px_0px_0px_rgba(0,0,0,0.05),0px_0px_0px_1px_rgba(17,26,37,0.05),0px_2px_5px_0px_rgba(16,25,36,0.1),0px_5px_20px_0px_rgba(16,25,36,0.1)]!",
1474
- navigationMenuClassName
1522
+ "relative z-999 grid w-full grid-cols-2 items-center justify-between gap-8 xl:grid-cols-3"
1475
1523
  ),
1476
- children: /* @__PURE__ */ jsxs(
1477
- "div",
1478
- {
1479
- className: cn(
1480
- "relative z-999 container grid w-full grid-cols-2 items-center justify-between gap-8 xl:grid-cols-3",
1481
- containerClassName
1482
- ),
1483
- children: [
1484
- renderLogo(),
1485
- /* @__PURE__ */ jsx("div", { className: cn("hidden xl:flex", navClassName), children: renderNavigation() }),
1486
- /* @__PURE__ */ jsxs("div", { className: cn("justify-self-end", actionsClassName), children: [
1487
- /* @__PURE__ */ jsx("div", { className: "hidden xl:block", children: renderActions() }),
1488
- /* @__PURE__ */ jsx("div", { className: "xl:hidden", children: /* @__PURE__ */ jsx(
1489
- Pressable,
1524
+ children: [
1525
+ renderLogo(),
1526
+ /* @__PURE__ */ jsx("div", { className: cn("hidden xl:flex", navClassName), children: renderNavigation() }),
1527
+ /* @__PURE__ */ jsxs("div", { className: cn("justify-self-end", actionsClassName), children: [
1528
+ /* @__PURE__ */ jsx("div", { className: "hidden xl:block", children: renderActions() }),
1529
+ /* @__PURE__ */ jsx("div", { className: "xl:hidden", children: /* @__PURE__ */ jsx(
1530
+ Pressable,
1531
+ {
1532
+ className: "size-11",
1533
+ variant: "ghost",
1534
+ size: "icon",
1535
+ asButton: true,
1536
+ onClick: handleMobileMenu,
1537
+ children: open ? /* @__PURE__ */ jsx(
1538
+ DynamicIcon,
1490
1539
  {
1491
- className: "size-11",
1492
- variant: "ghost",
1493
- size: "icon",
1494
- asButton: true,
1495
- onClick: handleMobileMenu,
1496
- children: open ? /* @__PURE__ */ jsx(
1497
- DynamicIcon,
1498
- {
1499
- name: "lucide/x",
1500
- size: 22,
1501
- className: "stroke-foreground"
1502
- }
1503
- ) : /* @__PURE__ */ jsx(
1504
- DynamicIcon,
1505
- {
1506
- name: "lucide/menu",
1507
- size: 22,
1508
- className: "stroke-foreground"
1509
- }
1510
- )
1540
+ name: "lucide/x",
1541
+ size: 22,
1542
+ className: "stroke-foreground"
1511
1543
  }
1512
- ) })
1513
- ] })
1514
- ]
1515
- }
1516
- )
1544
+ ) : /* @__PURE__ */ jsx(
1545
+ DynamicIcon,
1546
+ {
1547
+ name: "lucide/menu",
1548
+ size: 22,
1549
+ className: "stroke-foreground"
1550
+ }
1551
+ )
1552
+ }
1553
+ ) })
1554
+ ] })
1555
+ ]
1517
1556
  }
1518
- ),
1557
+ ) }),
1519
1558
  /* @__PURE__ */ jsx(
1520
1559
  MobileNavigationMenu,
1521
1560
  {
@@ -1525,7 +1564,7 @@ var NavbarAnimatedPreview = ({
1525
1564
  actionsSlot
1526
1565
  }
1527
1566
  )
1528
- ]
1567
+ ] }) })
1529
1568
  }
1530
1569
  );
1531
1570
  };
@@ -1718,7 +1757,7 @@ var FeaturedImageLink = ({
1718
1757
  optixFlowConfig
1719
1758
  }) => {
1720
1759
  if (!link) return null;
1721
- return /* @__PURE__ */ jsx("div", { className: "hidden xl:block", children: /* @__PURE__ */ jsx(Pressable, { href: link.url, className: "w-full max-w-147.5", children: /* @__PURE__ */ jsx(
1760
+ return /* @__PURE__ */ jsx("div", { className: "hidden xl:block", children: /* @__PURE__ */ jsx(Pressable, { href: link.url || "#", className: "w-full max-w-147.5", children: /* @__PURE__ */ jsx(
1722
1761
  AspectRatio,
1723
1762
  {
1724
1763
  ratio: 1.77245509,
@@ -1752,7 +1791,7 @@ var FeaturedLink = ({ link, optixFlowConfig }) => {
1752
1791
  return /* @__PURE__ */ jsxs(
1753
1792
  Pressable,
1754
1793
  {
1755
- href: link.url,
1794
+ href: getLinkUrl(link),
1756
1795
  className: "group relative flex w-full overflow-hidden rounded-xl bg-muted px-8 py-7",
1757
1796
  children: [
1758
1797
  /* @__PURE__ */ jsxs("div", { className: "relative z-10 flex w-full items-center gap-6", children: [
@@ -1788,7 +1827,7 @@ var NavLink = forwardRef(
1788
1827
  Pressable,
1789
1828
  {
1790
1829
  ref,
1791
- href: link.url,
1830
+ href: getLinkUrl(link),
1792
1831
  className: "flex w-full gap-2 transition-opacity duration-300",
1793
1832
  onMouseEnter,
1794
1833
  onMouseLeave,
@@ -1802,8 +1841,8 @@ var NavLink = forwardRef(
1802
1841
  }
1803
1842
  ) }),
1804
1843
  /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-start gap-2", children: [
1805
- link.label && /* @__PURE__ */ jsx("div", { className: "text-base leading-normal", children: link.label }),
1806
- /* @__PURE__ */ jsx("div", { className: "text-sm leading-normal text-muted-foreground", children: link.description })
1844
+ link.label && /* @__PURE__ */ jsx("div", { className: "text-sm leading-normal", children: link.label }),
1845
+ /* @__PURE__ */ jsx("div", { className: "text-xs leading-normal text-muted-foreground", children: link.description })
1807
1846
  ] })
1808
1847
  ]
1809
1848
  }
@@ -987,7 +987,7 @@ function NavigationMenuList({
987
987
  {
988
988
  "data-slot": "navigation-menu-list",
989
989
  className: cn(
990
- "group flex flex-1 list-none items-center justify-center gap-6",
990
+ "group flex flex-1 list-none items-center justify-center gap-2 lg:gap-4 xl:gap-6",
991
991
  className
992
992
  ),
993
993
  ...props
@@ -1027,8 +1027,9 @@ function NavigationMenuTrigger({
1027
1027
  /* @__PURE__ */ jsxRuntime.jsx(
1028
1028
  DynamicIcon,
1029
1029
  {
1030
+ size: 18,
1030
1031
  name: "lucide/chevron-down",
1031
- className: "relative top-[1px] ml-1 size-2.5 transition duration-300 group-data-[state=open]:rotate-180",
1032
+ className: "relative top-px opacity-50 transition duration-300 group-data-[state=open]:rotate-180",
1032
1033
  "aria-hidden": "true"
1033
1034
  }
1034
1035
  )
@@ -1062,7 +1063,7 @@ function NavigationMenuLink({
1062
1063
  {
1063
1064
  "data-slot": "navigation-menu-link",
1064
1065
  className: cn(
1065
- "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",
1066
+ "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",
1066
1067
  className
1067
1068
  ),
1068
1069
  ...props
@@ -1157,6 +1158,36 @@ function SheetTitle({
1157
1158
  // lib/mediaPlaceholders.ts
1158
1159
  var logoPlaceholders = {
1159
1160
  logoMark: "https://cdn.ing/assets/i/r/285975/eud79qeya11q5w6ueyhklueardyx/monochrome-rounded-square-app-icon-circular-emblem.png"};
1161
+
1162
+ // components/blocks/navbars/layout-variant-utils.ts
1163
+ function getNavbarLayoutClasses(layoutVariant = "fullScreenContainerizedLinks", customClasses) {
1164
+ const isFloatingBar = layoutVariant === "floatingBar";
1165
+ const isFullWidthLinks = layoutVariant === "fullScreenFullWidthLinks";
1166
+ return {
1167
+ // Section wrapper classes
1168
+ sectionClasses: cn(
1169
+ "inset-x-0 z-20",
1170
+ isFloatingBar ? "sticky top-4" : "top-0",
1171
+ customClasses?.className
1172
+ ),
1173
+ // Outer container wrapper (only for floating bar)
1174
+ containerWrapperClasses: cn(
1175
+ isFloatingBar && "mx-auto w-full px-2 sm:px-4 lg:px-8 max-w-7xl relative z-10"
1176
+ ),
1177
+ // Inner container classes
1178
+ innerContainerClasses: cn(
1179
+ !isFloatingBar && !isFullWidthLinks && "container",
1180
+ isFullWidthLinks && "mx-auto w-full px-2 sm:px-4 lg:px-8",
1181
+ customClasses?.containerClassName
1182
+ ),
1183
+ // Navigation wrapper classes (for border and shadow)
1184
+ navWrapperClasses: cn(
1185
+ isFloatingBar ? "border border-border/50 shadow-sm rounded-full" : "border-b border-border/50 shadow-sm"
1186
+ ),
1187
+ // Spacing adjustment for Section component
1188
+ spacingOverride: isFloatingBar ? "none" : void 0
1189
+ };
1190
+ }
1160
1191
  var NavigationMenuWithoutViewport = ({
1161
1192
  className,
1162
1193
  children,
@@ -1241,6 +1272,7 @@ var NavbarCenteredMenu = ({
1241
1272
  mobileNavClassName,
1242
1273
  navigationMenuClassName,
1243
1274
  actionsClassName,
1275
+ layoutVariant = "fullScreenContainerizedLinks",
1244
1276
  background = "white",
1245
1277
  spacing = "sm",
1246
1278
  pattern,
@@ -1308,15 +1340,22 @@ var NavbarCenteredMenu = ({
1308
1340
  if (!menu || menu.length === 0) return null;
1309
1341
  return menu.map((item) => renderMobileMenuItem(item));
1310
1342
  };
1343
+ const {
1344
+ sectionClasses,
1345
+ containerWrapperClasses,
1346
+ innerContainerClasses,
1347
+ navWrapperClasses,
1348
+ spacingOverride
1349
+ } = getNavbarLayoutClasses(layoutVariant, { className, containerClassName });
1311
1350
  return /* @__PURE__ */ jsxRuntime.jsx(
1312
1351
  Section,
1313
1352
  {
1314
1353
  background,
1315
- spacing,
1316
- className: cn(className),
1354
+ spacing: spacingOverride ?? spacing,
1355
+ className: sectionClasses,
1317
1356
  pattern,
1318
1357
  patternOpacity,
1319
- children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("container", containerClassName), children: [
1358
+ children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: containerWrapperClasses, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn(innerContainerClasses, navWrapperClasses), children: [
1320
1359
  /* @__PURE__ */ jsxRuntime.jsxs(
1321
1360
  "nav",
1322
1361
  {
@@ -1365,7 +1404,7 @@ var NavbarCenteredMenu = ({
1365
1404
  ] })
1366
1405
  ] })
1367
1406
  ] }) })
1368
- ] })
1407
+ ] }) })
1369
1408
  }
1370
1409
  );
1371
1410
  };
@@ -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';
@@ -9,6 +10,7 @@ import 'class-variance-authority/types';
9
10
 
10
11
  /**
11
12
  * Menu item interface for navigation
13
+ * Component-specific type using 'title' and 'url' fields
12
14
  */
13
15
  interface MenuItem {
14
16
  title: string;
@@ -17,16 +19,6 @@ interface MenuItem {
17
19
  icon?: string;
18
20
  items?: MenuItem[];
19
21
  }
20
- /**
21
- * Logo configuration interface
22
- */
23
- interface LogoConfig {
24
- url?: string;
25
- src?: string;
26
- alt?: string;
27
- title?: React.ReactNode;
28
- className?: string;
29
- }
30
22
  /**
31
23
  * Props for the NavbarCenteredMenu component
32
24
  */
@@ -99,6 +91,10 @@ interface NavbarCenteredMenuProps {
99
91
  * Pattern overlay opacity (0-1)
100
92
  */
101
93
  patternOpacity?: number;
94
+ /**
95
+ * Layout variant for the navbar
96
+ */
97
+ layoutVariant?: NavbarLayoutVariant;
102
98
  /**
103
99
  * OptixFlow image optimization configuration
104
100
  */
@@ -112,6 +108,6 @@ interface NavbarCenteredMenuProps {
112
108
  * slide-out sheet with accordion navigation. The dropdowns are centered under their
113
109
  * trigger elements for a balanced visual appearance.
114
110
  */
115
- declare const NavbarCenteredMenu: ({ logo, logoSlot, logoClassName, menu, menuSlot, authActions, authActionsSlot, className, containerClassName, desktopNavClassName, mobileNavClassName, navigationMenuClassName, actionsClassName, background, spacing, pattern, patternOpacity, optixFlowConfig, }: NavbarCenteredMenuProps) => react_jsx_runtime.JSX.Element;
111
+ declare const NavbarCenteredMenu: ({ logo, logoSlot, logoClassName, menu, menuSlot, authActions, authActionsSlot, className, containerClassName, desktopNavClassName, mobileNavClassName, navigationMenuClassName, actionsClassName, layoutVariant, background, spacing, pattern, patternOpacity, optixFlowConfig, }: NavbarCenteredMenuProps) => react_jsx_runtime.JSX.Element;
116
112
 
117
113
  export { NavbarCenteredMenu, type NavbarCenteredMenuProps };
@@ -2,6 +2,7 @@ import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import * as React from 'react';
3
3
  import { P as PatternName } from './pattern-background-a7gKHzHy.js';
4
4
  import { SectionBackground, SectionSpacing } from './types.js';
5
+ import { L as LogoConfig, N as NavbarLayoutVariant } from './types-COVDidbn.js';
5
6
  import { A as ActionConfig, O as OptixFlowConfig } from './blocks-k17uluAz.js';
6
7
  import 'class-variance-authority';
7
8
  import './button-variants-lRElsmTc.js';
@@ -9,6 +10,7 @@ import 'class-variance-authority/types';
9
10
 
10
11
  /**
11
12
  * Menu item interface for navigation
13
+ * Component-specific type using 'title' and 'url' fields
12
14
  */
13
15
  interface MenuItem {
14
16
  title: string;
@@ -17,16 +19,6 @@ interface MenuItem {
17
19
  icon?: string;
18
20
  items?: MenuItem[];
19
21
  }
20
- /**
21
- * Logo configuration interface
22
- */
23
- interface LogoConfig {
24
- url?: string;
25
- src?: string;
26
- alt?: string;
27
- title?: React.ReactNode;
28
- className?: string;
29
- }
30
22
  /**
31
23
  * Props for the NavbarCenteredMenu component
32
24
  */
@@ -99,6 +91,10 @@ interface NavbarCenteredMenuProps {
99
91
  * Pattern overlay opacity (0-1)
100
92
  */
101
93
  patternOpacity?: number;
94
+ /**
95
+ * Layout variant for the navbar
96
+ */
97
+ layoutVariant?: NavbarLayoutVariant;
102
98
  /**
103
99
  * OptixFlow image optimization configuration
104
100
  */
@@ -112,6 +108,6 @@ interface NavbarCenteredMenuProps {
112
108
  * slide-out sheet with accordion navigation. The dropdowns are centered under their
113
109
  * trigger elements for a balanced visual appearance.
114
110
  */
115
- declare const NavbarCenteredMenu: ({ logo, logoSlot, logoClassName, menu, menuSlot, authActions, authActionsSlot, className, containerClassName, desktopNavClassName, mobileNavClassName, navigationMenuClassName, actionsClassName, background, spacing, pattern, patternOpacity, optixFlowConfig, }: NavbarCenteredMenuProps) => react_jsx_runtime.JSX.Element;
111
+ declare const NavbarCenteredMenu: ({ logo, logoSlot, logoClassName, menu, menuSlot, authActions, authActionsSlot, className, containerClassName, desktopNavClassName, mobileNavClassName, navigationMenuClassName, actionsClassName, layoutVariant, background, spacing, pattern, patternOpacity, optixFlowConfig, }: NavbarCenteredMenuProps) => react_jsx_runtime.JSX.Element;
116
112
 
117
113
  export { NavbarCenteredMenu, type NavbarCenteredMenuProps };
@@ -963,7 +963,7 @@ function NavigationMenuList({
963
963
  {
964
964
  "data-slot": "navigation-menu-list",
965
965
  className: cn(
966
- "group flex flex-1 list-none items-center justify-center gap-6",
966
+ "group flex flex-1 list-none items-center justify-center gap-2 lg:gap-4 xl:gap-6",
967
967
  className
968
968
  ),
969
969
  ...props
@@ -1003,8 +1003,9 @@ function NavigationMenuTrigger({
1003
1003
  /* @__PURE__ */ jsx(
1004
1004
  DynamicIcon,
1005
1005
  {
1006
+ size: 18,
1006
1007
  name: "lucide/chevron-down",
1007
- className: "relative top-[1px] ml-1 size-2.5 transition duration-300 group-data-[state=open]:rotate-180",
1008
+ className: "relative top-px opacity-50 transition duration-300 group-data-[state=open]:rotate-180",
1008
1009
  "aria-hidden": "true"
1009
1010
  }
1010
1011
  )
@@ -1038,7 +1039,7 @@ function NavigationMenuLink({
1038
1039
  {
1039
1040
  "data-slot": "navigation-menu-link",
1040
1041
  className: cn(
1041
- "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",
1042
+ "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",
1042
1043
  className
1043
1044
  ),
1044
1045
  ...props
@@ -1133,6 +1134,36 @@ function SheetTitle({
1133
1134
  // lib/mediaPlaceholders.ts
1134
1135
  var logoPlaceholders = {
1135
1136
  logoMark: "https://cdn.ing/assets/i/r/285975/eud79qeya11q5w6ueyhklueardyx/monochrome-rounded-square-app-icon-circular-emblem.png"};
1137
+
1138
+ // components/blocks/navbars/layout-variant-utils.ts
1139
+ function getNavbarLayoutClasses(layoutVariant = "fullScreenContainerizedLinks", customClasses) {
1140
+ const isFloatingBar = layoutVariant === "floatingBar";
1141
+ const isFullWidthLinks = layoutVariant === "fullScreenFullWidthLinks";
1142
+ return {
1143
+ // Section wrapper classes
1144
+ sectionClasses: cn(
1145
+ "inset-x-0 z-20",
1146
+ isFloatingBar ? "sticky top-4" : "top-0",
1147
+ customClasses?.className
1148
+ ),
1149
+ // Outer container wrapper (only for floating bar)
1150
+ containerWrapperClasses: cn(
1151
+ isFloatingBar && "mx-auto w-full px-2 sm:px-4 lg:px-8 max-w-7xl relative z-10"
1152
+ ),
1153
+ // Inner container classes
1154
+ innerContainerClasses: cn(
1155
+ !isFloatingBar && !isFullWidthLinks && "container",
1156
+ isFullWidthLinks && "mx-auto w-full px-2 sm:px-4 lg:px-8",
1157
+ customClasses?.containerClassName
1158
+ ),
1159
+ // Navigation wrapper classes (for border and shadow)
1160
+ navWrapperClasses: cn(
1161
+ isFloatingBar ? "border border-border/50 shadow-sm rounded-full" : "border-b border-border/50 shadow-sm"
1162
+ ),
1163
+ // Spacing adjustment for Section component
1164
+ spacingOverride: isFloatingBar ? "none" : void 0
1165
+ };
1166
+ }
1136
1167
  var NavigationMenuWithoutViewport = ({
1137
1168
  className,
1138
1169
  children,
@@ -1217,6 +1248,7 @@ var NavbarCenteredMenu = ({
1217
1248
  mobileNavClassName,
1218
1249
  navigationMenuClassName,
1219
1250
  actionsClassName,
1251
+ layoutVariant = "fullScreenContainerizedLinks",
1220
1252
  background = "white",
1221
1253
  spacing = "sm",
1222
1254
  pattern,
@@ -1284,15 +1316,22 @@ var NavbarCenteredMenu = ({
1284
1316
  if (!menu || menu.length === 0) return null;
1285
1317
  return menu.map((item) => renderMobileMenuItem(item));
1286
1318
  };
1319
+ const {
1320
+ sectionClasses,
1321
+ containerWrapperClasses,
1322
+ innerContainerClasses,
1323
+ navWrapperClasses,
1324
+ spacingOverride
1325
+ } = getNavbarLayoutClasses(layoutVariant, { className, containerClassName });
1287
1326
  return /* @__PURE__ */ jsx(
1288
1327
  Section,
1289
1328
  {
1290
1329
  background,
1291
- spacing,
1292
- className: cn(className),
1330
+ spacing: spacingOverride ?? spacing,
1331
+ className: sectionClasses,
1293
1332
  pattern,
1294
1333
  patternOpacity,
1295
- children: /* @__PURE__ */ jsxs("div", { className: cn("container", containerClassName), children: [
1334
+ children: /* @__PURE__ */ jsx("div", { className: containerWrapperClasses, children: /* @__PURE__ */ jsxs("div", { className: cn(innerContainerClasses, navWrapperClasses), children: [
1296
1335
  /* @__PURE__ */ jsxs(
1297
1336
  "nav",
1298
1337
  {
@@ -1341,7 +1380,7 @@ var NavbarCenteredMenu = ({
1341
1380
  ] })
1342
1381
  ] })
1343
1382
  ] }) })
1344
- ] })
1383
+ ] }) })
1345
1384
  }
1346
1385
  );
1347
1386
  };