@opensite/ui 1.0.9 → 1.1.0

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 +27 -17
  2. package/dist/navbar-animated-preview.js +27 -17
  3. package/dist/navbar-centered-menu.cjs +20 -10
  4. package/dist/navbar-centered-menu.js +20 -10
  5. package/dist/navbar-dark-icons.cjs +20 -10
  6. package/dist/navbar-dark-icons.js +20 -10
  7. package/dist/navbar-dropdown-menu.cjs +20 -10
  8. package/dist/navbar-dropdown-menu.js +20 -10
  9. package/dist/navbar-education-platform.cjs +81 -56
  10. package/dist/navbar-education-platform.js +81 -56
  11. package/dist/navbar-enterprise-mega.cjs +21 -11
  12. package/dist/navbar-enterprise-mega.js +21 -11
  13. package/dist/navbar-feature-grid.cjs +20 -10
  14. package/dist/navbar-feature-grid.js +20 -10
  15. package/dist/navbar-icon-links.cjs +20 -10
  16. package/dist/navbar-icon-links.js +20 -10
  17. package/dist/navbar-image-preview.cjs +20 -10
  18. package/dist/navbar-image-preview.js +20 -10
  19. package/dist/navbar-mega-menu.cjs +20 -10
  20. package/dist/navbar-mega-menu.js +20 -10
  21. package/dist/navbar-multi-column-groups.cjs +52 -35
  22. package/dist/navbar-multi-column-groups.js +52 -35
  23. package/dist/navbar-platform-resources.cjs +20 -10
  24. package/dist/navbar-platform-resources.js +20 -10
  25. package/dist/navbar-search-focused.cjs +20 -10
  26. package/dist/navbar-search-focused.js +20 -10
  27. package/dist/navbar-sidebar-mobile.cjs +21 -10
  28. package/dist/navbar-sidebar-mobile.js +21 -10
  29. package/dist/navbar-simple-links.cjs +22 -12
  30. package/dist/navbar-simple-links.js +22 -12
  31. package/dist/navbar-split-cta.cjs +20 -10
  32. package/dist/navbar-split-cta.js +20 -10
  33. package/dist/navbar-sticky-compact.cjs +240 -123
  34. package/dist/navbar-sticky-compact.js +239 -123
  35. package/dist/navbar-tabbed-sections.cjs +20 -10
  36. package/dist/navbar-tabbed-sections.js +20 -10
  37. package/dist/navbar-transparent-overlay.cjs +21 -10
  38. package/dist/navbar-transparent-overlay.js +21 -10
  39. package/dist/registry.cjs +285 -206
  40. package/dist/registry.js +285 -206
  41. package/package.json +1 -1
@@ -6,6 +6,7 @@ import { twMerge } from 'tailwind-merge';
6
6
  import { cva } from 'class-variance-authority';
7
7
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
8
8
  import { Img } from '@page-speed/img';
9
+ import * as AccordionPrimitive from '@radix-ui/react-accordion';
9
10
  import * as NavigationMenuPrimitive from '@radix-ui/react-navigation-menu';
10
11
 
11
12
  // components/blocks/navbars/navbar-sticky-compact.tsx
@@ -970,6 +971,66 @@ var NavbarLogo = ({
970
971
  }
971
972
  );
972
973
  };
974
+ function Accordion({
975
+ ...props
976
+ }) {
977
+ return /* @__PURE__ */ jsx(AccordionPrimitive.Root, { "data-slot": "accordion", ...props });
978
+ }
979
+ function AccordionItem({
980
+ className,
981
+ ...props
982
+ }) {
983
+ return /* @__PURE__ */ jsx(
984
+ AccordionPrimitive.Item,
985
+ {
986
+ "data-slot": "accordion-item",
987
+ className: cn("border-b ", className),
988
+ ...props
989
+ }
990
+ );
991
+ }
992
+ function AccordionTrigger({
993
+ className,
994
+ children,
995
+ ...props
996
+ }) {
997
+ return /* @__PURE__ */ jsx(AccordionPrimitive.Header, { className: "flex", children: /* @__PURE__ */ jsxs(
998
+ AccordionPrimitive.Trigger,
999
+ {
1000
+ "data-slot": "accordion-trigger",
1001
+ className: cn(
1002
+ "focus-visible:border-ring focus-visible:ring-ring/50 flex flex-1 items-center justify-between gap-4 rounded-md py-4 text-left text-sm font-medium transition-all outline-none hover:underline focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 [&[data-state=open]>svg]:rotate-180",
1003
+ className
1004
+ ),
1005
+ ...props,
1006
+ children: [
1007
+ children,
1008
+ /* @__PURE__ */ jsx(
1009
+ DynamicIcon,
1010
+ {
1011
+ name: "lucide/chevron-down",
1012
+ className: "text-muted-foreground pointer-events-none size-4 shrink-0 translate-y-0.5 transition-transform duration-200"
1013
+ }
1014
+ )
1015
+ ]
1016
+ }
1017
+ ) });
1018
+ }
1019
+ function AccordionContent({
1020
+ className,
1021
+ children,
1022
+ ...props
1023
+ }) {
1024
+ return /* @__PURE__ */ jsx(
1025
+ AccordionPrimitive.Content,
1026
+ {
1027
+ "data-slot": "accordion-content",
1028
+ className: "data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden text-sm",
1029
+ ...props,
1030
+ children: /* @__PURE__ */ jsx("div", { className: cn("pt-0 pb-4", className), children })
1031
+ }
1032
+ );
1033
+ }
973
1034
  function NavigationMenu({
974
1035
  className,
975
1036
  children,
@@ -1114,6 +1175,7 @@ var NavbarMobileMenu = ({
1114
1175
  children,
1115
1176
  className,
1116
1177
  contentClassName,
1178
+ closeContainerClassName = "",
1117
1179
  title = "Mobile Navigation"
1118
1180
  }) => {
1119
1181
  React.useEffect(() => {
@@ -1138,18 +1200,27 @@ var NavbarMobileMenu = ({
1138
1200
  "data-state": open ? "open" : "closed",
1139
1201
  children: [
1140
1202
  /* @__PURE__ */ jsx("div", { className: "sr-only", children: /* @__PURE__ */ jsx("h2", { children: title }) }),
1141
- /* @__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(
1142
- "button",
1203
+ /* @__PURE__ */ jsx(
1204
+ "div",
1143
1205
  {
1144
- onClick: onClose,
1145
- 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",
1146
- "aria-label": "Close mobile menu",
1147
- children: [
1148
- /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/x", className: "size-4" }),
1149
- /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" })
1150
- ]
1206
+ className: cn(
1207
+ closeContainerClassName,
1208
+ "absolute top-0 left-0 right-0 p-4 bg-background flex justify-end items-center z-10 w-screen"
1209
+ ),
1210
+ children: /* @__PURE__ */ jsxs(
1211
+ "button",
1212
+ {
1213
+ onClick: onClose,
1214
+ 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",
1215
+ "aria-label": "Close mobile menu",
1216
+ children: [
1217
+ /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/x", className: "size-4" }),
1218
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" })
1219
+ ]
1220
+ }
1221
+ )
1151
1222
  }
1152
- ) }),
1223
+ ),
1153
1224
  /* @__PURE__ */ jsx(
1154
1225
  "div",
1155
1226
  {
@@ -1299,37 +1370,6 @@ var NavbarStickyCompact = ({
1299
1370
  ) }, index)
1300
1371
  );
1301
1372
  }, [menuSlot, menu, isScrolled]);
1302
- const renderMobileMenu = useMemo(() => {
1303
- if (menuSlot) return menuSlot;
1304
- if (!menu || menu.length === 0) return null;
1305
- return menu.map(
1306
- (item, index) => item.items ? /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
1307
- /* @__PURE__ */ jsx("div", { className: "text-sm font-medium text-muted-foreground", children: item.title }),
1308
- /* @__PURE__ */ jsx("div", { className: "flex flex-col gap-1 pl-2", children: item.items.map((subItem, subIndex) => /* @__PURE__ */ jsxs(
1309
- Pressable,
1310
- {
1311
- href: subItem.url,
1312
- className: "flex items-center gap-2 rounded-md py-2 text-sm hover:text-foreground",
1313
- onClick: () => setIsOpen(false),
1314
- children: [
1315
- subItem.icon && /* @__PURE__ */ jsx(DynamicIcon, { name: subItem.icon, size: 14 }),
1316
- subItem.title
1317
- ]
1318
- },
1319
- subIndex
1320
- )) })
1321
- ] }, index) : /* @__PURE__ */ jsx(
1322
- Pressable,
1323
- {
1324
- href: item.url,
1325
- className: "text-sm font-medium",
1326
- onClick: () => setIsOpen(false),
1327
- children: item.title
1328
- },
1329
- index
1330
- )
1331
- );
1332
- }, [menuSlot, menu]);
1333
1373
  const {
1334
1374
  sectionClasses,
1335
1375
  containerWrapperClasses,
@@ -1339,99 +1379,175 @@ var NavbarStickyCompact = ({
1339
1379
  sectionContainerMaxWidth,
1340
1380
  spacingOverride
1341
1381
  } = getNavbarLayoutClasses(layoutVariant, { className, containerClassName });
1342
- return /* @__PURE__ */ jsx(
1343
- Section,
1344
- {
1345
- background,
1346
- spacing: spacingOverride ?? spacing,
1347
- className: cn(
1348
- sectionClasses,
1349
- "fixed top-0 left-0 z-50 w-full bg-background/95 backdrop-blur-sm transition-all duration-300",
1350
- isScrolled ? "shadow-sm" : ""
1351
- ),
1352
- pattern,
1353
- patternOpacity,
1354
- containerClassName: sectionContainerClassName,
1355
- containerMaxWidth: sectionContainerMaxWidth,
1356
- children: /* @__PURE__ */ jsx("div", { className: containerWrapperClasses, children: /* @__PURE__ */ jsx("div", { className: navWrapperClasses, children: /* @__PURE__ */ jsx("div", { className: innerContainerClasses, children: /* @__PURE__ */ jsxs(
1357
- "nav",
1382
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
1383
+ /* @__PURE__ */ jsx(
1384
+ Section,
1385
+ {
1386
+ background,
1387
+ spacing: spacingOverride ?? spacing,
1388
+ className: cn(
1389
+ sectionClasses,
1390
+ "fixed top-0 left-0 z-50 w-full bg-background/95 backdrop-blur-sm transition-all duration-300",
1391
+ isScrolled ? "shadow-sm" : ""
1392
+ ),
1393
+ pattern,
1394
+ patternOpacity,
1395
+ containerClassName: sectionContainerClassName,
1396
+ containerMaxWidth: sectionContainerMaxWidth,
1397
+ children: /* @__PURE__ */ jsx("div", { className: containerWrapperClasses, children: /* @__PURE__ */ jsx("div", { className: navWrapperClasses, children: /* @__PURE__ */ jsx("div", { className: innerContainerClasses, children: /* @__PURE__ */ jsxs(
1398
+ "nav",
1399
+ {
1400
+ className: cn(
1401
+ "flex items-center justify-between transition-all duration-300",
1402
+ isScrolled ? "h-14" : "h-16",
1403
+ navClassName
1404
+ ),
1405
+ children: [
1406
+ /* @__PURE__ */ jsx(
1407
+ NavbarLogo,
1408
+ {
1409
+ logo,
1410
+ logoSlot,
1411
+ logoClassName: cn(
1412
+ isScrolled ? "[&_img]:h-6 [&_span]:text-base" : "[&_img]:h-8 [&_span]:text-lg",
1413
+ "[&_img]:transition-all [&_img]:duration-300 [&_span]:transition-all [&_span]:duration-300",
1414
+ logoClassName
1415
+ ),
1416
+ optixFlowConfig
1417
+ }
1418
+ ),
1419
+ /* @__PURE__ */ jsx(NavigationMenu, { className: "hidden lg:flex", viewport: false, children: /* @__PURE__ */ jsx(NavigationMenuList, { children: renderMenu }) }),
1420
+ /* @__PURE__ */ jsx(
1421
+ "div",
1422
+ {
1423
+ className: cn(
1424
+ "hidden items-center gap-2 lg:flex",
1425
+ actionsClassName
1426
+ ),
1427
+ children: renderAuthActions
1428
+ }
1429
+ ),
1430
+ /* @__PURE__ */ jsxs(
1431
+ Pressable,
1432
+ {
1433
+ variant: "ghost",
1434
+ size: isScrolled ? "sm" : "icon",
1435
+ asButton: true,
1436
+ className: "lg:hidden transition-all duration-300",
1437
+ onClick: () => setIsOpen(!isOpen),
1438
+ children: [
1439
+ /* @__PURE__ */ jsx(
1440
+ DynamicIcon,
1441
+ {
1442
+ name: "lucide/menu",
1443
+ size: isScrolled ? 18 : 20
1444
+ }
1445
+ ),
1446
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Toggle menu" })
1447
+ ]
1448
+ }
1449
+ )
1450
+ ]
1451
+ }
1452
+ ) }) }) })
1453
+ }
1454
+ ),
1455
+ /* @__PURE__ */ jsx(
1456
+ MobileNavigationMenu,
1457
+ {
1458
+ open: isOpen,
1459
+ setOpen: setIsOpen,
1460
+ menu: menu ?? [],
1461
+ menuSlot,
1462
+ authActions,
1463
+ authActionsSlot
1464
+ }
1465
+ )
1466
+ ] });
1467
+ };
1468
+ var MobileNavigationMenu = ({
1469
+ open,
1470
+ setOpen,
1471
+ menu,
1472
+ menuSlot,
1473
+ authActions,
1474
+ authActionsSlot
1475
+ }) => {
1476
+ const handleClose = () => setOpen(false);
1477
+ const renderMobileAuthActions = useMemo(() => {
1478
+ if (authActionsSlot) return authActionsSlot;
1479
+ if (!authActions || authActions.length === 0) return null;
1480
+ return /* @__PURE__ */ jsx("div", { className: "mt-6 flex flex-col gap-4", children: authActions.map((action, index) => {
1481
+ const {
1482
+ label,
1483
+ icon,
1484
+ iconAfter,
1485
+ children,
1486
+ className: actionClassName,
1487
+ ...pressableProps
1488
+ } = action;
1489
+ return /* @__PURE__ */ jsx(
1490
+ Pressable,
1358
1491
  {
1359
- className: cn(
1360
- "flex items-center justify-between transition-all duration-300",
1361
- isScrolled ? "h-14" : "h-16",
1362
- navClassName
1363
- ),
1492
+ asButton: true,
1493
+ className: cn("w-full", actionClassName),
1494
+ onClick: handleClose,
1495
+ ...pressableProps,
1496
+ children: children ?? /* @__PURE__ */ jsxs(Fragment, { children: [
1497
+ icon,
1498
+ label,
1499
+ iconAfter
1500
+ ] })
1501
+ },
1502
+ index
1503
+ );
1504
+ }) });
1505
+ }, [authActionsSlot, authActions]);
1506
+ 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: [
1507
+ /* @__PURE__ */ jsx(Accordion, { type: "multiple", className: "w-full", children: menuSlot ? menuSlot : menu.map(
1508
+ (item, index) => item.items ? /* @__PURE__ */ jsxs(
1509
+ AccordionItem,
1510
+ {
1511
+ value: `nav-${index}`,
1512
+ className: "border-b-0",
1364
1513
  children: [
1365
- /* @__PURE__ */ jsx(
1366
- NavbarLogo,
1367
- {
1368
- logo,
1369
- logoSlot,
1370
- logoClassName: cn(
1371
- isScrolled ? "[&_img]:h-6 [&_span]:text-base" : "[&_img]:h-8 [&_span]:text-lg",
1372
- "[&_img]:transition-all [&_img]:duration-300 [&_span]:transition-all [&_span]:duration-300",
1373
- logoClassName
1374
- ),
1375
- optixFlowConfig
1376
- }
1377
- ),
1378
- /* @__PURE__ */ jsx(NavigationMenu, { className: "hidden lg:flex", children: /* @__PURE__ */ jsx(NavigationMenuList, { children: renderMenu }) }),
1379
- /* @__PURE__ */ jsx(
1380
- "div",
1381
- {
1382
- className: cn(
1383
- "hidden items-center gap-2 lg:flex",
1384
- actionsClassName
1385
- ),
1386
- children: renderAuthActions
1387
- }
1388
- ),
1389
- /* @__PURE__ */ jsxs(
1514
+ /* @__PURE__ */ jsx(AccordionTrigger, { className: "h-15 items-center p-0 px-4! text-base leading-[3.75] font-normal text-muted-foreground hover:bg-muted hover:no-underline", children: item.title }),
1515
+ /* @__PURE__ */ jsx(AccordionContent, { className: "overflow-x-none", children: item.items.map((subItem, subIndex) => /* @__PURE__ */ jsxs(
1390
1516
  Pressable,
1391
1517
  {
1392
- variant: "ghost",
1393
- size: isScrolled ? "sm" : "icon",
1394
- asButton: true,
1395
- className: "lg:hidden transition-all duration-300",
1396
- onClick: () => setIsOpen(!isOpen),
1518
+ href: subItem.url,
1519
+ className: "flex min-h-12 items-center gap-2 rounded-lg px-4 text-muted-foreground transition-colors duration-300 hover:bg-muted hover:text-foreground",
1520
+ onClick: handleClose,
1397
1521
  children: [
1398
- /* @__PURE__ */ jsx(
1522
+ subItem.icon && /* @__PURE__ */ jsx(
1399
1523
  DynamicIcon,
1400
1524
  {
1401
- name: "lucide/menu",
1402
- size: isScrolled ? 18 : 20
1525
+ name: subItem.icon,
1526
+ size: 16,
1527
+ className: "stroke-muted-foreground"
1403
1528
  }
1404
1529
  ),
1405
- /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Toggle menu" })
1530
+ subItem.title
1406
1531
  ]
1407
- }
1408
- ),
1409
- /* @__PURE__ */ jsx(
1410
- NavbarMobileMenu,
1411
- {
1412
- open: isOpen,
1413
- onClose: () => setIsOpen(false),
1414
- title: "Navigation Menu",
1415
- children: /* @__PURE__ */ jsx("div", { className: "max-w-screen-sm mx-auto", children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-4", children: [
1416
- renderMobileMenu,
1417
- /* @__PURE__ */ jsx(
1418
- "div",
1419
- {
1420
- className: cn(
1421
- "mt-4 flex flex-col gap-2 border-t pt-4",
1422
- actionsClassName
1423
- ),
1424
- children: renderAuthActions
1425
- }
1426
- )
1427
- ] }) })
1428
- }
1429
- )
1532
+ },
1533
+ `mobile-link-${index}-${subIndex}`
1534
+ )) })
1430
1535
  ]
1431
- }
1432
- ) }) }) })
1433
- }
1434
- );
1536
+ },
1537
+ `nav-item-${index}`
1538
+ ) : /* @__PURE__ */ jsx(
1539
+ Pressable,
1540
+ {
1541
+ href: item.url,
1542
+ className: "flex h-15 items-center rounded-md p-0 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",
1543
+ onClick: handleClose,
1544
+ children: item.title
1545
+ },
1546
+ `nav-link-${index}`
1547
+ )
1548
+ ) }),
1549
+ renderMobileAuthActions
1550
+ ] }) }) });
1435
1551
  };
1436
1552
 
1437
1553
  export { NavbarStickyCompact };
@@ -1138,6 +1138,7 @@ var NavbarMobileMenu = ({
1138
1138
  children,
1139
1139
  className,
1140
1140
  contentClassName,
1141
+ closeContainerClassName = "",
1141
1142
  title = "Mobile Navigation"
1142
1143
  }) => {
1143
1144
  React__namespace.useEffect(() => {
@@ -1162,18 +1163,27 @@ var NavbarMobileMenu = ({
1162
1163
  "data-state": open ? "open" : "closed",
1163
1164
  children: [
1164
1165
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "sr-only", children: /* @__PURE__ */ jsxRuntime.jsx("h2", { children: title }) }),
1165
- /* @__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(
1166
- "button",
1166
+ /* @__PURE__ */ jsxRuntime.jsx(
1167
+ "div",
1167
1168
  {
1168
- onClick: onClose,
1169
- 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",
1170
- "aria-label": "Close mobile menu",
1171
- children: [
1172
- /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/x", className: "size-4" }),
1173
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "Close" })
1174
- ]
1169
+ className: cn(
1170
+ closeContainerClassName,
1171
+ "absolute top-0 left-0 right-0 p-4 bg-background flex justify-end items-center z-10 w-screen"
1172
+ ),
1173
+ children: /* @__PURE__ */ jsxRuntime.jsxs(
1174
+ "button",
1175
+ {
1176
+ onClick: onClose,
1177
+ 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",
1178
+ "aria-label": "Close mobile menu",
1179
+ children: [
1180
+ /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/x", className: "size-4" }),
1181
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "Close" })
1182
+ ]
1183
+ }
1184
+ )
1175
1185
  }
1176
- ) }),
1186
+ ),
1177
1187
  /* @__PURE__ */ jsxRuntime.jsx(
1178
1188
  "div",
1179
1189
  {
@@ -1115,6 +1115,7 @@ var NavbarMobileMenu = ({
1115
1115
  children,
1116
1116
  className,
1117
1117
  contentClassName,
1118
+ closeContainerClassName = "",
1118
1119
  title = "Mobile Navigation"
1119
1120
  }) => {
1120
1121
  React.useEffect(() => {
@@ -1139,18 +1140,27 @@ var NavbarMobileMenu = ({
1139
1140
  "data-state": open ? "open" : "closed",
1140
1141
  children: [
1141
1142
  /* @__PURE__ */ jsx("div", { className: "sr-only", children: /* @__PURE__ */ jsx("h2", { children: title }) }),
1142
- /* @__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(
1143
- "button",
1143
+ /* @__PURE__ */ jsx(
1144
+ "div",
1144
1145
  {
1145
- onClick: onClose,
1146
- 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",
1147
- "aria-label": "Close mobile menu",
1148
- children: [
1149
- /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/x", className: "size-4" }),
1150
- /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" })
1151
- ]
1146
+ className: cn(
1147
+ closeContainerClassName,
1148
+ "absolute top-0 left-0 right-0 p-4 bg-background flex justify-end items-center z-10 w-screen"
1149
+ ),
1150
+ children: /* @__PURE__ */ jsxs(
1151
+ "button",
1152
+ {
1153
+ onClick: onClose,
1154
+ 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",
1155
+ "aria-label": "Close mobile menu",
1156
+ children: [
1157
+ /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/x", className: "size-4" }),
1158
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" })
1159
+ ]
1160
+ }
1161
+ )
1152
1162
  }
1153
- ) }),
1163
+ ),
1154
1164
  /* @__PURE__ */ jsx(
1155
1165
  "div",
1156
1166
  {
@@ -998,6 +998,7 @@ var NavbarMobileMenu = ({
998
998
  children,
999
999
  className,
1000
1000
  contentClassName,
1001
+ closeContainerClassName = "",
1001
1002
  title = "Mobile Navigation"
1002
1003
  }) => {
1003
1004
  React__namespace.useEffect(() => {
@@ -1022,18 +1023,27 @@ var NavbarMobileMenu = ({
1022
1023
  "data-state": open ? "open" : "closed",
1023
1024
  children: [
1024
1025
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "sr-only", children: /* @__PURE__ */ jsxRuntime.jsx("h2", { children: title }) }),
1025
- /* @__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(
1026
- "button",
1026
+ /* @__PURE__ */ jsxRuntime.jsx(
1027
+ "div",
1027
1028
  {
1028
- onClick: onClose,
1029
- 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",
1030
- "aria-label": "Close mobile menu",
1031
- children: [
1032
- /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/x", className: "size-4" }),
1033
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "Close" })
1034
- ]
1029
+ className: cn(
1030
+ closeContainerClassName,
1031
+ "absolute top-0 left-0 right-0 p-4 bg-background flex justify-end items-center z-10 w-screen"
1032
+ ),
1033
+ children: /* @__PURE__ */ jsxRuntime.jsxs(
1034
+ "button",
1035
+ {
1036
+ onClick: onClose,
1037
+ 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",
1038
+ "aria-label": "Close mobile menu",
1039
+ children: [
1040
+ /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/x", className: "size-4" }),
1041
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "Close" })
1042
+ ]
1043
+ }
1044
+ )
1035
1045
  }
1036
- ) }),
1046
+ ),
1037
1047
  /* @__PURE__ */ jsxRuntime.jsx(
1038
1048
  "div",
1039
1049
  {
@@ -1488,6 +1498,7 @@ var MobileNavigationMenu = ({
1488
1498
  title: "Mobile Navigation",
1489
1499
  className: cn("bg-black/95", mobileMenuClassName),
1490
1500
  contentClassName: "flex flex-col items-center justify-center",
1501
+ closeContainerClassName: "bg-black/95",
1491
1502
  children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex h-full flex-col items-center justify-center", children: [
1492
1503
  /* @__PURE__ */ jsxRuntime.jsx("nav", { className: "flex flex-col items-center gap-8", children: navItems?.map((item, index) => /* @__PURE__ */ jsxRuntime.jsxs(
1493
1504
  Pressable,
@@ -976,6 +976,7 @@ var NavbarMobileMenu = ({
976
976
  children,
977
977
  className,
978
978
  contentClassName,
979
+ closeContainerClassName = "",
979
980
  title = "Mobile Navigation"
980
981
  }) => {
981
982
  React.useEffect(() => {
@@ -1000,18 +1001,27 @@ var NavbarMobileMenu = ({
1000
1001
  "data-state": open ? "open" : "closed",
1001
1002
  children: [
1002
1003
  /* @__PURE__ */ jsx("div", { className: "sr-only", children: /* @__PURE__ */ jsx("h2", { children: title }) }),
1003
- /* @__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(
1004
- "button",
1004
+ /* @__PURE__ */ jsx(
1005
+ "div",
1005
1006
  {
1006
- onClick: onClose,
1007
- 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",
1008
- "aria-label": "Close mobile menu",
1009
- children: [
1010
- /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/x", className: "size-4" }),
1011
- /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" })
1012
- ]
1007
+ className: cn(
1008
+ closeContainerClassName,
1009
+ "absolute top-0 left-0 right-0 p-4 bg-background flex justify-end items-center z-10 w-screen"
1010
+ ),
1011
+ children: /* @__PURE__ */ jsxs(
1012
+ "button",
1013
+ {
1014
+ onClick: onClose,
1015
+ 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",
1016
+ "aria-label": "Close mobile menu",
1017
+ children: [
1018
+ /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/x", className: "size-4" }),
1019
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" })
1020
+ ]
1021
+ }
1022
+ )
1013
1023
  }
1014
- ) }),
1024
+ ),
1015
1025
  /* @__PURE__ */ jsx(
1016
1026
  "div",
1017
1027
  {
@@ -1466,6 +1476,7 @@ var MobileNavigationMenu = ({
1466
1476
  title: "Mobile Navigation",
1467
1477
  className: cn("bg-black/95", mobileMenuClassName),
1468
1478
  contentClassName: "flex flex-col items-center justify-center",
1479
+ closeContainerClassName: "bg-black/95",
1469
1480
  children: /* @__PURE__ */ jsxs("div", { className: "flex h-full flex-col items-center justify-center", children: [
1470
1481
  /* @__PURE__ */ jsx("nav", { className: "flex flex-col items-center gap-8", children: navItems?.map((item, index) => /* @__PURE__ */ jsxs(
1471
1482
  Pressable,