| import PropTypes from 'prop-types' |
|
|
| |
| import { useTheme } from '@mui/material/styles' |
| import MuiAvatar from '@mui/material/Avatar' |
|
|
| |
|
|
| const Avatar = ({ color, outline, size, sx, ...others }) => { |
| const theme = useTheme() |
|
|
| const colorSX = color && !outline && { color: theme.palette.background.paper, bgcolor: `${color}.main` } |
| const outlineSX = outline && { |
| color: color ? `${color}.main` : `primary.main`, |
| bgcolor: theme.palette.background.paper, |
| border: '2px solid', |
| borderColor: color ? `${color}.main` : `primary.main` |
| } |
| let sizeSX = {} |
| switch (size) { |
| case 'badge': |
| sizeSX = { |
| width: theme.spacing(3.5), |
| height: theme.spacing(3.5) |
| } |
| break |
| case 'xs': |
| sizeSX = { |
| width: theme.spacing(4.25), |
| height: theme.spacing(4.25) |
| } |
| break |
| case 'sm': |
| sizeSX = { |
| width: theme.spacing(5), |
| height: theme.spacing(5) |
| } |
| break |
| case 'lg': |
| sizeSX = { |
| width: theme.spacing(9), |
| height: theme.spacing(9) |
| } |
| break |
| case 'xl': |
| sizeSX = { |
| width: theme.spacing(10.25), |
| height: theme.spacing(10.25) |
| } |
| break |
| case 'md': |
| sizeSX = { |
| width: theme.spacing(7.5), |
| height: theme.spacing(7.5) |
| } |
| break |
| default: |
| sizeSX = {} |
| } |
|
|
| return <MuiAvatar sx={{ ...colorSX, ...outlineSX, ...sizeSX, ...sx }} {...others} /> |
| } |
|
|
| Avatar.propTypes = { |
| className: PropTypes.string, |
| color: PropTypes.string, |
| outline: PropTypes.bool, |
| size: PropTypes.string, |
| sx: PropTypes.object |
| } |
|
|
| export default Avatar |
|
|