From 7df5d0d25e928f70a89e8cee409d753deea68ad1 Mon Sep 17 00:00:00 2001 From: jeremyphilemon Date: Sat, 5 Oct 2024 14:07:51 -0700 Subject: [PATCH 1/5] Refactor to use hooks and supabase --- .env.example | 19 +- ai/index.ts | 9 + ai/rag-middleware.ts | 3 + app/(auth)/actions.ts | 80 + app/(auth)/login/page.tsx | 54 + app/(auth)/register/page.tsx | 56 + app/(chat)/[id]/page.tsx | 22 + app/(chat)/actions.ts | 31 + app/(chat)/api/chat/route.ts | 63 + app/(chat)/api/files/upload/route.ts | 47 + app/(chat)/api/history/route.ts | 17 + app/(chat)/chat/[id]/page.tsx | 66 - app/(chat)/error.tsx | 19 - app/(chat)/layout.tsx | 14 - app/(chat)/opengraph-image.png | Bin 0 -> 65223 bytes app/(chat)/page.tsx | 25 +- app/(chat)/twitter-image.png | Bin 0 -> 65223 bytes app/(chat)/waiting-room/page.tsx | 10 - .../[[...restpath]]/route.ts | 37 - app/actions.ts | 156 - app/favicon.ico | Bin 0 -> 2053 bytes app/globals.css | 150 +- app/layout.tsx | 80 +- app/login/actions.ts | 71 - app/login/page.tsx | 18 - app/new/page.tsx | 5 - app/opengraph-image.png | Bin 75337 -> 0 bytes app/share/[id]/page.tsx | 58 - app/signup/actions.ts | 111 - app/signup/page.tsx | 18 - app/twitter-image.png | Bin 75337 -> 0 bytes app/uncut-sans.woff2 | Bin 0 -> 78072 bytes auth.config.ts | 42 - auth.ts | 45 - components.json | 9 +- components/button-scroll-to-bottom.tsx | 36 - components/chat-history.tsx | 49 - components/chat-list.tsx | 47 - components/chat-message-actions.tsx | 40 - components/chat-message.tsx | 80 - components/chat-panel.tsx | 150 - components/chat-share-dialog.tsx | 95 - components/chat.tsx | 135 +- components/clear-history.tsx | 75 - components/empty-screen.tsx | 35 - components/external-link.tsx | 29 - components/flights/boarding-pass.tsx | 88 - components/flights/destinations.tsx | 36 - components/flights/flight-status.tsx | 151 - components/flights/list-flights.tsx | 132 - components/flights/purchase-ticket.tsx | 149 - components/flights/select-seats.tsx | 143 - components/footer.tsx | 26 - components/form.tsx | 44 + components/header.tsx | 82 - components/history.tsx | 241 + components/hotels/list-hotels.tsx | 87 - components/icons.tsx | 592 ++ components/login-button.tsx | 42 - components/login-form.tsx | 97 - components/markdown.tsx | 85 +- components/media/video.tsx | 19 - components/message.tsx | 43 + components/multimodal-input.tsx | 256 + components/navbar.tsx | 66 + components/overview.tsx | 34 + components/preview-attachment.tsx | 43 + components/prompt-form.tsx | 172 - components/providers.tsx | 15 - components/{ui => shadcn}/alert-dialog.tsx | 32 +- components/shadcn/button.tsx | 56 + components/{ui => shadcn}/dropdown-menu.tsx | 53 +- components/shadcn/input.tsx | 25 + components/{ui => shadcn}/label.tsx | 2 +- components/{ui => shadcn}/sheet.tsx | 8 +- components/shadcn/textarea.tsx | 24 + components/sidebar-actions.tsx | 125 - components/sidebar-desktop.tsx | 19 - components/sidebar-footer.tsx | 16 - components/sidebar-item.tsx | 124 - components/sidebar-items.tsx | 42 - components/sidebar-list.tsx | 38 - components/sidebar-mobile.tsx | 31 - components/sidebar-toggle.tsx | 24 - components/sidebar.tsx | 21 - components/signup-form.tsx | 95 - components/stocks/events-skeleton.tsx | 31 - components/stocks/events.tsx | 30 - components/stocks/index.tsx | 36 - components/stocks/message.tsx | 136 - components/stocks/spinner.tsx | 16 - components/stocks/stock-purchase.tsx | 146 - components/stocks/stock-skeleton.tsx | 22 - components/stocks/stock.tsx | 210 - components/stocks/stocks-skeleton.tsx | 9 - components/stocks/stocks.tsx | 67 - components/submit-button.tsx | 27 + components/tailwind-indicator.tsx | 14 - components/theme-provider.tsx | 9 + components/theme-toggle.tsx | 41 +- components/ui/badge.tsx | 36 - components/ui/button.tsx | 57 - components/ui/codeblock.tsx | 148 - components/ui/dialog.tsx | 122 - components/ui/icons.tsx | 765 --- components/ui/input.tsx | 25 - components/ui/select.tsx | 164 - components/ui/separator.tsx | 31 - components/ui/sonner.tsx | 31 - components/ui/switch.tsx | 29 - components/ui/textarea.tsx | 24 - components/ui/tooltip.tsx | 30 - components/use-scroll-to-bottom.ts | 29 + components/user-menu.tsx | 53 - lib/chat/ratelimit.ts | 22 - lib/chat/responses.tsx | 68 - lib/hooks/use-copy-to-clipboard.tsx | 33 - lib/hooks/use-enter-submit.tsx | 23 - lib/hooks/use-local-storage.ts | 24 - lib/hooks/use-scroll-anchor.tsx | 87 - lib/hooks/use-sidebar.tsx | 60 - lib/hooks/use-streamable-text.ts | 26 - lib/kasada/kasada-client.tsx | 30 - lib/kasada/kasada-server.ts | 212 - lib/types.ts | 37 - lib/utils.ts | 89 - middleware.ts | 31 +- next-env.d.ts | 2 +- next.config.js | 13 - next.config.mjs | 9 + package-lock.json | 4884 +++++++++++++++ package.json | 113 +- pnpm-lock.yaml | 5427 ++++++++--------- postcss.config.js | 6 - postcss.config.mjs | 8 + prettier.config.cjs | 34 - public/apple-touch-icon.png | Bin 10423 -> 0 bytes public/favicon-16x16.png | Bin 539 -> 0 bytes public/favicon.ico | Bin 15406 -> 0 bytes public/images/1.jpg | Bin 12737 -> 0 bytes public/images/2.jpg | Bin 17450 -> 0 bytes public/images/3.jpg | Bin 16918 -> 0 bytes public/images/gemini.png | Bin 5353 -> 0 bytes public/next.svg | 1 - public/og.png | Bin 75337 -> 0 bytes public/thirteen.svg | 1 - public/vercel.svg | 1 - public/videos/books.mp4 | Bin 9112277 -> 0 bytes tailwind.config.ts | 140 +- tsconfig.json | 23 +- utils/functions.ts | 36 + utils/shadcn/functions.ts | 6 + utils/supabase/middleware.ts | 70 + utils/supabase/schema.ts | 6 + utils/supabase/server.ts | 29 + utils/supabase/setup-db.ts | 75 + 156 files changed, 10102 insertions(+), 9346 deletions(-) create mode 100644 ai/index.ts create mode 100644 ai/rag-middleware.ts create mode 100644 app/(auth)/actions.ts create mode 100644 app/(auth)/login/page.tsx create mode 100644 app/(auth)/register/page.tsx create mode 100644 app/(chat)/[id]/page.tsx create mode 100644 app/(chat)/actions.ts create mode 100644 app/(chat)/api/chat/route.ts create mode 100644 app/(chat)/api/files/upload/route.ts create mode 100644 app/(chat)/api/history/route.ts delete mode 100644 app/(chat)/chat/[id]/page.tsx delete mode 100644 app/(chat)/error.tsx delete mode 100644 app/(chat)/layout.tsx create mode 100644 app/(chat)/opengraph-image.png create mode 100644 app/(chat)/twitter-image.png delete mode 100644 app/(chat)/waiting-room/page.tsx delete mode 100644 app/149e9513-01fa-4fb0-aad4-566afd725d1b/2d206a39-8ed7-437e-a3be-862e0f06eea3/[[...restpath]]/route.ts delete mode 100644 app/actions.ts create mode 100644 app/favicon.ico delete mode 100644 app/login/actions.ts delete mode 100644 app/login/page.tsx delete mode 100644 app/new/page.tsx delete mode 100644 app/opengraph-image.png delete mode 100644 app/share/[id]/page.tsx delete mode 100644 app/signup/actions.ts delete mode 100644 app/signup/page.tsx delete mode 100644 app/twitter-image.png create mode 100644 app/uncut-sans.woff2 delete mode 100644 auth.config.ts delete mode 100644 auth.ts delete mode 100644 components/button-scroll-to-bottom.tsx delete mode 100644 components/chat-history.tsx delete mode 100644 components/chat-list.tsx delete mode 100644 components/chat-message-actions.tsx delete mode 100644 components/chat-message.tsx delete mode 100644 components/chat-panel.tsx delete mode 100644 components/chat-share-dialog.tsx delete mode 100644 components/clear-history.tsx delete mode 100644 components/empty-screen.tsx delete mode 100644 components/external-link.tsx delete mode 100644 components/flights/boarding-pass.tsx delete mode 100644 components/flights/destinations.tsx delete mode 100644 components/flights/flight-status.tsx delete mode 100644 components/flights/list-flights.tsx delete mode 100644 components/flights/purchase-ticket.tsx delete mode 100644 components/flights/select-seats.tsx delete mode 100644 components/footer.tsx create mode 100644 components/form.tsx delete mode 100644 components/header.tsx create mode 100644 components/history.tsx delete mode 100644 components/hotels/list-hotels.tsx create mode 100644 components/icons.tsx delete mode 100644 components/login-button.tsx delete mode 100644 components/login-form.tsx delete mode 100644 components/media/video.tsx create mode 100644 components/message.tsx create mode 100644 components/multimodal-input.tsx create mode 100644 components/navbar.tsx create mode 100644 components/overview.tsx create mode 100644 components/preview-attachment.tsx delete mode 100644 components/prompt-form.tsx delete mode 100644 components/providers.tsx rename components/{ui => shadcn}/alert-dialog.tsx (79%) create mode 100644 components/shadcn/button.tsx rename components/{ui => shadcn}/dropdown-menu.tsx (74%) create mode 100644 components/shadcn/input.tsx rename components/{ui => shadcn}/label.tsx (93%) rename components/{ui => shadcn}/sheet.tsx (93%) create mode 100644 components/shadcn/textarea.tsx delete mode 100644 components/sidebar-actions.tsx delete mode 100644 components/sidebar-desktop.tsx delete mode 100644 components/sidebar-footer.tsx delete mode 100644 components/sidebar-item.tsx delete mode 100644 components/sidebar-items.tsx delete mode 100644 components/sidebar-list.tsx delete mode 100644 components/sidebar-mobile.tsx delete mode 100644 components/sidebar-toggle.tsx delete mode 100644 components/sidebar.tsx delete mode 100644 components/signup-form.tsx delete mode 100644 components/stocks/events-skeleton.tsx delete mode 100644 components/stocks/events.tsx delete mode 100644 components/stocks/index.tsx delete mode 100644 components/stocks/message.tsx delete mode 100644 components/stocks/spinner.tsx delete mode 100644 components/stocks/stock-purchase.tsx delete mode 100644 components/stocks/stock-skeleton.tsx delete mode 100644 components/stocks/stock.tsx delete mode 100644 components/stocks/stocks-skeleton.tsx delete mode 100644 components/stocks/stocks.tsx create mode 100644 components/submit-button.tsx delete mode 100644 components/tailwind-indicator.tsx create mode 100644 components/theme-provider.tsx delete mode 100644 components/ui/badge.tsx delete mode 100644 components/ui/button.tsx delete mode 100644 components/ui/codeblock.tsx delete mode 100644 components/ui/dialog.tsx delete mode 100644 components/ui/icons.tsx delete mode 100644 components/ui/input.tsx delete mode 100644 components/ui/select.tsx delete mode 100644 components/ui/separator.tsx delete mode 100644 components/ui/sonner.tsx delete mode 100644 components/ui/switch.tsx delete mode 100644 components/ui/textarea.tsx delete mode 100644 components/ui/tooltip.tsx create mode 100644 components/use-scroll-to-bottom.ts delete mode 100644 components/user-menu.tsx delete mode 100644 lib/chat/ratelimit.ts delete mode 100644 lib/chat/responses.tsx delete mode 100644 lib/hooks/use-copy-to-clipboard.tsx delete mode 100644 lib/hooks/use-enter-submit.tsx delete mode 100644 lib/hooks/use-local-storage.ts delete mode 100644 lib/hooks/use-scroll-anchor.tsx delete mode 100644 lib/hooks/use-sidebar.tsx delete mode 100644 lib/hooks/use-streamable-text.ts delete mode 100644 lib/kasada/kasada-client.tsx delete mode 100644 lib/kasada/kasada-server.ts delete mode 100644 lib/types.ts delete mode 100644 lib/utils.ts delete mode 100644 next.config.js create mode 100644 next.config.mjs create mode 100644 package-lock.json delete mode 100644 postcss.config.js create mode 100644 postcss.config.mjs delete mode 100644 prettier.config.cjs delete mode 100644 public/apple-touch-icon.png delete mode 100644 public/favicon-16x16.png delete mode 100644 public/favicon.ico delete mode 100644 public/images/1.jpg delete mode 100644 public/images/2.jpg delete mode 100644 public/images/3.jpg delete mode 100644 public/images/gemini.png delete mode 100644 public/next.svg delete mode 100644 public/og.png delete mode 100644 public/thirteen.svg delete mode 100644 public/vercel.svg delete mode 100644 public/videos/books.mp4 create mode 100644 utils/functions.ts create mode 100644 utils/shadcn/functions.ts create mode 100644 utils/supabase/middleware.ts create mode 100644 utils/supabase/schema.ts create mode 100644 utils/supabase/server.ts create mode 100644 utils/supabase/setup-db.ts diff --git a/.env.example b/.env.example index 10d6a5c..2627a11 100644 --- a/.env.example +++ b/.env.example @@ -1,16 +1,5 @@ -# Then get your Google Gemini API Key here: https://cloud.google.com/vertex-ai -GOOGLE_GENERATIVE_AI_API_KEY=XXXXXXXX +# Create an API key here https://platform.openai.com/account/api-keys +OPENAI_API_KEY=**** -# Generate a random secret: https://generate-secret.vercel.app/32 or `openssl rand -base64 32` -AUTH_SECRET=XXXXXXXX - -# Instructions to create kv database here: https://vercel.com/docs/storage/vercel-kv/quickstart and -KV_URL=XXXXXXXX -KV_REST_API_URL=XXXXXXXX -KV_REST_API_TOKEN=XXXXXXXX -KV_REST_API_READ_ONLY_TOKEN=XXXXXXXX - -# Get your kasada configurations here: https://kasada.io -KASADA_API_ENDPOINT=XXXXXXXX -KASADA_API_VERSION=XXXXXXXX -KASADA_HEADER_HOST=XXXXXXXX \ No newline at end of file +# Create an access token here https://supabase.com/dashboard/account/tokens +SUPABASE_ACCESS_TOKEN=**** diff --git a/ai/index.ts b/ai/index.ts new file mode 100644 index 0000000..645d10e --- /dev/null +++ b/ai/index.ts @@ -0,0 +1,9 @@ +// import { openai } from "@ai-sdk/openai"; +import { experimental_wrapLanguageModel as wrapLanguageModel } from "ai"; +import { ragMiddleware } from "./rag-middleware"; +import { google } from "@ai-sdk/google"; + +export const customModel = wrapLanguageModel({ + model: google("gemini-1.5-pro-002"), + middleware: ragMiddleware, +}); diff --git a/ai/rag-middleware.ts b/ai/rag-middleware.ts new file mode 100644 index 0000000..980b7ce --- /dev/null +++ b/ai/rag-middleware.ts @@ -0,0 +1,3 @@ +import { Experimental_LanguageModelV1Middleware } from "ai"; + +export const ragMiddleware: Experimental_LanguageModelV1Middleware = {}; diff --git a/app/(auth)/actions.ts b/app/(auth)/actions.ts new file mode 100644 index 0000000..4b56752 --- /dev/null +++ b/app/(auth)/actions.ts @@ -0,0 +1,80 @@ +"use server"; + +import { redirect } from "next/navigation"; +import { revalidatePath } from "next/cache"; +import { createClient } from "@/utils/supabase/server"; + +export interface LoginActionState { + status: "idle" | "in_progress" | "success" | "failed"; +} + +export const login = async ( + _: LoginActionState, + formData: FormData, +): Promise => { + const supabase = createClient(); + + const { error } = await supabase.auth.signInWithPassword({ + email: formData.get("email") as string, + password: formData.get("password") as string, + }); + + if (error) { + return { status: "failed" } as LoginActionState; + } + + revalidatePath("/", "layout"); + redirect("/"); +}; + +export interface RegisterActionState { + status: "idle" | "in_progress" | "success" | "failed" | "user_exists"; +} + +export const register = async (_: RegisterActionState, formData: FormData) => { + const supabase = createClient(); + + let email = formData.get("email") as string; + let password = formData.get("password") as string; + + const { data, error } = await supabase.auth.signUp({ email, password }); + + if (error) { + if (error.code === "user_already_exists") { + return { status: "user_exists" } as RegisterActionState; + } + } + + const { user, session } = data; + + if (user && session) { + const { error } = await supabase.auth.signInWithPassword({ + email: formData.get("email") as string, + password: formData.get("password") as string, + }); + + if (error) { + return { status: "failed" } as LoginActionState; + } + + revalidatePath("/", "layout"); + redirect("/"); + } else { + return { status: "failed" } as RegisterActionState; + } +}; + +export const getUserFromSession = async () => { + const supabase = createClient(); + const { data } = await supabase.auth.getUser(); + return data.user; +}; + +export const signOut = async () => { + const supabase = createClient(); + const { error } = await supabase.auth.signOut(); + + if (!error) { + redirect("/login"); + } +}; diff --git a/app/(auth)/login/page.tsx b/app/(auth)/login/page.tsx new file mode 100644 index 0000000..9a7ee99 --- /dev/null +++ b/app/(auth)/login/page.tsx @@ -0,0 +1,54 @@ +"use client"; + +import Link from "next/link"; +import { Form } from "@/components/form"; +import { SubmitButton } from "@/components/submit-button"; +import { useActionState, useEffect } from "react"; +import { login, LoginActionState } from "../actions"; +import { toast } from "sonner"; +import { useRouter } from "next/navigation"; + +export default function Page() { + const router = useRouter(); + + const [state, formAction] = useActionState( + login, + { + status: "idle", + }, + ); + + useEffect(() => { + if (state.status === "failed") { + toast.error("Invalid credentials!"); + } else if (state.status === "success") { + router.refresh(); + } + }, [state.status, router]); + + return ( +
+
+
+

