import React, {useEffect, useState} from 'react'; import {Card, CardContent, CardMedia, Typography, Box, Chip, CircularProgress} from '@mui/material'; import StarIcon from '@mui/icons-material/Star'; import {onGetBuildDetails} from "../pages/+Layout.telefunc"; export default function BuildCard({build, onClick}: { build: any, onClick?: () => void }) { const [caseImage, setCaseImage] = useState("https://placehold.co/600x400?text=PC+Build"); const [imageLoading, setImageLoading] = useState(true); const [details, setDetails] = useState(null); const formattedPrice = new Intl.NumberFormat('en-US', { style: 'currency', currency: 'EUR' }).format(build.total_price || 0); useEffect(() => { setImageLoading(true); onGetBuildDetails({buildId: build.id}) .then(fullDetails => { setDetails(fullDetails); const caseComponent = fullDetails.components?.find((c: any) => c.type === 'case'); setCaseImage( caseComponent?.imgUrl || "https://placehold.co/600x400?text=PC+Build" ); }) .catch((error) => { console.error("Failed to load build details:", error); setDetails(null); }) .finally(() => { setImageLoading(false); }); }, [build.id]); if (imageLoading) { return ( ); } return ( {build.name} {details?.description || "No description provided."} {Number(build.avgRating || 0).toFixed(1)} ); }