import React from 'react'; import { Search, Settings } from 'lucide-react'; import { Input } from '../ui/input'; import { Button } from '../ui/button'; import { Avatar, AvatarFallback, AvatarImage } from '../ui/avatar'; import { useAuth } from '../auth/AuthProvider'; import { displayNameFromUser, displayRolesFromCodes } from '../../lib/currentUserDisplay'; import { formatRelativeSince } from '../../lib/relativeSince'; interface HeaderProps { title: string; /** 右上角设置:默认跳转 Support,与侧栏一致 */ onSettingsClick?: () => void; /** 点击右上角姓名/角色区域:进入当前用户编辑(由 Layout/App 处理路由) */ onProfileClick?: () => void; } export function Header({ title, onSettingsClick, onProfileClick }: HeaderProps) { const auth = useAuth(); const displayName = displayNameFromUser(auth.user); /** 第一行:姓名;第二行:接口返回的人类可读角色(如 Partner Admin) */ const primaryName = auth.roleDisplay ? (auth.user?.fullName ?? '').trim() || (auth.user?.nick ?? auth.user?.userName ?? '').trim() || displayName : displayName; const roleLine = auth.roleDisplay ?? displayRolesFromCodes(auth.roleCodes); const initials = primaryName .split(/\s+/) .filter(Boolean) .slice(0, 2) .map((w) => w[0]?.toUpperCase() ?? '') .join('') || 'U'; const currentDate = new Date().toLocaleDateString('en-US', { year: 'numeric', month: 'long', day: 'numeric' }); return (

{title} Overview

{currentDate} | Last updated:{' '} {auth.loading && !auth.user?.lastUpdated ? '…' : formatRelativeSince(auth.user?.lastUpdated ?? null)}

); }