BaseCard.tsx 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. import { FC } from 'react';
  2. import { makeStyles } from '@material-ui/core';
  3. import { SvgIcon } from '@material-ui/core';
  4. import { BaseCardProps } from './Types';
  5. import { ReactComponent } from '../../assets/imgs/pic.svg'
  6. const getStyles = makeStyles(() => ({
  7. root: {
  8. backgroundColor: 'white',
  9. borderRadius: '8px',
  10. boxShadow: '3px 3px 10px rgba(0, 0, 0, 0.05)',
  11. boxSizing: 'border-box',
  12. height: '150px',
  13. padding: '16px',
  14. },
  15. title: {
  16. color: '#82838E',
  17. fontSize: '14px',
  18. marginBottom: '5px',
  19. textTransform: 'capitalize',
  20. },
  21. content: {
  22. color: '#010E29',
  23. fontSize: '20px',
  24. fontWeight: 600,
  25. lineHeight: '36px',
  26. },
  27. desc: {
  28. color: '#82838E',
  29. fontSize: '14px',
  30. lineHeight: '36px',
  31. marginLeft: "8px",
  32. },
  33. emptyRoot: {
  34. alignItems: 'center',
  35. display: 'flex',
  36. flexDirection: 'column',
  37. justifyContent: 'flex-start',
  38. '& > svg': {
  39. marginTop: '10px',
  40. width: '100%',
  41. }
  42. },
  43. emptyTitle: {
  44. fontSize: '14px',
  45. marginTop: '14px',
  46. textTransform: 'capitalize',
  47. },
  48. emptyDesc: {
  49. fontSize: '10px',
  50. color: '#82838E',
  51. marginTop: '8px',
  52. },
  53. }));
  54. const BaseCard: FC<BaseCardProps> = (props) => {
  55. const classes = getStyles();
  56. const { children, title, content, desc } = props;
  57. return (
  58. <div className={classes.root}>
  59. <div className={classes.title}>{title}</div>
  60. {content && <span className={classes.content}>{content}</span>}
  61. {desc && <span className={classes.desc}>{desc}</span>}
  62. {!content && !desc && (
  63. <div className={classes.emptyRoot}>
  64. <SvgIcon viewBox="0 0 101 26" component={ReactComponent} {...props} />
  65. <span className={classes.emptyTitle}>no data available</span>
  66. <span className={classes.emptyDesc}>There is no data to show you right now.</span>
  67. </div>
  68. )}
  69. {children}
  70. </div>
  71. );
  72. };
  73. export default BaseCard;