@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
@@ -1008,7 +1008,7 @@ function NavigationMenuList({
1008
1008
  {
1009
1009
  "data-slot": "navigation-menu-list",
1010
1010
  className: cn(
1011
- "group flex flex-1 list-none items-center justify-center gap-6",
1011
+ "group flex flex-1 list-none items-center justify-center gap-2 lg:gap-4 xl:gap-6",
1012
1012
  className
1013
1013
  ),
1014
1014
  ...props
@@ -1048,8 +1048,9 @@ function NavigationMenuTrigger({
1048
1048
  /* @__PURE__ */ jsxRuntime.jsx(
1049
1049
  DynamicIcon,
1050
1050
  {
1051
+ size: 18,
1051
1052
  name: "lucide/chevron-down",
1052
- className: "relative top-[1px] ml-1 size-2.5 transition duration-300 group-data-[state=open]:rotate-180",
1053
+ className: "relative top-px opacity-50 transition duration-300 group-data-[state=open]:rotate-180",
1053
1054
  "aria-hidden": "true"
1054
1055
  }
1055
1056
  )
@@ -1089,7 +1090,7 @@ function NavigationMenuViewport({
1089
1090
  {
1090
1091
  "data-slot": "navigation-menu-viewport",
1091
1092
  className: cn(
1092
- "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)]",
1093
+ "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)",
1093
1094
  className
1094
1095
  ),
1095
1096
  ...props
@@ -1107,7 +1108,7 @@ function NavigationMenuLink({
1107
1108
  {
1108
1109
  "data-slot": "navigation-menu-link",
1109
1110
  className: cn(
1110
- "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",
1111
+ "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",
1111
1112
  className
1112
1113
  ),
1113
1114
  ...props
@@ -1118,6 +1119,41 @@ function NavigationMenuLink({
1118
1119
  // lib/mediaPlaceholders.ts
1119
1120
  var logoPlaceholders = {
1120
1121
  logoMark: "https://cdn.ing/assets/i/r/285975/eud79qeya11q5w6ueyhklueardyx/monochrome-rounded-square-app-icon-circular-emblem.png"};
1122
+
1123
+ // components/blocks/navbars/types.ts
1124
+ function getLinkUrl(item) {
1125
+ return item.href || item.url || "#";
1126
+ }
1127
+
1128
+ // components/blocks/navbars/layout-variant-utils.ts
1129
+ function getNavbarLayoutClasses(layoutVariant = "fullScreenContainerizedLinks", customClasses) {
1130
+ const isFloatingBar = layoutVariant === "floatingBar";
1131
+ const isFullWidthLinks = layoutVariant === "fullScreenFullWidthLinks";
1132
+ return {
1133
+ // Section wrapper classes
1134
+ sectionClasses: cn(
1135
+ "inset-x-0 z-20",
1136
+ isFloatingBar ? "sticky top-4" : "top-0",
1137
+ customClasses?.className
1138
+ ),
1139
+ // Outer container wrapper (only for floating bar)
1140
+ containerWrapperClasses: cn(
1141
+ isFloatingBar && "mx-auto w-full px-2 sm:px-4 lg:px-8 max-w-7xl relative z-10"
1142
+ ),
1143
+ // Inner container classes
1144
+ innerContainerClasses: cn(
1145
+ !isFloatingBar && !isFullWidthLinks && "container",
1146
+ isFullWidthLinks && "mx-auto w-full px-2 sm:px-4 lg:px-8",
1147
+ customClasses?.containerClassName
1148
+ ),
1149
+ // Navigation wrapper classes (for border and shadow)
1150
+ navWrapperClasses: cn(
1151
+ isFloatingBar ? "border border-border/50 shadow-sm rounded-full" : "border-b border-border/50 shadow-sm"
1152
+ ),
1153
+ // Spacing adjustment for Section component
1154
+ spacingOverride: isFloatingBar ? "none" : void 0
1155
+ };
1156
+ }
1121
1157
  var NavbarPlatformResources = ({
1122
1158
  className,
1123
1159
  containerClassName,
@@ -1133,6 +1169,7 @@ var NavbarPlatformResources = ({
1133
1169
  logoSlot,
1134
1170
  menuLinks,
1135
1171
  actions,
1172
+ layoutVariant = "fullScreenContainerizedLinks",
1136
1173
  background = "white",
1137
1174
  spacing = "none",
1138
1175
  pattern,
@@ -1170,7 +1207,7 @@ var NavbarPlatformResources = ({
1170
1207
  return /* @__PURE__ */ jsxRuntime.jsx(NavigationMenuContent, { className: "min-w-[640px] p-4", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3", children: link.links?.map((item, itemIndex) => /* @__PURE__ */ jsxRuntime.jsxs(
1171
1208
  NavigationMenuLink,
1172
1209
  {
1173
- href: item.url,
1210
+ href: getLinkUrl(item),
1174
1211
  className: "flex flex-row items-start gap-4 rounded-lg border border-input bg-background p-4 hover:bg-accent hover:text-accent-foreground",
1175
1212
  children: [
1176
1213
  item.image && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-12 w-12 overflow-hidden rounded-md border border-border", children: /* @__PURE__ */ jsxRuntime.jsx(
@@ -1199,7 +1236,7 @@ var NavbarPlatformResources = ({
1199
1236
  /* @__PURE__ */ jsxRuntime.jsx(
1200
1237
  NavigationMenuLink,
1201
1238
  {
1202
- href: featuredItem.url,
1239
+ href: getLinkUrl(featuredItem),
1203
1240
  className: "group w-1/3 p-0 hover:bg-transparent",
1204
1241
  children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "overflow-clip rounded-lg border border-input bg-background", children: [
1205
1242
  /* @__PURE__ */ jsxRuntime.jsx("div", { children: /* @__PURE__ */ jsxRuntime.jsx(
@@ -1223,7 +1260,7 @@ var NavbarPlatformResources = ({
1223
1260
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-1 gap-6 lg:grid-cols-2 lg:gap-8", children: gridItems.map((item, itemIndex) => /* @__PURE__ */ jsxRuntime.jsxs(
1224
1261
  NavigationMenuLink,
1225
1262
  {
1226
- href: item.url,
1263
+ href: getLinkUrl(item),
1227
1264
  className: "group block p-4",
1228
1265
  children: [
1229
1266
  (item.icon || item.iconName) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-5 group-hover:opacity-60", children: item.icon ? item.icon : item.iconName ? /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: item.iconName, size: 20 }) : null }),
@@ -1244,7 +1281,7 @@ var NavbarPlatformResources = ({
1244
1281
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-2 gap-4", children: link.dropdownGroups[0].links.map((item, itemIndex) => /* @__PURE__ */ jsxRuntime.jsxs(
1245
1282
  NavigationMenuLink,
1246
1283
  {
1247
- href: item.url,
1284
+ href: getLinkUrl(item),
1248
1285
  className: "group flex flex-row items-center gap-5",
1249
1286
  children: [
1250
1287
  (item.icon || item.iconName) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "group-hover:opacity-60", children: item.icon ? item.icon : item.iconName ? /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: item.iconName, size: 16 }) : null }),
@@ -1257,7 +1294,7 @@ var NavbarPlatformResources = ({
1257
1294
  ctaItem && /* @__PURE__ */ jsxRuntime.jsx(
1258
1295
  NavigationMenuLink,
1259
1296
  {
1260
- href: ctaItem.url,
1297
+ href: getLinkUrl(ctaItem),
1261
1298
  className: "group flex-1 p-0 hover:bg-transparent",
1262
1299
  children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex h-full rounded-lg border border-input bg-background p-0 hover:bg-transparent", children: [
1263
1300
  ctaItem.image && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-2/5 max-w-[310px] shrink-0 overflow-clip rounded-tl-lg rounded-bl-lg", children: /* @__PURE__ */ jsxRuntime.jsx(
@@ -1291,7 +1328,7 @@ var NavbarPlatformResources = ({
1291
1328
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "-ml-2.5 space-y-2.5", children: listItems.map((item, itemIndex) => /* @__PURE__ */ jsxRuntime.jsxs(
1292
1329
  NavigationMenuLink,
1293
1330
  {
1294
- href: item.url,
1331
+ href: getLinkUrl(item),
1295
1332
  className: "group flex flex-row items-center gap-2.5 rounded-md p-2.5 focus:text-accent-foreground",
1296
1333
  children: [
1297
1334
  (item.icon || item.iconName) && (item.icon ? item.icon : item.iconName ? /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: item.iconName, size: 16 }) : null),
@@ -1304,7 +1341,7 @@ var NavbarPlatformResources = ({
1304
1341
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "max-w-[716px] flex-1 space-y-6", children: showcaseItems.map((showcase, showcaseIndex) => /* @__PURE__ */ jsxRuntime.jsxs(
1305
1342
  NavigationMenuLink,
1306
1343
  {
1307
- href: showcase.url,
1344
+ href: getLinkUrl(showcase),
1308
1345
  className: "flex flex-row items-center overflow-clip rounded-lg border border-input bg-background p-0 hover:bg-transparent",
1309
1346
  children: [
1310
1347
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 p-5 xl:p-8", children: [
@@ -1338,7 +1375,7 @@ var NavbarPlatformResources = ({
1338
1375
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid flex-1 grid-cols-1 gap-6 md:grid-cols-2", children: group.links.map((item, itemIndex) => /* @__PURE__ */ jsxRuntime.jsx(
1339
1376
  NavigationMenuLink,
1340
1377
  {
1341
- href: item.url,
1378
+ href: getLinkUrl(item),
1342
1379
  className: "flex h-full flex-col overflow-clip rounded-lg border border-input bg-background p-5 hover:bg-accent hover:text-accent-foreground xl:p-8",
1343
1380
  children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-auto", children: [
1344
1381
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-2 text-base", children: item.label }),
@@ -1355,7 +1392,7 @@ var NavbarPlatformResources = ({
1355
1392
  /* @__PURE__ */ jsxRuntime.jsxs(
1356
1393
  NavigationMenuLink,
1357
1394
  {
1358
- href: ctaItem.url,
1395
+ href: getLinkUrl(ctaItem),
1359
1396
  className: "mb-6 flex flex-row overflow-clip rounded-lg border border-input bg-background p-0 hover:bg-transparent",
1360
1397
  children: [
1361
1398
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 p-5 xl:p-8", children: [
@@ -1384,7 +1421,7 @@ var NavbarPlatformResources = ({
1384
1421
  return /* @__PURE__ */ jsxRuntime.jsx(NavigationMenuContent, { className: "min-w-[640px] p-4", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3", children: link.links?.map((item, itemIndex) => /* @__PURE__ */ jsxRuntime.jsxs(
1385
1422
  NavigationMenuLink,
1386
1423
  {
1387
- href: item.url,
1424
+ href: getLinkUrl(item),
1388
1425
  className: "flex flex-row items-start gap-4 rounded-lg border border-input bg-background p-4 hover:bg-accent hover:text-accent-foreground",
1389
1426
  children: [
1390
1427
  item.image && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-12 w-12 overflow-hidden rounded-md border border-border", children: /* @__PURE__ */ jsxRuntime.jsx(
@@ -1424,173 +1461,171 @@ var NavbarPlatformResources = ({
1424
1461
  ] }) }, index);
1425
1462
  });
1426
1463
  };
1464
+ const {
1465
+ sectionClasses,
1466
+ containerWrapperClasses,
1467
+ innerContainerClasses,
1468
+ navWrapperClasses,
1469
+ spacingOverride
1470
+ } = getNavbarLayoutClasses(layoutVariant, { className, containerClassName });
1427
1471
  return /* @__PURE__ */ jsxRuntime.jsx(
1428
1472
  Section,
1429
1473
  {
1430
1474
  background,
1431
- spacing,
1432
- className: cn("inset-x-0 top-0 z-20", className),
1475
+ spacing: spacingOverride ?? spacing,
1476
+ className: sectionClasses,
1433
1477
  pattern,
1434
1478
  patternOpacity,
1435
- children: /* @__PURE__ */ jsxRuntime.jsx(
1436
- "div",
1437
- {
1438
- className: cn(
1439
- "container px-4 sm:px-6 md:px-8 lg:px-40 xl:px-52",
1440
- containerClassName
1441
- ),
1442
- children: /* @__PURE__ */ jsxRuntime.jsxs(NavigationMenu, { className: cn("min-w-full", navigationMenuClassName), children: [
1443
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex w-full items-center justify-between gap-12 py-4", children: [
1444
- renderLogo(),
1445
- /* @__PURE__ */ jsxRuntime.jsx(
1446
- NavigationMenuList,
1447
- {
1448
- className: cn("hidden lg:flex", navigationMenuListClassName),
1449
- children: menuLinks?.map((link, index) => {
1450
- if (hasDropdownItems(link)) {
1451
- return /* @__PURE__ */ jsxRuntime.jsxs(
1452
- NavigationMenuItem,
1453
- {
1454
- children: [
1455
- /* @__PURE__ */ jsxRuntime.jsx(NavigationMenuTrigger, { className: "h-auto bg-transparent px-0 py-0 font-normal text-foreground/60 hover:bg-transparent hover:text-foreground focus:bg-transparent focus:text-foreground data-[state=open]:bg-transparent data-[state=open]:text-foreground", children: link.label }),
1456
- renderDropdownContent(link)
1457
- ]
1458
- },
1459
- `${typeof link.label === "string" ? link.label : "menu"}-${index}`
1460
- );
1461
- }
1462
- if (!link.href) {
1463
- return null;
1464
- }
1465
- return /* @__PURE__ */ jsxRuntime.jsx(
1466
- NavigationMenuItem,
1479
+ children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: containerWrapperClasses, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn(innerContainerClasses, navWrapperClasses), children: /* @__PURE__ */ jsxRuntime.jsxs(NavigationMenu, { className: cn("min-w-full", navigationMenuClassName), children: [
1480
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex w-full items-center justify-between gap-12 py-4", children: [
1481
+ renderLogo(),
1482
+ /* @__PURE__ */ jsxRuntime.jsx(
1483
+ NavigationMenuList,
1484
+ {
1485
+ className: cn("hidden lg:flex", navigationMenuListClassName),
1486
+ children: menuLinks?.map((link, index) => {
1487
+ if (hasDropdownItems(link)) {
1488
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1489
+ NavigationMenuItem,
1490
+ {
1491
+ children: [
1492
+ /* @__PURE__ */ jsxRuntime.jsx(NavigationMenuTrigger, { className: "h-auto bg-transparent px-0 py-0 font-normal text-foreground/60 hover:bg-transparent hover:text-foreground focus:bg-transparent focus:text-foreground data-[state=open]:bg-transparent data-[state=open]:text-foreground", children: link.label }),
1493
+ renderDropdownContent(link)
1494
+ ]
1495
+ },
1496
+ `${typeof link.label === "string" ? link.label : "menu"}-${index}`
1497
+ );
1498
+ }
1499
+ if (!link.href) {
1500
+ return null;
1501
+ }
1502
+ return /* @__PURE__ */ jsxRuntime.jsx(
1503
+ NavigationMenuItem,
1504
+ {
1505
+ children: /* @__PURE__ */ jsxRuntime.jsx(
1506
+ NavigationMenuLink,
1467
1507
  {
1468
- children: /* @__PURE__ */ jsxRuntime.jsx(
1469
- NavigationMenuLink,
1508
+ href: link.href,
1509
+ className: "group inline-flex h-10 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium transition-colors hover:bg-muted hover:text-accent-foreground",
1510
+ children: link.label
1511
+ }
1512
+ )
1513
+ },
1514
+ `${typeof link.label === "string" ? link.label : "menu"}-${index}`
1515
+ );
1516
+ })
1517
+ }
1518
+ ),
1519
+ /* @__PURE__ */ jsxRuntime.jsx(
1520
+ "div",
1521
+ {
1522
+ className: cn(
1523
+ "hidden items-center gap-4 lg:flex",
1524
+ actionsClassName
1525
+ ),
1526
+ children: renderActions()
1527
+ }
1528
+ ),
1529
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-4 lg:hidden", children: /* @__PURE__ */ jsxRuntime.jsxs(
1530
+ Pressable,
1531
+ {
1532
+ variant: "outline",
1533
+ size: "icon",
1534
+ asButton: true,
1535
+ "aria-label": "Main Menu",
1536
+ onClick: () => setOpen(!open),
1537
+ children: [
1538
+ !open && /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/menu", size: 16 }),
1539
+ open && /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/x", size: 16 })
1540
+ ]
1541
+ }
1542
+ ) })
1543
+ ] }),
1544
+ open && /* @__PURE__ */ jsxRuntime.jsxs(
1545
+ "div",
1546
+ {
1547
+ className: cn(
1548
+ "absolute inset-0 top-[72px] flex h-[calc(100vh-72px)] w-full flex-col overflow-scroll border-t border-border bg-background lg:hidden",
1549
+ mobileMenuClassName
1550
+ ),
1551
+ children: [
1552
+ /* @__PURE__ */ jsxRuntime.jsx(Accordion, { type: "single", collapsible: true, className: "w-full", children: menuLinks?.map((link, index) => {
1553
+ if (hasDropdownItems(link)) {
1554
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1555
+ AccordionItem,
1556
+ {
1557
+ value: `menu-${index}`,
1558
+ className: "border-b-2 border-dashed",
1559
+ children: [
1560
+ /* @__PURE__ */ jsxRuntime.jsx(AccordionTrigger, { className: "px-2 py-4 text-left hover:no-underline", children: link.label }),
1561
+ /* @__PURE__ */ jsxRuntime.jsx(AccordionContent, { className: "px-2 pb-4", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-3", children: link.links?.map((item, itemIndex) => /* @__PURE__ */ jsxRuntime.jsxs(
1562
+ Pressable,
1470
1563
  {
1471
- href: link.href,
1472
- className: "group inline-flex h-10 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium transition-colors hover:bg-muted hover:text-accent-foreground",
1473
- children: link.label
1474
- }
1475
- )
1476
- },
1477
- `${typeof link.label === "string" ? link.label : "menu"}-${index}`
1478
- );
1479
- })
1564
+ href: getLinkUrl(item),
1565
+ className: "group flex items-start gap-4 rounded-lg p-2 hover:bg-muted",
1566
+ children: [
1567
+ item.image && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-10 w-10 overflow-hidden rounded-md border border-border", children: /* @__PURE__ */ jsxRuntime.jsx(
1568
+ img.Img,
1569
+ {
1570
+ src: item.image,
1571
+ alt: typeof item.label === "string" ? item.label : "Menu item",
1572
+ className: "h-full w-full object-cover object-center",
1573
+ optixFlowConfig
1574
+ }
1575
+ ) }),
1576
+ !item.image && (item.icon || item.iconName) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-10 w-10 items-center justify-center rounded-md border border-border bg-muted/40 text-muted-foreground", children: item.icon ? item.icon : item.iconName ? /* @__PURE__ */ jsxRuntime.jsx(
1577
+ DynamicIcon,
1578
+ {
1579
+ name: item.iconName,
1580
+ size: 16
1581
+ }
1582
+ ) : null }),
1583
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1", children: [
1584
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm font-medium text-foreground", children: item.label }),
1585
+ item.description && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-xs text-muted-foreground", children: item.description })
1586
+ ] })
1587
+ ]
1588
+ },
1589
+ `${typeof item.label === "string" ? item.label : "item"}-${itemIndex}`
1590
+ )) }) })
1591
+ ]
1592
+ },
1593
+ `${typeof link.label === "string" ? link.label : "menu"}-${index}`
1594
+ );
1480
1595
  }
1481
- ),
1596
+ if (!link.href) {
1597
+ return null;
1598
+ }
1599
+ return /* @__PURE__ */ jsxRuntime.jsx(
1600
+ "div",
1601
+ {
1602
+ className: "border-b-2 border-dashed",
1603
+ children: /* @__PURE__ */ jsxRuntime.jsx(
1604
+ Pressable,
1605
+ {
1606
+ href: link.href,
1607
+ className: "flex w-full items-center px-2 py-4 text-left text-sm font-medium",
1608
+ children: link.label
1609
+ }
1610
+ )
1611
+ },
1612
+ `${typeof link.label === "string" ? link.label : "menu"}-${index}`
1613
+ );
1614
+ }) }),
1482
1615
  /* @__PURE__ */ jsxRuntime.jsx(
1483
1616
  "div",
1484
1617
  {
1485
1618
  className: cn(
1486
- "hidden items-center gap-4 lg:flex",
1619
+ "mx-8 mt-auto flex flex-col gap-4 py-12",
1487
1620
  actionsClassName
1488
1621
  ),
1489
1622
  children: renderActions()
1490
1623
  }
1491
- ),
1492
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-4 lg:hidden", children: /* @__PURE__ */ jsxRuntime.jsxs(
1493
- Pressable,
1494
- {
1495
- variant: "outline",
1496
- size: "icon",
1497
- asButton: true,
1498
- "aria-label": "Main Menu",
1499
- onClick: () => setOpen(!open),
1500
- children: [
1501
- !open && /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/menu", size: 16 }),
1502
- open && /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/x", size: 16 })
1503
- ]
1504
- }
1505
- ) })
1506
- ] }),
1507
- open && /* @__PURE__ */ jsxRuntime.jsxs(
1508
- "div",
1509
- {
1510
- className: cn(
1511
- "absolute inset-0 top-[72px] flex h-[calc(100vh-72px)] w-full flex-col overflow-scroll border-t border-border bg-background lg:hidden",
1512
- mobileMenuClassName
1513
- ),
1514
- children: [
1515
- /* @__PURE__ */ jsxRuntime.jsx(Accordion, { type: "single", collapsible: true, className: "w-full", children: menuLinks?.map((link, index) => {
1516
- if (hasDropdownItems(link)) {
1517
- return /* @__PURE__ */ jsxRuntime.jsxs(
1518
- AccordionItem,
1519
- {
1520
- value: `menu-${index}`,
1521
- className: "border-b-2 border-dashed",
1522
- children: [
1523
- /* @__PURE__ */ jsxRuntime.jsx(AccordionTrigger, { className: "px-2 py-4 text-left hover:no-underline", children: link.label }),
1524
- /* @__PURE__ */ jsxRuntime.jsx(AccordionContent, { className: "px-2 pb-4", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-3", children: link.links?.map((item, itemIndex) => /* @__PURE__ */ jsxRuntime.jsxs(
1525
- Pressable,
1526
- {
1527
- href: item.url,
1528
- className: "group flex items-start gap-4 rounded-lg p-2 hover:bg-muted",
1529
- children: [
1530
- item.image && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-10 w-10 overflow-hidden rounded-md border border-border", children: /* @__PURE__ */ jsxRuntime.jsx(
1531
- img.Img,
1532
- {
1533
- src: item.image,
1534
- alt: typeof item.label === "string" ? item.label : "Menu item",
1535
- className: "h-full w-full object-cover object-center",
1536
- optixFlowConfig
1537
- }
1538
- ) }),
1539
- !item.image && (item.icon || item.iconName) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-10 w-10 items-center justify-center rounded-md border border-border bg-muted/40 text-muted-foreground", children: item.icon ? item.icon : item.iconName ? /* @__PURE__ */ jsxRuntime.jsx(
1540
- DynamicIcon,
1541
- {
1542
- name: item.iconName,
1543
- size: 16
1544
- }
1545
- ) : null }),
1546
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1", children: [
1547
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm font-medium text-foreground", children: item.label }),
1548
- item.description && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-xs text-muted-foreground", children: item.description })
1549
- ] })
1550
- ]
1551
- },
1552
- `${typeof item.label === "string" ? item.label : "item"}-${itemIndex}`
1553
- )) }) })
1554
- ]
1555
- },
1556
- `${typeof link.label === "string" ? link.label : "menu"}-${index}`
1557
- );
1558
- }
1559
- if (!link.href) {
1560
- return null;
1561
- }
1562
- return /* @__PURE__ */ jsxRuntime.jsx(
1563
- "div",
1564
- {
1565
- className: "border-b-2 border-dashed",
1566
- children: /* @__PURE__ */ jsxRuntime.jsx(
1567
- Pressable,
1568
- {
1569
- href: link.href,
1570
- className: "flex w-full items-center px-2 py-4 text-left text-sm font-medium",
1571
- children: link.label
1572
- }
1573
- )
1574
- },
1575
- `${typeof link.label === "string" ? link.label : "menu"}-${index}`
1576
- );
1577
- }) }),
1578
- /* @__PURE__ */ jsxRuntime.jsx(
1579
- "div",
1580
- {
1581
- className: cn(
1582
- "mx-8 mt-auto flex flex-col gap-4 py-12",
1583
- actionsClassName
1584
- ),
1585
- children: renderActions()
1586
- }
1587
- )
1588
- ]
1589
- }
1590
- )
1591
- ] })
1592
- }
1593
- )
1624
+ )
1625
+ ]
1626
+ }
1627
+ )
1628
+ ] }) }) })
1594
1629
  }
1595
1630
  );
1596
1631
  };
@@ -2,36 +2,12 @@ import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import * as React from 'react';
3
3
  import { P as PatternName } from './pattern-background-a7gKHzHy.cjs';
4
4
  import { SectionBackground, SectionSpacing } from './types.cjs';
5
+ import { L as LogoConfig, b as ILinkItem, a as IMenuLinkGroup, 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
- * SHARED TYPE INTERFACES FOR ALL NAVBAR COMPONENTS
12
- * These types provide a consistent interface across all navbar blocks
13
- */
14
- /**
15
- * Base link item - used across all navbar components
16
- */
17
- interface ILinkItem {
18
- label: React.ReactNode;
19
- description?: React.ReactNode;
20
- url: string;
21
- icon?: React.ReactNode;
22
- iconName?: string;
23
- image?: string;
24
- background?: string;
25
- }
26
- /**
27
- * Group of links with optional metadata
28
- */
29
- interface IMenuLinkGroup {
30
- label: React.ReactNode;
31
- description?: string;
32
- image?: string;
33
- links: ILinkItem[];
34
- }
35
11
  /**
36
12
  * Layout types for dropdown menus
37
13
  *
@@ -87,16 +63,6 @@ interface IMenuLink {
87
63
  links?: ILinkItem[];
88
64
  dropdownGroups?: IMenuLinkGroup[];
89
65
  }
90
- /**
91
- * Logo configuration interface
92
- */
93
- interface LogoConfig {
94
- url?: string;
95
- src?: string;
96
- alt?: string;
97
- title?: React.ReactNode;
98
- className?: string;
99
- }
100
66
  /**
101
67
  * Props for the NavbarPlatformResources component
102
68
  */
@@ -165,6 +131,10 @@ interface NavbarPlatformResourcesProps {
165
131
  * OptixFlow image optimization configuration
166
132
  */
167
133
  optixFlowConfig?: OptixFlowConfig;
134
+ /**
135
+ * Layout variant for the navbar
136
+ */
137
+ layoutVariant?: NavbarLayoutVariant;
168
138
  }
169
139
  /**
170
140
  * NavbarPlatformResources - A navigation bar with flexible dropdown menus and action buttons.
@@ -173,6 +143,6 @@ interface NavbarPlatformResourcesProps {
173
143
  * display icons or images. Mobile view uses a full-screen overlay with accordion navigation.
174
144
  * Ideal for platforms that need configurable navigation and supporting resources.
175
145
  */
176
- declare const NavbarPlatformResources: ({ className, containerClassName, navigationMenuClassName, navigationMenuListClassName, actionsClassName, logoClassName, mobileMenuClassName, logo, logoSlot, menuLinks, actions, background, spacing, pattern, patternOpacity, optixFlowConfig, }: NavbarPlatformResourcesProps) => react_jsx_runtime.JSX.Element;
146
+ declare const NavbarPlatformResources: ({ className, containerClassName, navigationMenuClassName, navigationMenuListClassName, actionsClassName, logoClassName, mobileMenuClassName, logo, logoSlot, menuLinks, actions, layoutVariant, background, spacing, pattern, patternOpacity, optixFlowConfig, }: NavbarPlatformResourcesProps) => react_jsx_runtime.JSX.Element;
177
147
 
178
- export { type DropdownLayout, type ILinkItem, type IMenuLink, type IMenuLinkGroup, type LogoConfig, NavbarPlatformResources, type NavbarPlatformResourcesProps };
148
+ export { type DropdownLayout, ILinkItem, type IMenuLink, IMenuLinkGroup, LogoConfig, NavbarPlatformResources, type NavbarPlatformResourcesProps };
@@ -2,36 +2,12 @@ import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import * as React from 'react';
3
3
  import { P as PatternName } from './pattern-background-a7gKHzHy.js';
4
4
  import { SectionBackground, SectionSpacing } from './types.js';
5
+ import { L as LogoConfig, b as ILinkItem, a as IMenuLinkGroup, 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
- * SHARED TYPE INTERFACES FOR ALL NAVBAR COMPONENTS
12
- * These types provide a consistent interface across all navbar blocks
13
- */
14
- /**
15
- * Base link item - used across all navbar components
16
- */
17
- interface ILinkItem {
18
- label: React.ReactNode;
19
- description?: React.ReactNode;
20
- url: string;
21
- icon?: React.ReactNode;
22
- iconName?: string;
23
- image?: string;
24
- background?: string;
25
- }
26
- /**
27
- * Group of links with optional metadata
28
- */
29
- interface IMenuLinkGroup {
30
- label: React.ReactNode;
31
- description?: string;
32
- image?: string;
33
- links: ILinkItem[];
34
- }
35
11
  /**
36
12
  * Layout types for dropdown menus
37
13
  *
@@ -87,16 +63,6 @@ interface IMenuLink {
87
63
  links?: ILinkItem[];
88
64
  dropdownGroups?: IMenuLinkGroup[];
89
65
  }
90
- /**
91
- * Logo configuration interface
92
- */
93
- interface LogoConfig {
94
- url?: string;
95
- src?: string;
96
- alt?: string;
97
- title?: React.ReactNode;
98
- className?: string;
99
- }
100
66
  /**
101
67
  * Props for the NavbarPlatformResources component
102
68
  */
@@ -165,6 +131,10 @@ interface NavbarPlatformResourcesProps {
165
131
  * OptixFlow image optimization configuration
166
132
  */
167
133
  optixFlowConfig?: OptixFlowConfig;
134
+ /**
135
+ * Layout variant for the navbar
136
+ */
137
+ layoutVariant?: NavbarLayoutVariant;
168
138
  }
169
139
  /**
170
140
  * NavbarPlatformResources - A navigation bar with flexible dropdown menus and action buttons.
@@ -173,6 +143,6 @@ interface NavbarPlatformResourcesProps {
173
143
  * display icons or images. Mobile view uses a full-screen overlay with accordion navigation.
174
144
  * Ideal for platforms that need configurable navigation and supporting resources.
175
145
  */
176
- declare const NavbarPlatformResources: ({ className, containerClassName, navigationMenuClassName, navigationMenuListClassName, actionsClassName, logoClassName, mobileMenuClassName, logo, logoSlot, menuLinks, actions, background, spacing, pattern, patternOpacity, optixFlowConfig, }: NavbarPlatformResourcesProps) => react_jsx_runtime.JSX.Element;
146
+ declare const NavbarPlatformResources: ({ className, containerClassName, navigationMenuClassName, navigationMenuListClassName, actionsClassName, logoClassName, mobileMenuClassName, logo, logoSlot, menuLinks, actions, layoutVariant, background, spacing, pattern, patternOpacity, optixFlowConfig, }: NavbarPlatformResourcesProps) => react_jsx_runtime.JSX.Element;
177
147
 
178
- export { type DropdownLayout, type ILinkItem, type IMenuLink, type IMenuLinkGroup, type LogoConfig, NavbarPlatformResources, type NavbarPlatformResourcesProps };
148
+ export { type DropdownLayout, ILinkItem, type IMenuLink, IMenuLinkGroup, LogoConfig, NavbarPlatformResources, type NavbarPlatformResourcesProps };