@opensite/ui 1.0.3 → 1.0.5

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 (47) hide show
  1. package/dist/navbar-animated-preview.cjs +67 -82
  2. package/dist/navbar-animated-preview.js +67 -81
  3. package/dist/navbar-centered-menu.cjs +101 -125
  4. package/dist/navbar-centered-menu.js +101 -124
  5. package/dist/navbar-dark-icons.cjs +67 -81
  6. package/dist/navbar-dark-icons.js +67 -80
  7. package/dist/navbar-dropdown-menu.cjs +87 -122
  8. package/dist/navbar-dropdown-menu.js +87 -121
  9. package/dist/navbar-education-platform.cjs +1 -1
  10. package/dist/navbar-education-platform.js +1 -1
  11. package/dist/navbar-enterprise-mega.cjs +7 -7
  12. package/dist/navbar-enterprise-mega.js +7 -7
  13. package/dist/navbar-feature-grid.cjs +131 -150
  14. package/dist/navbar-feature-grid.d.cts +9 -1
  15. package/dist/navbar-feature-grid.d.ts +9 -1
  16. package/dist/navbar-feature-grid.js +131 -149
  17. package/dist/navbar-floating-pill.cjs +2 -2
  18. package/dist/navbar-floating-pill.js +2 -2
  19. package/dist/navbar-fullscreen-menu.cjs +1 -1
  20. package/dist/navbar-fullscreen-menu.js +1 -1
  21. package/dist/navbar-icon-links.cjs +102 -138
  22. package/dist/navbar-icon-links.js +102 -137
  23. package/dist/navbar-image-preview.cjs +64 -95
  24. package/dist/navbar-image-preview.js +64 -94
  25. package/dist/navbar-mega-menu.cjs +1 -1
  26. package/dist/navbar-mega-menu.js +1 -1
  27. package/dist/navbar-multi-column-groups.cjs +67 -81
  28. package/dist/navbar-multi-column-groups.js +67 -80
  29. package/dist/navbar-platform-resources.cjs +80 -42
  30. package/dist/navbar-platform-resources.js +80 -42
  31. package/dist/navbar-search-focused.cjs +76 -93
  32. package/dist/navbar-search-focused.js +76 -92
  33. package/dist/navbar-sidebar-mobile.cjs +76 -93
  34. package/dist/navbar-sidebar-mobile.js +76 -92
  35. package/dist/navbar-simple-links.cjs +1 -1
  36. package/dist/navbar-simple-links.js +1 -1
  37. package/dist/navbar-split-cta.cjs +78 -95
  38. package/dist/navbar-split-cta.js +78 -94
  39. package/dist/navbar-sticky-compact.cjs +82 -100
  40. package/dist/navbar-sticky-compact.js +82 -99
  41. package/dist/navbar-tabbed-sections.cjs +91 -115
  42. package/dist/navbar-tabbed-sections.js +91 -114
  43. package/dist/navbar-transparent-overlay.cjs +1 -1
  44. package/dist/navbar-transparent-overlay.js +1 -1
  45. package/dist/registry.cjs +594 -618
  46. package/dist/registry.js +593 -617
  47. package/package.json +1 -1
@@ -8,7 +8,6 @@ var tailwindMerge = require('tailwind-merge');
8
8
  var classVarianceAuthority = require('class-variance-authority');
9
9
  var jsxRuntime = require('react/jsx-runtime');
10
10
  var AccordionPrimitive = require('@radix-ui/react-accordion');
11
- var SheetPrimitive = require('@radix-ui/react-dialog');
12
11
  var img = require('@page-speed/img');
13
12
 
