Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

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