diff --git a/app/opengraph-image.tsx b/app/opengraph-image.tsx new file mode 100644 index 0000000..b1f5236 --- /dev/null +++ b/app/opengraph-image.tsx @@ -0,0 +1,101 @@ +import { ImageResponse } from 'next/server' + +export const runtime = 'edge' + +export const alt = 'AI Chatbot' + +export const size = { + width: 1200, + height: 630 +} + +export const contentType = 'image/png' + +const interRegular = fetch( + new URL('../assets/fonts/Inter-Regular.ttf', import.meta.url) +).then(res => res.arrayBuffer()) + +const interBold = fetch( + new URL('../assets/fonts/Inter-Bold.ttf', import.meta.url) +).then(res => res.arrayBuffer()) + +export default async function Image() { + return new ImageResponse( + ( +
+
+
+
+ + + +
+
+ What is Next.js Chat? +
+
+
+
+ + + +
+
+ An App Router-ready AI chatbot template built using Vercel AI SDK + and KV for storage... +
+
+
+
+
+ + + +
+ Built with{' '} +
Vercel AI SDK
& +
KV
+
+
+
demo.nextjs.chat
+
+
+ ), + { + ...size, + fonts: [ + { + name: 'Inter', + data: await interRegular, + style: 'normal', + weight: 400 + }, + { + name: 'Inter', + data: await interBold, + style: 'normal', + weight: 700 + } + ] + } + ) +} diff --git a/components/header.tsx b/components/header.tsx index 0353809..b08bd46 100644 --- a/components/header.tsx +++ b/components/header.tsx @@ -7,7 +7,12 @@ import { clearChats } from '@/app/actions' import { buttonVariants } from '@/components/ui/button' import { Sidebar } from '@/components/sidebar' import { SidebarList } from '@/components/sidebar-list' -import { IconGitHub, IconSeparator, IconVercel } from '@/components/ui/icons' +import { + IconGitHub, + IconNextChat, + IconSeparator, + IconVercel +} from '@/components/ui/icons' import { SidebarFooter } from '@/components/sidebar-footer' import { ThemeToggle } from '@/components/theme-toggle' import { ClearHistory } from '@/components/clear-history' @@ -31,8 +36,9 @@ export async function Header() { ) : ( - - + + + )}