14
13
  function _interopNamespace(e) {
@@ -32,7 +31,6 @@ function _interopNamespace(e) {
32
31
  var React__namespace = /*#__PURE__*/_interopNamespace(React);
33
32
  var NavigationMenuPrimitive__namespace = /*#__PURE__*/_interopNamespace(NavigationMenuPrimitive);
34
33
  var AccordionPrimitive__namespace = /*#__PURE__*/_interopNamespace(AccordionPrimitive);
35
- var SheetPrimitive__namespace = /*#__PURE__*/_interopNamespace(SheetPrimitive);
36
34
 
37
35
  // components/blocks/navbars/navbar-centered-menu.tsx
38
36
  function cn(...inputs) {
@@ -828,14 +826,14 @@ function PatternBackground({
828
826
  );
829
827
  }
830
828
  if (pattern in patternOverlays) {
831
- const Overlay2 = patternOverlays[pattern];
829
+ const Overlay = patternOverlays[pattern];
832
830
  return /* @__PURE__ */ jsxRuntime.jsx(
833
831
  "div",
834
832
  {
835
833
  className: cn("pointer-events-none absolute inset-0 z-0", className),
836
834
  style: { opacity, ...style },
837
835
  "aria-hidden": "true",
838
- children: Overlay2()
836
+ children: Overlay()
839
837
  }
840
838
  );
841
839
  }
@@ -1087,90 +1085,62 @@ function NavigationMenuLink({
1087
1085
  }
1088
1086
  );
1089
1087
  }
1090
- function Sheet({ ...props }) {
1091
- return /* @__PURE__ */ jsxRuntime.jsx(SheetPrimitive__namespace.Root, { "data-slot": "sheet", ...props });
1092
- }
1093
- function SheetTrigger({
1094
- ...props
1095
- }) {
1096
- return /* @__PURE__ */ jsxRuntime.jsx(SheetPrimitive__namespace.Trigger, { "data-slot": "sheet-trigger", ...props });
1097
- }
1098
- function SheetPortal({
1099
- ...props
1100
- }) {
1101
- return /* @__PURE__ */ jsxRuntime.jsx(SheetPrimitive__namespace.Portal, { "data-slot": "sheet-portal", ...props });
1102
- }
1103
- function SheetOverlay({
1088
+ var NavbarMobileMenu = ({
1089
+ open,
1090
+ onClose,
1091
+ children,
1104
1092
  className,
1105
- ...props
1106
- }) {
1107
- return /* @__PURE__ */ jsxRuntime.jsx(
1108
- SheetPrimitive__namespace.Overlay,
1093
+ contentClassName,
1094
+ title = "Mobile Navigation"
1095
+ }) => {
1096
+ React__namespace.useEffect(() => {
1097
+ if (open) {
1098
+ const originalOverflow = document.body.style.overflow;
1099
+ document.body.style.overflow = "hidden";
1100
+ return () => {
1101
+ document.body.style.overflow = originalOverflow;
1102
+ };
1103
+ }
1104
+ }, [open]);
1105
+ if (!open) return null;
1106
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1107
+ "div",
1109
1108
  {
1110
- "data-slot": "sheet-overlay",
1111
1109
  className: cn(
1112
- "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",
1110
+ "fixed inset-0 z-[998] flex flex-col bg-background",
1111
+ "animate-in slide-in-from-top duration-300",
1112
+ "data-[state=closed]:animate-out data-[state=closed]:slide-out-to-top data-[state=closed]:duration-300",
1113
1113
  className
1114
1114
  ),
1115
- ...props
1116
- }
1117
- );
1118
- }
1119
- function SheetContent({
1120
- className,
1121
- children,
1122
- side = "right",
1123
- ...props
1124
- }) {
1125
- return /* @__PURE__ */ jsxRuntime.jsxs(SheetPortal, { children: [
1126
- /* @__PURE__ */ jsxRuntime.jsx(SheetOverlay, {}),
1127
- /* @__PURE__ */ jsxRuntime.jsxs(
1128
- SheetPrimitive__namespace.Content,
1129
- {
1130
- "data-slot": "sheet-content",
1131
- className: cn(
1132
- "bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500",
1133
- side === "right" && "data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm",
1134
- side === "left" && "data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm",
1135
- side === "top" && "data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b",
1136
- side === "bottom" && "data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t",
1137
- className
1138
- ),
1139
- ...props,
1140
- children: [
1141
- children,
1142
- /* @__PURE__ */ jsxRuntime.jsxs(SheetPrimitive__namespace.Close, { className: "ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none", children: [
1143
- /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/x", className: "size-4" }),
1144
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "Close" })
1145
- ] })
1146
- ]
1147
- }
1148
- )
1149
- ] });
1150
- }
1151
- function SheetHeader({ className, ...props }) {
1152
- return /* @__PURE__ */ jsxRuntime.jsx(
1153
- "div",
1154
- {
1155
- "data-slot": "sheet-header",
1156
- className: cn("flex flex-col gap-1.5 p-4", className),
1157
- ...props
1158
- }
1159
- );
1160
- }
1161
- function SheetTitle({
1162
- className,
1163
- ...props
1164
- }) {
1165
- return /* @__PURE__ */ jsxRuntime.jsx(
1166
- SheetPrimitive__namespace.Title,
1167
- {
1168
- "data-slot": "sheet-title",
1169
- className: cn("text-foreground font-semibold", className),
1170
- ...props
1115
+ "data-state": open ? "open" : "closed",
1116
+ children: [
1117
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "sr-only", children: /* @__PURE__ */ jsxRuntime.jsx("h2", { children: title }) }),
1118
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute top-4 right-4 z-10", children: /* @__PURE__ */ jsxRuntime.jsxs(
1119
+ "button",
1120
+ {
1121
+ onClick: onClose,
1122
+ 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",
1123
+ "aria-label": "Close mobile menu",
1124
+ children: [
1125
+ /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/x", className: "size-4" }),
1126
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "Close" })
1127
+ ]
1128
+ }
1129
+ ) }),
1130
+ /* @__PURE__ */ jsxRuntime.jsx(
1131
+ "div",
1132
+ {
1133
+ className: cn(
1134
+ "h-full overflow-y-auto pt-20 pb-8 px-4 sm:px-6",
1135
+ contentClassName
1136
+ ),
1137
+ children
1138
+ }
1139
+ )
1140
+ ]
1171
1141
  }
