Card
Cards component is used as an entry point to more detailed information. The component can include various sets of elements to serve users' specific needs.
Last updated
Cards component is used as an entry point to more detailed information. The component can include various sets of elements to serve users' specific needs.
Last updated
npm i react-hartanimport { Card } from "react-hartan"
function App() {
return (
<>
<Card></Card>
</>
)
}
export default Appimport { Card } from "react-hartan"
function App() {
return (
<>
<Card></Card>
</>
)
}
export default App// App.css
.my-class{
background-color: red;
font-size: 2rem;
}
// App.jsx
import { Card } from "react-hartan"
function App() {
return (
<>
<Card imgState={false} userCardStyle={"my-class"}></Card>
</>
)
}
export default Appimport Button from "../Button/Button"
import cardStyle from "./Card.module.css"
import PropTypes from "prop-types"
const para = "Lorem ipsum, dolor sit amet consectetur adipisicing elit. Officia architecto minima reprehenderit? Iure eaque nostrum, blanditiis in quos, natus, ea nobis beatae distinctio dicta earum!"
export default function Card({ buttonText = "Card Button", onClickFunction, userButtonStyle, imgSrc = "https://dummyimage.com/720x400", imgState = true, imgAlt= "Hartan" , contentHeading = "Hartan", contentPara = para, id, imgLoad userCardStyle, userContentStyle }) {
return (
<section className={`${cardStyle.cardSection} ${userCardStyle}`}>
{
imgState &&
<figure>
<img src={imgSrc} alt={imgAlt} loading={imgLoad}/>
</figure>
}
<div className={`${cardStyle.content} ${userContentStyle}`}>
<div>
<h1>{contentHeading}</h1>
<div>{contentPara}</div>
</div>
<Button userButtonStyle={userButtonStyle} buttonText={buttonText} onClickFunction={onClickFunction}/>
</div>
</section>
)
}
Card.propTypes = {
contentHeading: PropTypes.node,
contentPara: PropTypes.node,
buttonText: PropTypes.node,
userButtonStyle: PropTypes.string,
onClickFunction: PropTypes.func,
imgSrc: PropTypes.string,
imgState: PropTypes.bool,
imgAlt: PropTypes.string,
id: PropTypes.string,
userCardStyle: PropTypes.string,
userContentStyle: PropTypes.string,
};/* Card CSS Module */
/* Styling for full card */
.cardSection {
display: flex;
flex-direction: column;
align-items: center;
overflow: hidden;
border: .15rem solid rgb(194, 191, 191);
border-radius: .5rem;
width: 29rem;
gap: 1.5rem;
box-shadow: rgba(99, 99, 99, 0.2) 0px 2px 8px 0px;
}
/* Styling for full card when hovered */
.cardSection:hover {
box-shadow: rgba(100, 100, 111, 0.2) 0px 7px 29px 0px;
}
/* Styling for the container containing image inside the card */
.cardSection figure {
display: flex;
justify-content: center;
align-items: center;
}
/* Styling for the image inside the card */
.cardSection figure img {
height: 20rem;
}
/* Styling for content container inside the card */
.content {
padding: .5rem 2rem 2rem 2rem;
display: flex;
flex-direction: column;
justify-content: center;
align-items: start;
gap: 2rem;
}
/* Styling for the heading inside the content container */
.content h1 {
font-size: 3rem;
}
/* Styling for the paragraph text inside the content container */
.content div {
font-size: 1.35rem;
}