Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 | 6x 17x 17x 51x 51x 1x | import { Link } from "react-router-dom";
import ReactCountryFlag from "react-country-flag";
import { languages } from "@/utils/constants";
import useDrawer from "@/hooks/useDrawer";
import {
Drawer as MuiDrawer,
List,
ListItem,
ListItemIcon,
ListItemButton,
ListItemText,
Box,
Divider,
} from "@mui/material";
import UpcomingIcon from "@mui/icons-material/Upcoming";
import CheckIcon from "@mui/icons-material/Check";
import LoginIcon from "@mui/icons-material/Login";
import MovieIcon from "@mui/icons-material/Movie";
import LogoutIcon from "@mui/icons-material/Logout";
import tmdbLogo from "@/assets/tmdb-logo.svg";
export const Drawer = ({
isDrawerOpen,
onDrawerToggle,
}: {
isDrawerOpen: boolean;
onDrawerToggle: () => void;
}) => {
const { i18n, t, isAuthenticated, sessionId, deleteSessionMutation } = useDrawer();
return (
<MuiDrawer variant="temporary" anchor="left" open={isDrawerOpen} onClose={onDrawerToggle}>
<img className="p-4" width="154" height="20" src={tmdbLogo} />
<Box
sx={{ width: 250 }}
role="presentation"
onClick={onDrawerToggle}
onKeyDown={onDrawerToggle}
>
<List>
{[
{ name: t("movies"), route: "/", icon: <MovieIcon /> },
{
name: t("upcoming"),
route: "/upcoming",
icon: <UpcomingIcon />,
},
!isAuthenticated
? { name: "Login", route: "/login", icon: <LoginIcon /> }
: { name: "", route: "", icon: null },
].map((nav) => (
<Link key={nav.name} to={nav.route}>
<ListItem disablePadding>
<ListItemButton>
<ListItemIcon>{nav.icon}</ListItemIcon>
<ListItemText primary={nav.name} />
</ListItemButton>
</ListItem>
</Link>
))}
</List>
<Divider />
<div className="flex flex-col gap-2 p-4 mb-6">
<span className="font-semibold">{t("select_language")}</span>
<div className="flex flex-col gap-4">
{languages.map((l) => (
<div
key={l.name}
onClick={() => i18n.changeLanguage(l.iso_639_1)}
className="flex items-center gap-1 border rounded-md shadow-md p-4"
>
{i18n.language === l.iso_639_1 && (
<div className="flex justify-center items-center rounded-full h-[20px] w-[20px] border-2 bg-[#172554]">
<CheckIcon sx={{ color: "#fff", fontSize: 12 }} />
</div>
)}
<ReactCountryFlag countryCode={l.flag} />
<span>{l.english_name}</span>
</div>
))}
</div>
</div>
<Divider />
{isAuthenticated && (
<List>
<ListItem onClick={() => deleteSessionMutation(sessionId)} disablePadding>
<ListItemButton>
<ListItemIcon>
<LogoutIcon />
</ListItemIcon>
<ListItemText primary={t("logout")} />
</ListItemButton>
</ListItem>
</List>
)}
</Box>
</MuiDrawer>
);
};
|