| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- import { cn } from '@/lib/utils'
- import { Link } from 'react-router-dom'
- import {
- DropdownMenu,
- DropdownMenuContent,
- DropdownMenuItem,
- DropdownMenuTrigger,
- } from '@/components/ui/dropdown-menu'
- import { Button } from './custom/button'
- import { IconMenu } from '@tabler/icons-react'
- import { useTranslations } from 'use-intl'
- interface TopNavProps extends React.HTMLAttributes<HTMLElement> {
- links: {
- title: string
- href: string
- isActive: boolean
- }[]
- }
- export function TopNav({ className, links, ...props }: TopNavProps) {
- const t = useTranslations()
- return (
- <>
- <div className='md:hidden'>
- <DropdownMenu>
- <DropdownMenuTrigger asChild>
- <Button size='icon' variant='outline'>
- <IconMenu />
- </Button>
- </DropdownMenuTrigger>
- <DropdownMenuContent side='bottom' align='start'>
- {links.map(({ title, href, isActive }) => (
- <DropdownMenuItem key={`${title}-${href}`} asChild>
- <Link
- to={href}
- className={!isActive ? 'text-muted-foreground' : ''}
- >
- {t(title)}
- </Link>
- </DropdownMenuItem>
- ))}
- </DropdownMenuContent>
- </DropdownMenu>
- </div>
- <nav
- className={cn(
- 'hidden items-center space-x-4 md:flex lg:space-x-6',
- className
- )}
- {...props}
- >
- {links.map(({ title, href, isActive }) => (
- <Link
- key={`${title}-${href}`}
- to={href}
- className={`text-sm font-medium transition-colors hover:text-primary ${isActive ? '' : 'text-muted-foreground'}`}
- >
- {t(title)}
- </Link>
- ))}
- </nav>
- </>
- )
- }
|