@krowdy-ui/views
Version:
React components that implement Google's Material Design.
64 lines (62 loc) • 1.61 kB
JavaScript
import React from 'react';
import PropTypes from 'prop-types';
import clsx from 'clsx';
import { makeStyles, Tooltip, Typography } from '@krowdy-ui/core';
const Circle = props => {
const {
firstName = '',
lastName = '',
subtitle,
max = 4,
size = 4,
selected = false
} = props;
const classes = useStyles({
max,
size
});
return /*#__PURE__*/React.createElement(Tooltip, {
arrow: true,
placement: "top",
title: /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Typography, {
className: classes.tooltipTitle
}, firstName, " ", lastName), /*#__PURE__*/React.createElement(Typography, null, subtitle))
}, /*#__PURE__*/React.createElement("div", {
className: clsx(classes.root, selected ? classes.select : [classes.hover, classes.unselect])
}));
};
process.env.NODE_ENV !== "production" ? Circle.propTypes = {
firstName: PropTypes.string,
lastName: PropTypes.string,
max: PropTypes.number,
selected: PropTypes.bool,
size: PropTypes.number,
subtitle: PropTypes.string
} : void 0;
const useStyles = makeStyles(theme => ({
hover: {
'&:hover': {
backgroundColor: theme.palette.primary[300]
}
},
root: {
borderRadius: '50%',
height: ({
size,
max
}) => 6 / (max - 1) * size * 4,
width: ({
size,
max
}) => 6 / (max - 1) * size * 4
},
select: {
backgroundColor: theme.palette.primary[500]
},
unselect: {
backgroundColor: ({
size
}) => theme.palette.secondary[size > 1 ? 100 : 0]
}
}));
export default Circle;