@opensite/ui 1.0.9 → 1.1.1

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 (41) hide show
  1. package/dist/navbar-animated-preview.cjs +30 -19
  2. package/dist/navbar-animated-preview.js +30 -19
  3. package/dist/navbar-centered-menu.cjs +21 -10
  4. package/dist/navbar-centered-menu.js +21 -10
  5. package/dist/navbar-dark-icons.cjs +21 -10
  6. package/dist/navbar-dark-icons.js +21 -10
  7. package/dist/navbar-dropdown-menu.cjs +21 -10
  8. package/dist/navbar-dropdown-menu.js +21 -10
  9. package/dist/navbar-education-platform.cjs +82 -56
  10. package/dist/navbar-education-platform.js +82 -56
  11. package/dist/navbar-enterprise-mega.cjs +22 -11
  12. package/dist/navbar-enterprise-mega.js +22 -11
  13. package/dist/navbar-feature-grid.cjs +21 -10
  14. package/dist/navbar-feature-grid.js +21 -10
  15. package/dist/navbar-icon-links.cjs +21 -10
  16. package/dist/navbar-icon-links.js +21 -10
  17. package/dist/navbar-image-preview.cjs +21 -10
  18. package/dist/navbar-image-preview.js +21 -10
  19. package/dist/navbar-mega-menu.cjs +21 -10
  20. package/dist/navbar-mega-menu.js +21 -10
  21. package/dist/navbar-multi-column-groups.cjs +53 -35
  22. package/dist/navbar-multi-column-groups.js +53 -35
  23. package/dist/navbar-platform-resources.cjs +21 -10
  24. package/dist/navbar-platform-resources.js +21 -10
  25. package/dist/navbar-search-focused.cjs +192 -103
  26. package/dist/navbar-search-focused.js +192 -103
  27. package/dist/navbar-sidebar-mobile.cjs +22 -10
  28. package/dist/navbar-sidebar-mobile.js +22 -10
  29. package/dist/navbar-simple-links.cjs +23 -12
  30. package/dist/navbar-simple-links.js +23 -12
  31. package/dist/navbar-split-cta.cjs +21 -10
  32. package/dist/navbar-split-cta.js +21 -10
  33. package/dist/navbar-sticky-compact.cjs +231 -123
  34. package/dist/navbar-sticky-compact.js +230 -123
  35. package/dist/navbar-tabbed-sections.cjs +21 -10
  36. package/dist/navbar-tabbed-sections.js +21 -10
  37. package/dist/navbar-transparent-overlay.cjs +23 -10
  38. package/dist/navbar-transparent-overlay.js +23 -10
  39. package/dist/registry.cjs +435 -302
  40. package/dist/registry.js +435 -302
  41. package/package.json +1 -1
@@ -970,6 +970,22 @@ var NavbarLogo = ({
970
970
  }
971
971
  );
972
972
  };
