@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
@@ -956,7 +956,7 @@ function NavigationMenuList({
956
956
  {
957
957
  "data-slot": "navigation-menu-list",
958
958
  className: cn(
959
- "group flex flex-1 list-none items-center justify-center gap-6",
959
+ "group flex flex-1 list-none items-center justify-center gap-2 lg:gap-4 xl:gap-6",
960
960
  className
961
961
  ),
962
962
  ...props
@@ -994,7 +994,7 @@ function NavigationMenuViewport({
994
994
  {
995
995
  "data-slot": "navigation-menu-viewport",
996
996
  className: cn(
997
- "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)]",
997
+ "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)",
998
998
  className
999
999
  ),
1000
1000
  ...props
@@ -1012,7 +1012,7 @@ function NavigationMenuLink({
1012
1012
  {
1013
1013
  "data-slot": "navigation-menu-link",
1014
1014
  className: cn(
1015
- "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",
1015
+ "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",
1016
1016
  className
1017
1017
  ),
1018
1018
  ...props
@@ -1143,6 +1143,36 @@ function TooltipContent({
1143
1143
  // lib/mediaPlaceholders.ts
1144
1144
  var logoPlaceholders = {
1145
1145
  logoMark: "https://cdn.ing/assets/i/r/285975/eud79qeya11q5w6ueyhklueardyx/monochrome-rounded-square-app-icon-circular-emblem.png"};
1146
+
1147
+ // components/blocks/navbars/layout-variant-utils.ts
1148
+ function getNavbarLayoutClasses(layoutVariant = "fullScreenContainerizedLinks", customClasses) {
1149
+ const isFloatingBar = layoutVariant === "floatingBar";
1150
+ const isFullWidthLinks = layoutVariant === "fullScreenFullWidthLinks";
1151
+ return {
1152
+ // Section wrapper classes
1153
+ sectionClasses: cn(
1154
+ "inset-x-0 z-20",
1155
+ isFloatingBar ? "sticky top-4" : "top-0",
1156
+ customClasses?.className
1157
+ ),
1158
+ // Outer container wrapper (only for floating bar)
1159
+ containerWrapperClasses: cn(
1160
+ isFloatingBar && "mx-auto w-full px-2 sm:px-4 lg:px-8 max-w-7xl relative z-10"
1161
+ ),
1162
+ // Inner container classes
1163
+ innerContainerClasses: cn(
1164
+ !isFloatingBar && !isFullWidthLinks && "container",
1165
+ isFullWidthLinks && "mx-auto w-full px-2 sm:px-4 lg:px-8",
1166
+ customClasses?.containerClassName
1167
+ ),
1168
+ // Navigation wrapper classes (for border and shadow)
1169
+ navWrapperClasses: cn(
1170
+ isFloatingBar ? "border border-border/50 shadow-sm rounded-full" : "border-b border-border/50 shadow-sm"
1171
+ ),
1172
+ // Spacing adjustment for Section component
1173
+ spacingOverride: isFloatingBar ? "none" : void 0
1174
+ };
1175
+ }
1146
1176
  var NavbarIconLinks = ({
1147
1177
  logo = {
1148
1178
  url: "/",
@@ -1159,6 +1189,7 @@ var NavbarIconLinks = ({
1159
1189
  navClassName,
1160
1190
  navigationMenuClassName,
1161
1191
  actionsClassName,
1192
+ layoutVariant = "fullScreenContainerizedLinks",
1162
1193
  background = "white",
1163
1194
  spacing = "none",
1164
1195
  pattern,
@@ -1225,18 +1256,25 @@ var NavbarIconLinks = ({
1225
1256
  if (!navItems || navItems.length === 0) return null;
1226
1257
  return navItems;
1227
1258
  };
1259
+ const {
1260
+ sectionClasses,
1261
+ containerWrapperClasses,
1262
+ innerContainerClasses,
1263
+ navWrapperClasses,
1264
+ spacingOverride
1265
+ } = getNavbarLayoutClasses(layoutVariant, { className, containerClassName });
1228
1266
  return /* @__PURE__ */ jsxRuntime.jsx(
1229
1267
  Section,
1230
1268
  {
1231
1269
  background,
1232
- spacing,
1233
- className: cn("border-b", className),
1270
+ spacing: spacingOverride ?? spacing,
1271
+ className: sectionClasses,
1234
1272
  pattern,
1235
1273
  patternOpacity,
1236
- children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("container", containerClassName), children: /* @__PURE__ */ jsxRuntime.jsxs(
1274
+ children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: containerWrapperClasses, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: innerContainerClasses, children: /* @__PURE__ */ jsxRuntime.jsxs(
1237
1275
  "nav",
1238
1276
  {
1239
- className: cn("flex items-center justify-between py-3", navClassName),
1277
+ className: cn("flex items-center justify-between py-3", navWrapperClasses, navClassName),
1240
1278
  children: [
1241
1279
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-6", children: [
1242
1280
  renderLogo(),
@@ -1330,7 +1368,7 @@ var NavbarIconLinks = ({
1330
1368
  ] })
1331
1369
  ]
1332
1370
  }
1333
- ) })
1371
+ ) }) })
1334
1372
  }
1335
1373
  );
1336
1374
  };
@@ -2,26 +2,20 @@ 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
 
11
+ /**
12
+ * Navigation item with icon for compact navbar display
13
+ */
10
14
  interface NavItem {
11
15
  title: string;
12
16
  url: string;
13
17
  icon: string;
14
18
  }
15
- /**
16
- * Logo configuration interface
17
- */
18
- interface LogoConfig {
19
- url?: string;
20
- src?: string;
21
- alt?: string;
22
- title?: React.ReactNode;
23
- className?: string;
24
- }
25
19
  /**
26
20
  * Props for the NavbarIconLinks component
27
21
  */
@@ -90,6 +84,10 @@ interface NavbarIconLinksProps {
90
84
  * Pattern overlay opacity (0-1)
91
85
  */
92
86
  patternOpacity?: number;
87
+ /**
88
+ * Layout variant for the navbar
89
+ */
90
+ layoutVariant?: NavbarLayoutVariant;
93
91
  /**
94
92
  * OptixFlow image optimization configuration
95
93
  */
@@ -105,6 +103,6 @@ interface NavbarIconLinksProps {
105
103
  * Ideal for dashboards, admin panels, and applications where users are familiar
106
104
  * with the navigation structure.
107
105
  */
108
- declare const NavbarIconLinks: ({ logo, logoSlot, logoClassName, navItems, navItemsSlot, authActions, authActionsSlot, className, containerClassName, navClassName, navigationMenuClassName, actionsClassName, background, spacing, pattern, patternOpacity, optixFlowConfig, }: NavbarIconLinksProps) => react_jsx_runtime.JSX.Element;
106
+ declare const NavbarIconLinks: ({ logo, logoSlot, logoClassName, navItems, navItemsSlot, authActions, authActionsSlot, className, containerClassName, navClassName, navigationMenuClassName, actionsClassName, layoutVariant, background, spacing, pattern, patternOpacity, optixFlowConfig, }: NavbarIconLinksProps) => react_jsx_runtime.JSX.Element;
109
107
 
110
108
  export { NavbarIconLinks, type NavbarIconLinksProps };
@@ -2,26 +2,20 @@ 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
 
11
+ /**
12
+ * Navigation item with icon for compact navbar display
13
+ */
10
14
  interface NavItem {
11
15
  title: string;
12
16
  url: string;
13
17
  icon: string;
14
18
  }
15
- /**
16
- * Logo configuration interface
17
- */
18
- interface LogoConfig {
19
- url?: string;
20
- src?: string;
21
- alt?: string;
22
- title?: React.ReactNode;
23
- className?: string;
24
- }
25
19
  /**
26
20
  * Props for the NavbarIconLinks component
27
21
  */
@@ -90,6 +84,10 @@ interface NavbarIconLinksProps {
90
84
  * Pattern overlay opacity (0-1)
91
85
  */
92
86
  patternOpacity?: number;
87
+ /**
88
+ * Layout variant for the navbar
89
+ */
90
+ layoutVariant?: NavbarLayoutVariant;
93
91
  /**
94
92
  * OptixFlow image optimization configuration
95
93
  */
@@ -105,6 +103,6 @@ interface NavbarIconLinksProps {
105
103
  * Ideal for dashboards, admin panels, and applications where users are familiar
106
104
  * with the navigation structure.
107
105
  */
108
- declare const NavbarIconLinks: ({ logo, logoSlot, logoClassName, navItems, navItemsSlot, authActions, authActionsSlot, className, containerClassName, navClassName, navigationMenuClassName, actionsClassName, background, spacing, pattern, patternOpacity, optixFlowConfig, }: NavbarIconLinksProps) => react_jsx_runtime.JSX.Element;
106
+ declare const NavbarIconLinks: ({ logo, logoSlot, logoClassName, navItems, navItemsSlot, authActions, authActionsSlot, className, containerClassName, navClassName, navigationMenuClassName, actionsClassName, layoutVariant, background, spacing, pattern, patternOpacity, optixFlowConfig, }: NavbarIconLinksProps) => react_jsx_runtime.JSX.Element;
109
107
 
110
108
  export { NavbarIconLinks, type NavbarIconLinksProps };
@@ -932,7 +932,7 @@ function NavigationMenuList({
932
932
  {
933
933
  "data-slot": "navigation-menu-list",
934
934
  className: cn(
935
- "group flex flex-1 list-none items-center justify-center gap-6",
935
+ "group flex flex-1 list-none items-center justify-center gap-2 lg:gap-4 xl:gap-6",
936
936
  className
937
937
  ),
938
938
  ...props
@@ -970,7 +970,7 @@ function NavigationMenuViewport({
970
970
  {
971
971
  "data-slot": "navigation-menu-viewport",
972
972
  className: cn(
973
- "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)]",
973
+ "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)",
974
974
  className
975
975
  ),
976
976
  ...props
@@ -988,7 +988,7 @@ function NavigationMenuLink({
988
988
  {
989
989
  "data-slot": "navigation-menu-link",
990
990
  className: cn(
991
- "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",
991
+ "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",
992
992
  className
993
993
  ),
994
994
  ...props
@@ -1119,6 +1119,36 @@ function TooltipContent({
1119
1119
  // lib/mediaPlaceholders.ts
1120
1120
  var logoPlaceholders = {
1121
1121
  logoMark: "https://cdn.ing/assets/i/r/285975/eud79qeya11q5w6ueyhklueardyx/monochrome-rounded-square-app-icon-circular-emblem.png"};
1122
+
1123
+ // components/blocks/navbars/layout-variant-utils.ts
1124
+ function getNavbarLayoutClasses(layoutVariant = "fullScreenContainerizedLinks", customClasses) {
1125
+ const isFloatingBar = layoutVariant === "floatingBar";
1126
+ const isFullWidthLinks = layoutVariant === "fullScreenFullWidthLinks";
1127
+ return {
1128
+ // Section wrapper classes
1129
+ sectionClasses: cn(
1130
+ "inset-x-0 z-20",
1131
+ isFloatingBar ? "sticky top-4" : "top-0",
1132
+ customClasses?.className
1133
+ ),
1134
+ // Outer container wrapper (only for floating bar)
1135
+ containerWrapperClasses: cn(
1136
+ isFloatingBar && "mx-auto w-full px-2 sm:px-4 lg:px-8 max-w-7xl relative z-10"
1137
+ ),
1138
+ // Inner container classes
1139
+ innerContainerClasses: cn(
1140
+ !isFloatingBar && !isFullWidthLinks && "container",
1141
+ isFullWidthLinks && "mx-auto w-full px-2 sm:px-4 lg:px-8",
1142
+ customClasses?.containerClassName
1143
+ ),
1144
+ // Navigation wrapper classes (for border and shadow)
1145
+ navWrapperClasses: cn(
1146
+ isFloatingBar ? "border border-border/50 shadow-sm rounded-full" : "border-b border-border/50 shadow-sm"
1147
+ ),
1148
+ // Spacing adjustment for Section component
1149
+ spacingOverride: isFloatingBar ? "none" : void 0
1150
+ };
1151
+ }
1122
1152
  var NavbarIconLinks = ({
1123
1153
  logo = {
1124
1154
  url: "/",
@@ -1135,6 +1165,7 @@ var NavbarIconLinks = ({
1135
1165
  navClassName,
1136
1166
  navigationMenuClassName,
1137
1167
  actionsClassName,
1168
+ layoutVariant = "fullScreenContainerizedLinks",
1138
1169
  background = "white",
1139
1170
  spacing = "none",
1140
1171
  pattern,
@@ -1201,18 +1232,25 @@ var NavbarIconLinks = ({
1201
1232
  if (!navItems || navItems.length === 0) return null;
1202
1233
  return navItems;
1203
1234
  };
1235
+ const {
1236
+ sectionClasses,
1237
+ containerWrapperClasses,
1238
+ innerContainerClasses,
1239
+ navWrapperClasses,
1240
+ spacingOverride
1241
+ } = getNavbarLayoutClasses(layoutVariant, { className, containerClassName });
1204
1242
  return /* @__PURE__ */ jsx(
1205
1243
  Section,
1206
1244
  {
1207
1245
  background,
1208
- spacing,
1209
- className: cn("border-b", className),
1246
+ spacing: spacingOverride ?? spacing,
1247
+ className: sectionClasses,
1210
1248
  pattern,
1211
1249
  patternOpacity,
1212
- children: /* @__PURE__ */ jsx("div", { className: cn("container", containerClassName), children: /* @__PURE__ */ jsxs(
1250
+ children: /* @__PURE__ */ jsx("div", { className: containerWrapperClasses, children: /* @__PURE__ */ jsx("div", { className: innerContainerClasses, children: /* @__PURE__ */ jsxs(
1213
1251
  "nav",
1214
1252
  {
1215
- className: cn("flex items-center justify-between py-3", navClassName),
1253
+ className: cn("flex items-center justify-between py-3", navWrapperClasses, navClassName),
1216
1254
  children: [
1217
1255
  /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-6", children: [
1218
1256
  renderLogo(),
@@ -1306,7 +1344,7 @@ var NavbarIconLinks = ({
1306
1344
  ] })
1307
1345
  ]
1308
1346
  }
1309
- ) })
1347
+ ) }) })
1310
1348
  }
1311
1349
  );
1312
1350
  };
@@ -954,7 +954,7 @@ function NavigationMenuList({
954
954
  {
955
955
  "data-slot": "navigation-menu-list",
956
956
  className: cn(
957
- "group flex flex-1 list-none items-center justify-center gap-6",
957
+ "group flex flex-1 list-none items-center justify-center gap-2 lg:gap-4 xl:gap-6",
958
958
  className
959
959
  ),
960
960
  ...props
@@ -994,8 +994,9 @@ function NavigationMenuTrigger({
994
994
  /* @__PURE__ */ jsxRuntime.jsx(
995
995
  DynamicIcon,
996
996
  {
997
+ size: 18,
997
998
  name: "lucide/chevron-down",
998
- className: "relative top-[1px] ml-1 size-2.5 transition duration-300 group-data-[state=open]:rotate-180",
999
+ className: "relative top-px opacity-50 transition duration-300 group-data-[state=open]:rotate-180",
999
1000
  "aria-hidden": "true"
1000
1001
  }
1001
1002
  )
@@ -1035,7 +1036,7 @@ function NavigationMenuViewport({
1035
1036
  {
1036
1037
  "data-slot": "navigation-menu-viewport",
1037
1038
  className: cn(
1038
- "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)]",
1039
+ "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)",
1039
1040
  className
1040
1041
  ),
1041
1042
  ...props
@@ -1053,7 +1054,7 @@ function NavigationMenuLink({
1053
1054
  {
1054
1055
  "data-slot": "navigation-menu-link",
1055
1056
  className: cn(
1056
- "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",
1057
+ "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",
1057
1058
  className
1058
1059
  ),
1059
1060
  ...props
@@ -1255,6 +1256,41 @@ var imagePlaceholders = [
1255
1256
  "https://toastability-production.s3.amazonaws.com/e13qu3083lkhdg7th64vb628172a",
1256
1257
  "https://toastability-production.s3.amazonaws.com/w87w0fyjdol9yzwo7yywkgxidvzo"
1257
1258
  ];
1259
+
1260
+ // components/blocks/navbars/types.ts
1261
+ function getLinkUrl(item) {
1262
+ return item.href || item.url || "#";
1263
+ }
1264
+
1265
+ // components/blocks/navbars/layout-variant-utils.ts
1266
+ function getNavbarLayoutClasses(layoutVariant = "fullScreenContainerizedLinks", customClasses) {
1267
+ const isFloatingBar = layoutVariant === "floatingBar";
1268
+ const isFullWidthLinks = layoutVariant === "fullScreenFullWidthLinks";
1269
+ return {
1270
+ // Section wrapper classes
1271
+ sectionClasses: cn(
1272
+ "inset-x-0 z-20",
1273
+ isFloatingBar ? "sticky top-4" : "top-0",
1274
+ customClasses?.className
1275
+ ),
1276
+ // Outer container wrapper (only for floating bar)
1277
+ containerWrapperClasses: cn(
1278
+ isFloatingBar && "mx-auto w-full px-2 sm:px-4 lg:px-8 max-w-7xl relative z-10"
1279
+ ),
1280
+ // Inner container classes
1281
+ innerContainerClasses: cn(
1282
+ !isFloatingBar && !isFullWidthLinks && "container",
1283
+ isFullWidthLinks && "mx-auto w-full px-2 sm:px-4 lg:px-8",
1284
+ customClasses?.containerClassName
1285
+ ),
1286
+ // Navigation wrapper classes (for border and shadow)
1287
+ navWrapperClasses: cn(
1288
+ isFloatingBar ? "border border-border/50 shadow-sm rounded-full" : "border-b border-border/50 shadow-sm"
1289
+ ),
1290
+ // Spacing adjustment for Section component
1291
+ spacingOverride: isFloatingBar ? "none" : void 0
1292
+ };
1293
+ }
1258
1294
  var MOBILE_BREAKPOINT = 1024;
1259
1295
  var NavbarImagePreview = ({
1260
1296
  className,
@@ -1276,6 +1312,7 @@ var NavbarImagePreview = ({
1276
1312
  authActionsSlot,
1277
1313
  socialLinks,
1278
1314
  socialLinksSlot,
1315
+ layoutVariant = "fullScreenContainerizedLinks",
1279
1316
  background = "white",
1280
1317
  spacing = "none",
1281
1318
  pattern,
@@ -1384,12 +1421,19 @@ var NavbarImagePreview = ({
1384
1421
  );
1385
1422
  });
1386
1423
  };
1424
+ const {
1425
+ sectionClasses,
1426
+ containerWrapperClasses,
1427
+ innerContainerClasses,
1428
+ navWrapperClasses,
1429
+ spacingOverride
1430
+ } = getNavbarLayoutClasses(layoutVariant, { className, containerClassName });
1387
1431
  return /* @__PURE__ */ jsxRuntime.jsxs(
1388
1432
  Section,
1389
1433
  {
1390
1434
  background,
1391
- spacing,
1392
- className: cn("", className),
1435
+ spacing: spacingOverride ?? spacing,
1436
+ className: sectionClasses,
1393
1437
  pattern,
1394
1438
  patternOpacity,
1395
1439
  children: [
@@ -1398,10 +1442,10 @@ var NavbarImagePreview = ({
1398
1442
  {
1399
1443
  className: cn(
1400
1444
  "fixed top-0 z-500 w-full bg-transparent transition-colors duration-500",
1401
- containerClassName
1445
+ containerWrapperClasses
1402
1446
  ),
1403
1447
  ref: navRef,
1404
- children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "container border-b", children: /* @__PURE__ */ jsxRuntime.jsxs(
1448
+ children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn(innerContainerClasses, navWrapperClasses), children: /* @__PURE__ */ jsxRuntime.jsxs(
1405
1449
  "div",
1406
1450
  {
1407
1451
  className: cn(
@@ -1503,14 +1547,14 @@ var DesktopMenuItem = ({
1503
1547
  /* @__PURE__ */ jsxRuntime.jsx("ul", { children: item.links.map((link, linkIndex) => /* @__PURE__ */ jsxRuntime.jsx("li", { children: /* @__PURE__ */ jsxRuntime.jsx(
1504
1548
  Pressable,
1505
1549
  {
1506
- href: link.url,
1550
+ href: getLinkUrl(link),
1507
1551
  className: "flex items-center gap-4 rounded-lg px-4 py-3 hover:bg-muted",
1508
1552
  "data-index": linkIndex,
1509
1553
  onMouseEnter: handleMouseEnter,
1510
1554
  onMouseLeave: handleMouseLeave,
1511
1555
  children: /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
1512
- /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "leading-normal font-medium", children: link.label }),
1513
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "leading-normal text-muted-foreground", children: link.description })
1556
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-sm leading-normal font-medium", children: link.label }),
1557
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs leading-normal text-muted-foreground", children: link.description })
1514
1558
  ] })
1515
1559
  }
1516
1560
  ) }, `desktop-nav-sublink-${linkIndex}`)) })
@@ -1553,7 +1597,7 @@ var MobileNavigationMenu = ({
1553
1597
  /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "flex flex-col gap-3", children: item.links?.map((link, i) => /* @__PURE__ */ jsxRuntime.jsx("li", { children: /* @__PURE__ */ jsxRuntime.jsx(
1554
1598
  Pressable,
1555
1599
  {
1556
- href: link.url,
1600
+ href: getLinkUrl(link),
1557
1601
  className: cn(
1558
1602
  "text-primary-foreground leading-normal font-medium",
1559
1603
  index === 0 ? "text-2xl" : "text-base"
@@ -2,17 +2,17 @@ import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import * as React from 'react';
3
3
  import { P as PatternName } from './pattern-background-a7gKHzHy.cjs';
4
4
  import { SectionBackground, SectionSpacing } from './types.cjs';
5
+ import { L as LogoConfig, b as ILinkItem, 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
- interface MenuLink {
11
- label: React.ReactNode;
12
- description?: React.ReactNode;
13
- url: string;
14
- image?: string;
15
- }
11
+ /**
12
+ * MenuLink type alias for backward compatibility
13
+ * Uses shared ILinkItem which supports both href and url
14
+ */
15
+ type MenuLink = ILinkItem;
16
16
  interface MenuItem {
17
17
  title: React.ReactNode;
18
18
  url?: string;
@@ -25,16 +25,6 @@ interface SocialLink {
25
25
  icon?: React.ReactNode;
26
26
  iconName?: string;
27
27
  }
28
- /**
29
- * Logo configuration interface
30
- */
31
- interface LogoConfig {
32
- url?: string;
33
- src?: string;
34
- alt?: string;
35
- title?: React.ReactNode;
36
- className?: string;
37
- }
38
28
  /**
39
29
  * Props for the NavbarImagePreview component
40
30
  */
@@ -119,6 +109,10 @@ interface NavbarImagePreviewProps {
119
109
  * Pattern overlay opacity (0-1)
120
110
  */
121
111
  patternOpacity?: number;
112
+ /**
113
+ * Layout variant for the navbar
114
+ */
115
+ layoutVariant?: NavbarLayoutVariant;
122
116
  /**
123
117
  * OptixFlow image optimization configuration
124
118
  */
@@ -132,6 +126,6 @@ interface NavbarImagePreviewProps {
132
126
  * Mobile view uses a full-screen dark overlay with categorized link columns and
133
127
  * social links. Ideal for content-rich sites where visual previews enhance navigation.
134
128
  */
135
- declare const NavbarImagePreview: ({ className, containerClassName, navClassName, navigationMenuClassName, actionsClassName, logo, logoSlot, logoClassName, navigation, navigationSlot, mobileNavigation, mobileNavigationSlot, authActions, authActionsSlot, socialLinks, socialLinksSlot, background, spacing, pattern, patternOpacity, optixFlowConfig, }: NavbarImagePreviewProps) => react_jsx_runtime.JSX.Element;
129
+ declare const NavbarImagePreview: ({ className, containerClassName, navClassName, navigationMenuClassName, actionsClassName, logo, logoSlot, logoClassName, navigation, navigationSlot, mobileNavigation, mobileNavigationSlot, authActions, authActionsSlot, socialLinks, socialLinksSlot, layoutVariant, background, spacing, pattern, patternOpacity, optixFlowConfig, }: NavbarImagePreviewProps) => react_jsx_runtime.JSX.Element;
136
130
 
137
131
  export { NavbarImagePreview, type NavbarImagePreviewProps };
@@ -2,17 +2,17 @@ import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import * as React from 'react';
3
3
  import { P as PatternName } from './pattern-background-a7gKHzHy.js';
4
4
  import { SectionBackground, SectionSpacing } from './types.js';
5
+ import { L as LogoConfig, b as ILinkItem, 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
- interface MenuLink {
11
- label: React.ReactNode;
12
- description?: React.ReactNode;
13
- url: string;
14
- image?: string;
15
- }
11
+ /**
12
+ * MenuLink type alias for backward compatibility
13
+ * Uses shared ILinkItem which supports both href and url
14
+ */
15
+ type MenuLink = ILinkItem;
16
16
  interface MenuItem {
17
17
  title: React.ReactNode;
18
18
  url?: string;
@@ -25,16 +25,6 @@ interface SocialLink {
25
25
  icon?: React.ReactNode;
26
26
  iconName?: string;
27
27
  }
28
- /**
29
- * Logo configuration interface
30
- */
31
- interface LogoConfig {
32
- url?: string;
33
- src?: string;
34
- alt?: string;
35
- title?: React.ReactNode;
36
- className?: string;
37
- }
38
28
  /**
39
29
  * Props for the NavbarImagePreview component
40
30
  */
@@ -119,6 +109,10 @@ interface NavbarImagePreviewProps {
119
109
  * Pattern overlay opacity (0-1)
120
110
  */
121
111
  patternOpacity?: number;
112
+ /**
113
+ * Layout variant for the navbar
114
+ */
115
+ layoutVariant?: NavbarLayoutVariant;
122
116
  /**
123
117
  * OptixFlow image optimization configuration
124
118
  */
@@ -132,6 +126,6 @@ interface NavbarImagePreviewProps {
132
126
  * Mobile view uses a full-screen dark overlay with categorized link columns and
133
127
  * social links. Ideal for content-rich sites where visual previews enhance navigation.
134
128
  */
135
- declare const NavbarImagePreview: ({ className, containerClassName, navClassName, navigationMenuClassName, actionsClassName, logo, logoSlot, logoClassName, navigation, navigationSlot, mobileNavigation, mobileNavigationSlot, authActions, authActionsSlot, socialLinks, socialLinksSlot, background, spacing, pattern, patternOpacity, optixFlowConfig, }: NavbarImagePreviewProps) => react_jsx_runtime.JSX.Element;
129
+ declare const NavbarImagePreview: ({ className, containerClassName, navClassName, navigationMenuClassName, actionsClassName, logo, logoSlot, logoClassName, navigation, navigationSlot, mobileNavigation, mobileNavigationSlot, authActions, authActionsSlot, socialLinks, socialLinksSlot, layoutVariant, background, spacing, pattern, patternOpacity, optixFlowConfig, }: NavbarImagePreviewProps) => react_jsx_runtime.JSX.Element;
136
130
 
137
131
  export { NavbarImagePreview, type NavbarImagePreviewProps };