@opensite/ui 0.4.4 → 0.4.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. package/dist/navbar-animated-preview.cjs +97 -58
  2. package/dist/navbar-animated-preview.d.cts +9 -64
  3. package/dist/navbar-animated-preview.d.ts +9 -64
  4. package/dist/navbar-animated-preview.js +97 -58
  5. package/dist/navbar-centered-menu.cjs +46 -7
  6. package/dist/navbar-centered-menu.d.cts +7 -11
  7. package/dist/navbar-centered-menu.d.ts +7 -11
  8. package/dist/navbar-centered-menu.js +46 -7
  9. package/dist/navbar-dark-icons.cjs +50 -10
  10. package/dist/navbar-dark-icons.d.cts +6 -11
  11. package/dist/navbar-dark-icons.d.ts +6 -11
  12. package/dist/navbar-dark-icons.js +50 -10
  13. package/dist/navbar-dropdown-menu.cjs +47 -8
  14. package/dist/navbar-dropdown-menu.d.cts +8 -12
  15. package/dist/navbar-dropdown-menu.d.ts +8 -12
  16. package/dist/navbar-dropdown-menu.js +47 -8
  17. package/dist/navbar-education-platform.cjs +48 -10
  18. package/dist/navbar-education-platform.d.cts +6 -11
  19. package/dist/navbar-education-platform.d.ts +6 -11
  20. package/dist/navbar-education-platform.js +48 -10
  21. package/dist/navbar-enterprise-mega.cjs +50 -10
  22. package/dist/navbar-enterprise-mega.d.cts +7 -37
  23. package/dist/navbar-enterprise-mega.d.ts +7 -37
  24. package/dist/navbar-enterprise-mega.js +50 -10
  25. package/dist/navbar-feature-grid.cjs +47 -8
  26. package/dist/navbar-feature-grid.d.cts +6 -11
  27. package/dist/navbar-feature-grid.d.ts +6 -11
  28. package/dist/navbar-feature-grid.js +47 -8
  29. package/dist/navbar-floating-pill.cjs +50 -11
  30. package/dist/navbar-floating-pill.d.cts +6 -11
  31. package/dist/navbar-floating-pill.d.ts +6 -11
  32. package/dist/navbar-floating-pill.js +50 -11
  33. package/dist/navbar-fullscreen-menu.cjs +44 -5
  34. package/dist/navbar-fullscreen-menu.d.cts +6 -11
  35. package/dist/navbar-fullscreen-menu.d.ts +6 -11
  36. package/dist/navbar-fullscreen-menu.js +44 -5
  37. package/dist/navbar-icon-links.cjs +46 -8
  38. package/dist/navbar-icon-links.d.cts +9 -11
  39. package/dist/navbar-icon-links.d.ts +9 -11
  40. package/dist/navbar-icon-links.js +46 -8
  41. package/dist/navbar-image-preview.cjs +56 -12
  42. package/dist/navbar-image-preview.d.cts +11 -17
  43. package/dist/navbar-image-preview.d.ts +11 -17
  44. package/dist/navbar-image-preview.js +56 -12
  45. package/dist/navbar-mega-menu.cjs +69 -20
  46. package/dist/navbar-mega-menu.d.cts +8 -74
  47. package/dist/navbar-mega-menu.d.ts +8 -74
  48. package/dist/navbar-mega-menu.js +69 -20
  49. package/dist/navbar-multi-column-groups.cjs +47 -11
  50. package/dist/navbar-multi-column-groups.d.cts +6 -11
  51. package/dist/navbar-multi-column-groups.d.ts +6 -11
  52. package/dist/navbar-multi-column-groups.js +47 -11
  53. package/dist/navbar-platform-resources.cjs +199 -164
  54. package/dist/navbar-platform-resources.d.cts +7 -37
  55. package/dist/navbar-platform-resources.d.ts +7 -37
  56. package/dist/navbar-platform-resources.js +199 -164
  57. package/dist/navbar-search-focused.cjs +45 -7
  58. package/dist/navbar-search-focused.d.cts +6 -11
  59. package/dist/navbar-search-focused.d.ts +6 -11
  60. package/dist/navbar-search-focused.js +45 -7
  61. package/dist/navbar-sidebar-mobile.cjs +47 -8
  62. package/dist/navbar-sidebar-mobile.d.cts +6 -11
  63. package/dist/navbar-sidebar-mobile.d.ts +6 -11
  64. package/dist/navbar-sidebar-mobile.js +47 -8
  65. package/dist/navbar-simple-links.cjs +45 -7
  66. package/dist/navbar-simple-links.d.cts +6 -11
  67. package/dist/navbar-simple-links.d.ts +6 -11
  68. package/dist/navbar-simple-links.js +45 -7
  69. package/dist/navbar-split-cta.cjs +47 -8
  70. package/dist/navbar-split-cta.d.cts +6 -11
  71. package/dist/navbar-split-cta.d.ts +6 -11
  72. package/dist/navbar-split-cta.js +47 -8
  73. package/dist/navbar-sticky-compact.cjs +49 -10
  74. package/dist/navbar-sticky-compact.d.cts +6 -11
  75. package/dist/navbar-sticky-compact.d.ts +6 -11
  76. package/dist/navbar-sticky-compact.js +49 -10
  77. package/dist/navbar-tabbed-sections.cjs +47 -8
  78. package/dist/navbar-tabbed-sections.d.cts +6 -11
  79. package/dist/navbar-tabbed-sections.d.ts +6 -11
  80. package/dist/navbar-tabbed-sections.js +47 -8
  81. package/dist/navbar-transparent-overlay.cjs +47 -9
  82. package/dist/navbar-transparent-overlay.d.cts +6 -11
  83. package/dist/navbar-transparent-overlay.d.ts +6 -11
  84. package/dist/navbar-transparent-overlay.js +47 -9
  85. package/dist/registry.cjs +522 -328
  86. package/dist/registry.js +522 -328
  87. package/dist/types-COVDidbn.d.cts +119 -0
  88. package/dist/types-COVDidbn.d.ts +119 -0
  89. package/package.json +2 -2
