Non puoi selezionare più di 25 argomenti Gli argomenti devono iniziare con una lettera o un numero, possono includere trattini ('-') e possono essere lunghi fino a 35 caratteri.

54 righe
1.4 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={classes.descriptionWrapper}>
  25. <h4 className={classes.title}>{title}</h4>
  26. <p className={classes.description}>{description}</p>
  27. </div>
  28. </div>
  29. );
  30. }
  31. InfoArea.defaultProps = {
  32. iconColor: "gray"
  33. };
  34. InfoArea.propTypes = {
  35. icon: PropTypes.object.isRequired,
  36. title: PropTypes.oneOfType([PropTypes.string, PropTypes.node]).isRequired,
  37. description: PropTypes.string.isRequired,
  38. iconColor: PropTypes.oneOf([
  39. "primary",
  40. "warning",
  41. "danger",
  42. "success",
  43. "info",
  44. "rose",
  45. "gray"
  46. ]),
  47. vertical: PropTypes.bool
  48. };