973
+ function Input({ className, type, ...props }) {
974
+ return /* @__PURE__ */ jsx(
975
+ "input",
976
+ {
977
+ type,
978
+ "data-slot": "input",
979
+ className: cn(
980
+ "file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
981
+ "focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]",
982
+ "aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",
983
+ className
984
+ ),
985
+ ...props
986
+ }
987
+ );
988
+ }
973
989
  function NavigationMenu({
974
990
  className,
975
991
  children,
@@ -1071,6 +1087,8 @@ var NavbarMobileMenu = ({
1071
1087
  children,
1072
1088
  className,
1073
1089
  contentClassName,
1090
+ closeContainerClassName,
1091
+ closeIconClassName,
1074
1092
  title = "Mobile Navigation"
1075
1093
  }) => {
1076
1094
  React.useEffect(() => {
@@ -1095,18 +1113,27 @@ var NavbarMobileMenu = ({
1095
1113
  "data-state": open ? "open" : "closed",
1096
1114
  children: [
1097
1115
  /* @__PURE__ */ jsx("div", { className: "sr-only", children: /* @__PURE__ */ jsx("h2", { children: title }) }),
1098
- /* @__PURE__ */ jsx("div", { className: "absolute top-0 left-0 right-0 p-4 bg-background flex justify-end items-center z-10 w-screen", children: /* @__PURE__ */ jsxs(
1099
- "button",
1116
+ /* @__PURE__ */ jsx(
1117
+ "div",
1100
1118
  {
1101
- onClick: onClose,
1102
- className: "flex size-10 items-center justify-center rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none",
1103
- "aria-label": "Close mobile menu",
1104
- children: [
1105
- /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/x", className: "size-4" }),
1106
- /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" })
1107
- ]
1119
+ className: cn(
1120
+ "absolute top-0 left-0 right-0 p-4 bg-background flex justify-end items-center z-10 w-screen",
1121
+ closeContainerClassName
1122
+ ),
1123
+ children: /* @__PURE__ */ jsxs(
1124
+ "button",
1125
+ {
1126
+ onClick: onClose,
1127
+ className: "flex size-10 items-center justify-center rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none",
1128
+ "aria-label": "Close mobile menu",
1129
+ children: [
1130
+ /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/x", className: cn("size-4", closeIconClassName) }),
1131
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" })
1132
+ ]
1133
+ }
1134
+ )
1108
1135
  }
1109
- ) }),
1136
+ ),
1110
1137
  /* @__PURE__ */ jsx(
1111
1138
  "div",
1112
1139
  {
@@ -1183,6 +1210,11 @@ var NavbarSearchFocused = ({
1183
1210
  optixFlowConfig
1184
1211
  }) => {
1185
1212
  const [isOpen, setIsOpen] = useState(false);
1213
+ const [searchQuery, setSearchQuery] = useState("");
1214
+ const handleSearchSubmit = (e) => {
1215
+ e.preventDefault();
1216
+ onSearch?.(searchQuery);
1217
+ };
1186
1218
  const renderNavigation = (items) => {
1187
1219
  if (navigationSlot) return navigationSlot;
1188
1220
  if (!items || items.length === 0) return null;
@@ -1228,7 +1260,7 @@ var NavbarSearchFocused = ({
1228
1260
  );
1229
1261
  });
1230
1262
  }, [authActionsSlot, authActions]);
1231
- const renderMobileMenuActions = useMemo(() => {
1263
+ useMemo(() => {
1232
1264
  if (mobileMenuActionsSlot) return mobileMenuActionsSlot;
1233
1265
  if (!mobileMenuActions || mobileMenuActions.length === 0) return null;
1234
1266
  return /* @__PURE__ */ jsx("div", { className: "flex flex-col gap-2", children: mobileMenuActions.map((action, index) => {
@@ -1257,100 +1289,157 @@ var NavbarSearchFocused = ({
1257
1289
  sectionContainerMaxWidth,
1258
1290
  spacingOverride
1259
1291
  } = getNavbarLayoutClasses(layoutVariant, { className, containerClassName });
1260
- return /* @__PURE__ */ jsx(
1261
- Section,
1262
- {
1263
- background,
1264
- spacing: spacingOverride ?? spacing,
1265
- className: sectionClasses,
1266
- pattern,
1267
- patternOpacity,
1268
- containerClassName: sectionContainerClassName,
1269
- containerMaxWidth: sectionContainerMaxWidth,
1270
- children: /* @__PURE__ */ jsx("div", { className: containerWrapperClasses, children: /* @__PURE__ */ jsx("div", { className: navWrapperClasses, children: /* @__PURE__ */ jsx("div", { className: innerContainerClasses, children: /* @__PURE__ */ jsxs(
1271
- "nav",
1272
- {
1273
- className: cn(
1274
- "flex items-center gap-4 py-3 lg:gap-8",
1275
- navClassName
1276
- ),
1277
- children: [
1278
- /* @__PURE__ */ jsx(
1279
- NavbarLogo,
1280
- {
1281
- logo,
1282
- logoSlot,
1283
- logoClassName,
1284
- optixFlowConfig
1285
- }
1286
- ),
1287
- /* @__PURE__ */ jsx(
1288
- NavigationMenu,
1289
- {
1290
- className: cn("hidden lg:flex", navigationMenuClassName),
1291
- children: renderNavigation(navItems?.slice(0, 2) ?? [])
1292
- }
1293
- ),
1294
- /* @__PURE__ */ jsx(
1295
- NavigationMenu,
1296
- {
1297
- className: cn("hidden lg:flex", navigationMenuClassName),
1298
- children: renderNavigation(navItems?.slice(2) ?? [])
1299
- }
1292
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
1293
+ /* @__PURE__ */ jsx(
1294
+ Section,
1295
+ {
1296
+ background,
1297
+ spacing: spacingOverride ?? spacing,
1298
+ className: sectionClasses,
1299
+ pattern,
1300
+ patternOpacity,
1301
+ containerClassName: sectionContainerClassName,
1302
+ containerMaxWidth: sectionContainerMaxWidth,
1303
+ children: /* @__PURE__ */ jsx("div", { className: containerWrapperClasses, children: /* @__PURE__ */ jsx("div", { className: navWrapperClasses, children: /* @__PURE__ */ jsx("div", { className: innerContainerClasses, children: /* @__PURE__ */ jsxs(
1304
+ "nav",
1305
+ {
1306
+ className: cn(
1307
+ "flex items-center justify-between gap-4 py-3 lg:gap-6",
1308
+ navClassName
1300
1309
  ),
1301
- /* @__PURE__ */ jsx(
1302
- "div",
1303
- {
1304
- className: cn(
1305
- "hidden shrink-0 items-center gap-2 lg:flex",
1306
- actionsClassName
1310
+ children: [
1311
+ /* @__PURE__ */ jsx(
1312
+ NavbarLogo,
1313
+ {
1314
+ logo,
1315
+ logoSlot,
1316
+ logoClassName,
1317
+ optixFlowConfig
1318
+ }
1319
+ ),
1320
+ /* @__PURE__ */ jsx(
1321
+ NavigationMenu,
1322
+ {
1323
+ className: cn("hidden lg:flex", navigationMenuClassName),
1324
+ children: renderNavigation(navItems ?? [])
1325
+ }
1326
+ ),
1327
+ /* @__PURE__ */ jsx("div", { className: "hidden flex-1 max-w-md lg:block", children: searchSlot ?? /* @__PURE__ */ jsxs("form", { onSubmit: handleSearchSubmit, className: "relative", children: [
1328
+ /* @__PURE__ */ jsx(
1329
+ DynamicIcon,
1330
+ {
1331
+ name: "lucide/search",
1332
+ size: 16,
1333
+ className: "absolute left-3 top-1/2 -translate-y-1/2 text-muted-foreground"
1334
+ }
1307
1335
  ),
1308
- children: renderAuthActions
1309
- }
1310
- ),
1311
- /* @__PURE__ */ jsxs(
1312
- Pressable,
1313
- {
1314
- variant: "ghost",
1315
- size: "icon",
1316
- asButton: true,
1317
- className: "lg:hidden",
1318
- onClick: () => setIsOpen(!isOpen),
1319
- children: [
1320
- /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/menu", size: 20 }),
1321
- /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Toggle menu" })
1322
- ]
1323
- }
1324
- ),
1325
- /* @__PURE__ */ jsx(
1326
- NavbarMobileMenu,
1327
- {
1328
- open: isOpen,
1329
- onClose: () => setIsOpen(false),
1330
- title: "Navigation Menu",
1331
- children: /* @__PURE__ */ jsxs("div", { className: "max-w-screen-sm mx-auto", children: [
1332
- /* @__PURE__ */ jsx("div", { className: "flex flex-col gap-2", children: navItems?.map((item, index) => /* @__PURE__ */ jsxs(
1333
- Pressable,
1334
- {
1335
- href: item.url,
1336
- className: "flex items-center gap-2 rounded-md py-2 text-base font-medium",
1337
- onClick: () => setIsOpen(false),
1338
- children: [
1339
- item.icon ?? (item.iconName && /* @__PURE__ */ jsx(DynamicIcon, { name: item.iconName, size: 16 })),
1340
- item.title
1341
- ]
1342
- },
1343
- index
1344
- )) }),
1345
- /* @__PURE__ */ jsx("div", { className: "border-t pt-4 mt-6", children: renderMobileMenuActions })
1346
- ] })
1347
- }
1348
- )
1349
- ]
1350
- }
1351
- ) }) }) })
1352
- }
1353
- );
1336
+ /* @__PURE__ */ jsx(
1337
+ Input,
1338
+ {
1339
+ type: "search",
1340
+ placeholder: typeof searchPlaceholder === "string" ? searchPlaceholder : "Search...",
1341
+ value: searchQuery,
1342
+ onChange: (e) => setSearchQuery(e.target.value),
1343
+ className: "pl-9 pr-4"
1344
+ }
1345
+ )
1346
+ ] }) }),
1347
+ /* @__PURE__ */ jsx(
1348
+ "div",
1349
+ {
1350
+ className: cn(
1351
+ "hidden shrink-0 items-center gap-2 lg:flex",
1352
+ actionsClassName
1353
+ ),
1354
+ children: renderAuthActions
1355
+ }
1356
+ ),
1357
+ /* @__PURE__ */ jsxs(
1358
+ Pressable,
1359
+ {
1360
+ variant: "ghost",
1361
+ size: "icon",
1362
+ asButton: true,
1363
+ className: "lg:hidden",
1364
+ onClick: () => setIsOpen(!isOpen),
1365
+ children: [
1366
+ /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/menu", size: 20 }),
1367
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Toggle menu" })
1368
+ ]
1369
+ }
1370
+ )
1371
+ ]
1372
+ }
1373
+ ) }) }) })
1374
+ }
1375
+ ),
1376
+ /* @__PURE__ */ jsx(
1377
+ MobileNavigationMenu,
1378
+ {
1379
+ open: isOpen,
1380
+ setOpen: setIsOpen,
1381
+ navItems: navItems ?? [],
1382
+ navigationSlot,
1383
+ mobileMenuActions: mobileMenuActions ?? authActions,
1384
+ mobileMenuActionsSlot: mobileMenuActionsSlot ?? authActionsSlot
1385
+ }
1386
+ )
1387
+ ] });
1388
+ };
1389
+ var MobileNavigationMenu = ({
1390
+ open,
1391
+ setOpen,
1392
+ navItems,
1393
+ navigationSlot,
1394
+ mobileMenuActions,
1395
+ mobileMenuActionsSlot
1396
+ }) => {
1397
+ const handleClose = () => setOpen(false);
1398
+ const renderMobileActions = useMemo(() => {
1399
+ if (mobileMenuActionsSlot) return mobileMenuActionsSlot;
1400
+ if (!mobileMenuActions || mobileMenuActions.length === 0) return null;
1401
+ return /* @__PURE__ */ jsx("div", { className: "mt-6 flex flex-col gap-4", children: mobileMenuActions.map((action, index) => {
1402
+ const {
1403
+ label,
1404
+ icon,
1405
+ iconAfter,
1406
+ children,
1407
+ className: actionClassName,
1408
+ ...pressableProps
1409
+ } = action;
1410
+ return /* @__PURE__ */ jsx(
1411
+ Pressable,
1412
+ {
1413
+ asButton: true,
1414
+ className: cn("w-full", actionClassName),
1415
+ onClick: handleClose,
1416
+ ...pressableProps,
1417
+ children: children ?? /* @__PURE__ */ jsxs(Fragment, { children: [
1418
+ icon,
1419
+ label,
1420
+ iconAfter
1421
+ ] })
1422
+ },
1423
+ index
1424
+ );
1425
+ }) });
1426
+ }, [mobileMenuActionsSlot, mobileMenuActions]);
1427
+ return /* @__PURE__ */ jsx(NavbarMobileMenu, { open, onClose: handleClose, title: "Navigation Menu", children: /* @__PURE__ */ jsx("div", { className: "max-w-screen-sm mx-auto", children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-6", children: [
1428
+ navigationSlot ?? /* @__PURE__ */ jsx("nav", { className: "flex flex-col", children: navItems.map((item, index) => /* @__PURE__ */ jsxs(
1429
+ Pressable,
1430
+ {
1431
+ href: item.url,
1432
+ className: "flex h-15 items-center gap-2 rounded-md px-4 text-left text-base leading-[3.75] font-normal text-muted-foreground ring-ring/10 outline-ring/50 transition-all hover:bg-muted focus-visible:ring-4 focus-visible:outline-1",
1433
+ onClick: handleClose,
1434
+ children: [
1435
+ item.icon ?? (item.iconName && /* @__PURE__ */ jsx(DynamicIcon, { name: item.iconName, size: 16 })),
1436
+ item.title
1437
+ ]
1438
+ },
1439
+ `nav-link-${index}`
1440
+ )) }),
1441
+ renderMobileActions
1442
+ ] }) }) });
1354
1443
  };
1355
1444
 
1356
1445
  export { NavbarSearchFocused };
@@ -1198,6 +1198,8 @@ var NavbarMobileMenu = ({
1198
1198
  children,
1199
1199
  className,
1200
1200
  contentClassName,
1201
+ closeContainerClassName,
1202
+ closeIconClassName,
1201
1203
  title = "Mobile Navigation"
1202
1204
  }) => {
1203
1205
  React__namespace.useEffect(() => {
@@ -1222,18 +1224,27 @@ var NavbarMobileMenu = ({
1222
1224
  "data-state": open ? "open" : "closed",
1223
1225
  children: [
1224
1226
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "sr-only", children: /* @__PURE__ */ jsxRuntime.jsx("h2", { children: title }) }),
1225
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute top-0 left-0 right-0 p-4 bg-background flex justify-end items-center z-10 w-screen", children: /* @__PURE__ */ jsxRuntime.jsxs(
1226
- "button",
1227
+ /* @__PURE__ */ jsxRuntime.jsx(
1228
+ "div",
1227
1229
  {
1228
- onClick: onClose,
1229
- className: "flex size-10 items-center justify-center rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none",
1230
- "aria-label": "Close mobile menu",
1231
- children: [
1232
- /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/x", className: "size-4" }),
1233
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "Close" })
1234
- ]
1230
+ className: cn(
1231
+ "absolute top-0 left-0 right-0 p-4 bg-background flex justify-end items-center z-10 w-screen",
1232
+ closeContainerClassName
1233
+ ),
1234
+ children: /* @__PURE__ */ jsxRuntime.jsxs(
1235
+ "button",
1236
+ {
1237
+ onClick: onClose,
1238
+ className: "flex size-10 items-center justify-center rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none",
1239
+ "aria-label": "Close mobile menu",
1240
+ children: [
1241
+ /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/x", className: cn("size-4", closeIconClassName) }),
1242
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "Close" })
1243
+ ]
1244
+ }
1245
+ )
1235
1246
  }
1236
- ) }),
1247
+ ),
1237
1248
  /* @__PURE__ */ jsxRuntime.jsx(
1238
1249
  "div",
1239
1250
  {
@@ -1404,6 +1415,7 @@ var NavbarSidebarMobile = ({
1404
1415
  NavigationMenu,
1405
1416
  {
1406
1417
  className: cn("hidden lg:flex", navigationMenuClassName),
1418
+ viewport: false,
1407
1419
  children: /* @__PURE__ */ jsxRuntime.jsx(NavigationMenuList, { children: menuSlot ? menuSlot : renderMenu()?.map(
1408
1420
  (item, index) => item.items ? /* @__PURE__ */ jsxRuntime.jsxs(NavigationMenuItem, { children: [
1409
1421
  /* @__PURE__ */ jsxRuntime.jsx(NavigationMenuTrigger, { children: item.title }),
@@ -1175,6 +1175,8 @@ var NavbarMobileMenu = ({
1175
1175
  children,
1176
1176
  className,
1177
1177
  contentClassName,
1178
+ closeContainerClassName,
1179
+ closeIconClassName,
1178
1180
  title = "Mobile Navigation"
1179
1181
  }) => {
1180
1182
  React.useEffect(() => {
@@ -1199,18 +1201,27 @@ var NavbarMobileMenu = ({
1199
1201
  "data-state": open ? "open" : "closed",
1200
1202
  children: [
1201
1203
  /* @__PURE__ */ jsx("div", { className: "sr-only", children: /* @__PURE__ */ jsx("h2", { children: title }) }),
1202
- /* @__PURE__ */ jsx("div", { className: "absolute top-0 left-0 right-0 p-4 bg-background flex justify-end items-center z-10 w-screen", children: /* @__PURE__ */ jsxs(
1203
- "button",
1204
+ /* @__PURE__ */ jsx(
1205
+ "div",
1204
1206
  {
1205
- onClick: onClose,
1206
- className: "flex size-10 items-center justify-center rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none",
1207
- "aria-label": "Close mobile menu",
1208
- children: [
1209
- /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/x", className: "size-4" }),
1210
- /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" })
1211
- ]
1207
+ className: cn(
1208
+ "absolute top-0 left-0 right-0 p-4 bg-background flex justify-end items-center z-10 w-screen",
1209
+ closeContainerClassName
1210
+ ),
1211
+ children: /* @__PURE__ */ jsxs(
1212
+ "button",
1213
+ {
1214
+ onClick: onClose,
1215
+ className: "flex size-10 items-center justify-center rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none",
1216
+ "aria-label": "Close mobile menu",
1217
+ children: [
1218
+ /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/x", className: cn("size-4", closeIconClassName) }),
1219
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" })
1220
+ ]
1221
+ }
1222
+ )
1212
1223
  }
1213
- ) }),
1224
+ ),
1214
1225
  /* @__PURE__ */ jsx(
1215
1226
  "div",
1216
1227
  {
@@ -1381,6 +1392,7 @@ var NavbarSidebarMobile = ({
1381
1392
  NavigationMenu,
1382
1393
  {
1383
1394
  className: cn("hidden lg:flex", navigationMenuClassName),
1395
+ viewport: false,
1384
1396
  children: /* @__PURE__ */ jsx(NavigationMenuList, { children: menuSlot ? menuSlot : renderMenu()?.map(
1385
1397
  (item, index) => item.items ? /* @__PURE__ */ jsxs(NavigationMenuItem, { children: [
1386
1398
  /* @__PURE__ */ jsx(NavigationMenuTrigger, { children: item.title }),
@@ -1093,6 +1093,8 @@ var NavbarMobileMenu = ({
1093
1093
  children,
1094
1094
  className,
1095
1095
  contentClassName,
1096
+ closeContainerClassName,
1097
+ closeIconClassName,
1096
1098
  title = "Mobile Navigation"
1097
1099
  }) => {
1098
1100
  React__namespace.useEffect(() => {
@@ -1117,18 +1119,27 @@ var NavbarMobileMenu = ({
1117
1119
  "data-state": open ? "open" : "closed",
1118
1120
  children: [
1119
1121
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "sr-only", children: /* @__PURE__ */ jsxRuntime.jsx("h2", { children: title }) }),
1120
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute top-0 left-0 right-0 p-4 bg-background flex justify-end items-center z-10 w-screen", children: /* @__PURE__ */ jsxRuntime.jsxs(
1121
- "button",
1122
+ /* @__PURE__ */ jsxRuntime.jsx(
1123
+ "div",
1122
1124
  {
1123
- onClick: onClose,
1124
- className: "flex size-10 items-center justify-center rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none",
1125
- "aria-label": "Close mobile menu",
1126
- children: [
1127
- /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/x", className: "size-4" }),
1128
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "Close" })
1129
- ]
1125
+ className: cn(
1126
+ "absolute top-0 left-0 right-0 p-4 bg-background flex justify-end items-center z-10 w-screen",
1127
+ closeContainerClassName
1128
+ ),
1129
+ children: /* @__PURE__ */ jsxRuntime.jsxs(
1130
+ "button",
1131
+ {
1132
+ onClick: onClose,
1133
+ className: "flex size-10 items-center justify-center rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none",
1134
+ "aria-label": "Close mobile menu",
1135
+ children: [
1136
+ /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/x", className: cn("size-4", closeIconClassName) }),
1137
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "Close" })
1138
+ ]
1139
+ }
1140
+ )
1130
1141
  }
1131
- ) }),
1142
+ ),
1132
1143
  /* @__PURE__ */ jsxRuntime.jsx(
1133
1144
  "div",
1134
1145
  {
@@ -1385,8 +1396,8 @@ var NavbarSimpleLinks = ({
1385
1396
  open: isOpen,
1386
1397
  onClose: handleMobileMenuClose,
1387
1398
  navItems: navItems ?? [],
1388
- mobileActions,
1389
- mobileActionsSlot,
1399
+ mobileActions: mobileActions ?? actions,
1400
+ mobileActionsSlot: mobileActionsSlot ?? actionsSlot,
1390
1401
  mobileMenuClassName
1391
1402
  }
1392
1403
  )
@@ -1071,6 +1071,8 @@ var NavbarMobileMenu = ({
1071
1071
  children,
1072
1072
  className,
1073
1073
  contentClassName,
1074
+ closeContainerClassName,
1075
+ closeIconClassName,
1074
1076
  title = "Mobile Navigation"
1075
1077
  }) => {
1076
1078
  React.useEffect(() => {
@@ -1095,18 +1097,27 @@ var NavbarMobileMenu = ({
1095
1097
  "data-state": open ? "open" : "closed",
1096
1098
  children: [
1097
1099
  /* @__PURE__ */ jsx("div", { className: "sr-only", children: /* @__PURE__ */ jsx("h2", { children: title }) }),
1098
- /* @__PURE__ */ jsx("div", { className: "absolute top-0 left-0 right-0 p-4 bg-background flex justify-end items-center z-10 w-screen", children: /* @__PURE__ */ jsxs(
1099
- "button",
1100
+ /* @__PURE__ */ jsx(
1101
+ "div",
1100
1102
  {
1101
- onClick: onClose,
1102
- className: "flex size-10 items-center justify-center rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none",
1103
- "aria-label": "Close mobile menu",
1104
- children: [
1105
- /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/x", className: "size-4" }),
1106
- /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" })
1107
- ]
1103
+ className: cn(
1104
+ "absolute top-0 left-0 right-0 p-4 bg-background flex justify-end items-center z-10 w-screen",
1105
+ closeContainerClassName
1106
+ ),
1107
+ children: /* @__PURE__ */ jsxs(
1108
+ "button",
1109
+ {
1110
+ onClick: onClose,
1111
+ className: "flex size-10 items-center justify-center rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none",
1112
+ "aria-label": "Close mobile menu",
1113
+ children: [
1114
+ /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/x", className: cn("size-4", closeIconClassName) }),
1115
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" })
1116
+ ]
1117
+ }
1118
+ )
1108
1119
  }
1109
- ) }),
1120
+ ),
1110
1121
  /* @__PURE__ */ jsx(
1111
1122
  "div",
1112
1123
  {
@@ -1363,8 +1374,8 @@ var NavbarSimpleLinks = ({
1363
1374
  open: isOpen,
1364
1375
  onClose: handleMobileMenuClose,
1365
1376
  navItems: navItems ?? [],
1366
- mobileActions,
1367
- mobileActionsSlot,
1377
+ mobileActions: mobileActions ?? actions,
1378
+ mobileActionsSlot: mobileActionsSlot ?? actionsSlot,
1368
1379
  mobileMenuClassName
1369
1380
  }
1370
1381
  )
@@ -1136,6 +1136,8 @@ var NavbarMobileMenu = ({
1136
1136
  children,
1137
1137
  className,
1138
1138
  contentClassName,
1139
+ closeContainerClassName,
1140
+ closeIconClassName,
1139
1141
  title = "Mobile Navigation"
1140
1142
  }) => {
1141
1143
  React__namespace.useEffect(() => {
@@ -1160,18 +1162,27 @@ var NavbarMobileMenu = ({
1160
1162
  "data-state": open ? "open" : "closed",
1161
1163
  children: [
1162
1164
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "sr-only", children: /* @__PURE__ */ jsxRuntime.jsx("h2", { children: title }) }),
1163
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute top-0 left-0 right-0 p-4 bg-background flex justify-end items-center z-10 w-screen", children: /* @__PURE__ */ jsxRuntime.jsxs(
1164
- "button",
1165
+ /* @__PURE__ */ jsxRuntime.jsx(
1166
+ "div",
1165
1167
  {
1166
- onClick: onClose,
1167
- className: "flex size-10 items-center justify-center rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none",
1168
- "aria-label": "Close mobile menu",
1169
- children: [
1170
- /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/x", className: "size-4" }),
1171
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "Close" })
1172
- ]
1168
+ className: cn(
1169
+ "absolute top-0 left-0 right-0 p-4 bg-background flex justify-end items-center z-10 w-screen",
1170
+ closeContainerClassName
1171
+ ),
1172
+ children: /* @__PURE__ */ jsxRuntime.jsxs(
1173
+ "button",
1174
+ {
1175
+ onClick: onClose,
1176
+ className: "flex size-10 items-center justify-center rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none",
1177
+ "aria-label": "Close mobile menu",
1178
+ children: [
1179
+ /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/x", className: cn("size-4", closeIconClassName) }),
1180
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "Close" })
1181
+ ]
1182
+ }
1183
+ )
1173
1184
  }
1174
- ) }),
1185
+ ),
1175
1186
  /* @__PURE__ */ jsxRuntime.jsx(
1176
1187
  "div",
1177
1188
  {