2024-11-05 14:16:27 +03:00
|
|
|
'use client';
|
|
|
|
|
|
2024-10-24 16:35:51 -04:00
|
|
|
import Link from 'next/link';
|
2024-11-06 22:10:15 +03:00
|
|
|
import { useRouter } from 'next/navigation';
|
2024-11-05 14:16:27 +03:00
|
|
|
import { useWindowSize } from 'usehooks-ts';
|
2024-10-24 16:35:51 -04:00
|
|
|
|
2024-11-15 10:14:25 -05:00
|
|
|
import { ModelSelector } from '@/components/model-selector';
|
|
|
|
|
import { SidebarToggle } from '@/components/sidebar-toggle';
|
2024-10-24 16:35:51 -04:00
|
|
|
import { Button } from '@/components/ui/button';
|
|
|
|
|
import { BetterTooltip } from '@/components/ui/tooltip';
|
|
|
|
|
|
2024-11-05 14:16:27 +03:00
|
|
|
import { PlusIcon, VercelIcon } from './icons';
|
2024-11-15 10:14:25 -05:00
|
|
|
import { useSidebar } from './ui/sidebar';
|
2024-10-31 15:39:07 +05:30
|
|
|
|
2024-10-30 16:01:24 +05:30
|
|
|
export function ChatHeader({ selectedModelId }: { selectedModelId: string }) {
|
2024-11-06 22:10:15 +03:00
|
|
|
const router = useRouter();
|
2024-11-05 14:16:27 +03:00
|
|
|
const { open } = useSidebar();
|
|
|
|
|
|
|
|
|
|
const { width: windowWidth } = useWindowSize();
|
|
|
|
|
|
2024-10-24 16:35:51 -04:00
|
|
|
return (
|
2024-11-05 14:16:27 +03:00
|
|
|
<header className="flex sticky top-0 bg-background py-1.5 items-center px-2 md:px-2 gap-2">
|
2024-10-24 16:35:51 -04:00
|
|
|
<SidebarToggle />
|
2024-11-05 14:16:27 +03:00
|
|
|
{(!open || windowWidth < 768) && (
|
|
|
|
|
<BetterTooltip content="New Chat">
|
|
|
|
|
<Button
|
|
|
|
|
variant="outline"
|
|
|
|
|
className="order-2 md:order-1 md:px-2 px-2 md:h-fit ml-auto md:ml-0"
|
2024-11-06 22:10:15 +03:00
|
|
|
onClick={() => {
|
|
|
|
|
router.push('/');
|
|
|
|
|
router.refresh();
|
|
|
|
|
}}
|
2024-11-05 14:16:27 +03:00
|
|
|
>
|
2024-11-06 22:10:15 +03:00
|
|
|
<PlusIcon />
|
|
|
|
|
<span className="md:sr-only">New Chat</span>
|
2024-11-05 14:16:27 +03:00
|
|
|
</Button>
|
|
|
|
|
</BetterTooltip>
|
|
|
|
|
)}
|
2024-10-24 16:35:51 -04:00
|
|
|
<ModelSelector
|
2024-10-30 16:01:24 +05:30
|
|
|
selectedModelId={selectedModelId}
|
2024-10-24 16:35:51 -04:00
|
|
|
className="order-1 md:order-2"
|
|
|
|
|
/>
|
2024-11-05 14:16:27 +03:00
|
|
|
<Button
|
2024-11-06 19:12:46 +03:00
|
|
|
className="bg-zinc-900 dark:bg-zinc-100 hover:bg-zinc-800 dark:hover:bg-zinc-200 text-zinc-50 dark:text-zinc-900 hidden md:flex py-1.5 px-2 h-fit md:h-[34px] order-4 md:ml-auto"
|
2024-11-05 14:16:27 +03:00
|
|
|
asChild
|
|
|
|
|
>
|
|
|
|
|
<Link
|
|
|
|
|
href="https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fvercel%2Fai-chatbot&env=AUTH_SECRET,OPENAI_API_KEY&envDescription=Learn%20more%20about%20how%20to%20get%20the%20API%20Keys%20for%20the%20application&envLink=https%3A%2F%2Fgithub.com%2Fvercel%2Fai-chatbot%2Fblob%2Fmain%2F.env.example&demo-title=AI%20Chatbot&demo-description=An%20Open-Source%20AI%20Chatbot%20Template%20Built%20With%20Next.js%20and%20the%20AI%20SDK%20by%20Vercel.&demo-url=https%3A%2F%2Fchat.vercel.ai&stores=%5B%7B%22type%22:%22postgres%22%7D,%7B%22type%22:%22blob%22%7D%5D"
|
|
|
|
|
target="_noblank"
|
|
|
|
|
>
|
|
|
|
|
<VercelIcon size={16} />
|
|
|
|
|
Deploy with Vercel
|
|
|
|
|
</Link>
|
|
|
|
|
</Button>
|
2024-10-24 16:35:51 -04:00
|
|
|
</header>
|
|
|
|
|
);
|
|
|
|
|
}
|