@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
@@ -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 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,73 +1340,71 @@ 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(
1320
- "div",
1321
- {
1322
- className: cn(
1323
- "container border-b border-border/50 shadow-sm",
1324
- containerClassName
1325
- ),
1326
- children: [
1327
- /* @__PURE__ */ jsxRuntime.jsxs(
1328
- "nav",
1358
+ children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: containerWrapperClasses, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn(innerContainerClasses, navWrapperClasses), children: [
1359
+ /* @__PURE__ */ jsxRuntime.jsxs(
1360
+ "nav",
1361
+ {
1362
+ className: cn("hidden justify-between lg:flex", desktopNavClassName),
1363
+ children: [
1364
+ renderLogo(),
1365
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-6", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center", children: /* @__PURE__ */ jsxRuntime.jsx(
1366
+ NavigationMenuWithoutViewport,
1367
+ {
1368
+ className: navigationMenuClassName,
1369
+ children: /* @__PURE__ */ jsxRuntime.jsx(NavigationMenuList, { className: "relative", children: renderMenu() })
1370
+ }
1371
+ ) }) }),
1372
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex gap-2", actionsClassName), children: renderAuthActions() })
1373
+ ]
1374
+ }
1375
+ ),
1376
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("block lg:hidden", mobileNavClassName), children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
1377
+ renderLogo(),
1378
+ /* @__PURE__ */ jsxRuntime.jsxs(Sheet, { children: [
1379
+ /* @__PURE__ */ jsxRuntime.jsx(SheetTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(
1380
+ Pressable,
1329
1381
  {
1330
- className: cn("hidden justify-between lg:flex", desktopNavClassName),
1331
- children: [
1332
- renderLogo(),
1333
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-6", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center", children: /* @__PURE__ */ jsxRuntime.jsx(
1334
- NavigationMenuWithoutViewport,
1335
- {
1336
- className: navigationMenuClassName,
1337
- children: /* @__PURE__ */ jsxRuntime.jsx(NavigationMenuList, { className: "relative", children: renderMenu() })
1338
- }
1339
- ) }) }),
1340
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex gap-2", actionsClassName), children: renderAuthActions() })
1341
- ]
1382
+ variant: "outline",
1383
+ size: "icon",
1384
+ asButton: true,
1385
+ onClick: () => {
1386
+ },
1387
+ children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/menu", size: 16 })
1342
1388
  }
1343
- ),
1344
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("block lg:hidden", mobileNavClassName), children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
1345
- renderLogo(),
1346
- /* @__PURE__ */ jsxRuntime.jsxs(Sheet, { children: [
1347
- /* @__PURE__ */ jsxRuntime.jsx(SheetTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(
1348
- Pressable,
1389
+ ) }),
1390
+ /* @__PURE__ */ jsxRuntime.jsxs(SheetContent, { className: "overflow-y-auto", children: [
1391
+ /* @__PURE__ */ jsxRuntime.jsx(SheetHeader, { children: /* @__PURE__ */ jsxRuntime.jsx(SheetTitle, { children: renderLogo() }) }),
1392
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-6 p-4", children: [
1393
+ /* @__PURE__ */ jsxRuntime.jsx(
1394
+ Accordion,
1349
1395
  {
1350
- variant: "outline",
1351
- size: "icon",
1352
- asButton: true,
1353
- onClick: () => {
1354
- },
1355
- children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/menu", size: 16 })
1396
+ type: "single",
1397
+ collapsible: true,
1398
+ className: "flex w-full flex-col gap-4",
1399
+ children: renderMobileMenu()
1356
1400
  }
1357
- ) }),
1358
- /* @__PURE__ */ jsxRuntime.jsxs(SheetContent, { className: "overflow-y-auto", children: [
1359
- /* @__PURE__ */ jsxRuntime.jsx(SheetHeader, { children: /* @__PURE__ */ jsxRuntime.jsx(SheetTitle, { children: renderLogo() }) }),
1360
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-6 p-4", children: [
1361
- /* @__PURE__ */ jsxRuntime.jsx(
1362
- Accordion,
1363
- {
1364
- type: "single",
1365
- collapsible: true,
1366
- className: "flex w-full flex-col gap-4",
1367
- children: renderMobileMenu()
1368
- }
1369
- ),
1370
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex flex-col gap-3", actionsClassName), children: renderAuthActions() })
1371
- ] })
1372
- ] })
1401
+ ),
1402
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex flex-col gap-3", actionsClassName), children: renderAuthActions() })
1373
1403
  ] })
