"use client"; /** * ChatHeader 顶部栏 * * Profile 优先展示用户头像;头像缺失时回退到 lucide-react 。 */ import type { ReactNode } from "react"; import { Lock, UserRound } from "lucide-react"; import { BackButton, UserMessageAvatar } from "@/app/_components"; import { useActiveCharacterRoutes } from "@/providers/character-provider"; import { buildGlobalPageUrl } from "@/router/global-route-context"; import { ROUTES } from "@/router/routes"; import { useAppNavigator } from "@/router/use-app-navigator"; import { useUserSelector } from "@/stores/user/user-context"; import { BrowserHintOverlay } from "./browser-hint-overlay"; export interface ChatHeaderProps { isGuest: boolean; offerBanner?: ReactNode; showBrowserHint?: boolean; } export function ChatHeader({ isGuest, offerBanner, showBrowserHint = false, }: ChatHeaderProps) { const navigator = useAppNavigator(); const characterRoutes = useActiveCharacterRoutes(); const avatarUrl = useUserSelector((state) => state.context.avatarUrl); const handleOpenProfile = () => { navigator.push(buildGlobalPageUrl(ROUTES.profile, characterRoutes.chat)); }; return ( {isGuest ? ( navigator.openAuth(characterRoutes.chat)} aria-label="Sign up to unlock more features" > Sign up to unlock more features ) : ( offerBanner )} {!isGuest ? ( <> {showBrowserHint ? : null} {avatarUrl ? ( ) : ( )} > ) : null} ); }