1172
1142
  );
1173
- }
1143
+ };
1174
1144
  var NavbarLogo = ({
1175
1145
  logo,
1176
1146
  logoSlot,
@@ -1247,7 +1217,7 @@ function getNavbarLayoutClasses(layoutVariant = "fullScreenContainerizedLinks",
1247
1217
  // Outer container wrapper (only for floating bar - this containerizes the entire navbar)
1248
1218
  containerWrapperClasses: cn(
1249
1219
  "w-full",
1250
- isFloatingBar && "mx-auto w-full px-2 sm:px-4 lg:px-8 max-w-7xl relative z-10"
1220
+ isFloatingBar && "mx-auto container relative z-10 px-0 sm:px-0 lg:px-0"
1251
1221
  ),
1252
1222
  // Inner container classes (only for fullScreenContainerizedLinks - this containerizes the content inside the navbar)
1253
1223
  innerContainerClasses: cn(
@@ -1313,15 +1283,26 @@ var renderMenuItem = (item) => {
1313
1283
  var renderMobileMenuItem = (item) => {
1314
1284
  if (item.items) {
1315
1285
  return /* @__PURE__ */ jsxRuntime.jsxs(AccordionItem, { value: item.title, className: "border-b-0", children: [
1316
- /* @__PURE__ */ jsxRuntime.jsx(AccordionTrigger, { className: "text-md py-0 font-semibold hover:no-underline", children: item.title }),
1317
- /* @__PURE__ */ jsxRuntime.jsx(AccordionContent, { className: "mt-2", children: item.items.map((subItem) => /* @__PURE__ */ jsxRuntime.jsx(SubMenuLink, { item: subItem }, subItem.title)) })
1286
+ /* @__PURE__ */ jsxRuntime.jsx(AccordionTrigger, { className: "h-15 items-center text-base font-normal text-foreground hover:no-underline", children: item.title }),
1287
+ /* @__PURE__ */ jsxRuntime.jsx(AccordionContent, { className: "max-h-[60dvh] overflow-y-auto space-y-2", children: item.items.map((subItem) => /* @__PURE__ */ jsxRuntime.jsxs(
1288
+ Pressable,
1289
+ {
1290
+ href: subItem.url,
1291
+ className: "flex items-center gap-2 pl-4 text-sm text-muted-foreground hover:text-foreground",
1292
+ children: [
1293
+ subItem.icon && /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: subItem.icon, size: 14 }),
1294
+ subItem.title
1295
+ ]
1296
+ },
1297
+ subItem.title
1298
+ )) })
1318
1299
  ] }, item.title);
1319
1300
  }
1320
1301
  return /* @__PURE__ */ jsxRuntime.jsx(
1321
1302
  Pressable,
1322
1303
  {
1323
1304
  href: item.url,
1324
- className: "text-md font-semibold",
1305
+ className: "flex h-15 items-center text-base font-normal text-foreground",
1325
1306
  children: item.title
1326
1307
  },
1327
1308
  item.title
@@ -1348,6 +1329,7 @@ var NavbarCenteredMenu = ({
1348
1329
  patternOpacity,
1349
1330
  optixFlowConfig
1350
1331
  }) => {
1332
+ const [open, setOpen] = React__namespace.useState(false);
1351
1333
  const renderAuthActions = React.useMemo(() => {
1352
1334
  if (authActionsSlot) return authActionsSlot;
1353
1335
  if (!authActions || authActions.length === 0) return null;
@@ -1444,49 +1426,43 @@ var NavbarCenteredMenu = ({
1444
1426
  optixFlowConfig
1445
1427
  }
1446
1428
  ),
1447
- /* @__PURE__ */ jsxRuntime.jsxs(Sheet, { children: [
1448
- /* @__PURE__ */ jsxRuntime.jsx(SheetTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(
1449
- Pressable,
1450
- {
1451
- variant: "outline",
1452
- size: "icon",
1453
- asButton: true,
1454
- onClick: () => {
1455
- },
1456
- children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/menu", size: 16 })
1457
- }
1458
- ) }),
1459
- /* @__PURE__ */ jsxRuntime.jsxs(SheetContent, { className: "overflow-y-auto", children: [
1460
- /* @__PURE__ */ jsxRuntime.jsx(SheetHeader, { children: /* @__PURE__ */ jsxRuntime.jsx(SheetTitle, { children: /* @__PURE__ */ jsxRuntime.jsx(
1461
- NavbarLogo,
1429
+ /* @__PURE__ */ jsxRuntime.jsx(
1430
+ Pressable,
1431
+ {
1432
+ variant: "outline",
1433
+ size: "icon",
1434
+ asButton: true,
1435
+ onClick: () => setOpen(!open),
1436
+ children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/menu", size: 16 })
1437
+ }
1438
+ )
1439
+ ] }) }),
1440
+ /* @__PURE__ */ jsxRuntime.jsx(
1441
+ NavbarMobileMenu,
1442
+ {
1443
+ open,
1444
+ onClose: () => setOpen(false),
1445
+ title: "Mobile Navigation",
1446
+ contentClassName: "pt-10 pb-20",
1447
+ children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "max-w-screen-sm mx-auto", children: [
1448
+ /* @__PURE__ */ jsxRuntime.jsx(
1449
+ Accordion,
1462
1450
  {
1463
- logo,
1464
- logoSlot,
1465
- logoClassName,
1466
- optixFlowConfig
1451
+ type: "multiple",
1452
+ className: "w-full",
1453
+ children: renderMobileMenu
1467
1454
  }
1468
- ) }) }),
1469
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-6 p-4", children: [
1470
- /* @__PURE__ */ jsxRuntime.jsx(
1471
- Accordion,
1472
- {
1473
- type: "single",
1474
- collapsible: true,
1475
- className: "flex w-full flex-col gap-4",
1476
- children: renderMobileMenu
1477
- }
1478
- ),
1479
- /* @__PURE__ */ jsxRuntime.jsx(
1480
- "div",
1481
- {
1482
- className: cn("flex flex-col gap-3", actionsClassName),
1483
- children: renderAuthActions
1484
- }
1485
- )
1486
- ] })
1455
+ ),
1456
+ /* @__PURE__ */ jsxRuntime.jsx(
1457
+ "div",
1458
+ {
1459
+ className: cn("mt-6 flex flex-col gap-4", actionsClassName),
1460
+ children: renderAuthActions
1461
+ }
1462
+ )
1487
1463
  ] })
1488
- ] })
1489
- ] }) })
1464
+ }
1465
+ )
1490
1466
  ] }) }) })
