Dwinzo_dev/app/src/modules/market/Card.tsx

105 lines
2.5 KiB
TypeScript
Raw Normal View History

2025-03-28 08:25:30 +00:00
import React, { useEffect } from "react";
2025-03-26 06:00:17 +00:00
import {
CommentsIcon,
DownloadIcon,
EyeIconBig,
FilledStarsIconSmall,
2025-03-26 06:00:17 +00:00
StarsIconSmall,
VerifiedIcon,
} from "../../components/icons/marketPlaceIcons";
2025-03-26 07:02:09 +00:00
import assetImage from "../../assets/image/image.png";
import { getAssetDownload } from "../../services/marketplace/getAssetDownload";
2025-03-26 10:51:35 +00:00
interface CardProps {
assetName: string;
2025-03-29 07:27:16 +00:00
uploadedOn: number;
2025-03-26 10:51:35 +00:00
price: number;
rating: number;
views: number;
2025-03-28 08:25:30 +00:00
image: string;
2025-03-29 07:27:16 +00:00
description: string;
2025-03-26 10:51:35 +00:00
onSelectCard: (cardData: {
assetName: string;
2025-03-29 07:27:16 +00:00
uploadedOn: number;
2025-03-26 10:51:35 +00:00
price: number;
rating: number;
views: number;
2025-03-29 07:27:16 +00:00
description: string;
2025-03-26 10:51:35 +00:00
}) => void;
}
const Card: React.FC<CardProps> = ({
assetName,
uploadedOn,
price,
rating,
views,
2025-03-28 08:25:30 +00:00
image,
2025-03-29 07:27:16 +00:00
description,
2025-03-26 10:51:35 +00:00
onSelectCard,
}) => {
const handleCardSelect = () => {
2025-03-29 07:27:16 +00:00
onSelectCard({ assetName, uploadedOn, price, rating, views, description });
2025-03-26 10:51:35 +00:00
};
2025-03-26 06:00:17 +00:00
return (
<div className="card-container">
{/* <a href={getAssetDownload(assetName)} download className="icon">
2025-03-26 06:00:17 +00:00
<DownloadIcon />
</a> */}
2025-03-26 06:00:17 +00:00
<div className="image-container">
2025-03-28 08:25:30 +00:00
<img src={image} alt={assetName} />
2025-03-26 06:00:17 +00:00
</div>
<div className="assets-container">
<div className="name-container">
2025-03-28 08:25:30 +00:00
<div className="assets-name">{assetName.split("_").join(" ")}</div>
<div className="assets-date">
Uploaded on -{" "}
{new Date(uploadedOn).toLocaleDateString("en-GB", {
day: "2-digit",
month: "short",
year: "2-digit",
})}
</div>
2025-03-26 06:00:17 +00:00
</div>
<div className="details">
<div className="content">
<EyeIconBig />
2025-03-26 10:51:35 +00:00
{views}
2025-03-26 06:00:17 +00:00
</div>
<div className="content">
<CommentsIcon />
32
</div>
</div>
</div>
2025-03-26 07:02:09 +00:00
2025-03-26 06:00:17 +00:00
<div className="vendor-icon">
HEXR FACTORY <VerifiedIcon />
</div>
<div className="stars-container">
2025-03-26 07:02:09 +00:00
<div className="stars-wrapper">
2025-03-26 10:51:35 +00:00
{[...Array(5)].map((_, index) => (
<>
{index < 3 ? (
<FilledStarsIconSmall key={index} />
) : (
<StarsIconSmall key={index} />
)}
</>
2025-03-26 10:51:35 +00:00
))}
2025-03-26 07:02:09 +00:00
</div>
2025-03-26 06:00:17 +00:00
<div className="units">
2025-03-26 10:51:35 +00:00
{price}/<span>unit</span>
2025-03-26 06:00:17 +00:00
</div>
</div>
2025-03-26 10:51:35 +00:00
<div className="buy-now-button" onClick={handleCardSelect}>
Buy now
</div>
2025-03-26 06:00:17 +00:00
</div>
);
};
export default Card;