@@ -107,3 +106,46 @@ const MobileNav = () => {
}
export default MobileNav
+
+type RenderMobileNavLinkProps = {
+ clickFunc: () => void
+ navLink: NavItem
+}
+
+const RenderMobileNavLink = ({ navLink, clickFunc }: RenderMobileNavLinkProps) => {
+ const children: NavItemChild[] = navLink?.children || []
+
+ if (children?.length > 0) {
+ return (
+
+
+ {navLink.title}
+
+
+ {children.map((cLink: NavItemChild) => (
+
+ {cLink.title}
+
+ ))}
+
+
+ )
+ } else {
+ return (
+
+
+ {navLink.title}
+
+
+ )
+ }
+}
diff --git a/components/NavOptions.tsx b/components/NavOptions.tsx
new file mode 100644
index 000000000..ca6a6979e
--- /dev/null
+++ b/components/NavOptions.tsx
@@ -0,0 +1,100 @@
+'use client'
+
+import { Fragment, useEffect, useState } from 'react'
+import { useTheme } from 'next-themes'
+import { Menu, RadioGroup, Transition } from '@headlessui/react'
+import headerNavLinks from '@/data/headerNavLinks'
+import Link from 'next/link'
+
+type NavItemBase = {
+ title: string
+}
+
+type NavItemWithHref = NavItemBase & {
+ href: string
+ children?: never
+}
+
+type NavItemWithChildren = NavItemBase & {
+ children: NavItemChild[]
+ href?: never
+}
+
+export type NavItemChild = {
+ href: string
+ title: string
+}
+
+export type NavItem = NavItemWithHref | NavItemWithChildren
+
+export const NavOptions = () => {
+ return (
+ <>
+ {headerNavLinks
+ .filter((link) => link.href !== '/')
+ .map((link) => (
+
+ ))}
+ >
+ )
+}
+
+const RenderNavLink = ({ navItem }: { navItem: NavItem }) => {
+ if (!navItem.children) {
+ return (
+
+ {navItem.title}
+
+ )
+ }
+ return (
+
+
+
+ )
+}
diff --git a/data/headerNavLinks.ts b/data/headerNavLinks.ts
index 8ca9493db..1641e1606 100644
--- a/data/headerNavLinks.ts
+++ b/data/headerNavLinks.ts
@@ -4,6 +4,13 @@ const headerNavLinks = [
{ href: '/tags', title: 'Tags' },
{ href: '/projects', title: 'Projects' },
{ href: '/about', title: 'About' },
+ {
+ title: 'Dropdown',
+ children: [
+ { href: '/projects', title: 'Projects' },
+ { href: '/about', title: 'About' },
+ ],
+ },
]
export default headerNavLinks