@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
@@ -1015,7 +1015,7 @@ function NavigationMenuList({
1015
1015
  {
1016
1016
  "data-slot": "navigation-menu-list",
1017
1017
  className: cn(
1018
- "group flex flex-1 list-none items-center justify-center gap-6",
1018
+ "group flex flex-1 list-none items-center justify-center gap-2 lg:gap-4 xl:gap-6",
1019
1019
  className
1020
1020
  ),
1021
1021
  ...props
@@ -1055,8 +1055,9 @@ function NavigationMenuTrigger({
1055
1055
  /* @__PURE__ */ jsxRuntime.jsx(
1056
1056
  DynamicIcon,
1057
1057
  {
1058
+ size: 18,
1058
1059
  name: "lucide/chevron-down",
1059
- className: "relative top-[1px] ml-1 size-2 transition duration-300 group-data-[state=open]:rotate-180",
1060
+ className: "relative top-px opacity-50 transition duration-300 group-data-[state=open]:rotate-180",
1060
1061
  "aria-hidden": "true"
1061
1062
  }
1062
1063
  )
@@ -1096,7 +1097,7 @@ function NavigationMenuViewport({
1096
1097
  {
1097
1098
  "data-slot": "navigation-menu-viewport",
1098
1099
  className: cn(
1099
- "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)]",
1100
+ "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)",
1100
1101
  className
1101
1102
  ),
1102
1103
  ...props
@@ -1114,7 +1115,7 @@ function NavigationMenuLink({
1114
1115
  {
1115
1116
  "data-slot": "navigation-menu-link",
1116
1117
  className: cn(
1117
- "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",
1118
+ "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",
1118
1119
  className
1119
1120
  ),
1120
1121
  ...props
@@ -1373,6 +1374,36 @@ var imagePlaceholders = [
1373
1374
  function getLinkUrl(item) {
1374
1375
  return item.href || item.url || "#";
1375
1376
  }
1377
+
1378
+ // components/blocks/navbars/layout-variant-utils.ts
1379
+ function getNavbarLayoutClasses(layoutVariant = "fullScreenContainerizedLinks", customClasses) {
1380
+ const isFloatingBar = layoutVariant === "floatingBar";
1381
+ const isFullWidthLinks = layoutVariant === "fullScreenFullWidthLinks";
1382
+ return {
1383
+ // Section wrapper classes
1384
+ sectionClasses: cn(
1385
+ "inset-x-0 z-20",
1386
+ isFloatingBar ? "sticky top-4" : "top-0",
1387
+ customClasses?.className
1388
+ ),
1389
+ // Outer container wrapper (only for floating bar)
1390
+ containerWrapperClasses: cn(
1391
+ isFloatingBar && "mx-auto w-full px-2 sm:px-4 lg:px-8 max-w-7xl relative z-10"
1392
+ ),
1393
+ // Inner container classes
1394
+ innerContainerClasses: cn(
1395
+ !isFloatingBar && !isFullWidthLinks && "container",
1396
+ isFullWidthLinks && "mx-auto w-full px-2 sm:px-4 lg:px-8",
1397
+ customClasses?.containerClassName
1398
+ ),
1399
+ // Navigation wrapper classes (for border and shadow)
1400
+ navWrapperClasses: cn(
1401
+ isFloatingBar ? "border border-border/50 shadow-sm rounded-full" : "border-b border-border/50 shadow-sm"
1402
+ ),
1403
+ // Spacing adjustment for Section component
1404
+ spacingOverride: isFloatingBar ? "none" : void 0
1405
+ };
1406
+ }
1376
1407
  var MOBILE_BREAKPOINT = 1280;
1377
1408
  var NavbarAnimatedPreview = ({
1378
1409
  className,
@@ -1390,6 +1421,7 @@ var NavbarAnimatedPreview = ({
1390
1421
  navigationSlot,
1391
1422
  actions,
1392
1423
  actionsSlot,
1424
+ layoutVariant = "fullScreenContainerizedLinks",
1393
1425
  background = "white",
1394
1426
  spacing = "none",
1395
1427
  pattern,
@@ -1485,68 +1517,70 @@ var NavbarAnimatedPreview = ({
1485
1517
  `desktop-link-${index}`
1486
1518
  )) });
1487
1519
  };
1488
- return /* @__PURE__ */ jsxRuntime.jsxs(
1520
+ const {
1521
+ sectionClasses,
1522
+ containerWrapperClasses,
1523
+ innerContainerClasses,
1524
+ navWrapperClasses: baseNavWrapperClasses,
1525
+ spacingOverride
1526
+ } = getNavbarLayoutClasses(layoutVariant, { className, containerClassName });
1527
+ const navWrapperClasses = cn(
1528
+ "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)]!",
1529
+ baseNavWrapperClasses,
1530
+ navigationMenuClassName
1531
+ );
1532
+ return /* @__PURE__ */ jsxRuntime.jsx(
1489
1533
  Section,
1490
1534
  {
1491
1535
  background,
1492
- spacing,
1536
+ spacing: spacingOverride ?? spacing,
1493
1537
  className: cn(
1494
1538
  "pointer-events-auto fixed top-0 z-999 flex w-full items-center justify-center",
1495
- className
1539
+ sectionClasses
1496
1540
  ),
1497
1541
  pattern,
1498
1542
  patternOpacity,
1499
- children: [
1500
- /* @__PURE__ */ jsxRuntime.jsx(
1501
- NavigationMenu,
1543
+ children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: containerWrapperClasses, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: innerContainerClasses, children: [
1544
+ /* @__PURE__ */ jsxRuntime.jsx(NavigationMenu, { className: navWrapperClasses, children: /* @__PURE__ */ jsxRuntime.jsxs(
1545
+ "div",
1502
1546
  {
1503
1547
  className: cn(
1504
- "h-20 max-w-full border-b border-border/50 shadow-sm 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)]!",
1505
- navigationMenuClassName
1548
+ "relative z-999 grid w-full grid-cols-2 items-center justify-between gap-8 xl:grid-cols-3"
1506
1549
  ),
1507
- children: /* @__PURE__ */ jsxRuntime.jsxs(
1508
- "div",
1509
- {
1510
- className: cn(
1511
- "relative z-999 container grid w-full grid-cols-2 items-center justify-between gap-8 xl:grid-cols-3",
1512
- containerClassName
1513
- ),
1514
- children: [
1515
- renderLogo(),
1516
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("hidden xl:flex", navClassName), children: renderNavigation() }),
1517
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("justify-self-end", actionsClassName), children: [
1518
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "hidden xl:block", children: renderActions() }),
1519
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "xl:hidden", children: /* @__PURE__ */ jsxRuntime.jsx(
1520
- Pressable,
1550
+ children: [
1551
+ renderLogo(),
1552
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("hidden xl:flex", navClassName), children: renderNavigation() }),
1553
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("justify-self-end", actionsClassName), children: [
1554
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "hidden xl:block", children: renderActions() }),
1555
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "xl:hidden", children: /* @__PURE__ */ jsxRuntime.jsx(
1556
+ Pressable,
1557
+ {
1558
+ className: "size-11",
1559
+ variant: "ghost",
1560
+ size: "icon",
1561
+ asButton: true,
1562
+ onClick: handleMobileMenu,
1563
+ children: open ? /* @__PURE__ */ jsxRuntime.jsx(
1564
+ DynamicIcon,
1521
1565
  {
1522
- className: "size-11",
1523
- variant: "ghost",
1524
- size: "icon",
1525
- asButton: true,
1526
- onClick: handleMobileMenu,
1527
- children: open ? /* @__PURE__ */ jsxRuntime.jsx(
1528
- DynamicIcon,
1529
- {
1530
- name: "lucide/x",
1531
- size: 22,
1532
- className: "stroke-foreground"
1533
- }
1534
- ) : /* @__PURE__ */ jsxRuntime.jsx(
1535
- DynamicIcon,
1536
- {
1537
- name: "lucide/menu",
1538
- size: 22,
1539
- className: "stroke-foreground"
1540
- }
1541
- )
1566
+ name: "lucide/x",
1567
+ size: 22,
1568
+ className: "stroke-foreground"
1542
1569
  }
1543
- ) })
1544
- ] })
1545
- ]
1546
- }
1547
- )
1570
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
1571
+ DynamicIcon,
1572
+ {
1573
+ name: "lucide/menu",
1574
+ size: 22,
1575
+ className: "stroke-foreground"
1576
+ }
1577
+ )
1578
+ }
1579
+ ) })
1580
+ ] })
1581
+ ]
1548
1582
  }
1549
- ),
1583
+ ) }),
1550
1584
  /* @__PURE__ */ jsxRuntime.jsx(
1551
1585
  MobileNavigationMenu,
1552
1586
  {
@@ -1556,7 +1590,7 @@ var NavbarAnimatedPreview = ({
1556
1590
  actionsSlot
1557
1591
  }
1558
1592
  )
1559
- ]
1593
+ ] }) })
1560
1594
  }