Sign In

+

+ Use your email and password to sign in +

+
+
+ Sign in +

+ {"Don't have an account? "} + + Sign up + + {" for free."} +

+
+
+
+ ); +} diff --git a/app/(auth)/register/page.tsx b/app/(auth)/register/page.tsx new file mode 100644 index 0000000..e5f4e0a --- /dev/null +++ b/app/(auth)/register/page.tsx @@ -0,0 +1,56 @@ +"use client"; + +import Link from "next/link"; +import { Form } from "@/components/form"; +import { SubmitButton } from "@/components/submit-button"; +import { register, RegisterActionState } from "../actions"; +import { useActionState, useEffect } from "react"; +import { toast } from "sonner"; +import { useRouter } from "next/navigation"; + +export default function Page() { + const router = useRouter(); + const [state, formAction] = useActionState( + register, + { + status: "idle", + }, + ); + + useEffect(() => { + if (state.status === "user_exists") { + toast.error("Account already exists"); + } else if (state.status === "failed") { + toast.error("Failed to create account"); + } else if (state.status === "success") { + toast.success("Account created successfully"); + router.refresh(); + } + }, [state, router]); + + return ( +
+
+
+

Sign Up

+

+ Create an account with your email and password +

+
+
+ Sign Up +

+ {"Already have an account? "} + + Sign in + + {" instead."} +

+
+
+
+ ); +} diff --git a/app/(chat)/[id]/page.tsx b/app/(chat)/[id]/page.tsx new file mode 100644 index 0000000..aca03cd --- /dev/null +++ b/app/(chat)/[id]/page.tsx @@ -0,0 +1,22 @@ +import { Message } from "ai"; +import { Chat } from "@/utils/supabase/schema"; +import { getChatById } from "../actions"; +import { notFound } from "next/navigation"; +import { Chat as PreviewChat } from "@/components/chat"; + +export default async function Page({ params }: { params: any }) { + const { id } = params; + const chatFromDb = await getChatById({ id }); + + if (!chatFromDb) { + notFound(); + } + + // type casting + const chat: Chat = { + ...chatFromDb, + messages: chatFromDb.messages as Message[], + }; + + return ; +} diff --git a/app/(chat)/actions.ts b/app/(chat)/actions.ts new file mode 100644 index 0000000..d2c0722 --- /dev/null +++ b/app/(chat)/actions.ts @@ -0,0 +1,31 @@ +import { createClient } from "@/utils/supabase/server"; + +export async function saveChat({ + id, + messages, + userId, +}: { + id: string; + messages: any; + userId: string; +}) { + const supabase = createClient(); + + await supabase.from("chat").upsert({ + id, + messages, + userId, + }); +} + +export async function getChatById({ id }: { id: string }) { + const supabase = createClient(); + + const { data: chat } = await supabase + .from("chat") + .select("*") + .eq("id", id) + .single(); + + return chat; +} diff --git a/app/(chat)/api/chat/route.ts b/app/(chat)/api/chat/route.ts new file mode 100644 index 0000000..648a2d6 --- /dev/null +++ b/app/(chat)/api/chat/route.ts @@ -0,0 +1,63 @@ +import { customModel } from "@/ai"; +import { saveChat } from "@/app/(chat)/actions"; +import { convertToCoreMessages, streamText } from "ai"; +import { getUserFromSession } from "@/app/(auth)/actions"; +import { createClient } from "@/utils/supabase/server"; + +export async function POST(request: Request) { + const { id, messages, selectedFilePathnames } = await request.json(); + + const user = await getUserFromSession(); + + if (!user) { + return new Response("Unauthorized", { status: 401 }); + } + + const result = await streamText({ + model: customModel, + system: + "you are a friendly assistant! keep your responses concise and helpful.", + messages: convertToCoreMessages(messages), + experimental_providerMetadata: { + files: { + selection: selectedFilePathnames, + }, + }, + onFinish: async ({ text }) => { + await saveChat({ + id, + messages: [...messages, { role: "assistant", content: text }], + userId: user.id, + }); + }, + experimental_telemetry: { + isEnabled: true, + functionId: "stream-text", + }, + }); + + return result.toDataStreamResponse({}); +} + +export async function DELETE(request: Request) { + const { searchParams } = new URL(request.url); + const id = searchParams.get("id"); + + if (!id) { + return new Response("Not Found", { status: 404 }); + } + + const supabase = createClient(); + + try { + const { data, error } = await supabase.from("chat").delete().eq("id", id); + + if (error) throw error; + + return Response.json(data); + } catch (error) { + return new Response("An error occurred while processing your request", { + status: 500, + }); + } +} diff --git a/app/(chat)/api/files/upload/route.ts b/app/(chat)/api/files/upload/route.ts new file mode 100644 index 0000000..c6d22cb --- /dev/null +++ b/app/(chat)/api/files/upload/route.ts @@ -0,0 +1,47 @@ +import { getUserFromSession } from "@/app/(auth)/actions"; +import { createClient } from "@/utils/supabase/server"; +import { NextResponse } from "next/server"; + +export async function POST(request: Request) { + const user = await getUserFromSession(); + + if (!user) { + return Response.redirect("/login"); + } + + if (request.body === null) { + return new Response("Request body is empty", { status: 400 }); + } + + const supabase = createClient(); + + try { + const formData = await request.formData(); + const file = formData.get("file") as File; + + if (!file) { + return NextResponse.json({ error: "No file uploaded" }, { status: 400 }); + } + + const filename = file.name; + const fileBuffer = await file.arrayBuffer(); + + const { data, error } = await supabase.storage + .from("attachments") + .upload(filename, fileBuffer, { + contentType: file.type, + upsert: true, + }); + + if (error) { + return NextResponse.json({ error: "Upload failed" }, { status: 500 }); + } + + return NextResponse.json({ data }); + } catch (error) { + return NextResponse.json( + { error: "Failed to process request" }, + { status: 500 }, + ); + } +} diff --git a/app/(chat)/api/history/route.ts b/app/(chat)/api/history/route.ts new file mode 100644 index 0000000..7aea192 --- /dev/null +++ b/app/(chat)/api/history/route.ts @@ -0,0 +1,17 @@ +import { getUserFromSession } from "@/app/(auth)/actions"; +import { createClient } from "@/utils/supabase/server"; + +export async function GET() { + const supabase = createClient(); + const user = await getUserFromSession(); + + if (!user) { + return Response.json("Unauthorized!", { status: 401 }); + } + + const { data: chats } = await supabase + .from("chat") + .select("*") + .order("createdAt", { ascending: false }); + return Response.json(chats); +} diff --git a/app/(chat)/chat/[id]/page.tsx b/app/(chat)/chat/[id]/page.tsx deleted file mode 100644 index a25dfef..0000000 --- a/app/(chat)/chat/[id]/page.tsx +++ /dev/null @@ -1,66 +0,0 @@ -import { type Metadata } from 'next' -import { notFound, redirect } from 'next/navigation' - -import { auth } from '@/auth' -import { getChat, getMissingKeys } from '@/app/actions' -import { Chat } from '@/components/chat' -import { AI } from '@/lib/chat/actions' -import { Session } from '@/lib/types' - -export interface ChatPageProps { - params: { - id: string - } -} - -export async function generateMetadata({ - params -}: ChatPageProps): Promise { - const session = await auth() - - if (!session?.user) { - return {} - } - - const chat = await getChat(params.id, session.user.id) - return { - title: chat?.title.toString().slice(0, 50) ?? 'Chat' - } -} - -export default async function ChatPage({ params }: ChatPageProps) { - const session = (await auth()) as Session - const missingKeys = await getMissingKeys() - - if (!session?.user) { - redirect(`/login?next=/chat/${params.id}`) - } - - const userId = session.user.id as string - const chat = await getChat(params.id, userId) - - if (!chat) { - redirect('/') - } - - if (chat?.userId !== session?.user?.id) { - notFound() - } - - return ( - - - - ) -} diff --git a/app/(chat)/error.tsx b/app/(chat)/error.tsx deleted file mode 100644 index 2163a74..0000000 --- a/app/(chat)/error.tsx +++ /dev/null @@ -1,19 +0,0 @@ -'use client' - -export default function Error({ - error -}: { - error: Error & { digest?: string } -}) { - return ( -
-

- Oops, something went wrong! -

-

- {error.message || 'The AI got rate limited, please try again later.'} -

-

Digest: {error.digest}

-
- ) -} diff --git a/app/(chat)/layout.tsx b/app/(chat)/layout.tsx deleted file mode 100644 index 2825d59..0000000 --- a/app/(chat)/layout.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import { SidebarDesktop } from '@/components/sidebar-desktop' - -interface ChatLayoutProps { - children: React.ReactNode -} - -export default async function ChatLayout({ children }: ChatLayoutProps) { - return ( -
- - {children} -
- ) -} diff --git a/app/(chat)/opengraph-image.png b/app/(chat)/opengraph-image.png new file mode 100644 index 0000000000000000000000000000000000000000..e8eb20e5d47faf809e6dd82ec3c07b2d02742d8c GIT binary patch literal 65223 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

