diff --git a/app/chat/[id]/page.tsx b/app/chat/[id]/page.tsx
index 409e48c..4e7c7a7 100644
--- a/app/chat/[id]/page.tsx
+++ b/app/chat/[id]/page.tsx
@@ -3,25 +3,17 @@
import { generateId } from "ai";
import { useActions, useUIState } from "ai/rsc";
import Link from "next/link";
-import { use, useEffect } from "react";
import { useForm } from "react-hook-form";
import { z } from "zod";
-import { useChat } from "@/components/chat/context";
-import { ArrowUpIcon, ChevronRightIcon, CircleIcon, Market0Icon } from "@/components/icons";
+import { Examples } from "@/components/chat/examples";
+import { ArrowUpIcon, CircleIcon, Market0Icon } from "@/components/icons";
import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar";
import { Button } from "@/components/ui/button";
-import {
- DropdownMenu,
- DropdownMenuContent,
- DropdownMenuGroup,
- DropdownMenuItem,
- DropdownMenuTrigger,
-} from "@/components/ui/dropdown-menu";
import { Form, FormControl, FormField, FormItem } from "@/components/ui/form";
import { Input } from "@/components/ui/input";
import { useScrollAnchor } from "@/hooks/chat/use-scroll-anchor";
-import { examples, menuItems } from "@/lib/examples";
+import { examples } from "@/lib/examples";
import { cn } from "@/lib/utils";
import { ClientMessage } from "@/llm/types";
import { useUser } from "@auth0/nextjs-auth0/client";
@@ -77,7 +69,9 @@ export default function Chat({ params }: { params: { id: string } }) {
{conversation.map((message: ClientMessage) =>
message.role === "user" ? (
@@ -105,15 +99,15 @@ export default function Chat({ params }: { params: { id: string } }) {
{conversation.length === 0 && (
-
+
-
+
Welcome to{" "}
Market0
-
+
Market0 is a demo app that showcases secure auth patterns for GenAI apps
@@ -122,7 +116,7 @@ export default function Chat({ params }: { params: { id: string } }) {
Get started with these examples
-
+
{examples.map((example) => (
)}
-
-
+
+
- {!form.formState.disabled && (
-
-
-
-
-
-
- {menuItems.map((menuItem, idx) => (
-
-
- {menuItem.icon}
- {menuItem.message}
-
-
-
- ))}
-
-
-
- )}
+ {!form.formState.disabled &&
}
{conversation.length > 0 && (
-
+
Market0 is a demo app that showcases secure auth patterns for GenAI apps
)}
diff --git a/components/chat/examples.tsx b/components/chat/examples.tsx
new file mode 100644
index 0000000..2aa6c45
--- /dev/null
+++ b/components/chat/examples.tsx
@@ -0,0 +1,111 @@
+"use client";
+
+import { ArrowUpIcon, ChevronRightIcon, CloseIcon } from "@/components/icons";
+import { Button } from "@/components/ui/button";
+import { Drawer, DrawerClose, DrawerContent, DrawerHeader, DrawerTitle, DrawerTrigger } from "@/components/ui/drawer";
+import {
+ DropdownMenu,
+ DropdownMenuContent,
+ DropdownMenuGroup,
+ DropdownMenuItem,
+ DropdownMenuTrigger,
+} from "@/components/ui/dropdown-menu";
+import { menuItems } from "@/lib/examples";
+import { cn } from "@/lib/utils";
+
+function ExamplesDesktop({ onExampleClick }: { onExampleClick: (input: string) => () => Promise
}) {
+ return (
+
+
+
+
+
+
+
+ {menuItems.map((menuItem, idx) => (
+
+
+ {menuItem.icon}
+ {menuItem.message}
+
+
+
+ ))}
+
+
+
+
+ );
+}
+
+function ExamplesMobile({ onExampleClick }: { onExampleClick: (input: string) => () => Promise }) {
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+ {menuItems.map((menuItem, idx) => (
+ -
+
+
+
+
+ ))}
+
+
+
+
+ );
+}
+
+export function Examples({ onExampleClick }: { onExampleClick: (input: string) => () => Promise }) {
+ return (
+ <>
+
+
+ >
+ );
+}
diff --git a/components/chat/header.tsx b/components/chat/header.tsx
index 33806d2..ae217cb 100644
--- a/components/chat/header.tsx
+++ b/components/chat/header.tsx
@@ -1,17 +1,16 @@
import Link from "next/link";
-import { ArrowRightIcon, DiscordIcon, GHIcon, IconAuth0 } from "@/components/icons";
+import { ArrowRightIcon, IconAuth0 } from "@/components/icons";
import { getSession } from "@auth0/nextjs-auth0";
-import UserButton from "../auth0/user-button";
-import { DropdownMenu, DropdownMenuGroup, DropdownMenuItem, DropdownMenuShortcut } from "../ui/dropdown-menu";
+import { Menu } from "./mobile-menu";
export async function Header({ children }: { children?: React.ReactNode }) {
const session = await getSession();
const user = session?.user!;
return (
-