1491
1467
  }
1492
1468
  );
@@ -7,7 +7,6 @@ import { twMerge } from 'tailwind-merge';
7
7
  import { cva } from 'class-variance-authority';
8
8
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
9
9
  import * as AccordionPrimitive from '@radix-ui/react-accordion';
10
- import * as SheetPrimitive from '@radix-ui/react-dialog';
11
10
  import { Img } from '@page-speed/img';
12
11
 
13
12
  // components/blocks/navbars/navbar-centered-menu.tsx
@@ -804,14 +803,14 @@ function PatternBackground({
804
803
  );
805
804
  }
806
805
  if (pattern in patternOverlays) {
807
- const Overlay2 = patternOverlays[pattern];
806
+ const Overlay = patternOverlays[pattern];
808
807
  return /* @__PURE__ */ jsx(
809
808
  "div",
810
809
  {
811
810
  className: cn("pointer-events-none absolute inset-0 z-0", className),
812
811
  style: { opacity, ...style },
813
812
  "aria-hidden": "true",
814
- children: Overlay2()
813
+ children: Overlay()
815
814
  }
816
815
  );
817
816
  }
@@ -1063,90 +1062,62 @@ function NavigationMenuLink({
1063
1062
  }
1064
1063
  );
1065
1064
  }
1066
- function Sheet({ ...props }) {
1067
- return /* @__PURE__ */ jsx(SheetPrimitive.Root, { "data-slot": "sheet", ...props });
1068
- }
1069
- function SheetTrigger({
1070
- ...props
1071
- }) {
1072
- return /* @__PURE__ */ jsx(SheetPrimitive.Trigger, { "data-slot": "sheet-trigger", ...props });
1073
- }
1074
- function SheetPortal({
1075
- ...props
1076
- }) {
1077
- return /* @__PURE__ */ jsx(SheetPrimitive.Portal, { "data-slot": "sheet-portal", ...props });
1078
- }
1079
- function SheetOverlay({
1065
+ var NavbarMobileMenu = ({
1066
+ open,
1067
+ onClose,
1068
+ children,
1080
1069
  className,
1081
- ...props
1082
- }) {
1083
- return /* @__PURE__ */ jsx(
1084
- SheetPrimitive.Overlay,
1070
+ contentClassName,
1071
+ title = "Mobile Navigation"
1072
+ }) => {
1073
+ React.useEffect(() => {
1074
+ if (open) {
1075
+ const originalOverflow = document.body.style.overflow;
1076
+ document.body.style.overflow = "hidden";
1077
+ return () => {
1078
+ document.body.style.overflow = originalOverflow;
1079
+ };
1080
+ }
1081
+ }, [open]);
1082
+ if (!open) return null;
1083
+ return /* @__PURE__ */ jsxs(
1084
+ "div",
1085
1085
  {
1086
- "data-slot": "sheet-overlay",
1087
1086
  className: cn(
1088
- "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",
1087
+ "fixed inset-0 z-[998] flex flex-col bg-background",
1088
+ "animate-in slide-in-from-top duration-300",
1089
+ "data-[state=closed]:animate-out data-[state=closed]:slide-out-to-top data-[state=closed]:duration-300",
1089
1090
  className
1090
1091
  ),
1091
- ...props
1092
- }
1093
- );
1094
- }
1095
- function SheetContent({
1096
- className,
1097
- children,
1098
- side = "right",
1099
- ...props
1100
- }) {
1101
- return /* @__PURE__ */ jsxs(SheetPortal, { children: [
1102
- /* @__PURE__ */ jsx(SheetOverlay, {}),
1103
- /* @__PURE__ */ jsxs(
1104
- SheetPrimitive.Content,
1105
- {
1106
- "data-slot": "sheet-content",
1107
- className: cn(
1108
- "bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500",
1109
- side === "right" && "data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm",
1110
- side === "left" && "data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm",
1111
- side === "top" && "data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b",
1112
- side === "bottom" && "data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t",
1113
- className
1114
- ),
1115
- ...props,
1116
- children: [
1117
- children,
1118
- /* @__PURE__ */ jsxs(SheetPrimitive.Close, { className: "ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none", children: [
1119
- /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/x", className: "size-4" }),
1120
- /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" })
1121
- ] })
1122
- ]
1123
- }
1124
- )
1125
- ] });
1126
- }
1127
- function SheetHeader({ className, ...props }) {
1128
- return /* @__PURE__ */ jsx(
1129
- "div",
1130
- {
1131
- "data-slot": "sheet-header",
1132
- className: cn("flex flex-col gap-1.5 p-4", className),
1133
- ...props
1134
- }
1135
- );
1136
- }
1137
- function SheetTitle({
1138
- className,
1139
- ...props
1140
- }) {
1141
- return /* @__PURE__ */ jsx(
1142
- SheetPrimitive.Title,
1143
- {
1144
- "data-slot": "sheet-title",
1145
- className: cn("text-foreground font-semibold", className),
1146
- ...props
1092
+ "data-state": open ? "open" : "closed",
1093
+ children: [
1094
+ /* @__PURE__ */ jsx("div", { className: "sr-only", children: /* @__PURE__ */ jsx("h2", { children: title }) }),
1095
+ /* @__PURE__ */ jsx("div", { className: "absolute top-4 right-4 z-10", children: /* @__PURE__ */ jsxs(
1096
+ "button",
1097
+ {
1098
+ onClick: onClose,
1099
+ 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",
1100
+ "aria-label": "Close mobile menu",
1101
+ children: [
1102
+ /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/x", className: "size-4" }),
1103
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" })
1104
+ ]
1105
+ }
1106
+ ) }),
1107
+ /* @__PURE__ */ jsx(
1108
+ "div",
1109
+ {
1110
+ className: cn(
1111
+ "h-full overflow-y-auto pt-20 pb-8 px-4 sm:px-6",
1112
+ contentClassName
1113
+ ),
1114
+ children
1115
+ }
1116
+ )
1117
+ ]
1147
1118
  }
1148
1119
  );
1149
- }
1120
+ };
1150
1121
  var NavbarLogo = ({
1151
1122
  logo,
1152
1123
  logoSlot,
@@ -1223,7 +1194,7 @@ function getNavbarLayoutClasses(layoutVariant = "fullScreenContainerizedLinks",
1223
1194
  // Outer container wrapper (only for floating bar - this containerizes the entire navbar)
1224
1195
  containerWrapperClasses: cn(
1225
1196
  "w-full",
1226
- isFloatingBar && "mx-auto w-full px-2 sm:px-4 lg:px-8 max-w-7xl relative z-10"
1197
+ isFloatingBar && "mx-auto container relative z-10 px-0 sm:px-0 lg:px-0"
1227
1198
  ),
1228
1199
  // Inner container classes (only for fullScreenContainerizedLinks - this containerizes the content inside the navbar)
1229
1200
  innerContainerClasses: cn(
@@ -1289,15 +1260,26 @@ var renderMenuItem = (item) => {
1289
1260
  var renderMobileMenuItem = (item) => {
1290
1261
  if (item.items) {
1291
1262
  return /* @__PURE__ */ jsxs(AccordionItem, { value: item.title, className: "border-b-0", children: [
1292
- /* @__PURE__ */ jsx(AccordionTrigger, { className: "text-md py-0 font-semibold hover:no-underline", children: item.title }),
1293
- /* @__PURE__ */ jsx(AccordionContent, { className: "mt-2", children: item.items.map((subItem) => /* @__PURE__ */ jsx(SubMenuLink, { item: subItem }, subItem.title)) })
1263
+ /* @__PURE__ */ jsx(AccordionTrigger, { className: "h-15 items-center text-base font-normal text-foreground hover:no-underline", children: item.title }),
1264
+ /* @__PURE__ */ jsx(AccordionContent, { className: "max-h-[60dvh] overflow-y-auto space-y-2", children: item.items.map((subItem) => /* @__PURE__ */ jsxs(
1265
+ Pressable,
1266
+ {
1267
+ href: subItem.url,
1268
+ className: "flex items-center gap-2 pl-4 text-sm text-muted-foreground hover:text-foreground",
1269
+ children: [
1270
+ subItem.icon && /* @__PURE__ */ jsx(DynamicIcon, { name: subItem.icon, size: 14 }),
1271
+ subItem.title
1272
+ ]
1273
+ },
1274
+ subItem.title
1275
+ )) })
1294
1276
  ] }, item.title);
1295
1277
  }
1296
1278
  return /* @__PURE__ */ jsx(
1297
1279
  Pressable,
1298
1280
  {
1299
1281
  href: item.url,
1300
- className: "text-md font-semibold",
1282
+ className: "flex h-15 items-center text-base font-normal text-foreground",
1301
1283
  children: item.title
1302
1284
  },
1303
1285
  item.title
@@ -1324,6 +1306,7 @@ var NavbarCenteredMenu = ({
1324
1306
  patternOpacity,
1325
1307
  optixFlowConfig
1326
1308
  }) => {
1309
+ const [open, setOpen] = React.useState(false);
1327
1310
  const renderAuthActions = useMemo(() => {
1328
1311
  if (authActionsSlot) return authActionsSlot;
1329
1312
  if (!authActions || authActions.length === 0) return null;
@@ -1420,49 +1403,43 @@ var NavbarCenteredMenu = ({
1420
1403
  optixFlowConfig
1421
1404
  }
1422
1405
  ),
1423
- /* @__PURE__ */ jsxs(Sheet, { children: [
1424
- /* @__PURE__ */ jsx(SheetTrigger, { asChild: true, children: /* @__PURE__ */ jsx(
1425
- Pressable,
1426
- {
1427
- variant: "outline",
1428
- size: "icon",
1429
- asButton: true,
1430
- onClick: () => {
1431
- },
1432
- children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/menu", size: 16 })
1433
- }
1434
- ) }),
1435
- /* @__PURE__ */ jsxs(SheetContent, { className: "overflow-y-auto", children: [
1436
- /* @__PURE__ */ jsx(SheetHeader, { children: /* @__PURE__ */ jsx(SheetTitle, { children: /* @__PURE__ */ jsx(
1437
- NavbarLogo,
1406
+ /* @__PURE__ */ jsx(
1407
+ Pressable,
1408
+ {
1409
+ variant: "outline",
1410
+ size: "icon",
1411
+ asButton: true,
1412
+ onClick: () => setOpen(!open),
1413
+ children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/menu", size: 16 })
1414
+ }
1415
+ )
1416
+ ] }) }),
1417
+ /* @__PURE__ */ jsx(
1418
+ NavbarMobileMenu,
1419
+ {
1420
+ open,
1421
+ onClose: () => setOpen(false),
1422
+ title: "Mobile Navigation",
1423
+ contentClassName: "pt-10 pb-20",
1424
+ children: /* @__PURE__ */ jsxs("div", { className: "max-w-screen-sm mx-auto", children: [
1425
+ /* @__PURE__ */ jsx(
1426
+ Accordion,
1438
1427
  {
1439
- logo,
1440
- logoSlot,
1441
- logoClassName,
1442
- optixFlowConfig
1428
+ type: "multiple",
1429
+ className: "w-full",
1430
+ children: renderMobileMenu
1443
1431
  }
1444
- ) }) }),
1445
- /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-6 p-4", children: [
1446
- /* @__PURE__ */ jsx(
1447
- Accordion,
1448
- {
1449
- type: "single",
1450
- collapsible: true,
1451
- className: "flex w-full flex-col gap-4",
1452
- children: renderMobileMenu
1453
- }
1454
- ),
1455
- /* @__PURE__ */ jsx(
1456
- "div",
1457
- {
1458
- className: cn("flex flex-col gap-3", actionsClassName),
1459
- children: renderAuthActions
1460
- }
1461
- )
1462
- ] })
1432
+ ),
1433
+ /* @__PURE__ */ jsx(
1434
+ "div",
1435
+ {
1436
+ className: cn("mt-6 flex flex-col gap-4", actionsClassName),
1437
+ children: renderAuthActions
1438
+ }
1439
+ )
1463
1440
  ] })
1464
- ] })
1465
- ] }) })
1441
+ }
1442
+ )
1466
1443
  ] }) }) })
1467
1444
  }
1468
1445
  );