1374
- ] }) })
1375
- ]
1376
- }
1377
- )
1404
+ ] })
1405
+ ] })
1406
+ ] }) })
1407
+ ] }) })
1378
1408
  }
1379
1409
  );
1380
1410
  };
@@ -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';
@@ -91,6 +91,10 @@ interface NavbarCenteredMenuProps {
91
91
  * Pattern overlay opacity (0-1)
92
92
  */
93
93
  patternOpacity?: number;
94
+ /**
95
+ * Layout variant for the navbar
96
+ */
97
+ layoutVariant?: NavbarLayoutVariant;
94
98
  /**
95
99
  * OptixFlow image optimization configuration
96
100
  */
@@ -104,6 +108,6 @@ interface NavbarCenteredMenuProps {
104
108
  * slide-out sheet with accordion navigation. The dropdowns are centered under their
105
109
  * trigger elements for a balanced visual appearance.
106
110
  */
107
- 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;
108
112
 
109
113
  export { NavbarCenteredMenu, type NavbarCenteredMenuProps };
@@ -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';
@@ -91,6 +91,10 @@ interface NavbarCenteredMenuProps {
91
91
  * Pattern overlay opacity (0-1)
92
92
  */
93
93
  patternOpacity?: number;
94
+ /**
95
+ * Layout variant for the navbar
96
+ */
97
+ layoutVariant?: NavbarLayoutVariant;
94
98
  /**
95
99
  * OptixFlow image optimization configuration
96
100
  */
@@ -104,6 +108,6 @@ interface NavbarCenteredMenuProps {
104
108
  * slide-out sheet with accordion navigation. The dropdowns are centered under their
105
109
  * trigger elements for a balanced visual appearance.
106
110
  */
107
- 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;
108
112
 
109
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 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,73 +1316,71 @@ 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(
1296
- "div",
1297
- {
1298
- className: cn(
1299
- "container border-b border-border/50 shadow-sm",
1300
- containerClassName
1301
- ),
1302
- children: [
1303
- /* @__PURE__ */ jsxs(
1304
- "nav",
1334
+ children: /* @__PURE__ */ jsx("div", { className: containerWrapperClasses, children: /* @__PURE__ */ jsxs("div", { className: cn(innerContainerClasses, navWrapperClasses), children: [
1335
+ /* @__PURE__ */ jsxs(
1336
+ "nav",
1337
+ {
1338
+ className: cn("hidden justify-between lg:flex", desktopNavClassName),
1339
+ children: [
1340
+ renderLogo(),
1341
+ /* @__PURE__ */ jsx("div", { className: "flex items-center gap-6", children: /* @__PURE__ */ jsx("div", { className: "flex items-center", children: /* @__PURE__ */ jsx(
1342
+ NavigationMenuWithoutViewport,
1343
+ {
1344
+ className: navigationMenuClassName,
1345
+ children: /* @__PURE__ */ jsx(NavigationMenuList, { className: "relative", children: renderMenu() })
1346
+ }
1347
+ ) }) }),
1348
+ /* @__PURE__ */ jsx("div", { className: cn("flex gap-2", actionsClassName), children: renderAuthActions() })
1349
+ ]
1350
+ }
1351
+ ),
1352
+ /* @__PURE__ */ jsx("div", { className: cn("block lg:hidden", mobileNavClassName), children: /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between", children: [
1353
+ renderLogo(),
1354
+ /* @__PURE__ */ jsxs(Sheet, { children: [
1355
+ /* @__PURE__ */ jsx(SheetTrigger, { asChild: true, children: /* @__PURE__ */ jsx(
1356
+ Pressable,
1305
1357
  {
1306
- className: cn("hidden justify-between lg:flex", desktopNavClassName),
1307
- children: [
1308
- renderLogo(),
1309
- /* @__PURE__ */ jsx("div", { className: "flex items-center gap-6", children: /* @__PURE__ */ jsx("div", { className: "flex items-center", children: /* @__PURE__ */ jsx(
1310
- NavigationMenuWithoutViewport,
1311
- {
1312
- className: navigationMenuClassName,
1313
- children: /* @__PURE__ */ jsx(NavigationMenuList, { className: "relative", children: renderMenu() })
1314
- }
1315
- ) }) }),
1316
- /* @__PURE__ */ jsx("div", { className: cn("flex gap-2", actionsClassName), children: renderAuthActions() })
1317
- ]
1358
+ variant: "outline",
1359
+ size: "icon",
1360
+ asButton: true,
1361
+ onClick: () => {
1362
+ },
1363
+ children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/menu", size: 16 })
1318
1364
  }
1319
- ),
1320
- /* @__PURE__ */ jsx("div", { className: cn("block lg:hidden", mobileNavClassName), children: /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between", children: [
1321
- renderLogo(),
1322
- /* @__PURE__ */ jsxs(Sheet, { children: [
1323
- /* @__PURE__ */ jsx(SheetTrigger, { asChild: true, children: /* @__PURE__ */ jsx(
1324
- Pressable,
1365
+ ) }),
1366
+ /* @__PURE__ */ jsxs(SheetContent, { className: "overflow-y-auto", children: [
1367
+ /* @__PURE__ */ jsx(SheetHeader, { children: /* @__PURE__ */ jsx(SheetTitle, { children: renderLogo() }) }),
1368
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-6 p-4", children: [
1369
+ /* @__PURE__ */ jsx(
1370
+ Accordion,
1325
1371
  {
1326
- variant: "outline",
1327
- size: "icon",
1328
- asButton: true,
1329
- onClick: () => {
1330
- },
1331
- children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/menu", size: 16 })
1372
+ type: "single",
1373
+ collapsible: true,
1374
+ className: "flex w-full flex-col gap-4",
1375
+ children: renderMobileMenu()
1332
1376
  }
1333
- ) }),
1334
- /* @__PURE__ */ jsxs(SheetContent, { className: "overflow-y-auto", children: [
1335
- /* @__PURE__ */ jsx(SheetHeader, { children: /* @__PURE__ */ jsx(SheetTitle, { children: renderLogo() }) }),
1336
- /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-6 p-4", children: [
1337
- /* @__PURE__ */ jsx(
1338
- Accordion,
1339
- {
1340
- type: "single",
1341
- collapsible: true,
1342
- className: "flex w-full flex-col gap-4",
1343
- children: renderMobileMenu()
1344
- }
1345
- ),
1346
- /* @__PURE__ */ jsx("div", { className: cn("flex flex-col gap-3", actionsClassName), children: renderAuthActions() })
1347
- ] })
1348
- ] })
1377
+ ),
1378
+ /* @__PURE__ */ jsx("div", { className: cn("flex flex-col gap-3", actionsClassName), children: renderAuthActions() })
1349
1379
  ] })
1350
- ] }) })
1351
- ]
1352
- }
1353
- )
1380
+ ] })
1381
+ ] })
1382
+ ] }) })
1383
+ ] }) })
1354
1384
  }
