"use client"; import { FC, useState } from "react"; import useSWR from "swr"; import { Box, Grid, Typography, List, ListItemButton, ListItemIcon, ListItemText, ListItemSecondaryAction, Drawer, Collapse, } from "@mui/material"; import { FeaturedPlayList as FeaturedPlayListIcon, Person as PersonIcon, Analytics as AnalyticsIcon, Logout as LogoutIcon, Cottage as CottageIcon, Settings as SettingsIcon, ExpandCircleDown as ExpandCircleDownIcon, Dvr as DvrIcon, } from "@mui/icons-material"; import { usePathname } from "next/navigation"; import Link from "next/link"; import Image from "next/image"; import LinkLogo from "public/link-logo-small.png"; import { useSession, signOut } from "next-auth/react"; import { getTicketOverviewCountsQuery } from "@/app/_graphql/getTicketOverviewCountsQuery"; const openWidth = 270; const closedWidth = 100; const MenuItem = ({ name, href, Icon, iconSize, inset = false, selected = false, open = true, badge, target = "_self", }: any) => ( {iconSize > 0 ? ( ) : ( )} {open && ( {name} } /> )} {badge && badge > 0 ? ( {badge} ) : null} ); interface SidebarProps { open: boolean; setOpen: (open: boolean) => void; } export const Sidebar: FC = ({ open, setOpen }) => { const pathname = usePathname(); const { data: session } = useSession(); const username = session?.user?.name || "User"; const { data: overviewData, error: overviewError }: any = useSWR( { document: getTicketOverviewCountsQuery, }, { refreshInterval: 10000 } ); const findOverviewCountByID = (id: number) => overviewData?.ticketOverviews?.edges?.find((overview: any) => overview.node.id.endsWith(`/${id}`) )?.node?.ticketCount ?? 0; const assignedCount = findOverviewCountByID(1); const urgentCount = findOverviewCountByID(7); const pendingCount = findOverviewCountByID(3); const unassignedCount = findOverviewCountByID(2); const logout = () => { signOut({ callbackUrl: "/login" }); }; return ( { setOpen!(!open); }} > Link logo . {open && ( CDR Link )} Hello {open ? username : username .split(" ") .map((name) => name.substring(0, 1)) .join("")} {/* */} ); };