@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
@@ -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,8 @@ var NavbarMobileMenu = ({
1114
1175
  children,
1115
1176
  className,
1116
1177
  contentClassName,
1178
+ closeContainerClassName,
1179
+ closeIconClassName,
1117
1180
  title = "Mobile Navigation"
1118
1181
  }) => {
1119
1182
  React.useEffect(() => {
@@ -1138,18 +1201,27 @@ var NavbarMobileMenu = ({
1138
1201
  "data-state": open ? "open" : "closed",
1139
1202
  children: [
1140
1203
  /* @__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",
1204
+ /* @__PURE__ */ jsx(
1205
+ "div",
1143
1206
  {
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
- ]
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
+ )
1151
1223
  }
1152
- ) }),
1224
+ ),
1153
1225
  /* @__PURE__ */ jsx(
1154
1226
  "div",
1155
1227
  {
@@ -1299,37 +1371,6 @@ var NavbarStickyCompact = ({
1299
1371
  ) }, index)
1300
1372
  );
1301
1373
  }, [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
1374
  const {
1334
1375
  sectionClasses,
1335
1376
  containerWrapperClasses,
@@ -1339,99 +1380,165 @@ var NavbarStickyCompact = ({
1339
1380
  sectionContainerMaxWidth,
1340
1381
  spacingOverride
1341
1382
  } = 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",
1383
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
1384
+ /* @__PURE__ */ jsx(
1385
+ Section,
1386
+ {
1387
+ background,
1388
+ spacing: spacingOverride ?? spacing,
1389
+ className: cn(
1390
+ sectionClasses,
1391
+ "fixed top-0 left-0 z-50 w-full bg-background/95 backdrop-blur-sm transition-all duration-300",
1392
+ isScrolled ? "shadow-sm" : ""
1393
+ ),
1394
+ pattern,
1395
+ patternOpacity,
1396
+ containerClassName: sectionContainerClassName,
1397
+ containerMaxWidth: sectionContainerMaxWidth,
1398
+ children: /* @__PURE__ */ jsx("div", { className: containerWrapperClasses, children: /* @__PURE__ */ jsx("div", { className: navWrapperClasses, children: /* @__PURE__ */ jsx("div", { className: innerContainerClasses, children: /* @__PURE__ */ jsxs(
1399
+ "nav",
1400
+ {
1401
+ className: cn(
1402
+ "flex items-center justify-between transition-all duration-300",
1403
+ isScrolled ? "h-14" : "h-16",
1404
+ navClassName
1405
+ ),
1406
+ children: [
1407
+ /* @__PURE__ */ jsx(
1408
+ NavbarLogo,
1409
+ {
1410
+ logo,
1411
+ logoSlot,
1412
+ logoClassName,
1413
+ optixFlowConfig
1414
+ }
1415
+ ),
1416
+ /* @__PURE__ */ jsx(NavigationMenu, { className: "hidden lg:flex", viewport: false, children: /* @__PURE__ */ jsx(NavigationMenuList, { children: renderMenu }) }),
1417
+ /* @__PURE__ */ jsx(
1418
+ "div",
1419
+ {
1420
+ className: cn(
1421
+ "hidden items-center gap-2 lg:flex",
1422
+ actionsClassName
1423
+ ),
1424
+ children: renderAuthActions
1425
+ }
1426
+ ),
1427
+ /* @__PURE__ */ jsxs(
1428
+ Pressable,
1429
+ {
1430
+ variant: "ghost",
1431
+ size: isScrolled ? "sm" : "icon",
1432
+ asButton: true,
1433
+ className: "lg:hidden transition-all duration-300",
1434
+ onClick: () => setIsOpen(!isOpen),
1435
+ children: [
1436
+ /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/menu", size: isScrolled ? 18 : 20 }),
1437
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Toggle menu" })
1438
+ ]
1439
+ }
1440
+ )
1441
+ ]
1442
+ }
1443
+ ) }) }) })
1444
+ }
1445
+ ),
1446
+ /* @__PURE__ */ jsx(
1447
+ MobileNavigationMenu,
1448
+ {
1449
+ open: isOpen,
1450
+ setOpen: setIsOpen,
1451
+ menu: menu ?? [],
1452
+ menuSlot,
1453
+ authActions,
1454
+ authActionsSlot
1455
+ }
1456
+ )
1457
+ ] });
1458
+ };
1459
+ var MobileNavigationMenu = ({
1460
+ open,
1461
+ setOpen,
1462
+ menu,
1463
+ menuSlot,
1464
+ authActions,
1465
+ authActionsSlot
1466
+ }) => {
1467
+ const handleClose = () => setOpen(false);
1468
+ const renderMobileAuthActions = useMemo(() => {
1469
+ if (authActionsSlot) return authActionsSlot;
1470
+ if (!authActions || authActions.length === 0) return null;
1471
+ return /* @__PURE__ */ jsx("div", { className: "mt-6 flex flex-col gap-4", children: authActions.map((action, index) => {
1472
+ const {
1473
+ label,
1474
+ icon,
1475
+ iconAfter,
1476
+ children,
1477
+ className: actionClassName,
1478
+ ...pressableProps
1479
+ } = action;
1480
+ return /* @__PURE__ */ jsx(
1481
+ Pressable,
1358
1482
  {
1359
- className: cn(
1360
- "flex items-center justify-between transition-all duration-300",
1361
- isScrolled ? "h-14" : "h-16",
1362
- navClassName
1363
- ),
1483
+ asButton: true,
1484
+ className: cn("w-full", actionClassName),
1485
+ onClick: handleClose,
1486
+ ...pressableProps,
1487
+ children: children ?? /* @__PURE__ */ jsxs(Fragment, { children: [
1488
+ icon,
1489
+ label,
1490
+ iconAfter
1491
+ ] })
1492
+ },
1493
+ index
1494
+ );
1495
+ }) });
1496
+ }, [authActionsSlot, authActions]);
1497
+ 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: [
1498
+ /* @__PURE__ */ jsx(Accordion, { type: "multiple", className: "w-full", children: menuSlot ? menuSlot : menu.map(
1499
+ (item, index) => item.items ? /* @__PURE__ */ jsxs(
1500
+ AccordionItem,
1501
+ {
1502
+ value: `nav-${index}`,
1503
+ className: "border-b-0",
1364
1504
  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(
1505
+ /* @__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 }),
1506
+ /* @__PURE__ */ jsx(AccordionContent, { className: "overflow-x-none", children: item.items.map((subItem, subIndex) => /* @__PURE__ */ jsxs(
1390
1507
  Pressable,
1391
1508
  {
1392
- variant: "ghost",
1393
- size: isScrolled ? "sm" : "icon",
1394
- asButton: true,
1395
- className: "lg:hidden transition-all duration-300",
1396
- onClick: () => setIsOpen(!isOpen),
1509
+ href: subItem.url,
1510
+ 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",
1511
+ onClick: handleClose,
1397
1512
  children: [
1398
- /* @__PURE__ */ jsx(
1513
+ subItem.icon && /* @__PURE__ */ jsx(
1399
1514
  DynamicIcon,
1400
1515
  {
1401
- name: "lucide/menu",
1402
- size: isScrolled ? 18 : 20
1516
+ name: subItem.icon,
1517
+ size: 16,
1518
+ className: "stroke-muted-foreground"
1403
1519
  }
1404
1520
  ),
1405
- /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Toggle menu" })
1521
+ subItem.title
1406
1522
  ]
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
- )
1523
+ },
1524
+ `mobile-link-${index}-${subIndex}`
1525
+ )) })
1430
1526
  ]
1431
- }
1432
- ) }) }) })
1433
- }
1434
- );
1527
+ },
1528
+ `nav-item-${index}`
1529
+ ) : /* @__PURE__ */ jsx(
1530
+ Pressable,
1531
+ {
1532
+ href: item.url,
1533
+ 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",
1534
+ onClick: handleClose,
1535
+ children: item.title
1536
+ },
1537
+ `nav-link-${index}`
1538
+ )
1539
+ ) }),
1540
+ renderMobileAuthActions
1541
+ ] }) }) });
1435
1542
  };
1436
1543
 
1437
1544
  export { NavbarStickyCompact };
@@ -1138,6 +1138,8 @@ var NavbarMobileMenu = ({
1138
1138
  children,
1139
1139
  className,
1140
1140
  contentClassName,
1141
+ closeContainerClassName,
1142
+ closeIconClassName,
1141
1143
  title = "Mobile Navigation"
1142
1144
  }) => {
1143
1145
  React__namespace.useEffect(() => {
@@ -1162,18 +1164,27 @@ var NavbarMobileMenu = ({
1162
1164
  "data-state": open ? "open" : "closed",
1163
1165
  children: [
1164
1166
  /* @__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",
1167
+ /* @__PURE__ */ jsxRuntime.jsx(
1168
+ "div",
1167
1169
  {
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
- ]
1170
+ className: cn(
1171
+ "absolute top-0 left-0 right-0 p-4 bg-background flex justify-end items-center z-10 w-screen",
1172
+ closeContainerClassName
1173
+ ),
1174
+ children: /* @__PURE__ */ jsxRuntime.jsxs(
1175
+ "button",
1176
+ {
1177
+ onClick: onClose,
1178
+ 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",
1179
+ "aria-label": "Close mobile menu",
1180
+ children: [
1181
+ /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/x", className: cn("size-4", closeIconClassName) }),
1182
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "Close" })
1183
+ ]
1184
+ }
1185
+ )
1175
1186
  }
1176
- ) }),
1187
+ ),
1177
1188
  /* @__PURE__ */ jsxRuntime.jsx(
1178
1189
  "div",
1179
1190
  {
@@ -1115,6 +1115,8 @@ var NavbarMobileMenu = ({
1115
1115
  children,
1116
1116
  className,
1117
1117
  contentClassName,
1118
+ closeContainerClassName,
1119
+ closeIconClassName,
1118
1120
  title = "Mobile Navigation"
1119
1121
  }) => {
1120
1122
  React.useEffect(() => {
@@ -1139,18 +1141,27 @@ var NavbarMobileMenu = ({
1139
1141
  "data-state": open ? "open" : "closed",
1140
1142
  children: [
1141
1143
  /* @__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",
1144
+ /* @__PURE__ */ jsx(
1145
+ "div",
1144
1146
  {
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
- ]
1147
+ className: cn(
1148
+ "absolute top-0 left-0 right-0 p-4 bg-background flex justify-end items-center z-10 w-screen",
1149
+ closeContainerClassName
1150
+ ),
1151
+ children: /* @__PURE__ */ jsxs(
1152
+ "button",
1153
+ {
1154
+ onClick: onClose,
1155
+ 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",
1156
+ "aria-label": "Close mobile menu",
1157
+ children: [
1158
+ /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/x", className: cn("size-4", closeIconClassName) }),
1159
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" })
1160
+ ]
1161
+ }
1162
+ )
1152
1163
  }
1153
- ) }),
1164
+ ),
1154
1165
  /* @__PURE__ */ jsx(
1155
1166
  "div",
1156
1167
  {
@@ -998,6 +998,8 @@ var NavbarMobileMenu = ({
998
998
  children,
999
999
  className,
1000
1000
  contentClassName,
1001
+ closeContainerClassName,
1002
+ closeIconClassName,
1001
1003
  title = "Mobile Navigation"
1002
1004
  }) => {
1003
1005
  React__namespace.useEffect(() => {
@@ -1022,18 +1024,27 @@ var NavbarMobileMenu = ({
1022
1024
  "data-state": open ? "open" : "closed",
1023
1025
  children: [
1024
1026
  /* @__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",
1027
+ /* @__PURE__ */ jsxRuntime.jsx(
1028
+ "div",
1027
1029
  {
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
- ]
1030
+ className: cn(
1031
+ "absolute top-0 left-0 right-0 p-4 bg-background flex justify-end items-center z-10 w-screen",
1032
+ closeContainerClassName
1033
+ ),
1034
+ children: /* @__PURE__ */ jsxRuntime.jsxs(
1035
+ "button",
1036
+ {
1037
+ onClick: onClose,
1038
+ 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",
1039
+ "aria-label": "Close mobile menu",
1040
+ children: [
1041
+ /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/x", className: cn("size-4", closeIconClassName) }),
1042
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "Close" })
1043
+ ]
1044
+ }
1045
+ )
1035
1046
  }
1036
- ) }),
1047
+ ),
1037
1048
  /* @__PURE__ */ jsxRuntime.jsx(
1038
1049
  "div",
1039
1050
  {
@@ -1488,6 +1499,8 @@ var MobileNavigationMenu = ({
1488
1499
  title: "Mobile Navigation",
1489
1500
  className: cn("bg-black/95", mobileMenuClassName),
1490
1501
  contentClassName: "flex flex-col items-center justify-center",
1502
+ closeContainerClassName: "bg-black/95",
1503
+ closeIconClassName: "text-white",
1491
1504
  children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex h-full flex-col items-center justify-center", children: [
1492
1505
  /* @__PURE__ */ jsxRuntime.jsx("nav", { className: "flex flex-col items-center gap-8", children: navItems?.map((item, index) => /* @__PURE__ */ jsxRuntime.jsxs(
1493
1506
  Pressable,
@@ -976,6 +976,8 @@ var NavbarMobileMenu = ({
976
976
  children,
977
977
  className,
978
978
  contentClassName,
979
+ closeContainerClassName,
980
+ closeIconClassName,
979
981
  title = "Mobile Navigation"
980
982
  }) => {
981
983
  React.useEffect(() => {
@@ -1000,18 +1002,27 @@ var NavbarMobileMenu = ({
1000
1002
  "data-state": open ? "open" : "closed",
1001
1003
  children: [
1002
1004
  /* @__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",
1005
+ /* @__PURE__ */ jsx(
1006
+ "div",
1005
1007
  {
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
- ]
1008
+ className: cn(
1009
+ "absolute top-0 left-0 right-0 p-4 bg-background flex justify-end items-center z-10 w-screen",
1010
+ closeContainerClassName
1011
+ ),
1012
+ children: /* @__PURE__ */ jsxs(
1013
+ "button",
1014
+ {
1015
+ onClick: onClose,
1016
+ 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",
1017
+ "aria-label": "Close mobile menu",
1018
+ children: [
1019
+ /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/x", className: cn("size-4", closeIconClassName) }),
1020
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" })
1021
+ ]
1022
+ }
1023
+ )
1013
1024
  }
1014
- ) }),
1025
+ ),
1015
1026
  /* @__PURE__ */ jsx(
1016
1027
  "div",
1017
1028
  {
@@ -1466,6 +1477,8 @@ var MobileNavigationMenu = ({
1466
1477
  title: "Mobile Navigation",
1467
1478
  className: cn("bg-black/95", mobileMenuClassName),
1468
1479
  contentClassName: "flex flex-col items-center justify-center",
1480
+ closeContainerClassName: "bg-black/95",
1481
+ closeIconClassName: "text-white",
1469
1482
  children: /* @__PURE__ */ jsxs("div", { className: "flex h-full flex-col items-center justify-center", children: [
1470
1483
  /* @__PURE__ */ jsx("nav", { className: "flex flex-col items-center gap-8", children: navItems?.map((item, index) => /* @__PURE__ */ jsxs(
1471
1484
  Pressable,