@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
@@ -1155,7 +1155,7 @@ var NavbarMobileMenu = ({
1155
1155
  "div",
1156
1156
  {
1157
1157
  className: cn(
1158
- "h-full overflow-y-auto pt-16 pb-8 px-4 sm:px-6",
1158
+ "h-full overflow-y-auto pt-20 pb-8 px-4 sm:px-6",
1159
1159
  contentClassName
1160
1160
  ),
1161
1161
  children
@@ -1241,7 +1241,7 @@ function getNavbarLayoutClasses(layoutVariant = "fullScreenContainerizedLinks",
1241
1241
  // Outer container wrapper (only for floating bar - this containerizes the entire navbar)
1242
1242
  containerWrapperClasses: cn(
1243
1243
  "w-full",
1244
- isFloatingBar && "mx-auto w-full px-2 sm:px-4 lg:px-8 max-w-7xl relative z-10"
1244
+ isFloatingBar && "mx-auto container relative z-10 px-0 sm:px-0 lg:px-0"
1245
1245
  ),
1246
1246
  // Inner container classes (only for fullScreenContainerizedLinks - this containerizes the content inside the navbar)
1247
1247
  innerContainerClasses: cn(
@@ -1906,7 +1906,7 @@ var renderMobileDropdownContent = (item) => {
1906
1906
  switch (item.layout) {
1907
1907
  case "solutions-with-platform":
1908
1908
  return /* @__PURE__ */ jsx("div", { className: "space-y-4", children: item.solutionCards?.map((solution) => /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
1909
- /* @__PURE__ */ jsx(Pressable, { href: solution.href, className: "text-sm font-medium", children: solution.title }),
1909
+ /* @__PURE__ */ jsx(Pressable, { href: solution.href, className: "mb-2 text-sm font-medium", children: solution.title }),
1910
1910
  solution.subpages.map((subpage) => /* @__PURE__ */ jsxs(
1911
1911
  Pressable,
1912
1912
  {
@@ -1999,10 +1999,9 @@ var MobileNavigationMenu = ({
1999
1999
  open,
2000
2000
  onClose: () => setOpen(false),
2001
2001
  title: "Mobile Navigation",
2002
- contentClassName: "pt-4 pb-20",
2002
+ contentClassName: "pt-10 pb-20",
2003
2003
  children: /* @__PURE__ */ jsxs("div", { className: "max-w-screen-sm mx-auto", children: [
2004
- /* @__PURE__ */ jsx("div", { className: cn("flex flex-col gap-4", actionsClassName), children: renderActions }),
2005
- /* @__PURE__ */ jsx(Accordion, { type: "multiple", className: "mt-6 w-full", children: menuLinks.map((item, index) => {
2004
+ /* @__PURE__ */ jsx(Accordion, { type: "multiple", className: "w-full", children: menuLinks.map((item, index) => {
2006
2005
  const hasDropdown = Boolean(item.layout);
2007
2006
  if (hasDropdown) {
2008
2007
  return /* @__PURE__ */ jsxs(
@@ -2027,7 +2026,8 @@ var MobileNavigationMenu = ({
2027
2026
  },
2028
2027
  typeof item.label === "string" ? item.label : `nav-${index}`
2029
2028
  );
2030
- }) })
2029
+ }) }),
2030
+ /* @__PURE__ */ jsx("div", { className: cn("mt-6 flex flex-col gap-4", actionsClassName), children: renderActions })
2031
2031
  ] })
2032
2032
  }
2033
2033
  );
@@ -8,7 +8,6 @@ var classVarianceAuthority = require('class-variance-authority');
8
8
  var jsxRuntime = require('react/jsx-runtime');
9
9
  var AccordionPrimitive = require('@radix-ui/react-accordion');
10
10
  var NavigationMenuPrimitive = require('@radix-ui/react-navigation-menu');
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 AccordionPrimitive__namespace = /*#__PURE__*/_interopNamespace(AccordionPrimitive);
34
33
  var NavigationMenuPrimitive__namespace = /*#__PURE__*/_interopNamespace(NavigationMenuPrimitive);
35
- var SheetPrimitive__namespace = /*#__PURE__*/_interopNamespace(SheetPrimitive);
36
34
 
37
35
  // components/blocks/navbars/navbar-feature-grid.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
  }
@@ -1134,90 +1132,62 @@ function NavigationMenuLink({
1134
1132
  }
1135
1133
  );
1136
1134
  }
1137
- function Sheet({ ...props }) {
1138
- return /* @__PURE__ */ jsxRuntime.jsx(SheetPrimitive__namespace.Root, { "data-slot": "sheet", ...props });
1139
- }
1140
- function SheetTrigger({
1141
- ...props
1142
- }) {
1143
- return /* @__PURE__ */ jsxRuntime.jsx(SheetPrimitive__namespace.Trigger, { "data-slot": "sheet-trigger", ...props });
1144
- }
1145
- function SheetPortal({
1146
- ...props
1147
- }) {
1148
- return /* @__PURE__ */ jsxRuntime.jsx(SheetPrimitive__namespace.Portal, { "data-slot": "sheet-portal", ...props });
1149
- }
1150
- function SheetOverlay({
1135
+ var NavbarMobileMenu = ({
1136
+ open,
1137
+ onClose,
1138
+ children,
1151
1139
  className,
1152
- ...props
1153
- }) {
1154
- return /* @__PURE__ */ jsxRuntime.jsx(
1155
- SheetPrimitive__namespace.Overlay,
1140
+ contentClassName,
1141
+ title = "Mobile Navigation"
1142
+ }) => {
1143
+ React__namespace.useEffect(() => {
1144
+ if (open) {
1145
+ const originalOverflow = document.body.style.overflow;
1146
+ document.body.style.overflow = "hidden";
1147
+ return () => {
1148
+ document.body.style.overflow = originalOverflow;
1149
+ };
1150
+ }
1151
+ }, [open]);
1152
+ if (!open) return null;
1153
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1154
+ "div",
1156
1155
  {
1157
- "data-slot": "sheet-overlay",
1158
1156
  className: cn(
1159
- "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",
1157
+ "fixed inset-0 z-[998] flex flex-col bg-background",
1158
+ "animate-in slide-in-from-top duration-300",
1159
+ "data-[state=closed]:animate-out data-[state=closed]:slide-out-to-top data-[state=closed]:duration-300",
1160
1160
  className
1161
1161
  ),
1162
- ...props
1163
- }
1164
- );
1165
- }
1166
- function SheetContent({
1167
- className,
1168
- children,
1169
- side = "right",
1170
- ...props
1171
- }) {
1172
- return /* @__PURE__ */ jsxRuntime.jsxs(SheetPortal, { children: [
1173
- /* @__PURE__ */ jsxRuntime.jsx(SheetOverlay, {}),
1174
- /* @__PURE__ */ jsxRuntime.jsxs(
1175
- SheetPrimitive__namespace.Content,
1176
- {
1177
- "data-slot": "sheet-content",
1178
- className: cn(
1179
- "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",
1180
- 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",
1181
- 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",
1182
- 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",
1183
- 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",
1184
- className
1185
- ),
1186
- ...props,
1187
- children: [
1188
- children,
1189
- /* @__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: [
1190
- /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/x", className: "size-4" }),
1191
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "Close" })
1192
- ] })
1193
- ]
1194
- }
1195
- )
1196
- ] });
1197
- }
1198
- function SheetHeader({ className, ...props }) {
1199
- return /* @__PURE__ */ jsxRuntime.jsx(
1200
- "div",
1201
- {
1202
- "data-slot": "sheet-header",
1203
- className: cn("flex flex-col gap-1.5 p-4", className),
1204
- ...props
1205
- }
1206
- );
1207
- }
1208
- function SheetTitle({
1209
- className,
1210
- ...props
1211
- }) {
1212
- return /* @__PURE__ */ jsxRuntime.jsx(
1213
- SheetPrimitive__namespace.Title,
1214
- {
1215
- "data-slot": "sheet-title",
1216
- className: cn("text-foreground font-semibold", className),
1217
- ...props
1162
+ "data-state": open ? "open" : "closed",
1163
+ children: [
1164
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "sr-only", children: /* @__PURE__ */ jsxRuntime.jsx("h2", { children: title }) }),
1165
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute top-4 right-4 z-10", children: /* @__PURE__ */ jsxRuntime.jsxs(
1166
+ "button",
1167
+ {
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
+ ]
1175
+ }
1176
+ ) }),
1177
+ /* @__PURE__ */ jsxRuntime.jsx(
1178
+ "div",
1179
+ {
1180
+ className: cn(
1181
+ "h-full overflow-y-auto pt-20 pb-8 px-4 sm:px-6",
1182
+ contentClassName
1183
+ ),
1184
+ children
1185
+ }
1186
+ )
1187
+ ]
1218
1188
  }
1219
1189
  );
1220
- }
1190
+ };
1221
1191
  var NavbarLogo = ({
1222
1192
  logo,
1223
1193
  logoSlot,
@@ -1294,7 +1264,7 @@ function getNavbarLayoutClasses(layoutVariant = "fullScreenContainerizedLinks",
1294
1264
  // Outer container wrapper (only for floating bar - this containerizes the entire navbar)
1295
1265
  containerWrapperClasses: cn(
1296
1266
  "w-full",
1297
- isFloatingBar && "mx-auto w-full px-2 sm:px-4 lg:px-8 max-w-7xl relative z-10"
1267
+ isFloatingBar && "mx-auto container relative z-10 px-0 sm:px-0 lg:px-0"
1298
1268
  ),
1299
1269
  // Inner container classes (only for fullScreenContainerizedLinks - this containerizes the content inside the navbar)
1300
1270
  innerContainerClasses: cn(
@@ -1324,6 +1294,7 @@ var NavbarFeatureGrid = ({
1324
1294
  logo,
1325
1295
  logoSlot,
1326
1296
  features,
1297
+ menu,
1327
1298
  authActions,
1328
1299
  authActionsSlot,
1329
1300
  layoutVariant = "fullScreenContainerizedLinks",
@@ -1333,6 +1304,7 @@ var NavbarFeatureGrid = ({
1333
1304
  patternOpacity,
1334
1305
  optixFlowConfig
1335
1306
  }) => {
1307
+ const [open, setOpen] = React__namespace.useState(false);
1336
1308
  const renderAuthActions = React.useMemo(() => {
1337
1309
  if (authActionsSlot) return authActionsSlot;
1338
1310
  if (!authActions || authActions.length === 0) return null;
@@ -1389,21 +1361,31 @@ var NavbarFeatureGrid = ({
1389
1361
  NavigationMenu,
1390
1362
  {
1391
1363
  className: cn("hidden lg:block", navigationMenuClassName),
1392
- children: /* @__PURE__ */ jsxRuntime.jsx(NavigationMenuList, { children: features && features.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(NavigationMenuItem, { children: [
1393
- /* @__PURE__ */ jsxRuntime.jsx(NavigationMenuTrigger, { children: "Features" }),
1394
- /* @__PURE__ */ jsxRuntime.jsx(NavigationMenuContent, { children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid w-[600px] grid-cols-2 p-3", children: features.map((feature, index) => /* @__PURE__ */ jsxRuntime.jsx(
1364
+ children: /* @__PURE__ */ jsxRuntime.jsxs(NavigationMenuList, { children: [
1365
+ features && features.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(NavigationMenuItem, { children: [
1366
+ /* @__PURE__ */ jsxRuntime.jsx(NavigationMenuTrigger, { children: "Features" }),
1367
+ /* @__PURE__ */ jsxRuntime.jsx(NavigationMenuContent, { children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid w-[600px] grid-cols-2 p-3", children: features.map((feature, index) => /* @__PURE__ */ jsxRuntime.jsx(
1368
+ NavigationMenuLink,
1369
+ {
1370
+ href: feature.href,
1371
+ className: "rounded-md p-3 transition-colors hover:bg-muted/70",
1372
+ children: /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
1373
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-1 font-semibold", children: feature.title }),
1374
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground", children: feature.description })
1375
+ ] })
1376
+ },
1377
+ index
1378
+ )) }) })
1379
+ ] }),
1380
+ menu?.map((item, index) => /* @__PURE__ */ jsxRuntime.jsx(NavigationMenuItem, { children: /* @__PURE__ */ jsxRuntime.jsx(
1395
1381
  NavigationMenuLink,
1396
1382
  {
1397
- href: feature.href,
1398
- className: "rounded-md p-3 transition-colors hover:bg-muted/70",
1399
- children: /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
1400
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-1 font-semibold", children: feature.title }),
1401
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground", children: feature.description })
1402
- ] })
1403
- },
1404
- index
1405
- )) }) })
1406
- ] }) })
1383
+ href: item.url,
1384
+ className: "h-auto bg-transparent px-3 py-2 font-normal hover:bg-muted focus:bg-muted",
1385
+ children: item.title
1386
+ }
1387
+ ) }, index))
1388
+ ] })
1407
1389
  }
1408
1390
  ),
1409
1391
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -1416,59 +1398,58 @@ var NavbarFeatureGrid = ({
1416
1398
  children: renderAuthActions
1417
1399
  }
1418
1400
  ),
1419
- /* @__PURE__ */ jsxRuntime.jsxs(Sheet, { children: [
1420
- /* @__PURE__ */ jsxRuntime.jsx(SheetTrigger, { asChild: true, className: "lg:hidden", children: /* @__PURE__ */ jsxRuntime.jsx(
1421
- Pressable,
1422
- {
1423
- variant: "outline",
1424
- size: "icon",
1425
- asButton: true,
1426
- onClick: () => {
1427
- },
1428
- children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/menu", size: 16 })
1429
- }
1430
- ) }),
1431
- /* @__PURE__ */ jsxRuntime.jsxs(SheetContent, { side: "top", className: "max-h-screen overflow-auto", children: [
1432
- /* @__PURE__ */ jsxRuntime.jsx(SheetHeader, { children: /* @__PURE__ */ jsxRuntime.jsx(SheetTitle, { children: /* @__PURE__ */ jsxRuntime.jsx(
1433
- NavbarLogo,
1434
- {
1435
- logo,
1436
- logoSlot,
1437
- logoClassName,
1438
- optixFlowConfig
1439
- }
1440
- ) }) }),
1441
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col p-4", children: [
1442
- features && features.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(
1443
- Accordion,
1444
- {
1445
- type: "single",
1446
- collapsible: true,
1447
- className: "mt-4 mb-2",
1448
- children: /* @__PURE__ */ jsxRuntime.jsxs(
1449
- AccordionItem,
1450
- {
1451
- value: "solutions",
1452
- className: "border-none",
1453
- children: [
1454
- /* @__PURE__ */ jsxRuntime.jsx(AccordionTrigger, { className: "text-base hover:no-underline", children: "Features" }),
1455
- /* @__PURE__ */ jsxRuntime.jsx(AccordionContent, { children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid md:grid-cols-2", children: features.map((feature, index) => /* @__PURE__ */ jsxRuntime.jsx(
1456
- Pressable,
1457
- {
1458
- href: feature.href,
1459
- className: "rounded-md p-3 transition-colors hover:bg-muted/70",
1460
- children: /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
1461
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-1 font-semibold", children: feature.title }),
1462
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground", children: feature.description })
1463
- ] })
1464
- },
1465
- index
1466
- )) }) })
1467
- ]
1468
- }
1469
- )
1470
- }
1471
- ),
1401
+ /* @__PURE__ */ jsxRuntime.jsx(
1402
+ Pressable,
1403
+ {
1404
+ variant: "outline",
1405
+ size: "icon",
1406
+ asButton: true,
1407
+ className: "lg:hidden",
1408
+ onClick: () => setOpen(!open),
1409
+ children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/menu", size: 16 })
1410
+ }
1411
+ ),
1412
+ /* @__PURE__ */ jsxRuntime.jsx(
1413
+ NavbarMobileMenu,
1414
+ {
1415
+ open,
1416
+ onClose: () => setOpen(false),
1417
+ title: "Mobile Navigation",
1418
+ contentClassName: "pt-10 pb-20",
1419
+ children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "max-w-screen-sm mx-auto", children: [
1420
+ /* @__PURE__ */ jsxRuntime.jsxs(Accordion, { type: "multiple", className: "w-full", children: [
1421
+ features && features.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(
1422
+ AccordionItem,
1423
+ {
1424
+ value: "features",
1425
+ className: "border-b-0",
1426
+ children: [
1427
+ /* @__PURE__ */ jsxRuntime.jsx(AccordionTrigger, { className: "h-15 items-center text-base font-normal text-foreground hover:no-underline", children: "Features" }),
1428
+ /* @__PURE__ */ jsxRuntime.jsx(AccordionContent, { className: "max-h-[60dvh] overflow-y-auto space-y-2", children: features.map((feature, index) => /* @__PURE__ */ jsxRuntime.jsx(
1429
+ Pressable,
1430
+ {
1431
+ href: feature.href,
1432
+ className: "flex items-start gap-2 pl-4 text-sm text-muted-foreground hover:text-foreground",
1433
+ children: /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
1434
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-1 font-semibold", children: feature.title }),
1435
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground", children: feature.description })
1436
+ ] })
1437
+ },
1438
+ index
1439
+ )) })
1440
+ ]
1441
+ }
1442
+ ),
1443
+ menu?.map((item, index) => /* @__PURE__ */ jsxRuntime.jsx(
1444
+ Pressable,
1445
+ {
1446
+ href: item.url,
1447
+ className: "flex h-15 items-center text-base font-normal text-foreground",
1448
+ children: item.title
1449
+ },
1450
+ index
1451
+ ))
1452
+ ] }),
1472
1453
  /* @__PURE__ */ jsxRuntime.jsx(
1473
1454
  "div",
1474
1455
  {
@@ -1480,8 +1461,8 @@ var NavbarFeatureGrid = ({
1480
1461
  }
1481
1462
  )
1482
1463
  ] })
1483
- ] })
1484
- ] })
1464
+ }
1465
+ )
1485
1466
  ]