@@ -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.5 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,6 +2,7 @@ import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import * as React from 'react';
3
3
  import { P as PatternName } from './pattern-background-a7gKHzHy.cjs';
4
4
  import { SectionBackground, SectionSpacing } from './types.cjs';
5
+ import { L as LogoConfig, N as NavbarLayoutVariant } from './types-COVDidbn.cjs';
5
6
  import { A as ActionConfig, O as OptixFlowConfig } from './blocks-Cohq4eio.cjs';
6
7
  import 'class-variance-authority';
7
8
  import './button-variants-lRElsmTc.cjs';
@@ -20,16 +21,6 @@ interface MenuItem {
20
21
  url?: string;
21
22
  links?: MenuLink[];
22
23
  }
23
- /**
24
- * Logo configuration interface
25
- */
26
- interface LogoConfig {
27
- url?: string;
28
- src?: string;
29
- alt?: string;
30
- title?: React.ReactNode;
31
- className?: string;
32
- }
33
24
  /**
34
25
  * Props for the NavbarDarkIcons component
35
26
  */
@@ -106,6 +97,10 @@ interface NavbarDarkIconsProps {
106
97
  * Pattern overlay opacity (0-1)
107
98
  */
108
99
  patternOpacity?: number;
100
+ /**
101
+ * Layout variant for the navbar
102
+ */
103
+ layoutVariant?: NavbarLayoutVariant;
109
104
  /**
110
105
  * OptixFlow image optimization configuration
111
106
  */
@@ -119,6 +114,6 @@ interface NavbarDarkIconsProps {
119
114
  * view uses a full-screen dark sheet with accordion navigation. Ideal for developer
120
115
  * tools, open-source projects, and tech-focused applications.
121
116
  */
122
- 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;
123
118
 
124
119
  export { NavbarDarkIcons, type NavbarDarkIconsProps };
@@ -2,6 +2,7 @@ import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import * as React from 'react';
3
3
  import { P as PatternName } from './pattern-background-a7gKHzHy.js';
4
4
  import { SectionBackground, SectionSpacing } from './types.js';
5
+ import { L as LogoConfig, N as NavbarLayoutVariant } from './types-COVDidbn.js';
5
6
  import { A as ActionConfig, O as OptixFlowConfig } from './blocks-k17uluAz.js';
6
7
  import 'class-variance-authority';
7
8
  import './button-variants-lRElsmTc.js';
@@ -20,16 +21,6 @@ interface MenuItem {
20
21
  url?: string;
21
22
  links?: MenuLink[];
22
23
  }
23
- /**
24
- * Logo configuration interface
25
- */
26
- interface LogoConfig {
27
- url?: string;
28
- src?: string;
29
- alt?: string;
30
- title?: React.ReactNode;
31
- className?: string;
32
- }
33
24
  /**
34
25
  * Props for the NavbarDarkIcons component
35
26
  */
@@ -106,6 +97,10 @@ interface NavbarDarkIconsProps {
106
97
  * Pattern overlay opacity (0-1)
107
98
  */
108
99
  patternOpacity?: number;
100
+ /**
101
+ * Layout variant for the navbar
102
+ */
103
+ layoutVariant?: NavbarLayoutVariant;
109
104
  /**
110
105
  * OptixFlow image optimization configuration
111
106
  */
@@ -119,6 +114,6 @@ interface NavbarDarkIconsProps {
119
114
  * view uses a full-screen dark sheet with accordion navigation. Ideal for developer
120
115
  * tools, open-source projects, and tech-focused applications.
121
116
  */
122
- 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;
123
118
 
124
119
  export { NavbarDarkIcons, type NavbarDarkIconsProps };
@@ -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.5 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.5 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,15 +1379,22 @@ 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("div", { className: cn("container", containerClassName), children: [
1397
+ children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: containerWrapperClasses, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn(innerContainerClasses, navWrapperClasses), children: [
1359
1398
  /* @__PURE__ */ jsxRuntime.jsxs(
1360
1399
  "nav",
1361
1400
  {
@@ -1403,7 +1442,7 @@ var NavbarDropdownMenu = ({
1403
1442
  ] })
1404
1443
  ] })
1405
1444
  ] }) })
1406
- ] })
1445
+ ] }) })
1407
1446
  }
