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.

Preview

Usage

The card displays some information, and image is also available.

npm i react-hartan
import { Card } from "react-hartan"

function App() {

  return (
    <>
      <Card></Card>
    </>
  )
}

export default App

Customization With Props

  • imgSrc -> Accepts an image link, a string, which is shown inside the card.

  • imgState -> Accepts a boolean value, which is used to toggle the image state.

  • imgAlt -> Accepts an image alt.

  • contentHeading -> Accepts a string value, which is the card heading.

  • contentPara -> Accepts a string value, which is card paragraph text.

  • buttonText -> Accepts a string value, used as the button name.

  • onClickFunction -> Accepts a function, written by the user, which handles the logic when the button is clicked.

  • id -> The id prop is similar to the id attribute in HTML. It allows to provide overall component id.

  • imgLoad -> The imgLoad prop is mapped to the loading attribute in HTML img tag. It allows to provide overall the value for loading attribute, "lazy" | "eager".

  • userButtonStyle -> The custom styling prop which accepts class name(s) for the button styling inside the Card component.

  • userCardStyle -> The custom styling prop which accepts class name(s) for the full Card component.

  • userContentStyle -> The custom styling prop which accepts class name(s) for the content inside the card component.

import { Card } from "react-hartan"

function App() {

  return (
    <>
      <Card></Card>
    </>
  )
}

export default App

Component Code

This is the code for the Card component.

import 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,
};

Last updated