2023-06-11 00:23:23 +04:00
|
|
|
'use client'
|
|
|
|
|
|
|
|
|
|
import * as React from 'react'
|
|
|
|
|
import { signOut } from '@auth/nextjs/client'
|
2023-06-11 15:39:04 +04:00
|
|
|
import { type Session } from '@auth/nextjs/types'
|
|
|
|
|
import { Sidebar as SidebarIcon } from 'lucide-react'
|
2023-06-11 00:23:23 +04:00
|
|
|
|
|
|
|
|
import { Button } from '@/components/ui/button'
|
|
|
|
|
import {
|
|
|
|
|
Sheet,
|
|
|
|
|
SheetContent,
|
|
|
|
|
SheetHeader,
|
|
|
|
|
SheetTitle,
|
|
|
|
|
SheetTrigger
|
|
|
|
|
} from '@/components/ui/sheet'
|
|
|
|
|
import { ThemeToggle } from '@/components/theme-toggle'
|
|
|
|
|
|
|
|
|
|
export interface SidebarProps {
|
|
|
|
|
session?: Session
|
2023-06-11 11:14:39 -04:00
|
|
|
children?: React.ReactNode
|
2023-06-11 00:23:23 +04:00
|
|
|
}
|
|
|
|
|
|
2023-06-11 11:14:39 -04:00
|
|
|
export function Sidebar({ session, children }: SidebarProps) {
|
2023-06-11 00:23:23 +04:00
|
|
|
return (
|
|
|
|
|
<Sheet>
|
|
|
|
|
<SheetTrigger asChild>
|
2023-06-11 20:47:11 +04:00
|
|
|
<Button variant="ghost" className="-ml-2 h-9 w-9 p-0">
|
|
|
|
|
<SidebarIcon className="h-6 w-6" />
|
2023-06-11 00:23:23 +04:00
|
|
|
<span className="sr-only">Toggle Sidebar</span>
|
|
|
|
|
</Button>
|
|
|
|
|
</SheetTrigger>
|
|
|
|
|
<SheetContent
|
|
|
|
|
position="left"
|
2023-06-11 15:39:04 +04:00
|
|
|
className="inset-y-0 flex h-auto w-[300px] flex-col gap-0 rounded-r-lg p-0 lg:inset-y-2"
|
2023-06-11 00:23:23 +04:00
|
|
|
>
|
2023-06-11 15:39:04 +04:00
|
|
|
<SheetHeader className="p-4">
|
2023-06-11 15:08:59 +04:00
|
|
|
<SheetTitle className="text-sm">Chat History</SheetTitle>
|
2023-06-11 00:23:23 +04:00
|
|
|
</SheetHeader>
|
2023-06-11 11:14:39 -04:00
|
|
|
{children}
|
2023-06-11 15:08:59 +04:00
|
|
|
<div className="flex items-center p-4">
|
2023-06-11 00:23:23 +04:00
|
|
|
<ThemeToggle />
|
|
|
|
|
{session?.user && (
|
|
|
|
|
<Button
|
|
|
|
|
variant="ghost"
|
|
|
|
|
onClick={() => signOut()}
|
|
|
|
|
className="ml-auto"
|
|
|
|
|
>
|
|
|
|
|
Logout
|
|
|
|
|
</Button>
|
|
|
|
|
)}
|
|
|
|
|
</div>
|
|
|
|
|
</SheetContent>
|
|
|
|
|
</Sheet>
|
|
|
|
|
)
|
|
|
|
|
}
|