1486
1467
  }
1487
1468
  ) }) }) })
@@ -12,6 +12,10 @@ interface FeatureItem {
12
12
  description: string;
13
13
  href: string;
14
14
  }
15
+ interface MenuItem {
16
+ title: string;
17
+ url: string;
18
+ }
15
19
  /**
16
20
  * Props for the NavbarFeatureGrid component
17
21
  */
@@ -52,6 +56,10 @@ interface NavbarFeatureGridProps {
52
56
  * Features for Features dropdown
53
57
  */
54
58
  features?: FeatureItem[];
59
+ /**
60
+ * Additional menu items (simple links without dropdowns)
61
+ */
62
+ menu?: MenuItem[];
55
63
  /**
56
64
  * Authentication action configurations
57
65
  */
@@ -93,6 +101,6 @@ interface NavbarFeatureGridProps {
93
101
  * view uses a top-sliding sheet with accordion navigation. Ideal for SaaS applications
94
102
  * with multiple feature categories.
95
103
  */
96
- declare const NavbarFeatureGrid: ({ className, containerClassName, navClassName, navigationMenuClassName, actionsClassName, logoClassName, logo, logoSlot, features, authActions, authActionsSlot, layoutVariant, background, spacing, pattern, patternOpacity, optixFlowConfig, }: NavbarFeatureGridProps) => react_jsx_runtime.JSX.Element;
104
+ declare const NavbarFeatureGrid: ({ className, containerClassName, navClassName, navigationMenuClassName, actionsClassName, logoClassName, logo, logoSlot, features, menu, authActions, authActionsSlot, layoutVariant, background, spacing, pattern, patternOpacity, optixFlowConfig, }: NavbarFeatureGridProps) => react_jsx_runtime.JSX.Element;
97
105
 
98
106
  export { NavbarFeatureGrid, type NavbarFeatureGridProps };
@@ -12,6 +12,10 @@ interface FeatureItem {
12
12
  description: string;
13
13
  href: string;
14
14
  }
15
+ interface MenuItem {
16
+ title: string;
17
+ url: string;
18
+ }
15
19
  /**
16
20
  * Props for the NavbarFeatureGrid component
17
21
  */
@@ -52,6 +56,10 @@ interface NavbarFeatureGridProps {
52
56
  * Features for Features dropdown
53
57
  */
54
58
  features?: FeatureItem[];
59
+ /**
60
+ * Additional menu items (simple links without dropdowns)
61
+ */
62
+ menu?: MenuItem[];
55
63
  /**
56
64
  * Authentication action configurations
57
65
  */
@@ -93,6 +101,6 @@ interface NavbarFeatureGridProps {
93
101
  * view uses a top-sliding sheet with accordion navigation. Ideal for SaaS applications
94
102
  * with multiple feature categories.
95
103
  */
96
- declare const NavbarFeatureGrid: ({ className, containerClassName, navClassName, navigationMenuClassName, actionsClassName, logoClassName, logo, logoSlot, features, authActions, authActionsSlot, layoutVariant, background, spacing, pattern, patternOpacity, optixFlowConfig, }: NavbarFeatureGridProps) => react_jsx_runtime.JSX.Element;
104
+ declare const NavbarFeatureGrid: ({ className, containerClassName, navClassName, navigationMenuClassName, actionsClassName, logoClassName, logo, logoSlot, features, menu, authActions, authActionsSlot, layoutVariant, background, spacing, pattern, patternOpacity, optixFlowConfig, }: NavbarFeatureGridProps) => react_jsx_runtime.JSX.Element;
97
105
 
98
106
  export { NavbarFeatureGrid, type NavbarFeatureGridProps };