import React, { useEffect, useState } from 'react'; import { Container, Box, Typography, Button, Grid, IconButton, Dialog, DialogTitle, DialogContent } from '@mui/material'; import CloseIcon from '@mui/icons-material/Close'; import AutoFixHighIcon from '@mui/icons-material/AutoFixHigh'; import ListIcon from '@mui/icons-material/List'; import BuildDetailsDialog from '../../components/BuildDetailsDialog'; import BuildCard from '../../components/BuildCard'; import { onGetApprovedBuilds, onGetAuthState, onCloneBuild } from '../+Layout.telefunc'; export default function HomePage() { const [data, setData] = useState(null); const [selectedBuildId, setSelectedBuildId] = useState(null); const [openRankedPopup, setOpenRankedPopup] = useState(false); useEffect(() => { async function loadSite() { try { const [ authData, highestRankedBuilds, communityBuilds ] = await Promise.all([ onGetAuthState(), onGetApprovedBuilds({ limit: 3 , sort: 'rating_desc' }), onGetApprovedBuilds({ limit: 12 }) ]); setData({ isLoggedIn: authData.isLoggedIn, userId: authData.userId, prebuilts: highestRankedBuilds, communityBuilds: communityBuilds }); } catch (error) { console.error("Error loading homepage data:", error); } } loadSite(); }, []); const handleCloneWrapper = async (buildId: number) => { if (!data?.isLoggedIn) return alert("Please login to clone builds!"); if (confirm(`Clone this build to your dashboard?`)) { await onCloneBuild({ buildId }); alert("Build cloned! Check your dashboard."); setSelectedBuildId(null); } }; if (!data) return Loading Forge...; return ( Forge Your Ultimate Machine Build, share, discuss, and discover custom PC configurations. Hall of Fame The highest rated configurations from across the community. {/**/} {/* */} {/* The Elite*/} {/* The top 3 community-voted builds.*/} {/* */} {/**/} {data.prebuilts.slice(0, 3).map((build: any) => ( setSelectedBuildId(build.id)} /> ))} {data.communityBuilds.map((build: any) => ( setSelectedBuildId(build.id)} /> ))} setSelectedBuildId(null)} onClone={handleCloneWrapper} /> setOpenRankedPopup(false)} maxWidth="lg" fullWidth> Hall of Fame (All Top Ranked) setOpenRankedPopup(false)}> {data.prebuilts.concat(data.communityBuilds).map((build: any) => ( { setOpenRankedPopup(false); setSelectedBuildId(build.id); // Open details from popup }} /> ))} ); } function SectionHeader({ title, subtitle }: { title: string, subtitle: string }) { return ( {title} {subtitle} ); }