'use client'; import { cva } from 'class-variance-authority'; import Link from 'fumadocs-core/link'; import { cn } from '@/lib/utils'; import { buttonVariants } from 'fumadocs-ui/components/ui/button'; import { NavigationMenuContent, NavigationMenuItem, NavigationMenuLink, NavigationMenuTrigger, } from 'fumadocs-ui/components/ui/navigation-menu'; import { BaseLinkItem, type LinkItemType } from 'fumadocs-ui/layouts/links'; import type { ComponentPropsWithoutRef } from 'react'; const menuItemVariants = cva('', { variants: { variant: { main: 'inline-flex items-center gap-2 py-1.5 transition-colors hover:text-fd-popover-foreground/50 data-[active=true]:font-medium data-[active=true]:text-fd-primary [&_svg]:size-4', icon: buttonVariants({ size: 'icon', color: 'ghost', }), button: buttonVariants({ color: 'secondary', className: 'gap-1.5 [&_svg]:size-4', }), }, }, defaultVariants: { variant: 'main', }, }); export const MenuLinkItem = ({ item, ...props }: { item: LinkItemType; className?: string; }) => { if (item.type === 'custom') return
{item.children}
; if (item.type === 'menu') { const header = ( <> {item.icon} {item.text} ); return (

{item.url ? ( {header} ) : ( header )}

{item.items.map((child, i) => ( ))}
); } return ( {item.icon} {item.type === 'icon' ? undefined : item.text} ); }; export const Menu = NavigationMenuItem; export const MenuTrigger = ({ ...props }: ComponentPropsWithoutRef & {}) => { return ( {props.children} ); }; export const MenuContent = ( props: ComponentPropsWithoutRef, ) => { return ( {props.children} ); };