You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

MobileNav.jsx 3.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. import CloseIcon from '@mui/icons-material/Close';
  2. import { Box, Button, Divider, Drawer, IconButton } from '@mui/material';
  3. import Image from 'next/image';
  4. import Link from 'next/link';
  5. import { CART_PAGE, PROFILE_PAGE } from '../../../constants/pages';
  6. import { NavItemMobile } from './NavItem';
  7. import { items } from './navItems';
  8. const MobileNav = ({ toggleDrawer, session, signOutHandler, open }) => {
  9. return (
  10. <Drawer
  11. PaperProps={{
  12. sx: { width: '50%' },
  13. }}
  14. anchor="left"
  15. open={open}
  16. onClose={toggleDrawer(false)}
  17. onOpen={toggleDrawer(true)}
  18. >
  19. <Box
  20. sx={{
  21. p: 2,
  22. height: 1,
  23. backgroundColor: '#fff',
  24. }}
  25. >
  26. <Box sx={{ display: 'flex', justifyContent: 'space-between', mb: 2 }}>
  27. <IconButton disableRipple>
  28. <CloseIcon color="primary" onClick={toggleDrawer(false)} />
  29. </IconButton>
  30. {session?.user?._id && (
  31. <IconButton disableRipple onClick={signOutHandler}>
  32. <Image
  33. src="/images/logout.svg"
  34. alt="profile"
  35. width={18}
  36. height={20}
  37. />
  38. </IconButton>
  39. )}
  40. </Box>
  41. <Divider sx={{ mb: session?.user?._id ? 0 : 2 }} />
  42. {session?.user?._id && (
  43. <>
  44. <Box
  45. display="flex"
  46. flexDirection="column"
  47. justifyContent="center"
  48. alignItems="center"
  49. >
  50. <NavItemMobile
  51. toggleDrawer={toggleDrawer}
  52. name="Profile"
  53. url={PROFILE_PAGE}
  54. />
  55. </Box>
  56. <Divider sx={{ mb: 2 }} />
  57. </>
  58. )}
  59. <Box
  60. sx={{ mb: 2 }}
  61. display="flex"
  62. flexDirection="column"
  63. justifyContent="center"
  64. alignItems="center"
  65. >
  66. {items.map((item) => (
  67. <NavItemMobile
  68. key={item.id}
  69. toggleDrawer={toggleDrawer}
  70. name={item.name}
  71. url={item.url}
  72. />
  73. ))}
  74. <NavItemMobile
  75. toggleDrawer={toggleDrawer}
  76. name="Cart"
  77. url={CART_PAGE}
  78. />
  79. </Box>
  80. <Box
  81. sx={{
  82. display: 'flex',
  83. justifyContent: 'center',
  84. position: 'absolute',
  85. bottom: '0',
  86. left: '50%',
  87. transform: 'translate(-50%, 0)',
  88. }}
  89. >
  90. {!session?.user?._id && (
  91. <>
  92. <Link href="/auth/register">
  93. <Button
  94. onClick={toggleDrawer(false)}
  95. variant="contained"
  96. sx={{ m: 1, width: 0.5 }}
  97. >
  98. Register
  99. </Button>
  100. </Link>
  101. <Link href="/auth">
  102. <Button
  103. onClick={toggleDrawer(false)}
  104. variant="outlined"
  105. sx={{ m: 1, width: 0.5 }}
  106. >
  107. Login
  108. </Button>
  109. </Link>
  110. </>
  111. )}
  112. </Box>
  113. </Box>
  114. </Drawer>
  115. );
  116. };
  117. export default MobileNav;