// Generated with util/create-component.js import React, { useEffect, useState } from "react"; import { getDiscountPercentage, isValidSpecValue, numberWithCommas, } from "../../utils/functions"; import PickLabel from "../PickLabel"; import StarRating from "../StarRating"; import Timer from "../Timer"; import Heading from "../UI/Heading"; import Text from "../UI/Text"; import { StoreItemProps } from "./StoreItem.types"; const StoreItem = ({ data: { index, id, goodsNo = "", goodsName, brandName, imageUrl, goodsPrice, fixedPrice = 0, periodDiscountStart = "", periodDiscountEnd = "", pickType = "none", benefitUseType = "", goodsAccess = "all", reviewAverage = 0, reviewCount = 0, }, isLogin = false, showIndex = false, showBrand = true, showFixedPrice = true, showDiscountPercentage = true, showTimedealTimer = false, showRating = false, showPickBadge = true, pickBadgeType = "circle", pickBadgeOnImage = true, goodsNameStyle, priceStyle, imageSizeClassName, imageClassName, wrapperClassName = "", informationWrapperClassName = "", editingData, NextImage, isMobile = true, }: StoreItemProps) => { const { isEditingMode = false, isSelected = false, onCheckChange: handleCheckChange, } = editingData ?? {}; const [isChecked, setIsChecked] = useState(isSelected); useEffect(() => { setIsChecked(isSelected); }, [isSelected]); return (
{ if (isEditingMode && handleCheckChange) { handleCheckChange(id as number); } }} >
{NextImage ? ( ) : ( {goodsName} )} {pickBadgeOnImage && showPickBadge && pickBadgeType === "circle" && ( )} {pickBadgeOnImage && showPickBadge && pickBadgeType === "label" && ( )} {showIndex && index && (
{index}
)} {showTimedealTimer && ( )} {isEditingMode && ( <> {isSelected && (
)} )}
{!pickBadgeOnImage && showPickBadge && pickBadgeType === "label" && ( )}
{showBrand && isValidSpecValue(brandName) && ( {brandName} )} {isValidSpecValue(goodsName) && (

{goodsName}

)}
{showFixedPrice && fixedPrice > goodsPrice && ( {numberWithCommas(fixedPrice)}원 )} {!isLogin && goodsAccess === "member" ? ( 회원전용 시크릿 특가 ) : (
{showDiscountPercentage && fixedPrice > goodsPrice && ( {typeof goodsPrice === "number" && `${getDiscountPercentage({ fixedPrice, goodsPrice })}%`} )}

{typeof goodsPrice === "number" ? `${numberWithCommas(goodsPrice)}원` : goodsPrice}

)} {reviewAverage !== undefined && reviewCount !== undefined && reviewAverage > 0 && reviewCount > 0 && showRating && ( ({reviewCount}) } /> )}
); }; export default StoreItem;