Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

57 рядки
1.5 KiB

  1. import React from "react";
  2. // nodejs library to set properties for components
  3. import PropTypes from "prop-types";
  4. // nodejs library that concatenates classes
  5. import classNames from "classnames";
  6. // @material-ui/core components
  7. import { makeStyles } from "@material-ui/core/styles";
  8. import styles from "assets/jss/nextjs-material-kit/components/infoStyle.js";
  9. const useStyles = makeStyles(styles);
  10. export default function InfoArea(props) {
  11. const classes = useStyles();
  12. const { title, description, iconColor, vertical } = props;
  13. const iconWrapper = classNames({
  14. [classes.iconWrapper]: true,
  15. [classes[iconColor]]: true,
  16. [classes.iconWrapperVertical]: vertical
  17. });
  18. const iconClasses = classNames({
  19. [classes.icon]: true,
  20. [classes.iconVertical]: vertical
  21. });
  22. return (
  23. <div className={classes.infoArea}>
  24. <div className={iconWrapper}>
  25. <props.icon className={iconClasses} />
  26. </div>
  27. <div className={classes.descriptionWrapper}>
  28. <h4 className={classes.title}>{title}</h4>
  29. <p className={classes.description}>{description}</p>
  30. </div>
  31. </div>
  32. );
  33. }
  34. InfoArea.defaultProps = {
  35. iconColor: "gray"
  36. };
  37. InfoArea.propTypes = {
  38. icon: PropTypes.object.isRequired,
  39. title: PropTypes.oneOfType([PropTypes.string, PropTypes.node]).isRequired,
  40. description: PropTypes.string.isRequired,
  41. iconColor: PropTypes.oneOf([
  42. "primary",
  43. "warning",
  44. "danger",
  45. "success",
  46. "info",
  47. "rose",
  48. "gray"
  49. ]),
  50. vertical: PropTypes.bool
  51. };