"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 ? ( ) : ( offerBanner )}
{!isGuest ? ( <>
{showBrowserHint ? : null}
{avatarUrl ? ( ) : ( )} ) : null}
); }