1355
1385
  );
1356
1386
  };
@@ -1010,7 +1010,7 @@ function NavigationMenuList({
1010
1010
  {
1011
1011
  "data-slot": "navigation-menu-list",
1012
1012
  className: cn(
1013
- "group flex flex-1 list-none items-center justify-center gap-6",
1013
+ "group flex flex-1 list-none items-center justify-center gap-2 lg:gap-4 xl:gap-6",
1014
1014
  className
1015
1015
  ),
1016
1016
  ...props
@@ -1050,8 +1050,9 @@ function NavigationMenuTrigger({
1050
1050
  /* @__PURE__ */ jsxRuntime.jsx(
1051
1051
  DynamicIcon,
1052
1052
  {
1053
+ size: 18,
1053
1054
  name: "lucide/chevron-down",
1054
- className: "relative top-[1px] ml-1 size-2 transition duration-300 group-data-[state=open]:rotate-180",
1055
+ className: "relative top-px opacity-50 transition duration-300 group-data-[state=open]:rotate-180",
1055
1056
  "aria-hidden": "true"
1056
1057
  }
1057
1058
  )
@@ -1091,7 +1092,7 @@ function NavigationMenuViewport({
1091
1092
  {
1092
1093
  "data-slot": "navigation-menu-viewport",
1093
1094
  className: cn(
1094
- "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)]",
1095
+ "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)",
1095
1096
  className
1096
1097
  ),
1097
1098
  ...props
@@ -1109,7 +1110,7 @@ function NavigationMenuLink({
1109
1110
  {
1110
1111
  "data-slot": "navigation-menu-link",
1111
1112
  className: cn(
1112
- "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",
1113
+ "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",
1113
1114
  className
1114
1115
  ),
1115
1116
  ...props
@@ -1189,6 +1190,36 @@ function SheetTitle({
1189
1190
  // lib/mediaPlaceholders.ts
1190
1191
  var logoPlaceholders = {
1191
1192
  logoMark: "https://cdn.ing/assets/i/r/285975/eud79qeya11q5w6ueyhklueardyx/monochrome-rounded-square-app-icon-circular-emblem.png"};
1193
+
1194
+ // components/blocks/navbars/layout-variant-utils.ts
1195
+ function getNavbarLayoutClasses(layoutVariant = "fullScreenContainerizedLinks", customClasses) {
1196
+ const isFloatingBar = layoutVariant === "floatingBar";
1197
+ const isFullWidthLinks = layoutVariant === "fullScreenFullWidthLinks";
1198
+ return {
1199
+ // Section wrapper classes
1200
+ sectionClasses: cn(
1201
+ "inset-x-0 z-20",
1202
+ isFloatingBar ? "sticky top-4" : "top-0",
1203
+ customClasses?.className
1204
+ ),
1205
+ // Outer container wrapper (only for floating bar)
1206
+ containerWrapperClasses: cn(
1207
+ isFloatingBar && "mx-auto w-full px-2 sm:px-4 lg:px-8 max-w-7xl relative z-10"
1208
+ ),
1209
+ // Inner container classes
1210
+ innerContainerClasses: cn(
1211
+ !isFloatingBar && !isFullWidthLinks && "container",
1212
+ isFullWidthLinks && "mx-auto w-full px-2 sm:px-4 lg:px-8",
1213
+ customClasses?.containerClassName
1214
+ ),
1215
+ // Navigation wrapper classes (for border and shadow)
1216
+ navWrapperClasses: cn(
1217
+ isFloatingBar ? "border border-border/50 shadow-sm rounded-full" : "border-b border-border/50 shadow-sm"
1218
+ ),
1219
+ // Spacing adjustment for Section component
1220
+ spacingOverride: isFloatingBar ? "none" : void 0
1221
+ };
1222
+ }
1192
1223
  var MOBILE_BREAKPOINT = 1024;
1193
1224
  var NavbarDarkIcons = ({
1194
1225
  className,
@@ -1208,6 +1239,7 @@ var NavbarDarkIcons = ({
1208
1239
  authActionsSlot,
1209
1240
  githubUrl = "https://github.com/opensite-ai/opensite-ui",
1210
1241
  githubSlot,
1242
+ layoutVariant = "fullScreenContainerizedLinks",
1211
1243
  background = "white",
1212
1244
  spacing = "none",
1213
1245
  pattern,
@@ -1307,20 +1339,28 @@ var NavbarDarkIcons = ({
1307
1339
  if (!githubUrl) return null;
1308
1340
  return /* @__PURE__ */ jsxRuntime.jsx(GithubStars, { repoUrl: githubUrl });
1309
1341
  };
1342
+ const {
1343
+ sectionClasses,
1344
+ containerWrapperClasses,
1345
+ innerContainerClasses,
1346
+ navWrapperClasses,
1347
+ spacingOverride
1348
+ } = getNavbarLayoutClasses(layoutVariant, { className, containerClassName });
1310
1349
  return /* @__PURE__ */ jsxRuntime.jsxs(
1311
1350
  Section,
1312
1351
  {
1313
1352
  background,
1314
- spacing,
1315
- className: cn("dark pointer-events-auto relative z-999", className),
1353
+ spacing: spacingOverride ?? spacing,
1354
+ className: cn("dark pointer-events-auto relative z-999", sectionClasses),
1316
1355
  pattern,
1317
1356
  patternOpacity,
1318
1357
  children: [
1319
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("container h-16", containerClassName), children: /* @__PURE__ */ jsxRuntime.jsxs(
1320
- "div",
1358
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: containerWrapperClasses, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: innerContainerClasses, children: /* @__PURE__ */ jsxRuntime.jsxs(
1359
+ "nav",
1321
1360
  {
1322
1361
  className: cn(
1323
- "flex h-full items-center justify-between",
1362
+ "flex h-16 items-center justify-between",
1363
+ navWrapperClasses,
1324
1364
  navClassName
1325
1365
  ),
1326
1366
  children: [
@@ -1363,7 +1403,7 @@ var NavbarDarkIcons = ({
1363
1403
  ] })
1364
1404
  ]
1365
1405
  }
1366
- ) }),
1406
+ ) }) }),
1367
1407
  /* @__PURE__ */ jsxRuntime.jsx(
1368
1408
  MobileNavigationMenu,
1369
1409
  {
@@ -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';
@@ -97,6 +97,10 @@ interface NavbarDarkIconsProps {
97
97
  * Pattern overlay opacity (0-1)
98
98
  */
99
99
  patternOpacity?: number;
100
+ /**
101
+ * Layout variant for the navbar
102
+ */
103
+ layoutVariant?: NavbarLayoutVariant;
100
104
  /**
101
105
  * OptixFlow image optimization configuration
102
106
  */
@@ -110,6 +114,6 @@ interface NavbarDarkIconsProps {
110
114
  * view uses a full-screen dark sheet with accordion navigation. Ideal for developer
111
115
  * tools, open-source projects, and tech-focused applications.
112
116
  */
113
- declare const NavbarDarkIcons: ({ className, containerClassName, navClassName, navigationMenuClassName, actionsClassName, logo, logoSlot, logoClassName, navigation, navigationSlot, authActions, authActionsSlot, githubUrl, githubSlot, background, spacing, pattern, patternOpacity, optixFlowConfig, }: NavbarDarkIconsProps) => react_jsx_runtime.JSX.Element;
117
+ declare const NavbarDarkIcons: ({ className, containerClassName, navClassName, navigationMenuClassName, actionsClassName, logo, logoSlot, logoClassName, navigation, navigationSlot, authActions, authActionsSlot, githubUrl, githubSlot, layoutVariant, background, spacing, pattern, patternOpacity, optixFlowConfig, }: NavbarDarkIconsProps) => react_jsx_runtime.JSX.Element;
114
118
 
115
119
  export { NavbarDarkIcons, type NavbarDarkIconsProps };
@@ -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';
@@ -97,6 +97,10 @@ interface NavbarDarkIconsProps {
97
97
  * Pattern overlay opacity (0-1)
98
98
  */
99
99
  patternOpacity?: number;
100
+ /**
101
+ * Layout variant for the navbar
102
+ */
103
+ layoutVariant?: NavbarLayoutVariant;
100
104
  /**
101
105
  * OptixFlow image optimization configuration
102
106
  */
@@ -110,6 +114,6 @@ interface NavbarDarkIconsProps {
110
114
  * view uses a full-screen dark sheet with accordion navigation. Ideal for developer
111
115
  * tools, open-source projects, and tech-focused applications.
112
116
  */
113
- declare const NavbarDarkIcons: ({ className, containerClassName, navClassName, navigationMenuClassName, actionsClassName, logo, logoSlot, logoClassName, navigation, navigationSlot, authActions, authActionsSlot, githubUrl, githubSlot, background, spacing, pattern, patternOpacity, optixFlowConfig, }: NavbarDarkIconsProps) => react_jsx_runtime.JSX.Element;
117
+ declare const NavbarDarkIcons: ({ className, containerClassName, navClassName, navigationMenuClassName, actionsClassName, logo, logoSlot, logoClassName, navigation, navigationSlot, authActions, authActionsSlot, githubUrl, githubSlot, layoutVariant, background, spacing, pattern, patternOpacity, optixFlowConfig, }: NavbarDarkIconsProps) => react_jsx_runtime.JSX.Element;
114
118
 
115
119
  export { NavbarDarkIcons, type NavbarDarkIconsProps };