From 21fe55a96c36892fc50e8198248da825a5a4bd6f Mon Sep 17 00:00:00 2001 From: codetorso Date: Sat, 20 Jul 2024 07:17:25 +0530 Subject: for god's sake this should work ;) --- apps/web/app/(auth)/signin/page.tsx | 2 +- apps/web/app/(dash)/chat/chatWindow.tsx | 218 +++--- apps/web/app/(dash)/chat/queryinput.tsx | 83 +++ apps/web/app/(dash)/dialogContentContainer.tsx | 224 ++++++ apps/web/app/(dash)/dialogTriggerWrapper.tsx | 50 ++ apps/web/app/(dash)/home/filterSpaces.tsx | 108 +++ apps/web/app/(dash)/home/heading.tsx | 38 ++ apps/web/app/(dash)/home/history.tsx | 50 ++ apps/web/app/(dash)/home/homeVariants.ts | 50 -- apps/web/app/(dash)/home/page.tsx | 97 +-- apps/web/app/(dash)/home/queryinput.tsx | 163 +---- apps/web/app/(dash)/layout.tsx | 8 +- apps/web/app/(dash)/menu.tsx | 483 ++++--------- apps/web/app/(onboarding)/layout.tsx | 12 + apps/web/app/(onboarding)/onboarding/page.tsx | 388 +++++++++++ apps/web/app/actions/fetchers.ts | 30 +- apps/web/app/layout.tsx | 6 +- apps/web/migrations/0001_nervous_longshot.sql | 2 + apps/web/migrations/meta/0001_snapshot.json | 905 +++++++++++++++++++++++++ apps/web/migrations/meta/_journal.json | 31 +- apps/web/package.json | 103 +-- apps/web/public/image.png | Bin 0 -> 164761 bytes apps/web/public/image2.png | Bin 0 -> 8360 bytes apps/web/public/image3.png | Bin 0 -> 10298 bytes apps/web/public/img.png | Bin 0 -> 68722 bytes apps/web/server/db/schema.ts | 3 +- packages/tailwind-config/globals.css | 7 + packages/ui/shadcn/command.tsx | 5 +- packages/ui/shadcn/divider.tsx | 7 - packages/ui/shadcn/skeleton.tsx | 15 + 30 files changed, 2314 insertions(+), 774 deletions(-) create mode 100644 apps/web/app/(dash)/chat/queryinput.tsx create mode 100644 apps/web/app/(dash)/dialogContentContainer.tsx create mode 100644 apps/web/app/(dash)/dialogTriggerWrapper.tsx create mode 100644 apps/web/app/(dash)/home/filterSpaces.tsx create mode 100644 apps/web/app/(dash)/home/heading.tsx create mode 100644 apps/web/app/(dash)/home/history.tsx delete mode 100644 apps/web/app/(dash)/home/homeVariants.ts create mode 100644 apps/web/app/(onboarding)/layout.tsx create mode 100644 apps/web/app/(onboarding)/onboarding/page.tsx create mode 100644 apps/web/migrations/0001_nervous_longshot.sql create mode 100644 apps/web/migrations/meta/0001_snapshot.json create mode 100644 apps/web/public/image.png create mode 100644 apps/web/public/image2.png create mode 100644 apps/web/public/image3.png create mode 100644 apps/web/public/img.png delete mode 100644 packages/ui/shadcn/divider.tsx create mode 100644 packages/ui/shadcn/skeleton.tsx diff --git a/apps/web/app/(auth)/signin/page.tsx b/apps/web/app/(auth)/signin/page.tsx index 3db512ae..ab965325 100644 --- a/apps/web/app/(auth)/signin/page.tsx +++ b/apps/web/app/(auth)/signin/page.tsx @@ -64,7 +64,7 @@ async function Signin({ action={async () => { "use server"; await signIn("google", { - redirectTo: "/home?firstTime=true", + redirectTo: "/onboarding", }); }} > diff --git a/apps/web/app/(dash)/chat/chatWindow.tsx b/apps/web/app/(dash)/chat/chatWindow.tsx index f0827a3d..066e7d20 100644 --- a/apps/web/app/(dash)/chat/chatWindow.tsx +++ b/apps/web/app/(dash)/chat/chatWindow.tsx @@ -2,7 +2,7 @@ import { AnimatePresence } from "framer-motion"; import React, { useEffect, useRef, useState } from "react"; -import QueryInput from "../home/queryinput"; +import QueryInput from "./queryinput"; import { cn } from "@repo/ui/lib/utils"; import { motion } from "framer-motion"; import { useRouter } from "next/navigation"; @@ -224,9 +224,73 @@ function ChatWindow({ {chat.question} -
+
+ {/* Related memories */} +
0 || chat.answer.parts.length === 0 ? "flex" : "hidden"}`} + > + + + + Related Memories + + {/* TODO: fade out content on the right side, the fade goes away when the user scrolls */} + + {/* Loading state */} + {chat.answer.sources.length > 0 || + (chat.answer.parts.length === 0 && ( + <> + {[1, 2, 3, 4].map((_, idx) => ( +
+
+
+
+ ))} + + ))} + {chat.answer.sources.map((source, idx) => ( + +
+ {source.type} + + {source.numChunks > 1 && ( + {source.numChunks} chunks + )} +
+
+ {source.title} +
+
+ {source.content.length > 100 + ? source.content.slice(0, 100) + "..." + : source.content} +
+ + ))} +
+
+
+
+ + {/* Summary */}
-
Answer
+
Summary
{/* Loading state */} {(chat.answer.parts.length === 0 || @@ -283,108 +347,60 @@ function ChatWindow({ > +
- -
0 || chat.answer.parts.length === 0 ? "flex" : "hidden"}`} - > - - - - Related Memories - - {/* TODO: fade out content on the right side, the fade goes away when the user scrolls */} - 0 ? "flex" : "hidden"}`} + > + -
- {/* Loading state */} - {chat.answer.sources.length > 0 || - (chat.answer.parts.length === 0 && ( - <> - {[1, 2, 3, 4].map((_, idx) => ( -
-
-
-
- ))} - - ))} - {chat.answer.sources.map((source, idx) => ( - -
- {source.type} - - {source.numChunks > 1 && ( - {source.numChunks} chunks - )} -
-
- {source.title} -
-
- {source.content.length > 100 - ? source.content.slice(0, 100) + "..." - : source.content} -
- - ))} -
- - {chat.answer.justification && - chat.answer.justification.length && ( -
0 ? "flex" : "hidden"}`} - > - - - - Justification - - - {chat.answer.justification.length > 0 - ? chat.answer.justification - .replaceAll( - "", - "", - ) - .replaceAll( - "", - "", - ) - : "No justification provided."} - - - -
- )} -
-
-
-
+ + + Justification + + + {chat.answer.justification.length > 0 + ? chat.answer.justification + .replaceAll("", "") + .replaceAll("", "") + : "No justification provided."} + + + +
+ )} diff --git a/apps/web/app/(dash)/chat/queryinput.tsx b/apps/web/app/(dash)/chat/queryinput.tsx new file mode 100644 index 00000000..99f55986 --- /dev/null +++ b/apps/web/app/(dash)/chat/queryinput.tsx @@ -0,0 +1,83 @@ +"use client"; + +import { ArrowRightIcon } from "@repo/ui/icons"; +import Image from "next/image"; +import React, { useState } from "react"; + +function QueryInput({ + initialSpaces, + initialQuery = "", + disabled = false, + className, + mini = false, + handleSubmit, +}: { + initialQuery?: string; + initialSpaces?: { + id: number; + name: string; + }[]; + disabled?: boolean; + className?: string; + mini?: boolean; + handleSubmit: (q: string, spaces: { id: number; name: string }[]) => void; +}) { + const [q, setQ] = useState(initialQuery); + + const [selectedSpaces, setSelectedSpaces] = useState< + { id: number; name: string }[] + >([]); + + return ( +
+
+ {/* input and action button */} +
{ + if (q.trim().length === 0) { + return; + } + handleSubmit(q, selectedSpaces); + setQ(""); + }} + className="flex gap-4 p-3" + > +