1561
1595
  );
1562
1596
  };
@@ -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, b as ILinkItem, a as IMenuLinkGroup } from './types-D2b35ylu.cjs';
5
+ import { L as LogoConfig, b as ILinkItem, a as IMenuLinkGroup, 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';
@@ -101,6 +101,10 @@ interface NavbarAnimatedPreviewProps {
101
101
  * Pattern overlay opacity (0-1)
102
102
  */
103
103
  patternOpacity?: number;
104
+ /**
105
+ * Layout variant for the navbar
106
+ */
107
+ layoutVariant?: NavbarLayoutVariant;
104
108
  /**
105
109
  * OptixFlow image optimization configuration
106
110
  */
@@ -115,6 +119,6 @@ interface NavbarAnimatedPreviewProps {
115
119
  * menu spans full width with smooth fade-in animations. Mobile view uses a full-screen sheet with
116
120
  * accordion navigation. Ideal for complex SaaS products and developer platforms.
117
121
  */
118
- declare const NavbarAnimatedPreview: ({ className, containerClassName, navClassName, navigationMenuClassName, actionsClassName, logo, logoSlot, logoClassName, menuLinks, navigationSlot, actions, actionsSlot, background, spacing, pattern, patternOpacity, optixFlowConfig, }: NavbarAnimatedPreviewProps) => react_jsx_runtime.JSX.Element;
122
+ declare const NavbarAnimatedPreview: ({ className, containerClassName, navClassName, navigationMenuClassName, actionsClassName, logo, logoSlot, logoClassName, menuLinks, navigationSlot, actions, actionsSlot, layoutVariant, background, spacing, pattern, patternOpacity, optixFlowConfig, }: NavbarAnimatedPreviewProps) => react_jsx_runtime.JSX.Element;
119
123
 
120
124
  export { type AnimatedPreviewLayout, type IFeaturedImageLink, ILinkItem, type IMenuLink, IMenuLinkGroup, LogoConfig, NavbarAnimatedPreview, type NavbarAnimatedPreviewProps };
@@ -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, b as ILinkItem, a as IMenuLinkGroup } from './types-D2b35ylu.js';
5
+ import { L as LogoConfig, b as ILinkItem, a as IMenuLinkGroup, 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';
@@ -101,6 +101,10 @@ interface NavbarAnimatedPreviewProps {
101
101
  * Pattern overlay opacity (0-1)
102
102
  */
103
103
  patternOpacity?: number;
104
+ /**
105
+ * Layout variant for the navbar
106
+ */
107
+ layoutVariant?: NavbarLayoutVariant;
104
108
  /**
105
109
  * OptixFlow image optimization configuration
106
110
  */
@@ -115,6 +119,6 @@ interface NavbarAnimatedPreviewProps {
115
119
  * menu spans full width with smooth fade-in animations. Mobile view uses a full-screen sheet with
116
120
  * accordion navigation. Ideal for complex SaaS products and developer platforms.
117
121
  */
118
- declare const NavbarAnimatedPreview: ({ className, containerClassName, navClassName, navigationMenuClassName, actionsClassName, logo, logoSlot, logoClassName, menuLinks, navigationSlot, actions, actionsSlot, background, spacing, pattern, patternOpacity, optixFlowConfig, }: NavbarAnimatedPreviewProps) => react_jsx_runtime.JSX.Element;
122
+ declare const NavbarAnimatedPreview: ({ className, containerClassName, navClassName, navigationMenuClassName, actionsClassName, logo, logoSlot, logoClassName, menuLinks, navigationSlot, actions, actionsSlot, layoutVariant, background, spacing, pattern, patternOpacity, optixFlowConfig, }: NavbarAnimatedPreviewProps) => react_jsx_runtime.JSX.Element;
119
123
 
120
124
  export { type AnimatedPreviewLayout, type IFeaturedImageLink, ILinkItem, type IMenuLink, IMenuLinkGroup, LogoConfig, NavbarAnimatedPreview, type NavbarAnimatedPreviewProps };
@@ -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 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
@@ -1347,6 +1348,36 @@ var imagePlaceholders = [
1347
1348
  function getLinkUrl(item) {
1348
1349
  return item.href || item.url || "#";
1349
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
+ }
1350
1381
  var MOBILE_BREAKPOINT = 1280;
1351
1382
  var NavbarAnimatedPreview = ({
1352
1383
  className,
@@ -1364,6 +1395,7 @@ var NavbarAnimatedPreview = ({
1364
1395
  navigationSlot,
1365
1396
  actions,
1366
1397
  actionsSlot,
1398
+ layoutVariant = "fullScreenContainerizedLinks",
1367
1399
  background = "white",
1368
1400
  spacing = "none",
1369
1401
  pattern,
@@ -1459,68 +1491,70 @@ var NavbarAnimatedPreview = ({
1459
1491
  `desktop-link-${index}`
1460
1492
  )) });
1461
1493
  };
1462
- 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(
1463
1507
  Section,
1464
1508
  {
1465
1509
  background,
1466
- spacing,
1510
+ spacing: spacingOverride ?? spacing,
1467
1511
  className: cn(
1468
1512
  "pointer-events-auto fixed top-0 z-999 flex w-full items-center justify-center",
1469
- className
1513
+ sectionClasses
1470
1514
  ),
1471
1515
  pattern,
1472
1516
  patternOpacity,
1473
- children: [
1474
- /* @__PURE__ */ jsx(
1475
- 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",
1476
1520
  {
1477
1521
  className: cn(
1478
- "h-20 max-w-full border-b border-border/50 shadow-sm 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)]!",
1479
- navigationMenuClassName
1522
+ "relative z-999 grid w-full grid-cols-2 items-center justify-between gap-8 xl:grid-cols-3"
1480
1523
  ),
1481
- children: /* @__PURE__ */ jsxs(
1482
- "div",
1483
- {
1484
- className: cn(
1485
- "relative z-999 container grid w-full grid-cols-2 items-center justify-between gap-8 xl:grid-cols-3",
1486
- containerClassName
1487
- ),
1488
- children: [
1489
- renderLogo(),
1490
- /* @__PURE__ */ jsx("div", { className: cn("hidden xl:flex", navClassName), children: renderNavigation() }),
1491
- /* @__PURE__ */ jsxs("div", { className: cn("justify-self-end", actionsClassName), children: [
1492
- /* @__PURE__ */ jsx("div", { className: "hidden xl:block", children: renderActions() }),
1493
- /* @__PURE__ */ jsx("div", { className: "xl:hidden", children: /* @__PURE__ */ jsx(
1494
- 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,
1495
1539
  {
1496
- className: "size-11",
1497
- variant: "ghost",
1498
- size: "icon",
1499
- asButton: true,
1500
- onClick: handleMobileMenu,
1501
- children: open ? /* @__PURE__ */ jsx(
1502
- DynamicIcon,
1503
- {
1504
- name: "lucide/x",
1505
- size: 22,
1506
- className: "stroke-foreground"
1507
- }
1508
- ) : /* @__PURE__ */ jsx(
1509
- DynamicIcon,
1510
- {
1511
- name: "lucide/menu",
1512
- size: 22,
1513
- className: "stroke-foreground"
1514
- }
1515
- )
1540
+ name: "lucide/x",
1541
+ size: 22,
1542
+ className: "stroke-foreground"
1516
1543
  }
1517
- ) })
1518
- ] })
1519
- ]
1520
- }
1521
- )
1544
+ ) : /* @__PURE__ */ jsx(
1545
+ DynamicIcon,
1546
+ {
1547
+ name: "lucide/menu",
1548
+ size: 22,
1549
+ className: "stroke-foreground"
1550
+ }
1551
+ )
1552
+ }
1553
+ ) })
1554
+ ] })
1555
+ ]
1522
1556
  }
1523
- ),
1557
+ ) }),
1524
1558
  /* @__PURE__ */ jsx(
1525
1559
  MobileNavigationMenu,
1526
1560
  {
@@ -1530,7 +1564,7 @@ var NavbarAnimatedPreview = ({
1530
1564
  actionsSlot
1531
1565
  }
1532
1566
  )
1533
- ]
1567
+ ] }) })
1534
1568
  }
1535
1569
  );
1536
1570
  };