Add mobile header

This commit is contained in:
Jared Palmer 2023-05-19 16:06:02 -04:00
parent 54c25f2e24
commit 562dbe7442
5 changed files with 90 additions and 32 deletions

View file

@ -3,6 +3,8 @@
import { type Message } from "@prisma/client"; import { type Message } from "@prisma/client";
import { ChatMessage } from "./chat-message"; import { ChatMessage } from "./chat-message";
import { NextChatLogo } from "@/components/ui/nextchat-logo";
import { Plus } from "lucide-react";
export interface ChatList { export interface ChatList {
messages: Message[]; messages: Message[];
@ -11,6 +13,19 @@ export interface ChatList {
export function ChatList({ messages }: ChatList) { export function ChatList({ messages }: ChatList) {
return ( return (
<div className="relative h-full dark:bg-zinc-900"> <div className="relative h-full dark:bg-zinc-900">
<div className="sticky top-0 border-b w-full bg-black sm:hidden text-white font-semibold">
<div className="px-4 py-2 flex items-center justify-between">
<div className="flex flex-row gap-1 whitespace-nowrap items-center">
<NextChatLogo className="h-6 w-6" />
<span className="select-none">Next.js Chatbot</span>
</div>
<div>
<button className="text-white p-2 rounded hover:bg-zinc-800 transition duration-100">
<Plus className="h-4 w-4" />
</button>
</div>
</div>
</div>
<div className="h-full w-full overflow-auto"> <div className="h-full w-full overflow-auto">
{messages.length > 0 ? ( {messages.length > 0 ? (
<div className="group w-full text-zinc-900 dark:text-white divide-y dark:divide-zinc-800"> <div className="group w-full text-zinc-900 dark:text-white divide-y dark:divide-zinc-800">

View file

@ -81,7 +81,7 @@ export function Prompt({
placeholder="Send a message." placeholder="Send a message."
spellCheck={false} spellCheck={false}
className={cn( className={cn(
"m-0 max-h-[200px] w-full sm:text-sm resize-none border-0 bg-transparent p-0 py-[13px] pl-4 pr-7 outline-none ring-0 focus:ring-0 focus-visible:ring-0 dark:bg-transparent", "m-0 max-h-[200px] w-full resize-none border-0 bg-transparent p-0 py-[13px] pl-4 pr-7 outline-none ring-0 focus:ring-0 focus-visible:ring-0 dark:bg-transparent",
fontMessage.className fontMessage.className
)} )}
style={{ style={{

View file

@ -1,4 +1,4 @@
import { DevGPTLogo } from "@/components/ui/devgpt-logo"; import { NextChatLogo } from "@/components/ui/nextchat-logo";
import { Login } from "@/components/ui/login"; import { Login } from "@/components/ui/login";
import { UserMenu } from "@/components/ui/user-menu"; import { UserMenu } from "@/components/ui/user-menu";
import { prisma } from "@/lib/prisma"; import { prisma } from "@/lib/prisma";
@ -21,7 +21,7 @@ export function Sidebar({ session, newChat }: SidebarProps) {
<aside className="flex h-full w-full flex-col p-2 shadow-lg ring-1 ring-zinc-900/10 dark:ring-zinc-200/10 relative z-10"> <aside className="flex h-full w-full flex-col p-2 shadow-lg ring-1 ring-zinc-900/10 dark:ring-zinc-200/10 relative z-10">
<div className="flex flex-row gap-1 items-center justify-between text-base font-semibold tracking-tight antialiased bg-black text-white px-4 py-4 -m-2 mb-2"> <div className="flex flex-row gap-1 items-center justify-between text-base font-semibold tracking-tight antialiased bg-black text-white px-4 py-4 -m-2 mb-2">
<div className="flex flex-row gap-1 whitespace-nowrap items-center"> <div className="flex flex-row gap-1 whitespace-nowrap items-center">
<DevGPTLogo className="h-6 w-6" /> <NextChatLogo className="h-6 w-6" />
<span className="select-none">Next.js Chatbot</span> <span className="select-none">Next.js Chatbot</span>
</div> </div>
<div> <div>

View file

@ -1,29 +0,0 @@
export function DevGPTLogo(props: JSX.IntrinsicElements["svg"]) {
return (
<svg
width={24}
height={24}
viewBox="0 0 24 24"
fill="none"
xmlns="http://www.w3.org/2000/svg"
{...props}
>
<path
d="M21 15C21 15.5304 20.7893 16.0391 20.4142 16.4142C20.0391 16.7893 19.5304 17 19 17H7L3 21V5C3 4.46957 3.21071 3.96086 3.58579 3.58579C3.96086 3.21071 4.46957 3 5 3H19C19.5304 3 20.0391 3.21071 20.4142 3.58579C20.7893 3.96086 21 4.46957 21 5V15Z"
fill="white"
stroke="white"
strokeWidth={2}
strokeLinecap="round"
strokeLinejoin="round"
/>
<path
fillRule="evenodd"
clipRule="evenodd"
d="M13.1559 6.79986L12.13 5L7 14H9.02784L13.1559 6.79986ZM14.4497 9.06966L13.4236 10.8974L14.1681 12.2035H12.6904L11.6818 14H17.26L14.4497 9.06966Z"
fill="black"
/>
</svg>
);
}
DevGPTLogo.displayName = "DevGPT-logo";

View file

@ -0,0 +1,72 @@
export function NextChatLogo(props: JSX.IntrinsicElements["svg"]) {
return (
<svg
width={17}
height={17}
viewBox="0 0 17 17"
fill="none"
xmlns="http://www.w3.org/2000/svg"
{...props}
>
<path
d="M1 16L2.58314 11.2506C1.83084 9.74642 1.63835 8.02363 2.04013 6.39052C2.4419 4.75741 3.41171 3.32057 4.776 2.33712C6.1403 1.35367 7.81003 0.887808 9.4864 1.02289C11.1628 1.15798 12.7364 1.8852 13.9256 3.07442C15.1148 4.26363 15.842 5.83723 15.9771 7.5136C16.1122 9.18997 15.6463 10.8597 14.6629 12.224C13.6794 13.5883 12.2426 14.5581 10.6095 14.9599C8.97637 15.3616 7.25358 15.1692 5.74942 14.4169L1 16Z"
fill="white"
stroke="white"
strokeWidth={2}
strokeLinecap="round"
strokeLinejoin="round"
/>
<mask
id="mask0_91_2047"
style={{ maskType: "alpha" }}
maskUnits="userSpaceOnUse"
x={1}
y={0}
width={16}
height={16}
>
<circle cx={9} cy={8} r={8} fill="white" />
</mask>
<g mask="url(#mask0_91_2047)">
<circle cx={9} cy={8} r={8} fill="white" />
<path
d="M14.2896 14.0018L7.146 4.8H5.80005V11.1973H6.87681V6.16743L13.4444 14.6529C13.7407 14.4545 14.0231 14.2369 14.2896 14.0018Z"
fill="url(#paint0_linear_91_2047)"
/>
<rect
x="11.2222"
y="4.8"
width="1.06667"
height="6.4"
fill="url(#paint1_linear_91_2047)"
/>
</g>
<defs>
<linearGradient
id="paint0_linear_91_2047"
x1="10.6889"
y1="10.3556"
x2="13.8445"
y2="14.2667"
gradientUnits="userSpaceOnUse"
>
<stop stopColor="black" />
<stop offset={1} stopColor="black" stopOpacity={0} />
</linearGradient>
<linearGradient
id="paint1_linear_91_2047"
x1="11.7555"
y1="4.8"
x2="11.7376"
y2="9.50002"
gradientUnits="userSpaceOnUse"
>
<stop stopColor="black" />
<stop offset={1} stopColor="black" stopOpacity={0} />
</linearGradient>
</defs>
</svg>
);
}
NextChatLogo.displayName = "DevGPT-logo";