"use client"; import { MemoryIcon } from "../../assets/Memories"; import { Trash2, User2 } from "lucide-react"; import React, { useEffect, useState } from "react"; import { MemoriesBar } from "./MemoriesBar"; import { AnimatePresence, motion } from "framer-motion"; import { Bin } from "@/assets/Bin"; import { Avatar, AvatarFallback, AvatarImage } from "@radix-ui/react-avatar"; import { useSession } from "next-auth/react"; import MessagePoster from "@/app/MessagePoster"; import Image from "next/image"; import WordMark from "../WordMark"; export type MenuItem = { icon: React.ReactNode | React.ReactNode[]; label: string; content?: React.ReactNode; labelDisplay?: React.ReactNode; }; export default function Sidebar({ selectChange, jwt, }: { selectChange?: (selectedItem: string | null) => void; jwt: string; }) { const { data: session } = useSession(); const menuItemsTop: Array = [ { icon: , label: "Memories", content: , }, ]; const menuItemsBottom: Array = [ { icon: , label: "Trash", }, { icon: (
{session?.user?.image ? ( ) : ( )} {session?.user?.name?.split(" ").map((n) => n[0])}{" "}
), label: "Profile", }, ]; const menuItems = [...menuItemsTop, ...menuItemsBottom]; const [selectedItem, setSelectedItem] = useState(null); const Subbar = menuItems.find((i) => i.label === selectedItem)?.content ?? ( <> ); useEffect(() => { void selectChange?.(selectedItem); }, [selectedItem]); return ( <>
Smort logo
, content: , }} selectedItem={selectedItem} setSelectedItem={setSelectedItem} />
, }} selectedItem={selectedItem} id="trash-button" setSelectedItem={setSelectedItem} /> {session?.user?.image ? ( ) : ( )} {session?.user?.name?.split(" ").map((n) => n[0])}{" "}
), }} selectedItem={selectedItem} setSelectedItem={setSelectedItem} />
{selectedItem && {Subbar}}
); } const MenuItem = ({ item: { icon, label, labelDisplay }, selectedItem, setSelectedItem, ...props }: React.HTMLAttributes & { item: MenuItem; selectedItem: string | null; setSelectedItem: React.Dispatch>; }) => ( ); export function SubSidebar({ children }: { children?: React.ReactNode }) { return ( {children} ); }