@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
@@ -986,7 +986,7 @@ function NavigationMenuList({
986
986
  {
987
987
  "data-slot": "navigation-menu-list",
988
988
  className: cn(
989
- "group flex flex-1 list-none items-center justify-center gap-6",
989
+ "group flex flex-1 list-none items-center justify-center gap-2 lg:gap-4 xl:gap-6",
990
990
  className
991
991
  ),
992
992
  ...props
@@ -1026,8 +1026,9 @@ function NavigationMenuTrigger({
1026
1026
  /* @__PURE__ */ jsx(
1027
1027
  DynamicIcon,
1028
1028
  {
1029
+ size: 18,
1029
1030
  name: "lucide/chevron-down",
1030
- className: "relative top-[1px] ml-1 size-2 transition duration-300 group-data-[state=open]:rotate-180",
1031
+ className: "relative top-px opacity-50 transition duration-300 group-data-[state=open]:rotate-180",
1031
1032
  "aria-hidden": "true"
1032
1033
  }
1033
1034
  )
@@ -1067,7 +1068,7 @@ function NavigationMenuViewport({
1067
1068
  {
1068
1069
  "data-slot": "navigation-menu-viewport",
1069
1070
  className: cn(
1070
- "origin-top-center bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border shadow md:w-[var(--radix-navigation-menu-viewport-width)]",
1071
+ "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)",
1071
1072
  className
1072
1073
  ),
1073
1074
  ...props
@@ -1085,7 +1086,7 @@ function NavigationMenuLink({
1085
1086
  {
1086
1087
  "data-slot": "navigation-menu-link",
1087
1088
  className: cn(
1088
- "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",
1089
+ "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",
1089
1090
  className
1090
1091
  ),
1091
1092
  ...props
@@ -1165,6 +1166,36 @@ function SheetTitle({
1165
1166
  // lib/mediaPlaceholders.ts
1166
1167
  var logoPlaceholders = {
1167
1168
  logoMark: "https://cdn.ing/assets/i/r/285975/eud79qeya11q5w6ueyhklueardyx/monochrome-rounded-square-app-icon-circular-emblem.png"};
1169
+
1170
+ // components/blocks/navbars/layout-variant-utils.ts
1171
+ function getNavbarLayoutClasses(layoutVariant = "fullScreenContainerizedLinks", customClasses) {
1172
+ const isFloatingBar = layoutVariant === "floatingBar";
1173
+ const isFullWidthLinks = layoutVariant === "fullScreenFullWidthLinks";
1174
+ return {
1175
+ // Section wrapper classes
1176
+ sectionClasses: cn(
1177
+ "inset-x-0 z-20",
1178
+ isFloatingBar ? "sticky top-4" : "top-0",
1179
+ customClasses?.className
1180
+ ),
1181
+ // Outer container wrapper (only for floating bar)
1182
+ containerWrapperClasses: cn(
1183
+ isFloatingBar && "mx-auto w-full px-2 sm:px-4 lg:px-8 max-w-7xl relative z-10"
1184
+ ),
1185
+ // Inner container classes
1186
+ innerContainerClasses: cn(
1187
+ !isFloatingBar && !isFullWidthLinks && "container",
1188
+ isFullWidthLinks && "mx-auto w-full px-2 sm:px-4 lg:px-8",
1189
+ customClasses?.containerClassName
1190
+ ),
1191
+ // Navigation wrapper classes (for border and shadow)
1192
+ navWrapperClasses: cn(
1193
+ isFloatingBar ? "border border-border/50 shadow-sm rounded-full" : "border-b border-border/50 shadow-sm"
1194
+ ),
1195
+ // Spacing adjustment for Section component
1196
+ spacingOverride: isFloatingBar ? "none" : void 0
1197
+ };
1198
+ }
1168
1199
  var MOBILE_BREAKPOINT = 1024;
1169
1200
  var NavbarDarkIcons = ({
1170
1201
  className,
@@ -1184,6 +1215,7 @@ var NavbarDarkIcons = ({
1184
1215
  authActionsSlot,
1185
1216
  githubUrl = "https://github.com/opensite-ai/opensite-ui",
1186
1217
  githubSlot,
1218
+ layoutVariant = "fullScreenContainerizedLinks",
1187
1219
  background = "white",
1188
1220
  spacing = "none",
1189
1221
  pattern,
@@ -1283,20 +1315,28 @@ var NavbarDarkIcons = ({
1283
1315
  if (!githubUrl) return null;
1284
1316
  return /* @__PURE__ */ jsx(GithubStars, { repoUrl: githubUrl });
1285
1317
  };
1318
+ const {
1319
+ sectionClasses,
1320
+ containerWrapperClasses,
1321
+ innerContainerClasses,
1322
+ navWrapperClasses,
1323
+ spacingOverride
1324
+ } = getNavbarLayoutClasses(layoutVariant, { className, containerClassName });
1286
1325
  return /* @__PURE__ */ jsxs(
1287
1326
  Section,
1288
1327
  {
1289
1328
  background,
1290
- spacing,
1291
- className: cn("dark pointer-events-auto relative z-999", className),
1329
+ spacing: spacingOverride ?? spacing,
1330
+ className: cn("dark pointer-events-auto relative z-999", sectionClasses),
1292
1331
  pattern,
1293
1332
  patternOpacity,
1294
1333
  children: [
1295
- /* @__PURE__ */ jsx("div", { className: cn("container h-16", containerClassName), children: /* @__PURE__ */ jsxs(
1296
- "div",
1334
+ /* @__PURE__ */ jsx("div", { className: containerWrapperClasses, children: /* @__PURE__ */ jsx("div", { className: innerContainerClasses, children: /* @__PURE__ */ jsxs(
1335
+ "nav",
1297
1336
  {
1298
1337
  className: cn(
1299
- "flex h-full items-center justify-between",
1338
+ "flex h-16 items-center justify-between",
1339
+ navWrapperClasses,
1300
1340
  navClassName
1301
1341
  ),
1302
1342
  children: [
@@ -1339,7 +1379,7 @@ var NavbarDarkIcons = ({
1339
1379
  ] })
1340
1380
  ]
1341
1381
  }
1342
- ) }),
1382
+ ) }) }),
1343
1383
  /* @__PURE__ */ jsx(
1344
1384
  MobileNavigationMenu,
1345
1385
  {
@@ -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
@@ -1204,6 +1205,36 @@ function SheetTitle({
1204
1205
  // lib/mediaPlaceholders.ts
1205
1206
  var logoPlaceholders = {
1206
1207
  logoMark: "https://cdn.ing/assets/i/r/285975/eud79qeya11q5w6ueyhklueardyx/monochrome-rounded-square-app-icon-circular-emblem.png"};
1208
+
1209
+ // components/blocks/navbars/layout-variant-utils.ts
1210
+ function getNavbarLayoutClasses(layoutVariant = "fullScreenContainerizedLinks", customClasses) {
1211
+ const isFloatingBar = layoutVariant === "floatingBar";
1212
+ const isFullWidthLinks = layoutVariant === "fullScreenFullWidthLinks";
1213
+ return {
1214
+ // Section wrapper classes
1215
+ sectionClasses: cn(
1216
+ "inset-x-0 z-20",
1217
+ isFloatingBar ? "sticky top-4" : "top-0",
1218
+ customClasses?.className
1219
+ ),
1220
+ // Outer container wrapper (only for floating bar)
1221
+ containerWrapperClasses: cn(
1222
+ isFloatingBar && "mx-auto w-full px-2 sm:px-4 lg:px-8 max-w-7xl relative z-10"
1223
+ ),
1224
+ // Inner container classes
1225
+ innerContainerClasses: cn(
1226
+ !isFloatingBar && !isFullWidthLinks && "container",
1227
+ isFullWidthLinks && "mx-auto w-full px-2 sm:px-4 lg:px-8",
1228
+ customClasses?.containerClassName
1229
+ ),
1230
+ // Navigation wrapper classes (for border and shadow)
1231
+ navWrapperClasses: cn(
1232
+ isFloatingBar ? "border border-border/50 shadow-sm rounded-full" : "border-b border-border/50 shadow-sm"
1233
+ ),
1234
+ // Spacing adjustment for Section component
1235
+ spacingOverride: isFloatingBar ? "none" : void 0
1236
+ };
1237
+ }
1207
1238
  var SubMenuLink = ({
1208
1239
  item,
1209
1240
  optixFlowConfig
@@ -1280,6 +1311,7 @@ var NavbarDropdownMenu = ({
1280
1311
  mobileNavClassName,
1281
1312
  navigationMenuClassName,
1282
1313
  actionsClassName,
1314
+ layoutVariant = "fullScreenContainerizedLinks",
1283
1315
  background = "white",
1284
1316
  spacing = "sm",
1285
1317
  pattern,
@@ -1347,72 +1379,70 @@ var NavbarDropdownMenu = ({
1347
1379
  if (!menu || menu.length === 0) return null;
1348
1380
  return menu.map((item) => renderMobileMenuItem(item, optixFlowConfig));
1349
1381
  };
1382
+ const {
1383
+ sectionClasses,
1384
+ containerWrapperClasses,
1385
+ innerContainerClasses,
1386
+ navWrapperClasses,
1387
+ spacingOverride
1388
+ } = getNavbarLayoutClasses(layoutVariant, { className, containerClassName });
1350
1389
  return /* @__PURE__ */ jsxRuntime.jsx(
1351
1390
  Section,
1352
1391
  {
1353
1392
  background,
1354
- spacing,
1355
- className: cn(className),
1393
+ spacing: spacingOverride ?? spacing,
1394
+ className: sectionClasses,
1356
1395
  pattern,
1357
1396
  patternOpacity,
1358
- children: /* @__PURE__ */ jsxRuntime.jsxs(
1359
- "div",
1360
- {
1361
- className: cn(
1362
- "container border-b border-border/50 shadow-sm",
1363
- containerClassName
1364
- ),
1365
- children: [
1366
- /* @__PURE__ */ jsxRuntime.jsxs(
1367
- "nav",
1397
+ children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: containerWrapperClasses, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn(innerContainerClasses, navWrapperClasses), children: [
1398
+ /* @__PURE__ */ jsxRuntime.jsxs(
1399
+ "nav",
1400
+ {
1401
+ className: cn(
1402
+ "hidden items-center justify-between lg:flex",
1403
+ desktopNavClassName
1404
+ ),
1405
+ children: [
1406
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-6", children: [
1407
+ renderLogo(),
1408
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center", children: /* @__PURE__ */ jsxRuntime.jsx(NavigationMenu, { className: navigationMenuClassName, children: /* @__PURE__ */ jsxRuntime.jsx(NavigationMenuList, { children: renderMenu() }) }) })
1409
+ ] }),
1410
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex gap-2", actionsClassName), children: renderAuthActions() })
1411
+ ]
1412
+ }
1413
+ ),
1414
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("block lg:hidden", mobileNavClassName), children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
1415
+ renderLogo(),
1416
+ /* @__PURE__ */ jsxRuntime.jsxs(Sheet, { children: [
1417
+ /* @__PURE__ */ jsxRuntime.jsx(SheetTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(
1418
+ Pressable,
1368
1419
  {
1369
- className: cn(
1370
- "hidden items-center justify-between lg:flex",
1371
- desktopNavClassName
1372
- ),
1373
- children: [
1374
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-6", children: [
1375
- renderLogo(),
1376
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center", children: /* @__PURE__ */ jsxRuntime.jsx(NavigationMenu, { className: navigationMenuClassName, children: /* @__PURE__ */ jsxRuntime.jsx(NavigationMenuList, { children: renderMenu() }) }) })
1377
- ] }),
1378
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex gap-2", actionsClassName), children: renderAuthActions() })
1379
- ]
1420
+ variant: "outline",
1421
+ size: "icon",
1422
+ asButton: true,
1423
+ onClick: () => {
1424
+ },
1425
+ children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/menu", size: 16 })
1380
1426
  }
1381
- ),
1382
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("block lg:hidden", mobileNavClassName), children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
1383
- renderLogo(),
1384
- /* @__PURE__ */ jsxRuntime.jsxs(Sheet, { children: [
1385
- /* @__PURE__ */ jsxRuntime.jsx(SheetTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(
1386
- Pressable,
1427
+ ) }),
1428
+ /* @__PURE__ */ jsxRuntime.jsxs(SheetContent, { className: "overflow-y-auto", children: [
1429
+ /* @__PURE__ */ jsxRuntime.jsx(SheetHeader, { children: /* @__PURE__ */ jsxRuntime.jsx(SheetTitle, { children: renderLogo() }) }),
1430
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-6 p-4", children: [
1431
+ /* @__PURE__ */ jsxRuntime.jsx(
1432
+ Accordion,
1387
1433
  {
1388
- variant: "outline",
1389
- size: "icon",
1390
- asButton: true,
1391
- onClick: () => {
1392
- },
1393
- children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/menu", size: 16 })
1434
+ type: "single",
1435
+ collapsible: true,
1436
+ className: "flex w-full flex-col gap-4",
1437
+ children: renderMobileMenu()
1394
1438
  }
1395
- ) }),
1396
- /* @__PURE__ */ jsxRuntime.jsxs(SheetContent, { className: "overflow-y-auto", children: [
1397
- /* @__PURE__ */ jsxRuntime.jsx(SheetHeader, { children: /* @__PURE__ */ jsxRuntime.jsx(SheetTitle, { children: renderLogo() }) }),
1398
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-6 p-4", children: [
1399
- /* @__PURE__ */ jsxRuntime.jsx(
1400
- Accordion,
1401
- {
1402
- type: "single",
1403
- collapsible: true,
1404
- className: "flex w-full flex-col gap-4",
1405
- children: renderMobileMenu()
1406
- }
1407
- ),
1408
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex flex-col gap-3", actionsClassName), children: renderAuthActions() })
1409
- ] })
1410
- ] })
1439
+ ),
1440
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex flex-col gap-3", actionsClassName), children: renderAuthActions() })
1411
1441
  ] })
1412
- ] }) })
1413
- ]
1414
- }
1415
- )
1442
+ ] })
1443
+ ] })
1444
+ ] }) })
1445
+ ] }) })
1416
1446
  }
1417
1447
  );
1418
1448
  };
@@ -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 NavbarDropdownMenuProps {
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
  */
@@ -103,6 +107,6 @@ interface NavbarDropdownMenuProps {
103
107
  * menu with accordion navigation on mobile. Includes login and signup call-to-action buttons.
104
108
  * The dropdown menus display icons and descriptions for each submenu item.
105
109
  */
106
- declare const NavbarDropdownMenu: ({ logo, logoSlot, logoClassName, menu, menuSlot, authActions, authActionsSlot, className, containerClassName, desktopNavClassName, mobileNavClassName, navigationMenuClassName, actionsClassName, background, spacing, pattern, patternOpacity, optixFlowConfig, }: NavbarDropdownMenuProps) => react_jsx_runtime.JSX.Element;
110
+ declare const NavbarDropdownMenu: ({ logo, logoSlot, logoClassName, menu, menuSlot, authActions, authActionsSlot, className, containerClassName, desktopNavClassName, mobileNavClassName, navigationMenuClassName, actionsClassName, layoutVariant, background, spacing, pattern, patternOpacity, optixFlowConfig, }: NavbarDropdownMenuProps) => react_jsx_runtime.JSX.Element;
107
111
 
108
112
  export { NavbarDropdownMenu, type NavbarDropdownMenuProps };
@@ -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 NavbarDropdownMenuProps {
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
  */
@@ -103,6 +107,6 @@ interface NavbarDropdownMenuProps {
103
107
  * menu with accordion navigation on mobile. Includes login and signup call-to-action buttons.
104
108
  * The dropdown menus display icons and descriptions for each submenu item.
105
109
  */
106
- declare const NavbarDropdownMenu: ({ logo, logoSlot, logoClassName, menu, menuSlot, authActions, authActionsSlot, className, containerClassName, desktopNavClassName, mobileNavClassName, navigationMenuClassName, actionsClassName, background, spacing, pattern, patternOpacity, optixFlowConfig, }: NavbarDropdownMenuProps) => react_jsx_runtime.JSX.Element;
110
+ declare const NavbarDropdownMenu: ({ logo, logoSlot, logoClassName, menu, menuSlot, authActions, authActionsSlot, className, containerClassName, desktopNavClassName, mobileNavClassName, navigationMenuClassName, actionsClassName, layoutVariant, background, spacing, pattern, patternOpacity, optixFlowConfig, }: NavbarDropdownMenuProps) => react_jsx_runtime.JSX.Element;
107
111
 
108
112
  export { NavbarDropdownMenu, type NavbarDropdownMenuProps };
@@ -986,7 +986,7 @@ function NavigationMenuList({
986
986
  {
987
987
  "data-slot": "navigation-menu-list",
988
988
  className: cn(
989
- "group flex flex-1 list-none items-center justify-center gap-6",
989
+ "group flex flex-1 list-none items-center justify-center gap-2 lg:gap-4 xl:gap-6",
990
990
  className
991
991
  ),
992
992
  ...props
@@ -1026,8 +1026,9 @@ function NavigationMenuTrigger({
1026
1026
  /* @__PURE__ */ jsx(
1027
1027
  DynamicIcon,
1028
1028
  {
1029
+ size: 18,
1029
1030
  name: "lucide/chevron-down",
1030
- className: "relative top-[1px] ml-1 size-2 transition duration-300 group-data-[state=open]:rotate-180",
1031
+ className: "relative top-px opacity-50 transition duration-300 group-data-[state=open]:rotate-180",
1031
1032
  "aria-hidden": "true"
1032
1033
  }
1033
1034
  )
@@ -1067,7 +1068,7 @@ function NavigationMenuViewport({
1067
1068
  {
1068
1069
  "data-slot": "navigation-menu-viewport",
1069
1070
  className: cn(
1070
- "origin-top-center bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border shadow md:w-[var(--radix-navigation-menu-viewport-width)]",
1071
+ "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)",
1071
1072
  className
1072
1073
  ),
1073
1074
  ...props
@@ -1085,7 +1086,7 @@ function NavigationMenuLink({
1085
1086
  {
1086
1087
  "data-slot": "navigation-menu-link",
1087
1088
  className: cn(
1088
- "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",
1089
+ "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",
1089
1090
  className
1090
1091
  ),
1091
1092
  ...props
@@ -1180,6 +1181,36 @@ function SheetTitle({
1180
1181
  // lib/mediaPlaceholders.ts
1181
1182
  var logoPlaceholders = {
1182
1183
  logoMark: "https://cdn.ing/assets/i/r/285975/eud79qeya11q5w6ueyhklueardyx/monochrome-rounded-square-app-icon-circular-emblem.png"};
1184
+
1185
+ // components/blocks/navbars/layout-variant-utils.ts
1186
+ function getNavbarLayoutClasses(layoutVariant = "fullScreenContainerizedLinks", customClasses) {
1187
+ const isFloatingBar = layoutVariant === "floatingBar";
1188
+ const isFullWidthLinks = layoutVariant === "fullScreenFullWidthLinks";
1189
+ return {
1190
+ // Section wrapper classes
1191
+ sectionClasses: cn(
1192
+ "inset-x-0 z-20",
1193
+ isFloatingBar ? "sticky top-4" : "top-0",
1194
+ customClasses?.className
1195
+ ),
1196
+ // Outer container wrapper (only for floating bar)
1197
+ containerWrapperClasses: cn(
1198
+ isFloatingBar && "mx-auto w-full px-2 sm:px-4 lg:px-8 max-w-7xl relative z-10"
1199
+ ),
1200
+ // Inner container classes
1201
+ innerContainerClasses: cn(
1202
+ !isFloatingBar && !isFullWidthLinks && "container",
1203
+ isFullWidthLinks && "mx-auto w-full px-2 sm:px-4 lg:px-8",
1204
+ customClasses?.containerClassName
1205
+ ),
1206
+ // Navigation wrapper classes (for border and shadow)
1207
+ navWrapperClasses: cn(
1208
+ isFloatingBar ? "border border-border/50 shadow-sm rounded-full" : "border-b border-border/50 shadow-sm"
1209
+ ),
1210
+ // Spacing adjustment for Section component
1211
+ spacingOverride: isFloatingBar ? "none" : void 0
1212
+ };
1213
+ }
1183
1214
  var SubMenuLink = ({
1184
1215
  item,
1185
1216
  optixFlowConfig
@@ -1256,6 +1287,7 @@ var NavbarDropdownMenu = ({
1256
1287
  mobileNavClassName,
1257
1288
  navigationMenuClassName,
1258
1289
  actionsClassName,
1290
+ layoutVariant = "fullScreenContainerizedLinks",
1259
1291
  background = "white",
1260
1292
  spacing = "sm",
1261
1293
  pattern,
@@ -1323,72 +1355,70 @@ var NavbarDropdownMenu = ({
1323
1355
  if (!menu || menu.length === 0) return null;
1324
1356
  return menu.map((item) => renderMobileMenuItem(item, optixFlowConfig));
1325
1357
  };
1358
+ const {
1359
+ sectionClasses,
1360
+ containerWrapperClasses,
1361
+ innerContainerClasses,
1362
+ navWrapperClasses,
1363
+ spacingOverride
1364
+ } = getNavbarLayoutClasses(layoutVariant, { className, containerClassName });
1326
1365
  return /* @__PURE__ */ jsx(
1327
1366
  Section,
1328
1367
  {
1329
1368
  background,
1330
- spacing,
1331
- className: cn(className),
1369
+ spacing: spacingOverride ?? spacing,
1370
+ className: sectionClasses,
1332
1371
  pattern,
1333
1372
  patternOpacity,
1334
- children: /* @__PURE__ */ jsxs(
1335
- "div",
1336
- {
1337
- className: cn(
1338
- "container border-b border-border/50 shadow-sm",
1339
- containerClassName
1340
- ),
1341
- children: [
1342
- /* @__PURE__ */ jsxs(
1343
- "nav",
1373
+ children: /* @__PURE__ */ jsx("div", { className: containerWrapperClasses, children: /* @__PURE__ */ jsxs("div", { className: cn(innerContainerClasses, navWrapperClasses), children: [
1374
+ /* @__PURE__ */ jsxs(
1375
+ "nav",
1376
+ {
1377
+ className: cn(
1378
+ "hidden items-center justify-between lg:flex",
1379
+ desktopNavClassName
1380
+ ),
1381
+ children: [
1382
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-6", children: [
1383
+ renderLogo(),
1384
+ /* @__PURE__ */ jsx("div", { className: "flex items-center", children: /* @__PURE__ */ jsx(NavigationMenu, { className: navigationMenuClassName, children: /* @__PURE__ */ jsx(NavigationMenuList, { children: renderMenu() }) }) })
1385
+ ] }),
1386
+ /* @__PURE__ */ jsx("div", { className: cn("flex gap-2", actionsClassName), children: renderAuthActions() })
1387
+ ]
1388
+ }
1389
+ ),
1390
+ /* @__PURE__ */ jsx("div", { className: cn("block lg:hidden", mobileNavClassName), children: /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between", children: [
1391
+ renderLogo(),
1392
+ /* @__PURE__ */ jsxs(Sheet, { children: [
1393
+ /* @__PURE__ */ jsx(SheetTrigger, { asChild: true, children: /* @__PURE__ */ jsx(
1394
+ Pressable,
1344
1395
  {
1345
- className: cn(
1346
- "hidden items-center justify-between lg:flex",
1347
- desktopNavClassName
1348
- ),
1349
- children: [
1350
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-6", children: [
1351
- renderLogo(),
1352
- /* @__PURE__ */ jsx("div", { className: "flex items-center", children: /* @__PURE__ */ jsx(NavigationMenu, { className: navigationMenuClassName, children: /* @__PURE__ */ jsx(NavigationMenuList, { children: renderMenu() }) }) })
1353
- ] }),
1354
- /* @__PURE__ */ jsx("div", { className: cn("flex gap-2", actionsClassName), children: renderAuthActions() })
1355
- ]
1396
+ variant: "outline",
1397
+ size: "icon",
1398
+ asButton: true,
1399
+ onClick: () => {
1400
+ },
1401
+ children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/menu", size: 16 })
1356
1402
  }
1357
- ),
1358
- /* @__PURE__ */ jsx("div", { className: cn("block lg:hidden", mobileNavClassName), children: /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between", children: [
1359
- renderLogo(),
1360
- /* @__PURE__ */ jsxs(Sheet, { children: [
1361
- /* @__PURE__ */ jsx(SheetTrigger, { asChild: true, children: /* @__PURE__ */ jsx(
1362
- Pressable,
1403
+ ) }),
1404
+ /* @__PURE__ */ jsxs(SheetContent, { className: "overflow-y-auto", children: [
1405
+ /* @__PURE__ */ jsx(SheetHeader, { children: /* @__PURE__ */ jsx(SheetTitle, { children: renderLogo() }) }),
1406
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-6 p-4", children: [
1407
+ /* @__PURE__ */ jsx(
1408
+ Accordion,
1363
1409
  {
1364
- variant: "outline",
1365
- size: "icon",
1366
- asButton: true,
1367
- onClick: () => {
1368
- },
1369
- children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/menu", size: 16 })
1410
+ type: "single",
1411
+ collapsible: true,
1412
+ className: "flex w-full flex-col gap-4",
1413
+ children: renderMobileMenu()
1370
1414
  }
1371
- ) }),
1372
- /* @__PURE__ */ jsxs(SheetContent, { className: "overflow-y-auto", children: [
1373
- /* @__PURE__ */ jsx(SheetHeader, { children: /* @__PURE__ */ jsx(SheetTitle, { children: renderLogo() }) }),
1374
- /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-6 p-4", children: [
1375
- /* @__PURE__ */ jsx(
1376
- Accordion,
1377
- {
1378
- type: "single",
1379
- collapsible: true,
1380
- className: "flex w-full flex-col gap-4",
1381
- children: renderMobileMenu()
1382
- }
1383
- ),
1384
- /* @__PURE__ */ jsx("div", { className: cn("flex flex-col gap-3", actionsClassName), children: renderAuthActions() })
1385
- ] })
1386
- ] })
1415
+ ),
1416
+ /* @__PURE__ */ jsx("div", { className: cn("flex flex-col gap-3", actionsClassName), children: renderAuthActions() })
1387
1417
  ] })
1388
- ] }) })
1389
- ]
1390
- }
1391
- )
1418
+ ] })
1419
+ ] })
1420
+ ] }) })
1421
+ ] }) })
1392
1422
  }
1393
1423
  );
1394
1424
  };