Rev 2614 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
import React from 'react'
import { useNavigate } from 'react-router-dom'
import { Avatar, Box, Card, styled } from '@mui/material'
export const WidgetWrapper = styled(Card)(({ theme }) => ({
boxShadow: theme.shadows[1], // 0px 0px 0px 1px rgba(0, 0, 0, 0.08);
height: 'fit-content',
width: '100%',
boxSizing: 'border-box',
overflow: 'hidden',
position: 'relative',
span: {
fontSize: '0.9rem'
},
p: {
color: 'var(--font-color)',
fontSize: '14px',
textAlign: 'justify',
marginBottom: '0.5rem'
},
h2: {
fontSize: '1rem'
},
[theme.breakpoints.up('sm')]: {
borderRadius: theme.shape.borderRadius
}
}))
WidgetWrapper.Body = styled(Box)({
padding: '10px 1rem',
display: 'flex',
flexDirection: 'column'
})
WidgetWrapper.Actions = styled(Box)(({ theme }) => ({
display: 'flex',
justifyContent: 'space-around',
borderTop: '1px solid rgb(211, 211, 211)',
padding: '5px',
gap: '0.5rem',
'> button, > a': {
alignItems: 'center',
borderRadius: 'var(--border-radius)',
cursor: 'pointer',
display: 'inline-flex',
flexDirection: 'column',
fontSize: '0.9rem',
padding: '5px',
position: 'relative',
'&:hover': {
backgroundColor: 'whitesmoke'
}
},
[theme.breakpoints.up('sm')]: {
flexDirection: 'row',
gap: '0.5rem',
fontSize: '1rem'
}
}))
const LayoutHeader = styled(Box)`
display: flex;
gap: 0.5rem;
padding: 10px 1rem;
align-items: center;
justify-content: space-between;
position: relative;
`
const HeaderInfo = styled(Box)`
align-items: center;
display: inline-flex;
gap: 0.5rem;
width: fit-content;
`
const HeaderContent = styled(Box)`
display: flex;
flex-direction: column;
`
const Header = ({
image = '',
title = '',
url = '',
timeElapsed = '',
children,
...rest
}) => {
const navigate = useNavigate()
const goToProfile = () => {
if (!url) return
navigate(url)
}
return (
<LayoutHeader {...rest}>
<HeaderInfo>
{image && (
<Avatar
src={image}
alt={`${title} profile image`}
sx={{ width: '50px', height: '50px' }}
/>
)}
<HeaderContent>
<h2 onClick={goToProfile}>{title}</h2>
{timeElapsed && <span>{timeElapsed}</span>}
</HeaderContent>
</HeaderInfo>
{children}
</LayoutHeader>
)
}
WidgetWrapper.Header = Header
export default WidgetWrapper