From cbc1cb2b015f515955dd539c7747f15ad48875e5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Yusuf=20Akg=C3=BCl?= <s86116@bht-berlin.de>
Date: Wed, 7 Jun 2023 22:15:30 +0200
Subject: [PATCH] detail view

---
 .../(gaming)/games/[gameid]/page.tsx          | 47 ++++++++++++-------
 components/ui/aspect-ratio.tsx                |  7 +++
 package-lock.json                             | 24 ++++++++++
 package.json                                  |  1 +
 4 files changed, 63 insertions(+), 16 deletions(-)
 create mode 100644 components/ui/aspect-ratio.tsx

diff --git a/app/(content)/(gaming)/games/[gameid]/page.tsx b/app/(content)/(gaming)/games/[gameid]/page.tsx
index 514228f..5a6d45a 100644
--- a/app/(content)/(gaming)/games/[gameid]/page.tsx
+++ b/app/(content)/(gaming)/games/[gameid]/page.tsx
@@ -1,3 +1,4 @@
+import { AspectRatio } from "@/components/ui/aspect-ratio";
 import { Button } from "@/components/ui/button";
 import { Card } from "@/components/ui/card";
 import { getGame } from "@/lib/igdb";
@@ -24,15 +25,15 @@ export default async function GameDetail({ params }: { params: { gameid: string
     return (
         <div className="main-content h-full">
             <Card className="w-full h-full overflow-hidden">
-                <div className="h-64 overflow-hidden -top-1/2">
-                    <div className="aspect-[889/500] relative block group">
+                <div className="h-64 overflow-hidden">
+                    <AspectRatio ratio={889 / 500}>
                         <Image
                             src={data[0].screenshots[0].url}
                             alt={data[0].name}
                             fill
                             priority
                             className="object-center" />
-                    </div>
+                    </AspectRatio>
                 </div>
                 <div className="p-6 md:p-12 ss:flex">
                     <div className="aspect-[264/374]">
@@ -45,23 +46,24 @@ export default async function GameDetail({ params }: { params: { gameid: string
                                 className="object-cover rounded-lg" />
                         </Card>
                     </div>
-                    <div className="ml-6 md:ml-12 grid items-start gap-2">
+                    <div className="ml-6 md:ml-12 space-y-3">
                         <h1 className="text-2xl font-bold">{data[0].name}</h1>
                         <h1>released on{' '}
                             <span className="font-semibold">{date}</span> by{' '}
                             <span className="font-semibold">{companies}</span>
                         </h1>
-                        <h1>{data[0].summary}</h1>
-                        <div className="mt-6 ">
-                            <h1>Genres</h1>
+                        <h1 className="pt-3">{data[0].summary}</h1>
+
+                        <div className="pt-6">
+                            <h1 className="mb-2">Genres</h1>
                             <div className="flex flex-wrap gap-2">
                                 {data[0].genres.map((genre, i) => {
                                     return <Button key={i} variant="outline" size="lg" className="px-6 py-3">{genre.name}</Button>
                                 })}
                             </div>
                         </div>
-                        <div className="mt-6">
-                            <h1>Platforms</h1>
+                        <div className="pt-6">
+                            <h1 className="mb-2">Platforms</h1>
                             <div className="flex flex-wrap gap-2">
                                 {data[0].platforms.map((platform, i) => {
                                     return <Button key={i} variant="outline" size="lg" className="px-6 py-3">{platform.name}</Button>
@@ -71,16 +73,29 @@ export default async function GameDetail({ params }: { params: { gameid: string
                     </div>
                 </div>
                 <div className="px-6 md:px-12">
-                    <div className="border-b border-gray-400 dark:border-gray-200" />
+                    {/* <div className="border-b border-gray-400 dark:border-gray-200" /> */}
                     {/* comments */}
                 </div>
-            </Card>
-            <div>
-                <Card className="side-content">
-                    a
+            </Card >
+            <div className="side-content">
+                <Card className="p-6 grid items-start gap-2 bg-secondary">
+                    <h1>Screenshots</h1>
+                    <div className="grid grid-cols-1 gap-4">
+                        {data[0].screenshots.slice(1, 4).map((screenshot, i) => {
+                            return (
+                                <Card key={i} className="aspect-[264/374] relative block">
+                                    <Image
+                                        src={screenshot.url}
+                                        alt={data[0].name}
+                                        fill
+                                        priority
+                                        className="object-cover rounded-lg" />
+                                </Card>
+                            )
+                        })}
+                    </div>
                 </Card>
             </div>
-
-        </div>
+        </div >
     )
 }
\ No newline at end of file
diff --git a/components/ui/aspect-ratio.tsx b/components/ui/aspect-ratio.tsx
new file mode 100644
index 0000000..d6a5226
--- /dev/null
+++ b/components/ui/aspect-ratio.tsx
@@ -0,0 +1,7 @@
+"use client"
+
+import * as AspectRatioPrimitive from "@radix-ui/react-aspect-ratio"
+
+const AspectRatio = AspectRatioPrimitive.Root
+
+export { AspectRatio }
diff --git a/package-lock.json b/package-lock.json
index 001892b..4c363f4 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -11,6 +11,7 @@
         "@auth/prisma-adapter": "^1.0.0",
         "@hookform/resolvers": "^3.1.0",
         "@prisma/client": "^4.15.0",
+        "@radix-ui/react-aspect-ratio": "^1.0.3",
         "@radix-ui/react-avatar": "^1.0.3",
         "@radix-ui/react-dropdown-menu": "^2.0.5",
         "@radix-ui/react-label": "^2.0.2",
@@ -594,6 +595,29 @@
         }
       }
     },
+    "node_modules/@radix-ui/react-aspect-ratio": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/@radix-ui/react-aspect-ratio/-/react-aspect-ratio-1.0.3.tgz",
+      "integrity": "sha512-fXR5kbMan9oQqMuacfzlGG/SQMcmMlZ4wrvpckv8SgUulD0MMpspxJrxg/Gp/ISV3JfV1AeSWTYK9GvxA4ySwA==",
+      "dependencies": {
+        "@babel/runtime": "^7.13.10",
+        "@radix-ui/react-primitive": "1.0.3"
+      },
+      "peerDependencies": {
+        "@types/react": "*",
+        "@types/react-dom": "*",
+        "react": "^16.8 || ^17.0 || ^18.0",
+        "react-dom": "^16.8 || ^17.0 || ^18.0"
+      },
+      "peerDependenciesMeta": {
+        "@types/react": {
+          "optional": true
+        },
+        "@types/react-dom": {
+          "optional": true
+        }
+      }
+    },
     "node_modules/@radix-ui/react-avatar": {
       "version": "1.0.3",
       "resolved": "https://registry.npmjs.org/@radix-ui/react-avatar/-/react-avatar-1.0.3.tgz",
diff --git a/package.json b/package.json
index ef91fe6..ef93b23 100644
--- a/package.json
+++ b/package.json
@@ -14,6 +14,7 @@
     "@auth/prisma-adapter": "^1.0.0",
     "@hookform/resolvers": "^3.1.0",
     "@prisma/client": "^4.15.0",
+    "@radix-ui/react-aspect-ratio": "^1.0.3",
     "@radix-ui/react-avatar": "^1.0.3",
     "@radix-ui/react-dropdown-menu": "^2.0.5",
     "@radix-ui/react-label": "^2.0.2",
-- 
GitLab