@mvp-rockets/namma-generator
Version:
A generator to generate mvp-rockets projects
89 lines (84 loc) • 2.03 kB
JavaScript
import Image from "next/image";
import PropTypes from "prop-types";
import Heading from "../atoms/Heading";
import Text from "../atoms/Text";
import Modal from "./Modal";
const AlertModal = ({ heading, subHeading, icon, show, footerButtons }) => {
if (!show) return null;
return (
<>
<Modal isHeader={false} footerButtons={footerButtons}>
<div className="flex py-4 px-2">
{icon && (
<div className="flex-shrink-0 mr-4">
<Image
src={icon.src}
width={icon.width}
height={icon.height}
alt={icon.alt}
/>
</div>
)}
<div>
{heading && (
<Heading type="h6" className={`font-bold mb-2`}>
{heading}
</Heading>
)}
{subHeading && (
<Text className={`text-sm text-gray-500`}>{subHeading}</Text>
)}
</div>
</div>
</Modal>
</>
);
};
export default AlertModal;
AlertModal.defaultProps = {
show: true,
heading: "Alert Heading",
subHeading: "Alert Subheading",
icon: PropTypes.shape({
src: "",
width: 20,
height: 20,
alt: "",
}),
footerButtons: [
{
label: "No",
style: "ghost",
size: "extraSmall",
className: "rounded",
onClick: () => {},
},
{
label: "Yes",
style: "primary",
size: "extraSmall",
className: "rounded",
onClick: () => {},
},
],
};
AlertModal.propTypes = {
show: PropTypes.bool,
heading: PropTypes.string,
subHeading: PropTypes.string,
icon: PropTypes.shape({
src: PropTypes.string,
width: PropTypes.number,
height: PropTypes.number,
alt: PropTypes.string,
}),
footerButtons: PropTypes.arrayOf(
PropTypes.shape({
label: PropTypes.string,
style: PropTypes.string,
size: PropTypes.string,
className: PropTypes.string,
onClick: PropTypes.func,
})
),
};