"use client" import { Phone, Video, Info, Search, MoreVertical, Users, Bell, BellOff } from "lucide-react" import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar" import { Button } from "@/components/ui/button" import { Badge } from "@/components/ui/badge" import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger } from "@/components/ui/dropdown-menu" import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "@/components/ui/tooltip" import { type Conversation, type User } from "@/app/chat/use-chat" interface ChatHeaderProps { conversation: Conversation | null users: User[] onToggleMute?: () => void onToggleInfo?: () => void } export function ChatHeader({ conversation, users, onToggleMute, onToggleInfo }: ChatHeaderProps) { if (!conversation) { return (

Select a conversation to start chatting

) } const getConversationUsers = () => { if (conversation.type === "direct") { return users.filter(user => conversation.participants.includes(user.id)) } return users.filter(user => conversation.participants.includes(user.id)) } const conversationUsers = getConversationUsers() const primaryUser = conversationUsers[0] const getStatusText = () => { if (conversation.type === "group") { const onlineCount = conversationUsers.filter(user => user.status === "online").length return `${conversation.participants.length} members, ${onlineCount} online` } else if (primaryUser) { switch (primaryUser.status) { case "online": return "Active now" case "away": return "Away" case "offline": return `Last seen ${new Date(primaryUser.lastSeen).toLocaleDateString()}` default: return "" } } return "" } const getStatusColor = () => { if (conversation.type === "group") return "text-muted-foreground" switch (primaryUser?.status) { case "online": return "text-green-600" case "away": return "text-yellow-600" case "offline": return "text-muted-foreground" default: return "text-muted-foreground" } } return (
{/* Left side - Avatar and info */}
{conversation.type === "group" ? ( ) : ( conversation.name.split(' ').map(n => n[0]).join('').slice(0, 2) )}

{conversation.name}

{conversation.isMuted && ( )} {conversation.type === "group" && ( Group )}

{getStatusText()}

{/* Right side - Action buttons */}
{/* Search */}

Search in conversation

{/* Phone call */}

Voice call

{/* Video call */}

Video call

{/* Info */}

Conversation info

{/* More options */} {conversation.isMuted ? ( <> Unmute conversation ) : ( <> Mute conversation )} Search messages {conversation.type === "group" && ( <> Manage members )} Delete conversation
) }