next-material-kit
Version:
NextJS Version of Material Kit React by Creative Tim (https://creative-tim.com)
57 lines (51 loc) • 1.53 kB
JavaScript
import React from "react";
// nodejs library to set properties for components
import PropTypes from "prop-types";
// nodejs library that concatenates classes
import classNames from "classnames";
// @material-ui/core components
import { makeStyles } from "@material-ui/core/styles";
import styles from "styles/jss/nextjs-material-kit/components/infoStyle.js";
const useStyles = makeStyles(styles);
export default function InfoArea(props) {
const classes = useStyles();
const { title, description, iconColor, vertical } = props;
const iconWrapper = classNames({
[classes.iconWrapper]: true,
[classes[iconColor]]: true,
[classes.iconWrapperVertical]: vertical,
});
const iconClasses = classNames({
[classes.icon]: true,
[classes.iconVertical]: vertical,
});
return (
<div className={classes.infoArea}>
<div className={iconWrapper}>
<props.icon className={iconClasses} />
</div>
<div className={classes.descriptionWrapper}>
<h4 className={classes.title}>{title}</h4>
<p className={classes.description}>{description}</p>
</div>
</div>
);
}
InfoArea.defaultProps = {
iconColor: "gray",
};
InfoArea.propTypes = {
icon: PropTypes.object.isRequired,
title: PropTypes.oneOfType([PropTypes.string, PropTypes.node]).isRequired,
description: PropTypes.string.isRequired,
iconColor: PropTypes.oneOf([
"primary",
"warning",
"danger",
"success",
"info",
"rose",
"gray",
]),
vertical: PropTypes.bool,
};