"use client" import { Logo } from "@ui/assets/Logo" import { useAuth } from "@lib/auth-context" import { LayoutGridIcon, Plus, SearchIcon, Settings, Home, Code2, Sun, ExternalLink, MenuIcon, MessageCircleIcon, } from "lucide-react" import { Button } from "@ui/components/button" import { cn } from "@lib/utils" import { dmSansClassName } from "@/lib/fonts" import { Tabs, TabsList, TabsTrigger } from "@ui/components/tabs" import { GraphIcon, IntegrationsIcon } from "@/components/integration-icons" import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger, } from "@ui/components/dropdown-menu" import { useProject } from "@/stores" import { useRouter } from "next/navigation" import Link from "next/link" import { SpaceSelector } from "./space-selector" import { useIsMobile } from "@hooks/use-mobile" import { useLocalStorageUsername } from "@hooks/use-local-storage-username" import { UserProfileMenu } from "@/components/user-profile-menu" import { FeedbackModal } from "./feedback-modal" import { useViewMode, type ViewMode } from "@/lib/view-mode-context" import { useQueryState } from "nuqs" import { feedbackParam } from "@/lib/search-params" interface HeaderProps { onAddMemory?: () => void onOpenChat?: () => void onOpenSearch?: () => void } export function Header({ onAddMemory, onOpenChat, onOpenSearch }: HeaderProps) { const { user, isRestoring } = useAuth() const { selectedProjects, setSelectedProjects } = useProject() const router = useRouter() const isMobile = useIsMobile() const [feedbackOpen, setFeedbackOpen] = useQueryState( "feedback", feedbackParam, ) const { viewMode, setViewMode } = useViewMode() const handleFeedback = () => setFeedbackOpen(true) const localStorageUsername = useLocalStorageUsername() const displayName = user?.displayUsername || (isRestoring ? localStorageUsername : "") || user?.name || "" const userName = displayName ? `${displayName.split(" ")[0]}'s` : "My" return (