"use client" import Link from "next/link" import { usePathname } from "next/navigation" import { Flag, Home, MoreHorizontal, Trophy, UserRound } from "lucide-react" import type { LucideIcon } from "lucide-react" import { cn } from "@/lib/utils" type Tab = { label: string icon: LucideIcon href: string /** Optional count shown as a small badge (e.g. unread items). */ badge?: number /** Ekstra ruter som også skal telle som "denne fanen er aktiv" -- * for sider som ikke selv er et direkte fanemål, men som appens egen * IA (se more-menu.tsx) allerede grupperer under denne fanen. */ matchPaths?: string[] } // hrefs rettet til de faktiske frontend-rutene (V0 kjente ikke disse) -- // /rounds er reservert API-prefiks (samme kollisjonsklasse som // /rounds->/my-rounds tidligere i prosjektet), og det finnes ingen egen // "/tournaments"-liste-side, kun /tournaments/[id]. "Turneringer" peker // derfor til dashbordets egen "Kommende turneringer"-seksjon. const TABS: Tab[] = [ { label: "Hjem", icon: Home, href: "/dashboard" }, { label: "Runder", icon: Flag, href: "/my-rounds" }, { label: "Turneringer", icon: Trophy, href: "/dashboard#kommende-turneringer" }, { label: "Profil", icon: UserRound, href: "/account" }, // /my-friends, /my-feed og /my-notifications er ikke egne fanemål, men er // allerede listet som "Mer"-sidens egne undersider (more-menu.tsx) -- uten // matchPaths viste ingen fane som aktiv i det hele tatt på disse tre // sidene (reelt funnet under scratch-verifisering, se CHANGELOG.md). { label: "Mer", icon: MoreHorizontal, href: "/more", matchPaths: ["/my-friends", "/my-feed", "/my-notifications"] }, ] function isActive(pathname: string, href: string) { // IKKE strippe et evt. #hash før sammenligning (fristende, men galt -- // forsøkt og reelt browser-verifisert som en regresjon, se CHANGELOG.md): // "Turneringer" sin href er et anker PÅ dashbordet (/dashboard#kommende- // turneringer), og usePathname() inneholder ALDRI hash. Strippes hashen // før sammenligning, matcher BÅDE "Hjem" og "Turneringer" samtidig på // /dashboard -- to faner fremhevet på én gang. Rå strengsammenligning // (V0s opprinnelige, ikke rørt her) unngår dette: "Turneringer" matcher // aldri via ren pathname, nøyaktig som dagens BottomTabBar-erstatning // uansett aldri fremhevet den (dashbordet satte alltid active="home"). if (href === "/") return pathname === "/" return pathname === href || pathname.startsWith(`${href}/`) } export function BottomNav({ tabs = TABS, disabledHrefs, onDisabledClick, }: { tabs?: Tab[] /** * Fanenes hrefs som skal vises låst (ADR-049, /velkommen — innlogget- * men-ikke-fullført-profil skal se HELE den vanlige navigasjonen, ikke * en avkortet versjon, men kun kunne gå til profilen før resten låses * opp). Rendres som en ` ) : ( {inner} )} ) })} ) }