1408
1447
  );
1409
1448
  };
@@ -2,13 +2,15 @@ import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import * as React from 'react';
3
3
  import { P as PatternName } from './pattern-background-a7gKHzHy.cjs';
4
4
  import { SectionBackground, SectionSpacing } from './types.cjs';
5
+ import { L as LogoConfig, N as NavbarLayoutVariant } from './types-COVDidbn.cjs';
5
6
  import { A as ActionConfig, O as OptixFlowConfig } from './blocks-Cohq4eio.cjs';
6
7
  import 'class-variance-authority';
7
8
  import './button-variants-lRElsmTc.cjs';
8
9
  import 'class-variance-authority/types';
9
10
 
10
11
  /**
11
- * Menu item interface for navigation
12
+ * Menu item interface for navigation (component-specific)
13
+ * Note: This uses title/url pattern specific to this dropdown menu component
12
14
  */
13
15
  interface MenuItem {
14
16
  title: string;
@@ -17,16 +19,6 @@ interface MenuItem {
17
19
  icon?: string;
18
20
  items?: MenuItem[];
19
21
  }
20
- /**
21
- * Logo configuration interface
22
- */
23
- interface LogoConfig {
24
- url?: string;
25
- src?: string;
26
- alt?: string;
27
- title?: React.ReactNode;
28
- className?: string;
29
- }
30
22
  /**
31
23
  * Props for the NavbarDropdownMenu component
32
24
  */
@@ -99,6 +91,10 @@ interface NavbarDropdownMenuProps {
99
91
  * Pattern overlay opacity (0-1)
100
92
  */
101
93
  patternOpacity?: number;
94
+ /**
95
+ * Layout variant for the navbar
96
+ */
97
+ layoutVariant?: NavbarLayoutVariant;
102
98
  /**
103
99
  * OptixFlow image optimization configuration
104
100
  */
@@ -111,6 +107,6 @@ interface NavbarDropdownMenuProps {
111
107
  * menu with accordion navigation on mobile. Includes login and signup call-to-action buttons.
112
108
  * The dropdown menus display icons and descriptions for each submenu item.
113
109
  */
114
- 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;
115
111
 
116
112
  export { NavbarDropdownMenu, type NavbarDropdownMenuProps };
@@ -2,13 +2,15 @@ import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import * as React from 'react';
3
3
  import { P as PatternName } from './pattern-background-a7gKHzHy.js';
4
4
  import { SectionBackground, SectionSpacing } from './types.js';
5
+ import { L as LogoConfig, N as NavbarLayoutVariant } from './types-COVDidbn.js';
5
6
  import { A as ActionConfig, O as OptixFlowConfig } from './blocks-k17uluAz.js';
6
7
  import 'class-variance-authority';
7
8
  import './button-variants-lRElsmTc.js';
8
9
  import 'class-variance-authority/types';
9
10
 
10
11
  /**
11
- * Menu item interface for navigation
12
+ * Menu item interface for navigation (component-specific)
13
+ * Note: This uses title/url pattern specific to this dropdown menu component
12
14
  */
13
15
  interface MenuItem {
14
16
  title: string;
@@ -17,16 +19,6 @@ interface MenuItem {
17
19
  icon?: string;
18
20
  items?: MenuItem[];
19
21
  }
20
- /**
21
- * Logo configuration interface
22
- */
23
- interface LogoConfig {
24
- url?: string;
25
- src?: string;
26
- alt?: string;
27
- title?: React.ReactNode;
28
- className?: string;
29
- }
30
22
  /**
31
23
  * Props for the NavbarDropdownMenu component
32
24
  */
@@ -99,6 +91,10 @@ interface NavbarDropdownMenuProps {
99
91
  * Pattern overlay opacity (0-1)
100
92
  */
101
93
  patternOpacity?: number;
94
+ /**
95
+ * Layout variant for the navbar
96
+ */
97
+ layoutVariant?: NavbarLayoutVariant;
102
98
  /**
103
99
  * OptixFlow image optimization configuration
104
100
  */
@@ -111,6 +107,6 @@ interface NavbarDropdownMenuProps {
111
107
  * menu with accordion navigation on mobile. Includes login and signup call-to-action buttons.
112
108
  * The dropdown menus display icons and descriptions for each submenu item.
113
109
  */
114
- 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;
115
111
 
116
112
  export { NavbarDropdownMenu, type NavbarDropdownMenuProps };