1
0
mirror of https://github.com/yldio/copilot.git synced 2024-09-22 14:23:50 +03:00
copilot/ui/src/components/avatar/index.js

89 lines
1.5 KiB
JavaScript
Raw Normal View History

// TODO: use a checkbox
2016-12-06 13:50:24 +02:00
const composers = require('../../shared/composers');
const fns = require('../../shared/functions');
const Styled = require('styled-components');
2016-12-06 13:50:24 +02:00
const {
verticallyAlignCenter
} = composers;
const {
remcalc
} = fns;
const {
default: styled
} = Styled;
const Picture = styled.img`
${verticallyAlignCenter}
max-width: 60%;
`;
const Letter = styled.p`
font-size: 2rem;
`;
const Avatar = styled.div`
border-radius: 50%;
height: ${remcalc(50)};
overflow: hidden;
position: relative;
text-align: center;
width: ${remcalc(50)};
`;
module.exports = ({
alt,
className,
color,
crossorigin,
longdesc,
2016-10-28 18:49:00 +03:00
name = '',
sizes,
src,
srcset,
style
}) => {
2016-12-06 13:50:24 +02:00
const _style = {
...style,
background: color
};
2016-10-28 18:49:00 +03:00
const letter = name.split('')[0];
const av = src ? (
2016-12-06 13:50:24 +02:00
<Picture
alt={alt || name}
crossOrigin={crossorigin}
longdesc={longdesc}
sizes={sizes}
2016-10-28 18:49:00 +03:00
src={src}
srcSet={srcset}
2016-10-28 18:49:00 +03:00
/>
) : (
2016-12-06 13:50:24 +02:00
<Letter>
2016-10-28 18:49:00 +03:00
{letter}
2016-12-06 13:50:24 +02:00
</Letter>
2016-10-28 18:49:00 +03:00
);
return (
2016-12-06 13:50:24 +02:00
<Avatar className={className} style={_style}>
2016-10-28 18:49:00 +03:00
{av}
2016-12-06 13:50:24 +02:00
</Avatar>
);
};
2016-12-06 13:50:24 +02:00
module.exports.propTypes = {
alt: React.PropTypes.string,
className: React.PropTypes.string,
color: React.PropTypes.string,
crossorigin: React.PropTypes.string,
longdesc: React.PropTypes.string,
name: React.PropTypes.string,
sizes: React.PropTypes.string,
src: React.PropTypes.string,
srcset: React.PropTypes.string,
style: React.PropTypes.object
};