{project.name}
+{project.summary}
+لا توجد ملفات متاحة
+ )} +diff --git a/src/components/ModGrid.tsx b/src/components/ModGrid.tsx index 1c8bfc3..2d9bd30 100644 --- a/src/components/ModGrid.tsx +++ b/src/components/ModGrid.tsx @@ -122,6 +122,7 @@ const ModGrid = ({ categories={mod.categories || []} projectType={mod.project_type} viewMode={viewMode} + source={mod.source} /> ))} diff --git a/src/pages/CurseForgeDetails.tsx b/src/pages/CurseForgeDetails.tsx new file mode 100644 index 0000000..35b3a5d --- /dev/null +++ b/src/pages/CurseForgeDetails.tsx @@ -0,0 +1,159 @@ +import { useParams } from "react-router-dom"; +import { useQuery } from "@tanstack/react-query"; +import Navbar from "@/components/Navbar"; +import Footer from "@/components/Footer"; +import { Button } from "@/components/ui/button"; +import { Badge } from "@/components/ui/badge"; +import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; +import { Skeleton } from "@/components/ui/skeleton"; +import { Download, Heart, Calendar } from "lucide-react"; +import { getCurseForgeMod, getCurseForgeFiles } from "@/lib/api"; + +const formatNumber = (num: number) => { + if (num >= 1000000) return (num / 1000000).toFixed(1) + "M"; + if (num >= 1000) return (num / 1000).toFixed(1) + "K"; + return num.toString(); +}; + +const formatDate = (dateStr: string) => { + return new Date(dateStr).toLocaleDateString("ar-SA", { + year: "numeric", + month: "long", + day: "numeric", + }); +}; + +const CurseForgeDetails = () => { + const { id } = useParams<{ id: string }>(); + + const { data: modData, isLoading: loadingMod } = useQuery({ + queryKey: ["cf-mod", id], + queryFn: () => getCurseForgeMod(id!), + enabled: !!id, + }); + + const { data: filesData, isLoading: loadingFiles } = useQuery({ + queryKey: ["cf-files", id], + queryFn: () => getCurseForgeFiles(id!), + enabled: !!id, + }); + + const project = modData?.data; + const files = filesData?.data || []; + + return ( +
{project.summary}
+لا توجد ملفات متاحة
+ )} +