Skip to content
Snippets Groups Projects
Commit e1abdbf7 authored by Yusuf Akgül's avatar Yusuf Akgül :hatching_chick:
Browse files

aaaa

parent 572e0fdb
No related branches found
No related tags found
1 merge request!56aaaa
Pipeline #40237 passed
import { GameUnityLogo } from "@/components/logo"
import { AspectRatio } from "@/components/ui/aspect-ratio"
import { siteConfig } from "@/lib/config/site"
import Image from "next/image"
import Link from 'next/link'
interface AuthLayoutProps { interface AuthLayoutProps {
children: React.ReactNode children: React.ReactNode
} }
export default function AuthLayout({ children }: AuthLayoutProps) { export default function AuthLayout({ children }: AuthLayoutProps) {
return <div className="min-h-screen">{children}</div> return (
<div className="grid min-h-screen grid-cols-1 overflow-hidden md:grid-cols-3 lg:grid-cols-2">
<AspectRatio ratio={16 / 9}>
<Image
src="/auth-image.png"
alt="Play a game together"
fill
className="absolute inset-0 object-cover"
priority
sizes="(max-width: 768px) 100vw, (max-width: 1200px) 50vw, 33vw"
/>
<div className="absolute inset-0 bg-gradient-to-t from-background to-background/60 md:to-background/40" />
<Link
href="/home"
className="absolute left-8 top-6 z-20 flex items-center text-lg font-bold tracking-tight"
>
<GameUnityLogo className="mr-2 h-6 w-6" aria-hidden="true" />
<span>{siteConfig.name}</span>
</Link>
</AspectRatio>
<main className="container absolute top-1/2 col-span-1 flex -translate-y-1/2 items-center md:static md:top-0 md:col-span-2 md:flex md:translate-y-0 lg:col-span-1">
{children}
</main>
</div>
)
} }
\ No newline at end of file
import { Icons } from '@/components/icons' import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from '@/components/ui/card'
import { GameUnityLogo } from '@/components/logo'
import { buttonVariants } from '@/components/ui/button'
import { UserAuthForm } from '@/components/user-auth-form' import { UserAuthForm } from '@/components/user-auth-form'
import { cn } from '@/lib/utils'
import Link from 'next/link' import Link from 'next/link'
export const metadata = { export const metadata = {
...@@ -12,39 +9,32 @@ export const metadata = { ...@@ -12,39 +9,32 @@ export const metadata = {
export default function LoginPage() { export default function LoginPage() {
return ( return (
<div className="container flex min-h-screen w-screen flex-col items-center justify-center"> <div className="container grid items-center gap-8 pb-8 pt-6 md:py-8 max-w-lg">
<Link <Card>
href="/" <CardHeader className="space-y-1">
className={cn( <CardTitle className="text-2xl">Sign in</CardTitle>
buttonVariants({ variant: "ghost" }), <CardDescription>
"absolute left-4 top-4 md:left-8 md:top-8" Choose your preferred sign in method
)} </CardDescription>
> </CardHeader>
<> <CardContent className="grid gap-4">
<Icons.chevronLeft /> <UserAuthForm type='login' />
Back </CardContent>
</> <CardFooter className="flex flex-wrap items-center justify-between gap-2">
</Link> <div className="text-sm text-muted-foreground">
<div className="mx-auto flex w-full flex-col justify-center space-y-6 sm:w-[350px]"> <span className="mr-1 hidden sm:inline-block">
<div className="flex flex-col items-center space-y-2 text-center"> Don&apos;t have an account?
<GameUnityLogo className="h-10 w-10" /> </span>
<h1 className="text-2xl font-semibold tracking-tight"> <Link
Welcome back aria-label="Sign up"
</h1> href="/signup"
<p className="text-sm text-muted-foreground"> className="text-primary underline-offset-4 transition-colors hover:underline"
Enter your email to sign in to your account >
</p> Sign up
</div> </Link>
<UserAuthForm type='login' /> </div>
<p className="px-8 text-center text-sm text-muted-foreground"> </CardFooter>
<Link </Card>
href="/signup"
className="hover:text-brand underline underline-offset-4"
>
Don&apos;t have an account? Sign Up
</Link>
</p>
</div>
</div> </div>
) )
} }
\ No newline at end of file
import { Icons } from '@/components/icons' import { Icons } from '@/components/icons'
import { GameUnityLogo } from '@/components/logo'
import { buttonVariants } from '@/components/ui/button' import { buttonVariants } from '@/components/ui/button'
import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from '@/components/ui/card'
import { UserAuthForm } from '@/components/user-auth-form' import { UserAuthForm } from '@/components/user-auth-form'
import { cn } from '@/lib/utils' import { cn } from '@/lib/utils'
import Link from 'next/link' import Link from 'next/link'
...@@ -12,61 +12,32 @@ export const metadata = { ...@@ -12,61 +12,32 @@ export const metadata = {
export default function SignupPage() { export default function SignupPage() {
return ( return (
<div className="container grid h-screen w-screen flex-col items-center justify-center lg:max-w-none lg:grid-cols-2 lg:px-0"> <div className="container grid items-center gap-8 pb-8 pt-6 md:py-8 max-w-lg">
<Link <Card>
href="/" <CardHeader className="space-y-1">
className={cn( <CardTitle className="text-2xl">Sign up</CardTitle>
buttonVariants({ variant: "ghost" }), <CardDescription>
"absolute left-4 top-4 md:left-8 md:top-8" Give yourself a username, enter your email and password below to create an account
)} </CardDescription>
> </CardHeader>
<> <CardContent className="grid gap-4">
<Icons.chevronLeft />
Back
</>
</Link>
<Link
href="/login"
className={cn(
buttonVariants({ variant: "ghost" }),
"absolute right-4 top-4 md:right-8 md:top-8"
)}
>
Login
</Link>
<div className="hidden h-full bg-muted lg:block" />
<div className="lg:p-8">
<div className="mx-auto flex w-full flex-col justify-center space-y-6 sm:w-[350px]">
<div className="flex flex-col items-center space-y-2 text-center">
<GameUnityLogo className="h-10 w-10" />
<h1 className="text-2xl font-semibold tracking-tight">
Create an account
</h1>
<p className="text-sm text-muted-foreground">
Give yourself a username, enter your email and password below to create an account
</p>
</div>
<UserAuthForm type='signup' /> <UserAuthForm type='signup' />
<p className="px-8 text-center text-sm text-muted-foreground"> </CardContent>
By clicking continue, you agree to our{" "} <CardFooter className="flex flex-wrap items-center justify-between gap-2">
<div className="text-sm text-muted-foreground">
<span className="mr-1 hidden sm:inline-block">
Already have an account?{" "}
</span>
<Link <Link
href="/terms" aria-label="Sign in"
className="hover:text-brand underline underline-offset-4" href="/login"
className="text-primary underline-offset-4 transition-colors hover:underline"
> >
Terms of Service Sign in
</Link>{" "}
and{" "}
<Link
href="/privacy"
className="hover:text-brand underline underline-offset-4"
>
Privacy Policy
</Link> </Link>
. </div>
</p> </CardFooter>
</div> </Card>
</div>
</div> </div>
) )
} }
\ No newline at end of file
import { GameUnityLogo } from "@/components/logo"
import { buttonVariants } from "@/components/ui/button" import { buttonVariants } from "@/components/ui/button"
import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from '@/components/ui/card'
import { cn } from "@/lib/utils" import { cn } from "@/lib/utils"
import Link from "next/link" import Link from "next/link"
export default function EmailVerification() { export default function EmailVerification() {
return ( return (
<div className="container flex max-w-[64rem] flex-col items-center gap-4 text-center"> <div className="container grid items-center gap-8 pb-8 pt-6 md:py-8 max-w-lg">
<div className="flex items-center"> <Card>
<Link href="/home" className={cn("rounded-full p-3 hover:bg-accent")}> <CardHeader className="space-y-1">
<GameUnityLogo className="h-10 w-10" /> <CardTitle className="text-2xl">Email Verified</CardTitle>
</Link> <CardDescription>
</div> <span>Your Email has been Verified and your Account was Activated.</span>
<p className="max-w-[42rem] leading-normal sm:text-xl sm:leading-8"> </CardDescription>
Your Email has been Verified and your Account was Activated <br /> You can now login </CardHeader>
</p> <CardContent className="grid gap-4 pt-6">
<div className="align-middle"> <span>You can now continue to login.</span>
<Link href="/login" className={cn(buttonVariants({ size: "lg" }), "mr-6")}> <Link href="/login" className={cn(buttonVariants())} type="submit">
Login Login
</Link> </Link>
</div> </CardContent>
</Card>
</div> </div>
) )
} }
\ No newline at end of file
...@@ -20,7 +20,7 @@ export default async function GameDetail({ params }: { params: { gameid: string ...@@ -20,7 +20,7 @@ export default async function GameDetail({ params }: { params: { gameid: string
if (!data[0]) return <TryAgain /> if (!data[0]) return <TryAgain />
// TODO put to backend // TODO put to backend
const date = formatDate(data[0].first_release_date * 1000) const date = data[0].first_release_date && formatDate(data[0].first_release_date * 1000)
const user = await getCurrentUser() const user = await getCurrentUser()
const fullUser = await db.user.findFirst({ const fullUser = await db.user.findFirst({
...@@ -50,7 +50,7 @@ export default async function GameDetail({ params }: { params: { gameid: string ...@@ -50,7 +50,7 @@ export default async function GameDetail({ params }: { params: { gameid: string
<AspectRatio ratio={889 / 500}> <AspectRatio ratio={889 / 500}>
<Image <Image
src={data[0].screenshots[0]?.url ?? ""} src={data[0].screenshots[0]?.url ?? ""}
alt={data[0].name} alt={data[0].name ?? ""}
fill fill
priority priority
className="object-center" /> className="object-center" />
...@@ -60,8 +60,8 @@ export default async function GameDetail({ params }: { params: { gameid: string ...@@ -60,8 +60,8 @@ export default async function GameDetail({ params }: { params: { gameid: string
<div className="aspect-[264/374]"> <div className="aspect-[264/374]">
<Card className="aspect-[264/374] relative block group -mt-36 w-52 flex-shrink-0"> <Card className="aspect-[264/374] relative block group -mt-36 w-52 flex-shrink-0">
<Image <Image
src={data[0].cover.url} src={data[0].cover.url ?? ""}
alt={data[0].name} alt={data[0].name ?? ""}
fill fill
priority priority
className="object-cover rounded-lg" /> className="object-cover rounded-lg" />
...@@ -77,29 +77,35 @@ export default async function GameDetail({ params }: { params: { gameid: string ...@@ -77,29 +77,35 @@ export default async function GameDetail({ params }: { params: { gameid: string
</div> </div>
<div className="ml-6 md:ml-12 space-y-3"> <div className="ml-6 md:ml-12 space-y-3">
<h1 className="text-2xl font-bold">{data[0].name}</h1> <h1 className="text-2xl font-bold">{data[0].name ?? ""}</h1>
<h1>released on{' '} {date && companies &&
<span className="font-semibold">{date}</span> by{' '} <h1>released on{' '}
<span className="font-semibold">{companies}</span> <span className="font-semibold">{date}</span> by{' '}
</h1> <span className="font-semibold">{companies}</span>
<h1 className="pt-3">{data[0].summary}</h1> </h1>
}
<h1 className="pt-3">{data[0].summary ?? ""}</h1>
<div className="pt-6"> <div className="pt-6">
<h1 className="mb-2">Genres</h1> <h1 className="mb-2">Genres</h1>
<div className="flex flex-wrap gap-2"> {data[0].genres && data[0].genres.length === 0 &&
{data[0].genres.map((genre, i) => { <div className="flex flex-wrap gap-2">
return <Button key={i} variant="outline" size="lg" className="px-6 py-3">{genre.name}</Button> {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> </div>
<div className="pt-6"> <div className="pt-6">
<h1 className="mb-2">Platforms</h1> <h1 className="mb-2">Platforms</h1>
<div className="flex flex-wrap gap-2"> {data[0].platforms && data[0].platforms.length === 0 &&
{data[0].platforms.map((platform, i) => { <div className="flex flex-wrap gap-2">
return <Button key={i} variant="outline" size="lg" className="px-6 py-3">{platform.name}</Button> {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> </div>
</div> </div>
......
...@@ -25,7 +25,7 @@ export default function SearchInput({ className, ...props }: DocsSearchProps) { ...@@ -25,7 +25,7 @@ export default function SearchInput({ className, ...props }: DocsSearchProps) {
function onSearch(event: React.FormEvent) { function onSearch(event: React.FormEvent) {
event.preventDefault() event.preventDefault()
if (pathname === "/games") { if (pathname.startsWith("/games")) {
if (!searchQuery) { if (!searchQuery) {
router.push(pathname) router.push(pathname)
return return
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment