11import PropTypes from 'prop-types' ;
2- import { useState } from 'react' ;
32
43// @next
54import Link from 'next/link' ;
65
76// @mui
8- import { useTheme } from '@mui/material/styles' ;
9- import useMediaQuery from '@mui/material/useMediaQuery' ;
107import Avatar from '@mui/material/Avatar' ;
118import Button from '@mui/material/Button' ;
12- import ClickAwayListener from '@mui/material/ClickAwayListener' ;
13- import Grow from '@mui/material/Grow' ;
14- import IconButton from '@mui/material/IconButton' ;
15- import ListItemAvatar from '@mui/material/ListItemAvatar' ;
16- import ListItemIcon from '@mui/material/ListItemIcon' ;
17- import Popper from '@mui/material/Popper' ;
189import Stack from '@mui/material/Stack' ;
1910import Typography from '@mui/material/Typography' ;
20- import Box from '@mui/material/Box' ;
2111
2212// @project
23- import { DRAWER_WIDTH } from '@/config' ;
2413import LogoSection from '@/components/logo' ;
2514import MainCard from '@/components/MainCard' ;
26- import SimpleBar from '@/components/third-party/SimpleBar' ;
2715import { AvatarSize } from '@/enum' ;
2816
2917// @assets
@@ -37,26 +25,6 @@ const data = {
3725 icon : < IconBolt size = { 16 } />
3826} ;
3927
40- /*************************** POPPER - ARROW ***************************/
41-
42- const popperArrowStyles = ( theme ) => ( {
43- content : '""' ,
44- display : 'block' ,
45- position : 'absolute' ,
46- bottom : 20 ,
47- left : - 6 ,
48- width : 10 ,
49- height : 10 ,
50- bgcolor : 'grey.50' ,
51- transform : 'translateY(-50%) rotate(45deg)' ,
52- zIndex : 120 ,
53- borderLeft : '1px solid' ,
54- borderLeftColor : 'divider' ,
55- borderBottom : '1px solid' ,
56- borderBottomColor : 'divider' ,
57- boxShadow : theme . customShadows . tooltip
58- } ) ;
59-
6028/*************************** NAVIGATION CARD - CONTENT ***************************/
6129
6230function CardContent ( { title, description, icon } ) {
@@ -90,91 +58,12 @@ function CardContent({ title, description, icon }) {
9058
9159/*************************** DRAWER CONTENT - NAVIGATION CARD ***************************/
9260
93- export default function NavCard ( { isMiniDrawer } ) {
94- const theme = useTheme ( ) ;
95- const upMD = useMediaQuery ( theme . breakpoints . up ( 'md' ) ) ;
96-
97- const [ anchorEl , setAnchorEl ] = useState ( null ) ;
98- const [ miniMenuOpened , setMiniMenuOpened ] = useState ( false ) ;
99-
100- const handleClick = ( event ) => {
101- setAnchorEl ( event . currentTarget ) ;
102- setMiniMenuOpened ( ( prev ) => ! prev ) ;
103- } ;
104-
105- const handleClose = ( ) => {
106- setMiniMenuOpened ( false ) ;
107- } ;
108-
61+ export default function NavCard ( ) {
10962 return (
110- < >
111- { ! isMiniDrawer ? (
112- < MainCard sx = { { p : 1.5 , bgcolor : 'grey.50' , boxShadow : 'none' , mb : 3 } } >
113- < CardContent title = { data . title } description = { data . description } icon = { data . icon } />
114- </ MainCard >
115- ) : (
116- < IconButton sx = { { marginX : 'auto' , mb : 3 } } onMouseEnter = { handleClick } onMouseLeave = { handleClose } aria-label = "upgrade plan" >
117- < ListItemAvatar
118- sx = { {
119- minWidth : 32 ,
120- width : 42 ,
121- height : 42 ,
122- borderRadius : 2 ,
123- cursor : 'pointer' ,
124- display : 'flex' ,
125- alignItems : 'center' ,
126- justifyContent : 'center' ,
127- bgcolor : 'primary.main' ,
128- '&:hover' : { bgcolor : 'primary.dark' }
129- } }
130- >
131- < ListItemIcon sx = { { minWidth : 0 } } >
132- < IconBolt size = { 20 } color = "background" />
133- </ ListItemIcon >
134- </ ListItemAvatar >
135- { upMD && (
136- < Popper
137- open = { miniMenuOpened }
138- anchorEl = { anchorEl }
139- placement = "right-end"
140- sx = { {
141- zIndex : 1202 ,
142- minWidth : 220 ,
143- maxWidth : `${ DRAWER_WIDTH - 24 } px` ,
144- '& > .MuiPaper-root' : { position : 'relative' , mb : - 0.75 , '&:before' : { ...popperArrowStyles ( theme ) } }
145- } }
146- >
147- { ( { TransitionProps } ) => (
148- < Grow in = { miniMenuOpened } { ...TransitionProps } timeout = { { appear : 0 , enter : 150 , exit : 150 } } >
149- < MainCard
150- sx = { {
151- p : 1.5 ,
152- bgcolor : 'grey.50' ,
153- boxShadow : theme . customShadows . tooltip ,
154- backgroundImage : 'none' ,
155- transformOrigin : '0 0 0' ,
156- left : 16 ,
157- overflow : 'visible'
158- } }
159- >
160- < ClickAwayListener onClickAway = { handleClose } onMouseEnter = { handleClick } onMouseLeave = { handleClose } >
161- < Box >
162- < SimpleBar style = { { maxHeight : '50vh' , overflowX : 'hidden' , overflowY : 'auto' } } >
163- < CardContent title = { data . title } description = { data . description } icon = { data . icon } />
164- </ SimpleBar >
165- </ Box >
166- </ ClickAwayListener >
167- </ MainCard >
168- </ Grow >
169- ) }
170- </ Popper >
171- ) }
172- </ IconButton >
173- ) }
174- </ >
63+ < MainCard sx = { { p : 1.5 , bgcolor : 'grey.50' , boxShadow : 'none' , mb : 3 } } >
64+ < CardContent title = { data . title } description = { data . description } icon = { data . icon } />
65+ </ MainCard >
17566 ) ;
17667}
17768
17869CardContent . propTypes = { title : PropTypes . string , description : PropTypes . string , icon : PropTypes . any } ;
179-
180- NavCard . propTypes = { isMiniDrawer : PropTypes . bool } ;
0 commit comments