2025-03-28 08:25:30 +00:00
|
|
|
import React, { useEffect, useState } from "react";
|
2025-03-26 06:00:17 +00:00
|
|
|
import Card from "./Card";
|
2025-03-26 10:51:35 +00:00
|
|
|
import AssetPreview from "./AssetPreview";
|
|
|
|
import RenderOverlay from "../../components/templates/Overlay";
|
2025-03-28 08:25:30 +00:00
|
|
|
import { fetchAssets } from "../../services/marketplace/fetchAssets";
|
|
|
|
interface ModelData {
|
|
|
|
CreatedBy: string;
|
|
|
|
animated: string | null;
|
|
|
|
category: string;
|
|
|
|
description: string;
|
|
|
|
filename: string;
|
|
|
|
isArchieve: boolean;
|
|
|
|
modelfileID: string;
|
|
|
|
tags: string;
|
|
|
|
thumbnail: string;
|
|
|
|
uploadDate: number;
|
|
|
|
_id: string;
|
|
|
|
}
|
2025-03-28 10:55:53 +00:00
|
|
|
interface ModelsProps {
|
|
|
|
models: ModelData[];
|
|
|
|
}
|
2025-03-26 06:00:17 +00:00
|
|
|
|
2025-03-28 10:55:53 +00:00
|
|
|
const CardsContainer: React.FC<ModelsProps> = ({ models }) => {
|
2025-03-26 10:51:35 +00:00
|
|
|
const [selectedCard, setSelectedCard] = useState<{
|
|
|
|
assetName: string;
|
2025-03-28 08:41:11 +00:00
|
|
|
uploadedOn: string;
|
2025-03-26 10:51:35 +00:00
|
|
|
price: number;
|
|
|
|
rating: number;
|
|
|
|
views: number;
|
|
|
|
} | null>(null);
|
|
|
|
|
|
|
|
const handleCardSelect = (cardData: {
|
|
|
|
assetName: string;
|
2025-03-28 08:41:11 +00:00
|
|
|
uploadedOn: string;
|
2025-03-26 10:51:35 +00:00
|
|
|
price: number;
|
|
|
|
rating: number;
|
|
|
|
views: number;
|
|
|
|
}) => {
|
|
|
|
setSelectedCard(cardData);
|
|
|
|
};
|
2025-03-28 10:55:53 +00:00
|
|
|
|
2025-03-26 06:00:17 +00:00
|
|
|
return (
|
|
|
|
<div className="cards-container-container">
|
|
|
|
<div className="header">Products You May Like</div>
|
|
|
|
<div className="cards-wrapper-container">
|
2025-03-28 08:25:30 +00:00
|
|
|
{models.length > 0 &&
|
|
|
|
models.map((assetDetail) => (
|
|
|
|
<Card
|
|
|
|
key={assetDetail._id}
|
|
|
|
assetName={assetDetail?.filename}
|
2025-03-28 08:41:11 +00:00
|
|
|
uploadedOn={assetDetail.uploadDate.toString()}
|
2025-03-28 08:25:30 +00:00
|
|
|
price={36500}
|
|
|
|
rating={4.5}
|
2025-03-28 10:55:53 +00:00
|
|
|
views={800}
|
2025-03-28 08:25:30 +00:00
|
|
|
onSelectCard={handleCardSelect}
|
|
|
|
image={assetDetail.thumbnail}
|
2025-03-26 10:51:35 +00:00
|
|
|
/>
|
2025-03-28 08:25:30 +00:00
|
|
|
))}
|
|
|
|
{/* <RenderOverlay> */}
|
|
|
|
{selectedCard && (
|
|
|
|
<AssetPreview
|
|
|
|
selectedCard={selectedCard}
|
|
|
|
setSelectedCard={setSelectedCard}
|
|
|
|
/>
|
|
|
|
)}
|
2025-03-26 10:51:35 +00:00
|
|
|
{/* </RenderOverlay> */}
|
2025-03-26 06:00:17 +00:00
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
);
|
|
|
|
};
|
|
|
|
|
2025-03-26 10:51:35 +00:00
|
|
|
export default CardsContainer;
|