DtwbEMp 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 JO~&Nb{|BYl8an_0 literal 0 HcmV?d00001 diff --git a/app/(chat)/page.tsx b/app/(chat)/page.tsx index f43ce9f..d07eab2 100644 --- a/app/(chat)/page.tsx +++ b/app/(chat)/page.tsx @@ -1,22 +1,7 @@ -import { nanoid } from '@/lib/utils' -import { Chat } from '@/components/chat' -import { AI } from '@/lib/chat/actions' -import { auth } from '@/auth' -import { Session } from '@/lib/types' -import { getMissingKeys } from '../actions' +import { Chat } from "@/components/chat"; +import { generateUUID } from "@/utils/functions"; -export const metadata = { - title: 'Next.js AI Chatbot' -} - -export default async function IndexPage() { - const id = nanoid() - const session = (await auth()) as Session - const missingKeys = await getMissingKeys() - - return ( - - - - ) +export default async function Page() { + const id = generateUUID(); + return ; } diff --git a/app/(chat)/twitter-image.png b/app/(chat)/twitter-image.png new file mode 100644 index 0000000000000000000000000000000000000000..e8eb20e5d47faf809e6dd82ec3c07b2d02742d8c GIT binary patch literal 65223 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

DtwbEMp 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 JO~&Nb{|BYl8an_0 literal 0 HcmV?d00001 diff --git a/app/(chat)/waiting-room/page.tsx b/app/(chat)/waiting-room/page.tsx deleted file mode 100644 index 862523f..0000000 --- a/app/(chat)/waiting-room/page.tsx +++ /dev/null @@ -1,10 +0,0 @@ -'use client' - -export default function Page() { - return ( -

-

You are in the queue

-

Please try again in a few minutes.

-
- ) -} diff --git a/app/149e9513-01fa-4fb0-aad4-566afd725d1b/2d206a39-8ed7-437e-a3be-862e0f06eea3/[[...restpath]]/route.ts b/app/149e9513-01fa-4fb0-aad4-566afd725d1b/2d206a39-8ed7-437e-a3be-862e0f06eea3/[[...restpath]]/route.ts deleted file mode 100644 index b70e01b..0000000 --- a/app/149e9513-01fa-4fb0-aad4-566afd725d1b/2d206a39-8ed7-437e-a3be-862e0f06eea3/[[...restpath]]/route.ts +++ /dev/null @@ -1,37 +0,0 @@ -export const runtime = 'edge' -export const dynamic = 'force-dynamic' -export const maxDuration = 3 - -async function handler(request: Request) { - const url = new URL(request.url) - - url.protocol = 'https:' - url.host = process.env.KASADA_API_ENDPOINT || '' - url.port = '' - url.searchParams.delete('restpath') - - const headers = new Headers(request.headers) - headers.set('X-Forwarded-Host', process.env.KASADA_HEADER_HOST || '') - headers.delete('host') - const r = await fetch(url.toString(), { - method: request.method, - body: request.body, - headers, - mode: request.mode, - redirect: 'manual', - // @ts-expect-error - duplex: 'half' - }) - const responseHeaders = new Headers(r.headers) - responseHeaders.set('cdn-cache-control', 'no-cache') - return new Response(r.body, { - status: r.status, - statusText: r.statusText, - headers: responseHeaders - }) -} - -export const GET = handler -export const POST = handler -export const OPTIONS = handler -export const PUT = handler diff --git a/app/actions.ts b/app/actions.ts deleted file mode 100644 index 105f9fa..0000000 --- a/app/actions.ts +++ /dev/null @@ -1,156 +0,0 @@ -'use server' - -import { revalidatePath } from 'next/cache' -import { redirect } from 'next/navigation' -import { kv } from '@vercel/kv' - -import { auth } from '@/auth' -import { type Chat } from '@/lib/types' - -export async function getChats(userId?: string | null) { - if (!userId) { - return [] - } - - try { - const pipeline = kv.pipeline() - const chats: string[] = await kv.zrange(`user:chat:${userId}`, 0, -1, { - rev: true - }) - - for (const chat of chats) { - pipeline.hgetall(chat) - } - - const results = await pipeline.exec() - - return results as Chat[] - } catch (error) { - return [] - } -} - -export async function getChat(id: string, userId: string) { - const chat = await kv.hgetall(`chat:${id}`) - - if (!chat || (userId && chat.userId !== userId)) { - return null - } - - return chat -} - -export async function removeChat({ id, path }: { id: string; path: string }) { - const session = await auth() - - if (!session) { - return { - error: 'Unauthorized' - } - } - - //Convert uid to string for consistent comparison with session.user.id - const uid = String(await kv.hget(`chat:${id}`, 'userId')) - - if (uid !== session?.user?.id) { - return { - error: 'Unauthorized' - } - } - - await kv.del(`chat:${id}`) - await kv.zrem(`user:chat:${session.user.id}`, `chat:${id}`) - - revalidatePath('/') - return revalidatePath(path) -} - -export async function clearChats() { - const session = await auth() - - if (!session?.user?.id) { - return { - error: 'Unauthorized' - } - } - - const chats: string[] = await kv.zrange(`user:chat:${session.user.id}`, 0, -1) - if (!chats.length) { - return redirect('/') - } - const pipeline = kv.pipeline() - - for (const chat of chats) { - pipeline.del(chat) - pipeline.zrem(`user:chat:${session.user.id}`, chat) - } - - await pipeline.exec() - - revalidatePath('/') - return redirect('/') -} - -export async function getSharedChat(id: string) { - const chat = await kv.hgetall(`chat:${id}`) - - if (!chat || !chat.sharePath) { - return null - } - - return chat -} - -export async function shareChat(id: string) { - const session = await auth() - - if (!session?.user?.id) { - return { - error: 'Unauthorized' - } - } - - const chat = await kv.hgetall(`chat:${id}`) - - if (!chat || chat.userId !== session.user.id) { - return { - error: 'Something went wrong' - } - } - - const payload = { - ...chat, - sharePath: `/share/${chat.id}` - } - - await kv.hmset(`chat:${chat.id}`, payload) - - return payload -} - -export async function saveChat(chat: Chat) { - const session = await auth() - - if (session && session.user) { - const pipeline = kv.pipeline() - pipeline.hmset(`chat:${chat.id}`, chat) - pipeline.zadd(`user:chat:${chat.userId}`, { - score: Date.now(), - member: `chat:${chat.id}` - }) - await pipeline.exec() - } else { - return - } -} - -export async function refreshHistory(path: string) { - redirect(path) -} - -export async function getMissingKeys() { - const keysRequired = ['GOOGLE_GENERATIVE_AI_API_KEY'] - return keysRequired - .map(key => (process.env[key] ? '' : key)) - .filter(key => key !== '') -} diff --git a/app/favicon.ico b/app/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..a06852a830c9b934292ed2875cdbe2837ef140cd GIT binary patch literal 2053 zcmd5-Yf}?v6n>W^>t&PT7`tMOjU7jE+E~Ly1;hle0b7AmwT;-afCd3EQBfO;Ax(9n zR!KW{ASfgX6|5qL?l{mJgi?hL3jx#$a!C*s#h|f3M3Ob#jr|Gz&=0%s^FDjdbIx=2 z!#N%wE9Fe*O$PvQVxre2002=C0#jk?*uL+goI0i{qhM9Je=IHPoo{KQu*QtD84Gbg*F6QZ;LU+otljJun>;#qB;oGq2HW;vf{-4zVJh?5JWDB)0DQAklP6DHI?72>{ea< zM-)s4*ZJyXg+ehK(R@YqI60oVk)x^c(6MZJDRetPUdY@KPImDLhyRTjshP}tZM63E< zN#zZDDTQuIAqdHrG6I_W@uaU&k*}>6k9Yd$1CbEi(L%St|2ohDay-sMCuB+?FKQ^K zm>$7kJBV1(Ig+;nVBU^Z>T1JT)NNapaU{uA1 zB0Bf*O%M@!&o@3AhTNmeI11tRqK!VMNxUfO1`{1gc7TZBN&3HzNkMk$@4i5NU{v5G zf*wTOE->%n#K5yzIF=NuDcR!djBE!73$opUB9{9+r=Yzi*jzSDyEIE6^XVh> zIBF$vnv(B*I)~H2%IMb)lX#XJGift+b*SdlPoyarc`9Xe#lMy@!shd1-B;HmT}IG# ztov%Kuy$3P=9GbKOGSGNU^66m)t2T%!MN=Kq3!7aTOYdWi)G4{Jj)3}J!)Xxseme* z9V_&xSqzzH;AJuo0zuUdR}Up2j?=tbL{4I8v6NA(_0JKtlNmrRF`f=XHY@|Uz#6j~3W6|K*}}c(NtK_043pj! z26TYjiNWpZIQEjxPKcp_-8Dpm#}t#Ae?(@^W{BKD(lyB9xs=|+jRsbWn5r#2KPmj= zM`*&?lyJ$aeZbRn>o06EvRamb8p->YBas5S`d^#(qQcvNP*?ttf-L6J%vOpSWs2O@ zM>BBjIBaheB>u1*dBa8p?Y`0}49jIG-T1YQxV@cYaWom) { return ( - - - - - + + -
-
-
{children}
-
- -
- + + + {children} + - ) + ); } diff --git a/app/login/actions.ts b/app/login/actions.ts deleted file mode 100644 index f23e220..0000000 --- a/app/login/actions.ts +++ /dev/null @@ -1,71 +0,0 @@ -'use server' - -import { signIn } from '@/auth' -import { User } from '@/lib/types' -import { AuthError } from 'next-auth' -import { z } from 'zod' -import { kv } from '@vercel/kv' -import { ResultCode } from '@/lib/utils' - -export async function getUser(email: string) { - const user = await kv.hgetall(`user:${email}`) - return user -} - -interface Result { - type: string - resultCode: ResultCode -} - -export async function authenticate( - _prevState: Result | undefined, - formData: FormData -): Promise { - try { - const email = formData.get('email') - const password = formData.get('password') - - const parsedCredentials = z - .object({ - email: z.string().email(), - password: z.string().min(6) - }) - .safeParse({ - email, - password - }) - - if (parsedCredentials.success) { - await signIn('credentials', { - email, - password, - redirect: false - }) - - return { - type: 'success', - resultCode: ResultCode.UserLoggedIn - } - } else { - return { - type: 'error', - resultCode: ResultCode.InvalidCredentials - } - } - } catch (error) { - if (error instanceof AuthError) { - switch (error.type) { - case 'CredentialsSignin': - return { - type: 'error', - resultCode: ResultCode.InvalidCredentials - } - default: - return { - type: 'error', - resultCode: ResultCode.UnknownError - } - } - } - } -} diff --git a/app/login/page.tsx b/app/login/page.tsx deleted file mode 100644 index 1fba27b..0000000 --- a/app/login/page.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import { auth } from '@/auth' -import LoginForm from '@/components/login-form' -import { Session } from '@/lib/types' -import { redirect } from 'next/navigation' - -export default async function LoginPage() { - const session = (await auth()) as Session - - if (session) { - redirect('/') - } - - return ( -
- -
- ) -} diff --git a/app/new/page.tsx b/app/new/page.tsx deleted file mode 100644 index d235894..0000000 --- a/app/new/page.tsx +++ /dev/null @@ -1,5 +0,0 @@ -import { redirect } from 'next/navigation' - -export default async function NewPage() { - redirect('/') -} diff --git a/app/opengraph-image.png b/app/opengraph-image.png deleted file mode 100644 index 73d602350052b8a1cf9d23c41830163f0dd357eb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 75337 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±V;&Qj?PEZojTPubWmeRPua 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 diff --git a/app/share/[id]/page.tsx b/app/share/[id]/page.tsx deleted file mode 100644 index d80f0c8..0000000 --- a/app/share/[id]/page.tsx +++ /dev/null @@ -1,58 +0,0 @@ -import { type Metadata } from 'next' -import { notFound, redirect } from 'next/navigation' - -import { formatDate } from '@/lib/utils' -import { getSharedChat } from '@/app/actions' -import { ChatList } from '@/components/chat-list' -import { FooterText } from '@/components/footer' -import { AI, UIState, getUIStateFromAIState } from '@/lib/chat/actions' - -export const runtime = 'edge' -export const preferredRegion = 'home' - -interface SharePageProps { - params: { - id: string - } -} - -export async function generateMetadata({ - params -}: SharePageProps): Promise { - const chat = await getSharedChat(params.id) - - return { - title: chat?.title.slice(0, 50) ?? 'Chat' - } -} - -export default async function SharePage({ params }: SharePageProps) { - const chat = await getSharedChat(params.id) - - if (!chat || !chat?.sharePath) { - notFound() - } - - const uiState: UIState = getUIStateFromAIState(chat) - - return ( - <> -
-
-
-
-

{chat.title}

-
- {formatDate(chat.createdAt)} · {chat.messages.length} messages -
-
-
-
- - - -
- - - ) -} diff --git a/app/signup/actions.ts b/app/signup/actions.ts deleted file mode 100644 index 492586a..0000000 --- a/app/signup/actions.ts +++ /dev/null @@ -1,111 +0,0 @@ -'use server' - -import { signIn } from '@/auth' -import { ResultCode, getStringFromBuffer } from '@/lib/utils' -import { z } from 'zod' -import { kv } from '@vercel/kv' -import { getUser } from '../login/actions' -import { AuthError } from 'next-auth' - -export async function createUser( - email: string, - hashedPassword: string, - salt: string -) { - const existingUser = await getUser(email) - - if (existingUser) { - return { - type: 'error', - resultCode: ResultCode.UserAlreadyExists - } - } else { - const user = { - id: crypto.randomUUID(), - email, - password: hashedPassword, - salt - } - - await kv.hmset(`user:${email}`, user) - - return { - type: 'success', - resultCode: ResultCode.UserCreated - } - } -} - -interface Result { - type: string - resultCode: ResultCode -} - -export async function signup( - _prevState: Result | undefined, - formData: FormData -): Promise { - const email = formData.get('email') as string - const password = formData.get('password') as string - - const parsedCredentials = z - .object({ - email: z.string().email(), - password: z.string().min(6) - }) - .safeParse({ - email, - password - }) - - if (parsedCredentials.success) { - const salt = crypto.randomUUID() - - const encoder = new TextEncoder() - const saltedPassword = encoder.encode(password + salt) - const hashedPasswordBuffer = await crypto.subtle.digest( - 'SHA-256', - saltedPassword - ) - const hashedPassword = getStringFromBuffer(hashedPasswordBuffer) - - try { - const result = await createUser(email, hashedPassword, salt) - - if (result.resultCode === ResultCode.UserCreated) { - await signIn('credentials', { - email, - password, - redirect: false - }) - } - - return result - } catch (error) { - if (error instanceof AuthError) { - switch (error.type) { - case 'CredentialsSignin': - return { - type: 'error', - resultCode: ResultCode.InvalidCredentials - } - default: - return { - type: 'error', - resultCode: ResultCode.UnknownError - } - } - } else { - return { - type: 'error', - resultCode: ResultCode.UnknownError - } - } - } - } else { - return { - type: 'error', - resultCode: ResultCode.InvalidCredentials - } - } -} diff --git a/app/signup/page.tsx b/app/signup/page.tsx deleted file mode 100644 index dbac964..0000000 --- a/app/signup/page.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import { auth } from '@/auth' -import SignupForm from '@/components/signup-form' -import { Session } from '@/lib/types' -import { redirect } from 'next/navigation' - -export default async function SignupPage() { - const session = (await auth()) as Session - - if (session) { - redirect('/') - } - - return ( -
- -
- ) -} diff --git a/app/twitter-image.png b/app/twitter-image.png deleted file mode 100644 index 73d602350052b8a1cf9d23c41830163f0dd357eb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 75337 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±V;&Qj?PEZojTPubWmeRPua zG3bR|K56F4L($aLX!I(oSIKLPTjRhJQ%1E3K1W(h&n$7okNUm2X&k1>UY&`@E?fu< zqmYyP2iwegL)W%zZpqmb^1nR$Bl-gy(v)&6jjW&FUbq}xsyWJ!NEwNPkk$&x^t~dH zcx{OD2q1U#G4@1k$@l0+fM?I5UioCGlXW%jjs{DG+6RC`-tfj7$@c~fjIuY|`8ab$ zspD04dS=f4nS0obJ3Aj?(ag6nijKg*8J6c>w8^!|bkz5a7};=V==y$wt9n6BS_!2= zU&b`Z?n8tXD}L+3mo$XsIOi>u@UFmw%4jHz?ao86jdRp3H&B*uQkUO&Pfo0Ix-ndIR%)*))-tSFzY?CX?qQG6Nf+JzR=*81 z!hx}2u6}!o@`LLbc|D#IPF91{Ip-@G`+_u19e(E@W-&-?csRGYh^k=xvi7Wyvy@eB z3*?S_QC!lV*>?q7w^SPcMstNE+h13?#Rm6MrVN;+)!!8|WYdlc0VN24cEvzpY^4AN=M zQd3ykU)DKa@aoJy*s)KznQi0<0J}(6IPqetfO8XpPA7N1@!#k^e^-Q{nE+B%XhpY| zl4RGtI5byp!Y+DfdT~T}#UDW(4jg*ts}7c{t~$bk{>Dp}EEGt{KPz`GHS6p#ubWd( z_hxV=jyF$HDjV{YiJuxa+wWsl#8o-Xd)o)3g|2y-_1X^H!s|8xJPZMrMLcEr(6qBp zg?gLB*X&K4YBe$=c)VZOepTaAI~~G`4^X!qMYHon^0s)`xoJt3j)?fuhRBfpsah?M z`8{WYfUGexvyeHa*yJZ$$4*VK=fx#N^3v1Kw()IYm%zpyzc*%aEpSu8VZe}8);}hSrIDU(xC4r$8zztI+exD>za|D~y}zBV5dBd0EhJzI6A z&O1KG8inLJn1)80SuWUJn5Py;!fkD5}7tBXHy*tJZ|g*K)Aw?#puSIMwv6V3)VsB z1rEFFdMb+ZtJaN@49EN8tTNHhZqnt*jp=}%;5pb8(uVaXmqercF^*+D@o2bI>Cg@M zsl|FD%h?p{r@zObNYOt6x6l=oF<-|qSkqF+pS=*Dpc^*>v&Kk!^2?G!U7OL|ZXUVrj`Td)mYk(5i(3`2jw?)&)FM{NxyHB5a<+#PtRLSz=K<3Yzbp}|w|!me z_g9kd9Xz?iKFbp&*v1G;@Qyez@;Pn=>=;6d{J@hn9p%eyXH-X6Y$Ac9X5Sf`1ajl{ zFROtD-Sj{O4#Q*t&?-F9jr8gvFkm?dZkGTa-_dhe)~(ZgPLltS#_v(%+u!qiBRr}o zHg_t$&TxNwc#mS`H^_Jk{@JX+SmXeDENy{jJhtsKzTxAK>1UIh(4IfFl_g`9hI2pM zwCrYH^Y?XQ>|S*;dXeNTaEe&ESNq~2+S|=-p{qpBdN{-rX9G}h2^i=Ii_GlCJ5}%Q zX{V2dD_L7uw@l;H`-~RzuXE!dk@XR*(5?2KlY(`ulDtNM0qLdWP>)@6!o_T8AjdFB zhDV34Hr68{0+QD7#tsK!w=*r39N8K`T9Hy7A8Z)jnrmBJ@`90)V7L<7s$!ET*HusK zi-?=m?;~*KNgzOEM&3CX1hhn-1E%{6N$GuqdF$rRi`*>qu|EAXs#-$ygM)c@vd3Fx>V)=zM59P@2@sMZ6TL)&3;rSxECDvAj#uOwB1WbpbDDzJ9X*{`_0} zXzsloEr&wPs)wzrk6~`}3E;76d24%21TZ$PNc5@y<#S@0+-3dajDqv9P6yr^yzJSYFKm2-yta4p>&3<4(;}FhyIC%^Z1WenUoz`@V*Lh#uV?NF@QS9gHIU#oH@UQS( zdTW{5?FWR)46nHqwO&AHF8wmAkVU8NN)pR1r+{mC=Was_5BNBGfxE{@L?5zDPzAStdOdlyAM;N+MLVxi`Os*pBh#*t8iAM zRjbsPm>|qlpo**uaUi>Z#d@2Cx4G>0*J;m(rWo|DANwk&+1TkoqlKwfrMPWp0S-y0 zzQXzHSM~yI91LHSPJluApYc|@#oBiHy!OA;k4c?YYlQDt=l1e_ot)i zRMYZU5$F4wr&Uz|XT`1h4L|)-?-jDw&HE=65?`_Q>qZZvW^>0*w~cqV{0;j43Vyj> z531ZzYqczomU_t4WH+C<{hrw#E!)t)FQi!W>1xw}gvo_E)xk=oZG>G1exyId!JRH~ ztM+2wbP;^G*>zdHarFZ$vP+buUP>{e{h0!|`;0%+iwme)XJLtJ3|mTpJeJBP>X4Hq z9YHMmAkBw~uSOhg5$Cz#hKpvipamAIc0maFt3p7k?L7`9#0%=|D|Ay2|M0=jbaW!4 zUUS!o`exAgzmq2sRPDrJXTu>XR32&So9r#S1;?;>fbCu8w$?piLHG)Q9;TRdHaLY ztx~UI+L3*vWi))<#I`!ieA0a-S+%MCoIxI|gPr%cUkA2I<1%lPY8HFXlm3P|_T^E> zMC24?@CqlkSWFbBXSODv^kl^KR8IiXcmV3^@iQr>&k1mEn0gyx7N^gbk{Zf!!F7jr zVFUVfM~2rhvnToQ(+rUz1b)P=hBETWtmq_*v=7qO?p;mwUN+M{%}y7&Dw7m(alKd$ z&bzY1DVb~*j_Xv9QA6jjE{C7jwqp^vIBpg5hkYe+_c6F$^{PI(pAI0w7^G^JxVIkdkx*6nGY%>+eo2q1cNyeyrErZEbS1IDncJiY6S5TD4r)`t z6Eafe4`gQyIZp3`F+NfAMAPq%==}rBpVFBPSu+o%RD-;1fS?KqZxC4t zdbw?oE`N%?E(#lmt>+G3%7Fs?kj^ zvb$~0=wC$*!q(J;%Qu@|nepqcO%F)~7kc3o!DR}9HeFNi+{e}LmAMB_IvA1-g^UfW zU}{MKz_lcM%vFVMM6A~2MA7tD-^xoWcdftDo+!B@cn>V%L7BA_xn3c08!QtTr;fOX z8@La5H&;?_Hf&^;4A+vP8#xv$U8>iN4s=@` zL{JGoF-4er9%D7j(W4!h*c=P_gZO!WDD|Ag-k_xaQHdhL2$ubszr z9_Mu&=kb2O4-ZM{plCAFOCBcA(Gxw!uP9FT{4j6TzlBSAKnSVwH2%xW=q(C?36`96 z(KxC*b>f8qv(9_p&r!&+*;<5;LMf6o8Em^P?V+>2TInV9VBKJ=u)8l|d&4KQXke(f zXu9*fZsyxdlO0~bk&VF2UbIxyhL|~v{(kmgkF2g~Ae!9iJzgWs;>n^~La0NtpQ3`h zEV|Org~&MD0EhCq%Zec8 zkz5YoGy1bz^PQM(O5XJk#E9iHfNv{Bg$h&GtErQFn5(N^sa&vZpubz@Yvl3v zNj;Waadr@P)1bys6kFIA1Lbt5zR1R3FZd!x~PE}h><)k z70lK}ouB}G1^0O2NG74Ol~kElr-E5`DuotX5-hzTzAE<8L?+`KUqk!2Q%Ge8V}#>>tU`>=SWGrtzkQ2R)7)0zT`| zJ6uuv;DjT>XO$13rEMC4?{C}9weZ+N4z)C-9>ZJ~-SCc5^g=X48r~d6-zSLfdOUfY zksr)k^Ff?Pzvphb5p;s}aIStxp}9)6CyV^qn;}N*$H&tn6{1?5OA0$L z=Jsqwg$cVo)3w#SQFC6(XUg@%&&3aC3U+#FCw*{vi5Ira*SvwlP&SaeEWQjo>Hon= z@FKI`um(fC;~9zLMcY&^G0B5Xx0MbS3;*`0xTV^fT99C(;YH|OSp+X8gjX7`c zp{L`Gzf_gop={diE5-@ntcjce{^)I0E%^AG6&u6+ky(;~CdzphCHVf)O!wMajwDo<0<8b18MX9GWAr1pKG&X^c_lyhZ3U70lmSmKDfo!)P6jCVIVUP? z#Or>^ui{iy!SX6om%zMT$}nkHz~uBi)ccI6#df&6e%DK%w#z5SO;>l)dlrxfXFw~7 zvwDBUJW+`0aijfwyyp@oetvL-aTL;>igC&l-uI?f1%9u86(Bdm4_iJ{*8Xm%<01~~ z^u{uMfXOz<<$C$^-+=NYm^mZFLkF*u`1MY2PWB>F=QKIgPyyG{YK%rvr3~9O zpA-sdJLn(Z(Zy?%P3kn}(M&Iw)5EQ20%{0n6&2bP4k6TS4x?7-TtWYhEH7WpX{c1= zhcF_8rhfKl1K!WSwF#b&TM(OY`@c2wN-OcW0#id!REVA}P4qsVsAxzrbG*cv_V$n8 zHCKzh)pbHedmwVm5Q%9FxSO+V;>=Dr#AfPa=3!@(3e96rfGM(0 ztjJT(9tf-x)Z6C$uMV4JkytPDswtfJ_{v0>L7EBxw~t*Q9j4J5R1Obi;!74eH2~A3 zs=y})A2rd|dITbSUtH<8V~JX$^+_W?vtm6Z8K+uV%m0&|FZIIHCNHyXGoE52gqrz0%DZkxg`z*wXC)emHy?s z3j&1@Px;8qJx+TM4pcr^?@dPr3d03Sg`wd+v(E>of(ED6+2qN)coi$T==&OJrTI>7 zO$3o>9dksUrc|4^!GFc#TMZ+dQNep*NcRxaesURM#JnSR*D+0M)qNAP$R4rd4>gOnB7+_d+hVy zNg{V|J$|WXs8p&d^zFO=|wLu2M=eQB<38-Yya^#awDbO z!HNq>&{-HImQcXm3q6=H4R1 zb4Wrijzt9KnXr&JsdU)5^*Z4~o~+UWP1elXYscHwGcohqh7;|y{}9JjgL zJHLV2sq859KO3OvUNWi98_sK9W`>TH1dTR_WTlO>FRHFZG@oNphC#KO1q)9#ha=3Cmvq%l4Vr`Z`sRCS zf3_f1?bbPyB7lX+(+i8x>m~|B+>y8&$ePG?b8`N3n|4XWaE<6}015E{2;92p?6*=@ z!Ff+6R~_WN5f4vlYXxrMEnBBkd9Be|?}0?+vYr*^Z@O#aF|OqkyOT%d`qXV<-=upR zaRw@9(KGxP@grKP{(&$Y7Wp1Xn`0bQ^ywVoKUQB2mu~BRK+-Ux1jOC_np|$WU5(*D zLz*P2O&u@}Q(ZQksf-AGsH>7^KXf?7DG;zu<*`hFi!`^GGkr12EUv)v{L$V>o0!6; z^f7_o11b%HLhuxl3n%3B^%CP3R6s+fGkeRyh6U*!&szMKjf_fi$SJ1^E3C zYzJRyNi3%9`F(wC;5i*aI_V?5wb}Bn-G^P|2lksrmN?dK;P+7sCj9f!wS{y^>bN>X z8|Y3pZ<&jm9b=Zc(fd`gYHTP=wI-q#G;8Cc2b(r79+^X*6qpdyaYKR;&KPl$pPk@W z8^B0>)w!ixCvf?Xytl1v&UtMWdw$%kVuqUF(i8%J^oP)LN za?_z$S*iFr4=BFeA~6eH#C+U#M`f$S;*#5Gt-YF>QHTtWh-)6&{AchSUA(gv5HM}Z zNZV%rWjP^qc5Hf}xXhEze(g`QeA00ELs76kUp!_qyPS{?=NgmMZxVf-k-SI=qIsPR z7*2@vgA>)U>ew5gJSuqQb2u|BnEciEd>e6Bi<-O+w#n-^ap*X#jV}qwHhtx6ejmz7pBx`=l?IJqIPU3R zY3c#IiMWtDzQQe8&kAQRq+N9~d9Mnr5q$~J%n#SodiA}Zy+ddJYsz6(U23Z&XsY>6 z*Dg}umMD`wqJY?l5bs(0>nPMDYlOR_z-dsxIWJQB2+MoR89RC4IEJx(;6Wx(Z|bzC}2p4^NNa{jTVmlw&wR!IUeMlj85#B;>cWxh=x+wO;9G;`hF>%w#-lhUlt=$0^m~ zkLw@(Yv{YqQAX0^$n1%Bn;9&_w!b77qdr8KH1HZ1tn){TP*25~a+5Tt4|Zam&l&X0iz(z;;3cUnsB#c~AdQF- z2}gX@c)Aam_@7z)3)5!xsaEnix&Pn>V}r#l-$ci1n#njwC~kT<24U(?HE=zQ+n47t zT3L{dLims2Q@UzOCMGMCZos_2!K$z5s4S1N;?8YhcS>%QW zmUGG)bOV2^l%CFkxy$VMqgqmX3%%H|D{$fs54Du>RZ1JUl`@>N{W%w9OT0#ND`X`R z&Ue@Qvx#068IUSmlj>@}T(yu&#eQ+a)$ z$Du(x{uDpd?a|>7AK6*p!E1bv+HMlq1CK=rbD!FaeU1MlY;M-h4=9T*!lGH1<}Se< z_OV?JDSn6!bLds?pW+C@kc%>egi;mUQx(#Ui4=g*N_B+beuBL(%{_8`WrUuqd0_%S zl);=En+{qD%nG)ZBe)NRW}a&o06upg!w_BQaMg|UdQJ-Kh=+f%v7K9v3n?h0XKPz@ zscNaF$_^-Ee@c!CNy4N!uxxPqlG`uxqgG5ggkTS!;H(MX25GI@45EPG4#&glNNh3& zsSS3r0>qd^26sXDFOUHe`Dm4-} zGzb#HAYFUDgWfOh{_E0}?G@A%%ykrdj2KFIF~Td=7xJZ|QTP56VK#WcCT+MxCB7`C z1i8Mr)6Bz~rQ=pCb~up?G3Q0vny08z!en-jIMp?v2xHC&U6p_vkW3Z(uU{R>qxkyK z)PbRD*W8-BFTF2mc@!y69gc|U-KYl40?9Q5309DVxDWZO7Gf`>ILA+QJ)iqX>|%W! z^s1xrq3cwOg0zIJfCk(YC1opK15|(x@w>1TL)o;2T!A1)#47$b6hej|wD-uYmIH5q zj+s1r6S;(;70+;eOZ z+@JJHpMcNEEC|UkHM#EL@H)3K`q&L+Fo~Vo`Wh#cN0iyDsDD%9&$6Hu01VBkI8;cN z5uSOGv7QD+aBVE+MkWIl3$Sln^gTGQ)c>Dx*$8LUts{glC6ql^HSS)`pLJuNx;#V% zJ;gfxtWFumeAwpO)ICl^8VJ@bIG9!$$oI!uoswQwdv-7PQ-zrh_)?qs$d54@n7B?# zj>mmQ6<(YQ9Wr+;kN(*(G*+-jIUA~IGodr_j7k&PAzNSjvjiJju0&wjIho*V^WiK2 zuw8%Q;Q&C!!G!=7kob5ZdIta=o?H0f{6D{~>mAgx=UL5s)}k1yi>wmGj40KiY_OvF z(y!ra^53gH3oZu$XkixeDFEQWLhJ?r>}^}fH~;|Ge{Y*N+`k4{SU>-+kY9HA*JXa0 f;s0z7q6ENsy5ZWFO&3S!e>!~N=>E!mr;`2yOKDpH diff --git a/app/uncut-sans.woff2 b/app/uncut-sans.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..db2dd6bb6bf33aa6c630daa62390a9482e6e98da GIT binary patch literal 78072 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

n>YXML>d0jJN3Jk4gBZR{^SU_8|R8_9w0> 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

    =9<_LML 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 literal 0 HcmV?d00001 diff --git a/auth.config.ts b/auth.config.ts deleted file mode 100644 index 6e74c18..0000000 --- a/auth.config.ts +++ /dev/null @@ -1,42 +0,0 @@ -import type { NextAuthConfig } from 'next-auth' - -export const authConfig = { - secret: process.env.AUTH_SECRET, - pages: { - signIn: '/login', - newUser: '/signup' - }, - callbacks: { - async authorized({ auth, request: { nextUrl } }) { - const isLoggedIn = !!auth?.user - const isOnLoginPage = nextUrl.pathname.startsWith('/login') - const isOnSignupPage = nextUrl.pathname.startsWith('/signup') - - if (isLoggedIn) { - if (isOnLoginPage || isOnSignupPage) { - return Response.redirect(new URL('/', nextUrl)) - } - } - - return true - }, - async jwt({ token, user }) { - if (user) { - token = { ...token, id: user.id } - } - - return token - }, - async session({ session, token }) { - if (token) { - const { id } = token as { id: string } - const { user } = session - - session = { ...session, user: { ...user, id } } - } - - return session - } - }, - providers: [] -} satisfies NextAuthConfig diff --git a/auth.ts b/auth.ts deleted file mode 100644 index 7542992..0000000 --- a/auth.ts +++ /dev/null @@ -1,45 +0,0 @@ -import NextAuth from 'next-auth' -import Credentials from 'next-auth/providers/credentials' -import { authConfig } from './auth.config' -import { z } from 'zod' -import { getStringFromBuffer } from './lib/utils' -import { getUser } from './app/login/actions' - -export const { auth, signIn, signOut } = NextAuth({ - ...authConfig, - providers: [ - Credentials({ - async authorize(credentials) { - const parsedCredentials = z - .object({ - email: z.string().email(), - password: z.string().min(6) - }) - .safeParse(credentials) - - if (parsedCredentials.success) { - const { email, password } = parsedCredentials.data - const user = await getUser(email) - - if (!user) return null - - const encoder = new TextEncoder() - const saltedPassword = encoder.encode(password + user.salt) - const hashedPasswordBuffer = await crypto.subtle.digest( - 'SHA-256', - saltedPassword - ) - const hashedPassword = getStringFromBuffer(hashedPasswordBuffer) - - if (hashedPassword === user.password) { - return user - } else { - return null - } - } - - return null - } - }) - ] -}) diff --git a/components.json b/components.json index 58b812d..4736b1c 100644 --- a/components.json +++ b/components.json @@ -1,6 +1,6 @@ { "$schema": "https://ui.shadcn.com/schema.json", - "style": "new-york", + "style": "default", "rsc": true, "tsx": true, "tailwind": { @@ -12,6 +12,9 @@ }, "aliases": { "components": "@/components", - "utils": "@/lib/utils" + "utils": "@/utils/shadcn/functions", + "ui": "@/components/shadcn", + "lib": "@/utils", + "hooks": "@/hooks" } -} \ No newline at end of file +} diff --git a/components/button-scroll-to-bottom.tsx b/components/button-scroll-to-bottom.tsx deleted file mode 100644 index e1403f2..0000000 --- a/components/button-scroll-to-bottom.tsx +++ /dev/null @@ -1,36 +0,0 @@ -'use client' - -import * as React from 'react' - -import { cn } from '@/lib/utils' -import { Button, type ButtonProps } from '@/components/ui/button' -import { IconArrowDown } from '@/components/ui/icons' - -interface ButtonScrollToBottomProps extends ButtonProps { - isAtBottom: boolean - scrollToBottom: () => void -} - -export function ButtonScrollToBottom({ - className, - isAtBottom, - scrollToBottom, - ...props -}: ButtonScrollToBottomProps) { - return ( - - ) -} diff --git a/components/chat-history.tsx b/components/chat-history.tsx deleted file mode 100644 index d91dfe5..0000000 --- a/components/chat-history.tsx +++ /dev/null @@ -1,49 +0,0 @@ -import * as React from 'react' - -import Link from 'next/link' - -import { cn } from '@/lib/utils' -import { SidebarList } from '@/components/sidebar-list' -import { buttonVariants } from '@/components/ui/button' -import { IconPlus } from '@/components/ui/icons' - -interface ChatHistoryProps { - userId?: string -} - -export async function ChatHistory({ userId }: ChatHistoryProps) { - return ( -
    -
    -

    Chat History

    -
    -
    - - - New Chat - -
    - - {Array.from({ length: 10 }).map((_, i) => ( -
    - ))} -
    - } - > - {/* @ts-ignore */} - -
    -
    - ) -} diff --git a/components/chat-list.tsx b/components/chat-list.tsx deleted file mode 100644 index 6831e3e..0000000 --- a/components/chat-list.tsx +++ /dev/null @@ -1,47 +0,0 @@ -import { UIState } from '@/lib/chat/actions' -import { Session } from '@/lib/types' -import { ExclamationTriangleIcon } from '@radix-ui/react-icons' -import Link from 'next/link' - -export interface ChatList { - messages: UIState - session?: Session - isShared: boolean -} - -export function ChatList({ messages, session, isShared }: ChatList) { - return messages.length ? ( -
    - {!isShared && !session ? ( - <> -
    -
    - -
    -
    -

    - Please{' '} - - log in - {' '} - or{' '} - - sign up - {' '} - to save and revisit your chat history! -

    -
    -
    - - ) : null} - - {messages.map(message => ( -
    - {message.spinner} - {message.display} - {message.attachments} -
    - ))} -
    - ) : null -} diff --git a/components/chat-message-actions.tsx b/components/chat-message-actions.tsx deleted file mode 100644 index d4e4b40..0000000 --- a/components/chat-message-actions.tsx +++ /dev/null @@ -1,40 +0,0 @@ -'use client' - -import { type Message } from 'ai' - -import { Button } from '@/components/ui/button' -import { IconCheck, IconCopy } from '@/components/ui/icons' -import { useCopyToClipboard } from '@/lib/hooks/use-copy-to-clipboard' -import { cn } from '@/lib/utils' - -interface ChatMessageActionsProps extends React.ComponentProps<'div'> { - message: Message -} - -export function ChatMessageActions({ - message, - className, - ...props -}: ChatMessageActionsProps) { - const { isCopied, copyToClipboard } = useCopyToClipboard({ timeout: 2000 }) - - const onCopy = () => { - if (isCopied) return - copyToClipboard(message.content) - } - - return ( -
    - -
    - ) -} diff --git a/components/chat-message.tsx b/components/chat-message.tsx deleted file mode 100644 index e17d857..0000000 --- a/components/chat-message.tsx +++ /dev/null @@ -1,80 +0,0 @@ -// Inspired by Chatbot-UI and modified to fit the needs of this project -// @see https://github.com/mckaywrigley/chatbot-ui/blob/main/components/Chat/ChatMessage.tsx - -import { Message } from 'ai' -import remarkGfm from 'remark-gfm' -import remarkMath from 'remark-math' - -import { cn } from '@/lib/utils' -import { CodeBlock } from '@/components/ui/codeblock' -import { MemoizedReactMarkdown } from '@/components/markdown' -import { IconGemini, IconUser } from '@/components/ui/icons' -import { ChatMessageActions } from '@/components/chat-message-actions' - -export interface ChatMessageProps { - message: Message -} - -export function ChatMessage({ message, ...props }: ChatMessageProps) { - return ( -
    -
    - {message.role === 'user' ? : } -
    -
    - {children}

    - }, - code({ node, inline, className, children, ...props }) { - if (children.length) { - if (children[0] == '▍') { - return ( - - ) - } - - children[0] = (children[0] as string).replace('`▍`', '▍') - } - - const match = /language-(\w+)/.exec(className || '') - - if (inline) { - return ( - - {children} - - ) - } - - return ( - - ) - } - }} - > - {message.content} -
    - -
    -
    - ) -} diff --git a/components/chat-panel.tsx b/components/chat-panel.tsx deleted file mode 100644 index afa0e1c..0000000 --- a/components/chat-panel.tsx +++ /dev/null @@ -1,150 +0,0 @@ -import * as React from 'react' - -import { shareChat } from '@/app/actions' -import { Button } from '@/components/ui/button' -import { PromptForm } from '@/components/prompt-form' -import { ButtonScrollToBottom } from '@/components/button-scroll-to-bottom' -import { IconShare } from '@/components/ui/icons' -import { FooterText } from '@/components/footer' -import { ChatShareDialog } from '@/components/chat-share-dialog' -import { useAIState, useActions, useUIState } from 'ai/rsc' -import type { AI } from '@/lib/chat/actions' -import { nanoid } from 'nanoid' -import { UserMessage } from './stocks/message' -import { cn } from '@/lib/utils' -import { toast } from 'sonner' - -export interface ChatPanelProps { - id?: string - title?: string - input: string - setInput: (value: string) => void - isAtBottom: boolean - scrollToBottom: () => void -} - -export function ChatPanel({ - id, - title, - input, - setInput, - isAtBottom, - scrollToBottom -}: ChatPanelProps) { - const [aiState] = useAIState() - const [messages, setMessages] = useUIState() - const { submitUserMessage } = useActions() - const [shareDialogOpen, setShareDialogOpen] = React.useState(false) - - const exampleMessages = [ - { - heading: 'List flights flying from', - subheading: 'San Francisco to Rome today', - message: `List flights flying from San Francisco to Rome today` - }, - { - heading: 'What is the status', - subheading: 'of flight BA142?', - message: 'What is the status of flight BA142?' - } - ] - - return ( -
    - - -
    - - - {messages?.length >= 2 ? ( -
    -
    - {id && title ? ( - <> - - setShareDialogOpen(false)} - shareChat={shareChat} - chat={{ - id, - title, - messages: aiState.messages - }} - /> - - ) : null} -
    -
    - ) : null} - -
    - - -
    -
    -
    - ) -} diff --git a/components/chat-share-dialog.tsx b/components/chat-share-dialog.tsx deleted file mode 100644 index d96447c..0000000 --- a/components/chat-share-dialog.tsx +++ /dev/null @@ -1,95 +0,0 @@ -'use client' - -import * as React from 'react' -import { type DialogProps } from '@radix-ui/react-dialog' -import { toast } from 'sonner' - -import { ServerActionResult, type Chat } from '@/lib/types' -import { Button } from '@/components/ui/button' -import { - Dialog, - DialogContent, - DialogDescription, - DialogFooter, - DialogHeader, - DialogTitle -} from '@/components/ui/dialog' -import { IconSpinner } from '@/components/ui/icons' -import { useCopyToClipboard } from '@/lib/hooks/use-copy-to-clipboard' - -interface ChatShareDialogProps extends DialogProps { - chat: Pick - shareChat: (id: string) => ServerActionResult - onCopy: () => void -} - -export function ChatShareDialog({ - chat, - shareChat, - onCopy, - ...props -}: ChatShareDialogProps) { - const { copyToClipboard } = useCopyToClipboard({ timeout: 1000 }) - const [isSharePending, startShareTransition] = React.useTransition() - - const copyShareLink = React.useCallback( - async (chat: Chat) => { - if (!chat.sharePath) { - return toast.error('Could not copy share link to clipboard') - } - - const url = new URL(window.location.href) - url.pathname = chat.sharePath - copyToClipboard(url.toString()) - onCopy() - toast.success('Share link copied to clipboard') - }, - [copyToClipboard, onCopy] - ) - - return ( - - - - Share link to chat - - Anyone with the URL will be able to view the shared chat. - - -
    -
    {chat.title}
    -
    - {chat.messages.length} messages -
    -
    - - - -
    -
    - ) -} diff --git a/components/chat.tsx b/components/chat.tsx index 608f8c6..de5b761 100644 --- a/components/chat.tsx +++ b/components/chat.tsx @@ -1,84 +1,73 @@ -'use client' +"use client"; -import { ChatList } from '@/components/chat-list' -import { ChatPanel } from '@/components/chat-panel' -import { EmptyScreen } from '@/components/empty-screen' -import { ListFlights } from '@/components/flights/list-flights' -import { ListHotels } from '@/components/hotels/list-hotels' -import { Message } from '@/lib/chat/actions' -import { useLocalStorage } from '@/lib/hooks/use-local-storage' -import { useScrollAnchor } from '@/lib/hooks/use-scroll-anchor' -import { Session } from '@/lib/types' -import { cn } from '@/lib/utils' -import { useAIState, useUIState } from 'ai/rsc' -import { usePathname, useRouter } from 'next/navigation' -import { useEffect, useState } from 'react' -import { toast } from 'sonner' +import { Attachment, Message } from "ai"; +import { useChat } from "ai/react"; +import { useState } from "react"; +import { Message as PreviewMessage } from "@/components/message"; +import { useScrollToBottom } from "@/components/use-scroll-to-bottom"; +import { MultimodalInput } from "./multimodal-input"; +import { Overview } from "./overview"; -export interface ChatProps extends React.ComponentProps<'div'> { - initialMessages?: Message[] - id?: string - session?: Session - missingKeys: string[] -} - -export function Chat({ id, className, session, missingKeys }: ChatProps) { - const router = useRouter() - const path = usePathname() - const [input, setInput] = useState('') - const [messages] = useUIState() - const [aiState] = useAIState() - - const [_, setNewChatId] = useLocalStorage('newChatId', id) +export function Chat({ + id, + initialMessages, +}: { + id: string; + initialMessages: Array; +}) { + const [selectedFilePathnames] = useState>([]); - useEffect(() => { - if (session?.user) { - if (!path.includes('chat') && messages.length === 1) { - window.history.replaceState({}, '', `/chat/${id}`) - } - } - }, [id, path, session?.user, messages]) + const { messages, handleSubmit, input, setInput, append, isLoading, stop } = + useChat({ + body: { id, selectedFilePathnames }, + initialMessages, + onFinish: () => { + window.history.replaceState({}, "", `/${id}`); + }, + }); - useEffect(() => { - const messagesLength = aiState.messages?.length - if (messagesLength === 2) { - router.refresh() - } - }, [aiState.messages, router]) + const [messagesContainerRef, messagesEndRef] = + useScrollToBottom(); - useEffect(() => { - setNewChatId(id) - }) + const [attachments, setAttachments] = useState>([]); - useEffect(() => { - missingKeys.map(key => { - toast.error(`Missing ${key} environment variable!`) - }) - }, [missingKeys]) + return ( +
    +
    +
    + {messages.length === 0 && } - const { messagesRef, scrollRef, visibilityRef, isAtBottom, scrollToBottom } = - useScrollAnchor() + {messages.map((message, index) => ( + + ))} +
    +
    - return ( -
    -
    - {messages.length ? ( - - ) : ( - - )} -
    +
    + +
    -
    - ) + ); } diff --git a/components/clear-history.tsx b/components/clear-history.tsx deleted file mode 100644 index 69cf70e..0000000 --- a/components/clear-history.tsx +++ /dev/null @@ -1,75 +0,0 @@ -'use client' - -import * as React from 'react' -import { useRouter } from 'next/navigation' -import { toast } from 'sonner' - -import { ServerActionResult } from '@/lib/types' -import { Button } from '@/components/ui/button' -import { - AlertDialog, - AlertDialogAction, - AlertDialogCancel, - AlertDialogContent, - AlertDialogDescription, - AlertDialogFooter, - AlertDialogHeader, - AlertDialogTitle, - AlertDialogTrigger -} from '@/components/ui/alert-dialog' -import { IconSpinner } from '@/components/ui/icons' - -interface ClearHistoryProps { - isEnabled: boolean - clearChats: () => ServerActionResult -} - -export function ClearHistory({ - isEnabled = false, - clearChats -}: ClearHistoryProps) { - const [open, setOpen] = React.useState(false) - const [isPending, startTransition] = React.useTransition() - const router = useRouter() - - return ( - - - - - - - Are you absolutely sure? - - This will permanently delete your chat history and remove your data - from our servers. - - - - Cancel - { - event.preventDefault() - startTransition(async () => { - const result = await clearChats() - if (result && 'error' in result) { - toast.error(result.error) - return - } - - setOpen(false) - }) - }} - > - {isPending && } - Delete - - - - - ) -} diff --git a/components/empty-screen.tsx b/components/empty-screen.tsx deleted file mode 100644 index 719f693..0000000 --- a/components/empty-screen.tsx +++ /dev/null @@ -1,35 +0,0 @@ -import { ExternalLink } from '@/components/external-link' - -export function EmptyScreen() { - return ( -
    -
    -

    - Next.js Gemini Chatbot -

    -

    - This is an open source AI chatbot app template built with{' '} - Next.js, the{' '} - - Vercel AI SDK - - , and{' '} - - Google Gemini - - . -

    -

    - It uses{' '} - - React Server Components - {' '} - with function calling to mix both text with generative UI responses - from Gemini. The UI state is synced through the AI SDK so the model is - always aware of your stateful interactions as they happen in the - browser. -

    -
    -
    - ) -} diff --git a/components/external-link.tsx b/components/external-link.tsx deleted file mode 100644 index ba6cc01..0000000 --- a/components/external-link.tsx +++ /dev/null @@ -1,29 +0,0 @@ -export function ExternalLink({ - href, - children -}: { - href: string - children: React.ReactNode -}) { - return ( - - {children} - - - ) -} diff --git a/components/flights/boarding-pass.tsx b/components/flights/boarding-pass.tsx deleted file mode 100644 index 018be51..0000000 --- a/components/flights/boarding-pass.tsx +++ /dev/null @@ -1,88 +0,0 @@ -'use client' - -/* eslint-disable @next/next/no-img-element */ -import Barcode from 'react-jsbarcode' - -interface BoardingPassProps { - summary: { - airline: string - arrival: string - departure: string - departureTime: string - arrivalTime: string - price: number - seat: string - date: string - gate: string - } -} - -export const BoardingPass = ({ - summary = { - airline: 'American Airlines', - arrival: 'SFO', - departure: 'NYC', - departureTime: '10:00 AM', - arrivalTime: '12:00 PM', - price: 100, - seat: '1A', - date: '2021-12-25', - gate: '31' - } -}: BoardingPassProps) => { - return ( -
    -
    -
    - airline logo -
    -
    -
    {summary.airline}
    -
    - {summary.departure} - {summary.arrival} -
    -
    -
    -
    Gate
    -
    {summary.gate}
    -
    -
    -
    -
    Rauch / Guillermo
    -
    -
    {summary.departure}
    -
    {summary.date}
    -
    {summary.arrival}
    -
    -
    -
    -
    -
    Seat
    -
    {summary.seat}
    -
    -
    -
    Class
    -
    BUSINESS
    -
    -
    -
    Departs
    -
    {summary.departureTime}
    -
    -
    -
    Arrival
    -
    {summary.arrivalTime}
    -
    -
    -
    - -
    -
    - ) -} diff --git a/components/flights/destinations.tsx b/components/flights/destinations.tsx deleted file mode 100644 index 74b28ef..0000000 --- a/components/flights/destinations.tsx +++ /dev/null @@ -1,36 +0,0 @@ -'use client' - -import { useActions, useUIState } from 'ai/rsc' - -export const Destinations = ({ destinations }: { destinations: string[] }) => { - const { submitUserMessage } = useActions() - const [_, setMessages] = useUIState() - - return ( -
    -

    - Here is a list of holiday destinations based on the books you have read. - Choose one to proceed to booking a flight. -

    -
    - {destinations.map(destination => ( - - ))} -
    -
    - ) -} diff --git a/components/flights/flight-status.tsx b/components/flights/flight-status.tsx deleted file mode 100644 index 110cdfa..0000000 --- a/components/flights/flight-status.tsx +++ /dev/null @@ -1,151 +0,0 @@ -'use client' - -/* eslint-disable jsx-a11y/alt-text */ -/* eslint-disable @next/next/no-img-element */ -import { useActions, useUIState } from 'ai/rsc' -import { - ArrowDownRight, - ArrowUpRight, - CheckIcon, - IconCheck, - IconStop, - SparklesIcon -} from '@/components/ui/icons' - -export interface StatusProps { - summary: { - departingCity: string - departingAirport: string - departingAirportCode: string - departingTime: string - arrivalCity: string - arrivalAirport: string - arrivalAirportCode: string - arrivalTime: string - flightCode: string - date: string - } -} - -export const suggestions = [ - 'Change my seat', - 'Change my flight', - 'Show boarding pass' -] - -export const FlightStatus = ({ - summary = { - departingCity: 'Miami', - departingAirport: 'Miami Intl', - departingAirportCode: 'MIA', - departingTime: '11:45 PM', - arrivalCity: 'San Francisco', - arrivalAirport: 'San Francisco Intl', - arrivalAirportCode: 'SFO', - arrivalTime: '4:20 PM', - flightCode: 'XY 2421', - date: 'Mon, 16 Sep' - } -}: StatusProps) => { - const { - departingCity, - departingAirport, - departingAirportCode, - departingTime, - arrivalCity, - arrivalAirport, - arrivalAirportCode, - arrivalTime, - flightCode, - date - } = summary - - const { submitUserMessage } = useActions() - const [_, setMessages] = useUIState() - - return ( -
    -
    -
    -
    - airline logo -
    -
    -
    - {date} · {flightCode} -
    -
    - {departingCity} to {arrivalCity} -
    -
    -
    -
    -
    -
    -
    - -
    -
    -
    {departingAirportCode}
    -
    {departingAirport}
    -
    Terminal N · GATE D43
    -
    -
    -
    {departingTime}
    -
    in 6h 50m
    -
    - 2h 15m late -
    -
    -
    -
    -
    - -
    -
    - Total 11h 30m · 5, 563mi · Overnight -
    -
    -
    -
    - -
    -
    -
    {arrivalAirportCode}
    -
    {arrivalAirport}
    -
    Terminal 2 · GATE 59A
    -
    -
    -
    {arrivalTime}
    -
    - 2h 15m late -
    -
    -
    -
    -
    -
    - {suggestions.map(suggestion => ( -
    { - const response = await submitUserMessage(suggestion) - setMessages((currentMessages: any[]) => [ - ...currentMessages, - response - ]) - }} - > - - {suggestion} -
    - ))} -
    -
    - ) -} diff --git a/components/flights/list-flights.tsx b/components/flights/list-flights.tsx deleted file mode 100644 index 25944c9..0000000 --- a/components/flights/list-flights.tsx +++ /dev/null @@ -1,132 +0,0 @@ -'use client' - -/* eslint-disable jsx-a11y/alt-text */ -/* eslint-disable @next/next/no-img-element */ - -import { useActions, useUIState } from 'ai/rsc' - -interface Flight { - id: number - airlines: string - departureTime: string - arrivalTime: string - price: number -} - -interface ListFlightsProps { - summary: { - arrivalCity: string - departingCity: string - arrivalAirport: string - departingAirport: string - date: string - } -} - -export const ListFlights = ({ - summary = { - arrivalCity: 'San Francisco', - departingCity: 'New York City', - arrivalAirport: 'SFO', - departingAirport: 'JFK', - date: '2021-12-25' - } -}: ListFlightsProps) => { - const { arrivalCity, departingCity, arrivalAirport, departingAirport, date } = - summary - const { submitUserMessage } = useActions() - const [_, setMessages] = useUIState() - - const flights = [ - { - id: 1, - airlines: 'United Airlines', - departureTime: '8:30 PM', - arrivalTime: '4:20 PM+1', - price: 531 - }, - { - id: 2, - airlines: 'United Airlines', - departureTime: '2:40 PM', - arrivalTime: '10:25 AM+1', - price: 564 - }, - { - id: 3, - airlines: 'United Airlines', - departureTime: '3:00 PM', - arrivalTime: '10:50 AM+1', - price: 611 - } - ] - - return ( -
    -
    -
    -
    Departure
    -
    {departingCity}
    -
    -
    -
    Arrival
    -
    {arrivalCity}
    -
    -
    -
    Date
    -
    {date}
    -
    -
    -
    - {flights && - flights.map(flight => ( -
    { - const response = await submitUserMessage( - `The user has selected flight ${flight.airlines}, departing at ${flight.departureTime} and arriving at ${flight.arrivalTime} for $${flight.price}. Now proceeding to select seats.` - ) - setMessages((currentMessages: any[]) => [ - ...currentMessages, - response - ]) - }} - > -
    - airline logo -
    -
    -
    -
    - {flight.departureTime} - {flight.arrivalTime} -
    -
    {flight.airlines}
    -
    -
    -
    - {flight.id === 2 ? '10hr 50min' : '10hr 45min'} -
    -
    - {departingAirport} - {arrivalAirport} -
    -
    -
    -
    - ${flight.price} -
    -
    - One Way -
    -
    -
    -
    - ))} -
    -
    - ) -} diff --git a/components/flights/purchase-ticket.tsx b/components/flights/purchase-ticket.tsx deleted file mode 100644 index 73f7148..0000000 --- a/components/flights/purchase-ticket.tsx +++ /dev/null @@ -1,149 +0,0 @@ -'use client' - -import { - CardIcon, - GoogleIcon, - LockIcon, - SparklesIcon -} from '@/components/ui/icons' -import { cn } from '@/lib/utils' -import { readStreamableValue, useActions, useUIState } from 'ai/rsc' -import { useState } from 'react' - -type Status = - | 'requires_confirmation' - | 'requires_code' - | 'completed' - | 'failed' - | 'expired' - | 'in_progress' - -interface PurchaseProps { - status: Status - summary: { - airline: string - departureTime: string - arrivalTime: string - price: number - seat: string - } -} - -export const suggestions = [ - 'Show flight status', - 'Show boarding pass for flight' -] - -export const PurchaseTickets = ({ - status = 'requires_confirmation', - summary = { - airline: 'American Airlines', - departureTime: '10:00 AM', - arrivalTime: '12:00 PM', - price: 100, - seat: '1A' - } -}: PurchaseProps) => { - const [currentStatus, setCurrentStatus] = useState(status) - const { requestCode, validateCode, submitUserMessage } = useActions() - const [display, setDisplay] = useState(null) - const [_, setMessages] = useUIState() - - return ( -
    -
    -
    -
    -
    - -
    -
    Visa · · · · 0512
    -
    -
    - - Pay -
    -
    - {currentStatus === 'requires_confirmation' ? ( -
    -

    - Thanks for choosing your flight and hotel reservations! Confirm - your purchase to complete your booking. -

    - -
    - ) : currentStatus === 'requires_code' ? ( - <> -
    - Enter the code sent to your phone (***) *** 6137 to complete your - purchase. -
    -
    - -
    - - - ) : currentStatus === 'completed' || currentStatus === 'in_progress' ? ( - display - ) : currentStatus === 'expired' ? ( -
    - Your Session has expired! -
    - ) : null} -
    - -
    - {suggestions.map(suggestion => ( - - ))} -
    -
    - ) -} diff --git a/components/flights/select-seats.tsx b/components/flights/select-seats.tsx deleted file mode 100644 index 23ebf11..0000000 --- a/components/flights/select-seats.tsx +++ /dev/null @@ -1,143 +0,0 @@ -/* eslint-disable jsx-a11y/alt-text */ -/* eslint-disable @next/next/no-img-element */ -'use client' - -import { useAIState, useActions, useUIState } from 'ai/rsc' -import { useState } from 'react' -import { SparklesIcon } from '../ui/icons' - -interface SelectSeatsProps { - summary: { - departingCity: string - arrivalCity: string - flightCode: string - date: string - } -} - -export const suggestions = [ - 'Proceed to checkout', - 'List hotels and make a reservation' -] - -export const SelectSeats = ({ - summary = { - departingCity: 'New York City', - arrivalCity: 'San Francisco', - flightCode: 'CA123', - date: '23 March 2024' - } -}: SelectSeatsProps) => { - const availableSeats = ['3B', '2D'] - const [aiState, setAIState] = useAIState() - const [selectedSeat, setSelectedSeat] = useState('') - const { departingCity, arrivalCity, flightCode, date } = summary - const [_, setMessages] = useUIState() - const { submitUserMessage } = useActions() - - return ( -
    -

    - Great! Here are the available seats for your flight. Please select a - seat to continue. -

    -
    -
    -
    - airline logo -
    -
    -
    - {date} · {flightCode} -
    -
    - {departingCity} to {arrivalCity} -
    -
    -
    -
    -
    - {[4, 3, 2, 1].map((row, rowIndex) => ( -
    - {['A', 'B', 0, 'C', 'D'].map((seat, seatIndex) => ( -
    { - setSelectedSeat(`${row}${seat}`) - - setAIState({ - ...aiState, - interactions: [ - `great, I have selected seat ${row}${seat}` - ] - }) - }} - > - {seatIndex === 2 ? ( -
    - {row} -
    - ) : ( -
    - )} -
    - ))} -
    - ))} -
    - {['A', 'B', '', 'C', 'D'].map((seat, index) => ( -
    - {seat} -
    - ))} -
    -
    -
    -
    - {selectedSeat !== '' && ( -
    - {suggestions.map(suggestion => ( - - ))} -
    - )} -
    - ) -} diff --git a/components/footer.tsx b/components/footer.tsx deleted file mode 100644 index 3e700eb..0000000 --- a/components/footer.tsx +++ /dev/null @@ -1,26 +0,0 @@ -import React from 'react' - -import { cn } from '@/lib/utils' -import { ExternalLink } from '@/components/external-link' - -export function FooterText({ className, ...props }: React.ComponentProps<'p'>) { - return ( -

    - Open source AI chatbot built with{' '} - - Google Gemini - - , Next.js and{' '} - - Vercel AI SDK - - . -

    - ) -} diff --git a/components/form.tsx b/components/form.tsx new file mode 100644 index 0000000..1b5fd79 --- /dev/null +++ b/components/form.tsx @@ -0,0 +1,44 @@ +import { Input } from "./shadcn/input"; +import { Label } from "./shadcn/label"; + +export function Form({ + action, + children, +}: { + action: any; + children: React.ReactNode; +}) { + return ( +
    +
    + + + + + + + +
    + + {children} +
    + ); +} diff --git a/components/header.tsx b/components/header.tsx deleted file mode 100644 index 3db547d..0000000 --- a/components/header.tsx +++ /dev/null @@ -1,82 +0,0 @@ -/* eslint-disable @next/next/no-img-element */ -import * as React from 'react' -import Link from 'next/link' - -import { cn } from '@/lib/utils' -import { auth } from '@/auth' -import { Button, buttonVariants } from '@/components/ui/button' -import { - IconGitHub, - IconNextChat, - IconSeparator, - IconVercel -} from '@/components/ui/icons' -import { UserMenu } from '@/components/user-menu' -import { SidebarMobile } from './sidebar-mobile' -import { SidebarToggle } from './sidebar-toggle' -import { ChatHistory } from './chat-history' -import { Session } from '@/lib/types' - -async function UserOrLogin() { - const session = (await auth()) as Session - return ( - <> - {session?.user ? ( - <> - - - - - - ) : ( - - gemini logo - - )} -
    - - {session?.user ? ( - - ) : ( - - )} -
    - - ) -} - -export function Header() { - return ( -
    -
    - }> - - -
    - -
    - ) -} diff --git a/components/history.tsx b/components/history.tsx new file mode 100644 index 0000000..29cc1e9 --- /dev/null +++ b/components/history.tsx @@ -0,0 +1,241 @@ +"use client"; + +import * as VisuallyHidden from "@radix-ui/react-visually-hidden"; +import { + InfoIcon, + MenuIcon, + MoreHorizontalIcon, + PencilEditIcon, + TrashIcon, +} from "./icons"; +import { useEffect, useState } from "react"; +import useSWR from "swr"; +import Link from "next/link"; +import cx from "classnames"; +import { useParams, usePathname } from "next/navigation"; +import { Chat } from "@/utils/supabase/schema"; +import { fetcher } from "@/utils/functions"; +import { Button } from "./shadcn/button"; +import { + DropdownMenu, + DropdownMenuContent, + DropdownMenuItem, + DropdownMenuTrigger, +} from "./shadcn/dropdown-menu"; +import { + AlertDialog, + AlertDialogAction, + AlertDialogCancel, + AlertDialogContent, + AlertDialogDescription, + AlertDialogFooter, + AlertDialogHeader, + AlertDialogTitle, +} from "./shadcn/alert-dialog"; +import { toast } from "sonner"; +import { + Sheet, + SheetContent, + SheetDescription, + SheetHeader, + SheetTitle, +} from "./shadcn/sheet"; +import { User } from "@supabase/supabase-js"; +import { ThemeToggle } from "./theme-toggle"; + +export const History = ({ user }: { user: User | null }) => { + const { id } = useParams(); + const pathname = usePathname(); + + const [isHistoryVisible, setIsHistoryVisible] = useState(false); + const { + data: history, + error, + isLoading, + mutate, + } = useSWR>("/api/history", fetcher, { + fallbackData: [], + }); + + useEffect(() => { + mutate(); + }, [pathname, mutate]); + + const [deleteId, setDeleteId] = useState(null); + const [showDeleteDialog, setShowDeleteDialog] = useState(false); + + const handleDelete = async () => { + const deletePromise = fetch(`/api/chat?id=${deleteId}`, { + method: "DELETE", + }); + + toast.promise(deletePromise, { + loading: "Deleting chat...", + success: () => { + mutate((history) => { + if (history) { + return history.filter((h) => h.id !== id); + } + }); + return "Chat deleted successfully"; + }, + error: "Failed to delete chat", + }); + + setShowDeleteDialog(false); + }; + + return ( + <> + + + { + setIsHistoryVisible(state); + }} + > + + + + History + + {history === undefined ? "loading" : history.length} chats + + + + +
    +
    +
    History
    + +
    + {history === undefined ? "loading" : history.length} chats +
    +
    +
    + +
    + {user && ( + + )} + +
    + {!user ? ( +
    + +
    Login to save and revisit previous chats!
    +
    + ) : null} + + {!isLoading && history?.length === 0 && user ? ( +
    + +
    No chats found
    +
    + ) : null} + + {isLoading && user ? ( +
    + {[44, 32, 28, 52].map((item) => ( +
    +
    +
    + ))} +
    + ) : null} + + {history && + history.map((chat) => ( +
    + + + + + + + + + + + + +
    + ))} +
    +
    + + + + + + + Are you absolutely sure? + + This action cannot be undone. This will permanently delete your + chat and remove it from our servers. + + + + Cancel + + Continue + + + + + + ); +}; diff --git a/components/hotels/list-hotels.tsx b/components/hotels/list-hotels.tsx deleted file mode 100644 index 7e9664c..0000000 --- a/components/hotels/list-hotels.tsx +++ /dev/null @@ -1,87 +0,0 @@ -/* eslint-disable jsx-a11y/alt-text */ -/* eslint-disable @next/next/no-img-element */ -'use client' - -import { useActions, useUIState } from 'ai/rsc' - -interface Hotel { - id: number - name: string - description: string - price: number -} - -interface ListHotelsProps { - hotels: Hotel[] -} - -export const ListHotels = ({ - hotels = [ - { - id: 1, - name: 'The St. Regis Rome', - description: 'Renowned luxury hotel with a lavish spa', - price: 450 - }, - { - id: 2, - name: 'The Inn at the Roman Forum', - description: 'Upscale hotel with Roman ruins and a bar', - price: 145 - }, - { - id: 3, - name: 'Hotel Roma', - description: 'Vibrant property with free breakfast', - price: 112 - } - ] -}: ListHotelsProps) => { - const { submitUserMessage } = useActions() - const [_, setMessages] = useUIState() - - return ( -
    -

    - We recommend a 3 night stay in Rome. Here are some hotels you can choose - from. -

    -
    - {hotels.map(hotel => ( -
    { - const response = await submitUserMessage( - `I want to book the ${hotel.name}, proceed to checkout by calling checkoutBooking function.` - ) - setMessages((currentMessages: any[]) => [ - ...currentMessages, - response - ]) - }} - > -
    -
    - -
    -
    -
    {hotel.name}
    -
    {hotel.description}
    -
    -
    -
    -
    - ${hotel.price} -
    -
    per night
    -
    -
    - ))} -
    -
    - ) -} diff --git a/components/icons.tsx b/components/icons.tsx new file mode 100644 index 0000000..7ad8930 --- /dev/null +++ b/components/icons.tsx @@ -0,0 +1,592 @@ +export const BotIcon = () => { + return ( + + + + ); +}; + +export const UserIcon = () => { + return ( + + + + ); +}; + +export const AttachmentIcon = () => { + return ( + + + + ); +}; + +export const VercelIcon = ({ size = 17 }) => { + return ( + + + + ); +}; + +export const GitIcon = () => { + return ( + + + + + + + + + + + ); +}; + +export const BoxIcon = ({ size = 16 }: { size: number }) => { + return ( + + + + ); +}; + +export const HomeIcon = ({ size = 16 }: { size: number }) => { + return ( + + + + ); +}; + +export const GPSIcon = ({ size = 16 }: { size: number }) => { + return ( + + + + ); +}; + +export const InvoiceIcon = ({ size = 16 }: { size: number }) => { + return ( + + + + ); +}; + +export const LogoOpenAI = ({ size = 16 }: { size?: number }) => { + return ( + + + + ); +}; + +export const LogoGoogle = ({ size = 16 }: { size?: number }) => { + return ( + + + + + + + ); +}; + +export const LogoAnthropic = () => { + return ( + + + + ); +}; + +export const RouteIcon = ({ size = 16 }: { size?: number }) => { + return ( + + + + ); +}; + +export const FileIcon = ({ size = 16 }: { size?: number }) => { + return ( + + + + ); +}; + +export const LoaderIcon = ({ size = 16 }: { size?: number }) => { + return ( + + + + + + + + + + + + + + + + + + + + ); +}; + +export const UploadIcon = ({ size = 16 }: { size?: number }) => { + return ( + + + + ); +}; + +export const MenuIcon = ({ size = 16 }: { size?: number }) => { + return ( + + + + ); +}; + +export const PencilEditIcon = ({ size = 16 }: { size?: number }) => { + return ( + + + + ); +}; + +export const CheckedSquare = ({ size = 16 }: { size?: number }) => { + return ( + + + + ); +}; + +export const UncheckedSquare = ({ size = 16 }: { size?: number }) => { + return ( + + + + ); +}; + +export const MoreIcon = ({ size = 16 }: { size?: number }) => { + return ( + + + + ); +}; + +export const TrashIcon = ({ size = 16 }: { size?: number }) => { + return ( + + + + ); +}; + +export const InfoIcon = ({ size = 16 }: { size?: number }) => { + return ( + + + + ); +}; + +export const ArrowUpIcon = ({ size = 16 }: { size?: number }) => { + return ( + + + + ); +}; + +export const StopIcon = ({ size = 16 }: { size?: number }) => { + return ( + + + + ); +}; + +export const PaperclipIcon = ({ size = 16 }: { size?: number }) => { + return ( + + + + ); +}; + +export const MoreHorizontalIcon = ({ size = 16 }: { size?: number }) => { + return ( + + + + ); +}; diff --git a/components/login-button.tsx b/components/login-button.tsx deleted file mode 100644 index ae8f842..0000000 --- a/components/login-button.tsx +++ /dev/null @@ -1,42 +0,0 @@ -'use client' - -import * as React from 'react' -import { signIn } from 'next-auth/react' - -import { cn } from '@/lib/utils' -import { Button, type ButtonProps } from '@/components/ui/button' -import { IconGitHub, IconSpinner } from '@/components/ui/icons' - -interface LoginButtonProps extends ButtonProps { - showGithubIcon?: boolean - text?: string -} - -export function LoginButton({ - text = 'Login with GitHub', - showGithubIcon = true, - className, - ...props -}: LoginButtonProps) { - const [isLoading, setIsLoading] = React.useState(false) - return ( - - ) -} diff --git a/components/login-form.tsx b/components/login-form.tsx deleted file mode 100644 index dc64b06..0000000 --- a/components/login-form.tsx +++ /dev/null @@ -1,97 +0,0 @@ -'use client' - -import { useFormState, useFormStatus } from 'react-dom' -import { authenticate } from '@/app/login/actions' -import Link from 'next/link' -import { useEffect } from 'react' -import { toast } from 'sonner' -import { IconSpinner } from './ui/icons' -import { getMessageFromCode } from '@/lib/utils' -import { useRouter } from 'next/navigation' - -export default function LoginForm() { - const router = useRouter() - const [result, dispatch] = useFormState(authenticate, undefined) - - useEffect(() => { - if (result) { - if (result.type === 'error') { - toast.error(getMessageFromCode(result.resultCode)) - } else { - toast.success(getMessageFromCode(result.resultCode)) - router.refresh() - } - } - }, [result, router]) - - return ( -
    -
    -

    Please log in to continue.

    -
    -
    - -
    - -
    -
    -
    - -
    - -
    -
    -
    - -
    - - - No account yet?
    Sign up
    - -
    - ) -} - -function LoginButton() { - const { pending } = useFormStatus() - - return ( - - ) -} diff --git a/components/markdown.tsx b/components/markdown.tsx index d449146..4c552bc 100644 --- a/components/markdown.tsx +++ b/components/markdown.tsx @@ -1,9 +1,78 @@ -import { FC, memo } from 'react' -import ReactMarkdown, { Options } from 'react-markdown' +import Link from "next/link"; +import React from "react"; +import ReactMarkdown from "react-markdown"; +import remarkGfm from "remark-gfm"; -export const MemoizedReactMarkdown: FC = memo( - ReactMarkdown, - (prevProps, nextProps) => - prevProps.children === nextProps.children && - prevProps.className === nextProps.className -) +const NonMemoizedMarkdown = ({ children }: { children: string }) => { + const components = { + code: ({ node, inline, className, children, ...props }: any) => { + const match = /language-(\w+)/.exec(className || ""); + return !inline && match ? ( +
    +          {children}
    +        
    + ) : ( + + {children} + + ); + }, + ol: ({ node, children, ...props }: any) => { + return ( +
      + {children} +
    + ); + }, + li: ({ node, children, ...props }: any) => { + return ( +
  • + {children} +
  • + ); + }, + ul: ({ node, children, ...props }: any) => { + return ( +
      + {children} +
    + ); + }, + strong: ({ node, children, ...props }: any) => { + return ( + + {children} + + ); + }, + a: ({ node, children, ...props }: any) => { + return ( + + {children} + + ); + }, + }; + + return ( + + {children} + + ); +}; + +export const Markdown = React.memo( + NonMemoizedMarkdown, + (prevProps, nextProps) => prevProps.children === nextProps.children, +); diff --git a/components/media/video.tsx b/components/media/video.tsx deleted file mode 100644 index a8f3846..0000000 --- a/components/media/video.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import { SpinnerIcon } from '../ui/icons' - -export const Video = ({ isLoading }: { isLoading: boolean }) => { - return ( -
    -
    - ) -} diff --git a/components/message.tsx b/components/message.tsx new file mode 100644 index 0000000..a280026 --- /dev/null +++ b/components/message.tsx @@ -0,0 +1,43 @@ +"use client"; + +import { motion } from "framer-motion"; +import { BotIcon, UserIcon } from "./icons"; +import { ReactNode } from "react"; +import { Markdown } from "./markdown"; +import { Attachment } from "ai"; +import { PreviewAttachment } from "./preview-attachment"; + +export const Message = ({ + role, + content, + attachments, +}: { + role: string; + content: string | ReactNode; + attachments?: Array; +}) => { + return ( + +
    + {role === "assistant" ? : } +
    + +
    +
    + {content as string} +
    + +
    + {attachments && + attachments.map((attachment) => ( + + ))} +
    +
    +
    + ); +}; diff --git a/components/multimodal-input.tsx b/components/multimodal-input.tsx new file mode 100644 index 0000000..bc578d0 --- /dev/null +++ b/components/multimodal-input.tsx @@ -0,0 +1,256 @@ +"use client"; + +import { Button } from "./shadcn/button"; +import { motion } from "framer-motion"; +import { Textarea } from "./shadcn/textarea"; +import { PreviewAttachment } from "./preview-attachment"; +import { ArrowUpIcon, PaperclipIcon, StopIcon } from "./icons"; +import React, { + useRef, + useEffect, + useState, + useCallback, + Dispatch, + SetStateAction, + ChangeEvent, +} from "react"; +import { Attachment, ChatRequestOptions, CreateMessage, Message } from "ai"; + +const suggestedActions = [ + { + title: "What is", + label: "the meaning of life?", + action: "what is the meaning of life?", + }, + { + title: "Why do", + label: "developers use Next.js?", + action: "why do developers use Next.js?", + }, +]; + +export function MultimodalInput({ + input, + setInput, + isLoading, + stop, + attachments, + setAttachments, + messages, + append, + handleSubmit, +}: { + input: string; + setInput: (value: string) => void; + isLoading: boolean; + stop: () => void; + attachments: Array; + setAttachments: Dispatch>>; + messages: Array; + append: ( + message: Message | CreateMessage, + chatRequestOptions?: ChatRequestOptions, + ) => Promise; + handleSubmit: ( + event?: { + preventDefault?: () => void; + }, + chatRequestOptions?: ChatRequestOptions, + ) => void; +}) { + const textareaRef = useRef(null); + + useEffect(() => { + if (textareaRef.current) { + adjustHeight(); + } + }, []); + + const adjustHeight = () => { + if (textareaRef.current) { + textareaRef.current.style.height = "auto"; + textareaRef.current.style.height = `${textareaRef.current.scrollHeight + 2}px`; + } + }; + + const handleInput = (event: React.ChangeEvent) => { + setInput(event.target.value); + adjustHeight(); + }; + + const fileInputRef = useRef(null); + const [uploadQueue, setUploadQueue] = useState>([]); + + const submitForm = useCallback(() => { + handleSubmit(undefined, { + experimental_attachments: attachments, + }); + + setAttachments([]); + }, [attachments, handleSubmit, setAttachments]); + + const uploadFile = async (file: File) => { + const formData = new FormData(); + formData.append("file", file); + + try { + const response = await fetch(`/api/files/upload`, { + method: "POST", + body: formData, + }); + + if (response.ok) { + const { data } = await response.json(); + const { path } = data; + + return { + url: `${process.env.NEXT_PUBLIC_SUPABASE_URL}/storage/v1/object/public/attachments/${path}`, + name: file.name, + contentType: file.type, + }; + } else { + throw new Error(`HTTP error! status: ${response.status}`); + } + } catch (error) { + console.error("Error uploading file:", error); + throw error; + } + }; + + const handleFileChange = useCallback( + async (event: ChangeEvent) => { + const files = Array.from(event.target.files || []); + + setUploadQueue(files.map((file) => file.name)); + + try { + const uploadPromises = files.map((file) => uploadFile(file)); + const uploadedAttachments = await Promise.all(uploadPromises); + + setAttachments((currentAttachments) => [ + ...currentAttachments, + ...uploadedAttachments, + ]); + } catch (error) { + console.error("Error uploading files:", error); + } finally { + setUploadQueue([]); + } + }, + [setAttachments], + ); + + return ( +
    + {messages.length === 0 && + attachments.length === 0 && + uploadQueue.length === 0 && ( +
    + {suggestedActions.map((suggestedAction, index) => ( + 1 ? "hidden sm:block" : "block"} + > + + + ))} +
    + )} + + + + {(attachments.length > 0 || uploadQueue.length > 0) && ( +
    + {attachments.map((attachment) => ( + + ))} + + {uploadQueue.map((filename) => ( + + ))} +
    + )} + +