Files
soul/components/bottom-nav.tsx
v0 f3195d9331 refactor: overhaul homepage and app structure
Simplify homepage, show chapter counts, display directory, trim bottom nav, in-page match feature, move marketing content, and enhance "My" page.

#VERCEL_SKIP

Co-authored-by: undefined <undefined+undefined@users.noreply.github.com>
2026-01-14 05:10:32 +00:00

58 lines
2.2 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"use client"
import Link from "next/link"
import { usePathname } from "next/navigation"
import { Home, User, Handshake } from "lucide-react"
import { useState } from "react"
import { MatchModal } from "@/components/match-modal"
export function BottomNav() {
const pathname = usePathname()
const [showMatch, setShowMatch] = useState(false)
// 在管理后台不显示底部导航
if (pathname.startsWith("/admin")) {
return null
}
return (
<>
{/* iOS风格底部导航 - 只有3个按钮匹配在当前页面弹窗 */}
<nav className="fixed bottom-0 left-0 right-0 z-40 bg-black/80 backdrop-blur-xl border-t border-white/[0.06] safe-bottom">
<div className="flex items-center justify-around py-2 max-w-lg mx-auto">
{/* 首页 */}
<Link href="/" className="flex flex-col items-center py-2 px-6 transition-all">
<Home
className={`w-5 h-5 mb-0.5 ${pathname === "/" ? "text-[var(--app-brand)]" : "text-white/40"}`}
strokeWidth={pathname === "/" ? 2.5 : 1.5}
/>
<span className={`text-[10px] ${pathname === "/" ? "text-[var(--app-brand)]" : "text-white/40"}`}>
</span>
</Link>
{/* 匹配合作 - 点击弹出弹窗而不是跳转 */}
<button onClick={() => setShowMatch(true)} className="flex flex-col items-center py-2 px-6 transition-all">
<Handshake className="w-5 h-5 mb-0.5 text-white/40" strokeWidth={1.5} />
<span className="text-[10px] text-white/40"></span>
</button>
{/* 我的 */}
<Link href="/my" className="flex flex-col items-center py-2 px-6 transition-all">
<User
className={`w-5 h-5 mb-0.5 ${pathname.startsWith("/my") ? "text-[var(--app-brand)]" : "text-white/40"}`}
strokeWidth={pathname.startsWith("/my") ? 2.5 : 1.5}
/>
<span className={`text-[10px] ${pathname.startsWith("/my") ? "text-[var(--app-brand)]" : "text-white/40"}`}>
</span>
</Link>
</div>
</nav>
{/* 匹配弹窗 */}
<MatchModal isOpen={showMatch} onClose={() => setShowMatch(false)} />
</>
)
}