11'use client'
22
3+ import Link from 'next/link'
34import { KunTopBarBrand } from './Brand'
45import { KunTopBarUser } from './User'
56import { usePathname } from 'next/navigation'
7+ import { kunNavItemDesktop } from '~/constants/top-bar'
68import { KunMobileMenu } from './KunMobileMenu'
79import { useEffect , useState } from 'react'
8- import { Navbar , NavbarContent , NavbarMenuToggle } from '@heroui/react'
10+ import {
11+ Navbar ,
12+ NavbarContent ,
13+ NavbarItem ,
14+ NavbarMenuToggle ,
15+ Button ,
16+ Tooltip
17+ } from '@heroui/react'
18+ import {
19+ ChevronDown ,
20+ Building2 ,
21+ Gamepad2 ,
22+ Puzzle ,
23+ Tags ,
24+ BookUser ,
25+ Clapperboard ,
26+ ChartColumnBig
27+ } from 'lucide-react'
28+ import { cn } from '~/utils/cn'
929
1030export const KunTopBar = ( ) => {
1131 const pathname = usePathname ( )
1232 const [ isMenuOpen , setIsMenuOpen ] = useState ( false )
1333
34+ const items : Array < { href : string ; label : string ; icon : React . ReactNode } > = [
35+ {
36+ href : '/galgame' ,
37+ label : 'Galgame 列表' ,
38+ icon : < Gamepad2 className = "size-4" />
39+ } ,
40+ {
41+ href : '/resource' ,
42+ label : '最新补丁列表' ,
43+ icon : < Puzzle className = "size-4" />
44+ } ,
45+ {
46+ href : '/tag' ,
47+ label : 'Galgame 标签列表' ,
48+ icon : < Tags className = "size-4" />
49+ } ,
50+ {
51+ href : '/company' ,
52+ label : 'Galgame 会社列表' ,
53+ icon : < Building2 className = "size-4" />
54+ } ,
55+ {
56+ href : '/character' ,
57+ label : 'Galgame 角色列表' ,
58+ icon : < BookUser className = "size-4" />
59+ } ,
60+ {
61+ href : '/person' ,
62+ label : 'Galgame 制作人列表' ,
63+ icon : < Clapperboard className = "size-4" />
64+ } ,
65+ {
66+ href : '/ranking' ,
67+ label : 'Galgame 排行' ,
68+ icon : < ChartColumnBig className = "size-4" />
69+ }
70+ ]
71+
1472 useEffect ( ( ) => {
1573 setIsMenuOpen ( false )
1674 } , [ pathname ] )
@@ -30,6 +88,43 @@ export const KunTopBar = () => {
3088
3189 < KunTopBarBrand />
3290
91+ < div className = "hidden md:flex items-center gap-6" >
92+ < Tooltip
93+ content = {
94+ < nav className = "p-2 space-y-1" >
95+ { items . map ( ( it ) => (
96+ < Link
97+ key = { it . href }
98+ href = { it . href }
99+ className = "flex items-center gap-3 px-3 py-2 rounded-lg text-sm text-default-700 hover:bg-default-100"
100+ >
101+ < span className = "shrink-0 text-default-600" > { it . icon } </ span >
102+ < span className = "truncate" > { it . label } </ span >
103+ </ Link >
104+ ) ) }
105+ </ nav >
106+ }
107+ >
108+ < Link href = "/galgame" className = "text-base" >
109+ 下载补丁
110+ </ Link >
111+ </ Tooltip >
112+
113+ { kunNavItemDesktop . map ( ( item ) => (
114+ < Link
115+ key = { item . href }
116+ className = { cn (
117+ 'text-base' ,
118+ pathname === item . href ? 'text-primary' : 'text-foreground'
119+ ) }
120+ href = { item . href }
121+ color = "primary"
122+ >
123+ { item . name }
124+ </ Link >
125+ ) ) }
126+ </ div >
127+
33128 < KunTopBarUser />
34129
35130 < KunMobileMenu />
0 commit comments