Skip to content
Snippets Groups Projects

Feat.games ui fixes

Merged Yusuf Akgül requested to merge feat.GamesUIFixes into main
19 files
+ 518
216
Compare changes
  • Side-by-side
  • Inline
Files
19
import { AspectRatio } from "@/components/ui/aspect-ratio";
import { Button } from "@/components/ui/button";
import { Card } from "@/components/ui/card";
import { getGame } from "@/lib/igdb";
import { formatDate } from "@/lib/utils";
import { IGame } from "@/types/igdb-types";
import Image from "next/image";
@@ -7,15 +10,9 @@ import Image from "next/image";
export default async function GameDetail({ params }: { params: { gameid: string } }) {
const data: IGame[] = await getGame(parseInt(params.gameid))
// onvert unix timestamp to date in this format: Feb 25, 2022
const date = new Date(data[0].first_release_date * 1000).toLocaleDateString('en-US', {
month: 'short',
day: 'numeric',
year: 'numeric'
})
const date = formatDate(data[0].first_release_date * 1000)
const companies = data[0].involved_companies.map((company) => {
// put a comma between each company
if (company !== data[0].involved_companies[0]) {
return `, ${company.company.name}`
}
@@ -25,15 +22,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]">
@@ -46,23 +43,56 @@ 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">
<h1>{data[0].name}</h1>
<h1>released on {date} by {companies}</h1>
<h1>{data[0].summary}</h1>
<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 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="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>
})}
</div>
</div>
</div>
</div>
<div className="px-6 md:px-12">
<div className='mt-6 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
Loading