'use client'; import Link from 'next/link'; import { useRouter } from 'next/navigation'; import { useWindowSize } from 'usehooks-ts'; import { ModelSelector } from '@/components/model-selector'; import { SidebarToggle } from '@/components/sidebar-toggle'; import { Button } from '@/components/ui/button'; import { PlusIcon, VercelIcon } from './icons'; import { useSidebar } from './ui/sidebar'; import { memo } from 'react'; import { Tooltip, TooltipContent, TooltipTrigger } from './ui/tooltip'; import { type VisibilityType, VisibilitySelector } from './visibility-selector'; import type { Session } from 'next-auth'; function PureChatHeader({ chatId, selectedModelId, selectedVisibilityType, isReadonly, session, }: { chatId: string; selectedModelId: string; selectedVisibilityType: VisibilityType; isReadonly: boolean; session: Session; }) { const router = useRouter(); const { open } = useSidebar(); const { width: windowWidth } = useWindowSize(); return (
{(!open || windowWidth < 768) && ( New Chat )} {!isReadonly && ( )} {!isReadonly && ( )}
); } export const ChatHeader = memo(PureChatHeader, (prevProps, nextProps) => { return prevProps.selectedModelId === nextProps.selectedModelId; });